Pessoal... Abri até um novo tópico pra isso...
Vou relatar aqui como eu resolvi o assunto do Filtro de SPAM e Anti-virus.
Acontece que o cliente tem um servidor de e-mail que não foi implantado por nós...
Implantamos um Servidor pra ele, com Proxy e VPN. Tudo bonitinho.
O cliente relatou muito spam no e-mail, então sugerimos colocar um serviço de MailFilter no Firewall.
Foi instalado os seguintes módulos:
- Mail
- MailFilter
Após instalar e ativar os módulos, precisamos ir em Communications -> Correio -> Geral.
Altere as configurações a seguir, mostrado no primeiro screen. Note que criamos um usuário no servidor de e-mail, para servir como smarthost do serviço postfix do Firewall.
No segundo screen eu desabilitei a parte de Pop(s) e Imap(s). Não precisaremos deles.
Habilite também a Lista Cinza (também conhecido como Postgrey (greylist)), em Communications -> Correio -> Lista Cinza. Veja o terceiro screen abaixo.
Salve a configuração.
Abra no Firewall do Zentyal, para ele deixar chegar nele, a comunicação com a porta 25, vindo da Internet.
Vá em Firewall -> Filtro de Pacotes -> Regras de filtros de redes externas para o Zentyal e crie uma nova regra, permitindo a chegada de e-mail para o firewall. Retire, se houver, a regra de redirecionamento (NAT) da porta 25 para o servidor de e-mail interno. Aplique as alterações.
Aqui temos que fazer um truque na linha de comando.
Se você observar a o log do mail, /var/log/mail.log, vai perceber que tem um monte de "Relay denied", pois o postfix do firewall.
Vamos acessar o servidor Zentyal pela linha de comando e ir para o diretório /usr/share/zentyal/stubs/mail.
Abra com o vim ou nano o arquivo main.cf.mas. Na linha 39, altere o seguinte (salve o main.cf.mas primeiro, copiando ele para outro lugar, antes de alterá-lo. Só pro precaução):
De:
$smtpRecipientRestrictions .= 'permit_sasl_authenticated, ';
Para:
$smtpRecipientRestrictions .= 'permit, defer ';
Esta parte abaixo, pode ser removida:
$smtpRecipientRestrictions .= 'permit_sasl_authenticated, ';
$smtpRecipientRestrictions .= 'permit_mynetworks, ';
#at his point all mail for whom the server isn't the final point or the
forwarder has been rejected so the next restrictions only applies in this two cases
$smtpRecipientRestrictions .= 'reject_unauth_destination, ';
$smtpRecipientRestrictions .= 'reject_non_fqdn_sender, ';
$smtpRecipientRestrictions .= 'reject_unknown_sender_domain, ';
$smtpRecipientRestrictions .= 'reject_invalid_helo_hostname, ';
$smtpRecipientRestrictions .= 'reject_non_fqdn_helo_hostname, ';
$smtpRecipientRestrictions .= 'check_helo_access pcre:/etc/postfix/helo_checks.pcre';
Agora salve o arquivo e reinicie o postfix, através do Zentyal:
/etc/init.d/zentyal mail restart
Abra o /etc/postfix/main.cf e veja que a alteração está lá, na linha 95:
smtpd_recipient_restrictions = permit, defer, check_policy_service inet:127.0.0.1:60000
O check_policy aqui refere-se ao Postgrey. Não altere.
Feito isso, se voltarmos ao /var/log/mail.log, veremos que agora o firewall está aceitando as mensagens vindas na Internet e repassando para o servidor de e-mail interno.
Use tail -f /var/log/mail.log nos dois servidores para confirmar isso. Para sair do comando tail digite Crtl + c.
Agora voltamos para a interface Web do Zentyal e vamos para Communications -> Filtro de e-mail SMTP.
Na aba geral, alteramos o parâmetro:
Notifica sobre mensagens problemáticas não-spam:
Para enviar uma notificação de mensagem de SPAM para uma conta interna no servidor de e-mail.
Com isso, caso aja algum falso positivo, podemos pegar o e-mail dessa conta, posteriormente.
Na aba política de filtragem, em Regra de SPAM e Política de cabeçalhos mal-formados, deixe o padrão, que é Passar, pois por hora só iremos validar a solução.
Em Conexão Externas, em Servidores de e-mail externos, vamos Adicionar o IP do servidor de e-mail e marcar Permitir Conexão.
Faça o mesmo logo abaixo, só que para o dominio (FQDN) e marque Permitir Conexão.
Com isso estamos permitindo que tanto o IP como o dominio interno terão permissão de usar o filtro de mail. Aqui Externo, refere-se ao servidor de e-mail fora do Zentyal.
Aplique as alterações.
Em Filtro de E-mail -> Anti-spam temos como configurar o comportamento do Spamassassin. Os usuários mais avançados saberão o que fazer. Em caso de dúvida Não mexa. rs... A configuração que sempre faço é colocar uma mensagem personalizada em:
Etiqueta de assunto spam:
Aqui pode ser alterado sem mais problemas.
Aplique todas as configurações e depois vamos na linha de comando novamente.
Logue-se no Firewall e no servidor de e-mail e acompanhe com o comando tail -f /var/log/mail.log nos dois servidores, o que está acontecendo na linha de comando.
Eu espero que vocês também possam implementar essa solução aí no servidor de vocês.
Grande abraço...