POP3/IMAPサーバ over SSL(Courier-IMAP)の構築
おやじは、POPサーバとして、Qpopper(over SSL)を使用していましたが、
- 外部から使うとなると、メールをサーバに残したまま読みたい。即ちIMAPを入れたい。
- mbox形式だと、ユーザ毎に1つのファイルで管理されるため、メールが溜まるとレスポンスが悪くなってくるほか、障害時に全てのメールが飛んでしまう可能性が大きくなるので、Maildir形式にして、1メール1ファイルでの管理にしたい。
- 外部から使うので、SSL対応ができる。
という条件で探してみたところ、Maildir形式に対応したIMAP/POP3サーバでSSL対応となるとCourier-IMAPぐらいしかありませんので、これでいくことにしました。Postfixは設定でMaildir形式に対応できます。なお、Courier-IMAPはいろいろな認証(CRAM-MD5やCRAM-sha1等)をサポートしていますが、おやじの環境では、MUAはOutlook
Expressが対象のため、plain-textとlogin認証をSSLで対応しています。他の方法は試験するすべもないので、他を参考にしてください。
Courier-IMAPは、比較的簡単に rpmを作成できるようなので、管理を簡単にするため
rpmを作ってからインストールすることにしました。
Courie-IMAP4.0系から認証ライブラリが別になったので、rpmの作成方法を修正しました。
(ソースからインストールする方法については、
こちらを参照願います。3.0系まで)
■Courier-IMAPのダウンロードとRPMの作成
Courier-IMAPを
こちらからダウンロードしますが、4.0系から認証ライブラリ(Courier authentication
library)が別になったので、こちらの rpmを先に作成してインストールしてからでないと、Courier-IMAPの rpmが作成できないことと、rpmの作成までは、一般ユーザで行わないとエラーがでるので注意が必要です。作業ディレクトリのパーミッションにも注意が必要です。おやじは、作業ユーザのhomeディレクトリにダウンロードして作業しました。
- 準備作業として、作業ユーザの homeディレクトリに rpmの作成環境を作成する。
$ cd ~
$ mkdir -p $HOME/rpm/{SOURCES,SPECS,BUILD,SRPMS,RPMS/i386}
$ echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros |
- 作成した rpm作成環境の SOURCESディレクトリに移動して、courier authentication
library をダウンロードして、rpmを作成する。
$ cd ~/rpm/SOURCES
$ wget http://jaist.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.52.tar.bz2
$ rpmbuild -ta courier-authlib-0.52.tar.bz2 |
- rootになり、作成された rpmファイルを確認し必要なものをインストールする。おやじはlogin認証だけなので、courier-authlib-0.52-1.9.i386.rpmと courier-authlib-devel-0.52-1.9.i386.rpmのみをインストールした。なお、SRPMSフォルダにはsrpmができている。
$ su -
password:xxxxx
# cd ../RPMS/i386
# ls
courier-authlib-0.52-1.9.i386.rpm
courier-authlib-devel-0.52-1.9.i386.rpm
courier-authlib-userdb-0.52-1.9.i386.rpm
courier-authlib-ldap-0.52-1.9.i386.rpm
courier-authlib-mysql-0.52-1.9.i386.rpm
courier-authlib-pgsql-0.52-1.9.i386.rpm
courier-authlib-debuginfo-0.52-1.9.i386.rpm
# rpm -Uvh courier-authlib-0.52-1.9.i386.rpm courier-authlib-devel-0.52-1.9.i386.rpm |
- 続いて courier-imapのrpmを作成するため再度作業ユーザに戻り、作成した rpm作成環境の
SOURCESディレクトリに移動して、courier-imapをダウンロードして解凍する。
$ cd ~/rpm/SOURCES
$ wget http://jaist.dl.sourceforge.net/sourceforge/courier/courier-imap-4.0.1.tar.bz2
$ tar -jxf courier-imap-4.0.1.tar.bz2 |
- 解凍したcourier-imapのフォルダに移動し、specファイルを編集する。変更したのは、日本語検索機能のための
unicodeへの iso-2022-jpの追加のみ。
$ cd courier-imap-4.0.1
$ vi courier-imap.spec
(snip)
%setup -q
%if %(test '%{xflags}' = '%%{xflags}' && echo 1 || echo 0)
%define xflags --enable-unicode=iso-2022-jp,iso-8859-1,utf-8
%endif
[Esc]、[:]、[w]、[q]で保存。 |
Fedora Core3ではfamの替わりにgaminが採用されているので、更にspecファイルを少し変更しないとrpmを作成できない。上記の代わりに下記でfamからgaminへの変更と日本語検索機能のための unicodeへの iso-2022-jpの追加を行う。変更後のspecファイルは、下記でSPECSディレクトリにコピーされるので6項のコピーは不要。
$ sed -e "s/fam/gamin/g" \ -e
"s/iso-8859-1/iso-2022-jp,iso-8859-1/g" \
./courier-imap-4.0.2/courier-imap.spec >
../SPECS/courier-imap.spec |
- 変更した specファイルを SPECSディレクトリにコピーしてrpmを作成する。
$ cp courier-imap.spec ../../SPECS
$ cd ../../SPECS
$ rpmbuild -ba courier-imap.spec
|
- rootになり、作成された rpmファイルを確認しインストールする。なお、SRPMSフォルダにはsrpmができている。
$ su -
password:xxxxx
# cd ../RPMS/i386
# ls
courier-imap-4.0.1-1.9.i386.rpm
courier-imap-debuginfo-4.0.1-1.9.i386.rpm
# rpm -Uvh courier-imap-4.0.1-1.9.i386.rpm
|
おやじはUNIXパスワードでの認証で使用するためベースのrpmのみインストールしましたが、MySQL等を使用するならそれらのrpmのインストールが必要でしょう。但し、おやじは全く検証もしていませんので、各自のリスクでお願いします。
なお、おやじが作成したRedHat 9.0用とFedoraCore2用のrpmを
こちらに置いておきます。
■Courier-IMAPの設定
Corier-IMAPをrpmからインストールすると、デフォルトでPOP3/POP3 over SSL/IMAP/IMAP
over SSLの4つのモードが起動されます。おやじは、全て起動してルータやファイヤウォールでアクセス制御していますが、不必要なものは止めておいたほうが良いでしょう。設定ファイルは
/usr/lib/courier-imap/etc に作成されますので、その内容を修正していきます。以下に、修正内容を示します。(青字は削除、赤字は追加、緑字は変更したものです。)
◆pop3dファイルの編集(POP3未使用時)
- pop3dの起動停止
POP3DSTART=YES
↓変更
POP3DSTART=NO
◆pop3d-sslファイルの編集
- pop3d-sslの起動停止(POP3 over SSL未使用時)
POP3DSSLSTART=YES
↓変更
POP3DSSLSTART=NO
- pemファイルの指定
TLS_CERTFILE=/usr/lib/courier-imap/share/imapd.pem
↓変更
TLS_CERTFILE=/etc/mail/certs/mail.pem
◆imapdファイルの編集(IMAP未使用時)
- imapd-sslの起動設定
IMAPDSTART=YES
↓変更
IMAPDSTART=NO
◆imapd-sslファイルの編集
- imapd-sslの起動設定(IMAP over SSL未使用時)
IMAPDSSLSTART=YES
↓変更
IMAPDSSLSTART=NO
- pemファイルの指定
TLS_CERTFILE=/usr/lib/courier-imap/share/imapd.pem
↓変更
TLS_CERTFILE=/etc/mail/certs/mail.pem
■メールBoxの作成とPostfixの設定
Corier-IMAPのメールBoxはMaildir形式なので、各ユーザのホームディレクトリにMaildirを作成するとともに、PostfixのMaildir形式対応にします。
◆メールBoxの作成
メールBoxを作成するには、各ユーザのホームディレクトリで下記のようにコマンドを入力します。
$ cd ~
$ /usr/lib/courier-imap/bin/maildirmake Maildir |
新規ユーザ作成時に、自動的にユーザホームディレクトリにMaildirが作られるようにするには、root
で「/etc/skel」にも作成しておきます。
# /usr/lib/courier-imap/bin/maildirmake /etc/skel/Maildir |
◆Postfixの設定
PostfixをMaildir形式対応にするには、/etc/postfix/main.cf を編集してhome_mailboxでのMaildirの指定と、mail_spool_directoryでのスプールディレクトリの指定を行います。(
青字は削除、
赤字は追加、
緑字は変更したものです。)
下記以外は、
Postfix・
SMTP Authenticationのページを参考にしてください。
- メールBoxの指定
#home_mailbox = Mailbox
#home_mailbox = Maildir/
↓削除
#home_mailbox = Mailbox
home_mailbox = Maildir/
- スプールディレクトリの指定
#mail_spool_directory = /var/mail
mail_spool_directory = /var/spool/mail
↓追加
#mail_spool_directory = /var/mail
#mail_spool_directory = /var/spool/mail
■Courier-IMAPの自動起動の設定
rpmからインストールすると、courier-authlibと courier-imapの自動起動スクリプトがインストールされ、ランレベル2、3、4、5で起動、停止が可能となっていますので、特に設定は必要はありません。
但し、courier-imapのスクリプト(/etc/rc.d/init.d/courier-imap)では、初回起動時に自動的にダミーのSSL証明書を作成するようになっているので、そこをコメントアウト(赤字)して利用します。IMAP用とPOP3用の2箇所あります。使用しなければいいだけなので、変更しなくても特に問題はありません。
# vi /etc/rc.d/init.d/courier-imap
:
(snip)
:
if test -x $COURIERTLS
then
# First time we start this, generate a dummy SSL certificate.
# if test ! -f ${prefix}/share/imapd.pem
# then
# echo -n " generating-SSL-certificate..."
# ${prefix}/share/mkimapdcert >/dev/null 2>&1
# fi
/usr/lib/courier-imap/libexec/imapd-ssl.rc start
echo -n " imap-ssl"
fi
:
(snip)
:
# First time we start this, generate a dummy SSL certificate.
# if test ! -f ${prefix}/share/pop3d.pem
# then
# echo -n " generating-SSL-certificate..."
# ${prefix}/share/mkpop3dcert >/dev/null 2>&1
# fi
/usr/lib/courier-imap/libexec/pop3d-ssl.rc start
echo -n " pop3-ssl"
fi
[Esc],[:],[w],[q]で保存
|