バーチャルドメイン環境の Postfix にて、メールアドレスのドメインごとに HELO (EHLO) の値を変更する

バーチャルドメイン環境のような、同一サーバ上で複数のシステムが稼働し、
それぞれのシステムごとに違ったメールアドレスからメールが送信される場合のおはなし。

Postfix は、デフォルトでは HELO (EHLO) にはホスト名をそのまま名乗りますし、 main.cf の “smtp_helo_name” に記述があればその値が適応されます。送信されるメールのドメインがひとつの場合はそのドメインと同じ HELO を設定すれば良いのですが、複数のメールドメインが同一サーバから送信される場合は、ひと工夫が必要になります。

なぜわざわざこんな事をしなくちゃならないのかというと、たとえば3つのドメインからメールが送信される場合、HELO をどれかひとつに設定しても、残りの2つはメールドメインと HELO が一致しないため、 CBL 等のブロックリストに入ってしまったり、迷惑メール検知フィルタにひっかかってしまうのです。

じゃあ初期設定でいいやと localhost.localdomain のままで運用なんてしちゃうと、一発でブロックリスト入りです・・・!

そんな場合にコレ。こんな環境、わりとありそうなのに日本語のサイトにはこの技術情報ない気がするので、日本のどこかにいる自分と同じような境遇のサーバ管理者が一人でも救われると良いなぁと思って、ブログ記事にしまっす!

今回のゴール

postfix から送信される inu@aaa.com、neko@bbb.com、usagi@ccc.com をそれぞれ、送信メールアドレスごとに HELO パケットを対応させる。

helo

まずは Postfix のバージョン確認

にて、Postfix のバージョンを確認します。mail_version = 2.7 以上であれば、問題ありません。
2.7未満の方は、今回使いたい sender_dependent_default_transport_maps パラメタが postfix 2.7 からのサポートとなりますので、バージョンアップ願います。 CentOS 6 なんかだと 2.6.6 がデフォルトで入っているのでご注意を。バージョンアップ方法については割愛いたします。

main.cf 編集

/etc/postfix/main.cf にて、main.cf の最終行に下記を追記します。

main.cf にて、デフォルトの helo 応答と
sender_dependent_default_transport_maps のマッピング場所を設定します。

マッピングファイル作成

/etc/postfix/bbb_relay_maps を作成し、

/etc/postfix/ccc_relay_maps を作成し、

をそれぞれ記述します。
@bbb.com から送信されるメールは master.cf の out_bbb: を、
@ccc.com から送信されるメールは master.cf の out_ccc: の記述を参照する設定です。

master.cf 編集

/etc/postfix/master.cf の、
※smtp inet n – n – – smtpd の行の下あたりに以下を追記します。

master.cf にて、
out_bbb 用(@bbb.com からの送信メール) は helo を bbb.com に、
out_ccc 用(@ccc.com からの送信メール) は helo を ccc.com に、
それぞれ書き換える設定です。

ようやくマッピング!

ここまできたらあとちょっと。
postmap コマンドにてマッピング用データベースを作成します。

を実行し、マッピングを追加してください。
また、マッピング後、念のため

を実施し、bbb_relay_maps.db、 ccc_relay_maps.db が作成されていることを確認してください。

Postfix 再起動

にて、Postfix を再起動したら、ようやく helo がメールアドレスごとに変更されます。
メール受信して確認してみてくださいな!

今回は aaa.com は “smtp_helo_name” の値を適用させましたが、
もちろん aaa.com 用にマッピングしても OK です。

ブロックリスト入りしちゃってる方は、作業後、解除申請をお忘れなきよう・・・!

このエントリーをはてなブックマークに追加

箱田

この記事を書いた人: 箱田

ビーズクリエイトのエンジニア兼プログラマ。

プログラミングが捗る日と捗らない日にムラがあり、
捗る時間を自分でコントロールできる方法を探求している。

エンジニアの君へ。という記事をかきました。
仕事がつらいエンジニアさん、良かったら読んでください。

あわせて読みたい