De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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.
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.