SPFBL local com Zimbra – Parte I

O SPFBL é mais conhecido pelo seu serviço de DNSBL, que diga-se, é sensacional. MAs ele também pode ser instalado localmente e integrado ao Zimbra.

Trata-se de um poderoso anti-spam livre e gratuito, com gestão independente por domínio via interface web. O índice de acerto do SPFBL é muito bom mesmo e tem tornado a luta contra o spam muito mais fácil.

Apesar de tudo de bom, há algumas limitações que eu gostaria d frisar para evitar decepções:

1 – Ele não faz retenção de mensagens bloqueadas, ou seja, o reenvio fica a cargo do respeito à RFC pelo servidor de envio;
2 – A interface web, chamada de painel de controle é bastante limitada e tem um visual bem superado;

Mas esses são detalhes menores em uma ferramenta sensacional. Fica aqui meus parabéns ao Leandro que é o criador e mantenedor do SPFBL.

Neste tutorial vamos ver como fazer a instalação, integração e configuração para trabalhar em ambiente com um ou mais domínios usando a versão GNU Ubuntu 18.04, Zimbra 15.8.8 e instalando o SPFBL no mesmo servidor do Zimbra.

Em todas as configurações vou usar o domínio testes.com.br e você deverá substituí-lo pelo seu domínio.

Conheça e colabore com o SPFBL acessando o repositório deles no github

Então vamos lá!

Pré requisitos

O SPFBL está feito em Java e para poder funcionar precisa do openjdk e de mais alguns utilitários.

ATENÇÃO: a partir da versão 3 o SPFBL exige java 17.
Instale assim:

apt install openjdk-17-jre nmap bc ncat

ATENÇÃO: Se estiver usando Ubuntu 18 vai dar erro no pacote ncat, mas pode seguir adiante porque o comando ncat faz parte do pacote nmap.

Baixando o SPFBL

Você deve baixar a última versão do SPBL do site deles no Github. Claro que você pode usar o comando git, mas aqui eu vou usar o bom e velho wget mesmo.

Seguem os comandos:

cd /opt
wget https://github.com/leonamp/SPFBL/archive/master.zip
unzip master.zip

Instalando o SPFBL

Depois de descompactar com o comando unzip acima, será criado o diretório SPFBL-master. Será necessário criar um diretório de instalação de sua escolha e vários arquivos e diretórios precisam ser copiados.

Eu escolhi instalar o SPFBL em /opt/spfbl. Então seguem os comandos:

cd /opt
mkdir spfbl
cp -a SPFBL-master/dist/SPFBL.jar spfbl/
cp -a SPFBL-master/run/spfbl.conf spfbl/
cp -a SPFBL-master/lib spfbl/
cp -a SPFBL-master/data spfbl/
cp -a SPFBL-master/web spfbl/
cp -a SPFBL-master/client/spfblpostfix.pl spfbl/
chmod +x spfbl/spfblpostfix.pl
mkdir spfbl/history
mkdir /var/log/spfbl
cp SPFBL-master/client/spfbl.sh /sbin/spfbl
chmod +x /sbin/spfbl
cp SPFBL-master/run/spfbl-init.sh /etc/init.d/spfbl-init
chmod 755 /etc/init.d/spfbl-init
update-rc.d spfbl-init defaults

Configurando o SPFBL

Hora de fazer os ajustes necessários na configuração do spfbl. O primeiro passo é criar um e-mail exclusivo no Zimbra para a gerência e uso do SPFBL.

su - zimbra -c\"zmprov ca [email protected] sua_senha_aqui\"

Agora edite o arquivo /opt/spfbl/spfbl.conf e ajuste as seguintes opções como descrito abaixo:

dns_provider_primary=8.8.8.8
hostname=mail.testes.com.br
interface=eth0
http_port=8001
peer_limit=127
dnsbl_limit=127
spfbl_limit=127
[email protected]
smtp_auth=true
smtp_starttls=yes
smtp_host=mail.testes.com.br
smtp_port=587
[email protected]
smtp_password=sua_senha_aqui
defer_time_softfail=0
defer_time_yellow=0
cache_time_store=120

As opções são bem auto explicativas e estão documentadas no site do SPFBL então eu não vou repeti-las aqui. Apenas tenha o cuidado de ajustar o nome de seu domínio e hostname do servidor de email.

Agora edite o arquivo /sbin/spfbl e modifique a opção IP_SERVIDOR para o endereço IP ou nome do seu servidor. Pessoalmente eu uso o endereço IP do loopback, assim:

IP_SERVIDOR=127.0.0.1

Iniciando o SPFBL

Hora de iniciar ele ver os logs. Execute:

/etc/init.d/spfbl-init start

E verifique os logs em /var/log/spfbl

Armazenando as alterações periodicamente

o SPFBL mantém todas as alterações em memória, portanto uma queda de energia ou reset podem causar a perda delas. Por isso é importante programar no cron para que elas sejam salvas periodicamente.

Insira a seguinte linha no arquivo /etc/crontab para fazê-lo:

0 1 * * * root /sbin/spfbl store

Essa linha salvará todas as alterações, todo dia às 01 da manhã.

Ativando o Painel de Controle via web do SPFBL

O acesso ao Painel de Controle usando um usuário específico. Abaixo seguem os comandos para isso. Atenção para o hostname e o e-mail do admin

spfbl client add 127.0.0.1/32 mail.testes.com.br SPFBL [email protected]
spfbl user add [email protected] admin
spfbl user send-totp [email protected]

Se o envio falhar pode ser necessário liberar o envio local no master.cf.in do seu Zimbra. Revise as opções smtpd_relay_restrictions e smtpd_client_restrictions adicionando permit_mynetworks em cada uma delas. Depois, como usuário zimbra execute \”postfix reload\”

Hora de acessar o Painel de controle

A autenticação no Painel de Controle do SPFBL é feita em dois estágios, ou seja, primeiro você recebe uma chave e com ela você gera a senha para poder logar.

O último comando acima enviou para o e-mail [email protected] a chave TOTP com a qual se gera a senha de acesso. A chave é essa sequência de letras e números abaixo do QRcode.

Portanto os passos para acessar o painel são os seguintes:

1 – Tenha certeza de que a porta 8001 está liberada em seu firewall. Pode-se usar qualquer outra porta desejada, basta definir a opção http_port no arquivo de configuração do SPFBL e reiniciar o serviço;

2 – Acesse o link

http://mail.testes.com.br:8001/[email protected]

3 – A tela de login será como a de baixo, solicitando que você entre com a chave TOTP que lhe foi enviada por e-mail. Faça isso.

4 – Acesse https://totp.danhersam.com, insira sua chave TOTP no campo YOUR SECRET KEY e use a senha gerada na tela de login do Painel de Controle.

Feito!

Se o Painel de Controle estiver vazio, ou seja, sem nenhuma mensagem, aguarde alguns minutos que elas vão aparecer.

Adicionando gestão por domínio no SPFBL

O SPFBL permite gestão individualizada por domínio. Isso facilita demais a gestão do anti-spam, permitindo que cada domínio tenha suas próprias políticas de liberação e bloqueio.

Essa gestão é terceirizada, ou seja, cada domínio tem sua própria conta administrativa que gerencia apenas esse domínio.

A ativação desse recurso se dá através da criação de um usuário para cada domínio. Essas contas são do tipo \”postmaster\”. É assim que o SPFBL sabe que elas pertencem a um determinado domínio.

A criação dessas contas no SPFBL é feita assim:

spfbl user add [email protected] postmaster
spfbl user send-totp [email protected]

  • Todas as mensagens para dominio1.org serão gerenciadas pela conta [email protected]
  • Assim como na conta admin definida antes, o segundo comando envia a chave TOTP para que ela possa logar no Painel de Controle
  • O acesso ao painel de controle é igual ao do admin, apenas trocando o usuário no fim, assim:
http://mail.testes.com.br:8001/[email protected]

Integrar o SPFBL com o Zimbra

A integração é bem simples. Essencialmente o SPFBL é adicionado como um content-filter no Zimbra, ou seja, a mensagem chega, é enviada para o SPFBL e este devolve um \”status\” de OK ou de erro e o Postfix do Zimbra barra ou deixa passar.

O content-filter é um belo script feito em Perl e que já foi copiado durante os passos da instalação.

Hora de alterar o master.cf.in adicionando as linhas abaixo no final do arquivo. Siga os passos:

1 – Edite o arquivo /opt/zimbra/common/conf/master.cf.in

2 – Adicione as seguintes linhas, cuidando da identação:

policy-spfbl unix - n n - - spawn
   user=nobody argv=/usr/bin/perl /opt/spfbl/spfblpostfix.pl

3 – Edite o arquivo /opt/spfbl/spfblpostfix.pl e altere a opção PeerHost para ficar assim:

PeerHost => \'127.0.0.1\'

4 – Altere o arquivo /opt/zimbra/conf/zmconfigd/smtpd_recipient_restrictions.cf adicionando a linha abaixo imediatamente abaixo da linha que tem reject_unknown_reverse_client_hostname:

check_policy_service unix:private/policy-spfbl

5 – Como usuário zimbra, reinicie os serviços específicos do Zimbra:

zmconfigdctl restart
zmmtactl stop
zmmtactl start

Conclusão

O SPFBL é um poderoso anti-spam baseado em reputação. Simples de instalar e administrar.

Recomendo fortemente ler a documentação para poder fazer bloqueios e liberações gerais via o cliente cli.

Comece executando spfbl sem nenhum argumento e olhe atentamente as opções que a ajuda imprime na tela.

Parte II

KyaFilter é um software desenvolvido por mim para melhorar a integração do SPFBL com o Zimbra:

1 – Ele cria o whitelist por envio. Isso significa que todos os endereços para os quais se enviam mensagens sçao adicionados no whitelist to SPFBL;

2 – Integração com o botão “Spam” do webmail do Zimbra para adicionar na blacklist do usuário o remetente dessa mensagem.