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 editar

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,[1]​ para el caso de Zimbra es 7025 pero otras aplicaciones utilizan puertos por encima de 9090.[2]​ En todo caso la RFC 2033 prohíbe expresamente el uso del puerto 25 para tale propósitos.

Diferencias con ESMTP editar

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 editar

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.

S 220 server.tld LMTP servidor listo
C LHLO client.tld                                       # usa LHLO para Establecimiento de comunicación en vez de HELO/EHLO
S 250-server.tld
S 250-PIPELINING
S 250 SIZE
C MAIL FROM:<user@example.tld>
S 250 OK
C RCPT TO:<wiki@wikipedia.org>                          # 1. destinatario existe
S 250 OK
C RCPT TO:<sales@wikipedia.org>                         # destinatario NO existe
S 550 Aquí no existe tal usuario 
C RCPT TO:<admin@wikipedia.org>                         # 2. segundo destinatario existe
S 250 OK
C DATA
S 354 Comienzo de recepción de correo; finalice con <CRLF>.<CRLF>          # Comando DATA solicita punto
C Cliente envía mensaje
C .
                                                        # Aquí SMTP solo permite una respuesta, mientras que LMTP emite una respuesta por cada RCPT exitoso, en el orden correspondiente
S 250 OK                                                # Entrega a wiki@wikipedia.org exitosa
S 452 <admin@wikipedia.org> temporalmente con más de la cuota # Entrega a admin@wikipedia.org temporalmente no es posible
                                                       # el cliente intentará de nuevo más tarde
C QUIT
S 221 server.tld cerrando conexión

Referencias editar

  1. «LMTP Server». Postfix. Archivado desde el original el 7 de diciembre de 2015. Consultado el 22 de marzo de 2018. 
  2. «Default Ports Used by Zimbra». Zimbra Wiki. Archivado desde el original el 7 de mayo de 2010. Consultado el 22 de marzo de 2018. 

Enlaces externos editar