ソースからビルドしたDovecotにpigeonholeを入れる
- 2023/04/05
- aikawa
以前Dovecotをソースからビルドしましたが、dnfでdovecot-pigeonholeを入れても(当然)動かなかったので、別途入れる事にしました。
https://pigeonhole.dovecot.org/download.html
こちらから安定版リリースを取得。
いつの間にか、pigeonholeとmanagesieveが一つのパッケージにまとまっていました。
make
デフォルトで/usr/localに入るようで、configureでディレクトリ指定のオプションは不要でした。
tar xzf dovecot-2.3-pigeonhole-0.5.20.tar.gz
cd dovecot-2.3-pigeonhole-0.5.20/
./configure
make
make installDovecot 設定
/usr/local/share/doc/dovecot/example-config/conf.d/ にsieveのconfが出来るので、sieve関連のファイルを/usr/local/etc/dovecot/conf.d/へコピーします。
cp /usr/local/share/doc/dovecot/example-config/conf.d/*sieve*.conf /usr/local/etc/dovecot/conf.d/- 20-managesieve.conf
以下のコメント化を解きます。
protocols = $protocols sieve
service managesieve-login{
inet_listener sieve {
port = 4190
}
}
service managesieve{
}90-sieve.confはデフォルトのままで動作するので、編集不要です。
LMTP配信
以下、sieveがLMTPで動作するように設定します。
- 10-master.conf
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}今回はRoundCubeへログインするアカウントが、メールアドレス形式(yamada@virtual.localdomain 等)なので不要ですが、ユーザ名のみ(yamada 等)の場合はauth_username_format = %nを設定します。
※下手に設定するとログイン出来なくなります。
- 20-lmtp.conf
postmasterは実在するユーザの誰かを指定します。
protocol lmtp {
postmaster_address = yamada@virtual.localdomain
mail_plugins = $mail_plugins sieve
}編集が終わったら、リロードします。
doveadm reloadPostfix
- /etc/postfix/main.cf
virtualユーザを対象にします。
virtual_transport = lmtp:unix:private/dovecot-lmtpRoundCube
- config/config.inc.php
pluginsにmanagesieveを追加します。
$config['plugins'] = ['acl', 'managesieve'];RoundCubeも同じサーバで動作しているので、plugins側の設定ファイルはなくても動作しますが、一応設定ファイルをコピーしておきます。
cp -p plugins/managesieve/config.inc.php.dist plugins/managesieve/config.inc.phpサーバが異なる場合は、managesieve_hostを変更して下さい。
RoundCubeにログインして設定を開くと、フィルターが追加されています。

動作するか確認するため作成を押して、件名 Subjectに「test」が含まれていたらtestフォルダへ移動させてみます。

これで自分宛に件名を「test」を含んだメールを送って、テストフォルダへ到達していれば完了です。
