Rspamdの判定による動作
Rspamdで判定されたメールは、主に
1)問題ないメール(緑部分)
2)問題のあるメール(黄色部分)
3)怪しいメール(青部分)
4)疑いの無いスパム(迷惑メール)(赤部分)
という4つに分類されます。
デフォルトの設定では、
1)の問題無いメールは、「通常通り受信」されます。
2)の問題のあるメールは、「メールのヘッダに情報を付加」して、受信します。
3)の怪しいメールは、「一定の時間受信しないようにする」などの処置を行います。
4)疑いの無いスパム(迷惑メール)は、受信されずに、「送信者に返送」されます。
メールの配送を振り分ける。
上記の黄色の部分「2)問題のあるメール」に分類されたもののうち、「迷惑メールであることが濃厚」なメールは、「別フォルダ」に移動させたいと思います。
別フォルダに移動したメールは、WEBからログインできる、「Rainloop」でログインしてチェックすることができるようにしたいと思います。
SpamAssasin時代は、「maildrop」というツールを使っていましたが、今回、
dovecotの拡張機能である「Pigeonhole」という機能で補完ができ、「sieve」という言語で、ローカル配送を振り分けたいと思います。
Pigeonhole、Sieve Support for Dovecot
メール振り分け言語である「sieve」を実装した、「Pigeonhole」をインストールします。
Dovecot本体をソースからインストールしているので、Pigeonholeもソースから入れたいと思います。
「pigeonhole」インストール
# wget https://pigeonhole.dovecot.org/releases/2.3/dovecot-2.3-pigeonhole-0.5.7.1.tar.gz
# tar xzvf dovecot-2.3-pigeonhole-0.5.7.1.tar.gz
# cd dovecot-2.3-pigeonhole-0.5.7.1
# ./configure --with-dovecot=/usr/lib/dovecot/
# wget https://pigeonhole.dovecot.org/releases/2.3/dovecot-2.3-pigeonhole-0.5.7.1.tar.gz
# tar xzvf dovecot-2.3-pigeonhole-0.5.7.1.tar.gz
# cd dovecot-2.3-pigeonhole-0.5.7.1
# ./configure --with-dovecot=/usr/lib/dovecot/
# make
# make install
# wget https://pigeonhole.dovecot.org/releases/2.3/dovecot-2.3-pigeonhole-0.5.7.1.tar.gz
# tar xzvf dovecot-2.3-pigeonhole-0.5.7.1.tar.gz
# cd dovecot-2.3-pigeonhole-0.5.7.1
# ./configure --with-dovecot=/usr/lib/dovecot/
# make
# make install
↑「Pigeonhole」をインストールします。
「pigeonhole」設定
# cp /usr/share/doc/dovecot/example-config/conf.d/90-sieve.conf /etc/dovecot/conf.d/
# cp /usr/share/doc/dovecot/example-config/conf.d/90-sieve.conf /etc/dovecot/conf.d/
# cp /usr/share/doc/dovecot/example-config/conf.d/90-sieve.conf /etc/dovecot/conf.d/
↑Dovecotの設定ファイルをコピーします。
# vi /etc/dovecot/conf.d/90-sieve.conf
#sieve_default = /var/lib/dovecot/sieve/default.sieve
sieve_default = /var/lib/dovecot/sieve/default. sieve
# vi /etc/dovecot/conf.d/90-sieve.conf
#sieve_default = /var/lib/dovecot/sieve/default.sieve
↓
sieve_default = /var/lib/dovecot/sieve/default.sieve
# vi /etc/dovecot/conf.d/90-sieve.conf
#sieve_default = /var/lib/dovecot/sieve/default.sieve
↓
sieve_default = /var/lib/dovecot/sieve/default.sieve
↑デフォルトの設定を有効にします。
# mkdir -p /var/lib/dovecot/sieve/
# vi /var/lib/dovecot/sieve/default.sieve
-------------------------------------------------
require [ "fileinto" , "reject" ] ;
if header :contains [ "X-Spam" ] "spam" {
if header :contains [ "X-Spam-Flag" ] "YES" {
if header :contains [ "X-Spam-Status" ] "YES" {
-------------------------------------------------
# mkdir -p /var/lib/dovecot/sieve/
# vi /var/lib/dovecot/sieve/default.sieve
-------------------------------------------------
require ["fileinto", "reject"];
if header :contains ["X-Spam"] "spam" {
fileinto "Junk";
stop;
}
if header :contains ["X-Spam-Flag"] "YES" {
fileinto "Junk";
stop;
}
if header :contains ["X-Spam-Status"] "YES" {
fileinto "Junk";
stop;
}
-------------------------------------------------
# mkdir -p /var/lib/dovecot/sieve/
# vi /var/lib/dovecot/sieve/default.sieve
-------------------------------------------------
require ["fileinto", "reject"];
if header :contains ["X-Spam"] "spam" {
fileinto "Junk";
stop;
}
if header :contains ["X-Spam-Flag"] "YES" {
fileinto "Junk";
stop;
}
if header :contains ["X-Spam-Status"] "YES" {
fileinto "Junk";
stop;
}
-------------------------------------------------
↑メールのヘッダ情報に「Spam」が「Yes」となったものを「Junk」フォルダに移動させる記述です。
「Junk」は、
vi /etc/dovecot/conf. d / 15 -mailboxes. conf
--------------------------
--------------------------
vi /etc/dovecot/conf.d/15-mailboxes.conf
--------------------------
mailbox Junk {
special_use = \Junk
}
--------------------------
vi /etc/dovecot/conf.d/15-mailboxes.conf
--------------------------
mailbox Junk {
special_use = \Junk
}
--------------------------
で、指定する、mailboxと一致しなければいけません。
vi /etc/dovecot/conf. d / 15 -mailboxes. conf
--------------------------
--------------------------
vi /etc/dovecot/conf.d/15-mailboxes.conf
--------------------------
mailbox Junk {
special_use = \Junk
}
↓
mailbox Junk {
special_use = \Junk
auto = subscribe
}
--------------------------
vi /etc/dovecot/conf.d/15-mailboxes.conf
--------------------------
mailbox Junk {
special_use = \Junk
}
↓
mailbox Junk {
special_use = \Junk
auto = subscribe
}
--------------------------
↑と、Junkフォルダを自動生成するようにします。
# chown -R vuser.vuser sieve
# cd /var/lib/dovecot
# chown -R vuser.vuser sieve
# cd /var/lib/dovecot
# chown -R vuser.vuser sieve
↑sieveのデフォルト設定の権限関係を調整します。
振り分けのサンプルは、
dovecot-2.3-pigeonhole-0.5.7.1/examples/
以下にあります。
https://wiki2.dovecot.org/Pigeonhole/Sieve
には、機能一覧の説明があります。
「pigeonhole」個別の設定
vi /etc/dovecot/conf. d / 90 -sieve. conf
vi /etc/dovecot/conf.d/90-sieve.conf
sieve = file:~/sieve
vi /etc/dovecot/conf.d/90-sieve.conf
sieve = file:~/sieve
↑上記を有効にします。
この設定は、デフォルトの設定は、
/var/lib/dovecot/sieve/default.sieve
で行うようにしたが、メールアドレス毎の設定を、Maildir以下の「sieve」ファイルで設定可能にするものです。
つまり
/mail/ドメイン/@の左/
のフォルダに
に「sieve」のファイルがあると、この設定が優先されます。
「sieve」のファイルは、「vuser.vuser」にします。
dovecot その他設定
vi /etc/dovecot/dovecot. conf
#base_dir = /var/run/dovecot/
base_dir = /var/run/dovecot/
unix_listener stats-reader {
unix_listener stats-writer {
vi /etc/dovecot/dovecot.conf
#base_dir = /var/run/dovecot/
↓
base_dir = /var/run/dovecot/
service stats {
unix_listener stats-reader {
user = vuser
group = vuser
mode = 0660
}
unix_listener stats-writer {
user = vuser
group = vuser
mode = 0660
}
}
vi /etc/dovecot/dovecot.conf
#base_dir = /var/run/dovecot/
↓
base_dir = /var/run/dovecot/
service stats {
unix_listener stats-reader {
user = vuser
group = vuser
mode = 0660
}
unix_listener stats-writer {
user = vuser
group = vuser
mode = 0660
}
}
↑上記を加える
# mkdir /var/run/dovecot/
# mkdir /var/run/dovecot/
# mkdir /var/run/dovecot/
# vi /etc/dovecot/conf.d/15-lda.conf
-------------------------
# Space separated list of plugins to load (default is global mail_plugins).
#mail_plugins = $mail_plugins
# Space separated list of plugins to load (default is global mail_plugins).
# vi /etc/dovecot/conf.d/15-lda.conf
-------------------------
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
#mail_plugins = $mail_plugins
}
↓
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = sieve
}
# vi /etc/dovecot/conf.d/15-lda.conf
-------------------------
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
#mail_plugins = $mail_plugins
}
↓
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = sieve
}
postfix設定
virtual_transport = virtual
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
vi /etc/postfix/main.cf
virtual_transport = virtual
↓
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
vi /etc/postfix/main.cf
virtual_transport = virtual
↓
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
↑「virtual」の配送から「dovecot」に変更をします。
vi /etc/postfix/master. cf
-------------------------------------------
dovecot unix - n n - - pipe
flags=DRhu user=vuser:vuser argv=/usr/libexec/dovecot/dovecot-lda -f $ { sender } -d $ { recipient }
vi /etc/postfix/master.cf
-------------------------------------------
dovecot unix - n n - - pipe
flags=DRhu user=vuser:vuser argv=/usr/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}
vi /etc/postfix/master.cf
-------------------------------------------
dovecot unix - n n - - pipe
flags=DRhu user=vuser:vuser argv=/usr/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}
↑上記を追加します。
-f は、送信元アドレス。
「${sender}」は、エンベロープの送信元アドレス
-d は、宛先アドレス。「${recipient}」は、受信者アドレス。
postfix再起動後、
ログにおいて
postfix/virtual [ XXXXX ] : to= < (メールアドレス) > , relay=virtual, delay= 0.57 , delays= 0.57 / 0 / 0 / 0 , dsn= 2.0 . 0 , status= sent ( delivered to maildir )
postfix/virtual[XXXXX]: to=<(メールアドレス)>, relay=virtual, delay=0.57, delays=0.57/0/0/0, dsn=2.0.0, status=sent (delivered to maildir)
postfix/virtual[XXXXX]: to=<(メールアドレス)>, relay=virtual, delay=0.57, delays=0.57/0/0/0, dsn=2.0.0, status=sent (delivered to maildir)
と、「relay=virtual」
となっている箇所が、
postfix/pipe [ XXXXX ] : to= < (メールアドレス) > , relay=dovecot, delay= 0.92 , delays= 0.85 / 0.01 / 0 / 0.07 , dsn= 2.0 . 0 , status= sent ( delivered via dovecot service )
postfix/pipe[XXXXX]: to=<(メールアドレス)>, relay=dovecot, delay=0.92, delays=0.85/0.01/0/0.07, dsn=2.0.0, status=sent (delivered via dovecot service)
postfix/pipe[XXXXX]: to=<(メールアドレス)>, relay=dovecot, delay=0.92, delays=0.85/0.01/0/0.07, dsn=2.0.0, status=sent (delivered via dovecot service)
と、「relay=dovecot」
となっていて、迷惑メールフォルダに振り分けられたら、成功!
Rspamd変更
# vi /etc/rspamd/local.d/actions.conf
# vi /etc/rspamd/local.d/actions.conf
greylist = null;
# vi /etc/rspamd/local.d/actions.conf
greylist = null;
↑今回、greylistのモジュールは、無効にします。
迷惑メールの振り分け 結果
これで、
1)問題ないメール(緑部分)
2)問題のあるメール(黄色部分)(今回、迷惑メールフォルダに振り分け)
3)怪しいメール(青部分)(この「greylist」は、今回設定しない)
4)疑いの無いスパム(迷惑メール)(赤部分)
と、上記、2)のメールが、「迷惑メールフォルダ」に振り分けられました。
/mail/(ドメイン)/(@より左)/
には、正常メール
/mail/(ドメイン)/(@より左)/.Junk/
には、迷惑メールに入ります。
そもそも、「疑いの無いスパム」は、排除されます。この、Rspamのフィルタにより、迷惑メールを受信する日常から解放されると思います。