Archive

Posts Tagged ‘mta’

How to sendmail masquerading – CentOS / Red Hat 5

Si necesitas enviar correos de tu servidor linux, pero estos no llegan al destinatario final, y el maillog luce similar a este:

server1 sendmail[2513]: n9ALeZ8h002511: to=<user@example.com>, delay=00:00:02, xdelay=00:00:02, mailer=esmtp, pri=120331, relay=mail.example.com. [200.10.20.3], dsn=4.2.0, stat=Deferred: 450 <root@server1.yourcompany.com>: Sender address rejected: Domain not found

Entonces te interesará seguir leyendo este post.

Este tipo de rechazo se produce por el incumplimiento de alguna de las normas descritas en la RFC 2821 para el protocolo SMTP. Generalmente ocurre cuando el host que envía el correo  tiene un FQDN (Fully Qualified Domain Name) que no puede ser resuelto por DNS en el servidor de destino (no existe un registro para el host en la zona del dominio, o bien, no existe el dominio)

El escenario a analizar será el siguiente:

  • dominio de tu organización: yourcompany.com
  • FQDN del servidor linux: server1.yourcompany.com
  • dominio del destinatario: example.com

 

Asumiremos que el dominio yourcompany.com es válido en Internet, sin embargo, no existe un registro tipo A “server1″ en la zona “yourcompany.com”, o sea, el FQDN server1.yourcompnay.com no puede ser resuelto por DNS. Por último server1.yourcompnay.com no actúa cómo un servidor de correo electrónico, sólo envía.

La solución consiste en enmascarar el host de origen: server1.yourcompnay.com cómo yourcompnay.com

Observación: Este Cómo está basado en sendmail 8.13 y Red Hat 5.3 . Aunque las instrucciones son bastante generales, y deberían aplicar para otras distribuciones de Linux con algunos cambios mínimos.

Ejecuta todos los comandos a continuación cómo root:

# yum install sendmail sendmail-cf mailx

Edita el archivo /etc/mail/sendmail.mc y ubica estas líneas:

EXPOSED_USER(`root')dnl
dnl MASQUERADE_AS(`mydomain.tld')dnl
dnl MASQUERADE_DOMAIN(mydomain.tld)dnl
dnl FEATURE(masquerade_entire_domain)dnl
dnl FEATURE(masquerade_envelope)dnl

Las lineas que comienzan con “dnl” son comentarios. Así que ahora comentaremos y descomentaremos para conseguir nuestro objetivo. Edítalas para que queden así:

dnl EXPOSED_USER(`root')dnl
MASQUERADE_AS(`yourcompany.com')dnl
MASQUERADE_DOMAIN(yourcompany.com)dnl
FEATURE(masquerade_entire_domain)dnl
FEATURE(masquerade_envelope)dnl

Acá asumimos que el dominio a enmascarar es “yourcompany.com”, procura reemplazarlo por el tuyo. Guarda y cierra. Es momento de regenerar el archivo de configuración de sendmail y reiniciar el servicio:

# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
# service sendmail restart

¡A probar! si todo salió bien, el destinatario debería recibir el correo:

mail -s "hello world" user@example.com < /dev/null

El log de sendmail ahora debería lucir así:

server1 sendmail[6336]: n9BJkM0Z006334: to=<user@example.com>, ctladdr=<root@server1.yourcompany.com> (0/0), delay=00:00:04, xdelay=00:00:04, mailer=esmtp, pri=120379, relay=mail.example.com. [200.10.20.3], dsn=2.0.0, stat=Sent (Ok: queued as EA4A35EC00B)

Si después de los cambios, tus correos aún no llegan al destinatario, es probable que tengas que usar un smart host para despacharlos. Quedará pendiente para el próximo post.