Timo Sirainen wrote:
On Mon, 2008-05-12 at 10:46 -0400, Roy McMorran wrote:
... but Dovecot isn't picking up the automounted directories. Consider the case of Arthur Dent, test user:
May 12 10:30:24 testbed dovecot: [ID 107833 mail.info] imap-login: Login: user=<adent>, method=PLAIN, rip=xxx.xxx.xxx.242, lip=xxx.xxx.xxx.242, secured May 12 10:30:24 testbed dovecot: [ID 107833 mail.error] IMAP(adent): mkdir_parents(/home/adent/Mail) failed: No such file or directory May 12 10:30:24 testbed dovecot: [ID 107833 mail.error] IMAP(adent): Mail storage creation failed with mail_location: mbox:/home/adent/Mail:INBOX=/var/mail/adent May 12 10:30:24 testbed dovecot: [ID 961074 mail.error] child 21816 (imap) returned error 89
... Before the above mkdir() Dovecot should chdir() to user's home directory. So if LDAP returns user's home directory, I'd think the chdir() causes automount?
There must be some sort of race condition happening here with automount. I modified the code in mail-process.c to repeat the chdir (until CHDIR_TIMEOUT) until it succeeds, and it usually succeeds on the 2nd try.
Eg (I've added some additional logging for debug):
May 14 16:21:04 testbed dovecot: [ID 667285 mail.info] try 0 of chdir(/home/adent) May 14 16:21:04 testbed dovecot: [ID 107833 mail.info] imap-login: Login: user=<adent>, method=PLAIN, rip=xxx.xxx.xxx.242, lip=xxx.xxx.xxx.242, secured May 14 16:21:04 testbed dovecot: [ID 791996 mail.info] chdir returned -1 with errno 2 May 14 16:21:05 testbed dovecot: [ID 667285 mail.info] try 1 of chdir(/home/adent) May 14 16:21:05 testbed dovecot: [ID 791996 mail.info] chdir returned 0 May 14 16:21:05 testbed dovecot: [ID 107833 mail.info] IMAP(adent): Disconnected: Logged out bytes=23/104
I still have no idea why this is happening. A simple standalone C program with the alarm/setegid/seteuid/chdir bits (excerpted from the original mail-process.c ) works just fine.
--
Roy McMorran Systems Administrator MDI Biological Laboratory mcmorran@mdibl.org