Rspamdは1.6.0以降は単独でmilterモードが利用できるようになっているのでMTAとの連携にRmilterを使わなくてもよくなった。
でも、RspamdにはRmilterに備わっているspamd_never_rejectに相当するオプションが存在しないのでRmilterを併用していた。
今回Rmilter無しの設定に変更してみたのでメモ。
以下は主にRmilter併用からの変更点。
/etc/rc.conf (FreeBSDの設定)
1 2 3 | #rmilter_enable="YES" #←Rmilterを起動させないようコメント化 または行削除
rspamd_enable="YES"
redis_enable="YES"
|
1 2 3 4 5 6 7 8 9 | mtpd_milters =
inet:localhost:10025
inet:localhost:11332 #←Rspamd
unix:/var/run/clamav/clmilter.sock #Rspamdとは全く別でClamAVを使う場合
non_smtpd_milters =
inet:localhost:10025
inet:localhost:11332 #←Rspamd
unix:/var/run/clamav/clmilter.sock #Rspamdとは全く別でClamAVを使う場合
|
MTAにPostfixを使う場合のmilter周りの設定。
/usr/local/etc/rspamd/local.d/worker-proxy.inc1 2 3 4 5 6 | milter = yes; #←これがmilterモードの設定
timeout = 120s;
upstream "local" {
default = yes;
self_scan = yes;
}
|
extended_spam_headers = true;
この記事ではこれだけを指定。
基本的には以上でOKだが、spamd_never_rejectが無いのでメールのスコアがRejectの点に達すると破棄されてしまう。自動判断に絶対間違いないのであれば構わないがfalse positiveはどうしても発生するのでこれは困る。Rmilterのサポートを見るとRejectのスコアを上げてしまうという方法もあると書かれているけど今回はRejectを使わずにAdd headerを使うことにした。(これが正しい方法かは不明だが動作としては期待通りに動く)
/usr/local/etc/rspamd/override.d/metrics.conf1 2 3 4 5 | actions {
# reject = 10; #←以前の記事では初期値の15点から10点に変更した
# reject = 999; #←rejectの点を上げてしまうという手もある
add_header = 10; #←この記事ではこれ
}
|
Rspamdを再起動して暫くしてからWeb UIでHistoryを確認する。Actionの列に赤色の"reject"ではなくオレンジ色の"add header"が出ていること。その迷惑メールが破棄されずにメールボックス(迷惑メール用フォルダ)に届いていることを確認できればOK.
この記事の方法だとメールヘッダにSpamフラグが付くだけなのでメールボックスへの配送時の振り分けは前の記事のようにMaildrop等を使う。
UNIX Socketを使う場合
ポート11332を使うのではなくUNIX Socketを使いたいなら以下。
/usr/local/etc/postfix/main.cf1 2 3 4 5 6 7 8 9 | mtpd_milters =
inet:localhost:10025
unix:/var/run/rspamd/rspamd.sock #←Rspamd
unix:/var/run/clamav/clmilter.sock #Rspamdとは全く別でClamAVを使う場合
non_smtpd_milters =
inet:localhost:10025
unix:/var/run/rspamd/rspamd.sock #←Rspamd
unix:/var/run/clamav/clmilter.sock #Rspamdとは全く別でClamAVを使う場合
|
MTAにPostfixを使っている場合。milterの設定にRspamdのsocketを指定する。
/var/run/rspamd/rspamd.sockは新規のsocket
bind_socket = "/var/run/rspamd/rspamd.sock mode=0666";
MTAからRspamdのSocketを利用できないと話しにならないので今回はmode=0666を指定した。本来はmode=0660 owner=nobody group=vmailなどと指定すればそのユーザー名/グループ名でsocketファイルが作成されてMTAから利用できるようになる筈だと思うんだけどnobody:nobodyでしか作成されない。(だからMTAから利用できない)
若しくはRspamd起動後に/var/run/rspamd/rspamd.sockのユーザー/グループを変更するか。
% ls -l /var/run/rspamd
total 4
-rw-r--r-- 1 nobody nobody 3 7月 13 16:37 rspamd.pid
srw-rw-rw- 1 nobody nobody 0 7月 13 16:37 rspamd.sock
%
これが嫌なら/etc/groupを編集、例えばvmailというグループ(MTAから利用可能なグループ名とする)にnobodyを追加する(など)。でも、あまりやりたくない。
/etc/groupvmail:*:9000:maildrop,cyrus,postfix,nobody
2017年7月13日追記:
UNIX Socket用の設定を追加