summaryrefslogtreecommitdiffstats
path: root/doc/wiki/LMTP.Exim.txt
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 09:51:24 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 09:51:24 +0000
commitf7548d6d28c313cf80e6f3ef89aed16a19815df1 (patch)
treea3f6f2a3f247293bee59ecd28e8cd8ceb6ca064a /doc/wiki/LMTP.Exim.txt
parentInitial commit. (diff)
downloaddovecot-f7548d6d28c313cf80e6f3ef89aed16a19815df1.tar.xz
dovecot-f7548d6d28c313cf80e6f3ef89aed16a19815df1.zip
Adding upstream version 1:2.3.19.1+dfsg1.upstream/1%2.3.19.1+dfsg1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/wiki/LMTP.Exim.txt')
-rw-r--r--doc/wiki/LMTP.Exim.txt153
1 files changed, 153 insertions, 0 deletions
diff --git a/doc/wiki/LMTP.Exim.txt b/doc/wiki/LMTP.Exim.txt
new file mode 100644
index 0000000..d1150b2
--- /dev/null
+++ b/doc/wiki/LMTP.Exim.txt
@@ -0,0 +1,153 @@
+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)