Configurar postfix a través de un relay host autenticado (Gmail)

En principio sería posible instalar un servidor de correo en cualquier equipo conectado a Internet con una dirección IP pública, pero debido al problema del spam, mucho de los servidores de correo de Internet bloquean el correo no autenticado que venga de direcciones IP dinámicas, que son las habituales en conexiones domésticas.

Una solución es instalar un servidor de correo que no envíe directamente el correo al servidor destino, sino que utilice el equipo smtp.gmail.com para que retrasmita (relay) sus mensajes.

Características del montaje

  • Sistema: Debian GNU/Linux (lenny)
  • postfix 2.5.5
  • DNS correctamente configurado en dyndns.org, supongamos que fuese mimaquina.dyndns.org
  • ddclient instalado y configurado para actualizar el registro DNS en dyndns
  • Cuenta abierta en gmail, supongamos que fuese micuenta@gmail.com

Si instalamos postfix en un equipo con dirección IP dinámica y envíamos un mensaje de correo a determinados dominios (por ejemplo hotmail), nos rebotarán los mensajes y nos aparecerán líneas en el fichero /var/log/mail.log como éstas:

postfix/pickup[6804]: 09B0634680: uid=1000 from=<usuario>
postfix/cleanup[6810]: 09B0634680:message-id=<20081231154700.09B0634680@mimaquina>
postfix/qmgr[6802]: 09B0634680: from=<usuario@mimaquina.dyndns.org>, size=307, nrcpt=1 (queue active)
postfix/smtp[6812]: 09B0634680: to=<una@hotmail.com>,relay=mx2.hotmail.com[65.54.244.40]:25, delay=1.3, delays=0.03/0.04/0.92/0.3, dsn=5.0.0, status=bounced (host mx2.hotmail.com[65.54.244.40] said: 550 DY-001 Mail rejected by Windows Live Hotmail for policy reasons. We generally do not accept email from dynamic IP's as they are not typically used to deliver unauthenticated SMTP e-mail to an Internet mail server. http://www.spamhaus.org maintains lists of dynamic and residential IP addresses. If you are not an email/network admin please contact your E-mail/Internet Service Provider for help. Email/network admins, please visit http://postmaster.live.com for email delivery information and support (in reply to MAIL FROM command))
postfix/smtp[6812]: 09B0634680: lost connection with mx2.hotmail.com[65.54.244.40] while sending RCPT TO

Para evitar esto podemos utilizar otro MTA para que retransmita el correo de nuestro servidor, para lo que debemos tener una cuenta de correo en dicho MTA. Explicaremos a continuación los pasos que hay que dar para hacer eso con el servidor de correo de GMail (smtp.gmail.com).

Características de la conexión

Para enviar correo utilizando el servidor SMTP de Gmail la conexión tiene que estar cifrada con TLS, para lo que debemos añadir la Autoridad Certificadora adecuada (en este caso Thawte) y autenticada, para lo que utilizaremos un nombre de usuario (dirección de correo) y contraseña del servicio.

Configuración de main.cf

Tenemos que editar el fichero y añadir las siguientes líneas:

relayhost = [smtp.gmail.com]:587

Donde indicamos el nombre del equipo que retransmitirá nuestro mensajes (los corchetes ([ ]) son para que no haga la resolución MX) y el puerto de la conexión es el que se utiliza para la conexión entre un cliente y un servidor SMTP (587/TCP message submission).

smtp_use_tls = yes
smtp_tls_CAfile = /etc/postfix/cacert.pem

Para que utilice TLS al enviar correo y confíe en las autoridades certificadoras que se añadan al fichero cacert.pem

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd
smtp_sasl_security_options = noanonymous

donde le decimos a postfix que debe autenticarse mediante SASL y especificamos la ubicación del fichero con la información del nombre de usuario y contraseña.

Datos de autenticación

Creamos el fichero /etc/postfix/sasl/passwd con el siguiente contenido:

[smtp.gmail.com]:587    unacuenta@gmail.com:unacontraseña

Y lo protegemos adecuadamente con:

chmod 600 /etc/postfix/sasl/passwd

El fichero de configuración hay que transformarlo a un fichero indexado de tipo hash mediante la instrucción:

postmap /etc/postfix/sasl/passwd

que creará el fichero /etc/postfix/sasl/passwd.db

Utilización del certificado adecuado

Para añadir la autoridad certificadora Thawte al fichero de certificados que utilizará postfix, hacemos:

cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem >> /etc/postfix/cacert.pem

si no existiesen los ficheros de certificados SSL, debemos instalar el paquete ca-certificates

Actualización (21/08/2009):Ayer al enviar mensajes aparecía la siguiente línea en el registro de correo:

certificate verification failed for smtp.gmail.com[74.125.79.111]:587:
untrusted issuer /C=US/O=Equifax/OU=Equifax Secure Certificate Authority

Por lo que parece que el servidor smtp.gmail.com ha cambiado de entidad certificadora :-?, utilizando ahora Equifax en lugar de Thawte, para solucionar esto añadimos Equifax al fichero de certificados que está utilizando postfix:

cat /etc/ssl/certs/Equifax_Secure_CA.pem >> /etc/postfix/cacert.pem

y reiniciamos el demonio de postfix (bastará hacer reload).

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s