Local Mail Transfer Protocol
LMTP is designed as an alternative to normal SMTP for situations where the receiving side does not have a mail queue, such as a mail storage server acting as a Mail Delivery Agent (MDA). Mail queues are an inherent requisite of SMTP. In situations in which mail queues are not possible, LMTP is desirable, since a mail storage server should manage only its mail store without having to allocate more storage for a mail queue. This is not possible with SMTP when there are multiple recipients for a mail message. SMTP can only indicate successful delivery or failure for all or none of the recipients, creating the need for a separate queue to handle the failed recipients. LMTP, on the other hand, can indicate success or failure to the client for each recipient, allowing the client to handle the queueing instead. The client in this case would typically be an Internet-facing mail gateway. LMTP is not intended for use over wide area networks. In other words, the Message transfer agent (MTA) still handles all outgoing mail, including the mail stream from the LMTP, to another mail server located somewhere on the Internet.
LMTP conversation syntax is based on the same commands as Extended SMTP with the following exceptions:
- ESMTP's EHLO verb is replaced with LHLO.
- ESMTP requires a single status for the entire message body. LMTP requires a response for each previously successful RCPT command. That is, in case of multiple recipients, after the body of the message has been transmitted, LMTP can still fail for some recipient while succeeding for the others. With this facility, LMTP can fail if a user is over quota without the burden of generating Bounce messages.
The key difference is that LMTP will reject a message if it is not immediately deliverable to its final destination. This removes the need for a mail queue. For this reason, LMTP is not run on the standard TCP port of SMTP.
- RFC 2033, The Local Mail Transfer Protocol, J. Myers, The Internet Society (October 1996)