dovecot を sieve に対応させるための Pigeonhole で Sieve scripts を LDAP から読み込む機能が昨年の10月末に追加されたので試してみた。
+ Implemented storage driver for retrieving Sieve scripts from LDAP.
This currently cannot be used with ManageSieve.
NaN.
###前提条件
- dovecot 2.2.15 が /usr/local/dovecot 以下にインストールされている
- dovecotの設定ファイルは /etc/dovecot 以下から読み込む
- メールの配送プロトコルに LMTP を使用している
####1. pigeonholeのインストール
pigeonholeのインストール
$ tar xzf dovecot-2.2-pigeonhole-0.4.6.tar.gz && cd dovecot-2.2-pigeonhole-0.4.6
$ ./configure --prefix=/usr/local/dovecot --with-dovecot=/usr/local/dovecot/lib/dovecot -with-ldap=plugin
$ make
$ su
# make install
####2. Sieve script を ldap に追加
下記は、メールヘッダーのFromに hogehoge@ が含まれていた場合、hogehogeというMailBOXに保存するという sieve script を書いたldifファイル
dn: uid=test,ou=People,dc=test,dc=com
changetype: modify
replace: storeSieveScript
storeSieveScript: require "fileinto";
if address :contains "From" "hogehoge@" {
fileinto "hogehoge";
stop;
}
LDAPに設定反映
# ldapmodify -x -W -D "cn=admin,dc=test,dc=com" -f sieve_rule.ldif
Enter LDAP Password:
modifying entry "uid=test,ou=People,dc=test,dc=com"
LDAPの確認
# ldapsearch -x -b "dc=test,dc=com" mailroutingaddress=test@test.com storeSieveScript
dn: uid=test,ou=People,dc=test,dc=com
storeSieveScript:: cmVxdWlyZSAiZmlsZWludG8iO2lmIGFkZHJlc3MgOmNvbnRhaW5zICJGcm9
tIiAiaG9nZWhvZ2VAIiB7CWZpbGVpbnRvICJob2dlaG9nZSI7CXN0b3A7fQ==
sieve scriptルールはMIMEエンコードされて保存される
####3. dovecot に ldap に保存された sieve ルールを読み込む設定を追加
ldapから読み込むルールを追加
plugin {
sieve = ldap:/etc/dovecot/sieve-ldap.conf.ext
sieve_plugins = sieve_storage_ldap
}
sieveルールをldapsearchする為の設定ファイル
hosts = 127.0.0.1
base = dc=%Dd
sieve_ldap_script_attr = storeSieveScript
sieve_ldap_filter = (mailRoutingAddress=%u)
dovecotの再起動
# systemctl restart dovecot
####4. 配送テスト
telnetでテストメール配送
# telnet 127.0.0.1 2003
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 test.com Dovecot ready.
LHLO localhost
250-test.com
250-8BITMIME
250-ENHANCEDSTATUSCODES
250 PIPELINING
mail from:<test@test.com>
250 2.1.0 OK
rcpt to:<test@test.com>
250 2.1.5 OK
data
354 OK
Subject: sieve test mail
From: hogehoge@test.com
To: test@test.com
Message-ID: <123@test.com>
This is test mail.
.
250 2.0.0 <test@test.com> UVn7HvA6qVTbRAAAo+CWOA Saved
quit
221 2.0.0 OK
Connection closed by foreign host.
ログから INBOX ではなく hogehoge に配送されたことを確認
Jan 4 22:12:58 test1 dovecot: lmtp(test@test.com): UVn7HvA6qVTbRAAAo+CWOA: sieve: msgid=<123@test.com>: stored mail into mailbox 'hogehoge'
配送先の hogehoge メールボックスはメール配送前に作成しておく必要がある。