Servidor de Email – Parte 4 – Postfix 3
Parte 1 – Configurar arquivo main.cf
Esta é a quarta parte do processo de criação do servidor de Email em um CentOS 8 e a primeira parte da configuração do Postfix. Se chegou aqui por acaso, melhor ler primeiro uma das publicações abaixo:
Parte 1 – Instalação dos Pacotes
Parte 2 – Configuração do MariaDB
Parte 3 – Configuração do Dovecot
O Postfix é a parte mais importante do nosso servidor de email. Ele será responsável por conversar com outros MTAs para que receba e envie as mensagens de correio eletrônico e para que ele possa ser contatado é necessário que ele seja identificável através do nome do servidor ou o seu hostname.
O Postfix requer a utilização de FQDN (Fully Qualified Domain Name). Este é o nome completo do domínio juntamente com o prefixo mail como nome do servidor. Para saber qual o nome atual do servidor basta digitar hostname sem argumento na linha de comando.
$ hostname
nome.servidor
Para alterar o nome, execute o comando abaixo informando o FQDN a ser utilizado. Você só deve fazer isso se por acaso estiver montando um servidor exclusivo, que somente será usado como servidor de email. Caso queira instalar junto com um webserver, provavelmente não deva fazer isso.
$ sudo hostnamectl set-hostname mail.meudominio.com
main.cf
O arquivo main.cf é o arquivo principal do serviço do Postfix. Ele contém as configurações básicas de execução. Nessa instalação ele deverá estar em /etc/postfix/main.cf. Vamos começar a configuração por ele. Não vou entrar em detalhes das configurações que não for alterar, pois ficaria muito longo e eu nem conheço a fundo todas elas. Precisaria estudar bastante o manual e para mim particularmente não é algo muito util. Conforme eu já mencionei, se for pra montar um servidor super parrudo talvez seja mais vantagem usar um serviço pago como o Gmail.
myhostname – Se você usou o passo de modificar o nome do host você pode manter esse atributo vazio que ele irá utilizar o nome do host proveniente de gethostname(). Se a intenção é criar um serviço de email pequeno em um servidor já existente e configurado, melhor usar um nome diferente. Por exemplo:
myhostname = mail.meudominio.com
Não se esqueça de que esse domínio deve existir na definição do seu DNS. Mais adiante vou falar sobre configurações no DNS.
mydomain – Altere este atributo para o seu dominio. Se for utilizar mais de um dominio utilize o seu principal
mydomain = meudominio.com
inet_protocols – Indica quais protocolos o Postfix irá utilizar. Se seu servidor possui suporte a IPv6, Descomente a linha inet_protocols = all, caso contrário Descomente a linha inet_protocols = ipv4.
inet_protocols = ipv4
mynetworks_style – Esta configuração indica qual rede pode ser marcada como confiável. Se você tem uma rede com mais servidores pode permitir que eles enviem email de forma simples marcando-os como seguros. No caso de um servidor unico use host.
mynetworks_style = host
mynetworks – Também relacionado a rede que se quer permitir o uso de forma confiável. É uma alternativa para o atributo anterior, quando se configura uma lista de IPs, faixa de IPs ou mesmo um arquivo com IPs. Isso é útil quando seu servidor faz parte de uma cloud por exemplo, onde o IPv4 atribuído no DNS é diferente do IPv4 real do servidor e é usado NAT (como no ECS2 da Amazon). Durante a instalação, foi criado o arquivo /etc/postfix/mynetworks que pode conter alguns IPs detectados para o servidor. Eu particularmente prefiro usar essa forma e para isso basta descomentar a linha mynetworks = $config_directory/mynetworks ou pode-se adicionar conforme a linha abaixo.
mynetworks = 168.100.189.0/28, 127.0.0.0/8
relayhost – Esta configuração é importante quando queremos ter servidores de email que usam outros domínios para efetuarem a entrega da mensagem. Se somente vai ter contas para o mesmo domínio, ela deve ficar com o default que é valor vazio. Caso tenha mais de um domínio pode ser que seja necessário adicionar $mydomain como valor. Essa configuração tem uma certa importância quando começam a receber muitos erros de entrega e caso isso aconteça, é bom dar uma estudada na documentação e testar outras configurações. Por hora, é bom usar conforme abaixo:
relayhost =
As listas de aliases não são muito importantes para o tipo de servidor que estamos criando, pois eles se referem a usuário criados para uso com o modelo padrão do postfix, que inclui usuários e senhas controlados por ele. Como usaremos elementos virtuais armazenados em Banco de Dados, essas configurações não são tão importantes, mas caso queira ter contas não virtuais (por exemplo para uso com serviços do sistema que enviam mensagens diretamente) elas acabarão sendo usadas.
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
recipient_delimiter = +
smtpd_banner – Este atributo define a mensagem que será enviada a quem conectar no serviço smtp. Você pode personalizar esta mensagem como quiser. A linha abaixo enviará uma saída como 220 mail.meudominio.com ESMTP Postfix (3.3.3).
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
As próximas entradas são uma série de configurações onde algumas não estarão presentes no arquivo inicialmente. A ideia desse tutorial é criar um servidor de email capaz de configurar contas e domínios através de uma interface Web, que no nosso caso será o Postfixadmin e todas as configurações serão armazenadas em Banco de Dados MariaDB. A partir desse ponto é necessário entender que ao utilizar esses atributos da forma como eu os apresento, o Postfix somente irá funcionar corretamente após o termino da configuração da base de dados para o Postfix/Postfixadmin. É imprescindível ter concluído a Configuração do MariaDB antes.
smtpd_use_tls, smtpd_tls_auth_only, smtpd_tls_cert_file, smtpd_tls_key_file – Esses atributos se referem ao certificado para criptografar a conexão. Lembrando que estamos criando um servidor que somente irá suportar conexões criptografadas, para diminuir ataques. Você pose usar aqui as mesmas entradas usadas na configuração de SSL do Dovecot ou criar uma nova chave self-signed.
# TLS parameters
######### Lines Changed by Marcos Regis
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
######### Lines Addes by Marcos Regis
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous authentication
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtp_helo_timeout = 15s
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_recipient_limit = 3
disable_vrfy_command = yes
smtpd_data_restrictions = reject_unauth_pipelining
master.cf
O arquivo mais complexo e não menos importante de configuração do Postfix para o nosso caso é o master.cf. Em nossa instalação ele deverá estar em /etc/postfix/master.cf. É bom que não somente faça as mudanças exatamente como passado neste documento e sim entenda o que cada elemento significa.
É possível fazer as mudanças na configuração do Postfix através do comando postconf porém não utilizarei este modo para que seja possível entender claramente cada atributo.
Nota: Eu sou adepto do Vim como editor, mas nada impede que use qualquer outro como o nano, por exemplo.
Então vamos abrir o arquivo master.cf para editar as configurações.
$ sudo vim /etc/postfix/main.cf
Se você der uma boa lida nos comentários deste arquivo (somente em inglês) vai aprender bastante sobre as configurações. É uma boa prática ler estes pequenos manuais.
Quando você abre o arquivo master.cf verá a seguinte configuração:
smtp inet n - n - - smtpd
#smtp inet n - n - 1 postscreen
#smtpd pass - - n - - smtpd
#dnsblog unix - - n - 0 dnsblog
#tlsproxy unix - - n - 0 tlsproxy
#submission inet n - n - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
Descomente a linha “submission” e alguns dos atributos que estiverem sob ele. Estes atributos começam com espaços em branco seguido de -o. Estas linhas são usadas para sobrescrever as variáveis de configuração que porventura tenham sido definidas no arquivo main.cf. Preste bastante atenção quando descomentar estas linhas: Não remova os espaços em branco a frente, ou então o Postfix não irá reconhece-las como continuação da linha Submission.
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
O que fizemos foi configurar o Postfix para criar e usar um serviço no daemon STMP com as seguintes opções:
-o syslog_name=postfix/submission indica que as atividades estarão disponíveis sob o nome “postfix/submission” no arquivo de log.
-o smtpd_tls_security_level=encrypt significa que TLS será usado para reforçar o nivel de segurança obrigando que os clientes somente criem conexões seguras.
-o smtpd_sasl_auth_enable=yes ativa o uso de SASL para a autenticação.
-o smtpd_sasl_type=dovecot O plugin SASL (aplicação) que será utilizado para a autenticação.
-o smtpd_sasl_path=private/auth O formato da autenticação que será passado ao plugin SASL.
-o smtpd_reject_unlisted_recipient=no Indica para o Postfix não rejeitar mensagens para caixas não desconhecidas. Isso é necessário devido a configuração de caixas virtuais.
-o smtpd_client_restrictions=permit_sasl_authenticated,reject Os tipos de requisição que serão aceitas dos clientes.
-o milter_macro_daemon_name=ORIGINATING O nome da macro do processo de filtro de email.
Abaixo as configurações da linha Smtps. Algumas configurações são identicas a de submission, isso porque uma configuração é de envio e a ourta de recebimento. Como somente usaremos portas de serviços que exigem autenticação, elas serão identicas e devem existir.
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
-o syslog_name=postfix/smtps indica que as atividades estarão disponíveis sob o nome “postfix/smtps” no arquivo de log.
-o smtpd_tls_wrappermode=yes indica que será utilizado Fallback TLS para clientes de email que não suportem STARTTLS.
Demais configurações não precisam de alteração.
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 oqmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
-o syslog_name=postfix/$service_name
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
2 Respostas
[…;] um servidor e e-mail utilizando as ferramentas mais comuns para ambiente OpenSource em Linux. Usei Postfix, Dovecot, Postfixadmin, Roundcube e […;]
[…;] And that';s tudo por enquanto. Em seguida, configuramos Postfix 3. […;]