Contents
1. Using LMTP over UNIX Socket
2. Using LMTP over TCP Socket
3. Striping domain to avoid user unknown / doesn't exist error
4. Verifying recipients using LMTP
5. Delivering mails case insensitively
Exim provides support for LMTP over UNIX sockets using the LMTP transport
[http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_lmtp_transport.html],
your distribution may/not provide this, run exim -bV and check for 'lmtp' in
'Transports:'. Support for LMTP over TCP sockets is provided by the SMTP
transport
[http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_smtp_transport.html].
Using LMTP over UNIX Socket
---------------------------
Use this configuration if dovecot runs on the same host as exim.
Example router:
---%<-------------------------------------------------------------------------
local_user:
debug_print = "R: local_user for $local_part@$domain"
driver = accept
domains = +local_domains
check_local_user
transport = dovecot_lmtp
cannot_route_message = Unknown user
---%<-------------------------------------------------------------------------
Example transport:
---%<-------------------------------------------------------------------------
dovecot_lmtp:
driver = lmtp
socket = /var/run/dovecot/lmtp
#maximum number of deliveries per batch, default 1
batch_max = 200
#allow suffixes/prefixes (default unset)
rcpt_include_affixes
---%<-------------------------------------------------------------------------
Using LMTP over TCP Socket
--------------------------
Example router:
---%<-------------------------------------------------------------------------
local_user:
transport = dovecot_lmtp
domains = +local_domains
driver = manualroute
route_list = "* 192.168.1.0 byname"
#if destination server is the local host enable this
#self = send
---%<-------------------------------------------------------------------------
Set IP and port as appropriate to your setup.
Example transport:
---%<-------------------------------------------------------------------------
dovecot_lmtp:
driver = smtp
#allow suffixes/prefixes (default unset)
rcpt_include_affixes
protocol = lmtp
port = 2525
---%<-------------------------------------------------------------------------
Striping domain to avoid user unknown / doesn't exist error
-----------------------------------------------------------
If you are using a userdb which does not have domain names, you may need to add
a setting to 20-lmtp.conf
---%<-------------------------------------------------------------------------
protocol lmtp {
...
# use %n to strip away the domain part
auth_username_format = %n
}
---%<-------------------------------------------------------------------------
Symptoms:
* Exim says something like "LMTP error after RCPT ... 550 ... User doesn't
exist someuser@somedomain"
* Dovecot verbose log says something like "auth-worker(9048):
passwd(someuser@somedomain): unknown user"
Verifying recipients using LMTP
-------------------------------
You can use callout verification to avoid accepting mail for addresses which do
not exist in Dovecot. Below is a config snippet which could be used in
acl_smtp_rcpt to achieve this:
---%<-------------------------------------------------------------------------
deny
message = invalid recipient
domains = +local_domains
!verify = recipient/callout=no_cache
---%<-------------------------------------------------------------------------
For more information on address verification see the related section of the
Exim specification
[http://www.exim.org/exim-html-current/doc/html/spec_html/ch-access_control_lists.html#SECTaddressverification].
Delivering mails case insensitively
-----------------------------------
*Warning: *Just use this setup if all your login names contain only lower case
characters! (On Linux see /etc/adduser.conf under NAME_REGEX variable).
Exim retains the case of the local part. Dovecot's LMTP /may/ fail looking up
an incorrect cased local part in your userdb. You can solve this problem by
extending the /protocol lmtp/ section:
---%<-------------------------------------------------------------------------
protocol lmtp {
...
# use %Ln to strip away the domain part
auth_username_format = %Lu
}
---%<-------------------------------------------------------------------------
(If you don't mind allowing case insensitive logins for dovecoth
authentication, you may set /auth_username_format/ in the global configuration
accordingly and renounce the above change).
In case you prefer to configure exim to lower case the local part instead, add
a router just before your local delivery router:
---%<-------------------------------------------------------------------------
lowercase_local:
debug_print = "R: lower case local_part for local delivery"
driver = redirect
redirect_router = local_user
data = ${lc:${local_part}}
---%<-------------------------------------------------------------------------
Make sure to reference the name you have chosen for your local delivery router
within /redirect_router/.
(This file was created from the wiki on 2019-06-19 12:42)
Copyright 2K16 - 2K18 Indonesian Hacker Rulez