xserver
Home クッキー及びWeb ビーコンについて



Postfix2+Courier-IMAP

Courier-IMAPの概要

Postfix と Courier-IMAP を使ったメールサーバーの構築方法について解説していきます。




■Courier-IMAPのダウンロード

Version courier-imap-2.2.1
Homepage http://www.courier-mta.org/
Download http://www.courier-mta.org/download.php#imap
Install courier-imap-2.2.1.tar.bz2

 make install までは、ユーザーとして作業を行わないと警告が表示されてしまうので、あらかじめユーザーのホームディレクトリにダウンロードしておいてください。





■Courier-IMAPのインストール

 root で作業を行うと警告が表示されてしまうので、インストールする際には、ユーザーでログインしてから作業を行ってください。、なお、筆者の環境では、コンパイル時にSSLのヘッダファイルがみつからないといった旨のエラーが発生したため、予め、SSLヘッダファイルのパスを指定しておきます。

$ CPPFLAGS=-I/usr/local/ssl/include
$ export CPPFLAGS
$ env | grep CPPFLAGS
CPPFLAGS=-I/usr/local/ssl/include

◎コンパイル時のエラー内容
tlspasswordcache.c:9:25: openssl/ssl.h: そのようなファイルやディレクトリはありません
tlspasswordcache.c:10:25: openssl/err.h: そのようなファイルやディレクトリはありません
tlspasswordcache.c:11:26: openssl/rand.h: そのようなファイルやディレクトリはありません
make[2]: *** [tlspasswordcache.o] エラー 1
make[2]: 出ます ディレクトリ `/home/kororo/courier-imap-2.2.1/tcpd'
make[1]: *** [all] エラー 2
make[1]: 出ます ディレクトリ `/home/kororo/courier-imap-2.2.1/tcpd'
make: *** [all-recursive] エラー 1

 Microsoft Outlook を使用するという前提で、Courier-IMAPがサポートする認証モジュールははずしてあります。また、RedHat では、confiure時にエラーが発生し手動ではコンパイルできないようなので、--with-redhat オプション指定しています。なぜか、Red Hat/Fedoraでスクリプトを走らせていると思われるようです…。

$ 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を使うように設定してあげれば正常に受信することができます。

# postfix reload

◎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







TOPに戻る

Sponcerd Link


Search
 
Web サイト内
Rental Server

【レンタルサーバのXbit】 低価格・高品質のビジネスクオリティー。300メガ1,050円~30分で サービススタート可能!


容量300MB、月額125円、高性能なサーバが日本最大級のバックボーンに直結。
さくらのレンタルサーバ



当サイトはLinux自宅サーバーの構築を目的としたサイトです。
当サイトに関するご意見、ご要望等は、こちらのメールアドレスよりお願いします。
Beginning | Introduction | Installation | Server |
Security | Tips | Related-Sites
Copyright©2003-2006 KORO All Rights Reserved.
総計:
今日:
昨日: