Postfix はまり道 with Dr.WEB
2.2 vs 2.3 話しの続きみたいになってますが、2.2 と 2.3 でデフォルト設定が違っていて Dr.WEB でハマった例がまた一つ。
2.3 の標準状態です。
% telnet xxx.xxx.xxx 25 Trying 192.168.0.1... Connected to xxx.xxx.xxx.xxx. Escape character is '^]'. 220 xxx.xxx.xxx.xxx ESMTP Postfix EHLO yyyy.yyy.yyy.yyy 250-xxx.xxx.xxx.xxx 250-PIPELINING 250-SIZE 102400000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN MAIL FROM:250 2.1.0 Ok RCPT TO: NOTIFY=FAILURE 250 2.1.5 Ok QUIT 221 2.0.0 Bye Connection closed by foreign host.
で 2.2 の標準状態です。
% telnet xxx.xxx.xxx 25 Trying 192.168.0.1... Connected to xxx.xxx.xxx.xxx. Escape character is '^]'. 220 xxx.xxx.xxx.xxx ESMTP Postfix EHLO yyyy.yyy.yyy.yyy 250-xxx.xxx.xxx.xxx 250-PIPELINING 250-SIZE 102400000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME MAIL FROM:250 2.1.0 Ok RCPT TO: NOTIFY=FAILURE 501 5.7.1 DSN support is disabled QUIT 221 2.0.0 Bye Connection closed by foreign host.
これで何が問題になったかといえば、Dr.WEB メールデーモンの検証をしていたら
Apr 12 22:06:08 test drweb-receiver: [3065256848] receiver.MRS WARN Unsupported option: [NOTIFY=FAILURE] Apr 12 22:06:08 test postfix/smtpd[9554]: warning: proxy 127.0.0.1:8025 rejected "RCPT TO:NOTIFY=FAILURE": "555 5.5.4 Unsupported option: NOTIFY=FAILURE"
というエラーがログに記録されてメッセージが拒否されてしまったのです。これに関してベンダーのエンジニアと話しをしたら
の 2つの URL から「相手が悪い」という回答でクローズされかかった*1のですが、Postfix の公式サイトで以下のコンテンツを発見!
Postfix version 2.3 introduces support for Delivery Status Notifications as described in RFC 3464. This gives senders control over successful and failed delivery notifications.
Postfix DSN Support
なんと 2.3 から DSN が標準でサポートされてしまった(!?)んですねぇ。で、
ため、postfix が受け取ったメールを Dr.WEB メールデーモンが処理できなかった*2訳です。ということで今日の教訓は
- 昔はサポートしてなかったけど、今の Postfix は DSN をサポートしてる!
- ベンダーの回答にくじけず、証拠を突きつけよう!
ちなみに postfix で DSN を無効にするには main.cf に
smtpd_discard_ehlo_keywords = dsn
と書いて再ロードすれば OK です。