Rspamdの設定 (Rmilter無し)

Rspamdは1.6.0以降は単独でmilterモードが利用できるようになっているのでMTAとの連携にRmilterを使わなくてもよくなった。
でも、RspamdにはRmilterに備わっているspamd_never_rejectに相当するオプションが存在しないのでRmilterを併用していた。
今回Rmilter無しの設定に変更してみたのでメモ。
以下は主にRmilter併用からの変更点。

Rmilter併用の過去記事
/etc/rc.conf (FreeBSDの設定)
1
2
3
#rmilter_enable="YES"  #←Rmilterを起動させないようコメント化 または行削除
rspamd_enable="YES"
redis_enable="YES"
/usr/local/etc/postfix/main.cf
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.inc
1
2
3
4
5
6
milter = yes;  #←これがmilterモードの設定
timeout = 120s;
upstream "local" {
  default = yes;
  self_scan = yes;
}
/usr/local/etc/rspamd/local.d/milter_headers.conf
extended_spam_headers = true;

この記事ではこれだけを指定。

基本的には以上でOKだが、spamd_never_rejectが無いのでメールのスコアがRejectの点に達すると破棄されてしまう。自動判断に絶対間違いないのであれば構わないがfalse positiveはどうしても発生するのでこれは困る。Rmilterのサポートを見るとRejectのスコアを上げてしまうという方法もあると書かれているけど今回はRejectを使わずにAdd headerを使うことにした。(これが正しい方法かは不明だが動作としては期待通りに動く)

/usr/local/etc/rspamd/override.d/metrics.conf
1
2
3
4
5
actions {
#    reject = 10;      #←以前の記事では初期値の15点から10点に変更した
#    reject = 999;     #←rejectの点を上げてしまうという手もある
    add_header = 10;   #←この記事ではこれ
}

Add headerの確認
Rspamdを再起動して暫くしてからWeb UIでHistoryを確認する。Actionの列に赤色の"reject"ではなくオレンジ色の"add header"が出ていること。その迷惑メールが破棄されずにメールボックス(迷惑メール用フォルダ)に届いていることを確認できればOK.
この記事の方法だとメールヘッダにSpamフラグが付くだけなのでメールボックスへの配送時の振り分けは前の記事のようにMaildrop等を使う。

UNIX Socketを使う場合

ポート11332を使うのではなくUNIX Socketを使いたいなら以下。

/usr/local/etc/postfix/main.cf
1
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

/usr/local/etc/rspamd/override.d/worker-proxy.inc (新規1行)
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/group
vmail:*:9000:maildrop,cyrus,postfix,nobody

2017年7月13日追記:
UNIX Socket用の設定を追加

関連記事:

7月4日の北朝鮮のミサイル弾道

7月4日に発射された北朝鮮曰く大陸間弾道ミサイル(ICBM)という飛翔体は朝鮮半島北西部の平安北道の亀城辺りから発射され東に930km飛んで日本海に落ちたとされる。飛行時間は40分、最高高度は2,800kmという。
今回はほぼ真上に打ち上げているので地球表面上の距離では930kmしか飛んでいないことになるが最適な角度で撃ち上げればアラスカまで届くのではないかと言われている。
ところで、高度2,800kmって書かれるとちょっとピンとこない。
地球の平均半径が6,371kmということなのでそれの半分に少し届かない程度。
やっぱりピンとこない。

7月4日の北朝鮮ミサイル

Google Earthで発射地点と着弾地点を結び、高度2,800kmのパスを作成。これで弾道の枠ができる。
画像エディタで別の地球画像とGoogle Earthの地球を重ねて位置を合わせる。
画像エディタで先程作成した枠に嵌まるように放物線を追加。(ちょっと放物線が斜めってる感じになったのはご愛嬌)

発射地点と着弾地点はテレビの報道レベルで作ってるから正確じゃないけど大体こんな感じでしょ。

日本に撃ってくるなら今回のミサイルよりも一回り以上射程の短いものを使うだろうけどロフテッド軌道であれば結局飛んでくるのは真上からということになる。しかも超音速なので近くに飛んできたら音もなく気付かずにいきなりピカorドカンだわね。
何にしても本当に人の居る方に撃ってくるほど愚かでないことを祈るしかない。

この記事と画像の作成中に間違って公開してたみたい。オミグルシイモノを出してスンマセン

Up