1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Dovecot で Sieve scripts を LDAP から読み込む

Last updated at Posted at 2015-01-04

dovecot を sieve に対応させるための Pigeonhole で Sieve scripts を LDAP から読み込む機能が昨年の10月末に追加されたので試してみた。

release_note抜粋
+ 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 に追加


下記は、メールヘッダーのFromhogehoge@ が含まれていた場合、hogehogeというMailBOXに保存するという sieve script を書いたldifファイル

sieve_rule.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から読み込むルールを追加

/etc/dovecot/conf.d/90-sieve.conf
plugin {
  sieve = ldap:/etc/dovecot/sieve-ldap.conf.ext
  sieve_plugins = sieve_storage_ldap
}

sieveルールをldapsearchする為の設定ファイル

/etc/dovecot/sieve-ldap.conf.ext
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 メールボックスはメール配送前に作成しておく必要がある。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?