miércoles, marzo 21, 2012

Sendmail utilizando Relay de correo en Linux

En alguna ocasión hemos visto como configurar sendmail en HP-UX para que el servidor envíe mensajes utilizando un relay de correo.

Hoy veremos lo mismo para un Linux tipo Red Hat, Oracle Linux, CentOS, etc.

Vemos cómo está el sendmail:
cd /etc/rc.d/init.d
./sendmail status

Si no está parado, lo paramos:
./sendmail stop

En /etc/hosts metemos la IP y el nombre de nuestro Relay de correo (como ejemplo lo llamaré srvrelay) que permanece a la escucha en el puerto 25 (SMTP):
xxx.xxx.xxx.xxx srvrelay srvrelay.organizacion srvrelay.organizacion.es

Comprobamos que funciona el ping:
ping srvrelay

Comprobamos que funciona el telnet al puerto 25
telnet srvrelay 25

Si se queda Trying direccionIP...
mal asunto. Algo nos impide establecer la comunicación.

En mi caso era un Firewall. Añado la regla que permite pasar al servicio SMTP y arreglado.

Ahora:

telnet srvrelay 25
Connected to srvrelay.organizacion
220 srvrelay.organizacion Microsoft ESMTP MAIL Service, Version...

Si no conseguimos matar el Telnet, habrá que matarlo desde otra sesión...
ps -efgrep telnet
kill -9 pid

Configuración del sendmail:
cd /etc/mail
editamos el fichero sendmail.mc

Buscamos la siguiente línea que está conectada con el dnl por delante:
dnl define('SMART_HOST','xxxxx')

La descomentamos y configuramos así:
define('SMART_HOST','srvrelay')dnl

Comprobar que esto está así:
FEATURE(`accept_unresolvable_domains')dnl

Añadimos estas entradas:
FEATURE(`accept_unqualified_senders')dnl
FEATURE(nocanonify)
define(´confSERVICE_SWITCH_FILE',`/etc/mail/service.switch')dnl
define(`confDIRECT_SUBMISSION_MODIFIERS',`C')dnl

Creamos un fichero en /etc/mail llamado service.switch
El contenido tiene que ser
hosts files

Compilamos la nueva configuración:
make -C /etc/mail

Esto genera un nuevo fichero sendmail.cf

Para poder hacer esa compilación es necesario que esté instalado el paquete sendmail-cf
En mi caso lo he encontrado en el CD 4 de 5 de Red Hat Enterprise Linux release 4:
mount /dev/dvd /dvd
cd /dev/RedHat/RPMS
rpm -i sendmail-cf-8.13.1-3.2.el4.i386.rpm

Arrancamos el servicio sendmail
service sendmail start

Y hacemos la prueba final:

mailx -s "prueba" usuario@dominio.es < fichero.txt

Fuente y más aclaraciones aquí.

Actualización (5 de Junio de 2013):

Resulta que al reiniciar un servidor Red Hat, me he encontrado con que el servicio sendmail se queda parado. Para que sendmail se inicie siempre que arrancamos el sistema operativo, hacemos lo siguiente:

Vemos el nivel de ejecución actual:

runlevel
que nos devolverá probablemente N 5.
Significa que estamos en el nivel de ejecución 5.

Configuramos que sendmail tiene que arrancar cuando entremos en el nivel de ejecución 5:

chkconfig --level 5 sendmail on


Saludos.

2 comentarios:

Anónimo dijo...

http://historialeti.blogspot.com.es/
visita mi blog

mauricio arregui ortiz dijo...

Excelente, muchas gracias!