# LMTP

El Local Mail Transfer Protocol o LMTP, por sus siglas en inglés, es el Protocolo de transporte local de correo, una variante del protocolo ESMTP, que es a su vez un protocolo que extiende la funcionalidad del Simple Mail Transfer Protocol (SMTP) . Está definido en el RFC 2033. LMTP se diseñó como una alternativa a SMTP para casos en los que no existiera una cola para los correos entrantes, como por ejemplo en el caso de servidores de transporte de correo (MTA) que a su vez actúan como servidores de entrega de correo MDA (Mail Delivery Agent).

## Características

LMTP se diseñó como una alternativa al estándar SMTP para situaciones donde el lado receptor no dispone de una cola de correo, como es el caso de los servidores de almacenamiento de correo que actúan como Mail Delivery Agent (MDA), ya que un servidor de almacenamiento de correo debe administrar solo su almacén de correo, sin tener que asignar más espacio de almacenamiento para una cola de correo. El hecho de no tener colas de correo es incompatible con le uso de SMTP dado que estas son algo inherente a este protocolo.
Un ejemplo del hecho de la necesidad de colas en SMTP, es que cuando se envía el mismo correo electrónico a varios destinatarios: SMTP debe manejar de forma separada la entrega al servidor de destino de cada destinatario del correo, para poder obtener por separado los mensajes de entrega o error. Esto genera la necesidad de crear una cola de correo.
En el mismo caso anterior, LMTP puede indicar el éxito o fallo del envío para cada destinatario, lo que permite al cliente tener su propia cola de correo. El cliente normalmente será un servidor SMTP.
LMTP no está diseñado para su uso en una red de área amplia o WAN. En otras palabras, el agente de transferencia de mensajes (MTA) es quien maneja todo el correo saliente, incluido el flujo de correo generado por LMTP, hacia otros servidores de correo ubicados en algún lugar en Internet.
LMTP es un protocolo de capa de aplicación, del conjunto de Protocolos de Internet (IP). Al igual que SMTP, utiliza un transporte basado en el Protocolo de control de transmisión (Transmission Control Protocol (TCP)) pero no tiene un puerto por defecto definido(ver lista de puertos). Para el caso de Postfix se utiliza el puerto 24, para el caso de Zimbra es 7025 pero otras aplicaciones utilizan puertos por encima de 9090. En todo caso la RFC 2033 prohíbe expresamente el uso del puerto 25 para tale propósitos.

## Diferencias con ESMTP

Una conversación LMTP usa los mismos comandos que una conversación ESMTP con las siguientes excepciones:
* HELO y EHLO son reemplazados por LHLO (esto evita que un servidor que solo utiliza SMTP se comunique con un servidor que utiliza LMTP).
* El comando DATA solicita que un punto final sea enviado, en el formato <CRLF>.<CRLF>. ESMTP requiere un único estado para el mensaje, mientras que LMTP requiere una respuesta por cada comando RCPT aceptado. Es decir, en el caso de múltiples destinatarios, después de que el cuerpo del mensaje ha sido transmitido, LMTP puede devolver fallo para algunos destinatarios y comunicar la correcta transmisión de los demás. Con esta funcionalidad, LMTP puede, por ejemplo, fallar si un usuario ha excedido su cuota sin la carga que supone tener que generar mensajes de rebote.
La mayor diferencia es que LMTP rechazará un mensaje si no puede enviarlo de inmediato a su destino final. Esto elimina la necesidad de tener cola de correo. Por esta razón, LMTP no ha de escuchar en el puerto TCP 25 ya que está destinado al estándar SMTP.

## Ejemplo de comunicación entre servidor y cliente

En aras de la claridad, el siguiente ejemplo se amplía con comentarios que no pertenecen al protocolo, estos comienzan con # y se extienden hasta el final de la línea. La letra S representa los mensajes del servidor y la letra C los mensajes del cliente.