SpamAssassin によってメールを判定させ,procmail で振り分ける方法を解説. ちなみに SPAM の対義語は HAM らしい...
迷惑メール対策において,false positive (偽陽性) による悪影響は 最小限にとどめたい. そこで,あくまでサーバ側のお仕事は『これは怪しい!』のフラグを立てる 所までで,メールを別フォルダに移す・破棄するのは各ユーザの 判断によって行われるのがよいと思う.
EP サーバでは Thunderbird の利用を推奨しているが,Thunderbird には SpamAssassin (以降 SA) によるデフォルトのフラグを検知する 機能がある.まずはそれを有効にしよう.
以上で Thunderbird 側の準備は整った. ちなみに,SA ではデフォルトで迷惑メールの件名の先頭に 『*****SPAM*****』の文字列を挿入する. Thunderbird ではそれを検知し,迷惑メールフォルダなどに移動させることができる.
続いて,メールサーバ側で受信メールを SA に判定させるための設定をする. 2025/09/07 現在,EP メールサーバでは全メールに対して SA による判定は 行っていない. そこで,ユーザ単位で受信メールを SA に判定してもらう設定が必要になる.
まず,dot-qmail ファイルを編集し,受信メールを procmail に渡すように設定する.
$ cd ~ $ vim dot-qmail
| preline /usr/bin/procmail ## ./Mailbox など他の行は必要ない |
dot-qmail は一連の設定が終わったら .qmail に上書きする. これは中途半端な .qmail でメール受信するのを防ぐ意味がある.
続いて,procmail の設定をしていく. procmail については過去の EPnetFaN 座学編資料 ( procmail de SPAM 撃墜!) を参照されたい.
$ cd ~ $ mkdir .procmail $ vim .procmailrc
SHELL=/bin/bash PATH=/bin:/usr/bin:/usr/local/bin ADDRESS=hoge@ep.sci.hokudai.ac.jp LOGFILE=$HOME/.procmail/`date +%Y%m`.log LOCKFILE=$HOME/.procmail/.lockfile MAILDIR=$HOME/Maildir MBOX=$HOME/Mailbox DEFAULT=$MBOX # spamc に通す (フィルタ) :0fw | /usr/bin/spamc # ========== ここから配送 ========== # mbox 形式 (Mailbox) :0c: $HOME/Mailbox # Maildir 形式 :0 $HOME/Maildir/ |
Gmail などへ転送させる場合は以下のように書く.
SHELL=/bin/bash PATH=/bin:/usr/bin:/usr/local/bin ADDRESS=hoge@ep.sci.hokudai.ac.jp LOGFILE=$HOME/.procmail/`date +%Y%m`.log LOCKFILE=$HOME/.procmail/.lockfile MAILDIR=$HOME/Maildir MBOX=$HOME/Mailbox DEFAULT=$MBOX # spamc に通す (フィルタ) :0fw | /usr/bin/spamc # ========== ここから配送 ========== # mbox 形式 (Mailbox) :0c: $HOME/Mailbox # Maildir 形式 :0c $HOME/Maildir/ # 外部アドレス転送 :0 ! hogehoge@example.com |
$ cd ~ $ cp .qmail dot-qmail.bk ## バックアップ $ chmod 600 dot-qmail $ mv dot-qmail .qmail
設定完了後は必ず自分宛てにテストメールを送り,正しく受信できることを 確かめること. また,procmail の書式については man procmail を参照のこと.
最終的には qmail-queue ラッパーとして SA に判定させる形を 想定している. ラッパー導入後は dot-qmail,procmail の設定は全て元通りにすること.
誤判定をゼロにすることは限りなく不可能に近い. そこで,万が一メールの誤判定が出た場合の対応法を記す.
$ sftp hero@mail.ep.sci.hokudai.ac.jp sftp> put falsemail.eml
$ ssh hero@mail.ep.sci.hokudai.ac.jp $ sa-learn --spam falsemail.eml $ rm falsemail.eml
メール管理者は定期的に迷惑メールの判定スコア (/etc/mail/spamassassin/local.cf) の見直しや, 迷惑メール・非迷惑メールの追加学習を行うこと.
最終更新日: 2025/09/07 山本 峻大 | Copyright © 2025-2025 epcore |