Volver a Protocolo SMTP

Relay SMTP

Antes de iniciar

Teóricamente, el servidor SMTP que fue configurado para la red local puede enviar e-mails para cualquier destinatario. Pero en la práctica, es poco probable que dichos e-mails lleguen a su destino final. Esto ocurre porque los proveedores de acceso a internet, con el fin de filtrar el envío de mensajes no solicitados (spam), imponen reglas muy estrictas para aceptar y re-encaminar e-mails.

Asimismo, aunque el e-mail llegara a su destino, cualquier respuesta eventual estaría dirigida para el remitente (por ejemplo fribeiro@home.lan) de un dominio que no existe fuera de la red local. Y por tanto no llegaría de vuelta.

Por tanto, si se quiere enviar correos hacia el exterior, se deben resolver dos cuestiones:

  • El servidor smtp de nuestro proveedor de acceso a internet (ISP) debe aceptar una conexión de nuestro servidor.
  • La dirección de correo del remitente debe referir a un dominio válido, para que pueda recibir respuestas.

Para resolver estas cuestiones, lo más simple es utilizar servidores con direcciones válidas. De esta forma, al enviar e-mails para el exterior, debe ocurrir lo siguiente:

  • Nuestro servidor enviará el e-mail a través de un servidor SMTP externo. En caso necesario, deberá autenticarse como usuario válido.
  • Nuestra dirección de e-mail debe ser sustituida por una dirección de correo electrónico válido en el exterior.

En este caso, vamos a utilizar el servidor SMTP de Gmail (smtp.gmail.com) y una dirección de Gmail (pinguim.ribeiro@gmail.com).

Instalación

La instalación de los paquetes de autenticación:

root@server:~# apt-get install libsasl2-modules sasl2-bin

Configuración

saslauthd

El arranque automático del servicio saslauthd se configura en el archivoo /etc/default/saslauthd:

/etc/default/saslauthd
#
# Settings for saslauthd daemon
# Please read /usr/share/doc/sasl2-bin/README.Debian for details.
#

# Should saslauthd run automatically on startup? (default: no)
START=yes

#[...]

Reiniciar el servicio saslauthd:

root@server:~# service saslauthd restart

relay

Para usar un servidor smtp intermedio (o relay), se configura postfix en el archivo /etc/postfix/main.cf:

En primer lugar, se indicará el servidor smtp de Gmail como “relay”.

/etc/postfix/main.cf
# [...]
#
# relay
#

relayhost = [smtp.gmail.com]

Luego, se configurará una conexión encriptada (tls) y autenticada (sasl_auth), así como la localización de los archivos con los parámetros de autenticación (password_maps):

/etc/postfix/main.cf
# [...]
#
# SASL SUPPORT FOR SERVERS
#
# The following options set parameters needed by Postfix to enable
# Cyrus-SASL support for authentication of mail servers.
#
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous

Los parámetros de autenticación del servidor smtp de Gmail están almacenados en el archivo /etc/postfix/sasl/sasl_passwd:

/etc/postfix/sasl/sasl_passwd
[smtp.gmail.com]        pinguim.ribeiro:myGmailPassword

Por seguridad, el archivo /etc/postfix/sasl/sasl_passwd sólo debe permitir el acceso del usuario root:

root@server:# chmod 600 /etc/postfix/sasl/sasl_passwd

Siempre que el archivo /etc/postfix/sasl/sasl_passwd fuese alterado, la base de datos correspondiente debe ser regenerada:

root@server:# postmap /etc/postfix/sasl/sasl_passwd

mapeo de direcciones

Al enviar e-mails al exterior, las direcciones internas (fribeiro@home.lan) deben ser substituidas por direcciones externas (pinguim.ribeiro@gmail.com).

Por tanto Postfix debe ser configurado para usar el archivo para mapear direcciones. Para esto se debe modificar el archivo /etc/postfix/main.cf:

/etc/postfix/main.cf
smtp_generic_maps = hash:/etc/postfix/generic

El archivo para mapear direcciones consiste en una lista de direcciones locales con sus correspondientes direcciones externas. El tamaño de la lista no está limitado, por lo que puede ser aumentada para contener las direcciones de todos los usuarios locales.

Este fichero se encuentra en /etc/postfix/generic:

/etc/postfix/generic
fribeiro@home.lan       pinguim.ribeiro@gmail.com

Siempre que el archivo /etc/postfix/generic sea modificado, debe regenerarse la base de datos correspondiente:

root@server:# postmap /etc/postfix/generic

Reiniciar postfix:

root@server:~# service postfix restart

Referencias