新たな問題

以前、YahooBBのOP25に引っかかって、postfixでSMTP_AUTHを構成し、YahooBBのサブミッションポートにメールをリレーする設定を行いました。

とりあえずこれで問題なく使っていたのですが、gmailで受信しているメールにいくつか「Undelivered Mail Returned to Sender 」が混じっていることに気がつきました。どうやらこれは以前使っていたebi@ebi.dyndns.bizというメールに関して問題が発生していたようです。

  • 以前のメールフロー

  • 外部→ebi@ebi.dyndns.biz→(転送)→ebibibi@gmail.com

  • エラーになってしまうメールフロー

  • 外部→ebi@ebi.dyndns.biz→(転送)→YahooBBのリレーサーバー(ここで差出人が登録されていない、ということでリレー拒否されてしまう)

エラーメッセージは以下のような感じです。

Thisisthemailsystemathostebi.dyndns.biz.

エラーメッセージが結果的に届いているところが面白いところではあります。サブミッションポートの制限はNDRには適用されない模様です。これはNDRにたいしてさらにNDRを生成して、NDRがループしてしまうことを防ぐための仕様だと思われます。(と、いうことはこれを使って色々と悪いことができる気もしますが…)

対応策

どう対処しようか結構迷いました。そもそももう使っていないアドレスなので無視したり、移動した旨を伝える程度でも良かったのですが、自分が把握していない場所に以前のメールアドレスが残ってしまっていて、それがいつまでたっても解消できなくなってしまったり、万が一重要なメールが来ていたときに気がつけないのは困ります。

単純にリレーを設定してもOP25の制限ではじかれてしまいます。

悩んだ結果、結局以下のフローにしました。

  • 外部→ebi@ebi.dyndns.biz→あて先をYahooBBの自分のアドレスに書き換え→YahooBBのメールサーバー(25番)にリレー→YahooBBのメールボックスに着信→GmailのPOP3設定にてGmailに取り込み

なんだかまどろっこしいですが、一応これでうまく動いたようです。難点を挙げるとすればGmailでのPOP3のダウンロードは結構間隔が長いので、メールをすぐに確認できないところでしょうか。でも私の使い方の場合には問題いので良しとします。

postfixの設定方法

具体的なpostfixの設定は以下のようにしました。

main.cfに追記

canonical_maps=hash:/etc/postfix/canonical2
transport_maps=hash:/etc/postfix/transport

canonicalファイルを記述〜DB化(アドレスの書き換え)

ebi@yahoo.co.jp
postmap/etc/postfix/canonical2

なぜcanonical2というファイル名になっているかというと、なぜかcanonicalという名前にしておくと以下のエラーがでてpostfixがファイルを認識できなかったからです。原因はまったく不明。不思議です。バグっぽいかもしれません。

fatal:opendatabase/etc/postxfix/canonical.db:Nosuchfileordirectory

なんだかだんだんpostfixがわかった気になってきました!(^^