Postfix es un software libre y de código abierto muy popular que actúa como un agente de transferencia de correo (MTA). El trabajo de Postfix es enrutar y entregar correos electrónicos. Además del uso clásico, Postfix también se puede configurar para enviar correos electrónicos únicamente mediante aplicaciones locales.
Esta aplicación de Postfix es un truco útil para implementar en diversas situaciones. Por ejemplo, se puede utilizar al enviar notificaciones por correo electrónico con regularidad, al trabajar con un proveedor de servicios de correo electrónico de terceros con tráfico de salida limitado, etc. En comparación con cualquier servidor SMTP completo, Postfix es una alternativa más ligera que al mismo tiempo conserva las funcionalidades necesarias.
En este tutorial, descubre cómo instalar y configurar Postfix como un servidor SMTP de solo envío en Ubuntu.
Requisitos previos
Para seguir esta guía, debes cumplir con los siguientes requisitos previos:
-
Necesitas tener un servidor Ubuntu configurado correctamente con acceso a un usuario no raíz con privilegios sudo.
-
También necesitas un nombre de dominio completamente registrado. Obtén más información sobre los nombres de dominio en nuestro artículo Instalación de un certificado SSL de una autoridad de certificación comercial.
-
Finalmente, necesitarás un registro DNS con el nombre de dominio apuntando hacia la dirección IP pública del servidor.
Instalación de Postfix
Una vez que se cumplen las condiciones previas, el servidor está listo para implementar Postfix. La forma más sencilla de instalar Postfix es instalar el paquete mailutils. Está disponible directamente desde los repositorios oficiales de Ubuntu.
Primero, abre una terminal y actualiza la base de datos de paquetes de APT:
|
1 |
sudo apt update |

Luego, puedes instalar Postfix:
|
1 |
sudo apt install mailutils |

Durante el proceso de instalación, aparecerá la siguiente ventana de configuración. La opción predeterminada es Internet Site. Para confirmar la selección, presiona TAB para mover el cursor a la siguiente sección. Luego, presiona Enter:

El siguiente paso solicitará el nombre de correo del sistema. Será el nombre asignado al servidor en el momento de la creación. Como se describe en el script, si la dirección de correo para el host local es “foo@example.org”, entonces el nombre de correo del sistema sería example.org:

Ten en cuenta que el script de configuración también se puede ejecutar en cualquier momento posterior utilizando el siguiente comando:
|
1 |
sudo dpkg-reconfigure postfix |
Configuración de Postfix
En este paso, Postfix se configurará para enviar y recibir correos electrónicos solo desde localhost. Esto requiere que Postfix escuche en la interfaz loopback. Es la interfaz de red virtual que utiliza el servidor para la comunicación interna. A continuación, abre el archivo de configuración de Postfix utilizando el editor de texto de tu elección:
|
1 |
sudo nano /etc/postfix/main.cf |
Cambia el valor de inet_interface a loopback-only:

Otra directiva que debes cambiar es mydestination. Define la lista de dominios que se entregan a través del transporte de entrega de correo local_transport . El valor predeterminado será algo como esto:

Cambia su valor por el siguiente:
|
1 |
mydestination = localhost.$mydomain, localhost, $myhostname |

En caso de que tu dominio sea en realidad un subdominio y desees que los correos electrónicos parezcan enviados desde el dominio principal, agrega la siguiente directiva al final de la configuración de Postfix. Esto eliminará el subdominio de la dirección de correo electrónico:
|
1 |
masquerade_domains = <main_domain> |

Para que los cambios surtan efecto, reinicia Postfix:
|
1 |
sudo systemctl restart postfix |
Prueba del servidor SMTP
Asumiendo que el proceso de configuración se realizó correctamente, es hora de probarlo. Para hacer eso, verifica si Postfix puede enviar un correo electrónico a una cuenta de correo externa utilizando el comando mail. Es parte del paquete mailutils :
|
1 |
echo "Test email body" | mail -s "Subject line" <email_address> |
El mensaje debería llegar a la dirección de correo electrónico especificada. En este punto, todos los correos electrónicos enviados están sin cifrar. Los proveedores de servicios generalmente marcarán dichos correos como spam, así que asegúrese de revisar la sección de spam para verificar la llegada del correo electrónico.
Si el mail comando informa de un error o el correo electrónico no llegó después de un período prolongado de tiempo, vuelva a verificar la configuración de Postfix y asegúrese de que el nombre del servidor y el nombre de host estén configurados correctamente. Con esta configuración, los correos electrónicos parecerán ser enviados desde la siguiente dirección:
|
1 |
<username>@<domain> |
Aquí, el nombre de usuario será el nombre de usuario del usuario del servidor que ejecutó el mail comando.
Reenvío de correo del sistema
Hemos verificado con éxito que el servidor de correo electrónico está configurado correctamente y es funcional. Ahora debe configurarse para reenviar el correo electrónico para root. Todos los mensajes generados por el sistema enviados al servidor se reenviarán a una dirección de correo electrónico externa. Para los destinatarios de correo electrónico, el /etc/aliases archivo contiene la lista de nombres alternativos. Ábralo usando el editor de texto de su elección:
|
1 |
sudo nano /etc/aliases |
Por defecto, se verá así:

Al final del archivo, agregue la siguiente línea:
|
1 |
root: <email_address> |

Indica que los correos electrónicos enviados a root se reenviarán a una dirección de correo electrónico. Para que el cambio surta efecto, ejecute el siguiente comando. Reconstruirá la base de datos de alias que utiliza el mail comando:
|
1 |
sudo newaliases |
![]()
A continuación, debe probar si el cambio fue exitoso. Envíe un correo electrónico de prueba a root:
|
1 |
echo "Cuerpo del correo de prueba de root" | mail -s "Línea de asunto" root |
El correo electrónico debería llegar a la dirección de correo electrónico especificada. No olvide revisar la carpeta de spam, ya que aún no hay cifrado configurado.
Habilitación del cifrado SMTP
Enviar correos electrónicos en formato sin cifrar es un movimiento arriesgado. Para garantizar la seguridad, es necesario tener habilitado el cifrado SMTP. Para lograr esto, solicitaremos un certificado TLS gratuito de Let’s Encrypt para su dominio.
Para Ubuntu, es la herramienta Certbot la que hace el trabajo. Afortunadamente, está disponible directamente desde el repositorio oficial de Ubuntu. Instale Certbot con el siguiente comando:
|
1 |
sudo apt install certbot |

Asumiendo que el servidor tiene UFW configurado, es necesario tener el puerto 80 abierto para que se pueda realizar la verificación del dominio. Ejecute el siguiente comando para habilitarlo:
|
1 |
sudo ufw allow 80 |

Ahora, ejecute Certbot para generar un certificado. Esto le ordena a Certbot emitir certificados con una clave RSA de 4096 bits. La verificación se realizará a través del puerto 80 (HTTP):
|
1 |
sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d <domain> |
La salida será algo como esto:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Guardando el registro de depuración log en /var/log/letsencrypt/letsencrypt.log Plugins seleccionados: Authenticator standalone, Installer None Obteniendo un nuevo certificado Realizando los siguientes desafíos: http-01 desafío para '<domain>' Esperando la verificación... Limpiando los desafíos IMPORTANTE NOTAS: - Felicitaciones! Su certificado y cadena han sido guardados en: /etc/letsencrypt/live/<domain>/fullchain.pem Su clave archivo ha sido guardado en: /etc/letsencrypt/live/<domain>/privkey.pem Su certificado va a expirar el 2020-07-11. Para obtener una nueva o modificada versión de este certificado en el futuro, simplemente ejecute certbot nuevamente. Para de forma no-interactiva renovar *todos* de sus certificados, ejecute "certbot renew" - Si le gusta Certbot, por favor considere apoyar nuestro trabajo mediante: donaciones a ISRG / Let's Encrypt: https://letsencrypt.org/donate donaciones a EFF: https://eff.org/donate-le |
La clave se almacenará en el siguiente directorio:
|
1 |
/etc/letsencrypt/live/<domain> |
Ahora que su certificado está generado, abra el archivo de configuración de Postfix en un editor de texto:
|
1 |
sudo nano /etc/postfix/main.cf |
Busque la sección TLS parámetros:

Después de eso, cambie el valor de las directivas smtpd_tls_cert_file y smtpd_tls_key_file:

A continuación, guarde y cierre el archivo. Para que los cambios surtan efecto, reinicie Postfix:
|
1 |
sudo systemctl restart postfix |
Finalmente, envíe un correo electrónico de prueba nuevamente a una dirección de correo electrónico de destino:
|
1 |
echo "Este es el cuerpo del correo" | mail -s "Línea de asunto del correo" <email> |
El correo electrónico ahora debería aparecer normalmente como otros correos. Si verifica la información técnica del correo electrónico, aparecerá cifrado.
Consideraciones finales
¡Felicitaciones! Ha configurado con éxito un servidor de correo electrónico de solo envío, impulsado por Postfix. Las transacciones de correo electrónico también son seguras utilizando una clave de cifrado adecuada.
Para conocer más formas de optimizar la transferencia de correo electrónico, consulte este tutorial Las mejores formas de utilizar el servidor SMTP de Google.
¡Feliz computación!
Comentarios
Aún no hay comentarios. Sea el primero.