メールサーバー(Postfix+Dovecot)でスパムメールを転送しないようにする

 

僕は自宅のメールサーバー(Postfix+Dovecot)のaliasesを使って受信したメールを携帯に転送するようにしています。

ところが、最近スパムメールがやたら来るようになり、四六時中携帯が鳴りっぱなし。

こりゃタマラン!ってことで、、

Fedoraで自宅サーバー構築」様の

メールサーバーでウィルス&スパムチェック(Postfix+amavisd-new+Clam AntiVirus+SpamAssassin)

を参考にスパムチェックツールをインストールしてみました。

このSpamAssassinでスパムチェックし、スパムと判断されたメールはその場で削除するかSpamフォルダに移動させ、携帯に転送しないようにするはずだったんですが、、

SpamAssassin、amavisd-newをインストールし、メールソフトをIMAPに変更して動作テストしてみると、どうもSpamAssassinがスパム判定したメールを振り分けるProcmailが動いていないようです。

そこで、いろいろ調べながらテストした結果、以下の設定で正常に動作するようになりました。

 

●自分のディレクトリに「.forward」を作成(これが無いとprocmailが起動しないらしい)

# vi /home/vic/.forward
—————————————————————————————————————————————
“|IFS=’ ‘ && exec /usr/bin/procmail -f- || exit 75 #vic”

# 最後の#の後ろに自分のアカウント(vicを指定)
—————————————————————————————————————————————

●作成したフォワードファイルの所有者・グループ設定

# chown vic:vic /home/vic/.forward

 

●/home/vic/に「.procmailrc」を下記の内容で作成してprocmailを動作させる

# vi /home/vic/.procmailrc

—————————————————————————————————————————————
SHELL=/bin/bash

PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
SPAM=$MAILDIR/.Spam/
LOGFILE=$MAILDIR/.procmail.log # ログ出力先
#VERBOSE=ON # 詳細ログ出力

# 未承諾広告メールを削除
:0
* ^Subject:.*iso-2022-jp
* ^Subject:\/.*
* ? echo “$MATCH” | nkf -mwZ2 | sed ‘s/[[:space:]]//g’ | egrep ‘未承諾広告※’
/dev/null

# SpamAssassinによるスパムチェック
:0fw
|/usr/bin/spamc

# SpamAssassinにより判定されたSpam-Levelが一定値(ここでは20)以上の場合は削除
# (必要なメールが削除されてしまう可能性があるので、以下の3行はとりあえずコメントアウトしておき、しばらくの間メールソフトの
# Spamフォルダをチェックして、必要なメールがスパム判定されていないのを確認してから「#」を外す)

#:0
#* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
#/dev/null

# SpamAssassinがスパム判定したメールはスパム専用メールボックスへ配送
# (この時点でスパムと判断されたメールは転送されません)
:0
*^X-Spam-Flag: YES
$SPAM

# メール転送設定
# 例として、Subjectに”SPAM”が含まれてなければ、メールボックスに受信メールを残して
# コピーを「sample@keitai.com」に転送
# (2行目の条件文をコメントアウトすれば、上でスパムと判断されなかったメールは全て転送されます)

:0 c
*!^Subject: .*”SPAM.*
! sample@keitai.com
—————————————————————————————————————————————

● 作成した「.procmailrc」の所有者・グループ設定
# chown vic:vic /home/vic/.procmailrc

 

これでSpamAssassin・Procmailともに正常に動作してほとんどのスパムメールがSpamフォルダに入り、スパムメールは携帯に転送されなくなりました。

あとはメールソフト上で以下の作業をすることで、SpamAssassinの学習機能でさらに精度が上がっていきます。

1.必要なメールでスパム判定されてSpamフォルダに入っていたメールがあったら、受信フォルダに移しておきます。

2.スパム判定をすり抜けて受信フォルダに入ってきたスパムメールはSpamフォルダに移しておきます。

3.まず読むことのない広告メール(スパムではない)もSpamフォルダにブチ込んじゃいます。

これをしばらく繰り返してSpamAssassinのスパム判定が必要十分な精度に上がったら、.procmailrcでコメントアウトしていた「一定値以上のSpam-levelの自動削除」を有効にすればほとんど手間いらずになります。

 

ちなみに、SpamAssassinとProcmailが正常に動作するようになると、受信したメールのヘッダーにSpamAssassinのスパム判定レベルポイントが表示されるようになります。(ヘッダーを全て表示にした場合)

これで数日間確認したところ、スパムメールのほとんどは20ポイント以上で、20ポイント未満だったのは数件のみ。またスパムではないメール(広告メール的なものも含めて)はほぼ10数ポイント以下で、必要なメールで20ポイント以上だったのは1件だけでした。

なのでSpamAssassinの自動削除レベル20ポイントは妥当な数値だと思います。

 

 

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Optionally add an image (JPEG only)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください