você está aqui: Home  → Arquivo de Mensagens

Ebook Gratuito: Dá para fazer em Shell?, com o Prof. Julio Neves

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 --------------------------------------
##################################################
###   Local and Program Mailer specification   ###
##################################################

#####  @(#)local.m4     8.23 (Berkeley) 5/31/96  #####

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.


Veja a relação completa dos artigos de Jorge Luiz Godoy Filho