qmail におけるゴミメールの選別

ゴミメールは特定の文字列を含んでいることがあります。 qmail では、~/.qmail に設定を書き込むことで、 特定の文字列を含むメールを選別することができます。

注意

パターンマッチングでゴミメールを選別する方法は、完璧ではありません。 つまり、必要なメールまで「ゴミ」として選別してしまう可能性があります。 必要かどうかは、最終的には人間が判断しなければならない以上、 どの方法でも付いて回る問題だと思いますが、 必要なメールもゴミにしてしまう可能性を認識した上で このページの方法を利用して下さい。

ゴミメール選別スクリプト

ある文字列を含むメールをゴミメールとして、 ゴミメール専用ディレクトリに移すためのスクリプトは以下の通りです。 ただし、以下の設定を使っています。 適宜、環境に応じて変更してください。 Csh スクリプト

mailcheck の使い方

ゴミ文字列の指定

ゴミメールが含む文字列として指定したい文字列は、 set pattern の所に追加すればOKです。 たとえば、「hogehoge」という文字列を含むメールも選別して junk 行きにしたい場合は、次のようにします。
  set pattern = (\
        'gomigomi'\
	'hogehoge'\
  )

ゴミメールには、HTML 形式のメールが大量にあります。 HTML 形式のメールをゴミメールとして検知するには、 次のパターンを指定すればOKです。
  set pattern = (\
        'text/html'\
  )

このスクリプトでは、grep で文字列検索するときに、 オプション -i をつけて大文字/小文字を区別していません。 区別したい場合は -i を外してください。

例外文字列の指定

上の方法でパターンマッチングしたけれども、 例外として救い出したいメールがある場合があります。 例えば、HTML メールをゴミとして判断することにしたけれども、 知人からのメールがいつも HTML メールであるような場合です。

デフォルトの例では、文字列パターン "reigai" を検知した場合には、 メールを救い出しています。 他にも救いたい文字列がある場合は、patternexcept に追加すればOKです。
  set patternexcept = (\
        'reigai'\
        'reigai2'\
  )

実行権を与える

このスクリプトを適当な名前(例えば ${HOME}/bin/mailcheck)で保管し、 実行権を与えておきます。
chmod +x ~/bin/mailcheck-x.y
x.y は適当に合わせてください。

トラブルシューティング

上のシェルスクリプトは、grep の正規表現を使っています。 不正な正規表現が使われると、同じメールを何通も受け取ることがあります。 特殊文字を含む文字列をパターンマッチさせたい場合は、 正しい正規表現になっているかどうか、よく確認して下さい。

設定ミス例:

.qmail の変更

${HOME}/.qmail を以下のように変更すれば、 メールが新着するたびに選別を行います。
./Maildir/
| ${HOME}/bin/mailcheck-x.y
x.y は適当に合わせてください。

FreeBSD の部屋


Last modified: Wed Apr 20 15:54:26 JST 2011