RHEL4 (RedHat Enterprise Linux 4 ) で POP サーバを構築する。
今回は dovecot を使う。
dovecot は POP3, IMAP に対応している。
まずは、RPM Search Advanced Searchから RPM パッケージを探す。
RHEL の RedHat EL 4 にチェックを入れて、
Other の Other のチェックを外して、
キーワードに dovecot を入力して検索。
2008 年 5 月時点で、以下の RPM パッケージが見つかる。
dovecot-1.1.rc5-0_70.el4.i386.rpm
dovecot-1.0.13-0_68.el4.i386.rpm
dovecot-1.0-0.1.rc14.el4.i386.rpm
今回は dovecot-1.0-0.1.rc14.el4.i386.rpm を使う。
# # rpm -ivh dovecot-1.0-0.1.rc14.el4.i386.rpm 警告: dovecot-1.0-0.1.rc14.el4.i386.rpm: V3 DSA signature: NOKEY, key ID e42d547b Preparing... ########################################### [100%] 1:dovecot ########################################### [100%] #
dovecot のインストールには mysql も必要だが、
システムにすでにインストールしてあったので、
これでインストールは完了。
試しにとりあえずデフォルトの設定で起動してみる。
# /etc/init.d/dovecot start Dovecot Imap を起動中: [ OK ] #
問題無く起動できた。
ちゃんとポートを listen しているかを確認してみる。
# lsof -i -n -P | grep dove dovecot 15707 root 5u IPv6 692002 TCP *:143 (LISTEN) dovecot 15707 root 6u IPv6 692003 TCP *:993 (LISTEN) dovecot 15707 root 7u IPv6 692004 TCP *:110 (LISTEN) dovecot 15707 root 8u IPv6 692005 TCP *:995 (LISTEN) imap-logi 15715 dovecot 0u IPv6 692002 TCP *:143 (LISTEN) imap-logi 15715 dovecot 1u IPv6 692003 TCP *:993 (LISTEN) imap-logi 15716 dovecot 0u IPv6 692002 TCP *:143 (LISTEN) imap-logi 15716 dovecot 1u IPv6 692003 TCP *:993 (LISTEN) imap-logi 15717 dovecot 0u IPv6 692002 TCP *:143 (LISTEN) imap-logi 15717 dovecot 1u IPv6 692003 TCP *:993 (LISTEN) pop3-logi 15721 dovecot 0u IPv6 692004 TCP *:110 (LISTEN) pop3-logi 15721 dovecot 1u IPv6 692005 TCP *:995 (LISTEN) pop3-logi 15738 dovecot 0u IPv6 692004 TCP *:110 (LISTEN) pop3-logi 15738 dovecot 1u IPv6 692005 TCP *:995 (LISTEN) pop3-logi 15993 dovecot 0u IPv6 692004 TCP *:110 (LISTEN) pop3-logi 15993 dovecot 1u IPv6 692005 TCP *:995 (LISTEN) #
ポート 110 で listen していることが確認できたので、
ローカルから telnet で接続してみる。
# telnet localhost 110 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. +OK Dovecot ready. user test +OK pass testtest -ERR Authentication failed. quit +OK Logging out Connection closed by foreign host. #
パスワードは間違えていないのにログインできない。
原因調査のために /var/log/messages を見てみる。
# tail messages May 21 14:45:23 asv002 dovecot: dovecot 起動 succeeded May 21 14:46:00 asv002 dovecot-auth: PAM pam_parse: expecting return value; [...include] May 21 14:46:00 asv002 dovecot-auth: PAM unable to dlopen(/lib/security/system-auth) May 21 14:46:00 asv002 dovecot-auth: PAM [dlerror: /lib/security/system-auth: cannot open shared object file: No such file or directory] May 21 14:46:00 asv002 dovecot-auth: PAM adding faulty module: /lib/security/system-auth May 21 14:46:00 asv002 dovecot-auth: PAM pam_parse: expecting return value; [...include] #
PAM で system-auth に問題がありそう。
PAM がうまく動作していないのであれば、
認証がうまくいかないことも納得できる。
原因調査のために /etc/pam.d/dovecot を見てみる。
# cat /etc/pam.d/dovecot #%PAM-1.0 auth required pam_nologin.so auth include system-auth account include system-auth session include system-auth #
/etc/pam.d/sshd などと見比べると書式が違う。
これが原因で PAM がうまく動かなかったのだろう。
次のように修正した。
# cat /etc/pam.d/dovecot #%PAM-1.0 auth required pam_nologin.so auth required pam_stack.so service=system-auth account required pam_stack.so service=system-auth session required pam_stack.so service=system-auth #
/etc/pam.d/ 以下を修正した場合はサービス再起動やシステム再起動は不要。
そのまま再度、ローカルから telnet で接続を試みる。
# telnet localhost 110 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. +OK Dovecot ready. user test +OK pass testtest +OK Logged in. list +OK 0 messages: . quit +OK Logging out. Connection closed by foreign host. #
ログインできるようになりました。
ちなみに、パスワードを間違えた場合は
ログインを拒否されるので、
これで認証の動作に問題は無いようです。
# telnet localhost 110 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. +OK Dovecot ready. user test +OK pass test -ERR Authentication failed. quit +OK Logging out Connection closed by foreign host. #
Thunderbird を使ったメールの受信も問題ありませんでした。
ちなみにデフォルトのメールボックスは /var/mail/[ユーザ名] です。