前回の続き。
Courier-authlibやCourier-IMAPを利用していたこともあって、着信したメールをメールボックスへの配送するのにこれまでmaildropを利用していた。(MTAはpostfix)
今回、Courier-IMAPからDovecotに変更するにあたって、できればCourierシリーズを一掃したいと思ったのだが、それをするとmaildropが使えなくなることが判った。少なくともCourier-authlib, Courier-unicodeあたりを残さなくてはならないみたい。でも、消し去りたい。
と、するとメールボックスへの配送をmaildrop以外の何かに変えるしかない。
結局の所、DovecotにしたのだからLMTPにすることに。
Postfixの設定変更
まずはPostfix側、変更箇所は多くはない。
/usr/local/etc/postfix/main.cf1 2 3 | virtual_transport = maildrop #削除
virtual_transport = lmtp:unix:private/dovecot-lmtp #追加
dovecot_destination_recipient_limit = 1 #既にあるならそのまま
|
private/dovecot-lmtpというのは/var/spool/postfix/private/dovecot-lmtpのこと。
dovecot-lmtpはこの時点では存在していなくても問題ない。 /var/spool/postfix/private ディレクトリは既にpostfixで運用しているのに存在しないとおかしい。(FreeBSDのpkg/portsでインストールした場合の構成)
/var/spool/postfix/private/lmtpが存在していたとしてもそれは無視。
1 2 | dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/deliver -f ${sender} -d ${recipient}
|
2行追加する。
Dovecotの設定変更
/usr/local/etc/dovecot/conf.d/10-master.conf1 2 3 4 5 6 7 | service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0660
user = postfix
# group = postfix
}
}
|
1 2 3 4 | protocol lmtp {
# postmaster_address = postmaster@example.org
mail_plugins = $mail_plugins sieve
}
|
1 2 3 4 5 | plugin {
sieve = ~/.dovecot.sieve
sieve_global_path = /usr/local/etc/dovecot/sieve/default.sieve
sieve_dir = ~/sieve
}
|
上で指定した/usr/local/etc/dovecot/sieve/default.sieveを用意する。
# mkdir /usr/local/etc/dovecot/sieve//usr/local/etc/dovecot/sieve/default.sieve
1 2 3 4 5 6 | require ["fileinto"];
# rule:[Spam]
if header :contains "X-Spam" "yes" {
fileinto "INBOX.Spam";
stop;
}
|
Rspamdなどでスパムメール判定を行っているなら配送しようとしているメールのメールヘッダにX-Spamなどがある筈。
上の例ではX-Spam : yesというヘッダが存在したらユーザーのメールボックスにあるSpamフォルダに配送する。そこで配送完了とする。
1 2 3 4 5 6 7 8 | #userdb { #無効化
# driver = prefetch #無効化
#} #無効化
userdb { #有効化
driver = static #有効化
args = uid=vmail gid=vmail home=/mail/%d/%u #有効化
}
|
利用開始
# service postfix restart # service dovecot restart
/usr/local/etc/dovecot/sieve/default.svbinが自動作成される筈なので存在を確認する。
PostfixとDovecotのログでエラーが発生していないことを確認する。
外部からメールを送信してメールボックスに配送されることを確認する。スパムメールがSpamフォルダに入ることも。ただし、Spamフォルダが存在しない場合は通常のメールとしてInboxに配送される。