Solaris

2006/1/31 10:25 AM 更新

Courier-IMAP

自宅のSMTPサーバ宛に送られたメールを読むためにPOP3サーバとIMAPサーバを導入する。
普段はクライアントPCにPOP3でメールを取り込だけだがWebメール用としてIMAPサーバも必要。

Courier-IMAPの公式サイトより最新のソースファイルを入手しインストールする。
$ wget http://aleron.dl.sourceforge.net/sourceforge/courier/courier-imap-3.0.5.tar.bz2
$ bzip2 -d courier-imap-3.0.5.tar.bz2
$ tar xvf courier-imap-3.0.5.tar
$ cd courier-imap-3.0.5
$ ./configure --prefix=/usr/local/courier-imap \
                     --enable-unicode \
                     --enable-workarounds-for-imap-client-bugs \
                     --without-authmysql \
                     --without-authldap \
                     --without-authpgsql \
                     --without-authdaemon \
                     --with-db=gdbm \
                     --with-piddir=/var/run
$ make
# make install
Courier-IMAPはMaildir形式で保存されたメールを取得するのでユーザディレクトリにMaildirを作成する。
$ cd ~
# su - username
$ /usr/local/courier-imap/bin/maildirmake  /home/username/Maildir
$ ls -al Maildir/
total 5
drwx------     5 user    group         512 Jul  5 16:53 ./
drwxr-xr-x    4 user    group         512 Jul 24 10:04 ../
drwx------     2 user    group         512 Jul  5 20:44 cur/
drwx------     2 user    group         512 Jul 26 23:02 new/
drwx------     2 user    group         512 Jul 26 22:26 tmp/
新規にアカウントを作成したときに自動的にメールボックスが作成されるようにスケルトンディレクトリにも作成しておくとよい。
# /usr/local/bin/maildirmake /etc/skel/Maildir
インストール直後の状態だとPOP/IMAPサーバへのログインパスワードがSolarisのシェルアカウントと同一になっており、 セキュリティ上好ましくないのでCRAM-MD5で暗号化されたログインパスワードを有効にする。
# /usr/local/courier-imap/sbin/userdb user set home=/export/home/user mail=/export/home/user/Maildir uid=10000 gid=10000

# ls -al /etc/userdb
-rw-------    1 root     other          76  7月 17 11:13 /etc/userdb
作成したログインアカウントに対するパスワードを登録する。ここでは認証方式をCRAM-MD5としている。
○POP3用
# /usr/local/courier-imap/sbin/userdbpw -md5 |/usr/local/courier-imap/sbin
/userdb user set pop3pw
Password:*******
Reenter password:*******

○IMAP用
# /usr/local/courier-imap/sbin/userdbpw -hmac-md5 |/usr/local/courier-imap /sbin/userdb user set imap-hmac-md5pw
Password:*******
Reenter password:*******

作成されたファイルを確認する。

  /etc/userdb
user pop3pw=$vvvvvvvvvv$IWLWkkkkkkkkkkeSmmmmK.|uid=10000|mail=/export/home/user/Maildir|home=/export/home/user|imap-hmac-md5pw=a8dxxx1d50byyyy8e4zzzz665bxxxxbdaa8yyyyy6deb4ezzzzzac91826a2xxxxxb|home=/export/home/user|gid=10000
Courier-IMAPが認識できる形式に変換する。
# /usr/local/courier-imap/sbin/makeuserdb

# ls -al /etc |grep userdb
-rw-------    1 root     other               0  7月 17 11:32 .lock.userdb
-rw-------    1 root     other           157  7月 17 11:33 userdb
-rw-r--r--    1 root     other       24653  7月 17 11:34 userdb.dat
-rw-r--r--    1 root     other               0  7月 17 11:34 userdb.lock
-rw-------    1 root     other       24659  7月 17 11:34 userdbshadow.dat

IMAPでCRAM-MD5認証が有効になる用に設定ファイルを編集。

  /usr/local/courier-imap/etc/imapd
○編集前
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"

○編集後
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 IDLE"
起動スクリプトを作成する。 Courier-IMAPに起動スクリプトが含まれているため流用する。
# cp /usr/local/courier-imap/libexec/pop3d.rc /etc/init.d/pop3d
# cp /usr/local/courier-imap/libexec/imapd.rc /etc/init.d/imapd
# chmod 744 /etc/init.d/pop3d
# chmod 744 /etc/init.d/imapd

# ln -s /etc/init.d/pop3d /etc/rc2.d/S92pop3d
# ln -s /etc/init.d/imapd /etc/rc2.d/S93imapd
Courier-IMAPを起動する。
# /etc/init.d/pop3d start
# /etc/init.d/imapd start
動作確認をする。
○POP3
# telnet postman.kajukaju.net 110
Trying 192.168.1.xx...
Connected to postman.kajukaju.net.
Escape character is '^]'.
+OK Hello there.

○IMAP
# telnet postman.kajukaju.net 143
Trying 192.168.1.xx...
Connected to postman.kajukaju.net.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2004 Double Precision,Inc. See COPYING for distribution information.
サーバ稼働時のログ
○POP3
# tail /var/log/maillog
Jul 17 11:57:42 barbara pop3d: [ID 702911 mail.debug] Connection, ip=[::ffff:192.168.1.xx]
Jul 17 11:57:42 barbara pop3d: [ID 702911 mail.info] LOGIN, user=user, ip=[::ffff:192.168.1.xx]
Jul 17 11:57:42 barbara pop3d: [ID 702911 mail.info] LOGOUT, user=user, ip=[::ffff:192.168.1.xx], top=0, retr=0

○IMAP
# tail /var/log/maillog
Jul 17 11:43:53 barbara imapd: [ID 702911 mail.debug] Connection, ip=[::ffff:192.168.1.xx]
Jul 17 11:43:53 barbara imapd: [ID 702911 mail.info] LOGIN, user=user, ip=[::ffff:192.168.1.xx], protocol=IMAP
Jul 17 11:45:09 barbara imapd: [ID 702911 mail.info] LOGOUT, user=user, ip=[::ffff:192.168.1.xx], headers=0, body=0