第20章 RHEL システムロールを使用した Postfix MTA の設定
postfix
RHEL システムロールを使用すると、Postfix メール転送エージェント (MTA) の設定を一貫して自動化された方法で管理できます。このような設定をデプロイすることは、たとえば以下のものが必要な場合に役立ちます。
- 安定したメールサーバー: システム管理者が高速でスケーラブルなメール送受信用サーバーを設定できるようになります。
- セキュアな通信: TLS 暗号化、認証、ドメインのブックリスト登録などの機能をサポートし、安全なメール送信を実現します。
- メールの管理とルーティングの改善: メールトラフィックを制御できるようにフィルターとルールを実装します。
postfix_conf
ディクショナリーには、サポートされている Postfix 設定パラメーターのキーと値のペアが保持されます。Postfix がサポート対象として認識しないキーは無視されます。postfix
RHEL システムロールは、構文を検証したり制限したりせずに、提供されたキーと値のペアを postfix_conf
ディクショナリーに直接渡します。したがって、このロールは、Postfix を熟知していて、その設定方法を知っているユーザーに特に役立ちます。
20.1. 送信メールのみを送信する null クライアントとして Postfix を設定する
null クライアントは特別な設定です。この設定では、Postfix サーバーは送信メールの送信のみを行い、受信メールは受信しないように設定されます。このような設定は、通知、アラート、またはログを送信する必要はあるが、メールの受信や管理をする必要はない場合に広く使用されています。Ansible と postfix
RHEL システムロールを使用すると、このプロセスを自動化し、Postfix サーバーを送信メールの送信のみを行う null クライアントとしてリモートで設定できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Manage Postfix hosts: managed-node-01.example.com tasks: - name: Install postfix ansible.builtin.package: name: postfix state: present - name: Configure null client for only sending outgoing emails ansible.builtin.include_role: name: redhat.rhel_system_roles.postfix vars: postfix_conf: myhostname: server.example.com myorigin: "$mydomain" relayhost: smtp.example.com inet_interfaces: loopback-only mydestination: "" relay_domains: "{{ lookup('ansible.builtin.pipe', 'postconf -h default_database_type') }}:/etc/postfix/relay_domains" postfix_files: - name: relay_domains postmap: true content: | example.com OK example.net OK
--- - name: Manage Postfix hosts: managed-node-01.example.com tasks: - name: Install postfix ansible.builtin.package: name: postfix state: present - name: Configure null client for only sending outgoing emails ansible.builtin.include_role: name: redhat.rhel_system_roles.postfix vars: postfix_conf: myhostname: server.example.com myorigin: "$mydomain" relayhost: smtp.example.com inet_interfaces: loopback-only mydestination: "" relay_domains: "{{ lookup('ansible.builtin.pipe', 'postconf -h default_database_type') }}:/etc/postfix/relay_domains" postfix_files: - name: relay_domains postmap: true content: | example.com OK example.net OK
サンプル Playbook で指定されている設定は次のとおりです。
myhostname: <server.example.com>
- このメールシステムのインターネットホスト名。デフォルトは完全修飾ドメイン名 (FQDN) です。
myorigin: $mydomain
-
ローカルに投稿されたメールの送信元と配信先として表示されるドメイン名。デフォルトは
$myhostname
です。 relayhost: <smtp.example.com>
- 非ローカルメールの次のホップの宛先。受信者アドレスの非ローカルドメインをオーバーライドします。デフォルトでは空のフィールドになります。
inet_interfaces: loopback-only
- Postfix サーバーが受信メール接続をリッスンするネットワークインターフェイスを定義します。Postfix サーバーがネットワークからメールを受け入れるかどうか、またどのように受け入れるかを制御します。
mydestination
- どのドメインとホスト名をローカルとみなすかを定義します。
relay_domains: "hash:/etc/postfix/relay_domains"
-
Postfix がリレーサーバー (SMTP リレー) として動作しているときに Postfix がメールを転送できるドメインを指定します。この場合、ドメインは
postfix_files
変数によって生成されます。RHEL 10 では、relay_domains: "lmdb:/etc/postfix/relay_domains"
を使用する必要があります。 postfix_files
-
/etc/postfix/
ディレクトリーに配置されるファイルのリストを定義します。必要に応じて、これらのファイルを Postfix 検索テーブルに変換できます。この場合、postfix_files
は SMTP リレーのドメイン名を生成します。
Playbook で使用されるロール変数と Postfix 設定パラメーターの詳細は、
/usr/share/ansible/roles/rhel-system-roles.postfix/README.md
ファイルと、コントロールノード上のpostconf(5)
man ページを参照してください。Playbook の構文を検証します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.postfix/README.md
ファイル -
/usr/share/doc/rhel-system-roles/postfix/
ディレクトリー -
システム上の
postconf(5)
man ページ