Servidor de E-mail · 3 min read · Oct 23, 2025
Controle de Spam Para Postfix
Controle de Spam Para Postfix
Spam é um grande problema para quem tem um servidor de e-mail. Muitas vezes, o spam vai para endereços de e-mail que não existem. Mas, ainda assim, está atingindo seu servidor mesmo que não seja entregue. Outras vezes, a caixa de entrada de um usuário ficará cheia de mensagens irritantes sobre Viagra, prostitutas, software gratuito e o que mais.
Abaixo está uma solução. É uma acumulação contínua dos meus esforços para parar o spam da melhor maneira possível. Até agora, tem uma taxa de sucesso de 97% com mais de 20.000 e-mails (spam e ham, igualmente) processados.
Siga as instruções. Eu irei atualizar/modificar conforme necessário se as coisas parecerem pouco claras. Sinta-se à vontade para perguntar.
1) Instale Postgrey, RRD, um analisador de logs e ferramentas de gráficos.
apt-get install postgrey rrdtool mailgraph pflogsummPostgrey terá um atraso de 5 minutos por padrão nos e-mails que vão para sua caixa de entrada. Se isso for muito longo, edite o arquivo /etc/default/postgrey adicionando –delay=120 onde 120 são segundos.
2) Reinicie o servidor Postgrey.
/etc/init.d/postgrey restart3) Edite o main.cf do Postfix.
Vamos adicionar várias coisas, incluindo a configuração do Postgrey.
# Veja /usr/share/postfix/main.cf.dist para uma versão comentada e mais completa
# Específico do Debian: Especificar um nome de arquivo fará com que a primeira
# linha desse arquivo seja usada como o nome. O padrão do Debian
# é /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# adicionar .domínio é trabalho do MUA.
append_dot_mydomain = no
# Descomente a próxima linha para gerar avisos de "e-mail atrasado"
#delay_warning_time = 4h
readme_directory = /usr/share/doc/postfix
# parâmetros TLS
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# Veja /usr/share/doc/postfix/TLS_README.gz no pacote postfix-doc para
# informações sobre como habilitar SSL no cliente smtp.
myhostname = my.derekgordon.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = my.derekgordon.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::1]/128 66.118.142.78
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
html_directory = /usr/share/doc/postfix/html
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /var/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, check_policy_service inet:127.0.0.1:60000, reject_rbl_client zen.spamhaus.org, reject_rbl_client smtp.dnsbl.sorbs.net, reject_rbl_client bl.spamcop.net, reject_rbl_client combined.rbl.msrbl.net, reject_rbl_client multihop.dsbl.org, check_recipient_access regexp:/etc/postfix/spamtrap, permit
smtpd_tls_security_level = may
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
relay_domains = mysql:/etc/postfix/mysql-virtual_relaydomains.cf
relay_recipient_maps = mysql:/etc/postfix/mysql-virtual_relayrecipientmaps.cf
virtual_create_maildirsize = yes
virtual_maildir_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "O usuário que você está tentando alcançar está acima do limite."
virtual_overquota_bounce = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf
smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-virtual_client.cf
maildrop_destination_concurrency_limit = 1
maildrop_destination_recipient_limit = 1
virtual_transport = maildrop
header_checks = regexp:/etc/postfix/header_checks
mime_header_checks = regexp:/etc/postfix/mime_header_checks
nested_header_checks = regexp:/etc/postfix/nested_header_checks
body_checks = regexp:/etc/postfix/body_checks
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
message_size_limit = 0
disable_vrfy_command = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, permitDe um main.cf genérico encontrado na instalação do Debian Lenny, eu adicionei/modifiquei as áreas em NEGRITO.
4) Crie um arquivo chamado “spamtrap” no diretório /etc/postfix/.
Isso serve como um filtro. Se o spam for enviado para este endereço e outros endereços em sua máquina, ele descartará esse e-mail para que não chegue a nenhuma outra caixa de entrada.
O arquivo spamtrap se parece com isto:
/emailcontrol.*@derekgordon\.com/ DISCARDEste é um regexp, então as barras precisam ser usadas. Meu e-mail de filtro é [email protected] então edite conforme necessário e coloque no arquivo spamtrap!!!
Nota lateral: Não crie esta caixa de correio usando o ISPConfig. Não há absolutamente nenhuma razão para que ela exista em seu servidor de e-mail. É um endereço falso destinado a capturar spam irritante.
5) Abra o local.cf para o SpamAssassin e adicione o seguinte trecho.
Será um filtro extra projetado para funcionar com o SA mais do que com o Postfix geral.
nano /etc/spamassassin/local.cfAdicione o seguinte ao final:
urirhssub URIBL_BLACK multi.uribl.com. A 2
body URIBL_BLACK eval:check_uridnsbl('URIBL_BLACK')
describe URIBL_BLACK Contém uma URL listada na lista negra URIBL
tflags URIBL_BLACK net
score URIBL_BLACK 3.0Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.