前回の続き。
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.cfvirtual_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が存在していたとしてもそれは無視。
/usr/local/etc/postfix/master.cf
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.confservice lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0660 user = postfix # group = postfix } }
/usr/local/etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp { # postmaster_address = postmaster@example.org mail_plugins = $mail_plugins sieve }
/usr/local/etc/dovecot/conf.d/90-plugin.conf
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
require ["fileinto"]; # rule:[Spam] if header :contains "X-Spam" "yes" { fileinto "INBOX.Spam"; stop; }
Rspamdなどでスパムメール判定を行っているなら配送しようとしているメールのメールヘッダにX-Spamなどがある筈。
上の例ではX-Spam : yesというヘッダが存在したらユーザーのメールボックスにあるSpamフォルダに配送する。そこで配送完了とする。
/usr/local/etc/dovecot/conf.d/auth-sql.conf.ext
#userdb { #無効化 # driver = prefetch #無効化 #} #無効化 userdb { #有効化 driver = static #有効化 args = uid=vmail gid=vmail home=/mail/%d/%u #有効化 } #有効化
利用開始
# /usr/local/etc/rc.d/postfix restart # /usr/local/etc/rc.d/dovecot restart
/usr/local/etc/dovecot/sieve/default.svbinが自動作成される筈なので存在を確認する。
PostfixとDovecotのログでエラーが発生していないことを確認する。
外部からメールを送信してメールボックスに配送されることを確認する。スパムメールがSpamフォルダに入ることも。ただし、Spamフォルダが存在しない場合は通常のメールとしてInboxに配送される。
関連記事: