-ERR Maildir invalid (no 'cur' directory)の対応

Courier Mail Serverでpop3imapで接続確認をしていた時に起きた事のメモです。

起きた事


ローカルホストに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


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 ]
* 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」コマンドは今度調べてみようと思います。


今日はこんなところで。