AntiSpam Appliance

Para quem precisa de um serviço de anti-spam, recomendo o EFA ( https://efa-project.org/ ). O appliance criado pelo projeto tem tudo que é necessário, a instalação é fácil e o uso praticamente imediato.

 

Para começar, recomendo que mantenha relays separados para envio e recebimento. Se tiver sistemas que enviam e-mails, crie relay separado para eles. Assim o envio de e-mails dos sistemas não vai concorrer com o de seus usuários. Se tiver fluxo realmente grande ou apenas querer redundância, pode aumentar o número de acordo com as necessidades. Para referência, uma máquina virtual com 8GB de RAM e 8 processadores consegue processar em torno de 200.000 e-mails por dia.

 

Nesse post vou descrever somente a opção de relay de recebimento. Os próximos serão de relay de saída, SPF e DKIM.

 

Para começar, baixe a imagem Vmware ou Hyper-V e faça o deploy. Somente uma placa de rede é necessária. A máquina já vem com 25GB de espaço para a quarentena de e-mail. Considere salvar todas as mensagens que passam pelo relay na quarentena para que seja possível submeter algumas para aprendizado de spam do sistema. Como as partições são LVM, é possível acrescentar espaço depois sem a necessidade de reparticionamento.

 

No primeiro boot, logue na máquina com os dados fornecidos ( geralmente é usuário “root” e senha “EfaPr0j3ct”. Logo em seguida será iniciado o processo de configuração, serão solicitados alguns dados para configuração do appliance.

 

  1. Teclado – pode deixar em “U.S. International”;
  2. Hostname – especifique o nome da máquina sem o domínio ( ex. srvantispam01 );
  3. Domínio – especifique o nome do seu domínio ( ex. tonev.pro.br);
  4. E-mail do administrador – informe o e-mail para qual devem ser enviados alertas e informativos sobre o funcionamento da máquina;
  5. E-mail do postmaster – informe o e-mail do administrador do sistema de e-mail para alertas do postfix – pode ser o mesmo do administrador;
  6. Endereço IP da placa de rede – informe o endereço IP que será usado. Você pode publicar o EFA na sua rede interna ou na rede externa, dependendo da estrutura;
  7. Máscara de rede – informe a máscara da rede em qual o EFA está sendo instalado;
  8. Gateway – Informe o default gateway que o  EFA utilizará para acesso à internet. Dependendo da sua rede, poderá ser necessário cadastrar mais de um gateway;
  9. Recursive DNS – Responda com “Y” e se for necessário libere a máquina para consultar DNS externamente. Algumas funcionalidades de RBL dependem das consultas DNS e se você usar um forwarder pode apresentar problemas;
  10. Usuário de administração – informe o login que pretende usar para acesso administrativo ao EFA, tanto SSH como console web. Não utilize o caractere ponto no login;
  11. Senha – informe a senha para a conta administrativa;
  12. Senha – informe a senha para o usuário “root”. Pode ser igual do administrador, porém não é recomendável;
  13. O script de instalação tentara detectar se a máquina está sendo executada no Vmware para efetuar os justes necessários;
  14. Horário – responda com “Y” para confirmar o UTC;
  15. Time zone – especifique a localidade do time zone, no caso do Brasil, escolha a “2”;
  16. Time zone – especifique o país – no caso do Brasil, escolha a opção “9”;
  17. Time zone – especifique o fuso horário – para horário oficial escolha o “8”;
  18. Confirme o fuso escolhido;
  19. YANA – informe o código do país, no caso do Brasil, escolha a opção “br”;
  20. Mail server – o EFA é apenas um relay que vai servidor como servidor de entrega/recebimento. Informe o endereço IP do seu servidor de e-mail onde as caixas postais dos usuários estão hospedadas. Não utilize o FQDN, pois a resolução de DNS do EFA é externa ( item 9 ) e não vai conseguir achar o seu servidor na rede interna;
  21. Organização – informe o nome da organização, empresa, domínio, etc.;
  22. Auto-update – Se quiser que o seu EFA verifique mensalmente se foi lançado um novo release e se atualize automaticamente, pode ativar essa opção. Caso contrário o processo de upgrade terá que ser feito manualmente. Isso se aplica somente ao release, as bases de antivírus, anti-spam, phishing, etc. são atualizados automaticamente;
  23. Resumo – serão apresentadas todas as opções escolhidas. Se tido estiver correto, apenas confirme.
  24. Nesse ponto a máquina vai aplicar as configurações, iniciar alguns serviços e realizar as atualizações necessárias.
  25. Geração do certificado SSL – a interface de gerenciamento é acessada através de https, portanto é necessário gerar um certificado. Assim que for iniciada a geração, responda:
    1. Country name : BR
    2. State or Province Name: Distrito Federal ( seu estado )
    3. Locality Name: Brasília ( sua cidade )
    4. Organization Name: tonev.pro.br ( nome da organização, empresa, domínio, etc. )
    5. Organization Unit: TI ( departamento )
    6. Common Name: srvantispam01.tonev.pro.br ( FQDN do seu servidor. Necessário para acesso ao munin )
    7. Email Address: [email protected] ( e-mail do administrador de rede )
  26. Por fim, a máquina vai solicitar permissão para reiniciar.

 

Nesse ponto a máquina já está apta a servir de relay de e-mail, verificando para presença de spam, vírus e RBL. Porem antes de colocar a máquina em produção é recomendável atualizar o sistema operacional, conferir o DNS.

 

Se você estiver instalando um relay de saída e não quiser ter problemas de bloqueios dos seus e-mails com RBL, tem que conferir o DNS reverso e o SPF, além de instalar o DKIM ( próximo post a fazer ).

 

O processo de atualização é o padrão de qualquer CentOS. É necessário executar ” yum clean all ; yum update ; yum upgrade “. Aplique todas as atualizações e reinicie.

 

Apos o boot, edite os arquivos “/etc/sysctl.conf” e “/etc/mail/spamassassin/local.cf” e adicione/altere as linhas abaixo. Isso não é obrigatório, porém apos alguns meses acompanhando o desempenho da ferramenta, esses foram os parâmetros que adicionei para melhorar o desempenho e filtragem dos spams.

 

/etc/sysctl.conf

vm.swappiness = 1
fs.file-max = 1048576

 

/etc/mail/spamassassin/local.cf

required_score 3.7
bayes_token_sources all
bayes_expiry_max_db_size 3000000
bayes_token_ttl 30w
bayes_seen_ttl 80d
ifplugin Mail::SpamAssassin::Plugin::Shortcircuit
endif # Mail::SpamAssassin::Plugin::Shortcircuit
score RCVD_IN_RP_CERTIFIED 0 0 0 0
score RCVD_IN_RP_SAFE 0 0 0 0
score RCVD_IN_DNSWL_NONE 0 0 0 0
score RCVD_IN_DNSWL_LOW 0 0 0 0
score RCVD_IN_DNSWL_MED 0 0 0 0
score RCVD_IN_DNSWL_HI 0 0 0 0
score RCVD_IN_DNSWL_BLOCKED 0 0 0 0
score RP_MATCHES_RCVD -0.3
score BAYES_99 0 0 4.2 3.9
score BAYES_999 0 0 1.2 1.7
score RCVD_IN_BRBL_LASTEXT 0 2.1 0 1.8
score MISSING_HEADERS 7 7 7 7
score MISSING_MID 1 1 1 1
score HTML_MISSING_CTYPE 7 7 7 7
score MISSING_DATE 7 7 7 7
score MISSING_MIMEOLE 4 4 4 4
score MISSING_SUBJECT 7 7 7 7
score MISSING_MIME_HB_SEP 7 7 7 7
score FREEMAIL_FROM 1
score FREEMAIL_FORGED_FROMDOMAIN 1 1 1 1
score DCC_CHECK 2 2 2 2
score LOTS_OF_MONEY 2 2 2 2
score T_DKIM_INVALID 2 2 2 2
score URIBL_GREY 0.6 1.6 0.6 0.6
score HEADER_FROM_DIFFERENT_DOMAINS 0.5 0.5 0.5 0.5
score MPART_ALT_DIFF_COUNT 3.2 1.9 1.5 1.5
score URIBL_RED 0.5 0.5 0.5 0.5
score HTML_FONT_LOW_CONTRAST 0.4 0.4 0.4 0.4
score MIME_HTML_ONLY_MULTI 0.15 0.15 0.15 0.15
score T_REMOTE_IMAGE 1 1 1 1
score T_KAM_HTML_FONT_INVALID 0.3 0.3 0.3 0.3
score MIME_QP_LONG_LINE 0.3 0.3 0.3 0.3
score HTML_IMAGE_RATIO_02 2.7 1.3 1.7 0.9
score HTML_IMAGE_RATIO_04 2.5 1.1 1.1 1
score HTML_IMAGE_RATIO_06 0.5 0.5 0.5 0.5
score HTML_IMAGE_RATIO_08 0.5 0.5 0.5 0.5
score FROM_MISSP_SPF_FAIL 7 7 7 7
score T_FROM_MISSP_DKIM 5 5 5 5
score UNPARSEABLE_RELAY 3 3 3 3
score SUBJECT_NEEDS_ENCODING 1 1 1 1
score KAM_HUGEIMGSRC 1 1 1 1
score SPF_NEUTRAL 1 1 1 1
score MIME_HEADER_CTYPE_ONLY 1 1 1 1
score RAZOR2_CF_RANGE_51_100 1 1 1 1
score RAZOR2_CF_RANGE_E4_51_100 1.5 1.5 1.5 1.5
score RAZOR2_CF_RANGE_E8_51_100 2.5 2.5 2.5 2.5
score KAM_LOTSOFHASH 1 1 1 1
score URIBL_DBL_ABUSE_REDIR 3 3 3 3
score INVALID_MSGID 3 3 3 3
score MSGID_SHORT 3 3 3 3
score URIBL_BLACK 3 3 3 3
score RCVD_IN_IADB_DK 0 0 0 0
score RCVD_IN_IADB_OPTIN 0 0 0 0
score RCVD_IN_IADB_RDNS 0 0 0 0
score RCVD_IN_IADB_SPF 0 0 0 0
score RCVD_IN_IADB_LISTED 0 0 0 0
score RCVD_IN_IADB_SENDERID 0 0 0 0
score RCVD_IN_IADB_VOUCHED 0 0 0 0
score FORGED_TELESP_RCVD 3 3 3 3
score FORGED_HOTMAIL_RCVD2 3 3 3 3
score FORGED_YAHOO_RCVD 3 3 3 3

 

Para verificar o DNS do seu domínio:

  1. Abra um terminal e execute “nslookup“;
  2. No prompt especifique um servidor de DNS na Internet ( não pode ser o seu ), com o da Google com o comando “server 8.8.8.8”;
  3. No prompt especifique que vai consultar o servidor de recebimento com “set type=mx” ;
  4. Informe o nome do seu domínio, como resposta deve receber o FQDN do seu servidor de e-mail que por sua vez deve resolver para o IP valido em que o seu servidor está publicado;

 

Se tudo estiver em ordem, publique o seu servidor na Internet e aproveite a ferramenta. Existem algumas configurações que podem ser feitas apenas via console, para isso logue como root na maquina e use o menu apresentado. Outras podem ser feitas pelo console web. Antes de usar, navegue pelas opções e conheça a ferramenta. Se precisar, pode editar diretamente a configuração do MailScanner ( /etc/MailScanner/MailScanner.conf ).

 

Se tiverem alguma dúvida, podem enviar para o e-mail [email protected] Dependendo do caso será um novo post ou atualização desse.