Cyrus ImapdとOpenLDAPによるメールサーバー構築

酒井 和広

kazuhiro@robios.org

最終更新日: 2002.6.28


概要

この文書は、Linuxサーバー上へ、LDAPをユーザー認証として利用するCyrus IMAPDのインストールとその後の設定について書かれたものです。ご意見、ご感想、ご質問はメールにて筆者までどうぞ。


目次


1. はじめに

この文書は、Linuxサーバー上へ、OpenLDAPをPAMを経由しCyus IMAPDのユーザー認証機構として利用するIMAPメールサーバーのインストールとその後の設定・管理について書かれたものです。筆者の備忘録として執筆したもので多少の間違いを含んでいる可能性があります。インストール並びに設定等は自己責任の元にお願い致します。また、この文書を参照して生じた障害については一切の責任を負いかねますので、事前ご了承下さい。この文書に関するご意見、ご感想、ご質問等はメールにて筆者までお願い致します。また、間違いを発見された方はよろしければ筆者までお知らせ下さい。

1.1. この文書の所在

この文書は、以下のURLに掲載しております。

http://www.robios.org/project/knowledgebase/imap/cyrus-imapd-with-openldap.html - 閉鎖
http://hp.vector.co.jp/authors/VA029885/software/article/cyrus-imapd-with-openldap.html

1.2. Feedback

筆者へのご意見、ご感想、ご質問、また間違い訂正は以下のアドレスまでお願い致します。

kazuhiro@robios.org

2. ソフトウェア

この章では、必要なソフトウェアについて簡単に説明します。

2.1. 筆者のマシン環境

筆者のマシン環境を説明しておきます。

2.2. Cyrus IMAP Server

Cyrus IMAPサーバーはCarnegie Mellon Universityが開発したIMAPサーバーです。クライアント側へメールを蓄積するPOP3サーバーと違い、IMAPではユーザーのメールやフォルダをサーバー側へ蓄積します。クライアント側のメールリーダーは、指定されたメールやフォルダをサーバーへ読みに行きます。リーダーによってはクライアント側にキャッシュする場合もあります。IMAPサーバーの利点は、1つのメールボックスを複数のマシンやクライアントから利用できることです。例えば、ユーザーは、会社のマシンから、会社のメールリーダーを利用しこのアドレス宛へ配信されたメールを読むことができます。また、自宅のマシンからも同じようにこのアカウントへ配信されたメールを読むことができます。ここでPOP3サーバーと大きく違う点は、これら2つのメールリーダー内のメールやフォルダは完璧に同期されていることです。POP3サーバーの場合、サーバー側のメールを削除しないように設定はできますが、そもそもPOP3サーバーはそのような使われ方を想定して実装されていないので、処理が遅くなるなどの弊害が生じる恐れがあります。

Cyrus IMAPサーバーは2種のパッケージ、cyrus-imapサーバーとSASLライブラリ、から構成されます。LinuxへのインストールはRPMを利用します。http://www.rpmfind.net/ にて、プラットフォームに合うRPMを探します。筆者が利用したパッケージは、 cyrus-imapd-1.6.19-2.i386.rpm cyrus-sasl-1.5.11-2.i386.rpm です。

Cyrus IMAP Server: http://asg.web.cmu.edu/cyrus/imapd/

2.3. Postfix

PostfixはSendmailの置き換えとして開発されたMTA (Message Transfer Agent) です。PostfixはSendmailに比べ、設定が非常に易しく導入も比較的簡単です。

筆者が利用しているPostfixは、 postfix-19991231_pl02-4.i386.rpm です。インストールについては、この文書では触れません。

Postfix: http://www.postfix.org/

2.4. OpenLDAP

OpenLDAPは、GNUの元フリーで配布されているLDAPサーバーです。今回は、IMAPサーバーのユーザー認証にこのOpenLDAPを利用します。通常の /etc/passwd によるUNIXアカウントと違い、メールアカウントの追加や管理などがWEBインターフェース等から簡単にでき、またUNIXマシンに存在しないユーザーのメールアカウントを作ることもできます。すなわち、UNIXアカウントとは独立してメールアカウントを管理できるわけです。

筆者が利用したOpenLDAPは、 openldap-1.2.9-6.i386.rpm openldap-devel-1.2.9-6.i386.rpm の2つのパッケージです。

OpenLDAP: http://www.openldap.org/

2.5. PAM LDAP Module

PAM LDAP ModuleはLDAPをPAMから利用するためのライブラリです。

筆者が利用したPAM LDAP Moduleは pam_ldap-42-3.i386.rpm です。

2.6. LDAP Explorer

LDAP ExplorerはLDAPサーバーへのエントリー追加・修正・削除をウェブ上にて行うためのインターフェースです。PHPスクリプトで記述されているので、PHPがインストールされていなければなりません。

2.7. Web Sieve

Sieveとは、IMAP上のメールフィルタリングソフトです。Web Sieveは、Sieveの設定をウェブ上で行うためのインターフェースです。Perlで記述されています。

2.8. Horde IMP

Horde IMP (IMAP Client) は、Hotmailに代表されるウェブメールインターフェースです。ウェブ上でIMAP上のメールを読むことができます。

3. インストール

この章では、各ソフトウェアのインストールについて簡単に説明します。

3.1. Cyrus IMAP Server

まずは、Cyrus SASLライブラリをインストールします。

TARアーカイブからのインストール
% tar zxvf cyrus-sasl-X.X.X.tar.gz
% cd cyrus-sasl-X.X.X
% ./configure --with-pwcheck_method=PAM
% make
# make install
% make clean

RPMパッケージからのインストール
# rpm -ivh cyrus-sasl-X.X.X.X-i386.rpm

次に、Cyrus IMAPサーバーをインストールします。

TARアーカイブからのインストール
% tar zxvf cyrus-imapd-X.X.X.X.tar.gz
% cd cyrus-imapd-X.X.X.X
% ./configure --with-auth unix	// 'unix' or 'krb'
% make
# make install
% make clean

RPMパッケージからのインストール
# rpm -ivh cyrus-imapd-XXX-i386.rpm

3.1.1. imapd.conf

/etc ディレクトリの中に imapd.conf がインストールされているはずです。エディタで開き、以下のように変更します。

configdirectory: /var/imap
partition-default: /var/spool/imap
admins: cyrus root
allowanonymouslogin: no
sasl_pwcheck_method: PAM

Note 通常のインストールでは、IMAPサーバーへ蓄積されるメールは、 /var/spool/imap 以下へ保存されます。IMAPの場合、メールをサーバーへ蓄積するので、ディスクスペースを大量に消費する恐れがあります。OSのインストール時に、 /var 以下はなるべく多めに割り当てることをお勧めします。レンタルサーバーのように既に /var 以下の容量が決まっておりその容量が少ない場合は、上記の partition-default: で指定するディレクトリを、大きなパーティション内へと変更してください。例) /home/cyrus 但し、変更した場合は、ディレクトリのオーナー変更をお忘れなく。これについては後述。

3.1.2. IMAPディレクトリの作成

Note RPMを利用してインストールした場合、既にこれらのディレクトリは作成されているでしょう。その場合はこの章の作業は必要ありません。

IMAPの設定ディレクトリを作成します。 imapd.conf 内の、 configdirectory で指定したディレクトリです。

# cd /var
# mkdir imap
# chown cyrus imap
# chgrp mail imap
# chmod 750 imap

IMAPのスプールディレクトリを作成します。 imapd.conf 内の、 partition-default で指定したディレクトリです。 /var/spool 以下に作るのなら、

# cd /var/spool
# mkdir imap
# chown cyrus imap
# chgrp mail imap
# chmod 750 imap

次に、ソースコードを展開したディレクトリに戻ります。 mkimap を実行して、ディレクトリ構成を完成させます。

# cd /usr/src/cyrus-imapd-X.X.X/	// 任意のディレクトリ
# su cyrus
% tool/mkimap

Linuxは非同期にファイルシステムを更新しているため、万が一システムがクラッシュした場合にメールを失う可能性があります。回避するために、上で作成したディレクトリの属性を変更します。

# cd /var/imap
# chattr -R +S . user quota
# chattr -R +S /var/spool/imap

3.1.3. syslog.conf

/etc/syslog.conf へ以下のラインを追加します。

local6.debug	/var/log/imapd.log
auth.debug 	/var/log/auth.log

追加後、 /var/log/imapd.log を作成、Syslogdを再起動

# touch /var/log/imapd.log 
# kill -HUP `cat /var/run/syslogd.pid`

3.1.4. 管理ユーザーの追加

管理用のユーザー、 cyrus を追加します。グループは、 mail です。

# useradd -g mail cyrus
# passwd cyrus

3.1.5. services

/etc/services に以下のラインがなければ追加します。

pop3    110/tcp
imap    143/tcp
imsp    406/tcp
kpop    1109/tcp
sieve   2000/tcp

3.1.6. inetd.conf

/etc/inetd.conf に以下のいずれかの3行を追加します。

# TCP Wrapperを利用する場合
imap  stream  tcp  nowait  cyrus  /usr/sbin/tcpd  /usr/cyrus/bin/imapd
pop3  stream  tcp  nowait  cyrus  /usr/sbin/tcpd  /usr/cyrus/bin/pop3d
sieve stream  tcp  nowait  cyrus  /usr/sbin/tcpd  /usr/cyrus/bin/timsieved

# TCP Wrapperを利用しない場合
imap  stream  tcp  nowait  cyrus  /usr/cyrus/bin/imapd  imapd
pop3  stream  tcp  nowait  cyrus  /usr/cyrus/bin/pop3d  pop3d
sieve stream  tcp  nowait  cyrus  /usr/cyrus/bin/timsieved timsieved

追加後、 inetd を再起動します。

# kill -HUP `cat /var/run/inetd.pid`

3.1.7. 確認

さて、ここまで終了すればIMAPはユーザーを追加していないものの、起動はするはずです。localhostにtelnetしてテストしてみましょう。

% telnet localhost imap
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK foo.bar.org Cyrus IMAP4 v1.6.19 server ready
. logout	// タイプする
* BYE LOGOUT received
. OK Completed
Connection closed by foreign host.
%

以上のようにレスポンスがあるのなら、インストールは成功しています。 . logout とタイプし、終了しましょう。

次は、ユーザーを追加する前にOpenLDAPをインストールします。

3.2. OpenLDAP

OpenLDAPをインストールします。

TARアーカイブからのインストール
% tar zxvf openldap-X.X.X.tgz
% cd openldap-X.X.X
% ./configure
% make depend
% make 
# make install

RPMパッケージからのインストール
# rpm -ivh openldap-1.2.9-6.i386.rpm
# rpm -ivh openldap-devel-1.2.9-6.i386.rpm

TARアーカイブでのインストールの場合は、 /etc/rc.d/init.d/ に起動スクリプトを作成し、起動させたいランレベルに合わせてシンボリックリンクを張る必要があります。これについては設定の際に行います。

3.3. PAM LDAP Module

PAM LDAP Moduleをインストールします。

# rpm -ivh pam_ldap-42-3.i386.rpm

3.4. LDAP Explorer

LDAP Explorerをインストールします。まずはLDAP Explorerのパッケージを下記FTPよりダウンロードします。

LDAP Explorer FTP: ftp://igloo.its.unimelb.edu.au/pub/LDAPExplorer/

現在のパッケージ名は LDAPExplorer-1.17.tar.gz です。

ウェブサーバーのコンテンツフォルダに解凍します。下記の例はウェブサーバーのドキュメントルートが /var/www/html である例です。

# cd /var/www/html
# tar zxvf LDAPExplorer-x.xx.tar.gz

3.5. Web Sieve

Web Sieveをインストールします。Web Sieveは現在SourceForgeにて開発・メンテナンスが行われています。

Web Sieve: http://sourceforge.net/projects/websieve/