$ cd /usr/local/src
$ tar xjvf courier-imap-2.2.1.tar.bz2
$ cd courier-imap-2.2.1
$ ./configure --prefix=/usr/local/courier-imap
\
--without-authmysql
\
--without-authldap
\
--without-authcram
\
--without-authuserdb
\
--with-redhat
\
--enable-unicode=iso-2022-jp
$ make
$ make check
$ su
# make install
# make install-configure |
|
組み込まれたモジュールを確認するには、/[ prefix]/libexec/authlib/authdaemon
以下のファイルをみてください。上記の例でインストールを行うと、平文認証である
authdaemond.plain
が組み込まれているかと思います。
■Courier-IMAPの自動起動設定
自動起動設定を行っておきます。通常のIMAPを使用する場合はimapd.rcを、IMAP over SSLを使用する場合は、imapd-ssl.rc
を/etc/rc.d/init.d/ 以下にコピーしておきます。
# cp /usr/local/courier-imap/libexec/imapd.rc
/etc/rc.d/init.d/imapd
# cp /usr/local/courier-imap/libexec/imapd-ssl.rc
/etc/rc.d/init.d/imapd-ssl |
|
なお、上記のままでは、chkconfig --add とした際に、「サービス imapd は、chkconfig
をサポートしていません」と言われてしまうので、/etc/rc.d/init.d/imapd の先頭に以下の2行を付け足しておきます。80と30という数字は、各自の環境に合わせて重複しない番号に変更してください。最初の80は起動、次の30は停止の意味です。
# vi /etc/rc.d/init.d/imapd
# chkconfig: 2345 80 30
# description: Courier-IMAP Server
# vi /etc/rc.d/init.d/imapd-ssl
# chkconfig: 2345 80 30
# description: Courier-IMAP Server
# chkconfig --add imapd
# chkconfig --add imapd-ssl
# chkconfig --list imapd
imapd 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン
6:オフ
# chkconfig --list imapd-ssl
imapd-ssl 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン
6:オフ |
|
■Courier-IMAPの動作確認
それでは、実際にCourier-IMAPの設定を行っていきます。まず、authdaemonrc を開いて以下のように編集します。
# vi /usr/local/courier-imap/etc/authdaemonrc
version="authdaemond.plain" |
|
IMAPサーバーを起動します。起動させたら、ps で確認してください。
# /etc/rc.d/init.d/imapd
start
あるいは
# /etc/rc.d/init.d/imapd-ssl start
# ps aux | grep imap |
|
念のため、nmapでポートスキャンしてみます。IMAPはポート番号143番を使用します。
# nmap localhost
143/tcp open imap2 |
|
■ユーザーのメールボックス(Maildir)の作成
Maildir 形式でメールを格納するため、maildirmake コマンドを使用して予めディレクトリを作成しておきます。コマンドを実行すると、MailDir
内にcur、new、tmp の3つのディレクトリが作成されます。
$ /usr/local/courier-imap/bin/maildirmake
Maildir
$ ls Madir/
cur new tmp |
|
しかし、新規ユーザーを作成時にいちいちmaildirmake コマンドを実行するのは面倒だし、作り忘れてしまう恐れもあるので、maildirmake
を/etc/skel にコピーしておきます。
# /usr/local/courier-imap/bin/maildirmake
/etc/skel/Maildir |
|
■TELNETで動作確認
Telnetで動作確認しておきます。なお、上記でメールボックスを作成していない場合は、そのようなファイルが存在しないというエラーが発生してしまいますので予め作成しておいてください。以下のようにログインできればOKです。
$ telnet localhost
143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN
NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES
SORT QUOTA IDLE] Courier-I
MAP ready. Copyright 1998-2003 Double Precision,
Inc. See COPYING for distribution information.
1 login kororo password #password にはunixパスワードを入力
1 OK LOGIN Ok.
1 logout
* BYE Courier-IMAP server shutting down
1 OK LOGOUT completed
Connection closed by foreign host. |
|
■Postfix の設定
PostfixをMaildir 形式に対応させるため、/etc/postfix/main.cf を編集します。home_mailbox
のコメントを削除しMaildirを有効にし、mail_spool_directory にコメントを追加して無効にしておきます。
# vi /etc/postfix/main.cf
home_mailbox = Maildir/
#mail_spool_directory = /var/spool/mail
|
|
Postfixをリロードして設定変更を反映させます。あとは、Outlook側でIMAPを使うように設定してあげれば正常に受信することができます。
◎Microsoft Outlookの設定(SMTP-AUTH + IMAP)
ちょっとびっくりした点は、IMAP用の受信トレイが新しく作成されていたところです。筆者ははじめてのIMAP構築だったので、IMAPがきちんと稼動しているのに受信ができないことに1時間近く悩んでいました。しかも、頻繁にOutlookが受信音を発するので、お!?成功したのか?と思いつつ、受信トレイをみてみるとやっぱり届いてない…。ついに、Outlookまで壊れたかとおもってたら、なんと、新しい受信トレイが作成されていて中をみてみたらびっくり…。いままでテスト送信しまくっていたメールが溜まっていました(笑)。
■IMAP over SSL
IMAPのみでは、パスワードが平文で流れてしまうのでセキュリティ的に好ましくありません。そこで、IMAPとSSLを組み合わせてより安全な環境を構築することをお勧めします。まず、IMAP
over SSL用の設定ファイル、imapd-ssl を編集してIMAP over SSLを有効にします。IMAPDSSLSTART=NO
を YES に変更してください。
# vi /usr/local/courier-imap/etc/imapd-ssl
IMAPDSSLSTART=YES |
|
IMAP over SSL用の起動スクリプトを/etc/rc.d/init.d 以下にコピーしておきます。コピしたら、imapd-ssl
を起動させます。
# cp /usr/local/courier-imap/libexec/imapd-ssl.rc
/etc/rc.d/init.d/imapd-ssl
# /etc/rc.d/init.d/imapd-ssl start |
|
IMAP over SSL が正常に稼動しているか確認します。ポート番号は993番を使用します。
# netstat -an |
grep 993
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN
# nmap localhost
993/tcp open imaps |
|
■couriertlsの組み込み
デフォルトでは、couriertls が組み込まれないみたいなので、SSL/TLSに対応させるため、追加でビルドしておきます。couriertls
がインストールされているかいないかは、/usr/local/courier-imap/bin以下に、couriertls
があるかないかで判断してください。まず、OpenSSHライブラリへのパスを通しておきます。予め、ユーザーでログインしてから作業を行ってください。
$ LDFLAGS=-L/usr/local/ssl/lib
$ export LDFLAGS |
|
configure時にOpenSSL関係のエラーが発生した場合は、以下のSSLヘッダファイルにもパスを通しておいてください。
$ CPPFLAGS=-I/usr/local/ssl/include
$ export CPPFLAGS |
|
ユーザーのホームディレクトリ(/home/kororo)にソースディレクトリがあると仮定して説明します。コンパイル後に作成されたcouriertls
ディレクトリを、/usr/local/courier-imap/bin 以下にコピーしておきます。
$ cd courier-imap-2.2.1/tcpd
$ ./configure --prefix=/usr/local/courier-imap
$ make
$ su
# cp ./couriertls /usr/local/courier-imap/bin |
|
imapd-ssl ファイルを開いて、couriertls のパスとこれから作成する imapd.pem
を格納するパスを確認しておきます。必要に応じてパスを変更してください。
# vi /usr/local/courier-imap/etc/imapd-ssl
COURIERTLS=${bindir}/couriertls
TLS_CERTFILE=/usr/local/courier-imap/share/imapd.pem |
|
■SSL証明書の作成
IMAPでは、証明書と鍵を別々に指定することができないため、鍵をひとまとめにしておく必要があります。まず、サーバーの秘密鍵を作成します。
# mkdir certs
# cd certs
# /usr/local/ssl/bin/openssl genrsa -des3
-rand rand.dat 1024 -days 365 > server.key
0 semi-random bytes loaded
Generating RSA private key, 1024 bit long
modulus
..........................++++++
......++++++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase: |
|
ここで、セキュリティ的にあまり好ましくありませんが、サーバー用の秘密鍵からパスフレーズを削除する作業を行います。この作業を行うことでメールクライアントを立ち上げるたびに警告文が表示されないようになります。
# cp server.key server.key.bak
# /usr/local/ssl/bin/openssl rsa -in server.key.bak
> server.key
Enter pass phrase for server.key.bak:
writing RSA key |
|
次に、証明書要求を作成します。
# /usr/local/ssl/bin/openssl
req -new -key server.key -days 365 >
server.csr
Enter pass phrase for server.key:
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]:Ibaraki
Locality Name (eg, city) []:Tsukuba
Organization Name (eg, company) [Internet
Widgits Pty Ltd]:linux.kororo.jp
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:linux.kororo.jp
Email Address []:root@kororo.jp
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []: |
|
テスト用証明書を作成します。
# /usr/local/ssl/bin/openssl
req -in server.csr -days 365 -key server.key
-x509 > server.crt |
|
以上の作業で、server.crt、server.key が作成されたと思います。この証明書と鍵をひとつのファイルにまとめます。
# (cat server.crt
; cat server.key) > imapd.pem
# chmod 600 imapd.pem |
|
作成された imapd.pem を /usr/local/courier-imap/share/ 以下にコピーしておきます。
# cp imapd.pem /usr/local/courier-imap/share |
|
■証明書インポート用のderファイル作成
メールを受信しようとする度に、警告が表示されるのは面倒くさいので、証明書インポート用のファイルを作成しておきます。
# /usr/local/ssl/bin/openssl
x509 -inform pem -outform der < imapd.pem
> host.der |
|
host.der が作成できたらこれをWindows 上にコピーし、ダブルクリックするか、右クリックしてから「証明書のインストール」を実行します。
Becky! Internet Mailの設定(※2005/8/3追記)
Becky のバージョンアップによってIMAP-SSLによるサーバーへの接続が可能になりました。下記画面の「IMAPS」にチェックをつけるだけです。けれども、証明書による認証が必要となりますので予めクライアントマシンにインストールしておいてください。メールサーバに接続する際に、証明書の検証に失敗したというエラーダイアログが表示された場合は、下記図で指定したIMAPサーバーのホスト名と証明鍵を作る際に指定したホスト名(Organization
Name)が異なっている可能性がありますので再度、証明書作り直してください。あるいは、「ツール」→「メールボックスの設定」→「詳細」タブにある「証明書を検証しない」にチェックをしておけばサーバーに接続することができます。
■IMAPでのメールの削除方法
IMAPでは、POP3と違ってメールを削除しても、すぐには削除されません。以下図のように削除したいメールを反転させて「削除」とすると、そのメールは削除候補として、一旦、ごみ箱に保管されます。サーバー上では、その削除候補のメールは、/home/kororo/Maildir/.Trash
ディレクトリに格納されます。それ故に、誤って削除してしまったメールでも、.Trash ディレクトリを削除しない限りは、「削除の取り消し」をすることができます。また、ごみ箱フォルダを削除しない限りは、何回でもどこにいても、メールの受信ができるので非常に便利です。IMAPを構築するともうPOP3には戻れません(*^^)v
では、サーバー上にあるごみ箱からも完全に削除するにはどうするかというと、「編集」→「削除済みメッセージの削除」を実行します。これにより、Trash
ディレクトリに格納されているメールも削除することができます。
■Courier-IMAPでPOP3の設定
Courier-IMAPでPOP3を使うには、pop3dを編集し、POP3DSTARTを NO からYESに変更します。
# vi /usr/local/courier-imap/etc/pop3d
POP3DSTART=YES |
|
■Courier-IMAPでPOP3 over SSLの設定
Courier-IMAPでPOP3 over SSL を使うには、pop3d-sslを編集し、POP3DSSLSTARTをNO
からYESに変更します。
# vi /usr/local/courier-imap/etc/pop3d
POP3DSSLSTART=YES |
|