Linuxホスト(CentOS)にはいくつかの共有ドメインがあり、そのうちの1つはexample.comです(このメッセージ全体で使用される偽のホスト名とユーザー名);を使用しております /etc/mail/virtusertable
example.comへのすべてのメールを「exmpl」ユーザーに配信し、~exmpl/.procmailrc
必要に応じてメールを転送します。このメソッドにより、exmplは独自の転送を維持できますが、/ etc/mail/aliasesでは維持できません。実際、virtusertableにはexample.comなどの既知の受信者がいて、不明な受信者へのメールを拒否します。私たちはずっと前にその教訓を学びました。
ただし、この方法で転送されたメールは失敗していました。
Apr 30 21:33:30 bogus sendmail[25645]: r412XUQ8025645: [email protected], ctladdr=exmpl (504/504), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30965, relay=[127.0.0.1] [127.0.0.1], dsn=5.6.0, stat=Data format error
「person」はbogus.orgの有効なユーザーであり、実際にはbogus.orgがexample.comと同じマシンのメインドメインであるため、これは非常に奇妙に思えました。
どうすればこれを修正できますか?
他の多くの人は、/etc/hosts
の「localhost」エントリを修正したり、適切なDNSエントリを設定したりすることで、これを解決しています。私たちはそれをしました、そしてそれは私たちの問題を解決しませんでした。
ついにこれに気づきました:ctladdr=exmpl
正しく配信されたメールの場合、これらのログエントリは、完全な電子メールアドレスとしてそれを示しました。 ctladdr=<[email protected]>
欠けていたのは、virtusertableのこの重要なエントリでした。
[email protected] exmpl
私にはこれがvirtusertableの「逆方向」の使用のように見えるので、これを完全に理解しているとは主張しません(これは私の質問としてカウントされます!)。ただし、上記のように転送されたメールは現在機能しています。
May 6 21:06:40 bogus sendmail[1482]: r4726ejj001480: to=<[email protected]>, ctladdr=<[email protected]> (504/504), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=62862, dsn=2.0.0, stat=Sent
通常、ポート25でMXサーバーにtelnetで接続し、手動のSMTP会話を開始すると、問題がより明確になります。
上記のctladdr=exmpl
の例では、これをMAIL FROM
として入力すると、MXサーバーはドメインが存在しないことを通知するため、メールを受け入れることができません。 somedomain.com
がDNSで定義され、Webトラフィックに使用されるという問題が発生しましたが、Apacheはメールを[email protected]
として送信しようとします。手動でSMTP会話を行うと、MXサーバーが送信できないことがわかります。 findwww.somedomain.com
。
解決策は、このサブドメインにA
またはCNAME
レコードを追加することです。