web-dev-qa-db-ja.com

FromヘッダーのSpamAssassin、Postfix、および複数のアドレス

メールスキャンサーバー(MailScanner、Spamassassin、Postfixなど)とFromヘッダーのなりすましで発生している問題に取り組んでいます。残念ながら、これらのコンポーネントの一部のバージョンは古いため、これは1つ以上のコンポーネントのバグである可能性があります。アップグレードが計画されています。暫定的な解決策が適切かどうか、またはこれがアップグレードされた環境に引き継ぐ必要がある構成/ルールの問題であるかどうかを確認しています。

基本的に、Fromヘッダーに複数のアドレスが含まれているメッセージが届きます。それ自体はRFCに準拠しているようで、通常は私が見る限り満たされていない特定の条件がありますが、環境がログに記録されていることがわかるほぼすべての例で、これはなりすまし/悪意のあるメッセージです。

以下は、(おそらく)無実を保護するために名前が変更された、すべて異なるメッセージからのいくつかの例です。

From: "[email protected]" <[email protected]> <[email protected]>
From: John Doe <[email protected]> <[email protected]>
From: "Trusted Third Party Employee" <[email protected]> <[email protected]>

Outlookのような電子メールクライアントは、最初のアドレスしか表示しないようです。 MailScanner/SpamAssassinは最後を使用します。

基本的に、次のような正規表現はこれらをキャッチしているように見えます(Postfixのheader_checkにあるか、Spamassassinのルールにあるかに関係なく)。

^From: .*?<[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}>.*<[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}>

この正規表現はひどいものであり、上記のような例に一致するよりエレガントな方法がおそらくあると確信しています。 ;)

必要に応じて、特定の構成スニペットを共有できます。

何かご意見は?

1
rickyboone

現在、私はこの種のスパムと戦っています。そして、 Deeepdigger の素晴らしい answer を補完するために、現在、私のSpamassassinに このルール があります。

describe LOCAL_TWO_FROM_EMAILS  The From has two emails, probably email spoofing
header   LOCAL_TWO_FROM_EMAILS  From =~ /<.*\@.*>\s+<.*\@.*>/i
score    LOCAL_TWO_FROM_EMAILS  9.0 # Set this value at your discretion

正規表現の部分を改善する必要がありますが、このルールは、この不正な形式のヘッダーによってスプーフィングされた電子メールの大部分を阻止するのに役立ちました。

0
Hojendiz

私の知る限り、これらのFromヘッダーはすべてRFCに違反しています。 Fromヘッダーには複数のアドレスを含めることができますが、その場合はコンマで区切る必要があります。

見る:

したがって、メールサーバーはその電子メールを拒否する必要があります(imho)。そうでない場合は、ヘッダーチェックを追加してRFC形式を検証し、そうでない場合は電子メールを拒否できます。しかし、RFCは表示名のほとんどすべてを許可しているため、この正規表現は複雑で醜いものになります。

例えば。これは合法です

    From: "[email protected] <[email protected]>" <[email protected]>

実際には、私は人生で複数の差出人アドレスを含む有効な電子メールを受け取ったことがありません。また、表示名はすべて送信者の裁量によるものであるため、ゴミだと思います。既知の電子メールアドレスはとにかく私のアドレス帳にあり(したがって、それらは私の電子メールクライアントに表示されます)、他のすべてのアドレスについては、フィッシングを防ぐために表示名を破棄できます。

言い換えると、SpamAssassinがヘッダー行の最後の有効な電子メールアドレスを実際の電子メールアドレスとして使用する場合、同じことを実行して他のすべてを削除できます。

/^From:.*[[:space:]]+<?([a-zA-Z0-9._?=#$|'*%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,63})>?[[:space:]]*$/ REPLACE From: ${1}

注:有効な電子メールアドレス形式に一致するパターンは、正式には正しくありませんが、実用的です。電子メールアドレス形式の正規表現に関する説明については、 https://www.regular-expressions.info/email.html も参照してください。

0
Deeepdigger