[Dovecot] LMTP with virtual and system users

Adrian Zaugg adi at ente.limmat.ch
Thu Dec 26 13:20:22 EET 2013

Hi Philipp

You can use exim to prepare the address as you wish: only the user name
for pam users and the full address for virtual users.

Configure a new router to strip the domain part for pam users:

	debug_print = "R: strip domain for local pam users"
        driver = redirect
	domains = @ : localhost : ${primary_hostname}
        data = ${local_part}
        redirect_router = local_user

I'm not 100% sure of the domains condition; it should restrict the
router to your domain(s) where your pam users receive their email. The
redirect_router designates the router which routes your local deliveries
to your lmtp transport. Place the new router to run just before your
"local_user" router.

Since your config works for your virtual users, you don't need to do
anything in addition.

Regards, Adrian.

Am 25.12.13 08:16 schrieb Philipp Kolmann:
> 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

More information about the dovecot mailing list