LoginSignup
29
40

More than 5 years have passed since last update.

postfixでメール送信先ドメインを制限する

Last updated at Posted at 2016-01-27

テスト環境などで意図せずメール誤爆しないようにメール送信先ドメインを制限したいことがあります。

ぐぐったところ設定方法はいろいろあるようですが、rejectしちゃうとアプリケーション側にエラーが返ってしまって困るケースがあったので、受け付けて捨てる方法で設定します。

例として @example.com にはメールを許可するけど、その他のドメイン宛は捨てる設定は以下のとおりです。postfixは2.6系です。

/etc/postfix/main.cf に以下の設定を追加します。

/etc/postfix/main.cf
transport_maps = hash:/etc/postfix/transport

/etc/postfix/transport に以下の設定を追加します。
ローカル配送も不要な場合はlocalの行もなくてよいかもです。

example.com               smtp:
localhost                 local:
localhost.localdomain     local:
*                         discard: "discard received email"

transportファイルをコンパイルします。

[root]$ postmap /etc/postfix/transport
[root]$ echo $?
0

postfixの設定をリロードします。

[root]$ /etc/init.d/postfix reload
postfix を再読み込み中:                                    [  OK  ]

設定は以上です。

試しにsendmailコマンドで疎通確認してみます。

[root]$ echo "mail test1" | sendmail -f no-reply@myhost.example.com -t hoge@example.com
[root]$ echo "mail test1" | sendmail -f no-reply@myhost.example.com -t hoge@gmail.com

hoge@example.com にメールが届いて、 hoge@gmail.com にメールが届かなければ成功。

ログで確認すると /var/log/maillog にこんな感じの出力が出てる。

Jan 27 14:47:13 myhost postfix/smtp[26538]: 9A42F42B1D: to=<hoge@example.com>, relay=smtp.example.com[XXX.XXX.XXX.XXX]:25, delay=1.1, delays=0.02/0/0.41/0.68, dsn=2.0.0, status=sent (250 2.0.0 OK 1453873633 lm9si7024058pab.142 - gsmtp)

Jan 27 14:47:29 myhost postfix/discard[26551]: 9D42342B1D: to=<hoge@gmail.com>, relay=none, delay=0.02, delays=0.01/0/0/0, dsn=2.0.0, status=sent ("discard received email")

これでメール誤爆しなくて安心してテストできますね。

参考
postfixのsmtpd_recipient_restrictionsの宛先制限はsendmailコマンド使用時には有効にならない

29
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
40