プロバイダからメールアドレスを一つもらって、宅内サーバを運営していると、そのめーるもほしくなりませんか?
また、そのメールがSPAMだったら悲しい出来事です。
そこで、勝手にメールを取ってきて、SPAMチェックまでしてくれる方法を考えてみました。よければどうぞ!! ∈^0^∋
Spamassassinファイルと各バージョン
spamassassin-2.55-0vl2
spamassassin-tools-2.55-0vl2
perl-Mail-SpamAssassin-2.55-0vl2
Fetchmailファイルと各バージョン
fetchmail-5.9.11-0vl1
fetchmailconf-5.9.11-0vl1
Procmailファイルと各バージョン
procmail-3.22-0vl2
1:Procmailの設定
Procmailはメールが来たときに動作する。よってトリガーは特に設定がない。
spamassassinが起動するとき「--auto-whitelist(-a でもよい)」をつけると自動的にホワイトリストを作成する。
各ユーザごとに設定する。
ファイル保存場所 = $HOME/.procmailrc
VERBOSE=off
MAILDIR=/var/spool/mail
PMDIR=/var/log/procmail
LOGFILE=$PMDIR/$LOGNAME.log
:0fw
| /usr/bin/spamassassin --auto-whitelist
# Spam Check
:0:
* ^X-Spam-Status: Yes
! spam@mail.desu # メールに送る場合
/home/hogehoge/spam.txt # ファイルに残す場合 どちらかを「#」にてコメントアウトすること
2:spamassassin全体の設定
ファイル保存場所 => /etc/mail/spamassassin/local.cf
local.cf を設定する。今回はHIT POINTは6点でスパム認定
最後の行は、ホワイトリストの所在地。local.cfで設定するとネットワーク全体のホワイトリストが完成する。
# This is the right place to customize your installation of SpamAssassin.
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
###########################################################################
#
#rewrite_subject 0
#report_header 1
#defang_mime 0
ok_languages ja en
ok_locales ja en
required_hits 6
full RAZOR_CHECK
describe RAZOR_CHECK
score NAME_OF_TEST 3.0
score CASHCASHCASH 0.00
score UPPERCASE_25_50 0.00
score UPPERCASE_50_75 0.00
score UPPERCASE_75_100 0.00
score US_DOLLARS_2 0.00
score HTTP_CTRL_CHARS_HOST 0.00
auto_whitelist_path /etc/mail/spamassassin/auto-whitelist
3:spamassassinの個別設定を行う
ファイル保存場所 => $HOME/.spamassassin/
各ユーザのホームディレクトリに .spamassassin のディレクトリを作成する。
ここに、SPAMと判定する文字を入力して、ポイントを設定する。
デフォルトは、 /etc/doc/spamassassin/sample-japanese.cf をコピーして user_prefs と名前を変更する。
簡単カスタマイズ
★日本語をそのまま使うことはできないのでS-JISをJISに変更する必要がある。
変更ツールとして、
旧 echo 'Japanese spam keyword' | nkf -j | od -t a
echo echo 'サンプル' | nkf -j | awk '{gsub(/\x1B[$(]B/,"");print}' <- こっちの方がいいそうです 参考ぷらぷらブログさん
と、コマンド入力をする。 Jananese spam keyword に日本語を入力する。
(例 1)件名に「未承認」があればPOINTを与えたい場合
$ echo '未承認' | nkf -j | od -t a
0000000 esc $ B L $ > 5 G ' esc ( B nl
0000015
頭と最後の3文字ずつ削る => L $ > 5 G '
ここからスペースを除く => L$>5G'
<<注意>> $|>.,等はコマンドとして成立するので「¥」を前に入れて無効化しておく
件名は subject なので、メールヘッダーにあるからチェック場所を指定する
10POINTを与える
header MISYOUNIN Subject =~ /L\$>5G'/
describe MISYOUNIN Misyonin
score MISYOUNIN 10.0
★ドメインをホワイトリストに載せたい場合(自分の会社を設定したりする)
whitelist_from *@hogehoge.gr.jp
(例 2)文書内容に「合法ドラッグ」があればPOINTを与えたい場合
日本語をJISに変換するのは上の同じ。
300POINTを与える(ホワイトリストは大体-100POINT)
body GOUHOUDRAG /9gK!%I%i%C%0/
describe GOUHOUDRAG Gouhou Drag
score GOUHOUDRAG 300.0
★個別にホワイトリストを作る
個別にホワイトリストを作る場合は、user_prefsの最後に
auto_whitelist_path /home/hogehoge/.spamassassin/auto-whitelist
とすればできあがる。
4:Fetchmailの設定をする
ファイル保存場所 => $HOME/.fetchmailrc
Fetchmailは違うサイトのメールを取得してきてくれる。そのときに、こちらにあるSpamassassinで
SPAMチェックができれば便利がよい。
set daemon 7200 # 起動しておけば2時間おきにチェックする。デーモン管理になる
set nobouncemail # エラーメールを送信者に転送しないための設定
poll pop.hogehoge.gr.jp # popサーバ
protocol pop3 # pop3 か imap などプロトコル指定
user "hoge" # ユーザ名
password "hoge" # パスワード 平文で丸見えである
flush # メールを残さない。残したい場合は keep
no mimedecode # メールサブジェクトが文字化けしないため(サブジェクトをデコードしないよう)に記述
mda "/usr/bin/procmail -d hoge" # 受信したメールをProcmailに送る。ユーザを -d にて指定する
4-2:Fetchmailをcronで動作させるとき(メモリ節約タイプ)
Fetchmailをデーモンではなくcronで動作させる場合
0 */2 * * * /usr/bin/fetchmail > /dev/null
これで2時間ごとに動作する。分の所を*にすると、0分~59分まで連続起動するので必ず指定する
2003/05/27 記述
2005/03/07 フレーズを作るところに加筆