This documentation is for Dovecot v2.x, see wiki1 for v1.x documentation.
Differences between revisions 17 and 18
Revision 17 as of 2018-05-03 11:01:07
Size: 3358
Editor: TimoSirainen
Comment:
Revision 18 as of 2019-02-11 16:47:02
Size: 3406
Editor: AkiTuomi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 75: Line 75:
For rawlogs, please see [[Debugging/Rawlog]]

LMTP Server

LMTP uses the same settings as LDA, as specified in conf.d/15-lda.conf in example configuration. There is also a bit of extra configuration in conf.d/20-lmtp.conf. The main difference is that the LDA is a short-running process, started as a binary from command line, while LMTP is a long-running process started by Dovecot's master process.

Envelope Addresses

Compared to dovecot-lda parameters, the addresses are taken from:

  • -f / Envelope sender address: This is the MAIL FROM: value from LMTP session.
  • -r / Final envelope recipient address: This is the RCPT TO: value from LMTP session.
  • -a / Original envelope recipient address: This defaults to same as RCPT TO: value, but may be overridden by reading it from a header specified by lda_original_recipient_header setting.

  • -d / Destination username: This is the same as RCPT TO: value, but with the "+extension" part removed when recipient_delimiter setting is set. If usernames differ from recipient email addresses, the userdb must handle the translation.

Listeners

You can configure LMTP to be listening on TCP or UNIX sockets:

# add lmtp to protocols, otherwise its listeners are ignored
protocols = imap pop3 lmtp

service lmtp {
  inet_listener lmtp {
    address = 192.168.0.24 127.0.0.1 ::1
    port = 24
  }

  unix_listener lmtp {
    #mode = 0666
  }
}

The UNIX listener on $base_dir/lmtp is enabled by default when protocols setting contains lmtp.

Security

Unfortunately LMTP process currently needs to run as root, and only temporarily drop privileges to users. Otherwise it couldn't handle mail deliveries to more than a single user with different UID. If you're using only a single global UID/GID, you can improve security by running lmtp processes as that user:

service lmtp {
  user = vmail
}

LMTP Proxying

It's possible to use Dovecot LMTP server as a proxy to remote LMTP or SMTP servers. The configuration is similar to IMAP/POP3 proxying, but you'll need to tell Dovecot LMTP to issue passdb lookups:

lmtp_proxy = yes

Performance

For higher volume sites, it may be desirable to increase the number of active listener processes. A range of 5 to 20 is probably good for most sites:

service lmtp {
  process_min_avail = 5
}

Logging

If you want to store LMTP delivery logs to a different file, you can do it with:

service lmtp {
  executable = lmtp -L
}
protocol lmtp {
  info_log_path = /var/log/dovecot-lmtp.log
}

For rawlogs, please see Debugging/Rawlog

Plugins

  • Most of the Dovecot plugins work with LMTP.

  • Virtual quota can be enforced using Quota plugin.

    • lmtp_rcpt_check_quota = yes enables quota checking already at RCPT TO stage. This check isn't done for proxied connections.

  • Sieve language support can be added with the Pigeonhole Sieve plugin.

Address extension delivery

To make address extension work with LMTP you must check these variables are set

  • lmtp_save_to_detail_mailbox = yes
  • recipient_delimiter = +

Using LMTP with different MTAs

LMTP (last edited 2019-02-11 16:47:02 by AkiTuomi)