[Dovecot] chroot and raw logging
I'm not sure if it's even intended to work in this particular case, but there's a problem when chroot is explicitely defined and rawlogging is used. Rawlog respects chroot point, without being actually chrooted.
Consider configurtion as below, with two cases (dovecot.rawlog dir is of course created earlier, with appropriate uid/gid).
dovecot.userdb: test::10000:10000::/home/vmail/test.tld/test/./::userdb_mail=maildir:~/Maildir:
ktrace will show: 18206 rawlog CALL sigprocmask(0x3,0) 18206 rawlog RET sigprocmask -65793/0xfffefeff 18206 rawlog CALL lstat(0x81fbe028,0xcfbcc980) 18206 rawlog NAMI "/dovecot.rawlog" 18206 rawlog RET lstat -1 errno 2 No such file or directory 18206 rawlog CALL sigprocmask(0x1,0xffffffff)
dovecot.userdb: test::10000:10000::/home/vmail/test.tld/./test::userdb_mail=maildir:~/Maildir:
1116 rawlog CALL lstat(0x85768028,0xcfbc1d20) 1116 rawlog NAMI "test/dovecot.rawlog" 1116 rawlog RET lstat -1 errno 2 No such file or directory 1116 rawlog CALL sigprocmask(0x1,0xffffffff) 1116 rawlog RET sigprocmask 0
I also noticed something else (not rawlog related). If I do a silly (blame my curiosity ;) thing like:
valid_chroot_dirs: / and set chroot point as /./home/vmail/test.tld/test/ in passwd-file
Dovecot will try to stat home/vmail/test.tld/test/ (and fail w/o beginning /), then chdir to /tmp, start pop3 or imap process, and recreate home/vmail/test.tld/test under /tmp.
17027 dovecot CALL chdir(0x87a4b29c) 17027 dovecot NAMI "home/vmail/test.tld/test/" 17027 dovecot RET chdir -1 errno 2 No such file or directory 17027 dovecot CALL setitimer(0,0xcfbe7020,0xcfbe7010) 17027 dovecot RET setitimer 0 17027 dovecot CALL seteuid(0) 17027 dovecot RET seteuid 0 17027 dovecot CALL chdir(0x3c001b72) 17027 dovecot NAMI "/tmp" 17027 dovecot RET chdir 0 ... 17027 dovecot CALL sigprocmask(0x3,0) 17027 dovecot RET sigprocmask -65793/0xfffefeff 17027 dovecot CALL execve(0x87a4bc38,0x87a4bc70,0x84fdb900) 17027 dovecot NAMI "/usr/local/libexec/dovecot/pop3" ... 17027 pop3 CALL mkdir(0x85f5a2b0,0x1ff) 17027 pop3 NAMI "home/vmail/test.tld/test//Maildir" 17027 pop3 RET mkdir -1 errno 2 No such file or directory 17027 pop3 CALL mkdir(0x85f5a2e0,0x1ff) 17027 pop3 NAMI "home/vmail/test.tld/test/" 17027 pop3 RET mkdir -1 errno 2 No such file or directory 17027 pop3 CALL mkdir(0x85f5a328,0x1ff) 17027 pop3 NAMI "home/vmail/test.tld/test" 17027 pop3 RET mkdir -1 errno 2 No such file or directory 17027 pop3 CALL mkdir(0x85f5a348,0x1ff) ...
and so on, then it creates all the home/vmail/... dirs
Configuration:
openbsd 3.9, i386, dovecot 1.0-rc28
dovecot.userdb: test::10000:10000::/home/vmail/test.tld/test/./::userdb_mail=maildir:~/Maildir:
dovecot.passdb: test:{PLAIN}test:
base_dir: /var/dovecot/ protocols: imap imaps pop3 pop3s ssl_listen: * ssl_ca_file: /etc/ssl/cert_bundle.pem ssl_cert_file: /etc/ssl/ca_ppgk/certs/fetch_crt.pem ssl_key_file: /etc/ssl/ca_ppgk/private/fetch_key.pem verbose_ssl: yes login_dir: /var/dovecot/login login_executable(default): /usr/local/libexec/dovecot/imap-login login_executable(imap): /usr/local/libexec/dovecot/imap-login login_executable(pop3): /usr/local/libexec/dovecot/pop3-login login_greeting: Dovecot IMAP server ready. login_greeting_capability(default): yes login_greeting_capability(imap): yes login_greeting_capability(pop3): no valid_chroot_dirs: /var/mail:/home/regular:/home/vmail verbose_proctitle: yes first_valid_uid: 1999 first_valid_gid: 10 mail_location: mbox:~/Mail:INBOX=/var/mail/%u mail_debug: yes fsync_disable: yes lock_method: fcntl maildir_copy_with_hardlinks: yes mbox_read_locks: fcntl mbox_write_locks: fcntl mail_executable(default): /usr/local/libexec/dovecot/imap mail_executable(imap): /usr/local/libexec/dovecot/imap mail_executable(pop3): /usr/local/libexec/dovecot/pop3 mail_plugin_dir(default): /usr/local/lib/dovecot/imap mail_plugin_dir(imap): /usr/local/lib/dovecot/imap mail_plugin_dir(pop3): /usr/local/lib/dovecot/pop3 imap_client_workarounds(default): outlook-idle delay-newmail imap_client_workarounds(imap): outlook-idle delay-newmail imap_client_workarounds(pop3): outlook-idle pop3_uidl_format(default): pop3_uidl_format(imap): pop3_uidl_format(pop3): %08Xu%08Xv pop3_client_workarounds(default): pop3_client_workarounds(imap): pop3_client_workarounds(pop3): outlook-no-nuls oe-ns-eoh auth default: mechanisms: plain login verbose: yes debug: yes passdb: driver: passwd-file args: /etc/dovecot.passdb passdb: driver: bsdauth userdb: driver: passwd-file args: /etc/dovecot.userdb userdb: driver: passwd socket: type: listen client: path: /var/spool/postfix/private/auth mode: 432 user: postfix group: postfix master:
On 28.3.2007, at 13.34, Michal Soltys wrote:
I'm not sure if it's even intended to work in this particular case, but there's a problem when chroot is explicitely defined and rawlogging is used. Rawlog respects chroot point, without being actually chrooted.
I did several fixes now. These should fix them:
http://www.dovecot.org/list/dovecot-cvs/2007-March/008412.html http://www.dovecot.org/list/dovecot-cvs/2007-March/008413.html
Timo Sirainen wrote:
I did several fixes now. These should fix them:
http://www.dovecot.org/list/dovecot-cvs/2007-March/008412.html http://www.dovecot.org/list/dovecot-cvs/2007-March/008413.html
Seems everything works well now.
participants (2)
-
Michal Soltys
-
Timo Sirainen