概要
AnonAddyを利用して送られてきたメールを指定のメールアドレスに転送するということをしていたのですが、メールが1時間から1日程度遅延したり、そもそも送られてこなかったりということがありました。
私が行った、この問題の解決方法を紹介します。
何が起きたのか
私は、AnonAddyというメール転送を行うことができるOSSを利用しています。今回、このAnonAddyを利用して大量のメールを送信、転送していると、メールが最大1日程度遅延するということがありました。
最初は、メールを転送するということで多少の遅延があるだろうと思い、そのままにしていましたが、やはり1日も遅延するのはおかしいと思いました。
そこで、原因を探ろうと思いメールサーバーのログを確認すると、次のようなログが残っていました。
May 31 16:06:58 mx postfix/smtp[1524]: 542BC12826A: [email protected], relay=in1-smtp.messagingengine.com[103.168.172.216]:25, delay=50689, delays=50683/0/6.2/0.17, dsn=4.7.1, status=deferred (host in1-smtp.messagingengine.com[103.168.172.216] said: 451 4.7.1 : Data command rejected: Host ***.***.***.***/example.com has exceeded the per-day email limit of 40, try again later – helo= – RLR003 – unmatched FCrDNS or dynamic DNS style host, learn more at https://www.fastmail.help/hc/en-us/articles/1500000278362-Best-practices-for-SMTP-servers (in reply to DATA command))
ログ中のメールアドレスなど、一部はexample.comなどで置き換えています。
ログを確認してみると、メールの送信先のサーバーでメールの受け取りを拒否していることが分かります。うれしいことに、なぜメールを拒否するのかの理由まで書かれています。そこを確認してみると、送信先のメールサーバーでは、同じメールサーバーからの1日あたりのメール受信数を40までということが分かります。つまり、メールを送りすぎているために、メールで遅延が発生しているということのようです。
しかし、1日に40件のメールが送られないというのは困ります。そこで、この制限をもっと緩和する方法について調べることにしました。
対処方法
私がメールを送る先として利用しているのは、Fastmailというメールサービスが提供しているメールサーバーです。ログには、Fastmailのサポートページが書かれているため、そこの内容に従って、対応を進めます。
具体的には、FCrDNSの対応をします。FCrDNSはサーバーのIPアドレスとホスト名、ドメインの対応を示すものです。私の環境では、メールサーバーのホスト名から、IPアドレスを参照できるようにDNSサーバーの設定はしていますが、IPアドレスからホスト名を参照できる逆引きの設定はしていませんでした。
私はメールサーバーとしてVPSを利用しているので、VPSが利用しているIPアドレスから、メールサーバーのホスト名を引けるようにしました。
これで、対応は終わりです。DNSの設定については、変更が反映されるまで最大72時間かかるなど、設定の効果が表れるまで時間がかかります。実際に私の環境では12時間ほど経つまでメールの遅延が発生していました。
さいごに
メールサーバーを構築する際には、IPアドレスからメールサーバーのホストを逆引きできるようにしておいたほうが良いという知識はあったのですが、設定が面倒だったのでしていませんでした。今回のようにメール送信で遅延やエラーが発生しないようにするためには、ちゃんと設定しておいたほうがよさそうです。
同じように、メールの遅延やエラーで困っている方は、今回のFCrDNSの設定を見直すことをお勧めします。