The lmtp transport runs the LMTP protocol (RFC 2033) over a pipe to a specified command or by interacting with a Unix domain socket. This transport is something of a cross between the pipe and smtp transports. Exim also has support for using LMTP over TCP/IP; this is implemented as an option for the smtp transport. Because LMTP is expected to be of minority interest, the default build-time configure in src/EDITME has it commented out. You need to ensure that
is present in your Local/Makefile in order to have the lmtp transport included in the Exim binary. The private options of the lmtp transport are as follows:
|batch_id||Use: lmtp||Type: string†||Default: unset|
See the description of local delivery batching in chapter 25.
|batch_max||Use: lmtp||Type: integer||Default: 1|
This limits the number of addresses that can be handled in a single delivery. Most LMTP servers can handle several addresses at once, so it is normally a good idea to increase this value. See the description of local delivery batching in chapter 25.
|command||Use: lmtp||Type: string†||Default: unset|
This option must be set if socket is not set. The string is a command which is run in a separate process. It is split up into a command name and list of arguments, each of which is separately expanded (so expansion cannot change the number of arguments). The command is run directly, not via a shell. The message is passed to the new process using the standard input and output to operate the LMTP protocol.
|ignore_quota||Use: lmtp||Type: boolean||Default: false|
If this option is set true, the string
IGNOREQUOTA is added to RCPT
commands, provided that the LMTP server has advertised support for IGNOREQUOTA
in its response to the LHLO command.
|socket||Use: lmtp||Type: string†||Default: unset|
This option must be set if command is not set. The result of expansion must be the name of a Unix domain socket. The transport connects to the socket and delivers the message to it using the LMTP protocol.
|timeout||Use: lmtp||Type: time||Default: 5m|
The transport is aborted if the created process or Unix domain socket does not respond to LMTP commands or message input within this timeout.
Here is an example of a typical LMTP transport:
lmtp: driver = lmtp command = /some/local/lmtp/delivery/program batch_max = 20 user = exim
This delivers up to 20 addresses at a time, in a mixture of domains if necessary, running as the user exim.