[Dovecot] missing .dovecot.lda-dupes file in LDAP/virtual user environment

Claudio Tassini claudio.tassini at gmail.com
Thu Aug 27 16:41:07 EEST 2009


Hi,
I'm running a postfix/dovecot/ldap setup and it works quite fine. I am now
trying to setup a global sieve script to forward all incoming mails to a
local user for vacation management (gnarwl). I can't user the vacation
extension of the sieve script itself because it is not configurable enough
(each user has his vacation message and status stored in LDAP).

The problem is that when deliver runs the sieve script, it tries to create
the .dovecot.lda-dupes inside the user homedir, even if I didn't use the
vacation feature in the script. This is the error I get:


Aug 27 15:19:23 myhostname deliver(user1 at mydomain.it): file_dotlock_create(
mydomain.it/1/user1 at mydomain.it/Maildir/.dovecot.lda-dupes) failed: No such
file or directory

Important sections from config:

master.cf deliver:
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver -f ${sender} -d
${recipient}

dovecot -n extract:
mail_location: maildir:/maildirs/%h
auth default:
  passdb:
    driver: ldap
    args: /etc/dovecot/dovecot-ldap.conf
  userdb:
    driver: passwd
  userdb:
    driver: ldap
    args: /etc/dovecot/dovecot-ldap.conf
plugin:
  quota: maildir:User Quota
  acl: vfile:/etc/dovecot/acls
  sieve_global_path: /etc/dovecot/default.sieve

and extract from dovecot-ldap.conf :
user_attrs = mailMessageStore=home,maildirquota=quota_rule=*:backend=%$
user_filter = (&(|(mail=%u at mydomain.it
)(mail=%u)(mailalternateaddress=%u)(mailequivalentaddress=%u))(objectclass=mailrecipient)(imap-status=true))
pass_attrs =
mail=user,userPassword=password,mailMessageStore=userdb_home,mailquota=userdb_quota_rule=*:backend=%$
pass_filter = (&(|(mail=%u at mydomain.it
)(mail=%u)(mailalternateaddress=%u)(mailequivalentaddress=%u))(objectclass=mailrecipient)(imap-status=true))

The global sieve script:

require ["copy"];
if not address :is "to" "gnarwl at localhost" {
redirect :copy "gnarwl at localhost";
}

The format of the "home" userdb extra field as returned from the ldap is "
mydomain.it/1/user1 at mydomain.it/Maildir/" . This value is normally appended
to the mail_location global parameter ( /maildirs ) to build a path of the
form "/maildirs/mydomain.it/1/user1 at mydomain.it/Maildir" . This works
flawlessly when delivering mail, but seems that the sieve plugin ignores the
"mail_location" and tries to write the dupes file in the home as it is
returned from the ldap.

Questions are:

1) Is it normal that lda tries to create the dupes file even if I am not
using the vacation extension at all?
2) How can I tell LDA/sieve/whatever to prepend the mail_location to the
home directory of the user for proper creation of the file?

Many thanks in advance.

-- 
Claudio Tassini


More information about the dovecot mailing list