Os atuais MDAs e as linguagens de filtragem de e-mail (parte 1 - Procmail)

Existem vários assuntos interessantes dentro do universo dos servidores de e-mail, um deles é a concorrência entre diversos tipos de MDA (mail delivery agent). Frequentemente este assunto é motivo de boas discussões, e nessas discussões a pergunta que se sobressai é: Qual a melhor escolha entre, por exemplo, o Courier-Maildrop, Dovecot LDA ou Procmail?

[ Hits: 6.893 ]

Por: Leandro Mendes em 03/12/2008


Introdução



O intuito deste texto não é concluir qual o melhor MDA do momento, mas sim mostrar suas diferenças, explicar um pouco sobre a linguagem que cada MDA implementa e, quem sabe, poder ajudar o leitor a decidir qual é o mais adequado para uso em seu ambiente.

Farei uma abordagem cronológica, ou seja, dos três escolhidos, do primeiro a surgir até o mais atual, e neste primeiro post vou falar um pouco sobre o já bastante conhecido Procmail.

Um overview sobre o Procmail

Dos agentes de entrega escolhidos, o Procmail é o mais antigo deles. Teve seu release 1.0 em 1990, e inicialmente seu uso mais comum foi como MDA para o Sendmail. Em relação à linguagem embutida no Procmail para processamento das mensagens, podemos dizer que foi de certa forma influenciada por este atrelamento com o Sendmail, pois quando olharmos um arquivo "procmailrc", é provável que tomaremos um pequeno susto do tipo daquele que tomávamos ao ler um "sendmail.cf". Apesar de não ser difícil de trabalhar com o procmail, a sintaxe de sua linguagem não pode ser considerada intuitiva ao primeiro olhar.

O procmail trabalha principalmente com processamento de mensagens através de expressões regulares, no caso do procmail, seguindo o padrão POSIX. O procmail trabalha com um conceito chamado "recipe", e cada recipe por padrão deve ser iniciado pelo caractere ":" (dois pontos) e o digito 0 (zero). A sintaxe exata do procmail deve seguir o seguinte padrão:

    :0[ flags] [: [local lockfile name] ] < uma ou mais condições (por linha) > <ação>

FLAGS

As flags principais do procmail são:
  • H - processa o header;
  • B - processa o body;
  • D - inicia o recipe em case sensitive mode;
  • c - faz uma cópia carbono.

ACTIONS

São simples ações executadas pelo procmail:
  • ! - encaminha a mensagem para um endereço específico;
  • | - Envia a saída (stdout) para determinado programa;
  • { - inicia um próximo bloco de "recipes" (necessita ao mínimo um espaço após o caractere).

O procmail também permite que sejam extraídas diversas variáveis de ambiente que podem ser usadas como facilitadores dentro de seu filtro, principalmente as variáveis LOGNAME, SHELL, HOME, HOST (todas são auto-explicativas).

Exemplos:

1. Separa todas as mensagens com assunto: ***SPAM*** na pasta Mala Direta:

:0H ^Subject:.*SPAM.* Mala\ Direta # neste caso, a pasta é formato mbox. Maildir necessita do "/"

2. Efetua cópia carbono das mensagens com assunto "Todos" para o destinatário foo@bar:

:0H ^Subject:.*Todos {
    :0 c
    ! foo@bar
}

3. Auto-resposta:

:0 c
| (formail -A"Subject: Mensagem recebida"; \
echo "Sua mensagem foi recebida, logo entrarei em contato!"; \
echo "-"; cat $HOME/.signature \
) | $SENDMAIL -oi -t

Como vimos nestes exemplos, o procmail é uma ótima solução para filtragem simples. Sua linguagem apesar de incomum, é provavelmente a de mais rápido processamento por não necessitar de análise léxica complexa. E uma informação interessante sobre procmail: Sim, é possível usá-lo com usuários virtuais! Só que infelizmente ele não te dá uma flexibilidade tão grande, visto que não suporta nenhum tipo de base de usuários, funcionando basicamente com dados disponíveis através de variáveis de ambiente.

Por hora conhecemos um pouco do Procmail. Se esse pequeno artigo te fez se interessar por este MDA, o primeiro passo é descobrir mais sobre ele. Informações sobre ele podem ser conseguidas nas páginas do manual ou então no site do procmail.

No próximo artigo vou abordar o MDA Courier-Maildrop. Novamente um pouco de história e exemplos de uso deste que é o mais completo MDA e pode ser considerado o canivete suíço no mundo da filtragem de e-mail.

Referencias bibliográficas

procmail.org - http://www.procmail.org/ - Acesso em 28/11/2008.

Paginas do manual - (man procmail, man procmailex) - 29/11/2008.

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Servidor de e-mails vinculado ao AD (Postfix + Courier)

Postfix + MySQL + Submission Port + Dovecot + Postfix Admin no CentOS 6.3

Zimbra 8.0 no CentOS 6.3

Gateway de email com Qmail - proteção antivírus e antispam

Sendmail sem complicações

  
Comentários
[1] Comentário enviado por paulorvojr em 03/12/2008 - 21:25h

belo smart-small artigo!!
em poucas e importantes palavras resumiu o poder do procmail. uso este MDA a anos e nunca me deu problema.


parabens pelo artigo, nota 10.0

[2] Comentário enviado por cvs em 04/12/2008 - 17:07h

Interessante...
Mas poderia ter feito o artigo inteiro de uma e não publicado 1 por 1 como vai fazer.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts