:[ Mauricio Teixeira :: Artigos e comentários - Tutorial: Anti-Spam Gateway para MS Exchange com SUSE 10.0 ]:



Introdução

O objetivo deste documento é apresentar uma maneira simples e rápida de instalar um sistema anti-spam em um servidor rodando SUSE 10.0. Pressupõe-se que o leitor:

A configuração descrita abaixo foi implantada em uma empresa para qual presto consultoria, e faz parte de uma configuração mais geral documentada em "Anti-Spam em SUSE 10.0". No primeiro documento é demonstrado o processo de configuração do servidor Linux com Postfix que recebe as mensagens externas e encaminha para o servidor Exchange 5.5 na rede interna.

O resultado deste trabalho está em operação desde Janeiro/2006.

Observações

Back-end Exchange -> Postfix

Para reduzir a quantidade de e-mail indesejados entrantes, criamos uma tabela no Postfix que lista os usuários permitidos para receber. Ou seja, quando o servidor de e-mail remoto envia o comando "RCPT TO", o Postfix automaticamente consulta a tabela relay_recipients. Se o destinatário não existir na tabela, é retornado um erro imediatamente negando a mensagem.

O processo de criação da tabela consiste na extração da lista de usuários no Exchange, exportação do arquivo via SCP para o servidor do Postfix, e execução do comando de geração da tabela de usuários. Caso um determinado e-mail exista no Exchange, mas não desejamos que este receba e-mails externos, basta adicionar este endereço no arquivo /home/exchupdate/exclude-users.txt no servidor Linux.

Exportando de Usuários

Precisamos criar alguns arquivos e scripts para coletar a lista de e-mails cadastrados no Exchange e enviá-la para o Linux.

Não execute nada agora. O script runexport.bat irá gerar o arquivo exchusers.txt que deverá ser exportado para o servidor através de cópia via SSH. Para isso começamos criando a chave de encriptação, de forma a não precisarmos autenticar na hora da conexão.

puttygen.exe -> SSH2 RSA Key -> Generate -> (mova o mouse) -> (comentário) "Exchange User Update Key" -> (SEM SENHA) -> Save Public Key -> exchupdate.pub -> Save Private Key -> exchangeupdate.ppk

Exportando Usuários para o Postfix

No servidor com Postfix, começamos criando um usuário exchupdate (com uma senha ALEATÓRIA), que, por segurança será utilizado somente para a cópia da base de usuários. Copiamos o arquivo exchupdate.pub do Windows para o Linux em /home/exchupdate, executamos os seguintes comandos:

  cd /home/exchupdate
  mkdir .ssh
  chmod 700 .ssh
  ssh-keygen -i -f exchupdate.pub > .ssh/authorized_keys2
  chmod 400 .ssh/authorized_keys2
  chown -R exchupdate.users .ssh
  rm -f exchupdate.pub

Para permitir a execução remota do comando de atualização, precisamos instalar o sudo, e adicionar a linha exchupdate ALL=NOPASSWD:/home/exchupdate/rebuild-relay-recips ao arquivo /etc/sudoers. Não esqueça de adicionar o usuário ao AllowUsers do arquivo /etc/ssh/sshd_config.

Agora, no diretório /home/exchupdate criamos os arquivos necessários para rodar o script de conversão do formato importado para o utilizável.

Por fim, asseguramos que nada estranho possa acontecer com eles, e preparamos os arquivos necessários:

  cd /home/exchupdate
  touch exclude-users.txt
  chown root.root Makefile exclude-users.txt parse-exchange-users rebuild-relay-recips
  chmod 600 Makefile exclude-users.txt
  chmod 711 parse-exchange-users rebuild-relay-recips notify-sync
  touch /etc/postfix/relay_recipients
  touch /etc/postfix/relay_recipients.db
  ln -sf /etc/postfix/relay_recipients
  ln -sf /etc/postfix/relay_recipients.db

Teste de Sincronização

Voltado ao servidor Windows, executamos então o script runexport.bat. Na primeira vez que fizermos isso, é perguntado se queremos salvar a chave do servidor, e dizemos sim (para não perguntar novamente).

Execute a primeira vez e cheque se tudo ocorreu sem problemas.

Para que o script runexport.bat execute regularmente, agendamos uma tarefa para ele no "Scheduled Tasks" do próprio Windows. No nosso caso, a tarefa foi agendada para executar todos os dias às 02:00. Confira! Se não as bases não sincronizam, e alguns usuários poderão não receber e-mail.

Configurando o Postfix para Ler a Lista

O Postfix já sabe que estamos restringindo os usuários apenas aos conhecidos, mas não custa nada confirmar.

Finalizando

Após a concluir a configuração do Postfix e garantir que a lista está sendo corretamente atualizada, basta reiniciar o Postfix e tentar enviar uma mensagem.

Não esqueça de agendar o script de sincronização no Task Scheduler do Windows, se não você vai precisar executá-lo manualmente de tempos em tempos.

Documentação Consultada

Autor

Mauricio Teixeira <mteixeira:at:webset:dot:net>


Início... - Mauricio Teixeira - Atualizado em: Thu Apr 20 15:20:06 2006