¿Qué significa SMTP?

El objetivo del Protocolo simple de transferencia de correo (SMTP) es transportar correo de manera confiable y eficiente. Es independiente del subsistema de transmisión y requiere únicamente un canal que garantice el orden de las unidades de datos. Los apéndices A, B, C y D describen el uso de SMTP en diferentes servicios de entrega. Los términos utilizados en este documento también se definen en el Glosario.

Una característica importante de SMTP es que puede retransmitir correo en tránsito. El servicio de transporte proporciona un entorno de comunicación entre procesos (IPCE), que puede incluir una red, varias redes o una subred de una red. Es importante entender que los sistemas de transporte (o IPCE) no son uno a uno. Un proceso puede comunicarse directamente con otros procesos a través del conocido IPCE. El correo es comunicación entre aplicaciones o procesos. El correo se puede transferir a través de la red mediante procesos conectados a diferentes IPCE. Más específicamente, el correo se puede transmitir a través de hosts en diferentes redes.

Es el principal protocolo de capa de aplicación para los sistemas de correo electrónico de Internet. Utiliza el confiable servicio de transmisión de datos proporcionado por TCP para transmitir mensajes de correo electrónico desde el servidor de correo del remitente al servidor de correo del destinatario. Como la mayoría de los protocolos de capa de aplicación, SMTP tiene dos lados: un cliente que se ejecuta en el servidor de correo emisor y un servidor que se ejecuta en el servidor de correo receptor. El cliente y el servidor SMTP se ejecutan simultáneamente en cada servidor de correo. Cuando un servidor de correo envía correo a otros servidores de correo, funciona como un cliente SMTP. Cuando un servidor de correo recibe mensajes de correo de otros servidores de correo, funciona como un servidor SMTP.

El protocolo SMTP tiene muchas similitudes con la etiqueta que las personas usan para la comunicación cara a cara. Primero, el cliente SMTP que se ejecuta en el servidor de correo emisor inicia el establecimiento de una conexión TCP con el puerto número 25 del servidor SMTP que se ejecuta en el servidor de correo receptor. Si el servidor de correo receptor no funciona actualmente, el cliente SMTP esperará un momento antes de intentar establecer una conexión. Después de establecer una conexión, el cliente y el servidor SMTP primero realizan algunos apretones de manos en la capa de aplicación. Así como las personas suelen presentarse antes de transferir información, los clientes y servidores SMTP también se presentan antes de transferir información. Durante esta fase de protocolo de enlace SMTP, el cliente SMTP indica al servidor las direcciones de correo electrónico del remitente y del destinatario respectivamente. Después de presentarse, el cliente envía un correo electrónico. SMTP puede confiar en el servicio confiable de transmisión de datos proporcionado por TCP para entregar mensajes al servidor sin errores. Si el cliente tiene otros mensajes de correo para enviar al mismo servidor, repite el proceso anterior en la misma conexión TCP; de lo contrario, le indica a TCP que cierre la conexión; [1]

Editar el párrafo 2. Modelo SMTP

El diseño de SMTP se basa en el siguiente modelo de comunicación: para la solicitud de correo electrónico del usuario, se establece un canal de transmisión bidireccional entre el envío de SMTP y la recepción de SMTP. El SMTP receptor puede ser el receptor final o un remitente intermedio. Los comandos SMTP son enviados por el SMTP emisor y recibidos por el SMTP receptor, y las respuestas se transmiten en la dirección opuesta.

Una vez establecido el canal de transmisión, el remitente SMTP envía un comando de correo para instruir al remitente del correo. Si

el destinatario SMTP puede recibir el correo electrónico y devolver una respuesta "OK". Luego, el remitente SMTP emite un comando RCPT para confirmar que se ha recibido el mensaje. Si el receptor SMTP lo recibe, devolverá una respuesta OK; si no puede recibirlo, enviará una respuesta de rechazo (pero no se suspenderá toda la operación de correo electrónico) y ambas partes repetirán esta operación varias veces. Cuando el destinatario recibe todos los mensajes, recibe una secuencia especial. Si el destinatario procesa correctamente el correo electrónico, devolverá una respuesta OK.

SMTP proporciona un mecanismo para transmitir correos electrónicos. Si el destinatario y el remitente están conectados bajo el mismo servicio de transporte, los mensajes se pueden transferir directamente desde el host del remitente al host del destinatario. O, cuando no están bajo el mismo servicio de transporte, se transportan a través de un servidor SMTP de retransmisión. Para proporcionar funcionalidad de retransmisión a un servidor SMTP, debe tener una dirección de host de destino final y un nombre de buzón.

El parámetro del comando MAIL es la ruta de respuesta, que especifica de dónde proviene el correo electrónico; el parámetro del comando RCPT es la ruta de reenvío, que especifica el destino del correo electrónico. La ruta de ida es la ruta de origen y la ruta de respuesta es la ruta de retorno (utilizada para devolver correos electrónicos cuando se produce un error).

Cuando se envía el mismo correo electrónico a diferentes destinatarios, SMTP se encuentra con el problema de enviar copias de los mismos datos a diferentes destinatarios. Los comandos y respuestas del correo tienen una sintaxis extraña y las respuestas también tienen un código numérico. En el siguiente ejemplo puede ver qué comandos y respuestas reales se utilizan. El comando completo y la respuesta se encuentran en la Parte 4.

Los comandos y las respuestas no distinguen entre mayúsculas y minúsculas, es decir, los comandos y las respuestas pueden estar en mayúsculas, minúsculas o una combinación de ambas, pero este no es necesariamente el caso de los nombres de correo electrónico de los usuarios, ya que algunos hosts sí distinguen entre mayúsculas y minúsculas. -sensible a los nombres de usuario Escribir. De esta manera, la implementación SMTP mantendrá el nombre del buzón del usuario sin cambios y el nombre del host no distinguirá entre mayúsculas y minúsculas.

Los comandos y respuestas se componen del alfabeto ASCⅱII. Cuando el servicio de entrega proporciona un canal de entrega de bytes de 8 bits, cada carácter de 7 bits se entrega correctamente y los bits más altos se rellenan con ceros. Cuando se especifica un comando común o un formato de respuesta, los parámetros se representarán mediante algunas cadenas similares a un lenguaje, como "

Editar párrafo 3. Proceso SMTP

Esta sección proporciona algunos procesos El primero explica el proceso de envío básico (definido como la operación de envío), luego describe el reenvío del correo, la confirmación del nombre del buzón y la expansión de la lista de correo, el envío al terminal y la apertura y cierre de los campos de correo. Los ejemplos de esta sección son sólo una parte de la secuencia de comando y respuesta.

3.1 La operación de envío SMTP tiene tres pasos. Comienza con el comando MAIL, que proporciona la identidad del remitente. por una serie o más comandos RCPT, que proporciona información al destinatario, seguido del comando de datos, que enumera el contenido del mensaje enviado, y finalmente el indicador de contenido del mensaje, que confirma la operación.

El primero. El paso del proceso es el comando de correo,

mail<SP>Sender:<reverse-path><CRLF>

Este comando le dice al receptor que se ha iniciado una nueva operación de envío. Restablezca todas las tablas de estado y los buffers. Proporciona la ruta inversa del mensaje de error si se recibe la solicitud y el receptor devuelve una respuesta 250 OK. La ruta inversa incluye no solo el buzón, sino también la ruta inversa entre el host y el buzón de origen, donde se encuentra el primer host. el que envía este comando.

El segundo paso del proceso es enviar el comando RCPT.

RCPT <SP>recipient:<forward-path><CRLF>

Este comando proporciona el. ruta de reenvío que identifica al destinatario si el destinatario Para este comando, el destinatario devolverá una respuesta 250 OK y almacenará la ruta de reenvío. Si el destinatario es desconocido, el destinatario devolverá una respuesta de error 550

<Forward. ruta>Incluye no solo el mensaje, sino también la tabla de enrutamiento del host y el buzón de destino, donde el primer host es el host que recibe el comando. El tercer paso del proceso es enviar el comando de datos.

p. >

Datos<CRLF>

Si se recibe el comando, el destinatario devuelve una respuesta intermedia 354, asumiendo que las siguientes líneas son el contenido de la carta cuando se recibe y almacena el final de la carta. El destinatario envía una respuesta 250 OK Debido a que el mensaje se envía en el canal de transporte, es necesario indicar el final del contenido del mensaje para que se pueda reiniciar la conversación de respuesta. SMTP indica el final del contenido del correo electrónico enviando solo un punto. en la última línea, en el extremo receptor, un proceso transparente para el usuario filtra este símbolo para evitar afectar los datos normales.

Nota: el contenido del correo electrónico incluye las siguientes indicaciones: fecha, asunto, destinatario, carbón. copiar y remitente. /p>

El indicador de contenido del mensaje confirma la operación del mensaje y notifica al destinatario que los datos se pueden almacenar y reenviar. Si se recibe este comando, el receptor devolverá una respuesta 250 OK. Los comandos de datos solo fallarán si la operación de correo está incompleta o la fuente no es válida.

El proceso anterior es una operación de envío. Estos comandos sólo se pueden utilizar en el orden descrito anteriormente. El siguiente ejemplo muestra el uso de estos comandos en una operación de envío.

Ejemplo de proceso SMTP En este ejemplo, el host Smith..ARPA de Alpha envía un correo electrónico a los hosts Beta..ARPA de Jones, Green y Brown, asumiendo que el host Alpha está conectado directamente al host Beta.

Remitente del correo electrónico:& ltSmith@Alpha..ARPA>

¿Se pueden aceptar 250 yuanes?

Historial: RCPT Para:& ltJones@Beta ..ARPA & gt

¿Están bien 250 yuanes?

Historial: RCPT a: & ltgreen@Beta..ARPA & gt

No existe tal usuario aquí

Historial: RCPT a: & ltbrown@Beta..ARPA & gt

¿Están bien 250 yuanes?

Estudiantes: Datos

R: 354 inicia la entrada de correo electrónico; comienza con <CRLF>. & ltCRLF & gt;

Estudiantes: Espera, espera, espera...

Estudiantes:...Esperando

s: & lt;CRLF & gt; ; <CRLF>

¿Puedo darte 250 yuanes?

Esta carta fue recibida por las dos primeras personas y la tercera persona no tiene un buzón en este host.

3.2. Reenviar

Aquí hay algunos

251: El usuario no es local; reenviar a

Esta respuesta significa el SMTP humano del destinatario. sabe que el buzón del usuario está en otro host, lo que también significa que en el futuro se utilizará la ruta de respuesta correcta. Tenga en cuenta que el host y/o el usuario son diferentes. El receptor es responsable de entregar el mensaje.

551: El usuario no es local, inténtelo.

Esta respuesta significa que el receptor SMTP sabe que el buzón del usuario está en otro host y significa que se utiliza la ruta de reenvío correcta. Tenga en cuenta que el host y/o el usuario son diferentes. El destinatario se niega a aceptar correspondencia de este usuario y el remitente debe reenviarla basándose en la información proporcionada o devolver un mensaje de error al remitente original. Los siguientes ejemplos muestran la aplicación de estas respuestas.

Ejemplo de reenvío

Historial: RCPT a: & ltUniversidad del Sur de California-Agencia de Inteligencia Interservicios..ARPA & gt

R: 251 El usuario no es local Reenviar a & ltUSC ISIF Post..ARPA>

O

Historial:RCPT A:<Paul@USCISIB..ARPA>

R: 551 Usuario no local; intente con <USC ISIF..ARPA>

3.3 Reconocimientos y extensiones

SMTP proporciona reconocimientos Funcionalidad adicional para nombres de usuario y listas de correo extendidas. Estas funciones se logran mediante los comandos VREF y EXPN, los cuales toman cadenas como parámetros. Para el comando VREF, el parámetro de cadena hace referencia al nombre de usuario y la respuesta a este comando debe incluir el nombre de usuario y la dirección de correo electrónico del usuario. Para el comando EXPN, el parámetro de cadena se refiere a la lista de correo y hay varias respuestas al comando, que deben incluir los nombres de todos los usuarios de la lista y sus buzones de correo.

"Nombre de usuario" es un elemento innecesario y se agregó a propósito. Si el host utiliza el comando VREF y el comando EXPN, el buzón de correo local final debe proporcionar el nombre de usuario para la confirmación del host. Si el anfitrión elige otra cadena como nombre de usuario, eso también está permitido.

En algunos hosts, la lista de buzones y el nombre del proxy del buzón son un poco confusos, ya que la estructura de datos general puede incluir entradas de ambos tipos. Si desea enviar una confirmación a la lista de correo, debe dar una respuesta clara. Al recibir este mensaje, el anfitrión enviará el mensaje a todas las direcciones de la lista e informará un error si no se recibe una respuesta de confirmación. Por ejemplo,

Esa es la lista de correo, no el nombre de usuario. Si la solicitud fue para un nombre de usuario extendido, puede generar una respuesta explícita al devolver una lista que incluya el nombre y, si no se recibe una respuesta explícita, se informará un error. (Por ejemplo, "550 es el nombre de usuario, no la lista de correo").

En el caso de respuestas múltiples (normalmente para EXPN), cada respuesta especifica un buzón. En el caso de solicitudes ambiguas, como "VRFY Smith", la respuesta de los dos Smith aquí debe ser "553 El usuario no está claro".

Confirma el nombre de usuario, como se muestra en el siguiente ejemplo: Ejemplo 3:

Confirma el nombre de usuario

Estudiante: Fei Smith

R : 250 Fred Smith & lt Smith @ USC ISIF..ARPA & gt

O

Estudiante: Fred Smith

R: 251 El usuario no es local; ser reenviado a <smith@USC-ISIQ..ARPA>

o

s:Phil Jones

R :550 La cadena no coincide con nada.

O

S:Phil Jones

R: 551 El usuario no es local, intente con <Jones@USC-ISIQ. , ARPA & gt

o

Estudiante: VRFY Gourzenkyinplatz

R: 553 El usuario no lo tiene claro.

Las listas de buzones de correo requieren múltiples respuestas, como se muestra en el siguiente ejemplo:

Estudiante:EXPN Ejemplo-Personal

r:250-Jon Postel& ltSouthern California ISIF Post ..ARPA>

r:250-Fred fone bone <Fonebone@USC-ISIQ..ARPA>

r:250-Sam qSmith<SQSmith@USC-ISIQ. , ARPA>

r:250-Quincy Smith<@USC ISIF..ARPA:Q-Smith@ISI-VAXA..ARPA>

r :250-<joe@foo-unix ..ARPA>

r:250<xyz@bar-unix..ARPA>

o

S: EXPN Administración-Lista de baños

R: 550 Su acceso está denegado.

Los parámetros de comando de cadena de los comandos VERF y EXPN ya no se pueden restringir debido a sus diferentes implementaciones. En algunos sistemas, el argumento del comando EXPN puede ser el nombre del archivo que contiene la lista de correo, pero existen muchas estructuras de archivos diferentes en Internet.

Los comandos VRFY y EXPN no están incluidos en la implementación mínima, y ​​cuando se implementan, no es necesario implementarlos entre transferencias.

Editar el párrafo 3.4. Envía cartas y recibe cartas.

El objetivo principal de SMTP es enviar correo al buzón del usuario. Una funcionalidad similar proporcionada por algunos hosts es enviar correo a la terminal del usuario (si el usuario tiene una terminal abierta). Enviar correo al buzón del usuario se llama envío por correo; enviarlo al terminal del usuario se llama recibir el correo.

(Envío). Debido a que en algunos hosts las dos implementaciones son muy similares, también

se colocan en SMTP. Sin embargo, el comando para obtener letras no está disponible en la implementación mínima de SMTP. El usuario debería poder controlar la escritura de información en el terminal. La mayoría de los servidores permiten a los usuarios aceptar o rechazar mensajes similares.

Los siguientes tres comandos están definidos para apoyar la obtención de letras. Se utilizan para comandos de correo, no para correo.

Comando, que indica el significado especial de recibir SMTP:

Enviar & ltSP & gtSender: & ltReverse path>& ltCRLF & gt;

El comando de envío requiere contenido de correo electrónico para ser enviado directamente al terminal del usuario. Si el usuario no tiene una terminal abierta (o

el usuario no recibe información de la terminal), se devolverá una respuesta 450 al comando RCPT. Si la información se envía exitosamente, la operación es exitosa.

SOML <SP>Sender:<ReversePath><CRLF>;

El comando Enviar o Correo requiere que el contenido del correo electrónico se envíe directamente al terminal del usuario (si el usuario está en el terminal). Si el usuario no está en el terminal, el contenido del correo electrónico va directamente al buzón. Si el correo electrónico se envía al terminal del usuario o al buzón del usuario, la operación de envío es exitosa.

SAML<SP>Sender:<ReversePath><CRLF>

Los comandos Enviar y Correo requieren que el contenido del correo electrónico se envíe directamente al terminal del usuario (si el usuario está en el terminal). En cualquier caso, la carta irá al buzón. Si la carta llega al buzón, la operación de envío se realiza correctamente.

Las respuestas utilizadas para los comandos MAIL son las mismas que para estos comandos.

Editar el párrafo 3.5. Apertura y cierre

Cuando se abre un canal de transmisión, es necesario intercambiar cierta información para determinar la identidad de ambas partes. Los siguientes comandos se utilizan

para abrir y cerrar:

HELO<SP><domain><CRLF>

EXIT<CRLF>>En el comando Hola, el host envía el comando en sí, que puede interpretarse como: "HOLA,

Soy XX".

Ejemplo de apertura de una conexión

UNⅸ, 220 BBN Road... El servicio ARPA Simple Mail Transfer está listo

Oeste: Hola, ISIF de la Universidad del Sur de California. .. Agencia de Proyectos de Investigación Avanzada del Departamento de Defensa de EE. UU.

No. 250 BBN Road UNⅸ.. Agencia de Proyectos de Investigación Avanzada del Departamento de Defensa de EE. UU.

Ejemplo de conexión cerrada

Darse por vencido

r:221 BBN-UNⅸ..El servicio ARPA cierra el canal de transmisión

Editar párrafo 3.6. Promocionar

La ruta de reenvío puede tener el siguiente formato: "@UNO,@DOS:JOE@TRES", aquí, UNO,DOS.

Tres son anfitriones. Este formato se utiliza para enfatizar la diferencia entre direcciones y rutas. El correo electrónico es una dirección absoluta y la ruta es la información de cómo llegar. Estos dos conceptos no deben confundirse.

Conceptualmente, los elementos de la ruta de reenvío se mueven a la ruta de respuesta como mensajes de un servidor SMTP a otro. La ruta de respuesta es la ruta inversa de la fuente de datos, por ejemplo, desde la ubicación del mensaje actual hasta la ubicación del autor. Cuando un servidor SMTP elimina su propia etiqueta de la ruta de reenvío y la inserta en la ruta de respuesta, debe usar un nombre que su entorno de envío comprenda, en caso de que se entienda que su nombre es diferente en diferentes entornos.

Si el primer elemento en la ruta de reenvío de la información recibida por SMTP no es la bandera de ese SMTP, el elemento no será eliminado de la ruta de reenvío, pero se utilizará para determinar el siguiente SMTP a ser enviado. En cualquier caso, SMTP añade su propia etiqueta a la ruta inversa.

Cuando se utiliza la ruta de origen, el SMTP receptor recibe y reenvía el correo y luego lo envía a otro servidor SMTP receptor. El servidor receptor puede aceptar o negarse a reenviar el correo del usuario local. Recibir SMTP cambia los parámetros del comando moviendo su propio marcador desde la ruta de avance hasta el comienzo de la ruta de respuesta. En este momento, recibir SMTP se convierte en enviar SMTP. Establece un canal hacia SMTP en la siguiente ruta de reenvío y luego envía correo a este SMTP.

El primer host en la ruta de respuesta debe ser el host que envía el comando SMTP y el primer host en la ruta de reenvío debe ser el host que recibe el comando SMTP.

Nota: Las rutas de reenvío y las rutas de respuesta aparecen en los comandos y respuestas SMTP, pero no necesariamente en letras.

Mientras descansa. En otras palabras, dicha ruta no es necesaria, especialmente si este formato aparece en los campos "Para:", "De:" y "Cc:" del encabezado.

Si el servidor SMTP acepta la tarea de reenvío, pero luego descubre que el correo electrónico no se puede enviar debido a una ruta de reenvío incorrecta u otras razones, debe establecer una señal de "correo no entregado" y enviarlo al remitente. de la carta.

La señal debe enviarse desde el servicio SMTP de este host. Por supuesto, el servidor ya no debería informar mensajes de error. Una forma de evitar este bucle de informes de errores es dejar un espacio en blanco en la ruta de respuesta del comando de correo señalado.

Al enviar este mensaje, se permite dejar la ruta de respuesta vacía. La ruta de respuesta después del comando de correo está vacía, como se muestra a continuación:

Correo de:& lt& gt

El siguiente ejemplo muestra un mensaje que no se puede entregar. Este mensaje es en respuesta a un error cuando un correo electrónico enviado desde JOE en HOSTW pasa por HOSTX y necesita pasar por HOSTZ para llegar a HOSTY. El ejemplo que vimos ocurrió entre HOSTX y HOSTY.

Ejemplos de mensajes de correo electrónico que no se pueden enviar

Remitente del correo electrónico:& lt& gt

¿Están bien 250 yuanes?

Historial: RCPT Para: & lt@HOSTX..ARPA:JOE@HOSTW..ARPA & gt

¿Puedo pagar 250 yuanes?

Estudiante: Datos

R: 354 correo enviado datos, a .

Estudiante: Fecha: 23 de octubre de 81 11:22:33

Remitente: SMTP@HOSTY.. Agencia de Proyectos de Investigación Avanzada de Defensa de EE. UU. (Agencia de Proyectos de Investigación Avanzada)

s: Para: JOE@HOSTW,. Agencia de Proyectos de Investigación Avanzada de Defensa de EE. UU. (Agencia de Proyectos de Investigación Avanzada)

Asunto: Problemas con el sistema de correo

Lo siento, Joe, tu mensaje para Sam... ARPA se perdió.

S: Horst.. ARPA dijo esto:

s: "550 no tiene ese usuario"

s:.

¿Puedo cobrar 250 yuanes?

Editar este párrafo Preguntas frecuentes

¿Qué es SMTP? ¿Qué hace? Respuesta: SMTP es la abreviatura de Protocolo simple de transferencia de correo, es decir, Protocolo simple de transferencia de correo. Se trata de un protocolo que proporciona un transporte de correo electrónico eficiente y fiable para intercambiar mensajes entre dos servidores de correo.

El protocolo 2.TCP se utiliza para la transmisión de correo entre servidores de correo. ¿Por qué a veces se pierden los mensajes?

Respuesta: El protocolo SMTP entre servidores de correo utiliza conexiones TCP, lo que puede garantizar la transmisión precisa de correos entre servidores de correo. Sin embargo, debido a fallas del propio servidor de correo, como espacio de correo insuficiente, el correo no se puede transmitir por completo, lo que provoca pérdidas.

3. ¿Por qué el agente de usuario del remitente no envía el correo electrónico directamente al agente de usuario del destinatario, sino que lo transmite a través del servidor de correo?

Respuesta: Debido a las limitaciones del rendimiento de la computadora del usuario, el programa para enviar y recibir correos electrónicos no se puede ejecutar, y el programa no se puede ejecutar de forma continua y conectado a Internet. Por lo tanto, las cartas solo se pueden almacenar temporalmente en el servidor de correo y el usuario puede descargarlas cuando sea necesario.