Postfix件名で正規表現 独自スパムフィルターを追加する方法(日本語)

メールサーバーでPostfixを使う人は多いと思います。
Wietse Venemaらが開発したフリーソフトウェア・オープンソースソフトウェアのメール転送エージェントとして有名です。

今回は、Postfixで独自のスパムフィルターを追加する方法を書き溜めておきます。
CentOS7の場合、Postfixをyumでインストールすると、/etc/postfixが作成されます。

概要

広告

ヘッダーでフィルターする際はheader_checksを編集する

まず、/etc/postfix/main.cfを編集します。
regexpをつけ忘れないように。

/etc/postfix/header_checksを編集します。
もし/etc/postfix/に存在していなかったら
新規で作成して問題ないので作ってください。

下は例です。
メール件名に「BestSalesForYou」と書いてあった場合拒否する。
という設定です。

こんな感じに書いていきます。

メール本文でフィルターする際はbody_checksを編集する

メール本文でフィルターをする場合もまず、/etc/postfix/main.cfを編集します。
header_checksと同様、regexpをつけ忘れないように。

/etc/postfix/body_checksを編集します。
もし/etc/postfix/に存在していなかったら
新規で作成して問題ないので作ってください。

下は例です。
メール本文に「Bitcoin」または「bitcoin」と書いてあった場合拒否する。
という設定です。

こんな感じに書いていきます。

日本語をフィルターする際はエンコードする

特に注意してほしいのが日本語の正規表現フィルターです。
エンコードしないと駄目です!

例えば、「当選情報です」と書かれているものをフィルタリングしたい場合、
下記のように書いては動きません。

実際に送信される文字コードにエンコードする必要があります。
例えばUTF-8をBase64でMIMEにエンコードしたら下記になります。

これ忘れないようにね。
そのまま日本語使ってもだめだし、エンコードしたあと、エスケープも忘れないようにね。

nkfというパッケージを使えばエンコードとかもかんたんにできます。
とりあえずよくあるパターンだけ、書き溜めておきます。


これはパイプで使ってください。
echoをパイプで標準入力で渡せば、変換します。

役に立てばいいな。


じゃあね〜〜。