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
TRANSPORT_LMTP=yes
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.