Configurar postfix para enviar emails con una cuenta SMTP externa
14.01.2019 Email Ubuntu Postfix Mailgun SendgridReleyendo 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:
- No configuration: No modificamos la configuración actual.
- Internet site: Enviar y recibir email
- Internet with smarthost: Los emails se reciben con alguna utilidad estilo fetchmail. Los emails salientes se envían utilizando un smarthost.
- Satellite system: Todos los mails se envían a otro servidor, llamado ‘smarthost’, para que sean enviados.
- Local only: Solo se guardan los emails a los usuarios locales, no hay conexión externa.
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.