Dirección del remitente rechazada: soluciones de autenticación y políticas de correo

¿Te fue útil?

Pulsas “enviar” y el servidor de correo te devuelve esto: “Sender address rejected”. No retrasado. No en cola.
Rechazado. Ese tipo de mensaje que cae en tu regazo justo cuando el vicepresidente intenta escribir a un cliente, o cuando una app
está disparando restablecimientos de contraseña al vacío.

Este error rara vez es misterioso. Normalmente es simplemente inflexible. Un MTA receptor (o un motor de políticas delante de él)
decidió que la identidad del remitente no cuadra: dominio equivocado, autenticación rota, verificación de remitente fallida, mala reputación,
o una regla local que no le gusta lo que ve. Tu trabajo es demostrar quién eres, de forma consistente, en los lugares que SMTP realmente
considera importantes.

Qué significa realmente “Sender address rejected”

“Sender address rejected” es una clase de rechazos SMTP, no un único error. La mayoría de las veces lo verás
acompañado de un código de estado SMTP como:

  • 550 (falla permanente): buzón no disponible o rechazo por política
  • 553 (a menudo dirección de remitente inválida): “sender address rejected: not owned by user” o similar
  • 501/502 (sintaxis): dirección malformada, comillas incorrectas, caracteres ilegales
  • 554 (transacción fallida): veto del motor de políticas o filtro de contenido

La clave es en qué parte de la conversación SMTP ocurre. Un rechazo en tiempo de MAIL FROM significa que el servidor no
aceptó el envelope sender (Return-Path). Un rechazo en RCPT TO puede mencionar el remitente, pero a menudo
es una regla por destinatario. Un rechazo después de DATA suele indicar escaneo de contenido, aplicación de DKIM/DMARC,
o un problema en un relé intermedio.

Una trampa sorprendentemente común: “arreglaste” la dirección From en tu cliente de correo, pero el rechazo es sobre el remitente de
sobre que tu MTA o aplicación realmente usó. SMTP se preocupa por el sobre primero.

Una cita para pegar en un post-it

La esperanza no es una estrategia. — James Cameron

La entregabilidad de correo es un problema de sistemas. Si no mides, verificas y alineas identidades, solo estás esperando por suerte.

Guía de diagnóstico rápido (comprobar primero/segundo/tercero)

Cuando la producción está en llamas, no empiezas con un debate filosófico sobre RFCs. Empiezas con el conjunto mínimo de comprobaciones
que te diga dónde ocurre el rechazo y qué identidad está siendo rechazada.

Primero: identifica la respuesta SMTP exacta y la etapa

  • Obtén el texto completo del rebote (DSN) o la transcripción SMTP de los logs de tu MTA/aplicación.
  • Anota el código numérico (550/553/554), el código de estado mejorado (como 5.7.1) y el mensaje.
  • Confirma si ocurre en MAIL FROM, RCPT TO o después de DATA.

Segundo: confirma a cuál “remitente” nos referimos

  • Envelope sender (MAIL FROM / Return-Path): usado para rebotes y SPF.
  • Header From: lo que ven las personas; usado para la alineación DMARC.
  • HELO/EHLO name: a veces comprobado contra reverse DNS y políticas.

Tercero: ejecuta comprobaciones de alineación de autenticación

  • SPF: ¿aparece la IP emisora en el registro SPF del dominio?
  • DKIM: ¿está firmado el mensaje y valida la firma?
  • DMARC: ¿pasan SPF o DKIM y se alinean con Header From?

Cuarto: revisa la política local y la verificación de directorio

  • ¿Tiene el receptor activada la verificación de remitente (callout verification, verify_sender)?
  • ¿Requiere el receptor que la dirección del remitente exista localmente (común en organizaciones cerradas)?
  • ¿Estás retransmitiendo por un smart host que reescribe remitentes inesperadamente?

Esa secuencia encuentra el cuello de botella rápido porque separa: (1) protocolo/sintaxis, (2) desajuste de identidad, (3) fallo de autenticación,
(4) aplicación de políticas. No saltes a “es SPF” cuando el servidor está rechazando una dirección sintácticamente inválida. Sí, he visto
user@@example.com en producción. Las máquinas son muy literales y de vez en cuando mezquinas.

Algunos datos e historia (para entender la rareza)

El correo no fue diseñado para entornos hostiles. Fue diseñado por investigadores que generalmente no intentaban suplantarse unos a otros.
El ecosistema moderno de “sender rejected” es un montón de adaptaciones, más miedo corporativo, más pragmatismo anti-abuso.

  1. SPF nació a inicios de los 2000 como forma de vincular IPs emisoras a dominios. Nunca autenticó “la persona”, solo la ruta.
  2. DKIM vino después, desplegado ampliamente alrededor de 2007–2009, para firmar cabeceras/cuerpo del mensaje y que los intermediarios no pudieran forjar identidad tan fácilmente.
  3. DMARC (≈2012) unió SPF y DKIM al dominio de Header From, porque los usuarios no leen Return-Path y los atacantes sí.
  4. Separación RFC 5321 vs RFC 5322: las direcciones del sobre SMTP son una especificación; las cabeceras del mensaje son otra. Muchos problemas de “sender rejected” vienen de esa separación.
  5. Códigos de estado mejorados (RFC 3463) como 5.7.1 existen para que los humanos dejen de adivinar. Lamentablemente, los vendedores siguen escribiendo poesía en la parte de texto.
  6. El backscatter se volvió un problema cuando los servidores dejaron de aceptar correos que no pueden entregar. Rechazar temprano ahora se considera cortés y más seguro.
  7. Los cambios de política en Yahoo y AOL movieron la industria al exigir autenticación y limitar tasas; los grandes proveedores de buzones fijan estándares de facto.
  8. Los reenvíos rompen SPF por diseño porque cambian la IP emisora. Por eso existen DKIM y ARC, y por eso “sender rejected” es común en cadenas de reenvío.
  9. DMARC estricto se volvió común cuando el phishing se industrializó. Muchos dominios publican p=reject ahora; los fallos ya no son “advertencias suaves”.

Chiste #1: La seguridad del correo es como el portero de un club: si tu identificación está borrosa, no entras, aunque salgas en la portada del disco de la banda.

Taxonomía de rechazos: qué capa dice “no”

1) Sintaxis y validez de la dirección

Estos son los fallos más claros. El receptor rechaza porque la dirección del remitente está malformada o viola reglas locales de sintaxis.
Casos comunes: doble @, caracteres ilegales, dominio faltante, punto final, espacios no entrecomillados, o un dominio que no resuelve.

2) Autorización local del remitente (“no puedes enviar como eso”)

Algunos receptores sólo aceptan MAIL FROM que coincida con un usuario local existente, o requieren envío autenticado para usar un dominio.
Esto aparece como 553 5.7.1 Sender address rejected: not owned by user o similar.

3) Verificación de remitente / comprobaciones por callout

El receptor intenta verificar tu dirección de remitente conectándose de vuelta al MX de tu dominio y comprobando si la dirección existe.
Esto es frágil, lento y a veces incorrecto (greylisting, tarpitting, fallos temporales). Pero todavía existe.

4) Política de autenticación (SPF/DKIM/DMARC)

Al receptor no le gustan los resultados de autenticación, o los resultados no se alinean con lo que el usuario ve en From.
Esto puede rechazar en tiempo SMTP, o aceptar y luego eliminar/cuarentenar según la política.

5) Reputación y puertas anti-abuso

“Sender address rejected” a veces es una máscara educada para “tu IP está en llamas” o “tu dominio tiene mala reputación.”
Algunos sistemas colapsan múltiples denegaciones de política en la misma razón genérica.

6) Reescritura interna/relay/smart-host

Tu app envía a tu relay; tu relay reescribe el envelope sender; el upstream rechaza la dirección reescrita.
Depuras la app durante horas, pero el error está en la plomería del correo.

Tareas prácticas: comandos, salidas, decisiones (12+)

Abajo están las tareas prácticas que realmente ejecuto. Cada una incluye (a) un comando, (b) salida realista, y (c) qué decisión tomar.
Ejecútalas desde el host emisor, el relay o una máquina de diagnóstico. La idea es sustituir conjeturas por evidencia.

Tarea 1: Captura el rechazo SMTP desde los logs de Postfix

cr0x@server:~$ sudo grep -E "reject:|Sender address rejected" /var/log/mail.log | tail -n 5
Jan 04 10:12:11 mailgw postfix/smtpd[18422]: NOQUEUE: reject: RCPT from app01[10.20.30.41]: 553 5.7.1 Sender address rejected: not owned by user; from=<alerts@corp.example> to=<user@partner.example> proto=ESMTP helo=<app01>
Jan 04 10:12:42 mailgw postfix/smtpd[18422]: NOQUEUE: reject: MAIL FROM<bounce@corp.example>: 550 5.1.8 Sender address rejected: Domain not found; from=<bounce@corp.example> proto=ESMTP helo=<mailgw>

Qué significa: El primero es un rechazo por política en tiempo de RCPT; el segundo rechaza en MAIL FROM por resolución de dominio.
Decisión: Si es “not owned by user”, céntrate en la autorización de remitente local/envío autenticado. Si es “Domain not found”, arregla el DNS del dominio del remitente.

Tarea 2: Reproducir con una sesión SMTP manual (ver la etapa exacta)

cr0x@server:~$ nc -nv mx.partner.example 25
(UNKNOWN) [203.0.113.55] 25 (smtp) open
220 mx.partner.example ESMTP
EHLO mailgw.corp.example
250-mx.partner.example
250 PIPELINING
MAIL FROM:<alerts@corp.example>
553 5.7.1 Sender address rejected: not owned by user
QUIT
221 2.0.0 Bye

Qué significa: El rechazo es en MAIL FROM. Esto no es DMARC después de DATA; es política a nivel de sobre.
Decisión: Deja de tocar DKIM en las cabeceras. Arregla la autorización del envelope sender o usa envío autenticado si es requerido.

Tarea 3: Comprobar registros MX y A/AAAA para el dominio remitente

cr0x@server:~$ dig +short MX corp.example
10 mx1.corp.example.
20 mx2.corp.example.
cr0x@server:~$ dig +short A mx1.corp.example
192.0.2.10

Qué significa: El dominio resuelve y tiene MX. Si esto estuviera vacío, algunos receptores rechazan “Domain not found” o fallan la verificación de remitente.
Decisión: Si faltan MX/A o están mal, arregla DNS antes de tocar la configuración de correo.

Tarea 4: Validar reverse DNS para la IP emisora (puerta de política común)

cr0x@server:~$ dig +short -x 192.0.2.25
mailgw.corp.example.
cr0x@server:~$ dig +short A mailgw.corp.example
192.0.2.25

Qué significa: Reverse DNS confirmado hacia adelante (FCrDNS) coincide. Muchos receptores no rechazarán sin esto, aunque algunos sí.
Decisión: Si falta reverse DNS o no coincide, arregla la alineación PTR/A. Es una credencial barata.

Tarea 5: Inspeccionar el registro SPF del dominio usado en MAIL FROM

cr0x@server:~$ dig +short TXT corp.example
"v=spf1 ip4:192.0.2.0/24 include:_spf.relayvendor.example -all"

Qué significa: SPF está presente y es estricto (-all). Genial—siempre que tu IP emisora esté cubierta.
Decisión: Si tu IP de salida o proveedor de relay no está incluido, actualiza SPF o envía a través de un relay autorizado.

Tarea 6: Evaluar SPF para una IP específica usando una herramienta local

cr0x@server:~$ sudo apt-get -y install spfquery >/dev/null
cr0x@server:~$ spfquery -ip 192.0.2.25 -sender alerts@corp.example -helo mailgw.corp.example
pass SPF check for alerts@corp.example: 192.0.2.25 is authorized to use 'corp.example'

Qué significa: SPF pasa para el dominio del envelope sender.
Decisión: Si SPF falla, o (a) arregla SPF, (b) cambia el dominio de MAIL FROM a uno que autorice al emisor, o (c) envía a través del relay correcto.

Tarea 7: Confirmar qué envelope sender se está usando realmente (inspección de cola)

cr0x@server:~$ mailq | head -n 12
-Queue ID-  --Size-- ----Arrival Time---- -Sender/Recipient-------
7C8F21A03B      2142 Fri Jan  4 10:20:01  alerts@corp.example
                                         user@partner.example

Qué significa: La cola muestra el envelope sender. Si esperabas no-reply@corp.example pero ves otra cosa, encontraste el desajuste.
Decisión: Arregla la configuración MAIL FROM de la app o las reglas de reescritura del MTA.

Tarea 8: Revisar reescritura de remitente en Postfix que podría estar saboteándote

cr0x@server:~$ sudo postconf | grep -E "sender_canonical|smtp_generic_maps|masquerade|canonical_maps"
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_generic_maps = hash:/etc/postfix/generic
masquerade_domains = corp.example

Qué significa: Los mapas canonical y generic pueden reescribir remitentes. Masquerading también puede cambiar dominios.
Decisión: Si la reescritura apunta a un dominio sin DNS/autenticación adecuada, actualiza auth/DNS o deja de reescribir.

Tarea 9: Inspeccionar el contenido del mapa canonical (atrapa la reescritura “útil”)

cr0x@server:~$ sudo postmap -q alerts@corp.example /etc/postfix/sender_canonical
alerts@corp.mail.invalid

Qué significa: Reescribes hacia un dominio que grita “alguien hizo esto durante una migración.”
Decisión: Elimina/ajusta el mapeo. Luego recompila los mapas y recarga Postfix.

Tarea 10: Recargar Postfix de forma segura tras cambios en mapas

cr0x@server:~$ sudo postmap /etc/postfix/sender_canonical
cr0x@server:~$ sudo postfix check
cr0x@server:~$ sudo systemctl reload postfix
cr0x@server:~$ systemctl is-active postfix
active

Qué significa: Mapas compilados, comprobación de sanidad de configuración y servicio recargado sin reinicio.
Decisión: Si postfix check se queja, para y arregla antes de recargar. Una recarga de MTA rota durante un incidente es una tragedia evitable.

Tarea 11: Verificar que DKIM firma los mensajes (ejemplo OpenDKIM)

cr0x@server:~$ sudo journalctl -u opendkim --since "10 minutes ago" | tail -n 5
Jan 04 10:25:10 mailgw opendkim[912]: 7C8F21A03B: DKIM-Signature field added (s=mail, d=corp.example)
Jan 04 10:25:10 mailgw opendkim[912]: 7C8F21A03B: signed message

Qué significa: Los mensajes se firman para d=corp.example con selector s=mail.
Decisión: Si no ves firmas, arregla el milter o la configuración de claves/tablas antes de culpar a DMARC.

Tarea 12: Comprobar el registro DNS DKIM para el selector

cr0x@server:~$ dig +short TXT mail._domainkey.corp.example
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A..."

Qué significa: El selector existe en DNS. Si falta, los receptores fallarán DKIM.
Decisión: Publica la clave pública correcta, confirma que no haya DNS de horizonte dividido, y espera el TTL si es necesario.

Tarea 13: Comprobar la política DMARC y expectativas de alineación

cr0x@server:~$ dig +short TXT _dmarc.corp.example
"v=DMARC1; p=reject; rua=mailto:dmarc@corp.example; aspf=s; adkim=s"

Qué significa: Alineación estricta para SPF y DKIM, y política de rechazo. Los receptores serán duros cuando falle la alineación.
Decisión: Si usas remitentes terceros, asegúrate de que firmen con tu dominio (o subdominio alineado) o usa dominios de sobre alineados.

Tarea 14: Confirmar que el lado receptor está haciendo verificación de remitente (Postfix receptor)

cr0x@server:~$ sudo postconf | grep -E "reject_unknown_sender_domain|reject_unverified_sender|verify_sender"
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_unverified_sender
address_verify_map = btree:/var/lib/postfix/verify

Qué significa: reject_unverified_sender activa verificación por callout/cache. Puede rechazar remitentes legítimos durante fallos DNS/MX transitorios.
Decisión: Si operas el receptor y ves falsos positivos, considera quitar reject_unverified_sender o limitarlo cuidadosamente.

Tarea 15: Inspeccionar comportamiento de caché de verificación de direcciones (diagnosticar rechazos falsos)

cr0x@server:~$ sudo postmap -s /var/lib/postfix/verify | head
sender@corp.example OK
bounce@corp.example DEFER
missing@corp.example REJECT

Qué significa: La caché recuerda los resultados. “DEFER” puede convertirse en “REJECT” según la política y la lógica de reintento.
Decisión: Si ves muchos DEFER/REJECT para dominios válidos durante caídas, reduce la verificación o aumenta timeouts con cuidado.

Tarea 16: Comprobar si te rechazan por la política del nombre HELO/EHLO

cr0x@server:~$ sudo postconf | grep -E "smtpd_helo_restrictions|reject_invalid_helo_hostname|reject_unknown_helo_hostname"
smtpd_helo_restrictions = reject_invalid_helo_hostname, reject_unknown_helo_hostname

Qué significa: Los receptores a veces exigen sanidad en HELO. Si tu app dice EHLO localhost desde una IP pública, parecerás spam.
Decisión: Configura un hostname apropiado en tu MTA y en la librería SMTP de tu app si ésta controla el HELO.

Soluciones de autenticación: SPF, DKIM, DMARC, alineación

Empieza por el modelo de identidad: “¿Qué dominio estamos afirmando?”

Tu correo tiene al menos tres identidades que importan operacionalmente:

  • Dominio de sobre (Envelope domain) (MAIL FROM): usado por SPF y para rebotes.
  • Dominio en Header From: usado por la alineación DMARC, y es lo que ven los usuarios.
  • Dominio d= de DKIM: el dominio que firma, con el que DMARC puede alinearse.

“Sender address rejected” suele venir de que estos no están sincronizados. El patrón limpio es:

  • MAIL FROM usa bounce@corp.example o bounces.mail.corp.example con SPF que incluya tu infraestructura de envío.
  • Header From es corp.example (o una política consistente de subdominios).
  • DKIM firma con d=corp.example (o subdominio alineado) y un selector estable.

SPF: hazlo correcto, mantenlo pequeño y no juegues con muchos includes

SPF comprueba la IP conectante contra el registro SPF del dominio de MAIL FROM (o del dominio HELO en algunos casos).
El receptor pregunta: “¿Esta IP puede enviar para este dominio?”

Guía práctica:

  • Prefiere dominios de envelope dedicados para correo masivo/app (p. ej. bounce.mail.corp.example) para poder cambiar infra sin tocar el dominio principal.
  • Mantén el conteo de búsquedas DNS bajo control. SPF tiene un límite de 10 búsquedas para mecanismos que hacen consultas DNS (include, a, mx, etc.). Si lo excedes obtendrás permerror, que muchos receptores tratan como fallo.
  • Usa “-all” solo cuando lo demuestres. Si publicas -all y olvidas un emisor, acabas de crear tu propia interrupción.

DKIM: firma lo que envías y evita que los middleboxes lo muten

DKIM verifica que cabeceras seleccionadas y el cuerpo fueron firmados por un dominio que publicó la clave pública en DNS.
Sobrevive mejor al reenvío que SPF, porque el reenvío cambia IPs pero no necesariamente el contenido.

Cosas que rompen DKIM en la vida real:

  • Relés que añaden pies de página o reescriben contenido (avisos legales, píxeles de seguimiento insertados por gateways).
  • Rotura de envoltura de líneas o normalización de contenido por “appliances” de seguridad.
  • Firmar las cabeceras equivocadas, o firmar muy pocas.
  • Rotar claves sin publicar el nuevo selector con suficiente antelación.

DMARC: la alineación es donde los sueños van a morir

DMARC no se fija en que SPF pase para algún dominio de envelope y DKIM pase para algún dominio firmante aleatorio.
Le importa que al menos uno de ellos pase y se alinee con el dominio en la cabecera From visible.

Reglas de alineación:

  • Alineación relajada: los subdominios pueden alinear (p. ej. mail.corp.example alinea con corp.example).
  • Alineación estricta: debe coincidir exactamente; los subdominios no alinean a menos que sean idénticos.

Si publicas aspf=s y adkim=s, te apuntas a una vida donde cada remitente tercero debe estar muy intencionalmente configurado.
Está bien. Solo no lo hagas un viernes.

Cuando los rechazos ocurren en tiempo de MAIL FROM, DMARC puede no ser el villano

Mucha gente culpa a DMARC porque es el acrónimo más nuevo. Pero “Sender address rejected” en MAIL FROM a menudo es:

  • el dominio no resuelve
  • el receptor niega el uso no autenticado de ese dominio
  • la verificación por callout dice que la dirección del remitente es inválida
  • una política local como “solo aceptamos remitentes de nuestra lista de socios”

La aplicación de DMARC típicamente ocurre después de que el mensaje se recibe (después de DATA), aunque algunos gateways prevalidan reputación y política antes.
Traducción: no sobreentrenes tu diagnóstico en tu estándar favorito.

Soluciones de política: verificación de remitente, listas blancas, reescritura y límites de tasa

Arregla la reescritura del envelope sender con intención, no con buena voluntad

La reescritura es poderosa y peligrosa. Es como migrar dominios, estandarizar direcciones y enrutar rebotes.
También es la forma accidental de enviar correo como un dominio que ya no controlas.

Si debes reescribir:

  • Reescribe a un dominio que controles, con DNS correcto (MX/A/PTR donde corresponda).
  • Asegúrate de que SPF esté autorado para el dominio de MAIL FROM reescrito.
  • Asegúrate de que DKIM/DMARC permanezcan coherentes con Header From.

Verificación de remitente en receptores: suena bien, luego arruina tu tarde

“Verificar que la dirección del remitente exista antes de aceptar el correo” es seductor. Reduce remitentes falsos y puede cortar spam.
También crea dependencias entre MTAs que nunca fueron diseñados para ser fiables en tiempo real.

Modos de fallo:

  • Tu MX está temporalmente lento: el receptor decide que tu remitente es inválido.
  • Greylisting: el receptor interpreta el rechazo temporal como “la dirección no existe”.
  • Límites de tasa: las sondas de verificación parecen abuso y son restringidas.
  • Comportamiento catch-all: la verificación es inútil, pero aún añade latencia y riesgo.

Listas blancas: úsalas quirúrgicamente, documéntalas y elimínalas cuando ya no sirvan

Si la política de un socio es demasiado estricta y necesitas restaurar el flujo ahora, una lista blanca puede ser un parche pragmático.
Pero los parches echan raíces. Hazlas con tiempo limitado y observables.

Submission vs relay: deja de permitir que las apps hablen al puerto 25 en internet público

Para emisores corporativos, usa submission autenticado (normalmente puerto 587 con SMTP AUTH) hacia un relay controlado.
Ese relay debería ser lo único hablando con el mundo exterior. Simplifica la política, reduce el spoofing accidental,
y hace coherente tu historia de SPF/DKIM.

Chiste #2: SMTP AUTH es como un lector de tarjetas—sin él, el edificio asume que eres un mapache con un portátil.

Errores comunes (síntoma → causa raíz → solución)

1) “553 Sender address rejected: not owned by user”

Síntoma: Rechazado inmediatamente en MAIL FROM con “not owned by user” o “sender unknown”.
Causa raíz: El receptor requiere envío autenticado para usar ese From/dominio de sobre, o impone propiedad local del remitente.
Solución: Usa puerto 587 con SMTP AUTH hacia el receptor (si es tu servidor), o reenvía por el smart host autenticado de tu organización. Si administras el receptor, relaja la política de “owned by user” para fuentes de confianza.

2) “550 5.1.8 Sender address rejected: Domain not found”

Síntoma: El dominio de MAIL FROM es rechazado porque “no existe”.
Causa raíz: El dominio del remitente no tiene DNS, tiene delegación rota, o es un dominio retirado durante una migración.
Solución: Establece MAIL FROM a un dominio resolvible. Añade registros A/MX según corresponda. No uses dominios internos solo en la internet pública.

3) “550 5.7.1 SPF fail / Sender rejected”

Síntoma: El receptor cita explícitamente fallo SPF y rechaza o cuarentena.
Causa raíz: La IP conectante no está autorizada en SPF para el dominio de sobre; o SPF es permerror por demasiadas búsquedas.
Solución: Añade las IPs/ includes correctos; aplana SPF si hace falta; o cambia el dominio de sobre a uno que coincida con la infraestructura de envío.

4) “550 5.7.1 DMARC policy reject”

Síntoma: Mensaje rechazado después de DATA o aceptado y luego devuelto citando DMARC.
Causa raíz: El dominio en Header From tiene p=reject; ni SPF ni DKIM pasan con alineación.
Solución: Asegura que DKIM firme alineado con Header From, o que SPF pase y se alinee (dominio de sobre alineado). Si un tercero envía, configúralo para que firme con tu dominio o usa un subdominio delegado alineado.

5) “Sender rejected” solo al enviar desde una aplicación, no desde un cliente de correo

Síntoma: Outlook/Apple Mail funciona; la app falla con sender rejected.
Causa raíz: La app usa una ruta SMTP distinta, a menudo directa al MX por puerto 25 sin auth, HELO incorrecto, y un envelope sender extraño.
Solución: Fuerza a la app a usar el mismo relay autenticado que los usuarios (587), configura un HELO/hostname sensato y define un envelope sender estable.

6) “Sender address rejected” aparece tras activar un gateway de seguridad o inyección de pie de página

Síntoma: DKIM empezó a fallar y aumentaron los rechazos DMARC tras desplegar un gateway.
Causa raíz: El gateway modifica cuerpos/cabeceras después de firmar DKIM, invalidando la firma.
Solución: Mueve la firma DKIM al último salto de salida (después de la modificación), o configura el gateway para evitar modificar contenido firmado.

7) Rechazos esporádicos durante incidencias

Síntoma: Funciona la mayoría de días; falla durante problemas DNS o picos de carga de correo.
Causa raíz: El receptor usa verificación por callout o comprobaciones DNS estrictas con timeouts agresivos.
Solución: Si controlas el receptor, afina o elimina la verificación de remitente. Si eres el emisor, asegura que DNS sea resistente y evita patrones que disparen fallos de verificación.

Listas de verificación / plan paso a paso

Paso a paso: restaurar flujo de correo de forma segura (modo incidente)

  1. Obtén la evidencia: captura el código SMTP, la etapa y el texto desde logs o un DSN.
  2. Confirma el envelope sender desde los logs de cola (no lo que tu app afirma).
  3. Confirma existencia DNS del dominio de envelope: A/AAAA y/o MX, y que los resolvers puedan alcanzarlo.
  4. Confirma IP de salida y que coincida con el egress previsto (sin NAT sorpresa).
  5. Comprueba SPF para el dominio de envelope y autoriza la IP/relay de salida.
  6. Comprueba firma DKIM en el MTA de egress y que el selector exista en DNS.
  7. Comprueba política DMARC en el dominio Header From; asegura que la estrategia de alineación cubra tus emisores.
  8. Arregla reescrituras de remitente que apunten a dominios retirados/inválidos.
  9. Redirige temporalmente por un relay conocido y bueno si hace falta para estabilizar producción mientras reparas DNS/autenticación correctamente.
  10. Valida con una prueba controlada (un destinatario en el dominio afectado) y observa logs.
  11. Documenta la causa raíz y elimina listas blancas o excepciones de emergencia.

Checklist de endurecimiento (para no repetir esto)

  • Un único camino de salida sancionado para apps (submission a un relay), no directo al MX.
  • Dominios de envelope dedicados para correo masivo/app, con SPF acotado y DNS estable.
  • Firma DKIM en el último salto de salida, con rotación de claves planificada y selectores gestionados.
  • Política DMARC escalonada (none → quarantine → reject) con monitorización, especialmente tras adquisiciones y onboarding de proveedores.
  • Reverse DNS alineado con el nombre HELO; HELO no configurado como “localhost” ni IDs aleatorios de contenedores.
  • Control de cambios para reglas de reescritura y mapas de transporte. Trátalos como configuración de routing, porque lo son.

Tres minihistorias corporativas

Mini-historia 1: El incidente causado por una suposición errónea

Una empresa mediana migró de un relay on-prem a un servicio de correo en la nube. El plan cubrió buzones de usuario y cambios de MX entrante.
Todos se felicitaron. Los gráficos se veían normales. Entonces, el sistema de alertas dejó de enviar correos al on-call.

La suposición errónea fue simple: “Si Outlook funciona, SMTP funciona.” Outlook usaba envío autenticado al servicio en la nube.
El sistema de alertas era una app antigua que enviaba directamente a MXs de socios por puerto 25, con un envelope sender en el dominio antiguo on-prem.
Ese dominio seguía en la memoria de alguien, no en DNS.

Los socios receptores rechazaron en MAIL FROM con “Domain not found.” Mientras tanto, los usuarios internos no notaron porque el correo interno no usaba esa ruta.
El equipo de la app cambió la cabecera From, la vio en logs y declaró victoria—mientras el envelope sender seguía roto.

La solución fue aburrida e inmediata: enrutar la app por el relay sancionado en puerto 587 con SMTP AUTH, y usar un dominio de envelope estable
que tuviera DNS y SPF. La solución real fue cultural: “correo” no es un solo sistema, son varios que interactúan. Tu cliente no es tu app.

Mini-historia 2: La optimización que salió mal

Un equipo de seguridad activó verificación por callout en su gateway entrante. La propuesta era clara: menos remitentes falsos, menos basura en cola,
menos backscatter. Funcionó una semana. Luego el helpdesk empezó a parecer un ataque de denegación de servicio.

Proveedores que enviaban facturas empezaron a fallar esporádicamente. Algunos días todo estaba bien; otros días, “Sender address rejected” por todas partes.
El gateway verificaba remitentes conectándose al MX del emisor y emitiendo comprobaciones RCPT TO—a escala, con timeouts agresivos.

Muchos MTAs modernos defienden contra el harvesting temporalmente rechazando destinatarios desconocidos, o usando greylisting en el primer contacto.
El gateway interpretó fallos temporales como prueba de que la dirección remitente era inválida y cacheó “REJECT.” Enhorabuena: te optimizaste a rechazar correo legítimo.

El rollback fue doloroso pero necesario. La aproximación final fue más moderna: confiar en resultados SPF/DKIM/DMARC, reputación y escaneo de contenido,
y reservar la verificación de direcciones para casos acotados donde controlas ambos extremos. Verificar sondando internet no es “seguridad”; es adivinanza con sockets.

Mini-historia 3: La práctica aburrida pero correcta que salvó el día

Una gran organización tenía un proceso estricto para identidades salientes: cada nuevo remitente SaaS debía usar un subdominio delegado
(como notify.mail.corp.example) con su propio SPF y claves DKIM bajo control de la empresa. Era tedioso. Era papeleo.
La gente se quejaba, por supuesto.

Entonces un proveedor tuvo un incidente y empezó a enviar desde rangos IP inesperados. Los receptores comenzaron a rechazar esos mensajes porque SPF ya no coincidía.
Podría haber sido un desastre de marca y soporte al cliente. En cambio, el radio de impacto fue pequeño: solo el subdominio del proveedor se vio afectado.

Deshabilitaron temporalmente la salida de ese subdominio apretando el SPF, mientras el resto del correo corporativo siguió fluyendo.
Como las identidades estaban segmentadas, no tuvieron que tocar el SPF del dominio apex ni las claves DKIM, y no arriesgaron romper correo ejecutivo.

La práctica no se sintió heroica cuando se diseñó. Se sintió burocrática. Durante el incidente, se sintió como cinturones de seguridad.
Las mejores victorias operativas suelen ser las que nadie nota hasta el día que de verdad importan.

Diagnóstico profundo: mapear mensajes de error a la solución correcta

Entender la diferencia: envelope sender vs Header From

Si recuerdas una sola cosa: el envelope sender no es lo mismo que la cabecera From.
El envelope sender forma parte de la transacción SMTP; se usa para rebotes y SPF. La cabecera From forma parte del mensaje;
se usa para la visualización al usuario y la alineación DMARC.

Muchos sistemas te dejan poner una cabecera From bonita mientras mantienen un envelope sender sin sentido.
Los receptores que aplican políticas de remitente rechazarán el sinsentido. Y tienen razón.

Los códigos de estado mejorados importan

Si puedes obtener el código de estado mejorado (la parte 5.X.Y), hazlo. Te indica la categoría:

  • 5.1.x: problemas de direccionamiento/estado (dominio no encontrado, dirección mala)
  • 5.7.x: problemas de seguridad/política/autenticación (SPF/DKIM/DMARC, relay denegado, remitente no permitido)

El texto del vendedor varía. Los códigos son lo más cercano a la honestidad que vas a obtener.

Soluciones prácticas por entorno (qué cambiar, dónde)

Postfix: perillas comunes que causan “sender rejected”

  • smtpd_sender_restrictions: puede incluir reject_unknown_sender_domain, reject_unverified_sender, o servicios de política personalizados.
  • smtpd_recipient_restrictions: puede ocultar comprobaciones de remitente dentro de servicios de política o access maps.
  • sender_canonical_maps / smtp_generic_maps / masquerading: pueden reescribir remitentes a dominios inválidos.
  • smtpd_helo_restrictions: puede rechazar por validez de HELO; algunos logs aún lo describen como sender rejected.

Exchange / Microsoft 365 patrones

En ecosistemas Microsoft, “sender rejected” suele mapear a:

  • intentar enviar como una dirección para la que no tienes permiso “Send As”
  • restricciones de conectores que requieren envío autenticado o IPs específicas
  • aplicación de DMARC corriente arriba al usar un dominio personalizado con política estricta

Operativamente, la solución es la misma: identifica qué identidad está siendo rechazada (envelope vs header), luego alinea permisos, conectores y autenticación.

Proveedores de servicio de correo y remitentes SaaS

Las plataformas SaaS suelen poner cabeceras From que parecen de tu dominio mientras usan sus propios dominios de envelope.
Eso puede funcionar—hasta que tu política DMARC sea estricta, o el receptor exija alineación o comprobaciones de “dominio debe existir”.

El movimiento profesional: da a cada proveedor un subdominio delegado con SPF y DKIM claros. No dejes que usen tu dominio apex gratuitamente.

Preguntas frecuentes

1) ¿“Sender address rejected” siempre es un problema de SPF/DKIM/DMARC?

No. Si ocurre en MAIL FROM y menciona “domain not found” o “not owned by user”, puede ser DNS o autorización local.
La autenticación es común, no universal.

2) ¿Cuál es la forma más rápida de distinguir envelope sender de Header From?

El envelope sender aparece en la transcripción SMTP (MAIL FROM) y en mensajes en cola como “Sender”. Header From está en las cabeceras del mensaje.
Si tienes una copia recibida, mira Return-Path (envelope) frente a From: (header).

3) ¿Por qué un receptor rechazaría la dirección del remitente antes de ver el contenido?

Política. Algunos sistemas bloquean dominios desconocidos/malos temprano para ahorrar recursos y reducir abuso. También pueden hacer callouts de verificación.
Los rechazos tempranos son normales en el diseño anti-abuso moderno.

4) Mi SPF pasa, pero aun así me rechazan. ¿Cómo puede ser?

SPF puede pasar para el dominio de envelope mientras DMARC todavía falla si Header From no se alinea. Además, los receptores pueden rechazar por reputación,
sintaxis, autorización de remitente o política HELO/PTR aun con SPF aprobado.

5) ¿DKIM se rompe si añadimos un pie de página de exención de responsabilidad?

Puede. Si el pie se inserta después de la firma DKIM, la firma queda inválida. La solución es firmar después de la modificación
(egress final) o dejar de modificar contenido firmado.

6) ¿Deberíamos activar la verificación por callout en nuestro gateway entrante?

Normalmente no. Crea dependencias frágiles y falsos rechazos, especialmente con greylisting y defensas anti-harvest.
Usa SPF/DKIM/DMARC más reputación y escaneo de contenido. Reserva la verificación para casos internos acotados.

7) ¿Por qué el reenvío causa rechazos de remitente?

El reenvío cambia la IP emisora, por lo que SPF puede fallar. DKIM puede sobrevivir, a menos que el reenvío modifique el mensaje.
DMARC puede fallar si ni SPF ni DKIM pasan con alineación. Por eso algunos correos reenviados son rechazados bajo políticas estrictas.

8) ¿Podemos arreglar esto cambiando solo la dirección From visible?

A veces, pero a menudo no. Si el receptor rechaza en MAIL FROM, cambiar la cabecera From no ayudará.
Arregla el envelope sender y la autenticación asociada.

9) ¿Y si el receptor está equivocado y rechaza remitentes legítimos?

Sucede. Proporciónales la transcripción SMTP, tu evidencia DNS/auth y pregunta qué política específica disparó (SPF/DMARC/verificación de remitente).
Si controlas tu ruta de envío, normalmente puedes adaptarte más rápido que convencer a un socio de cambiar su gateway.

10) ¿Deberíamos usar un subdominio separado para correo transaccional?

Sí, en la mayoría de las organizaciones. Aísla reputación y política, simplifica SPF y permite rotar proveedores sin tocar el dominio principal.
Es una maniobra clásica “aburrida pero correcta”.

Conclusión: pasos siguientes que puedes hacer hoy

“Sender address rejected” es la señal de que identidad y política están desalineadas en algún punto entre tu aplicación,
tu relay, tu DNS y las reglas del receptor. Trátalo como un incidente de enrutamiento: localiza el salto exacto y la identidad exacta,
luego arregla el contrato roto más pequeño.

  1. Extrae una transcripción SMTP limpia y determina la etapa del rechazo.
  2. Confirma el envelope sender usado en la conexión (no lo que indica tu UI).
  3. Arregla primero problemas de existencia DNS (MX/A, PTR/HELO saneamiento).
  4. Alinea SPF del dominio de envelope con las IPs reales de egress.
  5. Garantiza que DKIM se firme en el egress final y publica los selectores DNS.
  6. Revisa la política DMARC y la alineación; segmenta proveedores en subdominios delegados.
  7. Elimina la verificación de remitente en el receptor a menos que realmente la necesites.

Luego anótalo. No como una novela postmortem—solo lo suficiente para que la próxima persona no “arregle” la cabecera From y declare resuelto el incidente.

← Anterior
ZFS ARC: Cómo ZFS usa la RAM (y por qué la «RAM libre» es un mito)
Siguiente →
Debian 13: ‘Unit masked’ — desmascarar con seguridad y arreglar por qué fue enmascarada (caso #47)

Deja un comentario