Modelo SMTP (RFC 821)

Comandos SMTP y respuestas del servidor

Comandos SMTP:
Comando Descripción
HELO [servidor] Es el comando para abrir paso al dialogo SMTP.
EHLO [servidor] Es el comando para abrir paso al dialogo SMTP. El servidor que nos envíe una lista de las extensiones "modernas" del protocolo SMTP que soporta. (RFC 1425)
HELP [comandos] Pide información sobre los comandos que soporta el servidor, si se especifica un parámetro el servidor nos enviará información referente al comando escrito.
EXPN [lista de correo] Este comando sirve para pedir listas de correo del servidor
DATA Este comando especifica al servidor SMTP que a partir de la siguiente linea se empezará a escribir el mensaje (cabecera y contenido). Para indicar que el mensaje se ha completado de escribir se escribirá una linea con solamente un ".", a partir de ahí el servidor enviará el mensaje
MAIL FROM [mail] Comienza una nueva transacción de envío de mensaje. Especifica la lista de máquinas por las que ha pasado, y el buzon de correo
NOOP Al ejecutar este comando el servidor debe responder con un OK. Sirve para comprobar que la conexión con el servidor sigue activa o que el servicio que ofrece sigue disponible.
QUIT Cierra la conexión con el servidor.
AUTH [Metodo]
Sirve para autentificarse ante el servidor, empleando el método indicado, para cifrar el usuario y la contraseña. (RFC 2554)
RCPT TO Especifica el o los destinatarios del mensaje
RSET Aborta el envio actual y que reinicia la comunicación desde que se creó la conexión.
SAML FROM Los códigos de respuesta se enviaran a un terminal y a un buzon
SEND FROM Los códigos de respuesta se enviaran a un terminal
SOML FROM Los códigos de respuesta se enviaran a la cuenta de correo del usuario, en caso de que este no pueda, por alguna circunstancia, recibirá la respuesta del servidor en su terminal.
TURN El emisor cede el turno al receptor para que actúe como emisor
VRFY [nombre] Pide Confirmación de que [nombre] es un usuario del MTA receptor

Leyenda:
Esenciales
Obsoletos


Códigos de respuesta (RFC 1893):
Cada vez que trabajamos con un servidor SMTP, este nos va devolviendo unos números de tres dígitos, llamados "status-code" (Codigo de estado), que nos indican el estado de servidor.
Los códigos más empleados, son los que escribo en la siguiente tabla:

Código Descripción
2?? El comando se envió correctamente.
211 El sistema tiene disponible la ayuda
214 Mensaje de información de ayuda
220 El servicio está disponible
221 Se está cerrando la conexión
250 La acción solicitada se ha completado
251 El usuario no es local, entonces se remite el mensaje al servidor
3?? Se aceptó el comando pero se espera que el cliente introduzca mas datos
354 Comenzar la introducción del correo, acabando con CR/LF
4?? El comando ha sido rechazado, pero el cliente debería intentarlo de nuevo
421 El servicio de correo no está disponible
450 No se realizó la acción porque el buzón no esta disponible
451 Se abandonó la acción por un error de procesamiento local
452 No se produjo la acción por que el disco no tiene espacio de almacenamiento suficiente
5?? Se rechazó el comando
500 Error en la sintaxis, no se pudo reconocer el comando
501 Error en la sintaxis de los parámetros del comando
502 El comando no esta implementado
503 Secuencia de comandos incorrecta
504 El parámetro del comando no esta implementado
550 La acción no se realizo porque no se ha encontrado el buzón
551 El usuario no es local, intente enviarlo mediante <servidor>
552 Abandono de la acción porque se supero la reserva de espacio
553 No se realizó la operación porque la sintaxis del nombre del buzón es incorrecta
554 Se produjo un fallo en la transacción

La utilización de los códigos, sigue una normativa fija, el primer dígito nos da el nivel de error:

Código Descripción
2?? Todo va bien; El comando se envió correctamente.
3?? Se esperan más datos.
4?? Fallo temporal. Quizas se deba intentar más tarde.
5?? Fallo permanente. No hay permisos, o el comando esta mal escrito.

El segundo, y terer dígito nos concretan los detalles

Código Descripción
?1? Relativo a la dirección de correo
?10 Pasa algo con la dirección de correo.
?11 La direccion de destino esta mal (El buzon)
?12 La dirección de destino esta mal (El servidor)
?13 La dirección de destino esta mal escrita
?14 La dirección de destino es ambigua
?15 La dirección de destino es valida
?16 El buzon ha cambiado
?17 La dirección origen esta mal escrita (El buzon)
?12 La dirección origen esta mal escrita (El servidor)
?2? Relativo al buzon
?20 Pasa algo con el buzon.
?21 Buzon desactivado, no se aceptan mensages
?22 Buzon lleno
?23 Mensaje demasiado largo
?24 Error al expandir la lista de correo
?3? Relativo al Servidor
?30 Pasa algo con el Servidor
?31 Servidor lleno, no se aceptan mensajes
?32 El servidor no acepta mensajes de la red
?33 El servidor no acepta el comando
?34 Mensaje demasiado largo para el servidor
?4? Relativo a la red
?40 Pasa algo con la red
?41 Sin respuesta del servidor
?42 Error de conexion
?43 Error de enrutado
?44 No se puede enrutar
?45 Congestión de red
?46 Detectando loop de routing
?47 Tiempo de envio expirado
?5? Relativo al protocolo
?50 Pasa algo con el protocolo
?51 Comando invalido
?52 Error de sintaxis
?53 Demasiados receptores
?54 Argumento/s Invalido/s
?55 Versión del protocolo equivocada
?6? Relativo al contenido o formato del mensaje
?60 Pasa algo con el formato.
?61 Formato no soportado
?62 Conversión requerida y prohivida
?63 Conversión requerida no soportada
?64 Conversión con errores
?65 Conversion fallida
?7? Relativo a la seguridad
?70 Error de seguridad indefinido
?71 Envío rechazado, mensaje rehusado
?72 Expansión de lista de correo prohivida
?73 Conversión de seguridad necesaria pero imposible
?74 Caracteristica de seguridad no disponible o soportada
?75 Error criptográfico
?76 Algoritmo criptográfico no soportado
?77 Fallo de integridad del mensaje



Contenido del Mensage (RFC 822):