Wolfgang.Friebel at desy.de
2010-Jan-04  17:15 UTC
[Dovecot] managesieve does call a wrong chown
After upgrading from dovecot 1.2.3, managesieve 0.11.8, sieve 0.1.11 to
dovecot 1.2.9, managesieve 0.11.10 and sieve 0.1.14 users who do not have 
sieve rules yet and use managesieve for the first time do trigger error 
messages in the log file (for the authenticated user ggg in group syspr):
Jan  4 17:35:26 apollo dovecot: MANAGESIEVE(ggg): 
chown(/var/spool/sieve/ggg, -1, 0(root)) failed: Operation not permitted 
(egid=203(syspr))
Jan  4 17:35:26 apollo dovecot: MANAGESIEVE(ggg): sieve-storage: 
sieve_storage_verify_dir(/var/spool/sieve/ggg/tmp) failed: Operation not 
permitted
Jan  4 17:35:26 apollo dovecot: MANAGESIEVE(ggg): Fatal: Failed to create 
sieve storage with data: /var/spool/sieve/ggg
Anyway the filter rules get created (used avelsieve) and the filter does 
get compiled when the first mail hits the rule. Subsequent invocations of 
managesieve do not try to change the group ownership of the directory.
Looks like an annoyance only, but I would feel more comfortable w.o. the 
error messages.
the dovecot -n output:
# 1.2.9: /etc/dovecot.conf
# OS: Linux 2.6.18-164.6.1.el5 x86_64 Scientific Linux SL release 5.4 (Boron) 
protocols: imap imaps managesieve
listen(default): *
listen(imap): *
listen(managesieve): *:2009
shutdown_clients: no
login_dir: /var/run/dovecot/login
login_executable(default): /usr/libexec/dovecot/imap-login
login_executable(imap): /usr/libexec/dovecot/imap-login
login_executable(managesieve): /usr/libexec/dovecot/managesieve-login
login_processes_count: 5
login_max_processes_count: 512
verbose_proctitle: yes
mail_location: maildir:~/Maildir
mmap_disable: yes
fsync_disable: yes
lock_method: dotlock
maildir_copy_with_hardlinks: no
mbox_read_locks: dotlock flock
mbox_write_locks: dotlock flock
mail_drop_priv_before_exec: yes
mail_executable(default): /usr/libexec/dovecot/imap
mail_executable(imap): /usr/libexec/dovecot/imap
mail_executable(managesieve): /usr/libexec/dovecot/managesieve
mail_plugins(default): quota imap_quota zlib acl imap_acl listescape
mail_plugins(imap): quota imap_quota zlib acl imap_acl listescape
mail_plugins(managesieve): 
mail_plugin_dir(default): /usr/lib64/dovecot/imap
mail_plugin_dir(imap): /usr/lib64/dovecot/imap
mail_plugin_dir(managesieve): /usr/lib64/dovecot/managesieve
imap_client_workarounds(default): delay-newmail netscape-eoh
tb-extra-mailbox-sep outlook-idle
imap_client_workarounds(imap): delay-newmail netscape-eoh tb-extra-mailbox-sep
outlook-idle
imap_client_workarounds(managesieve): 
namespace:
   type: private
   separator: /
   location: maildir:~/Maildir
   inbox: yes
   list: yes
   subscriptions: yes
namespace:
   type: private
   separator: /
   prefix: #mbox/
   location: mbox:~/mail:CONTROL=~/mboxctrl
   hidden: yes
   list: no
   subscriptions: yes
lda:
   postmaster_address: postmaster at ifh.de
   mail_plugins: sieve quota acl
   sieve_global_path: /var/spool/sieve/default.sieve
   quota_full_tempfail: yes
   auth_socket_path: /var/run/dovecot/auth-master
   fsync_disable: no
auth default:
   mechanisms: gssapi gss-spnego login plain
   realms: IFH.DE DESY.DE
   cache_size: 32
   passdb:
     driver: pam
     args: max_requests=1 cache_key=%u
   userdb:
     driver: passwd-file
     args: /etc/userdb
   socket:
     type: listen
     client:
       path: /var/run/dovecot/auth-client
       mode: 432
     master:
       path: /var/run/dovecot/auth-master
       mode: 438
plugin:
   quota: maildir:User Quota
   quota_rule: *:storage=1000MB
   quota_rule2: INBOX:storage=1000MB
   quota_rule3: Trash:ignore
   acl: vfile:/etc/dovecot-acls:cache_secs=300
   acl_shared_dict: file:/var/spool/shared/shared-mailboxes.db
   sieve_storage: /var/spool/sieve/%u
   sieve: /var/spool/sieve/%u.sieve
   quota_warning: storage=95%% /usr/local/bin/mailquota-warning.sh 95
   quota_warning2: storage=80%% /usr/local/bin/mailquota-warning.sh 80
   quota_warning3: storage=60%% /usr/local/bin/mailquota-warning.sh 60
-- 
Wolfgang Friebel                   Deutsches Elektronen-Synchrotron DESY
Phone/Fax:  +49 33762 77372/216    Platanenallee 6
Mail: Wolfgang.Friebel AT desy.de  D-15738 Zeuthen  Germany
Wolfgang.Friebel at desy.de
2010-Jan-06  14:54 UTC
[Dovecot] managesieve does call a wrong chown
On Mon, 4 Jan 2010, Wolfgang.Friebel at desy.de wrote:> After upgrading from dovecot 1.2.3, managesieve 0.11.8, sieve 0.1.11 to > dovecot 1.2.9, managesieve 0.11.10 and sieve 0.1.14 users who do not have > sieve rules yet and use managesieve for the first time do trigger error > messages in the log file (for the authenticated user ggg in group syspr): > > Jan 4 17:35:26 apollo dovecot: MANAGESIEVE(ggg): chown(/var/spool/sieve/ggg, > -1, 0(root)) failed: Operation not permitted (egid=203(syspr)) > Jan 4 17:35:26 apollo dovecot: MANAGESIEVE(ggg): sieve-storage: > sieve_storage_verify_dir(/var/spool/sieve/ggg/tmp) failed: Operation not > permitted > Jan 4 17:35:26 apollo dovecot: MANAGESIEVE(ggg): Fatal: Failed to create > sieve storage with data: /var/spool/sieve/ggg >replying to my own mail :-) I did try to look into the code and see where this chown(dir, -1, 0) is coming from. It looks like the call is in mkdir_chown invoked in dovecot-1.2-managesieve-0.11.10/src/lib-sievestorage/sieve-storage.c line 249. This piece of code is (if I understand it correctly) trying to set the group permissions according to the parent directory (assuming that the sieve storage is somewhere in the users home dir). I did however choose to have a different dir layout, the sieve storage is under /var/spool/sieve/ which has permissions 1777 and is owned by root:root. Therefore the chown(dir, -1, 0) call is failing, as the parent dir does not belong to the group of the user but to root. As the directory structure is nevertheless created (with the correct permissions), the next use of managesieve does no longer complain about wrong permissions and managesieve is correctly working. Should I change my choice of sieve_dir as suggested in the wiki: # Directory for :personal include scripts. The default is to use home directory. sieve_dir = %h/sieve or is my setting a correct alternative? Best regards -- Wolfgang Friebel Deutsches Elektronen-Synchrotron DESY Phone/Fax: +49 33762 77372/216 Platanenallee 6 Mail: Wolfgang.Friebel AT desy.de D-15738 Zeuthen Germany