Filtro de Correio

Uma das maiores casos com email hoje em dia é o problema de Unsolicited Bulk Email (UBE). Também conhecido como SPAM, este tipo de mensagens podem também carregar virus e outras formas de pragas. De acordo com alguns relatórios estas mensagens fazem a massa de tráfego de email na Internet.

Esta seção irá cobrir a integração Amavisd-new,Spamassassin, e application>ClamAV

  • O Amavisd-new programa facilitador que pode chamar qualquer número de programas de filtro de conteúdo para detecção de spam, ativirus, etc.

  • O Spamassassin usa uma variedade de mecanismos para filtra emails baseado no conteúdo da mensagem.

  • O ClamAV é uma aplicação anti vírus open source.

  • O dkim-filter implementa um Filtro de Correio do Sendmail(Milter) para o padrão DomainKeys Identified Mail (DKIM).

  • python-policyd-spf habilita a checagem Sender Policy Framework (SPF) com o Postfix.

Isto é como os pedaços se encaixam:

  • Uma mensagem de email é aceita pelo Postfix.

  • A mensagem é passada para qualquer filtro externo dkim-filter e python-policyd-spf, neste caso.

  • então o Amavisd-new processa a mensagem.

  • o ClamAV é usado para escaniar a mensagem. Se a mensagem conter um vírus o Postfix irá rejeitar a mensagem.

  • Mensagem limpas serão analisadas pelo Spamassassin para verificar se a mensagem é um spam. O Spamassassin irá adicionar linhas X-Header permitindo que o Amavisd-new manipule a mensagem.

Por exemplo, se uma mensagem tiver uma pontuação de Spam acima de 15 a mensagem pode ser automaticamente tirada da fila sem que o recipiente seja notificado. Outra maneira de tratar mensagens sinalizadas é enviá-las para o Mail User Agent (MUA) permitindo que o usuário trate a mensagem como lhe convir.

Instalação

Veja “Postfix” para instruções de como instalar e configurar o Postfix.

Para instalar o resto das aplicações digite o seguinte a partir de um terminal:

sudo apt-get install amavisd-new spamassassin clamav-daemon
sudo apt-get install dkim-filter python-policyd-spf

Existem alguns pacotes opcionais que se integram com o Spamassassin para uma melhor detecção de spam:

sudo apt-get install pyzor razor

Junto com as aplicações de filtragem principais, utilitários de compressão são necessários para processar alguns anexos de e-mails:

sudo apt-get install arj cabextract cpio lha nomarch pax rar unrar unzip zip zoo

Configuração

Agora configure tudo para trabalhar junto e filtrar email.

ClamAV

O comportamento padrão do ClamAV irá atender as suas necessidades. Para mais opções de configuração do ClamAV, verifique os arquivos de configuração em /etc/clamav.

Adicione o usuário clamav no grupo amavis para que o Amavisd-new tenha o acesso apropriado para escanear arquivos:

sudo adduser clamav amavis

Spamassassin

O Spamassassin automaticamente detecta componentes opcionais e os utilizará caso estejam presentes. Isso quer dizer que não há necessidade de configurar o pyzor e o razor.

Edite /etc/default/spamassassin para ativar o deamon Spamassassin . Substitua emphasis>ENABLED=0

ENABLED=1

Agora inicie o daemon.

sudo /etc/init.d/spamassassin start

Amavisd-new

Primeiro ative detecção de spam e antivirus no Amavisd-new editando o /etc/amavis/conf.d/15-content_filter_mode:

use strict;

# Você pode modificar este arquivo para reabilitar a checagem de SPAM pelo spamassassin
# e para reabilitar a checagem de vírus.

#
# Modo de checagem de vírus padrão
# Remova os comentários das duas linhas abaixo para habilitá-lo
#

@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Modo de checagem de SPAM padrão
# Remova os comentários das duas linhas abaixo para habilitá-lo
#

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # assegura um retorno definido

Saltar o Spam pode ser uma má idéia quando o endereço do retorno é falsificado freqüentemente. Considere editar o /etc/amavis/conf.d/20-debian_defaults para ajustar $final_spam_destiny para D_DISCARD ao invés de D_BOUNCE, conforme a seguir:

$final_spam_destiny       = D_DISCARD;

Se o hostname do servidor é diferente do registro MX do domínio, você talvez precise definir manualmente a opção $myhostname. Ainda, se o servidor recebe correspondências para múltiplos domínios, a opção @local_domains_acl precisará ser customizada. Edite o arquivo /etc/amavis/conf.d/50-user:

$myhostname = 'mail.example.com';
@local_domains_acl = ( "example.com", "example.org" );

Após a configuração o Amavisd-new precisa ser reiniciado:

sudo /etc/init.d/amavis restart
Lista branca DKIM

Amavisd-new pode ser configurado para automaticamente adicionar à lista branca endereços de domínios com Chaves de Domínio válidas. Existem alguns domínios pré-configurados em /etc/amavis/conf.d/40-policy_banks.

Existem várias maneiras de configurar a Lista Branca para um domínio:

  • 'exemplo.com' => 'WHITELIST',: irá adicionar à lista brance qualquer endereço do domínio "exemplo.com".

  • '.exemplo.com' => 'WHITELIST',: irá adicionar à lista brance qualquer endereço de quaisquer subdomínios de "exemplo.com" que possuírem uma assinatura válida.

  • '.exemplo.com/@exemplo.com' => 'WHITELIST',: irá adicionar à lista branca subdomńios de "exemplo.com" que usam a assinatura de exemplo.com, o domínio superior.

  • './@exemplo.com' => 'WHITELIST',: adiciona endereços que possuem uma assinatura válida de "exemplo.com". Isto é geralmente utilizado para grupos de discussão que assinam suas mensagens.

Um domínio pode conter várias configurações de Listas Brancas. Após a edição do arquivo reinicie o amaisd-new:

sudo /etc/init.d/amavis restart
[Nota]

Neste contexto, assim que um domínio for adicionado à lista branca a mensagem não passará por nenhum filtro anti-spam ou anti-vírus. Esse pode ou não ser o comportamento que você deseja para o domínio.

Postfix

Para integração com o Postfix, execute o seguinte a partir do terminal:

sudo postconf -e 'content_filter = smtp-amavis:[127.0.0.1]:10024'

A seguir, edite o arquivo /etc/postfix/master.cf e adicione o seguinte no final do arquivo:

smtp-amavis     unix    -       -       -       -       2       smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes
        -o disable_dns_lookups=yes
        -o max_use=20

127.0.0.1:10025 inet    n       -       -       -       -       smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_delay_reject=no
        -o smtpd_client_restrictions=permit_mynetworks,reject
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o smtpd_data_restrictions=reject_unauth_pipelining
        -o smtpd_end_of_data_restrictions=
        -o mynetworks=127.0.0.0/8
        -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

Adicione também estas duas linhas imediatamente abaixo do serviço de transporte "pickup".

         -o content_filter=
         -o receive_override_options=no_header_body_checks

Isto irá prevenir que as mensagens geradas para reportar spam sejam classificadas como spam.

Agora reinicie o Postfix:

sudo /etc/init.d/postfix restart

Filtro de Conteúdo com spam e detecção de vírus agora está ativado.

Testando

Primeiro, teste se Amavisd-new SMTP está ouvindo:

telnet localhost 10024
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
^]

No cabeçalho das mensagens que passam pelo filtro de conteúdo você deverá ver:

X-Spam-Level: 
X-Virus-Scanned: Debian amavisd-new at example.com
X-Spam-Status: No, hits=-2.3 tagged_above=-1000.0 required=5.0 tests=AWL, BAYES_00
X-Spam-Level: 
[Nota]

Sua resposta pode variar, mas o importante é que existam X-Virus-Scanned e a entrada X-Spam-Status.

Solucão de problemas

A melhor forma de descobrir o quê está acontecendo de errado é checar os arquivos de log.

  • Para instruções sobre os logs do Postfix veja a seção “Solucão de problemas”.

  • Amavisd-new utiliza o Syslog para enviar mensagens para o arquivo /var/log/mail.log. A quantidade de detalhes pode ser aumentada adicionando a opção $log_level ao arquivo /etc/amavis/conf.d/50-user e alterando o valor de 1 para 5.

    $log_level = 2;
    
    [Nota]

    Quando a saída do log do Amavisd-new aumentar, a saída do log do Spamassassin também aumentará.

  • O nível de log do ClamAV pode ser aumentado editando o arquivo /etc/clamav/clamd.conf e definindo a seguinte opção:

    LogVerbose true
    

    Por padrão, o ClamAV irá enviar mensagens de log para /var/log/clamav/clamav.log.

[Nota]

Depois de alterar as definições de log de um aplicativo, lembre-se de reiniciar o serviço para que as novas alterações tenham efeito. Além disso, uma vez que o problema que você estiver tentando encontrar for resolvido ,é uma boa idéia alterar as definições de log de volta ao normal.

Referências

Para mais informações sobre a filtragem de mensagens, veja os seguintes links:

Inclusive, sinta-se livre para fazer perguntas no canal de IRC #ubuntu-server da freenode.