Lea primero la parte anterior
Este artículo es el séptimo de la serie "Configurando un servidor de correo en Linux".
En la parte anterior, tratamos cómo configurar la autenticación de usuarios integrando Dovecot y PostgreSQL.
Si aún no lo ha revisado, le recomendamos que lo lea primero.
👉 Parte anterior: Configuración de auth-sql.conf.ext de Dovecot y hash de contraseñas
Estructura del archivo de configuración de Postfix
Postfix es un servidor SMTP encargado de la entrega de correo, que utiliza varios archivos de configuración para ajustar su funcionamiento.
En este artículo, explicaremos la estructura del archivo de configuración de Postfix y sus principales funciones.
Archivos de configuración principales de Postfix
Nombre del archivo | Función |
---|---|
/etc/postfix/main.cf | Archivo de configuración principal de Postfix (entrega de correo, configuración de red, etc.) |
/etc/postfix/master.cf | Gestión de servicios de Postfix (SMTP, LMTP, autenticación SASL, etc.) |
/etc/postfix/virtual | Mapeo de usuarios virtuales (dominios) |
/etc/postfix/aliases | Gestión de alias de correo electrónico de usuarios del sistema |
/etc/postfix/transport | Especificar rutas de entrega de correo para dominios/direcciones específicas |
/etc/postfix/relay_domains | Configuración de dominios permitidos para el reenvío |
/etc/postfix/sasl_passwd | Almacenar información de autenticación de servidores SMTP de reenvío |
/etc/postfix/sql/*.cf | Archivos de configuración de conexión a la base de datos (PostgreSQL) |
Configuraciones principales de Postfix (main.cf
)
Vamos a revisar las configuraciones principales que definen el comportamiento de Postfix.
La ubicación del archivo es /etc/postfix/main.cf
.
1️⃣ Configuración básica del servidor de correo
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
myhostname
→ Nombre del host del servidor de correomydomain
→ Configuración del dominio principalinet_interfaces
→ Configurar para recibir correo en todas las interfaces de redinet_protocols
→ Usar solo IPv4 (posibilidad de desactivar IPv6)
2️⃣ Limitaciones de reenvío de correo
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
permit_mynetworks
→ Permitir el reenvío desde redes de confianzapermit_sasl_authenticated
→ Solo los usuarios autenticados por SASL pueden reenviar correodefer_unauth_destination
→ Bloquear el reenvío externo no autenticado
3️⃣ Usuarios virtuales y conexión a la base de datos
Para que Postfix maneje dominios virtuales y buzones de correo utilizando PostgreSQL, se deben añadir las siguientes configuraciones:
virtual_mailbox_domains = pgsql:/etc/postfix/sql/virtual_domains.cf
virtual_mailbox_maps = pgsql:/etc/postfix/sql/virtual_mailboxes.cf
virtual_alias_maps = pgsql:/etc/postfix/sql/virtual_aliases.cf
🔹 Descripción
- virtual_mailbox_domains
→ Consultar dominios virtuales que pueden recibir correos desde la base de datos
- virtual_mailbox_maps
→ Consultar información de buzones de usuario de la base de datos
- virtual_alias_maps
→ Consultar alias de correo electrónico desde la base de datos
💡 Si está utilizando MySQL
Puede usarmysql:
en lugar depgsql:
.💡 En entornos de alto tráfico, puede ser ventajoso usar proxy:pgsql: desde el punto de vista del rendimiento. Pero en entornos normales, funciona bien sin proxy:.
Configurar Postfix para utilizar la base de datos
Para que Postfix utilice PostgreSQL, debe instalarse el paquete relacionado.
sudo apt update
sudo apt install postfix postfix-pgsql
postfix
→ Servidor SMTP básico de Postfixpostfix-pgsql
→ Paquete que permite a Postfix integrarse con PostgreSQL
Una vez completada la instalación, debe escribirse un archivo de configuración para que Postfix obtenga información de usuario de PostgreSQL.
Configuración de conexión de base de datos de Postfix (virtual_*.cf
archivos)
Postfix utiliza los archivos virtual_domains.cf
, virtual_mailboxes.cf
, virtual_aliases.cf
para consultar información de la base de datos.
Estos archivos deben generarse manualmente, y pueden elaborarse utilizando la siguiente información.
1️⃣ /etc/postfix/sql/virtual_domains.cf
(Configuración de consulta de dominios)
user = mailadmin
password = yourpassword
dbname = mail
hosts = 127.0.0.1
query = SELECT domain_name FROM mail_domain WHERE domain_name='%s' AND active=true
Descripción
user
→ Cuenta de usuario de PostgreSQL (asegúrese de crear este usuario en la base de datos con permisos suficientes para acceder por postfix.)
password
→ Contraseña de la cuenta de PostgreSQL (contraseña del usuario de DB mailadmin
que se creó previamente)
dbname
→ Nombre de la base de datos
hosts
→ Dirección del servidor de base de datos (utilizando el servidor local)
query
→ Consultar dominios que puedan recibir correos en la tabla mail_domain
2️⃣ /etc/postfix/sql/virtual_mailboxes.cf
(Configuración de consulta de buzones)
user = mailadmin
password = yourpassword
dbname = mail
hosts = 127.0.0.1
query = SELECT home_directory FROM mail_users WHERE email='%s'
Descripción
query
→ Consultar la ruta de almacenamiento de correo del usuario (retorna el campo home_directory
de la tabla mail_users
)
Postfix devuelve la ruta para que el correo del usuario se guarde en el directorio correcto.
3️⃣ /etc/postfix/sql/virtual_aliases.cf
(Configuración de consulta de alias de correo)
user = mailadmin
password = yourpassword
dbname = mail
hosts = 127.0.0.1
query = SELECT destination_email FROM mail_alias WHERE source_email='%s'
Descripción
query
→ En caso de alias, consultar el correo electrónico de destino real al que se entregará el correo.
Se busca el correo electrónico registrado en la tabla mail_alias
y se devuelve.
Configuraciones de seguridad
Estos archivos de configuración contienen contraseñas, por lo tanto, es necesario restringir los permisos.
sudo chmod 640 /etc/postfix/sql/virtual_*.cf
sudo chown root:postfix /etc/postfix/sql/virtual_*.cf
🔒 Consideraciones de seguridad:
Dado que los archivos de configuración contienen contraseñas, debe restringir los permisos para que otros usuarios no puedan leerlos.
Aplique chmod 640
para que solo el proceso de Postfix (grupo postfix) tenga acceso.
Recargar la configuración de Postfix
Una vez que la configuración esté completa, debe recargar Postfix para reflejar los cambios.
sudo systemctl restart postfix
Resumen y próximos pasos
✅ Explicación de la estructura y funciones del archivo de configuración de Postfix
✅ Adición de configuraciones principales en main.cf
de Postfix
✅ Configuración de archivos virtual_*.cf
para que Postfix se integre con PostgreSQL
En la siguiente parte, trataremos cómo configurar la autenticación SMTP integrando Postfix y Dovecot.
A través de esto, planeamos que el servidor de correo esté completamente capacitado para enviar y recibir correos.
👉 Siguiente parte: Integración de Postfix y Dovecot y autenticación SMTP (¡Próximamente!)
Add a New Comment