Introducción

Hace tiempo intenté configurar un servidor SMTP en una máquina de la nube, pero debido a algunas restricciones, los emails enviados desde ese servidor eran rechazados. El problema era que el proveedor de hosting no había configurado las entradas DNS PTR (más sobre las entradas DNS PTR) para algunos tipos de hostings.

Cuando esto ocurre la mejor solución es utilizar un servidor SMTP de retransmisión, de esta manera ese servidor es el encargado de la entrega final de los emails. Hay algunos servicios como Sendinblue que ofrece 300 emails al día en su plan gratuito. Creo que es suficiente para el uso normal de un servidor de correo.

Utilizaré Sendinblue para este artículo, pero se podría usar cualquier otro servidor externo SMTP.

Sendinblue

El primer paso es registrarse en el servicio Sendinblue. Una vez registrado tienes que crear una clave SMTP (Pestaña SMTP). Guarda la clave porque la usaremos más adelante.

Postfix

Instalación

El primer paso es instalar Postfix. Es un MTA (Mail Transfer Agent) libre y open-source que enruta y entrega correo electrónico (e-mails).

Para instalarlo, simplemente usa este comando:

sudo apt install postfix

Durante el proceso de instalación se te preguntará por el Tipo general de configuración de mail. Selecciona Sitio de Internet de las opciones. El siguiente paso que tendrás que introducir es el FQDN de tu servidor.

Configura los usuarios y passwords SMTP

El siguiente paso es configurar los parámetros de Sendinblue (Recuerda, el usuario y la clave que te pedí guardar antes).

sudo vi /etc/postfix/sasl_passwd

Y añadir la llave con este formato (Cambia la dirección de e-mail)

[smtp-relay.sendinblue.com]:587 admin@oastic.com:xsmtpsib-f9e38e034b5a4fcfa5b3061e1252f23f15f63d55b8241a421ec62877be6f967c-aJ70ykx5VQ13PgSs

Y ahora es necesario crear la tabla dde búsqueda de Postfix.

sudo postmap /etc/postfix/sasl_passwd

El siguiente paso es asignar los permisos correctos y el propietario del fichero.

sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

Configurar el host de retransmisión en Postfix

Edita el fichero mail.cf:

# sudo vi /etc/postfix/main.cf

Y añade estas líneas:

relayhost = [smtp-relay.sendinblue.com]:587 
# enable SASL authentication
smtp_sasl_auth_enable = yes
# disallow methods that allow anonymous authentication.
smtp_sasl_security_options = noanonymous
# where to find sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# Enable STARTTLS encryption
smtp_use_tls = yes
# where to find CA certificates
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Y finalmente, recarga el servicio Postfix.

service postfix reload

Configurar el FQDN

Para configurar el FQDN es necesario editar el fichero del sistema operativo /etc/hosts.

sudo vi /etc/hosts

Es necesario añadir una nueva linea con la dirección IP 127.0.1.1 con el hostname y el FQDN. En mi caso con el dominio oastic.com ésta debe de ser la línea añadida:

127.0.1.1 myhost myhost.oastic.com

Probando el FQDN

Una manera de comprobar el valor del FQDN es utilizar el comando hostname. Sin opciones, te devolverá el hostname:

# hostname
myhost

Y con el parámetro --fqdn, tendrá el FQDN completo.

# hostname --fqdn
myhost.oastic.com

Probando la entrega de mail

Para probar la entrega remota de e-mail vamos a utilizar el comando mail.

# mail mytestaccount@gmail.com
Cc:
Subject: Test
Test
#

(Control+D para terminar)

Y ahora el e-mail debería de ser entregado utilizando el servidor de retransmisión de Sendinblue.

Sugiero revisar el fichero de log /var/log/mail.log para chequear el status del e-mail. En mi caso el estado es sent (enviado), por lo que está OK.

2022-11-10T22:58:37.133171+01:00 myhost postfix/pickup[58673]: 203AC21AD6: uid=1000 from=<root>
2022-11-10T22:58:37.147450+01:00 myhost postfix/cleanup[59096]: 203AC21AD6: message-id=<20221110215837.203AC21AD6@myhost>
2022-11-10T22:58:37.154150+01:00 myhost postfix/qmgr[58672]: 203AC21AD6: from=<root@myhost.oastic.com>, size=379, nrcpt=1 (queue active)
2022-11-10T22:58:37.825501+01:00 myhost postfix/smtp[59098]: 203AC21AD6: to=<mytestaccountgmail.com>, relay=smtp-relay.sendinblue.com[185.107.232.248]:587, delay=0.71, delays=0.04/0.14/0.42/0.12, dsn=2.0.0, status=sent (250 Message queued as <20221110215837.203AC21AD6@medusa>)
2022-11-10T22:58:37.826058+01:00 myhost postfix/qmgr[58672]: 203AC21AD6: removed

Y esto es todo. Espero que hayas disfrutado este artículo :-)