Home > Linux > Sendmail con smarthost y autenticacion

Sendmail con smarthost y autenticacion

Despues de un dolor de cabeza me decidi escribir este post para tenerlo como futura referencia y no andar buscando la informacion en otros lugares.

Problema:
Tenemos un servidor que queremos envie correos pero la ip del servidor es dinamica y ademas el puerto 25 para envio de correo esta bloqueado.

Solucion:
Usar una cuenta de correo ya existente en algun servidor que tengamos contratado y hacer que nuestro servidor le envie los correos a este servidor hosteado. A esto se le llama relay y se puede hacer de varias formas.

primero crearemos un archivo llamado client-info el servidor de correo guarda la configuracion en el directorio /etc/mail y crearemos el directorio auth dicho esto el archivo quedaria en la ruta /etc/mail/auth/client-info

AuthInfo:dominio.com "U:root" "I:usuario@dominio" "P:password" "M:LOGIN PLAIN"

Donde:
AuthInfo: es el nombre de dominio del correo
U: el usuario que enviara el correo
I: el usuario de la cuenta de correo
P: el password de la cuenta de correo
M: el metodo que utilizara para autentificarse en el servidor

Uan vez creado el archivo ejecutamos el comando

makemap hash client-info < client-info

Esto nos creara un archivo client-info.db

Ahora agregaremos la configuracion a sendmail para utilizar la cuenta de correo configurada
Editamos el archivo sendmail.mc y agregamos o quitamos el comentario a las lineas siguientes:

define(`SMART_HOST',`[dominio.com]')
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl
FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl

Como se ve en la configuracion el SMART_HOST esta encerrado entre [] esto se hace cuando el dominio que estamos usando tiene configurado un registro MX es decir, si el servidor tiene dominio.com tal vez su registro MX que se encarga de manejar el correo para ese dominio sea mail.dominio.com

Ya que esta hecha la configuracion ejecutamos el comando y reiniciamos el servicio.

m4 sendmail.mc > sendmail.cf

Depuracion:
Si despues de hacer esto marca algun error de envio o se regresan los mensajes de correo podemos checar los logs y tratar de indentificar el problema.

Primero aumentamos el nivel del log en el sendmail

define(`confLOG_LEVEL', `20')dnl

Si con eso no es suficiente podemos crear un log con toda la sesion del sendmail para eso tenemos que detener el servicio y ejecutar

sendmail -bD -X/tmp/sendmail.log

Y despues en otra sesion enviar un correo. Esto creara un archivo en el directorio /tmp con toda la informacion de la sesion de sendmail.

Espero les sirva, saludos.

Categories: Linux Tags:
  1. Thrasher
    May 24th, 2010 at 09:25 | #1

    muchos mx estan siendo bloqueados, los del dyndns estan bloqueados y no salen los correos, con cual servicio de dns dinamico lo probaste?

  2. alvariux
    May 29th, 2010 at 04:38 | #2

    No uso dns dinamico, el problema no es el dns sino las ips, se puede usar una cuenta de otro servidor que si mande correos.