Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Configuração do programa Procmail
Colaboração: Jorge Luiz Godoy Filho
Data de Publicação: 24 de Abril de 1998
Essa mensagem e' nova. Estou escrevendo para ser a primeira (ou uma das) da serie sobre o procmail.
Pre-requisitos: existencia do pacote do procmail ja' instalado.
Configuracao do procmail:
Para ter o procmail funcionando e filtrando e-mail, editar os seguintes arquivos conforme conveniente:
---------- Arquivo ~/.procmailrc --- Permissoes: u=rw,g=r,o=r -----------=
# Arquivo de configuracao do procmail.
#
# Versao 1.6
# 21/03/98
#
# 1. Variaveis.
SHELL=/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/mail # Deve existir!!!!
LOGFILE=$MAILDIR/.log # Log do que foi feito pelo procmail.
VERBOSE=no
SENDMAIL=/usr/sbin/sendmail
FORMAIL=/usr/bin/formail
# 2. Regras.
#
# Nota: ^TO satisfaz campos: TO, CC e BCC. ;o))
# Nota2: Caso as inboxes nao existam, sao criadas automaticamente.
# :0 c # Habilitar para testes.
# backup
# Evitar cros-posting
# 8K de "cache" para guardar os IDs das mensagens, que sao unicos.
:0 Wh: msgid.lock
| formail -D 8192 msgid.cache
----------------------------- NOTA / COMENTARIO ---------------------
A regra acima cria um arquivo chamado ~/mail/msgid.cache onde sao=
guardados os IDs das mensagens recebidas, de modo que se ele existir ali,
a mensagem e' descartada.
------------------------------- CONTINUACAO -------------------------
# Regras para listas de discussao.
# Mudadas de ^TO para ^Sender pois havia mensagens que nao eram filtradas
# corretamente.
:0: dicas-l.lock
* ^Sender:.*dicas-l-owner
dicas-l
:0: bugtraq.lock
* ^Sender:.*BUGTRAQ
bugtraq
:0: bugtraq.lock
* ^X-Mailing-List:.*linux-security
bugtraq
-------------------------- NOTA / COMENTARIO ---------------------------
Todas as mensagens possuem o campo Sender ou X-Sender. As regras acima
separam as mensagens de algumas listas de discussao dea cordo com o Sender
da mensagem. Adotei essa medida pois nessas listas acima relacionadas, o
Sender da mensagem e' alterado para o nome da lista.
Uma outra alternativa, e' usar o campo X-Mailing-List. Infelizmente, nao
sao todas as listas que definem esse campo. (Ja' vi tambem o campo List)
------------------------------ CONTINUACAO -----------------------------
:0: lie-ldp.lock
* ^TOlie
lie-ldp
:0: lie-ldp.lock
* ^TOldp
lie-ldp
--------------------------- NOTA / COMENTARIO -------------------------
No caso das duas listas acima, nao ha' o campo X-Mailing-List e o Sender
da mensagem nao e' alterado. A lista apenas reencaminha as mensagens para
os demais recipientes, mantendo os cabecalhos originais ou fazendo
alteracoes nao comuns.
A solucao que encontrei/optei foi o uso do campo do destinatario (TO, CC,
BCC & cia) para a filtragem das mensagens.
------------------------------ CONTINUACAO ----------------------------
:0: bestway.lock
* ^From.*webmaster@bestway.com.br
bestway
-------------------------- NOTA / COMENTARIO -------------------------
Pode-se ainda, filtrar e-mails de acordo com o nome do usuario que enviou
a mensagem. Essa informacao vem contida no campo FROM.
------------------------------ CONTINUACAO --------------------------
# Filtro para chain-mail. --- Funciona OK.
#
# :0: chain.lock
# * ^TO*@*, *@*, *@*
# chain
----------------------------- NOTA / COMENTARIO ----------------------
Se voce nao e' fa daquelas mailing-lists, essa regra acima joga todas as
mensagens para um arquivo chamado ~/mail/chain. Voce pode redirecionar=
para /dev/null... ;))
------------------------------- CONTINUACAO -------------------------
# E-mails que nao satisfazem as regras acima sao colocados em $DEFAULT
# ou seja, na inbox em /var/spool/mail/$USERNAME
--------------------------------------------------------------------------
No exemplo acima, as pastas referenciadas sao criadas em ~/mail/ e sao= automaticamente geradas pelo procmail caso nao existam. As permissoes da pasta devem ser de rw para o owner, apenas. $DEFAULT e' a pasta padrao, que e' /var/spool/mail/$USERNAME por padrao.
O seguinte arquivo deve ser colocado no HOME do usuario, mudando-se apenas o username apos o sinal "#".
----------- Arquivo ~/.forward ------- Permissoes:u=rw,g=r,o=r ------------= "|IFS=' '&&exec /usr/bin/procmail -f-||exit 75 #jorge" ---------------------------------------------------------------------------
Nao esquecer das aspas!!!! :o)
Maiores informacoes: man procmail man procmailrc man procmailex <--- MUITO boa!!!
Esse e' um arquivo que mantenho aqui para referencia em futuras instalacoes/upgrades. ;)
Uma coisa que notei e' que o arquivo .forward pode ser eliminado. A condicao para essa eliminacao e' que conste no /etc/sendmail.cf o seguinte trecho:
----------------------------- CUT --------------------------------------
< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>##
< A NAME="note# Local and Program Mailer specification " HREF="#textnote# Local and Program Mailer specification ">< SUP># Local and Program Mailer specification #
< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>##
< A NAME="note" HREF="#textnote">< SUP># @(#)local.m4 8.23 (Berkeley) 5/31/96 < A NAME="note" HREF="#textnote">< SUP>#
Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qShP, S=10/30, R=20/40,
T=DNS/RFC822/X-Unix,
A=procmail -a $h -d $u
------------------------------ CUT -------------------------------------
(Repare que o mailer local e' o procmail!!! --- Se existirem essas
linhas, recomendo que NAO seja usado o .forward)
Mas, voce pode estar se perguntando... Como farei para manter um arquivo
com a finalidade original do .forward???
Simples! Crie uma regra para isso e, ao inves de inves de indicar o nome
de uma pasta, referencie um e-mail. Nao esqueca de colocar a mesma regra
DUAS vezes, uma com a opcao ":0 c" para que a mensagem seja enviada e
outra com ":0:" para que encerre o processamento sobre aquela mensagem,
colocando-a na pasta correta.
Como elaborar suas proprias regras?
Siga a receita abaixo ;))
:0 opcoes_do_procmail: arquivo_de_lock_das_mensagens * ^Campo_valido_do_e-mail:.regra_a_ser_satisfeita * ^outro_campo:.outra_regra * ^outro_campo:.outra_regra_a_ser_satisfeita . . . folder_destino_para_a_mensagem.
Repare que voce pode ter um numero consideravel de regras, mas apenas UMA linha com pasta destino. As regras tambem devem constar UMA em cada linha.
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.




