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.




