masahirorの気まま記録簿

個人的な出来事や意見、生活などの記録を思うままにブログに記録

554 Malformed Email Rejected の対処法

利用者から、「客先にメールを送ったら『554 Malformed Email Rejected』というエラーが返ってきた」との問い合わせを受けた。
早速調べてみた。

エラーメールの内容を一部引用すると、

This is a MIME-encapsulated message.

This is the mail system at host in04.sjc.mx.trendmicro.com.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                   The mail system

: host scan18.sjc.tk.trendmicro.com[10.30.239.133]
    said: 554 Malformed Email Rejected.  (in reply to end of DATA command)

エラー文章の中に「trendmicro.com」の文字が含まれているが、送った会社はトレンドマイクロの人ではない。
どうやら、送信先会社の外向けメールサーバに、ウイルススキャン用としてトレンドマイクロ製のアプライアンス(Trend Micro Hosted Email Security)が設置されており、この装置がエラーを返しているようだった。
(trendmicro.com が本文に入っていることで判明)


さらに、「554 Malformed Email Rejected」の原因を調べてみると下記の記述を発見。

InterScan Messaging Hosted Securityの圧縮ファイルに対する検索制限について | 製品Q&A:トレンドマイクロ
http://esupport.trendmicro.co.jp/Pages/JP-2077105.aspx

InterScan Messaging Hosted Security (以降 IMHS) では、条件に基づき特定のメール送信要求に対して受信を拒否することがあります。このとき、送信元には"554 Malformed Email Rejected" のレスポンスコードが返されます。

受信を拒否する条件は以下のとおりです。

1.メッセージ全体のサイズが 50 MB以上
2.受信者の総数が 1000 以上
3.圧縮ファイルのレイヤーが 20 階層以上
4.圧縮ファイルの解凍後のサイズ制限:30MB
5.圧縮ファイルに含まれるファイル数の上限:353ファイル
6.圧縮ファイルの圧縮率が99%を超える場合
7.RTF(Rich Text Format)形式で、レイヤ(入れ子構造)が5階層以上ある場合
8.OLE(Object Linking and Embedding)のレイヤが5階層以上ある場合

注:圧縮ファイルに対する制限は、パスワード保護されたファイルには適用されません。
ただしRAR形式については、5番と6番が適用されます。

上記は初期値のようで、装置毎に設定変更は可能のようだが、今回メール送信した会社では初期値のまま使用されているようだった。
問い合わせした人にどのようなメールを送ったか訪ねたところ、添付ファイルとして圧縮ファイルをつけており、その中にはファイルが353個以上含まれている、というものであった。上記の「5」にヒットする内容である。

【補足】
このパターンはJavaの「JAR」「WAR」等を添付する場合に起こりがち。
「JAR」「WAR」は実態はZIP圧縮ファイルのため今回の圧縮ファイルチェックに該当し、classファイルが多数含まれていることが多い。


なので、圧縮ファイルを作り直してもらい、1つの圧縮ファイル内のファイル数を350個以下にして、複数回に分けて送信したところ、無事相手に到着。一件落着である。


今回はこちらが相手メールサーバの仕様に気づき、それに合わせて対応したから無事メール送信できたが、このようなアプライアンス製品が他社に設置されていた場合、先方にネットワークの詳しい人が居ないと初期値のまま運用されていることはよくあることだし、今回のケースで相手の会社に「エラーが出ましたよ、そちらの問題では?」と伝えても、ブラックボックス化されたアプライアンスを置いただけの状態だと、どこに原因があるか、どうすれば設定を変えれるか分からない場合があるよなと、改めて感じた。