第8章 Postfix SMTP サーバーのデプロイと設定
システム管理者は、Postfix などのメールトランスポートエージェント (MTA) を使用して、電子メールインフラストラクチャーを設定し、SMTP プロトコルを使用してホスト間で電子メールメッセージを転送できます。Postfix は、メールのルーティングと配信を行うサーバー側アプリケーションです。Postfix を使用して、ローカルメールサーバーの設定、null クライアントメールリレーの作成、複数のドメインの宛先としての Postfix サーバーの使用、検索用ファイルに代わる LDAP ディレクトリーの選択を行うことができます。
postfix
パッケージは、/etc/postfix/
ディレクトリーに複数の設定ファイルを提供します。
電子メールインフラストラクチャーを設定するには、次の設定ファイルを使用します。
-
main.cf
— Postfix のグローバル設定が含まれています。 -
master.cf
— メール配信を実現するために、さまざまなプロセスとの Postfix の対話を指定します。 -
access
— Postfix に接続できるホストなどのアクセスルールを指定します。 -
transport
— 電子メールアドレスをリレーホストにマッピングします。 -
aliases
— ユーザー ID エイリアスを説明するメールプロトコルで必要な設定可能な一覧が含まれます。このファイルは、/etc/
ディレクトリーにあることに留意してください。
Postfix の主な機能:
- 一般的なメール関連の脅威から保護するためのセキュリティー機能
- 仮想ドメインおよびエイリアスのサポートを含むカスタマイズオプション
8.1. Postfix SMTP サーバーのインストールおよび設定
電子メールメッセージを受信、保存、配信するように Postfix SMTP サーバーを設定できます。システムのインストール時にメールサーバーパッケージが選択されていない場合、Postfix はデフォルトで利用できません。Postfix をインストールするには、以下の手順を実行します。
前提条件
- root アクセスがある。
- システムの登録
手順
Sendmail ユーティリティーを削除します。
# yum remove sendmail
Postfix をインストールします。
# yum install postfix
Postfix を設定するには、
/etc/postfix/main.cf
ファイルを編集し、以下の変更を加えます。デフォルトでは、Postfix は
loopback
インターフェイスでのみメールを受信します。特定のインターフェイスをリッスンするように Postfix を設定するには、inet_interfaces
パラメーターをこれらのインターフェイスの IP アドレスに更新します。inet_interfaces = 127.0.0.1/32, [::1]/128, 192.0.2.1, [2001:db8:1::1]
すべてのインターフェイスをリッスンするように Postfix を設定するには、以下を設定します。
inet_interfaces = all
gethostname()
関数によって返される完全修飾ドメイン名 (FQDN) とは異なるホスト名を Postfix が使用するようにしたい場合は、myhostname
パラメーターを追加します。myhostname = smtp.example.com
たとえば、Postfix はこのホスト名を、処理するメールのヘッダーに追加します。
ドメイン名が
myhostname
パラメーターのものと異なる場合は、mydomain
パラメーターを追加します。mydomain = example.com
myorigin
パラメーターを追加し、mydomain
の値に設定します。myorigin = $mydomain
この設定では、Postfix はホスト名ではなく、ローカルで投稿されたメールの発信元としてドメイン名を使用します。
mynetworks
パラメーターを追加し、メールの送信が許可される信頼できるネットワークの IP 範囲を定義します。mynetworks = 127.0.0.1/32, [::1]/128, 192.0.2.1/24, [2001:db8:1::1]/64
インターネットなどの信頼できないネットワークのクライアントがこのサーバー経由でメールを送信できるようにするには、後の手順でリレー制限を設定する必要があります。
main.cf
ファイルの Postfix 設定が正しいか確認します。# postfix check
postfix
サービスが起動時に開始できるように有効化し、開始します。# systemctl enable --now postfix
smtp トラフィックがファイアウォールを通過することを許可し、ファイアウォールルールをリロードします。
# firewall-cmd --permanent --add-service smtp # firewall-cmd --reload
検証
postfix
サービスが実行していることを確認します。# systemctl status postfix
オプション: 出力が停止し、待機中、またはサービスが実行されていない場合は、
postfix
サービスを再起動します。# systemctl restart postfix
オプション:
/etc/postfix/
ディレクトリーの設定ファイル内のオプションを変更した後、postfix
サービスをリロードして、これらの変更を適用します。# systemctl reload postfix
システム上のローカルユーザー間の電子メール通信を確認します。
# echo "This is a test message" | mail -s <subject> <user@mydomain.com>
メールサーバーが外部 IP 範囲からのメールを外部ドメインに中継していないことを確認するには、以下の手順に従います。
-
mynetworks
で定義したサブネット内にないクライアントにログインします。 - メールサーバーを使用するようにクライアントを設定します。
-
メールサーバーの mydomain で指定したドメイン以外のメールアドレスにメールを送信してみます。たとえば、
non-existing-user@redhat.com
にメールを送信してみます。 /var/log/maillog
ファイルを確認します。554 Relay access denied - the server is not going to relay. 250 OK or similar - the server is going to relay.
-
トラブルシューティング
-
エラーが発生した場合は、
/var/log/maillog
を確認してください。
関連情報
-
/etc/postfix/main.cf
設定ファイル -
/usr/share/doc/postfix/README_FILES
ディレクトリー - firewalld の使用および設定