2004年11月07日

FreeBSDでIMAPサーバセットアップ

メールの送受信環境を整えるには、SMTPサーバ以外にPOPかIMAPサーバが必要だ。POPは届いたメールをクライアントに蓄積するのに対して、IMAPはサーバに蓄積する方式である。複数のパソコンからメールを読みつつ一元管理できることが、IMAPの利点である。ここ数年でサーバやクライアントの実装も成熟してきたので、頼れて自由に触れるサーバがある人はぜひ試して欲しい。
FreeBSDでIMAPサーバの1実装であるcourier-imapのセットアップ作業をまとめる。ユーザのアカウント情報にはシステムの情報/etc/passwdを利用する。また、メーラとサーバの間の通信を暗号化するため、TLSを利用できるようにする。

■ インストール

portsからcourier-imapをインストールする。
# portinstall mail/courier-imap

■ 設定

設定ファイルを準備する。
# cd /usr/local/etc/courier-imap
# cp -p authdaemonrc.dist authdaemonrc
# cp -p imapd-ssl.dist imapd-ssl
# cp -p imapd.cnf.dist imapd.cnf
# cp -p imapd.dist imapd
# cp -p pop3d-ssl.dist pop3d-ssl
# cp -p pop3d.cnf.dist pop3d.cnf
# cp -p pop3d.dist pop3d

暗号化用の証明書を作るためimapd.cnfを編集する。
# cd /usr/local/etc/courier-imap
# vi imapd.cnf
# diff imapd.cnf.dist imapd.cnf
12,18c12,18
< C=US
< ST=NY
< L=New York
< O=Courier Mail Server
< OU=Automatically-generated IMAP SSL key
< CN=localhost
< emailAddress=postmaster@example.com
---
> C=JP
> ST=Tokyo
> L=Mitaka
> O=Toshikazu Ichikawa
> OU=Toshikazu Ichikawa
> CN=mail.toshikazu.org
> emailAddress=hogehoge@hogehoge.hoge

暗号化用の証明書を生成する。次のコマンドは、/usr/local/share/courier-imap/imapd.pem を生成してくれる。
# /usr/local/share/courier-imap/mkimapdcert

TLSを使わないとログインできないようにも設定できる。そのためには、次のようにimapd-sslを編集する。敷居を高くしておきユーザ教育をすることで、システムのセキュリティを高めることができる。
# cd /usr/local/etc/courier-imap
# vi imapd-ssl
# diff imapd-ssl.dist imapd-ssl
82c82
< IMAP_TLS_REQUIRED=0
---
> IMAP_TLS_REQUIRED=1

■ 起動

システム起動時に自動で起動されるように設定する。

FreeBSD 5.3以降(正確には2004年10月18日以降のports)では、
/etc/rc.confに次の設定を加える。
# vi /etc/rc.conf
courier_imap_imapd_enable="YES" # for imap 143/tcp,udp (including starttls)
courier_imap_imapdssl_enable="NO" # for imaps 993/tcp,udp

FreeBSD 5.2.1以前では、
次のようにインストールされた起動スクリプトのファイル名を変更する。
rc.dディレクトリではファイル名が.shで終わっていないと実行されないため。
# cd /usr/local/etc/rc.d
# mv courier-imap-imapd.sh.sample courier-imap-imapd.sh

上記の設定が終わった後、どちらの場合においてもcourier-imapをすぐに起動するには、次のコマンドを実行する。
# /usr/local/etc/rc.d/courier-imap-imapd.sh start

これで、port 143番にアクセスした際に、startsslによりSSL/TLSを使う設定のMUAで接続すると通信は暗号化され、メールの読み出しを行える。imapd-ssl側の実行スクリプトを使えば、port 993番でSSL/TLSに対応したimapsサーバを起動できる。
また、上記の例のように自証明証明書を用いている場合は、MUAで証明書を検証しないようにしておく必要がある。