7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

メールを飲み込んで消すメールサーバの構築

Last updated at Posted at 2017-12-18

概要

正常に受信するが、 受け取ったデータは /dev/null に流し込むPostfixの構築。

そんなことしてなにが嬉しいの

DNSにMX/Aレコードが存在しないドメインからのメールを拒否するPostfixの設定があります。
スパマーでもない限り存在しないドメインからメールを送ることは無いだろうと考えていましたが、 一方的にno-replyメールを送りたい場合があります。
この場合、 メールを拒否されないためには、 メールアドレスのドメイン部分のDNSに何かしら「最終的にIPアドレスとなるもの(MXレコードやAレコード)」を設定しておく必要があります。
しかし、 自前でMTAを持たず、 社内共有のリレーサーバを経由するような場合、 最終宛先にメールアドレス間違い等で拒否された場合に、 リレーサーバが「お届けできませんでした」を送る先に送信できず、 リレーサーバでエラーが出てしまいます。 (DNSを設定しない場合もエラーは出ますが、 ネットワーク接続ができなかったテンポラリエラー扱いで、 リトライ処理が走ってしまう事が多いです)
それくらい許容するという手も全然ありですが、 最小限の労力で「メールを受け付けるけどすぐさま捨てる」というメールサーバを作ることで解決しようと思います。

postfix_devnull_001.png

  1. MAIL FROM: no-reply@hoge.fuga.example.com / RCPT TO: user@atesaki-domain.example.jp
  2. MAIL FROM: no-reply@hoge.fuga.example.com / RCPT TO: user@atesaki-domain.example.jp (そのままリレー)
  3. ユーザがいない等のエラー応答
  4. no-reply@hoge.fuga.example.com に 「メールをお届けできませんでした」のメール(Bounce)を返したいが、 失敗する

設定

環境

  • CentOS Linux release 7.4.1708 (Core)
  • Postfix 2.10.1-6

外部からのメールを受け付け許可

/etc/postfix/main.cf
-inet_interfaces = localhost
+inet_interfaces = all

正確には外部のIPからの接続を許可です。 firewalld/iptables/各種クラウドサービスのファイアウォール(tcp:25)も許可してあげましょう。

扱うドメインを追加

/etc/postfix/main.cf
-mydestination = $myhostname, localhost.$mydomain, localhost
+mydestination = $myhostname, localhost.$mydomain, localhost, hoge.example.jp, hoge.fuga.example.com

ここに記載したドメイン宛のメールのみ受け付けます。その他の場合は「Relay access denied」と拒否します。
no-reply@xxxxxx のxxxxxの部分で使用予定のものを書いてください。

no-reply宛を/dev/nullへとルーティング

/etc/aliases
+no-reply:   /dev/null

編集後、 newaliases コマンドを実行してください。

設定反映

postfix check
postfix reload
(まだpostfixをを動かしていない場合は、 systemctl start postfix して下さい)

検証

no-reply@使いたいドメイン に対してメールを送ってみましょう。

Dec 18 06:16:17 yourhostname postfix/local[20106]: D959510D2F82: to=<no-reply@your.domain>, relay=local, delay=11, delays=11/0.02/0/0, dsn=2.0.0, status=sent (delivered to file: /dev/null)

という風に /dev/null に送られた事がわかります。

その他

  • この設定だけでは問題ないはずですが、 念のためオープンリレーサーバになっていないかチェックしておきましょう。
  • この設定だけでは、 実存するアカウントへのメール (ex. root@xxx.xxx) にはメールが届きます。 ここに迷惑メールが溜まってしまう事もあるので、 それを避けたい場合は /etc/aliases を全て /dev/nullに向ける等してみましょう。 (cronが失敗した時のメールも消えてしまいますが、 その辺の設定は書きません)
  • 完全に省きましたが、 使用するドメインのDNSの設定(MX/A/SPFのTXTレコード)ももちろん必要です。 この辺はたくさんインターネットに資料があります。
7
7
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
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?