Dovecotのインストール 配送をmaildropからDovecot-LMTPに変更

前回の続き。

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.cf
1
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が存在していたとしてもそれは無視。

/usr/local/etc/postfix/master.cf
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.conf
1
2
3
4
5
6
7
service lmtp {
    unix_listener /var/spool/postfix/private/dovecot-lmtp {
        mode = 0660
        user = postfix
#       group = postfix
    }
}
/usr/local/etc/dovecot/conf.d/20-lmtp.conf
1
2
3
4
protocol lmtp {
#   postmaster_address = postmaster@example.org
    mail_plugins = $mail_plugins sieve
}
/usr/local/etc/dovecot/conf.d/90-plugin.conf
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フォルダに配送する。そこで配送完了とする。

/usr/local/etc/dovecot/conf.d/auth-sql.conf.ext
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に配送される。

関連記事: