Cyrus-imapdのインストールと
実際の運用についてのまとめ

Last Update: 2000/01/02

もくじ

インストールするために必要な環境の構築

Cyrus IMAP Server の Compile と Install

IMAPサーバの設定

sendmail の設定

IMAP サーバの動作テスト

IMAP サーバの管理

参考文献

関連リンク


ドキュメントをしっかりと読みましょう. ドキュメントはソースアーカイブの doc ディレクトリの中にありますが,
最新のものは ftp://ftp.andrew.cmu.edu/pub/cyrus-mail にあります.
( http://asg.web.cmu.edu/cyrus/imapd/ も参考にしてください)

また,インストールについてのFAQは
http://asg.web.cmu.edu/cyrus/imapd/install-FAQ.html
にあるので適宜参考にすると便利です.


インストールした環境とバージョン

Operating System
・ Solaris 7 SPARC 5/99 32bit-kernel (Sun Enterprise 3000)

Cyrus-IMAPD
・ Version 1.6.19 (cyrus-imapd-1.6.19)
Source code は ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/ より取得


インストールするために必要な環境の構築

・ ANSI C Compiler

gcc でコンパイルできる環境が整っていればいいでしょう.
ここでは gcc-2.8.1 を使用しました.

・ GNU make (version 3.77 or later)

make は GNU make (gmake) を使ってください.

ちなみに ld も GNU ld を使用しています.

・ Perl (Version 5)

管理用スクリプトのために必要だそうです.

・ Tcl (version 7.5 or 7.6, or 8.0)

Cyrus-imapd の管理ツール "cyadm" を利用するために必要です.

最新のソースは ftp://ftp.scriptics.com/pub/tcl/ にあります.

インストール終了後,libtcl*.a と libtcl*.so が /usr/local/lib/ にあることを確認してください.

また,次のようにしてリンクをはっておきましょう.

# ln -s /usr/local/lib/libtcl80.a /usr/local/lib/libtcl.a
# ln -s /usr/local/lib/libtcl80.so /usr/local/lib/libtcl.so

・ libdes

SASL の認証で DIGEST-MD5 を利用するためには Solaris の場合 libdes.so が必要です.
多くのメーラは PLAIN や CRAM-MD5 しか使わないので,それらを使う場合は必要あり ません.

標準では libdes.a しか出来ないので,以下のようにして下さい.

  1. 通常どおりインストールを行う

    libdes のソースは ftp://ftp.meiji.ac.jp/pub/security/Crypto/DES/ から入手.
    また http://www.bekkoame.ne.jp/~katsuaki/solaris/libdes-j.html も参照可能.

  2. Makefile をこのように修正
  3. 出来上がった libdes.so.3 を /usr/local/lib にコピー
  4. 以下のコマンドを実行
    # cd /usr/local/lib ; ln -s libdes.so.3 libdes.so
    # cd /usr/lib ; ln -s ../local/lib/libdes.so.3 ./libdes.so

・ BerkeleyDB

Cyrus-IMAPD で Sieve を使う場合,必要と記述されています.
この際なのでインストールしておいたほうがいいでしょう.

・ gdbm + pam_gdbm

SASL で gdbm(GNU DataBase Manager) を利用した,login 用 password とは異なる
独自の password ファイルを利用するために必要.

gdbm は GNU のアーカイブサイトから入手してインストールしてください.

pam_gdbm は,gdbm 用の PAM(Pluggable Authentication Module)ライブラリです.
以下のところから入手し,pam_gdbm.c の冒頭に書いてある下記の手順に従ってください. ftp://pooh.urbanrage.com/pub/c/pam_gdbm-0.5.tar.gz

まず,pam_gdbm.c の 46 行目

#define PAM_GDBM_DEFAULT_FILE "/usr/local/etc/gdbm_passwd"

を以下のように変更します

#define PAM_GDBM_DEFAULT_FILE "/etc/sasldb"

% tar zxf pam_gdbm-0.5.tar.gz
% gcc -fPIC -c pam_gdbm.c
pam_gdbm.c:56: gdbm.h: No such file or directory

上のようになる場合は,pam_gdbm.c の 56 行目

#include /* for me it's here /usr/local/include */

となっているところを

#include "/usr/local/include/gdbm.h"

などと変更してみてください.

% gcc -fPIC -c pam_gdbm.c
% ld -dy -G -o pam_gdbm.so.1 pam_gdbm.o /usr/local/lib/libgdbm.a -lpam
# cp pam_gdbm.so.1 /usr/lib/security
# cd /usr/lib/security; ln -s pam_gdbm.so.1 pam_gdbm.so
# chown root:sys /usr/lib/security/pam_gdbm.so.1
# chown root:root /usr/lib/security/pam_gdbm.so

ここで PAM の設定も済ませておきましょう.

/etc/pam.conf で

rsh auth required /usr/lib/security/pam_rhosts_auth.so.1

という行のすぐあとに

imap auth required /usr/lib/security/pam_gdbm.so.1

という行を加える.

・ libsasl (version 1.5.0 or higher)

cyrus-sasl-1.5.11 をインストールしました.
ソースアーカイブは,cyrus-imapd と同じところにあります.

% tar zxvf cyrus-sasl-1.5.11.tar.gz
% cd cyrus-sasl-1.5.11
% less INSTALL
...
% ./configure --help | less
...
% ./configure --with-dblib=gdbm --with-plugindir=/usr/local/lib/sasl \
--disable-krb4 --with-gnu-ld
% gmake
% su
...
# gmake install

・ Kerberos

認証に Kerberos を使う場合や,AFS (Andrew File System) と併用する場合にのみ必要.

・ Sendmail (version 8.7.1 or later)

Solaris 7 では標準添付のものでも条件を満たしていますので,インストールは行っていません.

インストールの際はソースコード添付のドキュメントを熟読してください.

・ INN

News を IMAP を通して読みたい場合のみ必要.

・ makedepend

Cyrus-imapd ソースアーカイブの makedepend ディレクトリに付属のものを インストール出来るなら,
インストールしておく.

% gtar zxvf cyrus-imapd-1.6.19.tar.gz
% cd cyrus-imapd-1.6.19/makedepend
% ./configure --help | less
% env CFLAGS="-O2 -pipe -s" ./configure
...
% gmake
gcc -c -I. -I. -DHAVE_STDARG_H=1 -O2 -pipe -s cppsetup.c
gcc -c -I. -I. -DHAVE_STDARG_H=1 -O2 -pipe -s ifparser.c
gcc -c -I. -I. -DHAVE_STDARG_H=1 -O2 -pipe -s include.c
gcc -c -I. -I. -DHAVE_STDARG_H=1 -O2 -pipe -s main.c
main.c:153: warning: `sa_handler' redefined
/usr/include/sys/signal.h:183: warning: this is the location of the previous
definition
main.c: In function `main':
main.c:389: invalid use of undefined type `struct sigvec'
main.c:405: invalid use of undefined type `struct sigvec'
main.c:419: invalid use of undefined type `struct sigvec'
main.c: At top level:
main.c:157: storage size of `sig_act' isn't known
make: *** [main.o] Error 1
%
...

make 出来ないので,makedepend/main.c をこのように修正しました.

...
% gmake
gcc -c -I. -I. -DHAVE_STDARG_H=1 -O2 -pipe -s cppsetup.c
gcc -c -I. -I. -DHAVE_STDARG_H=1 -O2 -pipe -s ifparser.c
gcc -c -I. -I. -DHAVE_STDARG_H=1 -O2 -pipe -s include.c
gcc -c -I. -I. -DHAVE_STDARG_H=1 -O2 -pipe -s main.c
gcc -c -I. -I. -DHAVE_STDARG_H=1 -O2 -pipe -s parse.c
gcc -c -I. -I. -DHAVE_STDARG_H=1 -O2 -pipe -s pr.c
gcc -o makedepend cppsetup.o ifparser.o include.o \
main.o parse.o pr.o
% cp makedepend ~/bin
% rehash; which makedepend
/home/username/bin/makedepend

・ Cyrus-IMAPD の動作に必要なユーザの追加

/etc/passwd のエントリは以下の通り.

cyrus:x:70:6:Cyrus IMAP4 Server:/:/usr/local/bin/tcsh
cyrus-admin:x:72:6:Cyrus IMAPD Administrator:/:


Cyrus IMAP Server の Compile と Install

Configure

まず,先ほど cyrus-imapd-1.6.19 を展開したディレクトリに移動し,configure スクリプトを走らせます.

ここでは,デフォルトでは /usr/cyrus としてインストールされるものを /usr/local/cyrus にインストールするように変更し,tclsh を直接指定するなどしています.

% cd (../)cyrus-imapd-1.6.19
% ./configure --with-cyrus-prefix=/usr/local/cyrus --with-tclsh=/usr/local/bin/tclsh8.0
--without-krb --enable-netscapehack --with-gnu-ld

make & Install

% gmake depend
% gmake all
...
...
% su
...
# gmake install
...
...
#


IMAPサーバの設定

/etc/syslog.conf

/etc/syslog.conf に以下のエントリを加えましょう.
local6.debug /var/log/imapd.log
そして,指定したファイル "imapd.log" をつくります.
touch /var/log/imapd.log

/etc/imapd.conf

/etc/imapd.confを作成.例えば内容は以下の様にします.
configdirectory: /var/imap
partition-default: /var/imap-spool
sievedir: /var/sieve
admins: imap-admin
sasl_pwcheck_method: sasldb
そして,上で "configdirectory" として指定したディレクトリをつくります.
cd /var
mkdir imap
chown cyrus:mail imap
chmod 705 imap
同時に,上で "partition-default" として指定したディレクトリも作成します.
cd /var
mkdir imap-spool
chown cyrus:mail imap
chmod 750 imap
また,"seivedir" として指定したディレクトリも作成します.
cd /var
mkdir seive
chown cyrus:mail imap
chmod 750 imap
ここでもう一度,先ほど cyrus-imapd-1.6.19 を展開したディレクトリに移動し,
以下のように実行して残りのディレクトリを /etc/imapd.conf をもとに自動作成します.

!!この手続きを既存のディレクトリにたいしておこなうとメールを失うことになります!!

# su cyrus
# tools/mkimap

/etc/services

/etc/services に以下のエントリを加えます
pop3 110/tcp
imap 143/tcp
imsp 406/tcp
kpop 1109/tcp
sieve 2000/tcp

/etc/inetd.conf

/etc/inetd.conf に以下のように書き加えます
imap stream tcp nowait cyrus /usr/local/cyrus/bin/imapd imapd
同時に POP3 も利用したい場合は,以下のようにも書き加えます
pop3 stream tcp nowait cyrus /usr/local/cyrus/bin/pop3d pop3d
また timsieved も利用したい場合は,以下のようにも書き加えます
sieve stream tcp nowait cyrus /usr/cyrus/bin/timsieved timsieved

以上の設定ができたら,inetd を HUP し再起動します.

# ps ax | grep inetd
158 ?? Is 0:00.06 inetd
# kill -HUP 158

or

# pkill -HUP inetd


sendmail の設定

sendmail.cf への設定

参考となるファイルは,sendmailのソースアーカイブの中の cf/READMEcf/cf/cyrusproto.mc です.

CF を利用する場合

CYRUS_MAILER_PATH と CYRUS_MAILER_UID を設定します.

例えば以下のようにします.

# [cyrus]
# cyrus IMAP mailer handling (supported with V6 cf or later)
# (see http://andrew2.andrew.cmu.edu/cyrus/ to get info. about the cyrus)
# define CYRUS_MAILER_PATH explicitly if you want to use cyrus feature
CYRUS_MAILER_PATH=/usr/local/cyrus/bin/deliver
CYRUS_MAILER_UID='cyrus:mail'
#
#CYRUS_MAILER_ARGS='deliver -m $h -- $u'
##CYRUS_MAILER_ARGS='deliver -e -m $h -- $u'

その他の設定

/etc/group を編集し,"daemon" というユーザを "mail" グループに加えます.
このことにより sendmail が IMAP サーバに対しての「配送」プログラムを起動することが可能になります.


IMAP サーバの動作テスト

まずは動作確認

適宜,/var/log/imapdlog や /var/log/authlog などを見て,エラーメッセージが
出ていないか確認してください.
% telnet hostname imap
Trying 133.27.171.XXX...
Connected to hostname.
Escape character is '^]'.
* OK hostname Cyrus IMAP4 v1.6.19 server ready
. capability
* CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS X-NON-HI
ERARCHICAL-RENAME NO_ATOMIC_RENAME AUTH=DIGEST-MD5 AUTH=PLAIN AUTH=CRAM-MD5
UNSELECT  X-NETSCAPE
. OK Completed
. logout
Connection closed by foreign host.

SASL の動作確認

まずは root になって,先程 /etc/imapd.conf の中で admins に指定したユーザ
(この場合 cyrus-admin)の SASL 用パスワードを設定します.
# /usr/local/sbin/saslpasswd cyrus-admin
Password: 
Again (for verification): 
setting pass
set pass
# 
/etc/sasldb を以下のように変更しました.
# chown cyrus:other /etc/sasldb
そして cyradm が使えるか確認してください.
% cyradm -user cyrus-admin hostname
Please enter your password: 
hostname>  


IMAP サーバの管理

アカウントの追加

cyradm コマンドを実行します.
% cyradm -user cyrus-admin hostname
Please enter your password: 
hostname> cm user.username
以上のコマンドで username の mailbox が作成されます.
コマンドの詳細は下記のドキュメント等をご覧下さい.

同時に saslpasswd でパスワードを設定してください.

# /usr/local/sbin/saslpasswd username
Password: 
Again (for verification): 
setting pass
set pass
# 
あとはメーラなどから正常な動作を確認してください.


参考文献

関連リンク


Copyright (c) 1999, Shun Gondow (gon@ht.sfc.keio.ac.jp) / All Rights Reserved.