RFC 5248: Registro de Códigos de Estado Mejorados SMTP
Por Qué Existe
Los códigos de estado mejorados (RFC 3463) utilizan un formato de tres partes class.subject.detail para describir con precisión por qué un mensaje fue aceptado, rechazado o retrasado. La RFC original definió un conjunto fijo de códigos, pero las nuevas tecnologías de correo electrónico necesitaban constantemente nuevos códigos:
- Los fallos de DMARC necesitaban
5.7.25y5.7.26 - MX nulo (RFC 7505) necesitaba
5.1.10 - Los requisitos de TLS necesitaban códigos en el rango de seguridad
X.7.X - Las extensiones de autenticación necesitaban
X.7.20aX.7.27
Sin un registro formal, los nuevos códigos se asignaban de forma ad hoc y se arriesgaba a colisiones. RFC 5248 establece el registro IANA "Simple Mail Transfer Protocol (SMTP) Enhanced Status Codes", con reglas claras para el registro y la exigencia de que cada nuevo código tenga un significado definido.
Cómo Funciona
El registro organiza los códigos por sus tres componentes. Los nuevos códigos se añaden a través del proceso de estándares de IETF, y cada entrada documenta:
Formato de Entrada del Registro
| Campo | Descripción |
|---|---|
| Código | El código de estado mejorado X.Y.Z |
| Texto de Ejemplo | Una descripción legible por humanos de la condición |
| Código de Estado Básico Asociado | Los códigos de respuesta SMTP con los que puede aparecer este código mejorado |
| Descripción | Explicación detallada de cuándo usar este código |
| Referencia | La RFC o documento que definió este código |
| Solicitante | Quién solicitó el registro |
| Controlador de Cambios | Quién puede actualizar esta entrada (normalmente IESG) |
Respuesta SMTP con Código Definido en el Registro
MAIL FROM:<sender@example.com> 250 2.1.0 Originator address accepted RCPT TO:<user@example.org> 550 5.7.26 This message does not pass DMARC evaluation ^^^^^ Registered in IANA registry, defined by RFC 7372 RCPT TO:<nobody@null-mx.example> 556 5.1.10 Recipient address has null MX ^^^^^^ Registered in IANA registry, defined by RFC 7505
Detalles Técnicos Clave
Códigos de Estado Enumerados (Clase + Asunto)
RFC 5248 define "códigos de estado enumerados" que combinan valores de clase y asunto. La clase sigue siendo 2, 4 o 5, y los valores de asunto son:
| Asunto | Categoría | Códigos de Ejemplo |
|---|---|---|
X.0.X |
Otro / Indefinido |
X.0.0 — otro estado indefinido |
X.1.X |
Direccionamiento |
5.1.1 buzón incorrecto, 5.1.2 dominio incorrecto, 5.1.10 MX nulo |
X.2.X |
Buzón |
4.2.2 buzón lleno, 5.2.1 buzón deshabilitado |
X.3.X |
Sistema de Correo |
5.3.4 mensaje demasiado grande |
X.4.X |
Red / Enrutamiento |
4.4.1 sin respuesta del host, 4.4.2 conexión incorrecta |
X.5.X |
Protocolo de Entrega de Correo |
5.5.1 comando inválido, 5.5.2 error de sintaxis |
X.6.X |
Contenido del Mensaje |
5.6.1 tipo de contenido no admitido |
X.7.X |
Seguridad / Política |
5.7.1 entrega rechazada, 5.7.26 fallo de DMARC |
Códigos Añadidos Desde RFC 3463
| Código | Significado | Definido Por |
|---|---|---|
5.7.20 |
No se encontró firma DKIM válida | RFC 7372 |
5.7.21 |
No se encontró firma DKIM aceptable | RFC 7372 |
5.7.22 |
Sin firma DKIM válida con concordancia de autor | RFC 7372 |
5.7.23 |
Validación SPF fallida | RFC 7372 |
5.7.24 |
Error de validación SPF | RFC 7372 |
5.7.25 |
Validación de DNS inverso fallida | RFC 7372 |
5.7.26 |
Fallaron múltiples comprobaciones de autenticación (DMARC) | RFC 7372 |
5.7.27 |
La dirección del remitente tiene MX nulo | RFC 7505 |
5.1.10 |
La dirección del destinatario tiene MX nulo | RFC 7505 |
Política de Registro
Los nuevos códigos requieren "Especificación Requerida" según la política de IANA. Esto significa que una especificación publicada (típicamente una RFC) debe definir la semántica del código. El revisor experto designado asegura que no haya conflictos con códigos existentes y que el nuevo código se ajuste a la categoría de asunto correcta.
Errores Comunes
- Codificar un conjunto fijo de códigos de estado. El registro es extensible. Los nuevos códigos se añaden regularmente. Construya su procesador de rechazos para manejar códigos desconocidos de manera elegante, recurriendo a la clase (2/4/5) y la categoría de asunto.
- Inventar códigos no registrados. Algunos servidores de correo devuelven códigos de estado mejorados personalizados que no están en el registro. Aunque técnicamente válidos para uso privado, esto daña la interoperabilidad. Utilice códigos registrados siempre que sea posible.
-
Ignorar el dígito de clase al manejar nuevos códigos. Si encuentra
5.7.28(un código futuro hipotético), puede que no conozca su significado específico, pero sabe que es un fallo permanente de seguridad/política. La clase y el asunto siempre son significativos. -
No distinguir entre clase 4 y clase 5.
4.2.2(buzón lleno, temporal) y5.2.1(buzón deshabilitado, permanente) comparten el mismo asunto pero requieren un manejo completamente diferente. Siempre verifique la clase primero. - Asumir que todos los servidores utilizan códigos mejorados. La extensión SMTP ENHANCEDSTATUSCODES se implementa ampliamente pero no universalmente. Su analizador de rechazos debe manejar respuestas que solo contengan el código de tres dígitos básico.
Impacto en la Entregabilidad
-
Clasificación de rechazo precisa. El registro le da un vocabulario estandarizado para saber por qué los mensajes fallan.
5.7.26significa fallo de DMARC — arregle su autenticación.5.1.1significa dirección inválida — elimínela de su lista. Sin consultar el registro, está adivinando. -
Diagnóstico de fallos de autenticación. El rango
5.7.20–5.7.26de códigos añadidos por RFC 7372 le permite señalar exactamente qué mecanismo de autenticación falló: DKIM, SPF, DNS inverso o alineación DMARC. -
Manejo de rechazo a prueba del futuro. Al analizar la clase y el asunto de cualquier código, incluso códigos desconocidos, su sistema se degrada gracefully a medida que se registran nuevos códigos. Un código
5.7.Xque nunca ha visto es aún un rechazo permanente de seguridad. - Correlación con reportes DSN. Los códigos de estado mejorados aparecen tanto en respuestas SMTP como en reportes DSN (RFC 3464). El registro asegura que el mismo código significa lo mismo en ambos contextos, permitiendo un procesamiento de rechazo consistente.