メールが送信できない

僕のサーバーは、mydnsを利用してダイナミックDNSによって公開しているが、プロバイダがOP25B対策をしているため、外部にメールを送信するためにはSubmission Portを利用しなければならない。
mydnsではIPアドレスを定期的に更新している送信元からSubmission Portによるメールリレーサービスがあるので、これを利用させてもらっている。
今日メールを送ろうとしたところ、なぜかメールが送れなかったため、/var/log/maillogを確認して原因を調査したところ
Dec 24 04:28:53 (ホスト名) postfix/qmgr[2240]: 17F8AFC03: to=<(送信元)>, relay=none, delay=16802, delays=16802/0.21/0/0, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to auth.gate-on.net[210.197.72.170]: Connection timed out)
というログが出ていることが確認できた。auth.gate-on.netはpingが通ることから、どうやらメールリレーサーバーから接続を拒否されているようだ。
もっと前のログを確認したところ
Dec 23 04:02:39 (ホスト名) postfix/smtp[29536]: 03866F775: to=<(送信元)>, relay=auth.gate-on.net[210.197.72.170]:587, delay=25031, delays=24999/28/0.09/5, dsn=4.0.0, status=deferred (host auth.gate-on.net[210.197.72.170] said: 450 Error: too much mail from 122.20.52.249 (in reply to MAIL FROM command))
というエラーログが確認できた。どうやらメールを送りすぎているらしい。
たしかにmaillogを確認したところログサイズがかなり大きい状態であったため、もしかして不正中継しているのかと思い、RBL.JPによる不正中継テストを実施したところ特に不正中継はできない状態を確認した。
となるとなぜそんな大量のメールを送る必要があるのか・・・・詳しく調べてみたところ管理ドメインではあるが受信を予期していないサブドメインあてのメール(xxx@yyy.development-network.net)が大量に送られており、それが原因でエラーメッセージを大量に送信元に返しているためということがわかった。
確かにダイナミックDNSを利用していると、 development-network.net のMXレコードも yyy.development-network.net のMXレコードも存在するように見えてしまう。実際には、yyy.development-network.netドメインはメール受信できるような設定になっていないので、こんなことが起こってしまうのだ。
これを回避するためには、自サーバーにDNSを立てて、/etc/resolv.confに nameserver 127.0.0.1 を設定する。その上で、development-network.netドメインのみMXレコードを設定し、メールサーバーあてに来たメールの宛先がMXレコードに存在しなければメールを拒否するようにすればよい。また、合わせて送信元のメールアドレスが正しくない(MXレコードが引けない)場合も合わせて拒否するようにした。
そこで、postfixに以下の設定をした。
smtpd_sender_restrictions=
smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

smtpd_sender_restrictions=reject_unknown_sender_domain
smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,reject_unknown_recipient_domain
ここで設定パラメータの意味をおさらいしてみたい。

reject_unknown_sender_domain MAIL FROM アドレスに DNS A または MX レコードがなく、Postfix がその送信者アドレスの最終配送先ではない場合に、要求を拒否します。
reject_unknown_recipient_domain RCPT TO アドレスに DNS A または MX レコードがなく、Postfix がその受信者アドレスの最終配送先ではない場合に、要求を拒否します。

この設定をすることによって
Dec 31 22:16:05 (サーバー名) postfix/smtpd[24930]: NOQUEUE: reject: RCPT from adsl-ull-139-91.47-151.net24.it[151.47.91.139]: 450 4.1.2 <(送信先)>: Recipient address rejected: Domain not found; from=<(送信元)> to=<(送信先)> proto=ESMTP helo=
というログが記録されるようになり、正しく拒否することによって不用意にリレーさせないようになっていることを確認できた。
この設定の後、Bフレッツを再接続してWAN側のIPアドレスを変更し、mydnsに新しいIPアドレスを通知することで正しく通信できるようになった。
最後になりましたが、mydnsさんへはこの件で大変ご迷惑をおかけしました。この場を借りてお詫びいたします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です