sexta-feira, 13 de novembro de 2009

Como fazer para que os usuários autenticados não passem pelo amavis

Eu já implementei servidores de email em diversas empresas e, a maioria, usava a combinação postfix+amavis para proteção contra spam e virus e nunca houve problema. Mas, em um deles, havia um problema sério de envio e recebimento de mensagens que não conseguia resolver por um único motivo: O alto volume de mensagens que eram enviadas e recebidas diariamente. Praticamente todos os dias o servidor de email ficava sobrecarregado e, como a empresa estava crescendo, entrando novos funcionários, partimos para um servidor mais parrudo. Após a migração e dias monitorando, não foi encontrado novos problemas. Mas aí, a poucos dias atrás, o problema retornou com toda força e as mensagens levavam vários minutos para serem entregues. Depois de uma boa analise, acabamos isolando o amavis. Vamos ver o porque.


Todo email chega no postfix e o mesmo reenvia a mensagem para o amavis. O amavis faz o seguinte:


- Ele abre a mensagem e lê a mesma dos cabeçalhos até o final para ver se é spam. Se for considerado spam ou de um remetente na lista de bloqueio, ele rejeita, caso contrário ele passa para etapa seguinte.
- Se encontrar algum arquivo, ele passa um anti-virus para ver se tem algum virus ou não. Se tiver a mensagem é rejeitada.
- Estando a mensagem considerada limpa, ele devolve ao postfix que finaliza a entrega.


Só que esses passos levam tempo para fazer e, com isso, é gasto pocessamento de CPU e memória. Isso não é notado na maioria dos servidores já que o trafego de mensagens não chega a ser tão intenso a ponto de deixar serviço lento. Porém esta empresa envia e recebe uma quantidade absurda de emails, algo que só se compara com grandes provedores do tipo hotmail, yahoo, gmail, etc.. e já estava afetando e muito na troca de mensagens. Uma solução que foi passada era fazer com que os remetentes enviem a mensagem sem passar pelo amavis. Mas como fazer se todo trafego tem que passar por ele? Com um pouco de pesquisa, encontrei uma solução que está dando certo. Mas para isso foi necessário fazer algumas alterações no main.cf no postfix.


main.cf original


#Amavis
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings


...


# Restrição apos comando MAIL FROM
smtpd_sender_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated




main.cf modificado


#Amavis
content_filter =
receive_override_options =


#O content_filter deve ficar vazio para colocar as regras de
#exclusão. O mesmo vale para o receive_override_options por conta 
#de um software de lista que roda no servidor e não pode ter 
#interferencias


# Restrição apos comando MAIL FROM
smtpd_sender_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        check_sender_access regexp:/etc/postfix/sasl-bypass


# É neste check_sender_access que fica a parte principal para o uso do amavis.


Dentro do sasl-bypass
/^/ FILTER amavis:[127.0.0.1]:10024


Salve o arquivo e rode o comando "postfix reload" para recarregar as configurações.


A partir deste ponto vai ter dois tipos de caminhos que a mensagem deve passar.


1 - É o caminho explicado anteriormente. O postfix repassa para o amavis, o mesmo analisa a mesma em busca de spam e virus e devolve ao postfix.


2 - O usuário se autentica no postfix e envia a mensagem. Só que a mensagem nem passa pelo amavis, indo direto para a entrega no destinatário.


Com isso, até agora não houve problemas de sobrecarga do servidor. Mas esta configuração tem um preço: Caso algum usuário pegue um virus e o mesmo consiga a senha da conta de email, qualquer email autenticado no servidor pode enviar arquivos infectados para qualquer usuário já que ele não passa pelo amavis e, por tabela, não passa pelo anti-virus. Neste ponto só vamos descobrir agluma coisa pelos logs ou por alguma mensagem no anti-spam do destinatário.


Esta dica já leva em consideração que já tem o amavis instalado e configurado no servidor, vou ver se ainda termino de montar o wiki, aonde terá uma explicação mais completa e com alguns exemplos de configuração de email e de anti-spam.

Nenhum comentário:

Postar um comentário