-ERR Maildir invalid (no 'cur' directory)の対応
Courier Mail Serverでpop3とimapで接続確認をしていた時に起きた事のメモです。
起きた事
ローカルホストにtelnetを使ってpop3でログインしようとしたところ、
「-ERR Maildir invalid (no 'cur' directory)」と怒られてしまいました。
# telnet localhost 110 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. +OK Hello there. USER [ my user ] +OK Password required. PASS [ my password ] -ERR Maildir invalid (no 'cur' directory)
「/var/log/maillog」には、以下のようなログが出力されていました。
May 5 16:50:32 courier pop3d: Connection, ip=[::ffff:127.0.0.1] May 5 16:50:42 courier pop3d: chdir Maildir: No such file or directory
# telnet localhost 143 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2010 Double Precision, Inc. See COPYING for distribution information. 1 login [ my user ] [ my password ] * BYE [ALERT] Fatal error: No such file or directory: No such file or directory Connection closed by foreign host.
「/var/log/maillog」には、以下のようなログが出力されていました。
May 5 16:54:24 courier imapd: Connection, ip=[::ffff:127.0.0.1] May 5 16:54:34 courier imapd: chdir Maildir: No such file or directory May 5 16:54:34 courier imapd: [ my user ]: No such file or directory
原因と対応
ホームディレクトリ以下にMaildirディレクトリが作成されてはいたのですが、
その下にサブディレクトリを作っていない事が原因でした。
「maildirmake」コマンドで対応したところ、問題は解消しました。
対応後
pop3の結果です。
# telnet localhost 110 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. +OK Hello there. USER [ my user ] +OK Password required. PASS [ my password ] +OK logged in. LIST +OK POP3 clients that break here, they violate STD53. . QUIT +OK Bye-bye. Connection closed by foreign host.
無事にログインできました。
「/var/log/maillog」には、以下のようなログが出力されていました。
May 5 16:59:33 courier pop3d: Connection, ip=[::ffff:127.0.0.1] May 5 16:59:41 courier pop3d: LOGIN, user=[ my user ], ip=[::ffff:127.0.0.1], port=[56546] May 5 17:00:09 courier pop3d: LOGOUT, user=[ my user ], ip=[::ffff:127.0.0.1], port=[56546], top=0, retr=0, rcvd=12, sent=88, time=28
imapの結果です。
# telnet localhost 143 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2010 Double Precision, Inc. See COPYING for distribution information. 1 login [ my user ] [ my password ] 1 OK LOGIN Ok. 2 list "" * * LIST (\Unmarked \HasNoChildren) "." "INBOX" 2 OK LIST completed 5 logout * BYE Courier-IMAP server shutting down 5 OK LOGOUT completed Connection closed by foreign host.
こっちも無事にログインできました。
「/var/log/maillog」には、以下のようなログが出力されていました。
May 5 17:07:32 courier imapd: Connection, ip=[::ffff:127.0.0.1] May 5 17:07:41 courier imapd: LOGIN, user=[ my user ], ip=[::ffff:127.0.0.1], port=[34868], protocol=IMAP May 5 17:08:01 courier imapd: LOGOUT, user=[ my user ], ip=[::ffff:127.0.0.1], headers=0, body=0, rcvd=23, sent=148, time=20
おまけ
この件、その後別のユーザーを試しに作成したところ、
Maildirは普通に作成されていました。
なぜだろうと思ってみてみると、「/etc/skel」にディレクトリが配置されていました。
# cd /etc/skel/ # ls -la 合計 48 drwxr-xr-x 3 root root 4096 3月 4 01:53 . drwxr-xr-x 79 root root 4096 5月 5 16:34 .. -rw-r--r-- 1 root root 33 1月 22 2009 .bash_logout -rw-r--r-- 1 root root 176 1月 22 2009 .bash_profile -rw-r--r-- 1 root root 124 1月 22 2009 .bashrc drwx------ 5 root root 4096 3月 4 01:53 Maildir
なるほど。パッケージ導入すると入るんですね。
# rpm -ql courier | grep Mail /etc/skel/Maildir /etc/skel/Maildir/cur /etc/skel/Maildir/new /etc/skel/Maildir/tmp
パッケージインストール前に存在していたユーザーは注意、ということでした。
「maildirkw」「maildiracl」コマンドは今度調べてみようと思います。
今日はこんなところで。