Neste tutorial vamos seguir todas as etapas para instalr o SPFBL e o KyaFilter localmente em um servidor Casrbonio CE.
Antes de começar gostaria de fazer um agradecimento público à SERVERDO.IN que patrocinou a confeccção desde material.
O SPFBL é 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.
O KyaFilter é um daemon que integra o SPFBL ao Carbonio permitindo gestão dinâmica onde as ações dos usuários interagem com o SPFBL tornando-o cada vez mais ajustado às necessidade de cada ambiente.
Apesar de tudo de bom, há algumas limitações que eu gostaria d frisar para evitar decepções:
1 – O par SPFBL+KF 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 22.04 LTS Server, Carbonio CE 24.12.1 e instalando o SPFBL+KF no mesmo servidor do Carbonio.
Em todas as configurações vou usar o domínio testes.com.br e você deverá substituí-lo pelo seu domínio.
Pré requisitos
Memória RAM e CPUs são críticos para o bom funcionamento do Carbonio e mais ainda quando se integra com SPFBL+KF no mesmo servidor. A recomendação mínima é de 32Gb RAM e 8 CPUS.
O SPFBL está feito em Java e para poder funcionar precisa do openjdk e de mais alguns utilitários. Já o KyaFiltyer está feito em python 2 o que també exigirá a instalação de alguns pacotes e o ajuste do binário padrão para a V2.
Instale assim:
apt install openjdk-17-jre nmap bc ncat python2.7
Hora de fazer o python2 como padrão do sistema, assim:
ln -s /usr/bin/python2.7 /usr/bin/python
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
Configurando o SPFBL
Hora de fazer os ajustes necessários na configuração do spfbl. O primeiro passo é aumentar a memória reservada para o daemon. Edite o aqruivo spfbl-init e altere como sugerido abaixo:
vi /etc/init.d/spfbl-init
troque:
/usr/bin/java -jar -Xms1024m -Xmx2048m /opt/spfbl/SPFBL.jar 2>&1 &
por:
/usr/bin/java -jar -Xms2g -Xmx4g /opt/spfbl/SPFBL.jar 2>&1 &
Em seguida vamos criar um e-mail exclusivo no Carbonio para a gerência e uso do SPFBL:
su - zextras -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=Nome_da_Interface_de_Rede (eth0, enp6s18)
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:
tail -f /var/log/spfbl/spfbl*.log
Você também pode executar o comando abaixo para ter certeza de que seu SPFBL está funcionando adequadamente:
spfbl version
Finalmente faça o SPFBL iniciar automaticamente quando o servidor for reiniciado. Para isso adicione a linha abaixo no arquivo “/etc/rc.local”. Se ele não existir, crie e torne executável. Visando ser o mais didático possível vamos assumir que ele não existe e colocar todos os comandos a seguir:
vi /etc/rc.local
Adicione o conteúdo:
#! /bin/bash
/etc/init.d/spfbl-init start
Torne o aruqivo executável:
chmod +x /etc/rc.local
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 hostname_server SPFBL [email protected]
spfbl user add [email protected] admin
echo "USER SET [email protected] PASSWORD SenhaForteAqui123" | nc localhost 9875
Use uma senha forte!
Hora de acessar o Painel de controle
A autenticação no Painel de Controle do SPFBL é feita usando o usuário e senha acessando a URL do SPFBL em seu servidor adicionando porta 8001 e o usuário admin, assim:
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]
Navegadores modernos podem forçar o uso de HTTPS, se esse for o caso, use uma “Janela anônima” para acessar a URL por HTTP
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
echo "USER SET [email protected] PASSWORD SenhaForteAqui123" | nc localhost 9875
- Todas as mensagens para dominio1.org serão gerenciadas pela conta [email protected]
- 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 Carbonio
A integração é bem simples. Essencialmente o SPFBL é adicionado como um content-filter no CArbonio, ou seja, a mensagem chega, é enviada para o SPFBL e este devolve um “status” de OK ou de erro e o Postfix do Carbonio 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/zextras/common/conf/master.cf.in
2 – Adicione as seguintes linhas no fim do arquivo, 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/zextras/conf/zmconfigd/smtpd_recipient_restrictions.cf adicionando a linha abaixo imediatamente abaixo da linha que tem reject_unknown_reverse_client_hostname:
vi /opt/zextras/conf/zmconfigd/smtpd_recipient_restrictions.cf
Adicione
check_policy_service unix:private/policy-spfbl
Ficará como na imagem abaixo

5 – Como usuário zextras, reinicie os serviços específicos do Carbonio:
su - zextras -c "zmconfigdctl restart ; zmmtactl stop ; zmmtactl start"
Conclusão da Instalação do SPFBL
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
O KyaFilter faz a integração dos botões “Spam” e “Não Spam” do webmail do Carbonio, com o SPFBL, dessa forma as ações dos usuários vai afinando o comportamento do anti-spam e tornando-o cada vez mais eficiente. Essa interação é feita de forma granular e individual, permitindo que o bloqueio de uma mensagem seja feito apenas para o usuário que desejar bloquear aquele remetente.
Outra ação é o “autowhite”, ou seja, todos os endereços de e-mail para os quais se envia mensagens são inseridos na whitelist do SPFBL minimizando os falsos positivos, afinal de contas, faz sentido querer receber a resposta dos endereços para os quais se enviam mensagens.
As mensagens que passarem pelo primeira checagem de envelope do SPFBL terão seu conteúdo analisado e, de acordo com a pontuação recebida a mesnagem será então marcada como Spam para ser entregue na pasta de Spam ou não.
Entendendo o Fluxo
A mensagem ao chegar no servidor é recebido pelo Postfix que faz uma checagem de envelope com o SPFBL, em seguida encaminha para o Amavis que faz as checagens no Clamav e no SpamAssassin. Com a instalação do KyaFilter, o Amavis entregará a mensagem para o KyaFilter que ao finalizar faz a entrega de volta ao Postfix. Desenhando:
Postfix –> SPFBL –> Amavis –> KyaFilter –> Postfix
Baixando o KyaFilter
Você pode fazer o download do KyaFilter aqui
Instalando
1 – Copie o arquivo kyafilter.tgz para o diretório /opt ou baixe diretamente com o comando abaixo:
wget https://www.anahuac.eu/kyafilter.tgz
2 – Descompacte o arquivo com o comando abaixo:
tar zxvf kyafilter.tgz
3 – Crie o diretório /opt/kyafilter e copie o conteúdo para ele
mkdir /opt/kyafilter
cp kyafilter /opt/ -Rf
4 – Entre no diretório criado e execute o instalador:
cd /opt/kyafilter
./install
O instalador solicita algumas informações:
Default installation dir [/opt/kyafilter]:
* apenas pressione enter
Carbonio Spam Account:
* Essa conta será criada pelo instalador
Carbonio Ham Account:
*Essa conta será criada pelo instalador
SPFBL IP address:
* Se no SPFBL está tudo como 127.0.0.1, deixe assim mesmo.
SPFBL runs in a multi domain admins server? (N/y):
* Se seu SPFBL tiver um usuário por domínio responda "y", se não, apenas pressione enter.
Messages too big will have only headers scanned? [yes]:
* Esta opção vai checar apenas os cabeçalhos das mensagens grandes no SPFBL.
How big a message nees to be to have only it\'s header scanned? [1048576] 1Mb in bytes:
* Qual é o tamanho da mensagem grande?
Ele cria as contas de HAM e SPAM para as quais o integrador do Carbonio vai enviar as mensagens quando se usam os botões de Spam e Não Spam no webmail do Carbonio.
Integrando com o Carbonio
Esse passo exige um pouco mais de cuidado:
1 – Edite /opt/zextras/common/conf/master.cf.in
2 – Adicione o trecho abaixo, no final do aquivo, respeitando a tabulação:
# Kya Filter
kyafilter unix - - n - 10 smtp
-o smtp_data_done_timeout=5800
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o smtpd_sasl_auth_enable=no
-o max_use=20
[127.0.0.1]:20024 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o virtual_mailbox_maps=
-o virtual_alias_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=
-o smtpd_end_of_data_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_milters=
-o smtpd_sender_restrictions=
-o smtpd_reject_unlisted_sender=no
-o smtpd_relay_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_sasl_auth_enable=no
-o mynetworks_style=host
-o mynetworks=127.0.0.0/8,[::1]/128
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings
-o local_header_rewrite_clients=
-o syslog_name=postfix/kyafilter
3 – Ainda dentro de master.cf.in procure pela linha abaixo:
[%%zimbraLocalBindAddress%%]:10025 inet n - n - - smtpd
-o content_filter=
Altere para ficar assim:
[%%zimbraLocalBindAddress%%]:10025 inet n - n - - smtpd
-o content_filter=kyafilter:[127.0.0.1]:20025
Reiniciando os serviços
Com o KyaFilter instalado e o Carbonio configurado, é hora de reiniciar os serviços.
Primeiro o KyaFilter, execute:
/etc/init.d/kyafilter restart
/etc/init.d/kyafilter status
Em seguida basta reiniciar o MTA do Carbonio, assim:
su - zextras -c "zmmtactl restart"
Acompanhe os logs:
Cada comando abaixo em um terminal diferente. Particularmente prefiro usar o screen para isso
tail -f /var/log/mail.log | grep kya
tail -f /var/log/kyafilter.log
E assim a integração entre Carbonio e SPFBL usando o KyaFilter está completa.
Recomendações Importantes
1 – Ajuste o cron do “store” do SPFBL para suas necessidades. Importante ter em mente que tudo que não for “salvo” via store será perdido.
2 – Sempre que possível execute o KyaFilter dentro de uma “janela” do screen. Não sabemos exatamente porque, mas em alguns cenários o KyaFilter falha so se manter em execução permamente. Executá-lo dentro de um screen estabiliza esse comportamento.
3 – Dedique um pouco de tempo ao cli do SPFBL. Abaixo seguem os principais comandos:
spfbl superwhite add "@dominioparaliberar.com"
spfbl superblock add "@dominioparabloquear.com"
spfbl superblock show all | grep dominio
spbfbl check enderecoIP_do_emissor email_do_emissor helo_do_emissor
O último comando acima é muito útil para diagnosticar o motivo de um bloquei e também para saber qual sintaxe usar para o caso de precisar liberá-lo manualmente.
Grupos e participação
É sempre importante ter um grupo de apoio para trocar experiências. Abaixo seguem os grupos do Telegram mais importantes:
Grupo sobre SPFBL – SPFBL Admin @spfbl_admin
Grupo sobre KyaFilter – KyaFilter Admins @kyafilter
Grupo sobre Carbonio – Carbonio Brasil @CarbonioBrasil
Published: 25/02/2025 | Updated: 11/03/2025