SPFBL local com Zimbra – Parte II – KyaFilter

Na parte I vimos como instalar, configurar e integrar o SPFBL ao Zimbra. Neste artigo vamos levar a integração entre o SPFBL e o Zimbra muito mais adiante utilizando o KyaFilter, um programa criado para funcionar como “content filter” do postfix permitindo muita flexibilidade ao lidar com as mensagens e os comportamentos desejados.

A primeira integração é feita fazendo os botões “Spam” e “Não Spam” interagirem com o SPFBL assim 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.

Fluxo

A mensagem ao chegar no servidor é recebido pelo Postfix que 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. Dsenhando:

Postfix –> 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://anahuac.eu/kyafilter.tgz

2 – Descompacte o arquivo com o comando abaixo:

tar zxvf kyafilter.tgz

3 – Entre no diretório criado e execute o instalador:

cd kyafilter
./install

O instalador solicita algumas informações:

Default installation dir [/opt/kyafilter]: apenas dê enter
Zimbra Spam Account: Essa conta será criada pelo instalador
Zimbra Ham Account: Essa conta será criada pelo instalador
SPFBL IP address: IP do SPFBL que em geral está instalado no mesmo servidor do Zimbra

Ele cria as contas de HAM e SPAM para as quais o integrador do Zimbra vai envias as mensagens quando se usam os botões de Spam e Não Spam.

4 – Alterando o master.cf.in do Zimbra

Esse passo exige um pouco mais de cuidado, portanto atenção:

a) Edite /opt/zimbra/common/conf/master.cf.in

b) Adicione o trecho abaixo, no final do aquivo, respeitando a tabulação:

# Kya Filter
kyafilter unix -      -       n       -       10 smtp
        -o smtp_data_done_timeout=1200
        -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

c) 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

5 – Reiniciando os serviços

Com o KyaFilter instalado e o Zimbra 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 Zimbra, assim:

su - zimbra -c "/opt/zimbra/bin/zmmtactl restart"

6 – 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 Zimbra e SPFBL usando o KyaFilter está completa.

Nos vemos no próximo tutorial.