[Dovecot] LMTP with virtual and system users

Adrian Zaugg adi at ente.limmat.ch
Wed Jan 1 19:25:47 EET 2014


Hi Philipp

You are completely right, the proposed solution doesn't work. It seems
exim always qualifies an address without a domain, I believe this is
because LMTP requiers to get only qualified addresses (LMTP is based on
SMTP and the RFC, if I read it correctly specifies it like this).

So, another solution would be to use LDA for your local users and LMTP
for the rest. The configuration for exim would be: a router and a
transport for your local users using LDA, and your virtual users setup
as you have it using LMTP.

local_user:
        debug_print = "R: local_user for $local_part@$domain"
        driver = accept
        domains =  @ : localhost : ${primary_hostname}
        check_local_user
        transport = dovecot_lda
        cannot_route_message = Unknown user

dovecot_lda:
	driver = pipe
	command = /usr/lib/dovecot/dovecot-lda \
		  	-f $sender_address \
			-a $original_local_part@$original_domain
	log_output
	delivery_date_add
	return_path_add
	envelope_to_add
	user = $local_part
	group = mail
	temp_errors = 64 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 78


Please check man dovecot-lda and the dovecot wiki
(http://wiki2.dovecot.org/LDA/Exim) for details. Also check the
permissions you need for dovecot-lda to write to your mailspool (user
and group options from the transport).

I haven't tried the above, but I think it works like this ...

Best regards, Adrian.


Am 30.12.13 09:40 schrieb Philipp Kolmann:
> Hi Adrian,
> 
> Am 26.12.2013 12:20, schrieb Adrian Zaugg:
>> 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:
>>
>> local_pam_users:
>>     debug_print = "R: strip domain for local pam users"
>>          driver = redirect
>>     check_local_user
>>     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.
> 
> I had tried this once already. I have used your snipplet and attached
> the debug output from exim. Sadly it didn't work, because the mtp
> process got the foll email again and not just the username.
> 
> thanks
> Philipp
> 
> 
> 


More information about the dovecot mailing list