2008-03-11
新たな問題
以前、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のリレーサーバー(ここで差出人が登録されていない、ということでリレー拒否されてしまう)
エラーメッセージは以下のような感じです。
This is the mail system at host ebi.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: open database /etc/postxfix/canonical.db: No such file or directory
なんだかだんだんpostfixがわかった気になってきました!(^^