Mover o email marcado como Spam pelo Spamassassin era meu objetivo. Uma luta em pleno domingo de páscoa.
Vamos do início. Recentemente instalei um servidor de email para um cliente e resolvi que dessa vez iria fazer algo diferente.
Através de discussões na internet ví relatos que o Dovecot era um Servidor POP/IMAP mais rápido que o Courier e também mais estável, além de sua premissa básica de prezar pela segurança.
Mesmo nunca tendo problemas com a estabilidade do Courier resolvi testar o até então desconhecido Dovecot.
Antes de implementar comecei a pesquisar a respeito e planejar a instalação. Grata surpresa ao ler o site oficial que o Dovecot já possui integrado um SASL (esqueça o Cyrus SASL, SASL é na verdade uma abrevitatura de Simple Authentication and Security Layer). Ví que a conversão das contas do Courier seria simples pois o site do Dovecot possui o script pronto.
Outra coisa que me chamou atenção no Dovecot é a facilidade de se instalar Plugins, Quota, Sieve, tudo pode ser facilmente integrado.
Uma idéia fixa na minha cabeça seria que o servidor seria instalado totalmente out-of-box (pacotes padrão), quer dizer, eu não iria compilar nada. Isso porque muitas vezes outro técnico da empresa vai dar manutenção no servidor e um apt-get upgrade pode sobrescrever o que não deve, ou mesmo que se utilize apt preferênces o pacote iria ficar desatualizado.
Então ficou assim instalado:
- Postfix TLS
- Dovecot POP/IMAP TLS
- Dovecot SASL
- Clamav com Clamav-Filter
- Greylist
- Spamassassin
Talvez se perguntem onde está o filtro de antivirus, mas não utilizo Amavis e nem MailScanner, a uns 4 anos testei o Clamav-Filter, que é um filtro de conteúdo para Postfix e pelo menos na época não tinha comparação, era umas 10x mais rápido que o Amavis.
Se quiser saber como instalar, abaixo está o endereço do site do desenvolvedor do script. A propósito, a página dele possui bons artigos de Postfix.
http://www.unitednerds.org/thefallen/docs/index.php?area=Postfix&tuto=Clamav-gsoares
Agora que já contei a história, vamos a solução. Depois de tudo instalado, resolvi que nesse servidor utilizaria a marcação do Spamassassin para mover as mensagens marcadas como Spam diretamente para a pasta Spam na caixa do usuário, e foi quando começou a luta.
Procurei a respeito, e encontrei alguns artigos de como utilizar o Procmail para o propósito, mas somente depois de quebrar a cabeça algum tempo descobri que o Procmail só faz o delivery para contas locais e o servidor foi instalado com suporte a domínios virtuais.
Então fui atrás de ativar o Maildrop para esse propósito.
Como utilizo Debian, instalar o Maildrop é moleza, um simples apt-get install maildrop é suficiente, e, resta somente ativá-lo no Postfix.
Conforme explicação do site oficial (http://www.postfix.org/MAILDROP_README.html)
Postfix pode ser configurado para a entrega de mensagens diretamente ao maildrop, sem utilizar o agente local de entrega como intermediário. Isso significa que você não terá disponível os aliases (/etc/aliases) ou o arquivo .forward
Tipicamente utilizado onde os usuários não possuem contas locais no sistema.
Primeiro vamos alterar o arquivo main.cf do Postfix, adicione ou altere conforme o caso, as seguintes linhas:
###################### Maildrop ######################
virtual_transport = maildrop
maildrop_destination_recipient_limit = 1
######################################################
Em seguida alteramos o arquivo master.cf, adicione as linhas abaixo:
###################### Maildrop ######################
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d vmail ${nexthop} ${user} ${extension}
######################################################
Detalhe, se você seguir os passos conforme o site oficial o maildrop não vai funcionar, isso claro, para domínios virtuais. As linhas conforme o site oficial são para usuários que possuem contas locais no sistema.
Repare que na segunda linha está especificado o usuário vmail. Esse usuário não deve ser o mesmo utilizado pelo postfix.
Agora que vem o script que você os emails, crie o arquivo /etc/maildroprc com o conteúdo a seguir:
################# /etc/maildroprc ####################
SHELL=/bin/bashDOMAIN=tolower(“$1″)
USER=tolower(“$2″)
EXTENSION=tolower(“$3″)
USERMAILDIR=”/var/mail/virtual/$DOMAIN/$USER”if (/^X-Spam-Flag: *YES/)
{
exception {
to “$USERMAILDIR/.Spam/”
}
}
######################################################
Altere as permissões do arquivo para o usuário vmail, esse usuário deverá ter permissão de escrita no diretório de email dos usuários.
A ideia do arquivo é a seguinte, primeiro são definidos as variáveis que foram recebidas pelo Postfix, logo em seguida através do uso de expressão regular move-se qualquer mensagem com o header “X-Spam-Flag: *YES” para o diretório escolhido.
Por fim, para que as alterações façam efeito, reinicie o Postfix.
# postfix reload
Pronto, seu Postfix utilizando-se do Maildrop encaminhará as mensagens marcadas como Spam para a pasta definida.
Se tiver alguma dúvida, não se esqueça de postar os logs do erro, se for o caso.
Tags: clamav, debian, delivery, diretório, domínios virtuais, Dovecot, imap, lenny, maildrop, maildroprc, Move Spam to the Junk Folder Automatically, mover, pasta, postfix, procmail, sasl, spam, Spamassassin, tls, virtual, virtual_transport = maildrop, X-Spam-Flag
This website submit is basically out of the box. Quite a few other posts we have witnessed on this topic but this will be the a person i was searching for. I would like to subscribe to your feed for my streaming movies blog and also bookmarking this website now.