Postfix · 6 min read · Sep 22, 2025

Fortalecendo o Postfix Para ISPConfig 3

Fortalecendo o Postfix Para ISPConfig 3

Autor: Jesús Córdoba
Email: j.cordoba [at] gmx [dot] net
Usuário do fórum: pititis

Versão: 1.2

O objetivo deste tutorial é fortalecer o servidor de e-mail postfix usado pelo ISPConfig para servidores de e-mail na internet onde usuários autenticados são confiáveis. Com esta configuração, você rejeitará uma grande quantidade de spam antes que ele passe para a sua fila de e-mails, economizando muitos recursos do sistema e tornando seu servidor de e-mail forte contra spammers e botnets de spam. Vamos lá.

DNS Reverso, (Registro DNS PTR)

Para configurar o rdns você encontrará duas situações:

  • Seu ISP permite que você mude isso você mesmo. Dê uma olhada no seu painel de controle.

  • Seu ISP não permite que você mude isso. Basta enviar um e-mail com seu pedido.

Peça ou aponte seu registro rdns para seu servidor. i.e

server.example.com

Você pode verificar seu rdns com o comando host:

root@server / #  host 149.20.4.69
  69.64-27.4.20.149.in-addr.arpa domain name pointer pub2.kernel.org.

Lembre-se de que o dns deve propagar as mudanças.

SPF Para Seu Domínio (Registro DNS TXT)

SPF é um sistema de validação de e-mail projetado para prevenir spam de e-mail detectando falsificação de e-mail, uma vulnerabilidade comum, verificando os endereços IP dos remetentes.

Para configurar o spf você precisará adicionar um registro TXT à sua zona dns, mas primeiro você pode gerar seu registro aqui: http://www.mailradar.com/spf/

Copie o resultado do spf, depois vá para ISPConfig -> dns -> zonas -> clique no nome do seu domínio -> clique na aba de registros -> e clique em TXT

Hostname -> example.com. (com ponto no final!)

Texto -> Cole aqui o resultado do spf (sem “ “).

Exemplo: v=spf1 a mx ptr ip4:11.222.333.444 -all …e clique em Salvar.

Lembre-se de que o dns deve propagar as mudanças.

Postfix main.cf

Vamos adicionar/mudar algo em /etc/postfix/main.cf

Restrições de Helo:

smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname

Restrições de Helo em ação:

Jan 12 01:57:08 server postfix/smtpd[4687]: NOQUEUE: reject: RCPT from unknown[186.43.77.153]: 450 4.7.1 Client host rejected: cannot find your hostname, [186.43.77.153]; from=
 to= proto=ESMTP helo=<[186.43.77.153]>
Jan  8 00:32:22 server postfix/smtpd[17504]: NOQUEUE: reject: RCPT from 201-93-87-2.dial-up.telesp.net.br[201.93.87.2]: 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=

RFC estrita:

strict_rfc821_envelopes = yes

Restrições de clientes:

smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, check_client_access mysql:/etc/postfix/mysql-virtual_client.cf

Restrições de destinatários:

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unknown_recipient_domain

Restrições de dados:

smtpd_data_restrictions = reject_unauth_pipelining

Atraso do Smtpd:

smtpd_delay_reject = yes

Não se esqueça de recarregar o postfix:

/etc/init.d/postfix reload

Verificação SPF Para Postfix (Debian E Ubuntu)

Instale o pacote spf:

apt-get install postfix-policyd-spf-python

ou

apt-get install postfix-policyd-spf-perl

Adicione isso a /etc/postfix/main.cf:

policy-spf_time_limit = 3600s

e adicione check_policy_service unix:private/policy-spf no final de smtpd_recipient_restrictions:

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, reject_unknown_recipient_domain, check_policy_service unix:private/policy-spf

Agora edite master.cf e adicione no final isso (para a versão python):

policy-spf  unix  -       n       n       -       -       spawn
     user=nobody argv=/usr/bin/policyd-spf 

ou isso para a versão perl:

policy-spf  unix  -       n       n       -       -       spawn
     user=nobody argv=/usr/sbin/postfix-policyd-spf-perl

…recarregue o postfix.

/etc/init.d/postfix reload

Verificação spf em ação:

Jan  4 15:50:11 server postfix/smtpd[19096]: NOQUEUE: reject: RCPT from g230068165.adsl.alicedsl.de[92.230.68.165]: 550 5.7.1 <[email protected]>: Recipient address rejected: Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.org/Why?s=helo;id=paxxxxxn.com;ip=92.230.68.165;[email protected]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=

Greylist

Greylisting é um método de defesa dos usuários de e-mail contra spam. Um agente de transferência de e-mail (MTA) usando greylisting irá “rejeitar temporariamente” qualquer e-mail de um remetente que não reconhece. Se o e-mail for legítimo, o servidor de origem tentará novamente após um atraso e, se tempo suficiente tiver passado, o e-mail será aceito.

Instalando postgrey (Debian, Ubuntu):

apt-get install postgrey

As opções de configuração estão em /etc/default/postgrey (o atraso padrão é de 5 min).

Edite main.cf e adicione check_policy_service inet:127.0.0.1:10023 ao final de smtpd_recipient_restrictions:

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, reject_unknown_recipient_domain, check_policy_service unix:private/policy-spf,check_policy_service inet:127.0.0.1:10023

…recarregue o postfix:

/etc/init.d/postfix reload

Greylist em ação:

Jan 10 17:38:57 server postfix/smtpd[21302]: NOQUEUE: reject: RCPT from mailout-de.gmx.net[213.165.64.22]: 451 4.7.1 <[email protected]>: Recipient address rejected: Greylisting in effect, please come back later; from=<[email protected]> to=<[email protected]> proto=SMTP helo=

DNSBL (Lista Negra/Lista de Bloqueio Baseada em DNS)

Uma DNSBL é uma lista de endereços IP publicada através do Serviço de Nome de Domínio da Internet (DNS) como um arquivo de zona que pode ser usado por software de servidor DNS, ou como uma zona DNS ao vivo que pode ser consultada em tempo real. DNSBLs são mais frequentemente usadas para publicar os endereços de computadores ou redes ligadas ao spam; a maioria dos softwares de servidor de e-mail pode ser configurada para rejeitar ou sinalizar mensagens que foram enviadas de um site listado em uma ou mais dessas listas. Isso pode incluir listar os endereços de computadores zumbis ou outras máquinas sendo usadas para enviar spam, listar os endereços de ISPs que hospedam spammers voluntariamente, ou listar endereços que enviaram spam para um sistema honeypot. Para usar dnsbl com postix usamos reject_rbl_client. Basta adicionar alguma zona dns ao vivo para consultas no arquivo main.cf.

No meu exemplo, usarei duas listas com uma reputação muito boa (adicionadas ao final de smtpd_client_restrictions):

smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, check_client_access mysql:/etc/postfix/mysql-virtual_client.cf,  reject_rbl_client cbl.abuseat.org,  reject_rbl_client b.barracudacentral.org

rbl em ação:

Jan 12 01:52:42 server postfix/smtpd[4616]: NOQUEUE: reject: RCPT from 89.pool85-49-26.dynamic.orange.es[85.49.26.89]: 554 5.7.1 Service unavailable; Client host [85.49.26.89] blocked using cbl.abuseat.org; Blocked - see http://cbl.abuseat.org/lookup.cgi?ip=85.49.26.89; from=<[email protected]> to=<[email protected]> proto=SMTP helo=
Jan 11 20:13:58 server postfix/smtpd[29591]: NOQUEUE: reject: RCPT from 93-87-122-56.dynamic.isp.telekom.rs[93.87.122.56]: 554 5.7.1 Service unavailable; Client host [93.87.122.56] blocked using b.barracudacentral.org; http://www.barracudanetworks.com/reputation/?pr=1&ip=93.87.122.56; from=
<[email protected]> to=<[email protected]> proto=ESMTP helo=

Postscreen

Nota: Este recurso está disponível no Postfix 2.8 e superior

O daemon postscreen do Postfix fornece proteção adicional contra sobrecarga do servidor de e-mail. Um processo postscreen lida com várias conexões SMTP de entrada e decide quais clientes podem se comunicar com um processo de servidor SMTP do Postfix. Ao manter spambots afastados, o postscreen deixa mais processos de servidor SMTP disponíveis para clientes legítimos e atrasa o início das condições de sobrecarga do servidor.

O principal desafio para o postscreen é tomar uma decisão de “é um zumbi” com base em uma única medição. Isso é necessário porque muitos zumbis tentam passar despercebidos e evitar enviar spam para o mesmo site repetidamente. Uma vez que o postscreen decide que um cliente não é um zumbi, ele coloca o cliente na lista branca temporariamente para evitar mais atrasos para e-mails legítimos.

Usaremos para este tutorial as configurações padrão com uma exceção. Essas configurações são boas para a maioria das situações

Primeiro, adicionamos uma linha ao main.cf com o comando:

postscreen_greet_action = enforce

Em segundo lugar, adicionamos postscreen e alguns novos serviços ao master.cf Nota: Essas configurações podem já existir, basta descomentar. Também tenha certeza de que a linha “smtp inet … smtpd”, incluindo qualquer parâmetro, está comentada (se houver, os parâmetros devem ser movidos para o novo serviço smtpd).

# Arquivo de configuração do processo mestre do Postfix.  Para detalhes sobre o formato
# do arquivo, veja a página do manual master(5) (comando: "man 5 master").
#
# Não se esqueça de executar "postfix reload" após editar este arquivo.
#
# ========================================================================== 
# tipo de serviço  privado não privilegiado  chroot  despertar  maxproc comando + args
#               (sim)   (sim)   (sim)   (nunca) (100)
# ========================================================================== 
#smtp      inet  n       -       -       -       -       smtpd
#          -o ...
smtpd     pass  -       -       n       -       -       smtpd
     -o ... # Parâmetros movidos do serviço smtp para o novo serviço smtpd.(se houver)
smtp      inet  n       -       n       -       1       postscreen
tlsproxy  unix  -       -       n       -       0       tlsproxy
dnsblog   unix  -       -       n       -       0       dnsblog

Agora, recarregamos o postfix:

/etc/init.d/postfix reload
Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.