[Dovecot] LMTP with virtual and system users

Philipp Kolmann kolmann at zid.tuwien.ac.at
Tue Jan 7 14:21:46 EET 2014


Hi Adrian,

thanks for your reply. I have also thought in this direction already but 
I didn't want to have lda SUID root...

I saw that the Passwd-file passdb supports username_format as argument. 
Would it be possible to add this feature also to the LMTP passdb driver?

thanks
Philipp

On 01/01/14 18:25, Adrian Zaugg wrote:
> 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
>>
>>
>>


-- 
-----------------------------------------------------------------------
DI Mag. Philipp Kolmann                  mail: kolmann at zid.tuwien.ac.at
Technische Universitaet Wien                  web: www.zid.tuwien.ac.at
Zentraler Informatikdienst (ZID)                 tel: +43(1)58801-42011
Wiedner Hauptstr. 8-10, A-1040 Wien                        DVR: 0005886
-----------------------------------------------------------------------



More information about the dovecot mailing list