今まで自宅サーバーのメールは、このホスト自体がanmochi.dip.jpであり、受け取るメールもanmochi@anmochi.dip.jpがこのホストに流れてきてこのホストのMTAで受け、同じくMDAでローカルに配送されていた。これを止せばいいのにanmochi.dip.jpをバーチャルホストにして、ローカルのメールと区別つけようとしたらあちこちに設定変更の余波が襲ってきた。

1.ホスト名の変更による自宅サーバー→プロバイダーのメールリレー失敗。
今までずっとプロバイダーのメールとYahoo! Japanのメールを1時間に1回fetchmailで取ってきてprocmailでspamassassinを通した後スパム判定されなかったメールを携帯電話に転送していたのだが、anmochi.dip.jpのMXをバーチャルホスト化してから転送できなくなった。これはhostnameをanmochi.dip.jpからbudoumochi.mochi.1という存在しえないホスト名に変えたのが原因(別にバーチャルドメイン化に際してホスト名を変える必要はないのだが)で、fetchmailで受け取る→procmailで転送する→sendmailスクリプトが受け取りキューに追加する→postfixがpickupしてrelay_host=[プロバイダー]:25に対してSMTPする(OP25Bのためプロバイダーのメールサーバーに送信メールを丸投げ)→この時のエンベロープFROMがanmochi@budoumochi.mochi.1で、プロバイダーさんなんじゃこりゃー状態(ちなみにうちのプロバイダーさんはエンベロープFROMが正しければメール本文のFromヘッダーはどんなものでも通るようだ)。
これはprocmailrcのマニュアルでも読めばすぐどうとでもなったはずだが、うちのVine4.2なマニュアルは英語で読む気がしなかった。のでグーグル先生の出番。お、Gmailに対するメールの転送という情報が引っかかった。さすがgoogle。自分のサイトで説明しているとは。procmailrcの先頭にSENDMAILFLAGS=”-oi -f <エンベロープFROMとして使いたいメールアドレス>”を付ける事でうまくいった。

ところでOP25Bとサブミッションポートについて調べていくうちに、どうもサブミッションポートを誤解しているんじゃないかなという話が多く見受けられたので少し解説しておくと、自宅がプロバイ
ダーAでインターネットしており、自宅サーバー(つまりインターネットから見てプロバイダーAの内側)からの送信メールを全てプロバイダーAのMTAに委託する場合、サブミッションポート587は必要ない。これは言ってみれば自宅サーバー以外のパソコン(自宅サーバーと同じでもいいけど)から普通にメールソフトでインターネットに対してメールを送信する事と何も変わらない(プロバイダーAのMTAにとって)。
必要になるのは、モバイルなどプロバイダーA以外経由でインターネットに接続しており、プロバイダーAのメールアドレスからプロバイダーAのMTAを経由してメールを送信したい時で、この時はインターネット側からプロバイダーAのMTAに対して587番に接続してSMTP-AUTHなどで送信者の証明を行う。これがサブミッションによるメールの送信だ。
なぜかみんな自宅サーバーからOP25B対策と称してサブミッションポートに投げている例が多いが、本当に必要があってそうしているのか巷溢れる自宅サーバー設定日記など書かれている事をうのみにする事なく冷静に分析する事を強くお薦めするものである。