Postfix no CentOS: configuração legada e segurança em 2026
Data de Publicação:
Atualizado:
Artigos > Postfix no CentOS: configuração legada e segurança em 2026
status 2026 e uso seguro
Conclusão: Um transporte de correio de produção não está completo quando o Postfix simplesmente é iniciado. Ele precisa de um sistema operacional compatível e compilação Postfix, identidade DNS correta, política de retransmissão restrita, envio autenticado, TLS moderno, renovação de certificado, controles de abuso, registro em log, monitoramento de filas e capacidade de entrega testada.
O que você aprenderá
- O que o passo a passo original do CentOS 7/Postfix 2.10.1 configurou.
- Por que a autenticação de envio não deve criar acidentalmente uma retransmissão aberta.
- Quais decisões de TLS, SASL, DNS, firewall e operações devem ser reprojetadas para uma implantação atual.
A quem se destina: Administradores que avaliam um runbook Postfix herdado, não iniciantes que procuram um servidor de e-mail público de copiar e colar.
Atualização para 2026: CentOS 7 e as versões de pacotes listadas estão obsoletas. A configuração herdada abaixo não foi validada como um serviço de correio atual seguro e não deve ser implantada inalterada; em particular, verifique se as restrições de envio terminam em uma política de rejeição explícita, proteja as credenciais e use o pacote de serviço systemd em vez de inventar uma unidade não revisada.
Nota de segurança: os comandos e exemplos de configuração do artigo original não foram novamente executados num ambiente de produção atual. Antes de os aplicar, confirme as versões suportadas, as cópias de segurança, os controlos de acesso e o procedimento de reversão num ambiente de teste isolado.
Fontes primárias oficiais
Visão geral
Este é o procedimento de configuração inicial necessário para instalar o Postfix no CentOS e pô-lo a funcionar. A informação baseia-se no pressuposto de que o CentOS7 é utilizado. Gostaríamos de o instalar no porto de apresentação.
Se instalar também o Dovecot, ver também.
Postfix é para o envio de correio e Dovecot é para a recepção de correio. Se precisar de processar o envio de emails, instalar Postfix, e se também quiser receber emails, instalar Dovecot.
As versões são as seguintes.
| Versão CentOS | 7.6 (1810) |
|---|---|
| Versão Postfix | 2.10.1 |
Tabela de Conteúdos
1. instalar
Esta secção descreve a configuração do Postfix, desde a instalação até ao arranque.
1-1. Instalação Postfix
Executar a instalação Postfix por meio do comando yum. Efectuar o trabalho como utilizador root.
[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postfix
1-2. verificação do bootstrap check
Para verificar se foi instalado com sucesso, verifique o arranque.
[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
Qualquer processo em execução como utilizador postfix como descrito acima está OK. Parar.
[root@hostname ~]# /usr/sbin/postfix stop
2. Detalhes de configuração
2-1. inicialização
Configuração inicial do Postfix. Basicamente, a configuração Postfix é descrita em "/etc/postfix/main.cf", por isso vamos modificar main.cf.
[root@hostname ~]# vi /etc/postfix/main.cf
Alterar como se segue.
#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
~abridgement~
#
#mydomain = domain.tld
~abridgement~
#myorigin = $myhostname
#myorigin = $mydomain
~abridgement~
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost
~abridgement~
mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
~abridgement~
#mynetworks = 168.100.189.0/24, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~abridgement~
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/
#
myhostname = example.com
#myhostname = virtual.domain.tld
~abridgement~
#
mydomain = example.com
~abridgement~
#myorigin = $myhostname
myorigin = $mydomain
~abridgement~
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
~abridgement~
#mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
~abridgement~
mynetworks = 127.0.0.0/8, 192.168.100.0/24
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~abridgement~
#
#home_mailbox = Mailbox
home_mailbox = Maildir/
myhostname", "mydomain" e "myorigin" Estes são parâmetros relacionados com o domínio. A parte que é modificada para 'example.com' deve ser definida para o nome de domínio do servidor. A parte "example.com" de "https://example.com/" é o nome de domínio.
O endereço de correio electrónico é username@example.com.
A 'mynetworks' é um cenário relacionado com a rede. Este é um endereço IP que pode ser ligado ao postfix. Se o servidor de correio estiver ligado a um servidor diferente, modificar este valor em conformidade.
A 'home_mailbox' é o directório de correio electrónico. Guardar o e-mail enviado.
2-2. Utilizador de SO ou rejeitar se não estiver definido em $alias_maps
Configurar as definições de envio de emails com o utilizador do SO e os utilizadores listados em $alias_maps. Um utilizador de SO é um utilizador que é adicionado com useradd.
[root@hostname ~]# vi /etc/postfix/main.cf
Alterar como se segue.
#local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =
local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =
Acrescentar o seguinte ao final do 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
Os 'smtpd_tls_cert_file' e 'smtpd_tls_key_file' devem ser definidos de acordo com o ambiente. Definir o caminho onde o certificado do servidor é armazenado.
As definições SSL são necessárias com antecedência, por isso, se não tiver configurado definições SSL, por favor execute primeiro as definições SSL. Consulte por favor o seguinte.
Instalar o Apache HTTP Server com segurança no CentOS
2-3. Configurações da porta de submissão Postfix
Configurar as definições para o envio de e-mails utilizando a porta de envio.
[root@hostname ~]# vi /etc/postfix/master.cf
Nota: Note-se que o ficheiro a ser editado é 'master.cf', não 'main.cf', pelo que os nomes dos ficheiros são semelhantes.
Alterar como se segue.
#submission inet n - n - - smtpd
~abridgement~
#-o smtpd_sasl_auth_enable=yes
~abridgement~
#-o smtpd_client_restrictions=$mua_helo_restrictions
~abridgement~
#-o smtpd_sender_restrictions=$mua_sender_restrictions
~abridgement~
#-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
submission inet n - n - - smtpd
~abridgement~
-o smtpd_sasl_auth_enable=yes
~abridgement~
-o smtpd_client_restrictions=permit_sasl_authenticated
~abridgement~
-o smtpd_sender_restriction=permit_sasl_authenticated
~abridgement~
-o smtpd_recipient_restrictions=permit_sasl_authenticated
Instalar as bibliotecas necessárias para autenticação SASL com 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
Editar saslauthd para utilizar contas UNIX para autenticação.
[root@hostname ~]# vi /etc/sysconfig/saslauthd
Alterar como se segue.
#MECH=pam
MECH=shadow
2-4. Habilitando o SASL
Habilitar o 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. verificação do bootstrap check
Verificar se o Postfix começa.
[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
Se houver um processo em execução como utilizador postfix como descrito acima, a configuração foi concluída com sucesso e está em execução. Uma vez confirmado o arranque, é tempo de parar.
[root@hostname ~]# /usr/sbin/postfix stop
2-6. Configuração de arranque automático
Finalmente, embora não seja obrigatório, é difícil iniciar o Postfix cada vez que o servidor é reiniciado, por isso coloque uma definição para que o Postfix inicie automaticamente quando o servidor for iniciado. Também se regista para o comando systemctl. Note que este procedimento é para o CentOS7, por isso, se estiver a utilizar algo que não o CentOS7, terá de usar o comando Service para lidar com isto.
Verificar se '/usr/lib/systemd/systemd/system/postfix.service' existe. Se não houver nenhum, criar um 'postfix.service' utilizando o seguinte procedimento. Funciona como utilizador root.
[root@hostname ~]# touch /etc/systemd/system/postfix.service
[root@hostname ~]# vi /etc/systemd/system/postfix.service
É fornecida a seguinte informação.
[Unit]
#Descrição.
Description=Postfix
#Controlo pré e pós-execução.
#Before=xxx.service
After=syslog.target network.target
[Service]
#Designação do utilizador e do grupo
User=root
Group=root
#Uma vez activado, definir o estado para Activado.
Type=oneshot
RemainAfterExit=yes
#Iniciar, parar e recarregar.
ExecStart=/usr/sbin/postfix start
ExecStop=/usr/sbin/postfix stop
ExecReload=/usr/sbin/postfix reload
[Install]
#Configurações equivalentes ao nível de execução 3.
WantedBy=multi-user.target
A seguir, registar-se com o comando 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. resumo
Descrevemos a configuração inicial necessária quando o Postfix é instalado.
Foi uma luta e tanto, por isso, se está a construir o Postfix, por favor consulte isto.