/home/xxxx/mail/.imap/INBOX 作成について
http://wiki2.dovecot.org/Errors/ChgrpNoPerm
dovecot は /var/mail/user ファイルのグループ (mail グループ) を /home/user/mail/.imap/INBOX
の作成時にコピーしようとしたが、このプロセス (接続したユーザ関連のプロセス?) は mail グループ
に属していないので、INBOX の作成に失敗した、というメッセージみたい。
回避方法としては、以下になる。
※アクセス権が mail グループ相当になる?。
mail_access_groups=mail
上記の dovecot プロセスの strace を採取すると、/home/user/mail/.imap/INBOX を
mail グループ (GID が 12) で chown して失敗し、その後、/home/test03/mail/.imap/INBOX
が削除されている。
[pid 1598] mkdir("/home/test03/mail", 0700) = 0 <0.000274> [pid 1598] umask(077) = 0 <0.000003> [pid 1598] chown("/home/test03/mail", 4294967295, 4294967295) = 0 <0.000009> [pid 1598] stat("/home/test03/mail", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0 <0.000006> [pid 1598] prctl(PR_SET_DUMPABLE, 1) = 0 <0.000005> [pid 1598] fcntl(11, F_GETFL) = 0x802 (flags O_RDWR|O_NONBLOCK) <0.000004> [pid 1598] fcntl(11, F_SETFL, O_RDWR|O_NONBLOCK) = 0 <0.000004> [pid 1598] fcntl(11, F_GETFL) = 0x802 (flags O_RDWR|O_NONBLOCK) <0.000004> [pid 1598] fcntl(11, F_SETFL, O_RDWR|O_NONBLOCK) = 0 <0.000004> [pid 1598] fstat(11, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0 <0.000005> [pid 1598] lseek(11, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) <0.000004> [pid 1598] getsockname(11, {sa_family=AF_INET6, sin6_port=htons(110), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0 <0.000005> [pid 1598] epoll_ctl(9, EPOLL_CTL_ADD, 11, {EPOLLIN|EPOLLPRI|EPOLLERR|EPOLLHUP, {u32=30022144, u64=30022144}}) = 0 <0.000006> [pid 1598] stat("/home/test03/mail/.imap/INBOX", 0x7fffc306aaf0) = -1 ENOENT (No such file or directory) <0.000008> [pid 1598] stat("/var/mail/test03", {st_mode=S_IFREG|0660, st_size=0, ...}) = 0 <0.000010> [pid 1598] getegid() = 504 <0.000004> [pid 1598] stat("/var/mail/test03", {st_mode=S_IFREG|0660, st_size=0, ...}) = 0 <0.000006> [pid 1598] getegid() = 504 <0.000004> [pid 1598] stat("/var/mail/test03", {st_mode=S_IFREG|0660, st_size=0, ...}) = 0 <0.000006> [pid 1598] access("/var/mail/test03", R_OK|W_OK) = 0 <0.000006> [pid 1598] stat("/var/mail/test03", {st_mode=S_IFREG|0660, st_size=0, ...}) = 0 <0.000005> [pid 1598] getegid() = 504 <0.000013> [pid 1598] umask(0) = 077 <0.000004> [pid 1598] mkdir("/home/test03/mail/.imap/INBOX", 0770) = -1 ENOENT (No such file or directory) <0.000005> [pid 1598] umask(077) = 0 <0.000004> [pid 1598] umask(0) = 077 <0.000004> [pid 1598] mkdir("/home/test03/mail/.imap", 0700) = 0 <0.000070> [pid 1598] umask(077) = 0 <0.000004> [pid 1598] chown("/home/test03/mail/.imap", 4294967295, 4294967295) = 0 <0.000008> [pid 1598] umask(0) = 077 <0.000014> [pid 1598] mkdir("/home/test03/mail/.imap/INBOX", 0770) = 0 <0.000024> [pid 1598] umask(077) = 0 <0.000004> [pid 1598] chown("/home/test03/mail/.imap/INBOX", 4294967295, 12) = -1 EPERM (Operation not permitted) <0.000006> [pid 1598] rmdir("/home/test03/mail/.imap/INBOX") = 0 <0.000055> [pid 1598] open("/etc/group", O_RDONLY|O_CLOEXEC) = 14 <0.000007> [pid 1598] fcntl(14, F_GETFD) = 0x1 (flags FD_CLOEXEC) <0.000004> [pid 1598] fstat(14, {st_mode=S_IFREG|0644, st_size=644, ...}) = 0 <0.000004> [pid 1598] mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f98bbebc000 <0.000005> [pid 1598] read(14, "root:x:0:\nbin:x:1:bin,daemon\ndaemon:x:2:bin,daemon\nsys:x:3:bin,adm\nadm:x:4:adm,daemon\ntty:x:5:\ndisk:x:6:\nlp:x:7:daemon\nmem:x:8:\nkmem:x:9:\nwheel:x:10:\nmail:x:12:mail,postfix\nuucp:x:14:\nman:x:15:\ngames:x:20:\ngopher:x:30:\nvideo:x:39:\ndip:x:40:\nftp:x:50:\nlock:x:54:\naudio:x:63:\nnobody:x:99:\nusers:x:100:\nutmp:x:22:\nutempter:x:35:\nfloppy:x:19:\nvcsa:x:69:\ncdrom:x:11:\ntape:x:33:\ndialout:x:18:\nsaslauth:x:76:\npostdrop:x:90:\npostfix:x:89:\nsshd:x:74:\ntcpdump:x:72:\napache:x:48:\nwbpriv:x:88:\ncentos:x:500:\nCENTOS01:x:501:\nntp:x:38:\nabrt:x:173:\ndbus:x:81:\ndovecot:x:97:\ndovenull:x:499:\nmailnull:x:47:\nsmmsp:x:51:\ntest01:x:502:\ntest02:x:503:\ntest03:x:504:\n", 4096) = 644 <0.000008> [pid 1598] close(14) = 0 <0.000005> [pid 1598] munmap(0x7f98bbebc000, 4096) = 0 <0.000008> [pid 1598] getegid() = 504 <0.000004> [pid 1598] getegid() = 504 <0.000004> [pid 1598] open("/etc/group", O_RDONLY|O_CLOEXEC) = 14 <0.000006> [pid 1598] fstat(14, {st_mode=S_IFREG|0644, st_size=644, ...}) = 0 <0.000004> [pid 1598] mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f98bbebc000 <0.000005> [pid 1598] read(14, "root:x:0:\nbin:x:1:bin,daemon\ndaemon:x:2:bin,daemon\nsys:x:3:bin,adm\nadm:x:4:adm,daemon\ntty:x:5:\ndisk:x:6:\nlp:x:7:daemon\nmem:x:8:\nkmem:x:9:\nwheel:x:10:\nmail:x:12:mail,postfix\nuucp:x:14:\nman:x:15:\ngames:x:20:\ngopher:x:30:\nvideo:x:39:\ndip:x:40:\nftp:x:50:\nlock:x:54:\naudio:x:63:\nnobody:x:99:\nusers:x:100:\nutmp:x:22:\nutempter:x:35:\nfloppy:x:19:\nvcsa:x:69:\ncdrom:x:11:\ntape:x:33:\ndialout:x:18:\nsaslauth:x:76:\npostdrop:x:90:\npostfix:x:89:\nsshd:x:74:\ntcpdump:x:72:\napache:x:48:\nwbpriv:x:88:\ncentos:x:500:\nCENTOS01:x:501:\nntp:x:38:\nabrt:x:173:\ndbus:x:81:\ndovecot:x:97:\ndovenull:x:499:\nmailnull:x:47:\nsmmsp:x:51:\ntest01:x:502:\ntest02:x:503:\ntest03:x:504:\n", 4096) = 644 <0.000008> [pid 1598] close(14) = 0 <0.000004> [pid 1598] munmap(0x7f98bbebc000, 4096) = 0 <0.000007> [pid 1598] write(2, "\1\0101598 prefix=pop3(test03): \n", 29) = 29 <0.000021> [pid 1598] write(2, "\1\0041598 chown(/home/test03/mail/.imap/INBOX, -1, 12(mail)) failed: Operation not permitted (egid=504(test03), group based on /var/mail/test03)\n", 142) = 142 <0.000050> [pid 1598] write(2, "\1\0041598 mkdir(/home/test03/mail/.imap/INBOX) failed: Operation not permitted\n", 76) = 76 <0.000033>
以下が参考になる?
http://server-setting.info/centos/dovecot-fchmod-error.html
●mail_access_groups=mail が未設定の場合
(1) ユーザ作成
[root@LVS ~]# useradd test01 [root@LVS ~]# passwd test01 ユーザー test01 のパスワードを変更。 新しいパスワード: よくないパスワード: 異なる文字が十分に含まれていません よくないパスワード: 簡単すぎます 新しいパスワードを再入力してください: passwd: 全ての認証トークンが正しく更新できました。 [root@LVS ~]# [root@LVS ~]# [root@LVS ~]# ls -lR /var/spool/mail/ /var/spool/mail/: 合計 4 -rw-rw----. 1 CENTOS01 mail 0 1月 16 21:59 2014 CENTOS01 -rw-rw----. 1 centos mail 0 1月 16 21:58 2014 centos -rw------- 1 root root 745 8月 25 23:26 2014 root -rw-rw---- 1 test01 mail 0 8月 27 00:09 2014 test01★ユーザ作成時に生成 [root@LVS ~]# [root@LVS ~]# ls -alR /home/test01/ /home/test01/: 合計 20 drwx------ 2 test01 test01 4096 8月 27 00:09 2014 . drwxr-xr-x. 5 root root 4096 8月 27 00:09 2014 .. -rw-r--r-- 1 test01 test01 18 2月 22 06:09 2013 .bash_logout -rw-r--r-- 1 test01 test01 176 2月 22 06:09 2013 .bash_profile -rw-r--r-- 1 test01 test01 124 2月 22 06:09 2013 .bashrc [root@LVS ~]#
(2) pop3 に初回接続
[root@LVS ~]# telnet localhost pop3 Trying ::1... Connected to localhost. Escape character is '^]'. +OK Dovecot ready. user test01 +OK pass test -ERR [IN-USE] Couldn't open INBOX: Internal error occurred. Refer to server log for more information. [2014-08-27 00:11:14] Connection closed by foreign host. [root@LVS ~]#
以下ログ出力。
Aug 27 00:11:14 LVS dovecot: pop3-login: Login: user=<test01>, method=PLAIN, rip=::1, lip=::1, mpid=1430, secured Aug 27 00:11:14 LVS dovecot: pop3(test01): Error: chown(/home/test01/mail/.imap/INBOX, -1, 12(mail)) failed: Operation not permitted (egid=502(test01), group based on /var/mail/test01) Aug 27 00:11:14 LVS dovecot: pop3(test01): Error: mkdir(/home/test01/mail/.imap/INBOX) failed: Operation not permitted Aug 27 00:11:14 LVS dovecot: pop3(test01): Error: Couldn't open INBOX: Internal error occurred. Refer to server log for more information. [2014-08-27 00:11:14] Aug 27 00:11:14 LVS dovecot: pop3(test01): Couldn't open INBOX top=0/0, retr=0/0, del=0/0, size=0
以下ファイルの生成状況。
[root@LVS ~]# ls -lR /var/spool/mail/ /var/spool/mail/: 合計 4 -rw-rw----. 1 CENTOS01 mail 0 1月 16 21:59 2014 CENTOS01 -rw-rw----. 1 centos mail 0 1月 16 21:58 2014 centos -rw------- 1 root root 745 8月 25 23:26 2014 root -rw-rw---- 1 test01 mail 0 8月 27 00:09 2014 test01 [root@LVS ~]# [root@LVS ~]# [root@LVS ~]# ls -alR /home/test01/ /home/test01/: 合計 24 drwx------ 3 test01 test01 4096 8月 27 00:11 2014 . drwxr-xr-x. 5 root root 4096 8月 27 00:09 2014 .. -rw-r--r-- 1 test01 test01 18 2月 22 06:09 2013 .bash_logout -rw-r--r-- 1 test01 test01 176 2月 22 06:09 2013 .bash_profile -rw-r--r-- 1 test01 test01 124 2月 22 06:09 2013 .bashrc drwx------ 3 test01 test01 4096 8月 27 00:11 2014 mail★初回接続時に生成 /home/test01/mail: 合計 12 drwx------ 3 test01 test01 4096 8月 27 00:11 2014 . drwx------ 3 test01 test01 4096 8月 27 00:11 2014 .. drwx------ 2 test01 test01 4096 8月 27 00:11 2014 .imap /home/test01/mail/.imap: 合計 8 drwx------ 2 test01 test01 4096 8月 27 00:11 2014 . drwx------ 3 test01 test01 4096 8月 27 00:11 2014 .. [root@LVS ~]# [root@LVS ~]#
●mail_access_groups=mail が設定済み
(1) ユーザ作成
[root@LVS ~]# useradd test02 [root@LVS ~]# passwd test02 ユーザー test02 のパスワードを変更。 新しいパスワード: よくないパスワード: 異なる文字が十分に含まれていません よくないパスワード: 簡単すぎます 新しいパスワードを再入力してください: passwd: 全ての認証トークンが正しく更新できました。 [root@LVS ~]# [root@LVS ~]# [root@LVS ~]# ls -lR /var/spool/mail/ /var/spool/mail/: 合計 4 -rw-rw----. 1 CENTOS01 mail 0 1月 16 21:59 2014 CENTOS01 -rw-rw----. 1 centos mail 0 1月 16 21:58 2014 centos -rw------- 1 root root 745 8月 25 23:26 2014 root -rw-rw---- 1 test01 mail 0 8月 27 00:09 2014 test01 -rw-rw---- 1 test02 mail 0 8月 27 00:25 2014 test02 [root@LVS ~]# [root@LVS ~]# ls -alR /home/test02/ /home/test02/: 合計 20 drwx------ 2 test02 test02 4096 8月 27 00:25 2014 . drwxr-xr-x. 6 root root 4096 8月 27 00:25 2014 .. -rw-r--r-- 1 test02 test02 18 2月 22 06:09 2013 .bash_logout -rw-r--r-- 1 test02 test02 176 2月 22 06:09 2013 .bash_profile -rw-r--r-- 1 test02 test02 124 2月 22 06:09 2013 .bashrc [root@LVS ~]#
(2) pop3 に初回接続
[root@LVS ~]# telnet localhost pop3 Trying ::1... Connected to localhost. Escape character is '^]'. +OK Dovecot ready. user test02 +OK pass test +OK Logged in. stat +OK 0 0 quit +OK Logging out. Connection closed by foreign host. [root@LVS ~]#
以下ログ出力。
Aug 27 00:26:09 LVS dovecot: pop3-login: Login: user=<test02>, method=PLAIN, rip=::1, lip=::1, mpid=1480, secured Aug 27 00:26:19 LVS dovecot: pop3(test02): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
以下ファイルの生成状況。
[root@LVS ~]# ls -lR /var/spool/mail/ /var/spool/mail/: 合計 4 -rw-rw----. 1 CENTOS01 mail 0 1月 16 21:59 2014 CENTOS01 -rw-rw----. 1 centos mail 0 1月 16 21:58 2014 centos -rw------- 1 root root 745 8月 25 23:26 2014 root -rw-rw---- 1 test01 mail 0 8月 27 00:09 2014 test01 -rw-rw---- 1 test02 mail 0 8月 27 00:25 2014 test02 [root@LVS ~]# [root@LVS ~]# [root@LVS ~]# [root@LVS ~]# ls -alR /home/test02/ /home/test02/: 合計 24 drwx------ 3 test02 test02 4096 8月 27 00:26 2014 . drwxr-xr-x. 6 root root 4096 8月 27 00:25 2014 .. -rw-r--r-- 1 test02 test02 18 2月 22 06:09 2013 .bash_logout -rw-r--r-- 1 test02 test02 176 2月 22 06:09 2013 .bash_profile -rw-r--r-- 1 test02 test02 124 2月 22 06:09 2013 .bashrc drwx------ 3 test02 test02 4096 8月 27 00:26 2014 mail /home/test02/mail: 合計 12 drwx------ 3 test02 test02 4096 8月 27 00:26 2014 . drwx------ 3 test02 test02 4096 8月 27 00:26 2014 .. drwx------ 3 test02 test02 4096 8月 27 00:26 2014 .imap /home/test02/mail/.imap: 合計 12 drwx------ 3 test02 test02 4096 8月 27 00:26 2014 . drwx------ 3 test02 test02 4096 8月 27 00:26 2014 .. drwxrwx--- 2 test02 mail 4096 8月 27 00:26 2014 INBOX /home/test02/mail/.imap/INBOX: 合計 12 drwxrwx--- 2 test02 mail 4096 8月 27 00:26 2014 . drwx------ 3 test02 test02 4096 8月 27 00:26 2014 .. -rw-rw---- 1 test02 mail 148 8月 27 00:26 2014 dovecot.index.log [root@LVS ~]#
●もう一度、mail_access_groups=mail が未設定の場合 (ただしユーザは、mail グループ)
※ユーザのグループ設定に関連するか確認するため。
結論としては、グループ設定に関連していた。
デフォルトから追加した設定は、以下の設定のみ
mail_location = mbox:~/mail:INBOX=/var/mail/%u
(1) ユーザ作成
[root@LVS ~]# useradd -g mail test04 [root@LVS ~]# passwd test04 ユーザー test04 のパスワードを変更。 新しいパスワード: よくないパスワード: 異なる文字が十分に含まれていません よくないパスワード: 簡単すぎます 新しいパスワードを再入力してください: passwd: 全ての認証トークンが正しく更新できました。 [root@LVS ~]# id test04 uid=505(test04) gid=12(mail) 所属グループ=12(mail) [root@LVS ~]# [root@LVS ~]# ls -lR /var/spool/mail/test04 -rw-rw---- 1 test04 mail 0 8月 28 01:09 2014 /var/spool/mail/test04 [root@LVS ~]# [root@LVS ~]# ls -laR /home/test04/ /home/test04/: 合計 20 drwx------ 2 test04 mail 4096 8月 28 01:09 2014 . drwxr-xr-x. 8 root root 4096 8月 28 01:09 2014 .. -rw-r--r-- 1 test04 mail 18 2月 22 06:09 2013 .bash_logout -rw-r--r-- 1 test04 mail 176 2月 22 06:09 2013 .bash_profile -rw-r--r-- 1 test04 mail 124 2月 22 06:09 2013 .bashrc [root@LVS ~]#
(2) pop3 に初回接続
[root@LVS ~]# telnet localhost 110 Trying ::1... Connected to localhost. Escape character is '^]'. +OK Dovecot ready. user test04 +OK pass test +OK Logged in. stat +OK 0 0 quit +OK Logging out. Connection closed by foreign host. [root@LVS ~]#
以下ログ出力。
Aug 28 01:10:26 LVS dovecot: pop3-login: Login: user=<test04>, method=PLAIN, rip=::1, lip=::1, mpid=1556, secured Aug 28 01:10:29 LVS dovecot: pop3(test04): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
以下ファイルの生成状況。
[root@LVS ~]# ls -lR /var/spool/mail/test04 -rw-rw---- 1 test04 mail 0 8月 28 01:09 2014 /var/spool/mail/test04 [root@LVS ~]# [root@LVS ~]# ls -laR /home/test04/ /home/test04/: 合計 24 drwx------ 3 test04 mail 4096 8月 28 01:10 2014 . drwxr-xr-x. 8 root root 4096 8月 28 01:09 2014 .. -rw-r--r-- 1 test04 mail 18 2月 22 06:09 2013 .bash_logout -rw-r--r-- 1 test04 mail 176 2月 22 06:09 2013 .bash_profile -rw-r--r-- 1 test04 mail 124 2月 22 06:09 2013 .bashrc drwx------ 3 test04 mail 4096 8月 28 01:10 2014 mail /home/test04/mail: 合計 12 drwx------ 3 test04 mail 4096 8月 28 01:10 2014 . drwx------ 3 test04 mail 4096 8月 28 01:10 2014 .. drwx------ 3 test04 mail 4096 8月 28 01:10 2014 .imap /home/test04/mail/.imap: 合計 12 drwx------ 3 test04 mail 4096 8月 28 01:10 2014 . drwx------ 3 test04 mail 4096 8月 28 01:10 2014 .. drwxrwx--- 2 test04 mail 4096 8月 28 01:10 2014 INBOX /home/test04/mail/.imap/INBOX: 合計 12 drwxrwx--- 2 test04 mail 4096 8月 28 01:10 2014 . drwx------ 3 test04 mail 4096 8月 28 01:10 2014 .. -rw-rw---- 1 test04 mail 148 8月 28 01:10 2014 dovecot.index.log [root@LVS ~]#