Cyrus-IMAP

更新日2010-10-25 (月) 11:33:09

IMAPサーバのCyrus-IMAPをrpmでインストール。

Cyrus-IMAPはCourier-IMAPと比べユーザの認証をlogin認証と分離することができる。

rpmで必要なパッケージのインストール

# apt-get install cyrus-imapd cyrus-imapd-utils cyrus-sasl cyrus-sasl-plain cyrus-sasl-md5 perl-Cyrus

環境設定

sieveというシステムでメールを振り分ける。ユーザーのホームディレクトリに.sieveというファイルを作成して利用する方式とサーバにスクリプトおいて振り分ける方式の2種類があるが、今回はユーザーのホームディレクトリに.sieveというファイルを作成して利用する方式で行う。
認証方式もいろいろあるがOutLookExpressで利用できるようにするにはプレーンテキスト形式にも対応できるように設定

/etc/imapd.conf

#Cyrus IMAP Serverが各種管理用ファイルを置くディレクトリ
configdirectory: /var/lib/imap

# ユーザーのメールの保管場所
partition-default: /var/spool/imap

管理者ユーザー
##admins: cyrus
admins: cyrus-admin

#/home/USER/.sieve でメールの振り分け処理
sieveusehomedir: true
##sievedir: /var/lib/imap/sieve  

sendmail: /usr/sbin/sendmail
hashimapspool: true

# =======================================
#サーバにスクリプトおいて振り分ける方式
# sieveスクリプトの保管場所
# sievedir: /var/lib/imap/sieve
# =======================================

# 認証方法の指定。
##sasl_pwcheck_method: saslauthd
sasl_pwcheck_method: auxprop  <==これを選択(activemail,OutLookExpressはこれが必要)
##sasl_pwcheck_method: sasldb
sasl_mech_list: PLAIN, cram-md5, digest-md5
 
# TLS関係の設定 
tls_cert_file: /usr/share/ssl/certs/cyrus-imapd.pem
tls_key_file: /usr/share/ssl/certs/cyrus-imapd.pem
tls_ca_file: /usr/share/ssl/certs/ca-bundle.crt

変更後

# /etc/rc.d/init.d/cyrus-imapd start

で起動

その他プレーンテキスト認証は/usr/lib/sasl2/smtpd.confに「pwcheck_method: auxprop」を追加ともあるが、imap.confで指定したらいらなかった。

popやその他のサービスをコントロール

/etc/cyrus.confに起動させるサービスが記入されているので必要に応じ編集するがとえいあえずデフォルトで行う

ユーザの登録

ユーザーの追加/パスワード変更 : saslpasswd2 ユーザー名
ユーザーの削除 : saslpasswd2 -d ユーザー名
ユーザーの一覧表示 : sasldblistusers2
# /usr/sbin/saslpasswd2 okada
Password:
Again (for verification):

管理者ユーザー(imap.confで定義した)の登録(必須)

# /usr/sbin/saslpasswd2 cyrus-admin
Password:
Again (for verification):

ユーザ一覧

# /usr/sbin/sasldblistusers2
okada@localhost.localdomain: userPassword
cyrus-admin@localhost.localdomain: userPassword

ユーザがいないときは

listusers failed

と表示される

注)ユーザ登録時に/var/log/messagesに以下のエラーが出る(原因不明)

Sep 21 17:37:11 localhost saslpasswd2: setpass succeeded for okada
Sep 21 17:37:11 localhost saslpasswd2: error deleting entry from sasldb:
DB_NOTFOUND: No matching key/data pair found

メールボックスの管理

メールボックスの作成 このとき、/etc/sasldb2にアクセス権がないと「セグメンテーション違反」のエラーが出るので、オーナーの変更を行う

# chown cyrus. /etc/sasldb2

adminでloginして、メールボックスを作成

$ cyradm --user cyrus-admin localhost
Password:
localhost.localdomain> cm user.okada
localhost.localdomain> lm     <=メールボックスの確認
user.okada (\HasNoChildren)

/var/spool/imap/o/user/okadaというmboxのディレクトリが作成される

注) imap.confでsasl_mech_list:にPLAINのみしか指定していないと以下のようなエラーが出るので注意

$ cyradm --user cyrus-admin localhost
IMAP Password:
              Login failed: no mechanism available at /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/Cyrus/IMAP/Admin.pm  line 118
cyradm: cannot authenticate to server with  as admin

メールボックスのバックアップ

/var/spool/imap/o/user/okadaを適当な名前に移動し、一度メールボックスを削除し、再度作成する。

# cd /var/spool/imap/o/user/
# cp -a okada okada.xxxxxx
$ cyradm --user cyrus-admin localhost
Password:
localhost.localdomain> lm
user.okada.JunkMail (\HasNoChildren)  user.mailuser (\HasNoChildren)
user.okada.Sent (\HasNoChildren)      user.okada (\HasChildren)
user.okada.Trash (\HasNoChildren)     user.okada.Drafts (\HasNoChildren)
localhost.localdomain> dm user.okada
deletemailbox: Permission denied

そもままでは削除できないので、以下のコマンドで書き込み権限を与える

localhost.localdomain> sam user.okada cyrus-admin write
localhost.localdomain> dm user.okada
localhost.localdomain> lm
user.mailuser (\HasNoChildren)
localhost.localdomain> cm user.okada

postfixの変更

main.cf

#mailbox_transport = lmtp:unix:/file/name
#mailbox_transport = cyrus
mailbox_transport = cyrus
#fallback_transport = lmtp:unix:/file/name
#fallback_transport = cyrus
fallback_transport = cyrus
#fallback_transport =

master.cf

cyrus     unix  -       n       n       -       -       pipe
##  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
  user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}

Postfixを再起動

.sieve でメールの振り分け

.sieve でメールの振り分けを行うにはホームディレクトリに振り分けルールを書いた.sieveを置くが、これはルールを書いたサンプルをコンパイルしてバイナリで置く必要がある。

sieve.srcのサンプル

# ファイル操作拡張機能の読み込み
require "fileinto";

# SpamAssassinでSPAMと判定されメールをSPAMフォルダへ移動
if header :is "X-Spam-Flag" "YES" {
    fileinto "INBOX.SPAM";
}

コンパイル

$ /usr/lib/cyrus-imapd/sievec sieve.src ~/.sieve

参考

STLのキー作成

SSLと同じように作成

# cd /usr/share/ssl/certs
# ls
Makefile  ca-bundle.crt  cyrus-imapd.pem  make-dummy-cert
# make server.key
umask 77 ; \
/usr/bin/openssl genrsa -des3 1024 > server.key
Generating RSA private key, 1024 bit long modulus
...........++++++
................++++++
e is 65537 (0x10001)
Enter pass phrase: *******
Verifying - Enter pass phrase: ********
# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: ******
writing RSA key
# ls
Makefile  ca-bundle.crt  cyrus-imapd.pem  make-dummy-cert  server.key

# make server.csr
umask 77 ; \
/usr/bin/openssl req -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Mie Pref.
Locality Name (eg, city) []:Ise
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ISM
Organizational Unit Name (eg, section) []:ISM
Common Name (eg, YOUR name) []:ISM
Email Address []:okada@localhost

Please enter the following 'extra' attributes 
to be sent with your certificate request
A challenge password []:  <===Enter
An optional company name []:  <===Enter
# openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 365
Signature ok
subject=/C=JP/ST=Mie Pref./L=Ise/O=ISM/OU=ISM/CN=ISM/emailAddress=okada@localhost
Getting Private key
# ls
Makefile       cyrus-imapd.pem  server.csr  server.pem
ca-bundle.crt  make-dummy-cert  server.key

参考ページ

cyrus-imapを使ってみよう


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-10-25 (月) 11:33:09 (2678d)