Postfixで特定の送信元IPアドレスからのメールを許可する
はじめに
こんにちは、TTです。
今回はPostfixの設定で、やや特殊な事例になりますが
使える設定を見つけたので、既にどこかで紹介されているかもしれませんが、共有させていただきます。
発生した問題
特定のメールアドレスからのメールが受信できる時と、出来ない時がある
ここでは、特定のメールアドレスを 「sample@netassist.ne.jp」
受信側メールアドレスを「test@TTmail.com」とします。
受信できなかった際のログ例
※IPアドレスなど、一部マスクしております
Sep 27 12:00:23 TT_mail postfix/smtpd[3735295]: NOQUEUE: reject: RCPT from ※※※※.smtp-out.us-west-2.amazonses.com[11.222.33.444]:
554 5.7.1 Service unavailable; Client host [11.222.33.444] blocked using bl.spamcop.net; Blocked – see https://www.spamcop.net/bl.shtml?11.222.33.444; from=<※※※※@us-west-2.amazonses.com> to=test@TTmail.com proto=ESMTP helo=<※※※※.smtp-out.us-west-2.amazonses.com>
発生した理由
送信元「sample@netassist.ne.jp」からメールを送信する際、Amazon SESを経由して
メールを送信していたが、Amazon SESの一部IPアドレスが
ブラックリストに登録されており、受信メールサーバでブラックリストを参照していた。
ブラックリストに登録された送信元IPでメールが配送されたときに
受信メールサーバ TTmail.com が受信を拒否していた。
Amazon SES経由のメールは受信する必要があり、送信元のIPアドレスを固定する
といった対応は出来ない状況でした。
やりたかったこと
メールのブラックリストは参照しつつ、Amazon SESのIPからのメールは受信を行う
この設定を、受信側メールサーバのPostfix main.cfのうち
smtpd_client_restrictions の項目で下記のように設定することで実現できました。
①/etc/postfix/accept_client というホワイトリストを新規に作成します。
Amazon SESのIP帯で許可するので、cidr表記になります。
※下記IPはあくまで例になります。
/etc/postfix/accept_client
--------------------------------------
11.222.33.444/18 OK
--------------------------------------
作成したホワイトリストをpostmapコマンドでハッシュ化したうえで
下記のようにmain.cfに追記しました。
/etc/postfix/main.cf
--------------------------------------
smtpd_client_restrictions =
check_client_access cidr:/etc/postfix/accept_client,
reject_rbl_client bl.spamcop.net
--------------------------------------
ここで重要なのは2点です。
①smtpd_client_restrictions は上から順番に設定を読み込むため
ブラックリストより先にホワイトリストを記載します。
②ホワイトリストの中身が、cidr表記の場合は「check_client_access cidr:」に
cidr表記ではない場合は、「check_client_access hash:」と記載する必要があります。
main.cfの設定が完了したら、「postfix check」コマンドで
構文チェックを行い、Postfixを再起動して反映させます。
この設定を行うことで、ブラックリストを参照し
迷惑メールを遮断しつつ、Amazon SES経由のメールは受信できるようになりました!
Amazon SES の使用するIP帯が変更になったり、ブラックリストに登録される
IPが変わる可能性もあるので、経過の確認は必要ですが
都度、ホワイトリストを編集すれば対応できると思います。
Postfixには様々な設定項目があり、これが全てという訳ではないですが
一例として、何かの役に立てれば幸いです。
今回は以上となります。
それでは、またどこかでお会いしましょう。
【参考】
https://www.postfix-jp.info/trans-2.1/jhtml/SMTPD_ACCESS_README.html