前回
Qmail for CentOS 7 with SpamAssassin 3.4.2
は、サーバー全体で、迷惑メールの判定をしていました。
しかし、実際には、ユーザ毎(メールアドレス毎)に、迷惑メールの判定基準を設けたい。
というのが実情かと思います。
qmailでの設定方法を記述します
.qmailの設定
Qmailでは、
Maildirのディレクトリに、「.qmail」をおいて、その中で、「転送」などの設定を行います。
今回、vpopmailで、マルチドメインの設定をしているので、
info@(独自ドメイン)の「.qmail」の置き場所は、
/home/vpopmail/domains/(独自ドメイン)/info/
になります。
# vi .qmail |/var/qmail/bin/preline /usr/local/bin/maildrop /home/vpopmail/etc/mailfilter_simple となっているところを |/var/qmail/bin/preline /usr/local/bin/maildrop /home/vpopmail/domains/(独自ドメイン)/info/mailfilter とします。
最後の「mailfilter」の中身が重要です。
vi /home/vpopmail/domains/(独自ドメイン)/info/mailfilter ---------------------------------------------------------------------- SHELL="/bin/sh" import EXT import HOST VPOP="| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox" VHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST` logfile "mailfilter.log" if ( $VHOME eq "" ) { log "ERROR: VHOME isn't set!" to "$VPOP" } else { xfilter "/usr/local/bin/spamc -f -u $EXT@$HOST" if (/^X-Spam-Flag: *YES/) { `test -d $VHOME/Maildir/.Spam` if( $RETURNCODE == 1) { `/usr/local/bin/maildirmake -f Spam $VHOME/Maildir` } exception { cc "!(迷惑メールとされたメールの転送先メールアドレス)"; to "$VHOME/Maildir/.Spam/" } } else { cc "!(迷惑メールではないと判断された転送先メールアドレス)"; to "$VHOME/Maildir/" 「残す」場合 } }
↑上記の解説・・・
xfilter “/usr/local/bin/spamc -f -u $EXT@$HOST”
で、SpamAssassinを通します。
SpamAssassinでは、SpamAssassinを通ったメールは、ヘッダに
「X-Spam-Flag」という情報が付加されます。
上記では、
if (/^X-Spam-Flag: *YES/)
で、「迷惑メール」となった場合は、「.Spam」というフォルダにメールが移動されます。
この「.Spam」フォルダは、メールソフトでは、受信されません。
2カ所ある、「cc」で始まる行では、「転送」を行います。
「迷惑メール」を「特定のメールアドレス」に。
「迷惑メールではない」メールを「特定のメールアドレス」に。
という制御が可能です。
また、
to “$VHOME/Maildir/”
で、「迷惑メールではない」メールを、通常通りのMaildirに保存します。
# chown vpopmail.vchkpw mailfilter # chmod go-r mailfilter
とします。
user_prefs
メールアドレス毎の設定ファイル、user_prefsを入手します。
Postfix3.3 迷惑メール対策 SpamAssassin(スパムアサシン)設定その2
にも、記載しましたが、松田陽一さんが、設定ファイルを公開してくれています。
https://pastebin.com/QnwRxxBQ
から、入手します。松田陽一さんに感謝!
/home/vpopmail/domains/(独自ドメイン)/info/.spamassassin
というフォルダがあるかと思います。
その中に、user_prefsを保存します。
# chown vpopmail.vchkpw user_prefs
とします。
迷惑メール判定のユーザ毎の設定
/home/vpopmail/domains/(独自ドメイン)/info/.spamassassin
のフォルダ、user_prefsと同じフォルダに、「private_prefs」というファイルを作成し、そのファイルで、個人毎(メールアドレス毎)の設定をします。
スコア設定
SpamAssassinでは、「スコア」という点数で、迷惑メールを判定します。
最終的な数字が大きいほど、迷惑メールの可能性が高いです。
user_prefsでは、様々な条件により、「スコア」を加算していきます。
required_score 5.0
というふうに記述をします。
小さいほうが、「迷惑メール」の基準が厳しくなります。
逆に、「迷惑メールではない」メールも「誤判断」とされてしまします。
ホワイトリスト/ブラックリスト
SpamAssassinでは、「差出人」で、
「迷惑メールではない」
「迷惑メールである」
と、判定することができます。
特定の企業の独自ドメイン(もしくは、メールアドレス)からは、無条件に「迷惑メールではない」
という設定が可能です(ホワイトリスト)。
逆に、「このドメイン(もしくはメールアドレス)」からのメールは、
「絶対に迷惑メール」
という「ブラックリスト」の設定ができます。
ホワイトリスト指定は、
whitelist_from (メールドレス) whitelist_from *@(独自ドメイン)
ブラックリスト指定は、
blacklist_from (メールアドレス) blacklist_from *@(独自ドメイン)
と指定します。
スパムリポートの設定
report_safe
という設定があり、初期設定では 「1」です。
これは、本来のメール本文が、「添付」という形で、受信します。
「0」にすると、「メールヘッダ」内に、迷惑メールのヘッダ内に迷惑メールのレポートがなされます。
個人的には、「ゼロ」を指定しています。
report_safe 0
です。
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on (ホスト名) X-Spam-Flag: YES X-Spam-Level: **** X-Spam-Status: Yes, score=5.0 required=2.0 tests=CONTENT_TYPE_PRESENT, NO_RELAYS,QENCPTR1,URIBL_SC2_SURBL,URIBL_XS_SURBL,UTF8 autolearn=no autolearn_force=no version=3.4.2 X-Spam-Report: * -0.1 CONTENT_TYPE_PRESENT exists:Content-Type * 3.0 URIBL_SC2_SURBL Has URI in SC2 at * http://www.surbl.org/lists.html * [URIs: enoteca.co.jp] * 2.0 URIBL_XS_SURBL Has URI in XS - Testing * [URIs: enoteca.co.jp] * -0.0 NO_RELAYS Informational: message was not relayed via SMTP * -0.1 UTF8 BODY: UTF-8 message body * 0.2 QENCPTR1 FULL: Quoted-Printable mime pattern
と、ヘッダ内に、「スコア」の加算状況がレポートされます。
これらの設定を「private_prefs」というファイルに記述します。