【linux】スパムメールをPostfixのメールヘッダーでフィルタリング

Linux

ここ最近スパムメールが2~3倍に増えてきているという話があり、どのようなメールなのか直近3週間程度のspamメールを分析。
メールの内容を主にパターン別にすると、数種類に分類する事ができそうです。

スパムメールがほぼ同じ内容でも、ほとんどの場合は送信元サーバーIPアドレスが異なります。
メールアドレスや送信元IPアドレスでフィルタリングするよりも、件名で除外させる方が今は効率的です。

環境は、Ubuntu.20.04、Postfix3.4.13です。

設定方法

1:メールヘッダーのチェックを有効にする
2:除外設定をする

メールヘッダーのチェックを有効にする

main.cfの中のheader_checksを有効になっているのか確認する。

sudo vi /etc/postfix/main.cf
初期値ではコメント化されているので、#をはずす。
header_checks = regexp:/etc/postfix/header_checks

除外設定をする

除外設定は、先ほどのheader_checksに記述しているファイルです。
sudo vi /etc/postfix/header_checks

記述方法は、
/^Subject:除外定義/ REJECT
注意点として、全角の場合はエンコードが必要です。
エンコードはNKFコマンドでも可能ですが、ツールを利用すると手間も間違いもありません。


1:spamという文字列の件名をREJECTする。
/^Subject:spam/ REJECT
2:spamという文字列を含む件名をREJECTする。
/^Subject:.*spam.*/ REJECT
3:SPAMという全角文字列を含む件名をREJECTする。
UTF-8をBase64でMIMEにエンコード
(正規表現なのでエスケープが必要な文字が含まれていたら\を入れる事が必須になります)
/^Subject:.*=\?UTF-8\?B\?77yz77yw77yh77yt.*/ REJECT

上記例は全てREJECTにしていますが、テスト終了後はDISCARDでメールは破棄した方がいいでしょう。

まとめ

実運用した結果、スパムメールが激減してかなり効果があります。
但し必要なメールが削除される件名に対して指定はできないので、そのような場合は本文チェック(body_checks)の併用の検討も必要でしょう。

コメント