Postfixでリレー送信を設定する方法

別サーバーのPostfixでリレー送信を設定する方法

メール送信用のメールサーバーがあり、新規に追加したサーバーはそのメール送信サーバー経由でメール送信するように構築したい。その際のPostfixの設定をまとめました。

  • 送信サーバー:mail.example.com (192.168.0.10)
  • 新規追加サーバー:192.168.0.15

メール送信用のメールサーバーは、同一ネットワークからメールのリレーを許可する事がおこなっている前提とします

Postfixのインストール

Postfixが未インストールの場合、以下のコマンドでインストールします

$ sudo yum install postfix   # CentOS/RHELの場合
$ sudo apt install postfix   # Ubuntu/Debianの場合

Postfixの設定ファイル編集

Postfixのメイン設定ファイル(/etc/postfix/main.cf)を編集して、メール送信する際には、メール送信サーバー(192.168.0.10)にリレー送信するようにします

$ sudo vi /etc/postfix/main.cf
relayhost = [192.168.0.10]

認証情報の設定

認証情報を /etc/postfix/sasl_passwd に記述します。

$ sudo vi /etc/postfix/sasl_passwd
[192.168.0.10]    username:password

登録した内容をpostmap コマンドで反映して、適切なパーミッションに変更します

# postmapコマンドで設定を反映
$ sudo postmap /etc/postfix/sasl_passwd

# ファイルのパーミッションを変更
$ sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

Postfixに設定を追加します

$ sudo vi /etc/postfix/main.cf
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Postfixの再起動

設定反映のため、Postfixを再起動、及び自動起動をOnにします

# postfix再起動
$ sudo systemctl restart postfix

# postfixの自動起動をON
$ sudo systemctl enable postfix

mailコマンドで動作確認

mailコマンドでメール送信ができているか確認します

# mailコマンドでテストメールを送信
$ echo "Test mail" | mail -s "Test mail" hoge@example.com

メールが届かない場合の送信サーバー側の確認項目

mailコマンドでメール送信してもメールが送信できない場合は、送信サーバー(mail.example.com)がリレーを許可する設定になっているか確認して下さい。

# 追加した新規サーバー(192.168.0.15)のローカルネットワークが含むように設定する
$ sudo vi /etc/postfix/main.cf
mynetworks = 192.168.0.0/24, 127.0.0.1

# postfix再起動
$ sudo systemctl start postfix