[Dovecot] LMTP with virtual and system users

Philipp Kolmann kolmann at zid.tuwien.ac.at
Wed Dec 25 09:16:56 EET 2013


Hi,

I have a mailsystem where i have some local users with shell access and 
full home dirs which receive mail and also several SQL virtual users 
only for mail.
With the virtual users, everything works fine. Mail is delivered via 
LMTP and also sieve works :)
The SQL Lookup knows what to do with username at domain.com

The problem is the system user. If exim delivers the mail to the lmtp 
socket, the LMTPd can't find username at local.host
I would be able to specify the global auth_username_format=%n but then 
my SQL queries break and I like the possibility to have xx at domain1.com 
and xx at domain2.com routed to two different accounts.

As I have seen in the source, I can't specify username_format=%n in the 
passdb {  driver = pam } backend. Do you have any suggestion how to 
solve this issue?

thanks
Philipp


-------------- next part --------------
# 2.1.7: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-4-686-pae i686 Debian 7.3 
auth_debug = yes
auth_verbose = yes
first_valid_uid = 100
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
mail_debug = yes
mail_location = maildir:~/Maildir
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = 
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
passdb {
  driver = pam
}
plugin {
  mail_log_fields = uid box msgid size from subject flags
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve
}
postmaster_address = postmaster at rudolfina.at
protocols = " imap lmtp sieve"
service auth {
  unix_listener auth-client {
    group = Debian-exim
    mode = 0660
  }
}
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
  process_min_avail = 0
  service_count = 1
  vsz_limit = 64 M
}
ssl_cert = </etc/exim4/exim.crt
ssl_key = </etc/exim4/exim.key
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
userdb {
  driver = passwd
}
protocol lmtp {
  mail_plugins = " quota sieve"
}
protocol lda {
  mail_plugins = " sieve"
}
protocol imap {
  mail_plugins = " quota"
}
protocol sieve {
  mail_max_userip_connections = 10
  managesieve_implementation_string = Dovecot Pigeonhole
  managesieve_logout_format = bytes=%i/%o
  managesieve_max_compile_errors = 5
  managesieve_max_line_length = 65536
}
-------------- next part --------------
user_query = \
  SELECT concat('maildir:/var/spool/virtual_mail/', mailbox,'/Maildir/') as mail, \
         concat('/var/spool/virtual_mail/', mailbox,'/') as home, \
         100 as uid, 102 as gid \
  FROM email \
  WHERE mailbox = '%u'

password_query = \
  SELECT mailbox as user, \
         boxpass as password \
  FROM email \
  WHERE mailbox = '%u'


More information about the dovecot mailing list