Hoy veremos como configurar sendmail en linux para utilizarlo como agente retransmisor SMTP de correo en una estación debian, linux mint, o ubuntu.
Instalación.
Podemos instalar sendmail con synaptic. En linux mint y ubuntu podemos instalar sendmail desde la terminal con la siguiente orden:
$ sudo apt-get install sendmail
En debian 7 se puede instalar desde la terminal con esta orden:
$ apt-get install sendmail mailutils sendmail-bin
Fichero /etc/hosts.
Las dos primeras líneas del fichero /etc/hosts son:
127.0.0.1 localhost
127.0.1.1 mipc
Añadir nombres calificados a estas líneas:
127.0.0.1 localhost localhost.localdomain
127.0.1.1 mipc mipc.localdomain
Fichero /etc/mail/access.
Para permitir la retransmisión a nuestros clientes de red, asumiremos que los ordenadores de nuestra organización están en la subred “1.2.3.0”. En ese caso, añadiremos la siguiente línea al archivo
/etc/mail/access:
localhost RELAY
127 RELAY
1.2.3 RELAY
Las dos primeras líneas son para que nuestro servidor pueda enviar correos desde si mismo.
Fichero /etc/mail/local-host-names.
Si tenemos un dominio propio contratado en nuestra organización, como por ejemplo organizacion.org, debemos incluirlo en el archivo /etc/mail/local-host-names que también debe incluir los nombres de dominio local del servidor.
localhost
mipc
organizacion.org
Configurar parámetros SMTP.
Ahora toca ajustar el puerto SMTP. Sendmail viene configurado por defecto para aceptar conexiones locales; es decir, no recibirá ningún mensaje del exterior. Esto no sirve de mucho en ambientes típicos de red, por lo que editaremos el archivo /etc/mail/sendmail.mc y modificaremos la siguiente línea:
DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
por:
DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp')dnl
Para asegurarnos que sendmail escucha por el puerto 25 escribiremos en el terminal:
$ netstat -ln | grep “:25”
Si sale algo como esto:
tcp 0.0.0.0:25 0.0.0.0:* LISTEN
Se esta atendiendo a las peticiones por el puerto 25 desde todas las direcciones. En cambio si aparece esto otro:
tcp 0 127.0.0.1:25 0.0.0.0:* LISTEN
Solo se escucha en localhost.
Para que sendmail envíe a través del servidor SMTP del dominio contratado en nuestra organización, descomentaremos y modificaremos la siguiente línea, o la añadiremos si no existiera, siempre antes de la línea MAILER_DEFINITIONS:
define(`SMART_HOST', `smtp.organizacion.org')
Si el servidor SMTP de nuestra organización requiere autenticación, añadiremos la siguiente línea a continuación de la anterior:
FEATURE(authinfo)dnl
Aplicaremos los cambios de configuración en la terminal con estas órdenes:
# service sendmail stop
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
Después especificaremos los datos de autenticación en el servidor SMTP editando el fichero /etc/mail/authinfo, y añadiendo la siguiente línea:
AuthInfo:smtp.organizacion.org “U:usuario@organizacion.org” “P:clave” “M:PLAIN”
Donde smtp.organizacion.org es la dirección del servidor smtp de nuestra organización, usuario@organización.org es la cuenta del usuario smtp que utilizaremos para enviar correos, y clave es la contraseña de la cuenta smtp utilizada. M:PLAIN hace referencia al método empleado para enviar las cabeceras de autenticación.
Para aplicar los cambios realizados en authinfo escribimos la siguiente instrucción en el terminal:
# makemap hash /etc/mail/authinfo < /etc/mail/authinfo
Por ultimo reiniciamos el demonio sendmail en la terminal con:
# service sendmail start
Configuración de la función mail de PHP.
Editaremos el archivo /etc/php5/apache2/php.ini y buscamos la línea que comienza con sendmail_path, la descontamos, y añadimos lo siguiente:
sendmail_path = “/usr/sbin/sendmail -t -f usuario@organización.org -i”
Donde usuario@organización.org es la dirección de correo electrónico correspondiente a la cuenta de usuario smtp configurada en el archivo /etc/mail/authinfo.
También deberemos comentar la línea que empieza por sendmail_from = me@example.com. Tendremos que reiniciar el servidor apache en la terminal con:
# service apache2 restart