Postfix en CentOS: configuración heredada y seguridad en 2026


Fecha de publicación:

Actualizado:


Artículos técnicos > Postfix en CentOS: configuración heredada y seguridad en 2026

Estado 2026 y uso seguro

Conclusión: Un transporte de correo de producción no está completo cuando Postfix simplemente se inicia. Necesita un sistema operativo compatible y una compilación de Postfix, identidad DNS correcta, política de retransmisión restringida, envío autenticado, TLS moderno, renovación de certificados, controles de abuso, registro, monitoreo de colas y capacidad de entrega probada.

Qué aprenderás

  • Lo que configuró el tutorial original de CentOS 7/Postfix 2.10.1.
  • Por qué la autenticación de envío no debe crear accidentalmente una retransmisión abierta.
  • Qué decisiones sobre TLS, SASL, DNS, firewall y operaciones se deben rediseñar para una implementación actual.

Para quién es: administradores que evalúan un runbook de Postfix heredado, no principiantes que buscan un servidor de correo público para copiar y pegar.

Situación en 2026: CentOS 7 y las versiones de paquetes enumeradas están obsoletas. La configuración heredada siguiente no ha sido validada como un servicio de correo actual seguro y no debe implementarse sin cambios; en particular, verifique que las restricciones de envío terminen en una política de rechazo explícita, proteja las credenciales y utilice el servicio systemd empaquetado en lugar de inventar una unidad sin revisar.

Nota de seguridad: Los comandos y ejemplos de configuración del artículo original no se han vuelto a ejecutar en un entorno de producción actual. Verifique las versiones compatibles, las copias de seguridad, los controles de acceso y los pasos de reversión en un entorno de prueba independiente antes de aplicarlos.

Fuentes primarias oficiales

Resumen.

Este procedimiento histórico instala e inicia Postfix en CentOS 7 y configura el puerto de envío.

Si también instala Dovecot, vea también.

Postfix es para enviar correo y Dovecot para recibirlo. Si necesitas procesar el envío de correos electrónicos, instala Postfix, y si también quieres recibir correos, instala Dovecot.

Versiones utilizadas:

Versión de CentOS7.6 (1810)
Versión de Postfix2.10.1

Índice de contenidos

  1. instalar
  2. Detalles de la configuración
  3. resumen

1. instalar

Esta sección describe la configuración de Postfix desde la instalación hasta la puesta en marcha.

1-1. Instalación de Postfix

Realice la instalación de Postfix mediante el comando yum. Realice el trabajo como usuario root.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postfix

1-2. control de arranque

Para comprobar que se ha instalado correctamente, compruebe la puesta en marcha.

[root@hostname ~]# /usr/sbin/postfix start
[root@hostname ~]# ps aux | grep postfix
root      1485  0.7  0.2  89744  2128 ?        Ss   16:02   0:00 /usr/libexec/postfix/master -w
postfix   1486  0.2  0.4  89848  4080 ?        S    16:02   0:00 pickup -l -t unix -u
postfix   1487  0.2  0.4  89916  4104 ?        S    16:02   0:00 qmgr -l -t unix -u
root      1489  0.0  0.1 112824   964 pts/0    S+   16:02   0:00 grep --color=auto postfix

Cualquier proceso que se ejecute como usuario de postfix como se ha descrito anteriormente está bien. Para.

[root@hostname ~]# /usr/sbin/postfix stop

2. Detalles de la configuración

2-1. inicialización

Configuración inicial de Postfix. Básicamente, la configuración de Postfix se describe en "/etc/postfix/main.cf", así que modificaremos main.cf.

[root@hostname ~]# vi /etc/postfix/main.cf

Aplique el siguiente cambio:

main.cf【Antes del cambio】


#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
~abreviatura~
#
#mydomain = domain.tld
~abreviatura~
#myorigin = $myhostname
#myorigin = $mydomain
~abreviatura~
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost
~abreviatura~
mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain
~abreviatura~
#mynetworks = 168.100.189.0/24, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~abreviatura~
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/

main.cf【después del cambio】


#
myhostname = example.com
#myhostname = virtual.domain.tld
~abreviatura~
#
mydomain = example.com
~abreviatura~
#myorigin = $myhostname
myorigin = $mydomain
~abreviatura~
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
~abreviatura~
#mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain
~abreviatura~
mynetworks = 127.0.0.0/8, 192.168.100.0/24
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~abreviatura~
#
#home_mailbox = Mailbox
home_mailbox = Maildir/

myhostname", "mydomain" y "myorigin" Son ajustes relacionados con el dominio. La parte que se modifica a 'ejemplo.com' debe ajustarse al nombre de dominio del servidor. La parte "ejemplo.com" de "https://example.com/" es el nombre del dominio.

La dirección de correo electrónico es username@example.com.

'mynetworks' es una configuración relacionada con la red. Esta es una dirección IP que puede ser conectada a Postfix. Si el servidor de correo está vinculado a un servidor diferente, modifique este valor en consecuencia.

'home_mailbox' es el directorio de correo electrónico. Guardar el correo electrónico enviado.

2-2. Usuario del SO o rechazar si no está definido en $alias_maps

Configure los ajustes para el envío de correos electrónicos con el usuario del SO y los usuarios listados en $alias_maps. Un usuario del SO es un usuario que se añade con useradd.

[root@hostname ~]# vi /etc/postfix/main.cf

Aplique el siguiente cambio:

main.cf【Antes del cambio】


#local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =

main.cf【después del cambio】


local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =

Añade lo siguiente al final de main.cf.

main.cf


### MAIL SIZE (20 Mbytes.)
message_size_limit = 20971520
### TLS
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/localhost.crt
smtpd_tls_key_file = /etc/pki/tls/private/localhost.key

El 'smtpd_tls_cert_file' y el 'smtpd_tls_key_file' deben establecerse de acuerdo con el entorno. Establezca la ruta donde se almacena el certificado del servidor.

La configuración de SSL es necesaria de antemano, así que si no ha configurado la configuración de SSL, por favor, lleve a cabo la configuración de SSL primero. Consulte lo siguiente.

Instalar Apache HTTP Server de forma segura en CentOS

2-3. Configuración del puerto de envío de Postfix

Configure los ajustes para el envío de correos electrónicos utilizando el puerto de envío.

[root@hostname ~]# vi /etc/postfix/master.cf

Nota: Tenga en cuenta que el archivo a editar es 'master.cf', no 'main.cf', por lo que los nombres de los archivos son similares.

Aplique el siguiente cambio:

master.cf【Antes del cambio】


#submission inet n - n - - smtpd
~abreviatura~
#-o smtpd_sasl_auth_enable=yes
~abreviatura~
#-o smtpd_client_restrictions=$mua_helo_restrictions
~abreviatura~
#-o smtpd_sender_restrictions=$mua_sender_restrictions
~abreviatura~
#-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

master.cf【después del cambio】


submission inet n - n - - smtpd
~abreviatura~
-o smtpd_sasl_auth_enable=yes
~abreviatura~
-o smtpd_client_restrictions=permit_sasl_authenticated
~abreviatura~
-o smtpd_sender_restriction=permit_sasl_authenticated
~abreviatura~
-o smtpd_recipient_restrictions=permit_sasl_authenticated


Instale las bibliotecas necesarias para la autenticación SASL con yum.

[root@hostname ~]# yum -y install cyrus-sasl
[root@hostname ~]# yum -y install cyrus-sasl-plain
[root@hostname ~]# yum -y install cyrus-sasl-md5
[root@hostname ~]# yum -y install cyrus-sasl-devel

Edite saslauthd para utilizar cuentas UNIX para la autenticación.

[root@hostname ~]# vi /etc/sysconfig/saslauthd

Aplique el siguiente cambio:

saslauthd


#MECH=pam
MECH=shadow

2-4. Activación de SASL

Activar SASL.

[root@hostname ~]# systemctl enable saslauthd
[root@hostname ~]# systemctl is-enabled saslauthd
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep saslauthd
saslauthd.service                                enabled
[root@hostname ~]# systemctl daemon-reload

2-5. control de arranque

Comprueba que Postfix se inicia.

[root@hostname ~]# /usr/sbin/postfix start
[root@hostname ~]# ps aux | grep postfix
root      1838  0.0  0.1  89744  2080 ?        Ss   18:14   0:00 /usr/libexec/postfix/master -w
postfix   1839  0.0  0.3  89848  3988 ?        S    18:14   0:00 pickup -l -t unix -u
postfix   1840  0.0  0.3  89916  4008 ?        S    18:14   0:00 qmgr -l -t unix -u
root      1845  0.0  0.0 112824   968 pts/0    S+   18:15   0:00 grep --color=auto postfix

Si hay un proceso que se ejecuta como el usuario postfix como se ha descrito anteriormente, la configuración se ha completado con éxito y se está ejecutando. Una vez confirmada la puesta en marcha, es el momento de parar.

[root@hostname ~]# /usr/sbin/postfix stop

2-6. Ajuste de la puesta en marcha automática

Finalmente, aunque no es obligatorio, es difícil iniciar Postfix cada vez que se reinicia el servidor, así que pon una configuración para que Postfix se inicie automáticamente cuando el servidor se inicie. También se registra al comando systemctl. Tenga en cuenta que este procedimiento es para CentOS7, por lo que si usted está utilizando cualquier otra cosa que no sea CentOS7, tendrá que utilizar el comando de servicio para hacer frente a esto.

Comprueba si '/usr/lib/systemd/system/postfix.service' existe. Si no hay ninguno, cree un 'postfix.service' utilizando el siguiente procedimiento. Ejecutar como usuario root.

[root@hostname ~]# touch /etc/systemd/system/postfix.service
[root@hostname ~]# vi /etc/systemd/system/postfix.service

Configuración utilizada:

[Unit]
#Descripción.
Description=Postfix
#Control previo y posterior a la ejecución.
#Before=xxx.service
After=syslog.target network.target

[Service]
#Designación de usuarios y grupos
User=root
Group=root
#Una vez activada, establezca el estado en Activado.
Type=oneshot
RemainAfterExit=yes
#Arranque, parada y recarga.
ExecStart=/usr/sbin/postfix start
ExecStop=/usr/sbin/postfix stop
ExecReload=/usr/sbin/postfix reload

[Install]
#Ajustes equivalentes al nivel de ejecución 3.
WantedBy=multi-user.target

A continuación, habilite el servicio con systemctl.

[root@hostname ~]# systemctl enable postfix
[root@hostname ~]# systemctl is-enabled postfix
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep postfix
postfix.service                                enabled
[root@hostname ~]# systemctl daemon-reload

3. resumen

Hemos descrito la configuración inicial necesaria cuando se instala Postfix.

Fue bastante difícil de configurar, así que si usted está construyendo Postfix, por favor refiérase a esto.