メールサーバを利用していると、送信先を制限、制御したい場合があると思います。header_checksを利用すれば、柔軟に制御できますが、今回は、以前構築したRHEL(Linux)上に構築したPostfixに、簡単に制御する手順についてまとめました。
PostfixとDovecotで中継メールサーバ、受信サーバの検証環境を準備してみる
PostfixとDovecotを用い、中継メールサーバ、受信サーバの検証環境を構築する手順をまとめました。
アクセス制御のファイル作成
transportのファイルを作成する。
test.local宛ては内部転送、yahoo.co.jpはMX配送、それ以外のメールは削除するという設定をしてみる。
// conf確認 # postconf | grep transport_maps transport_maps = hash:/etc/postfix/transport ここで、設定が空欄の場合、https://kita-san.blog/computer-related/postifx-relay-pop/ を参考に設定修正 // アクセス制御の設定ファイル作成 # vi transport test.local smtp:192.168.11.12 # 内部転送 yahoo.co.jp smtp: # MX配送 * discard: "discard received email" # 上記以外のメールは削除 // dbファイルの作成、更新 # postmap /etc/postfix/transport // 作成されたファイルの確認 # ll /etc/postfix/transport* -rw-r--r--. 1 root root 13543 1月 22 12:41 /etc/postfix/transport -rw-r--r--. 1 root root 12288 1月 22 12:49 /etc/postfix/transport.db //作成した日時になっているはず // 設定の反映 # systemctl reload postfix.service
動作確認
yahoo.co.jpへMX配送
yahoo.co.jp宛てはMX配送となるため、ログからMX配送していることを確認。ネットワークの構成上、現在は外部と接続できないため、time outしている。
// yahoo.co.jpへ適当に送ってみる # echo "本文_test mail" | mailx -s "タイトル_title" -S smtp=smtp://192.168.11.11 -r relay@test.local aaaabc@yahoo.co.jp // 中継メールサーバへ送信した際のログは以下の通り、yahooへMX配送を試みている # tail -f /var/log/maillog Jan 22 12:55:29 relay postfix/smtpd[5062]: connect from relay[192.168.11.11] Jan 22 12:55:29 relay postfix/smtpd[5062]: 61E878BA70A: client=relay[192.168.11.11] Jan 22 12:55:29 relay postfix/cleanup[5066]: 61E878BA70A: message-id=<61eb8031.oMz23S72YSZiWKBz%relay@test.local> Jan 22 12:55:29 relay postfix/qmgr[4622]: 61E878BA70A: from=<relay@test.local>, size=514, nrcpt=1 (queue active) Jan 22 12:55:29 relay postfix/smtpd[5062]: disconnect from relay[192.168.11.11] helo=1 mail=1 rcpt=1 data=1 quit=1 commands=5 Jan 22 12:55:59 relay postfix/smtp[5067]: connect to mx3.mail.yahoo.co.jp[202.93.78.242]:25: Connection timed out Jan 22 12:56:29 relay postfix/smtp[5067]: connect to mx5.mail.yahoo.co.jp[202.93.78.239]:25: Connection timed out Jan 22 12:56:59 relay postfix/smtp[5067]: connect to mx5.mail.yahoo.co.jp[124.83.142.248]:25: Connection timed out Jan 22 12:57:29 relay postfix/smtp[5067]: connect to mx3.mail.yahoo.co.jp[202.93.78.241]:25: Connection timed out
test.localへ内部転送
test.localは、192.168.11.11へ転送する設定に泣ているため、配送成功がログより確認できる。
// test.local宛てにメールを送ると内 # echo "本文_test mail" | mailx -s "タイトル_title" -S smtp=smtp://192.168.11.11 -r relay@test.local user01@test.local部転送する // 中継メールサーバへ送信した際のログは以下の通り、test.localへ静的配送に成功していることを確認 # tail -f /var/log/maillog Jan 22 13:00:05 relay postfix/smtpd[5279]: connect from relay[192.168.11.11] Jan 22 13:00:05 relay postfix/smtpd[5279]: 976F88AF7CB: client=relay[192.168.11.11] Jan 22 13:00:05 relay postfix/cleanup[5282]: 976F88AF7CB: message-id=<61eb8145.92XwE8GUdFy/0lmb%relay@test.local> Jan 22 13:00:05 relay postfix/qmgr[4622]: 976F88AF7CB: from=<relay@test.local>, size=512, nrcpt=1 (queue active) Jan 22 13:00:05 relay postfix/smtpd[5279]: disconnect from relay[192.168.11.11] helo=1 mail=1 rcpt=1 data=1 quit=1 commands=5 Jan 22 13:00:05 relay postfix/smtp[5067]: 976F88AF7CB: to=<user01@test.local>, relay=192.168.11.12[192.168.11.12]:25, delay=0.2, delays=0.04/0/0.12/0.03, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 15EF38AF7D6) Jan 22 13:00:05 relay postfix/qmgr[4622]: 976F88AF7CB: removed
yahoo、test.local以外は削除
適当なドメインaaaa.comといった適当な場所へ送信すると、「discard received email」と削除されていることを確認できる。
// test.local宛てにメールを送ると内 # echo "本文_test mail" | mailx -s "タイトル_title" -S smtp=smtp://192.168.11.11 -r relay@test.local user01@aaaa.aaaa.com // 中継メールサーバへ送信した際のログは以下の通り、test.localへ静的配送に成功していることを確認 # tail -f /var/log/maillog an 22 13:04:02 relay postfix/smtpd[5351]: connect from relay[192.168.11.11] Jan 22 13:04:02 relay postfix/smtpd[5351]: 651028BA70A: client=relay[192.168.11.11] Jan 22 13:04:02 relay postfix/cleanup[5354]: 651028BA70A: message-id=<61eb8232.CkbU4EexUXtSBOcn%relay@test.local> Jan 22 13:04:02 relay postfix/qmgr[4622]: 651028BA70A: from=<relay@test.local>, size=518, nrcpt=1 (queue active) Jan 22 13:04:02 relay postfix/smtpd[5351]: disconnect from relay[192.168.11.11] helo=1 mail=1 rcpt=1 data=1 quit=1 commands=5 Jan 22 13:04:02 relay postfix/discard[5355]: 651028BA70A: to=<user01@aaaa.aaaa.com>, relay=none, delay=0.1, delays=0.05/0.05/0/0, dsn=2.0.0, status=sent ("discard received email") Jan 22 13:04:02 relay postfix/qmgr[4622]: 651028BA70A: removed