テックブログ

Postfixで特定の送信元IPアドレスからのメールを許可する

はじめに

こんにちは、TTです。

今回はPostfixの設定で、やや特殊な事例になりますが
使える設定を見つけたので、既にどこかで紹介されているかもしれませんが、共有させていただきます。

発生した問題

特定のメールアドレスからのメールが受信できる時と、出来ない時がある

ここでは、特定のメールアドレスを 「sample@netassist.ne.jp」
受信側メールアドレスを「test@TTmail.com」とします。

受信できなかった際のログ例

※IPアドレスなど、一部マスクしております

発生した理由

送信元「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

https://www.postfix-jp.info/trans-2.2/jhtml/access.5.html

この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください