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.
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.