[Dovecot] Fixing lda user_query error introduces new fault in mail delivery

Frank Church voipfc at googlemail.com
Wed Jul 11 12:26:58 EEST 2007


I was getting these errors below and after fixing it delivery errors
were introduced

dovecot/error_log
==============
dovecot: Jul 11 06:19:28 Error: auth-worker(default):
sql(user at domain.com): User query failed: Table 'postfix.users' doesn't
exist
deliver(user at domain.com): Jul 11 06:19:28 Error: BUG: Unexpected input
from auth master: FAIL  1
dovecot: Jul 11 06:21:41 Error: auth-worker(default):
sql(admin at achimota.com,127.0.0.1): User query failed: Table
'postfix.users' doesn't exist
==============

It turns out that using prefetch with dovecot lda required a
user_query in dovecot/sql.conf
I fixed it by adding this query to dovecot/sql.conf

user_query = SELECT concat('/var/vmail/', maildir) as home, 601 as
uid, 12 as gid FROM mailbox WHERE username = '%u' AND active = '1'

This resulted in a new mailbox /var/vmail/domain.com/user at domain.com
being created when although /var/vmail/domain.com/user already exists
and is what the query returns

It seems that prior to that when the query was failing the mail was
properly delivered somehow by dovecot, but fixing it created a new
problem.

It appears that the mail_location = maildir:/var/vmail/%d/%u in
dovecot.conf could be related as %u is user at domain.com

Is there a fix for this? Does the deliver line in postfix/master.cf
need to be adjusted in some way

I will probably have to disable the user_query and restart for the time being

dovecot version - 1.0rc26

Here is dovecot.conf
===============
ssl_cert_file = /etc/pki/dovecot/certs/abc.domain.net.crt
ssl_key_file = /etc/pki/dovecot/private/abc.domain.net.key
ssl_ca_file = /etc/pki/dovecot/certs/ca-bundle.crt
mail_location = maildir:/var/vmail/%d/%u
mail_extra_groups = mail
first_valid_uid = 601
last_valid_uid = 601
maildir_copy_with_hardlinks = yes
protocol imap {
  mail_plugins = quota imap_quota
  imap_client_workarounds = outlook-idle delay-newmail
}
protocol pop3 {
  mail_plugins = quota
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
protocol lda {
  postmaster_address = postmaster at domain.net
  mail_plugins = quota
  log_path = /var/log/dovecot/deliver.log
  info_log_path = /var/log/dovecot/deliver.log
}
auth default {
  mechanisms = plain
  passdb sql {
    args = /etc/dovecot/sql.conf
  }
  userdb prefetch {
  }
  userdb sql {
    args = /etc/dovecot/sql.conf
  }
  user = nobody
  socket listen {
    master {
      path = /var/run/dovecot/auth-master
      mode = 0660
      user = vmail
      group = mail
    }
    client {
      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = mail
    }
  }
}
dict {
}
plugin {
  quota = maildir:storage=10240:messages=1000
  acl = vfile:/etc/dovecot/acls
  trash = /etc/dovecot/trash.conf
}

dovecot/sql.conf
==============
default_pass_scheme = PLAIN-MD5
driver = mysql
connect = host=localhost dbname=postfix user=dovecot password=password
password_query = SELECT username as user, password,
concat('/var/vmail/', maildir) as userdb_home,
concat('maildir:/var/vmail/', maildir) as userdb_mail, 601 as
userdb_uid, 12 as userdb_gid, concat('dirsize:storage=', cast(quota as
char)) AS userdb_quota FROM mailbox WHERE username = '%u' AND active =
'1'
user_query = SELECT concat('/var/vmail/', maildir) as home, 601 as
uid, 12 as gid FROM mailbox WHERE username = '%u' AND active = '1'

dovecot line in postfix/master.cf
=======================
# Dovecot LDA
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:mail argv=/usr/local/libexec/dovecot/deliver
-d ${recipient}

 - Frank


More information about the dovecot mailing list