Configurar postfix para enviar emails con una cuenta SMTP externa

Releyendo el artículo sobre configurar logwatch noté un detalle importante: falta la configuración de postfix para que el mail de logwatch llegue a nuestra casilla.

En este caso voy a usar postfix conectado a una cuenta SMTP externa que envíe los emails (hice las pruebas con mailgun y sendgrid, ambas funcionaron OK).

Vamos con la configuración.

Descargar postfix

Primer paso, obviamente, va a ser descargar postfix:

apt-get install postfix

Al momento de instalar nos van a aparecer opciones de configuración que debemos ir seteando:

1. Que tipo de configuración queremos. Para este caso vamos a elegir satélite.

Las opciones son:

2. Una vez configurado el modo satélite, nos va a preguntar el dominio (FQDM) de nuestro servidor. Vamos a usar nuestro dominio (ejemplo.com).

3. El siguiente paso es definir el relay host, osea el servidor al que postfix va a enviar los emails, en caso de mailgun este es smtp.mailgun.org y para sendgrid es [smtp.sendgrid.net]:587.

Configurar postfix

Ahora vamos a terminar de configurar postfix, para esto debemos abrir el archivo /etc/postfix/main.cf y modificamos/agregamos los siguientes parámetros:

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = ejemplo.com

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd

Y confirmamos que el relayhost sea el correcto para sengrid o mailgun:

relayhost = [smtp.sendgrid.net]:587

o

relayhost = smtp.mailgun.org

Ahora solo nos falta agregar las credenciales de nuestro SMTP en el archivo /etc/postfix/sasl_passwd. Para Sendgrid:

[smtp.sendgrid.net]:587 username:password

Y para mailgun:

smtp.mailgun.org [email protected]:password

Una vez completado este paso, tenemos que darle permiso de lectura solo al owner del archivo /etc/postfix/sasl_passwd y correr postmap para que postfix "mapee" este archivo y lo pueda leer:

chmod 600 /etc/postfix/sasl_passwd

postmap /etc/postfix/sasl_passwd

Y con eso terminamos. Reiniciamos postfix y ya lo tenemos configurado para enviar los emails del servidor con nuestra cuenta SMTP externa.

service postfix restart

Hagan la prueba de enviar un email y chequear en /var/log/mail.log, deberían ver algo asi:

message-id=<[email protected]>

from=<[email protected]>, size=1000, nrcpt=1 (queue active)

to=<[email protected]>, relay=smtp.sendgrid.net, delay=2.1, delays=0.23/1.2/0.52/0.17, dsn=2.0.0, status=sent (250 Ok: queued as bdfWSMNhGpQ)

removed

Conclusión

Hay muchas más opciones de configuración que se pueden modificar, con estos pasos básicos van a tener el server funcionando y enviando los mails. Recomiendo que tomen las medidas de seguridad necesarias para evitar que su servidor sea utilizado por spammers (firewall, revisar los logs de logwatch y de los servicios SMTP, etc).

Un paso obvio que me salteé acá es configurar las cuentas de mailgun o sendgrid, ambas se configuran muy fácilmente. Y en realidad ni siquiera hace falta configurar estos servicios, pueden usar cualquier servidor SMTP que tengan disponibles.