Publicado em

Configurar postfix antispam whitelist blacklist evitar bloquear spam


Reviewed by:
Rating:
5
On 22 de novembro de 2016
Last modified:22 de novembro de 2016

Summary:

Veja como configurar seu postfix com a whitelist e blacklist para filtrar suas mensagens de e-mail.

Melhor maneira de configurar seu postfix para recebimento, envio com bloqueio de spams ou e-mails indesejáveis

O Postfix é uma maravilhosa ferramenta de gerenciamento de e-mails, muito completa e proporcionalmente complexa.

Para evitar ao máximo a praga da internet que é o SPAM, diversos métodos tem sido inventados, todos eficientes mas nenhum deles evitou 100% dos emails indesejados sem risco de perda de e-mails legítimos.

Em minha experiência de gerenciamento de servidores de email, tive que aprender ao longo dos anos a implementar cada uma destas políticas (ip reverso, DKIM, SPF, DMARC, etc…), todas estas configurações ajudaram e muito na filtragem eficiente dos e-mails, sobrando realmente apenas aqueles que conseguiram realizar todas estas configurações e continuam enviando spams, o que graças a Deus são uma minoria.

Hoje o envio de emails está regulamentado, quem seguir estas políticas passa a ser reconhecido como mailmarketing e não como spam (cá entre nós, se você recebe emails de servidores desconhecidos para mim é SPAM, mas vamos deixar estas discussões de lado).

A verdade é que um bom e-mail de marketing sempre tem a opção de unsubscrib para remover seu e-mail da lista deles, pois é…

Na prática, quando eu montava um novo email e aparecia uma mensagem destas, no começo, inocentemente eu clicava em unsubscrib, o que na verdade só servia para informar a muitos servidores inidôneos que seu e-mail era válido e tinha alguém lendo, pronto, agora este email passava a fazer parte de inúmeras listas comercializadas e enviadas para servidores de “MailMarketing” e minha caixa do novo email entupia de lixo.

Pois bem, depois de muitos anos apanhando, batendo cabeça finalmente consegui arranjar o melhor método para filtrar os emails e de uma forma bem optimizada para o servidor, além de você ter que criar todas as políticas citadas acima, você deve também criar uma BlackList e uma Whitelist, métodos bem antigos mais que junto com as demais políticas são sem dúvida os melhores caminhos, não conheço nenhum outro melhor que este nestes mais de 20 anos de T.I., pois o servidor de email que for aprovado em todas os filtros aqui descritor irão lhe enviar emails, e só uma black list mesmo para impedi-los.

É bom você adquirir uma lista de domínios conhecidos de envio de spam ou de MailMarketing, pois afinal se eles tem o direito de enviar você tem o direito de querer receber ou não correto? 😉 mais que justo.

A aquisição desta lista vai lhe poupar anos de pancadas e recebimentos de emails indevidos, e você pode implementá-la com o tempo, transformando ela em uma lista mais completa, adquirir uma vai lhe fazer saltar anos de sofrimento, aqui eu disponho a lista que utilizo atualmente, venho sempre atualizando esta lista e dispondo para novos downloads, se seu domínio estiver nela então converse comigo antes de me xingar, se você está nela posso garantir que algum motivo há para isto ter ocorrido e guardo sempre as provas disto, então não fique “irritadinho”.

Há diversos tutoriais na net, muitos dele indicando como criar estas blacklists, mas na prática, quando a lista ficava grande, era notório o impacto no sistema, consumo de memória e processamento para buscar o registro um a um, por isto sempre aconselho a usar estas blacklists associada a um banco de dados, e o postfix faz isto muito bem.

O banco de dados promove uma ótima performance nesta busca, menos consumo de memória e recursos do sistema, nos vamos ensinar aqui a configurá-lo no Mysql, mas pode ser configurado também no postgresql se desejar.

Como o Mysql é praticamente obrigatório em todos os hosts, não vejo necessidade de um banco mais poderoso como o postgre, ele supre perfeitamente a necessidade (e hoje o Mysql está fantástico, não deixa a desejar).

Vamos lá, primeiramente configure em seu servidor de emails todas as políticas abaixo, aconselho a pesquisar sobre cada uma delas pois você demandará um bom tempo nelas, são configurações que ajudaram tanto no envio como no recebimento:

  • IP Reverso (peça ao seu provedor do link)
  • DKIM
  • SPF
  • DMARC
  • SPAMASSASIN
  • Estude um pouco sobre políticas de envio de mensagem
  • Verifique se seu ip ou domínio não está em nenhuma blacklist

Feita estas configurações, elas auxiliarão muito você no envio de e-mails de maneira a ser efetivamente recebidos pelos clientes, agora vamos para as configurações de filtragem interna.

Configurações gerais de envio de email

Abaixo segue meu main.cf nos pontos cruciais para o recebimento e envio, você deve procurar estas linhas e editá-las como está proposto, todas estas configurações foram em base de tentativa e erro durante anos, até chegar neste ponto que considero hoje perfeito para o servidor:

smtpd_client_restrictions

smtpd_client_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
check_client_access mysql:/etc/postfix/wb_list_checks_mysql,
reject_unauth_pipelining,
reject_rbl_client maps_rbl_domains

maps_rbl_domains

maps_rbl_domains =
xbl.spamhaus.org,
relays.ordb.org,
list.dsbl.org,
dun.dnsrbl.net,
spam.dnsrbl.net,
cbl.abuseat.org,
sbl-xbl.spamhaus.org,
bl.spamcop.net,
dns.rfc-ignorant.org

smtpd_helo_restrictions

smtpd_helo_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
check_helo_access regexp:/etc/postfix/regras_ehlo,
reject_invalid_hostname,
reject_unauth_pipelining,
reject_rhsbl_sender dsn.rfc-ignorant.org,
reject_rbl_client maps_rbl_domains,
reject_non_fqdn_hostname

smtpd_recipient_restrictions

smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_invalid_hostname,
reject_unverified_recipient,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
check_sender_access mysql:/etc/postfix/wb_list_checks_mysql,
check_client_access mysql:/etc/postfix/wb_list_checks_mysql

header_checks

header_checks = regexp:/etc/postfix/header_checks

mime_header_checks

mime_header_checks = regexp:/etc/postfix/mime_checks

Agora vamos primeiramente nas regras do regexp, por último informarei as configurações da white e blacklist, não adianta eu informar diretamente como configurar a white e blacklist sem configurar os demais, seu servidor não ficará perfeito se não seguir todos os passos.

 Arquivo /etc/postfix/regras_ehlo

# Nao permite que outro servidor se passe pelo seu servidor
/^mailhost\.seudominio\.com\.br$/ REJECT Regras EHLO: Acesso Negado
/(seuhostname\.)?seudominio\.com\.br/ REJECT Regras EHLO: Acesso Negado
/(mailhost\.)?seudominio\.com\.br/ REJECT Regras EHLO: Acesso Negado

# Nao permite que outro servidor se identifique como Localhost
/localhost/ REJECT Regras EHLO: Definitivamente voce nao eh localhost

# Bloquear tentativa de se passar pelo proprio servidor (preencha com seu IP)
/200\.219\.xxx\.xxx/ REJECT Regras EHLO: Voce nao pode se identificar com meu IP

# Não Permitir IPs Literais em ehlo/helo (que eles se identifiquem com endereços IP)
#/^\[[[:digit:]\.]*\]$/ REJECT Regras EHLO: Regras Locais não permitem endereços IPs no Helo
/^[[:digit:]\.]*$/ REJECT Regras EHLO: Regras Locais não permitem endereços IPs no Helo

# Bloquenado hotmail falso
/^hotmail\.com\.*$/ REJECT Regras EHLO: Não é permitido hotmail fake

# Bloqueando Spammers Conhecidos (voce pode ir preenchendo conforme voce os vai identificando)
/61-219-13-178.hinet-ip.hinet.net/ REJECT Regras EHLO: Spammer conhecido

/etc/postfix/header_checks

Este arquivo eu deixei em branco, não tenho utilizado, mas você pode implementar políticas nele se desejar.

/etc/postfix/mime_checks

# Bloquear e-mail com anexos: lnk, asd, hlp, ocx, reg, bat, cpl, chm, com, cmd, exe, dll, vxd, pir, scr, hta, jse, shm, shb, shs, vbe, vbs, vbx, wsf, wsh e xl

/^\s*Content-(Disposition|Type).*name\s*=\s*”?(.+\.(lnk|asd|hlp|ocx|reg|bat|c(pl|hm|om|md)|exe|dll|vxd|pif|scr|hta|jse?|sh[mbs]|vb[esx]|ws[fh]|xl))”?\s*$/ DISCARD Attachment não permitido de acordo com regras locais – Possivel Virus. File “$2” has the unacceped extension “$3″

/^\s*Content-(Disposition|Type).*name\s*=\s*”?(.+\.(com))”?\s*$/ REJECT Attachment não permitido de acordo com regras locais – Possível Vírus. File “

Configurações para o white e black list

Primeiramente, faça o arquivo de acesso ao mysql pelo postfix:

Arquivo wb_list_checks_mysql

Crie um arquivo em /etc/postfix/wb_list_checks_mysql com as seguintes características:

host = 127.0.0.1:3306
user = root
password = escreva_aqui_sua_senha_root_do_mysql
dbname = postfix
query = SELECT concat(restriction, if (msg is null , ” , concat(‘ ‘, msg))) as restriction FROM white_black_list WHERE client = “%s” AND status = “1”;

Agora crie uma tabela “white_black_list” dentro da database postfix com as seguintes características:

Tabela white_black_list

CREATE TABLE `white_black_list` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`client` varchar(100) NOT NULL,
`restriction` varchar(255) NOT NULL,
`msg` varchar(255) DEFAULT NULL,
`status` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `client_unique` (`client`)
) ENGINE=MyISAM AUTO_INCREMENT=166 DEFAULT CHARSET=latin1;

Adquira nossa lista de domínios e emails de SPAM ou e-mailmarketing e filtre melhor seu servidor.

Os inserts devem ter o seguinte padrão:

dominio_ou_email           ação(OK ou REJECT)            Mensagem_de_retorno           Status (1=ativado 0 = desativado)

OK = Whitelist

REJECT = Blacklist

Bloqueando o domínio, todos os emails deste domínio serão bloqueados, se escrever o email somente este determinado email será bloqueado.

Não há necessidade de colocar *, basta escrever o domínio, por exemplo:

google.com.br (obviamente este domínio não está bloqueado em nossa lista, é só exemplo).

Você pode (e eu aconselho) a criar um script, pode ser em php, para administrar estes registros, isso vai lhe auxiliar bastante.

Caso você tenha adquirido nossa lista de domínios bloqueados, verifique se não há um domínio nela que deseje receber e-mails, se existir você pode mudar o REJECT para OK ou simplesmente deletar o registro (aconselho, pois em OK ele passará direito sem as demais filtragens pois ele fica na Whitelist).

Tudo terminado, reinicie o servidor, você estará muito mais protegido de emails indesejáveis, os que forem aparecendo para você em específico, basta incluir na lista ou mesmo editar algum que já esteja nela.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Time limit is exhausted. Please reload CAPTCHA.