最近、自社のML用メールゲートウェイのポリシーにより、

envelope-FROMに記述がないメールはSPAMと見なして

受け取りを拒否するようになった。



・・・と、ここで問題発生。



私が保守しているお客さんの某メールアーカイブアプリは、

アーカイブ失敗などのイベントメールを管理者に送る時に

envelope-FROMに記述無し(null)でメールを生成する仕様で、

これが変更不可なのだ。



(客)メールアーカイブサーバ(archive.hogehoge.com) envelope-FROM<null>メールを生成

(客)メールゲートウェイ

【The Internet】

(自社)ML用メールゲートウェイ  ←ここでenvelope-FROM <null>メールを拒否

(自社)保守SE



という流れで、イベントメールが受け取れなくなってしまった。



仕方がないので、メールアーカイブサーバのMTAであるPostfixへ

一旦ローカル配送し、同Postfixにて、


envelope-FROM = <null> だった場合のみ、強制的にenvelopeを付与

する設定を追加して回避してみました。



設定変更を最小限に抑える為に、メールアーカイブサーバのみ変更します。


# vi /etc/postfix/main.cf

canonical_calsses = envelope_sender  ←この記述を追記して上書き保存


# vi /etc/postfix/canonical.regexp ←デフォルトでは存在しないファイルなので新規作成

/""/ root@archive.hogehoge.com  ←この行だけ記述して上書き保存。


# postfix reload ←Postfixをリロードして上記の設定を反映



こうしておいて、archive.hogehoge.comのメールアーカイブアプリが生成したメールを

root宛てローカル配送するようにし、自社MLに転送するようにしておく。


すると、root@archive.hogehoge.com  にローカル配送されたメールのうち、

envelope-FROM = <null> だった場合のみ、

envelope-FROMの欄に、root@archive.hogehoge.com と強制的に記入してくれる。



元々envelope-FROMをちゃんと記載していたメールには付与しません。


-----envelope-FROMがちゃんと記載される例-----

# telnet localhost 25

HELO hogehoge.com

2xx~OK

MAIL FROM: <takeC@fugafuga.com >

2xx~OK

RCPT TO: <honyarara@hogehoge.com >

2xx~OK

DATA

3xx~OK

(本文)

-----ここまで-----


~~~envelope-FROMをちゃんと記載していない(null)メールの例~~~

# telnet localhost 25

HELO hogehoge.com

2xx~OK

MAIL FROM: <>

2xx~OK

RCPT TO: <honyarara@hogehoge.com >

2xx~OK

DATA

3xx~OK

(本文)

~~~~~ここまで~~~~~




上記の例を見てもらえばわかるように、

MAIL FROMの欄が空欄( <> )だったとしても、

MTAは『了解』として、200番を返答するので、

そのまま続けてメールが送れます。


これはRFCでは、『受け取り側のMTAは、envelepe-FROMがnullのメールでも受け取りなさい』と

書いてある為らしいです。


・・・という事は、うちの会社のMTAが受け取らないってのがRFC違反なんじゃん!


と思ったけど、SPAMメール対策としてはそれほど珍しくない例みたいですね。



ちなみに、

/etc/postfix/canonical.regexp 

に書いた、


/""/ の部分はマッチ条件

root@archive.hogehoge.com  の部分は付与するアドレスを手動で指定


なので、これをいじくればenvelope-FROMをいくらでも捏造出来てしまいます。



メーラーで表面的に見た発信者アドレスが信用出来ないというのは、

こういう設定をする事で、簡単に偽造出来てしまうからです。

怪しいメールは、必ずヘッダーまで確認して、発信者を確認しましょう。




canonicalの指定で、

『特定のメールアドレスを、指定したアドレスに書き換える』

という設定という意味ではググれば結構出てくるのですが、

今回のように envelope-FROM = null だった場合のみ付与する

という意味ではWeb上で見つからなかったので、備忘録に加えます(´∀`)




へぇーと思ったらポチっとお願いします( ´∀`)つ → 人気ブログランキングへ



Postfix実用ガイド/カイル・D. デント
¥3,360
Amazon.co.jp

Postfix詳解―MTAの理解とメールサーバの構築・運用/荒木 靖宏
¥2,730
Amazon.co.jp