前回
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」というファイルに記述します。


