CentOS5サーバーでSendMail8.14.4を実行しています。
日本のユーザーがメッセージを送信していて、サーバーによって処理されると、SendMailは何らかの理由で追加のキャリッジリターンを追加しています。
電子メールには、(おそらく)国際文字を含む値を持つXヘッダーが含まれています。 notepad ++でMIMEソースを調べると、STX
やCAN
のような奇妙なことがわかるので、「おそらく」と言います。
テスト範囲を次のように絞り込むことができました。
Sendmailを介して送信すると、最終的にSendMailは次のようになります。
(ips、Q-ID、およびホスト名は、無実を保護するために変更されました)
ここで明らかに潜在的な危険信号です。ヘッダー値は引用符で始まりますが、ありません終了値があります。それはRFC標準で要求されていますか?それともその部分は赤いニシンですか?
最終的な結果として、ヘッダー値がメッセージ本文にリークします。
Sendmailが余分なキャリッジリターンを追加している理由について何か考えはありますか?
それは実際には非常に簡単です: RFC 2822セクション2.2. 長いヘッダーを許可します。ここで、ヘッダーはフィールド名の後に : 次の行がスペースで始まる(簡略化されている)限り、折りたたんで次の行に進みます。
原則として、この標準で空白の折り畳みが許可されている場合(WSP文字だけでなく)、WSPの前にCRLFを挿入できます。たとえば、ヘッダーフィールドは次のとおりです。
Subject: This is a test
は次のように表すことができます:
Subject: This
is a test
元の入力の3行目は、スペースではなく文字で始まります c コロンは含まれていません : これにより、前のヘッダーの続きでも次のヘッダーフィールドでもありません(§2.2)。
それはそれをヘッダーの終わりとしてマークします...
そして体の始まり。
Sendmailは、その不正な形式のメッセージを「修正」し、ヘッダーの終わりと本文の始まりとして認識されるものの間に必要な空白行を追加します。
単純なtelnetメールセッションでその動作を再現できます。
[user@example ~]$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
<<< 220 example.com ESMTP Sendmail 8.14.4/8.14.4; Fri, 17 Jul 2015 20:29:26 +0200
helo localhost
<<< 250 example.com Hello localhost [127.0.0.1], pleased to meet you
mail from:me@localhost
<<< 250 2.1.0 me@localhost... Sender ok
RCPT TO:[email protected]
<<< 250 2.1.5 [email protected]... Recipient ok
data
<<< 354 Enter mail, end with "." on a line by itself
Subject: test
X-header: do not try
this at home
start the body
.
<<< 250 2.0.0 t6HITQXA020072 Message accepted for delivery
quit
これにより、例と同様のメッセージが表示されます。
[user@example ~/Maildir/new]$ cat 1437157845.20091_2.example.com
Return-Path: <[email protected]>
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on example.com
X-Spam-Level:
X-Spam-Status: No, score=-1.9 required=5.0 tests=ALL_TRUSTED,BAYES_00,
MISSING_HEADERS autolearn=no version=3.3.1
Received: from localhost (localhost [127.0.0.1])
by example.com (8.14.4/8.14.4) with SMTP id t6HITQXA020072
for [email protected]; Fri, 17 Jul 2015 20:30:06 +0200
Date: Fri, 17 Jul 2015 20:29:26 +0200
From: [email protected]
Message-Id: <[email protected]>
Subject: test
X-header: do not try
this at home
start the body
元のヘッダーの継続と本文の「新しい」開始の間に新しい行が追加されます。