Courier-IMAP
自宅のSMTPサーバ宛に送られたメールを読むためにPOP3サーバとIMAPサーバを導入する。
普段はクライアントPCにPOP3でメールを取り込だけだがWebメール用として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/userdbuser pop3pw=$vvvvvvvvvv$IWLWkkkkkkkkkkeSmmmmK.|uid=10000|mail=/export/home/user/Maildir|home=/export/home/user|imap-hmac-md5pw=a8dxxx1d50byyyy8e4zzzz665bxxxxbdaa8yyyyy6deb4ezzzzzac91826a2xxxxxb|home=/export/home/user|gid=10000Courier-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○編集前起動スクリプトを作成する。 Courier-IMAPに起動スクリプトが含まれているため流用する。
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"
# cp /usr/local/courier-imap/libexec/pop3d.rc /etc/init.d/pop3dCourier-IMAPを起動する。
# 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
# /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
