Cyrus IMAP 2.3.13


1. Cyrus SASLライブラリのインストール

portsを使ってインストールします。

# portinstall /usr/ports/security/cyrus-sasl2
# portinstall /usr/ports/net/openldap23-sasl-client
# portinstall /usr/ports/security/cyrus-sasl2-saslauthd
# portinstall /usr/ports/mail/cyrus-imapd23

2. /usr/local/etc/cyrus.confの編集

デフォルトのまま使います。

# standard standalone server implementation

START {
  # do not delete this entry!
  recover       cmd="ctl_cyrusdb -r"

  # this is only necessary if using idled for IMAP IDLE
#  idled                cmd="idled"
}

# UNIX sockets start with a slash and are put into /var/imap/socket
SERVICES {
  # add or remove based on preferences
  imap          cmd="imapd" listen="imap" prefork=0
  imaps         cmd="imapd -s" listen="imaps" prefork=0
  pop3          cmd="pop3d" listen="pop3" prefork=0
  pop3s         cmd="pop3d -s" listen="pop3s" prefork=0
  sieve         cmd="timsieved" listen="sieve" prefork=0

  # these are only necessary if receiving/exporting usenet via NNTP
#  nntp         cmd="nntpd" listen="nntp" prefork=0
#  nntps                cmd="nntpd -s" listen="nntps" prefork=0

  # at least one LMTP is required for delivery
#  lmtp         cmd="lmtpd" listen="lmtp" prefork=0
  lmtpunix      cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0

  # this is required if using notifications
#  notify       cmd="notifyd" listen="/var/imap/socket/notify" proto="udp" prefork=1
}

EVENTS {
  # this is required
  checkpoint    cmd="ctl_cyrusdb -c" period=30

  # this is only necessary if using duplicate delivery suppression,
  # Sieve or NNTP
  delprune      cmd="cyr_expire -E 3" at=0400

  # this is only necessary if caching TLS sessions
  tlsprune      cmd="tls_prune" at=0400
}

3. /usr/local/etc/imapd.confの編集

admins: cyrusadmin
configdirectory: /var/imap
partition-default: /var/spool/imap
sasl_pwcheck_method: saslauthd
#sasl_pwcheck_method: auxprop
sasl_auxprop_plugin: sasldb
sasl_ldapdb_uri: ldap://127.0.0.1
unixhierarchysep: yes
sievedir: /var/imap/sieve
sieveusehomedir: true
tls_ca_path: /usr/local/etc/cert
tls_ca_file: /usr/local/etc/cert/cacert.pem
tls_cert_file: /usr/local/etc/cert/server.pem
tls_key_file: /usr/local/etc/cert/server.key

4. PKI証明書の用意

CA証明書とサーバー証明書を用意します。

# cp cacert.pem /usr/local/etc/cert
# cp server.pem /usr/local/etc/cert
# cp server.key /usr/local/etc/cert
# chmod 640 /usr/local/etc/cert/server.key
# chgrp pki /usr/local/etc/cert/server.key
# cd /usr/local/etc/cert
# ln -s cacert.pem `openssl x509 -hash -noout -in cacert.pem`.0

5. Sendmailの設定

sendmail.mcに以下を追加します。

define(`confLOCAL_MAILER',`cyrusv2')dnl
define(`CYRUSV2_MAILER_ARGS', `FILE /var/imap/socket/lmtp')dnl

sendmail.cfを作り直します。

# cd /etc/mail
# make sendmail.cf

6. ディレクトリ作成

# /usr/local/cyrus/bin/mkimap
# chmod 750 /var/spool/imap

管理ユーザ作成

# /usr/local/sbin/saslpasswd2 -c cyrusadmin
Password: *******
Again (for verification): ******

7. 起動

/etc/rc.confに以下を追加します。

sendmail_enable="YES"
saslauthd_enable="YES"
cyrus_imapd_enable="YES"

各daemonを起動します。

# /etc/rc.d/sendmail stop
# /etc/rc.d/sendmail start
# /usr/local/etc/rc.d/saslauthd start
# /usr/local/etc/rc.d/imapd start

8. ユーザスプール作成

管理ユーザになる前に認証方式を切り替えておきます。

# vi /usr/local/etc/imapd.conf

- sasl_pwcheck_method: saslauthd
+ sasl_pwcheck_method: auxprop

# /usr/local/etc/rc.d/imapd restart

管理モードに入ってユーザメールボックスを作成します。

# cyradm --user cyrusadmin --auth plain localhost
Password: ******
localhost> cm user/hiraga
localhost> quit

認証方式を戻します。

# vi /usr/local/etc/imapd.conf

- sasl_pwcheck_method: auxprop
+ sasl_pwcheck_method: saslauthd

# /usr/local/etc/rc.d/imapd restart

参考