アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【Postfix
【Postfix】メール転送設定が効かずローカルのMaildirに配送されてしまう場合
POSTED BY
2023-02-16

/etc/aliasesにて、root宛のメールを自社の自分のアドレスに転送設定しているのにローカルのMaildirに配送され転送されない問題が出たが、当方の場合以下のような要因であり、設定で解決した。

会社の唯一のメールサーバーが1つの場合こちらの基本設定1つすれば問題ないが、もう1つのサーバーでサブドメイン宛に来たメールを受け取りたい場合は、以下のようにする。

/etc/postfix/main.cf

myhostname = subml.example1155.jp
mydomain = example1155.jp
myorigin = $myhostname
mydestination = $myhostname, localhost.$mydomain, localhost
relay_domains = $mydestination

メインのメールサーバーでは

myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination

としていたが、サブのメールサーバーでは

myorigin = $myhostname
mydestination = $myhostname, localhost.$mydomain, localhost
relay_domains = $mydestination

とするのがポイント。

myoriginとは、ローカルからmailコマンドなどでメール送信した場合Fromをどうするかという設定。
これが$mydomainなら、From: hogeuser@example1155.jp になるし、$myhostnameなら From: hogeuser@subml.example1155.jpと相手に表示される。

mydestinationとは、どの宛先のメールを受信対象とするかという設定。ここにマッチしなければリジェクトされる。
$mydomainを含めてしまうと、メイン宛に来たメールも誤受信してしまう。

relay_domainsはmydestinationにマッチしなかったアドレスで転送を許可したいホストを指定する。そんな事は普通許可しないので、relay_domainsは常にmydestinationと同一であるはずである。

ところで、このサブメールサーバーの/etc/aliasesで、

root: hogeuser@example1155.jp

と、root宛のメンテナンスメールをメインメールサーバのメインアドレスへ転送する設定をしている場合、メインのメールサーバーのように、

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

などとしてしまっていると、転送しようにも自分のドメインmydomainが含まれているので転送不要と判断され、結局ローカルのMaildirに配送されてしまうというエラーが起きる。

mydestination = $myhostname, localhost.$mydomain, localhost
relay_domains = $mydestination

とするのは、その対策も兼ねている設定である。

追記 mynetworksの設定は超重要

mynetworksは上記のあらゆる設定に優先されるらしく、例えば、

mynetworks = 10.25.30.0/26, 127.0.0.1/32

などとしていると、上のmydestinationやrelay_domainsの設定いかんにかかわらず、10.25.30.0/26からのメール配信はどこへの宛先であっても受け入れてしまう(踏み台)ので注意。10.25.30.0/26は自分の管理下にあるローカルネットワークからの接続なんだから全然構わないじゃん、むしろそれがメール中継サーバの役割でしょ、といいたいところだが、このメールサーバがグローバルに直接つながれておらず、かつロードバランサーの配下でもないならそれで合っている、セーフ。

しかし、後者、このメールサーバがロードバランサー配下にある場合はどアウトな設定といってよい。ロードバランサーは外部に対してはグローバルなIPで待ち受け、内部に対しては10.25.30.0/26のようなプライベートマシンとして振る舞うものであるから、SMTPをロードバランスした際、上記のような設定で待ち受けてしまっていたら、外部からの接続を内部からと勘違いし、スパム踏み台サーバー確定となり、気づかず放置していると、あっという間に世界からスパムIP認定されGmailを始め完全ブロックされます。IPだけですめばいいが、IP帯域単位でブロックでもされようものなら、クラウドサービスから損害賠償請求もされかねない危険な設定であるので充分注意が必要。

外に出ていたりロードバランサー配下にあるメールサーバーは必ず、

mynetworks = 127.0.0.1/32

としておくこと。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】