# cd /usr/ports/mail/procmail # make clean # make installAgora que instalamos o procmail vamos a configuração.
# .procmailrc de exemplo v. 1.0 ######################################################### # Variaveis # ######################################################### # Define o path nos quais o procmail vai procurar por outros # programas. PATH=/bin:/usr/bin:/usr/local/bin: # Define o diretorio onde o procmail vai armazenar suas mensagens. MAILDIR=$HOME/mail # Define o mailbox padrão no qual serão armazenados os e-mails # que nao derem se enquadrarem em nenhuma das regras. DEFAULT=$HOME/mail/Entrada # Define o arquivo de log do procmail. No exemplo abaixo # os logs serão gerados no formato log.20010617 LOGFILE=$MAILDIR/log.`date "+%Y%m%d"` # Define o shell sob o qual o procmail ira executar programas # extrenos. SHELL=/bin/sh ######################################################### # Filtros # ######################################################### # Coloca as mensagens que trouxerem no campos From ou Cc ou To # do cabeçalho a string fugspbr(da lista FUGSPBR) no mailbox Fugspbr. :0: * ^(From|Cc|To).*fugspbr Fugspbr # FimNo arquivo acima todas as linhas iniciadas por # são ignoradas.
:0 flags: LockfileName * condição 1 * condição 2 açãoAs flags possiveis são:
| H | Egrep no cabeçalho da mensagem (default). |
| B | Egrep no corpo da mensagem |
| D | Seta o egrep para o modo "case sensitive" |
| A | A regra nao será executada a menos que a regra anterior (sem uma flag A ou a) tenha sido executada |
| a | A regra nao sera executada a menos que a regra imediatamente anterior tenha sido executada com sucesso |
| E | A regra so será executada se a regra imediatamente anteriror nao tiver sido executada. |
| e | A regra so será executada se a regra imediatamente anterior nao tiver sido executada com sucesso. |
| h | Envia o cabeçalho da mensagem para um pipe, arquivo ou e-mail. (default) |
| b | Envia o corpo da mensagem para um pipe, arquivo ou e-mail. (default) |
| f | Considera o pipe como um filtro. |
| c | Gera uma copia do e-mail. |
| w | Aguarda pelo exitcode de um filtro ou programa, se a execução dos mesmos falhar então a mensagem não sera filtrada. |
| W | O mesmo que w, porém suprimindo a mensagem de erro. |
| i | Ignora qualquer erro de gravaçao. |
| r | Raw Mode. |
| Metacharacter | Função |
| . | Qualquer caracter |
| (string) | Trata a string como um item unico |
| * | Zero ou mais items anteriores |
| ? | Zero ou um item anterior |
| + | Um ou mais itens anteriores |
| ^ | Começo de uma linha |
| $ | Final de uma linha |
| [lista de caracteres] | Qualquer um dos caracteres da lista |
| [^lista de caracteres] | Qualquer caracteres que nao conste da lista |
| \ | A palavra string |
| | | ou |
# A regra abaixo cria uma copia de cada mensagem recebida na caixa postal
# backup
:0c:
backup
# Envia todas as mensagens enviadas pela lista do fugspbr sobre
# Sendmail para edson@primeirospassos.org e guarda uma copia
# local no mailbox Sendmail.
# Veja que como estamos aplicando duas regras a uma mesma msg
# foi necessario duplica-la com a flag "c".
:0
* ^From.*fugspbr
* ^Subject:.*sendmail
{
:0 c
! edson@primeirospassos.org
:0:
Sendmail
}
# Redireciona todos os e-mails com menos de 5 Kb para
# ebrandi@fugspbr.org
:0
* < 5000
! ebrandi@fugspbr.org
# Guarda as mensagens enviadas pelo postmaster ou pelo
# Mailer-Daemon para o mailbox postmaster.
:0:
* ^FROM_MAILER
postmaster
# Se vc assina varias listas de discussão sobre o mesmo assunto
# pode vir a receber mensagens duplicadas, postadas por uma mesma pessoa
# para as varias listas. A regra abaixo se baseia nos Message-IDs
# das mensagens mais recentes que voce recebeu e irá redirecionar
# as msgs duplicadas para o mailbox Duplicadas
:0 Whc: msgid.lock
| formail -D 8192 msgid.cache
:0 a:
Duplicadas
# Se voce utiliza pgp ou gpg, a regra abaixo permite enviar
# automaticamente a sua chave publica para quem lhe enviar um
# email com o subject "enviar chave pgp".
# Observe que o envio so ocorrera se o campo From não trouxer o
# meu nome, se o subject nao contiver Re: e se o e-mail nao tiver sido
# enviado por um mailer daemon.
:0
* !^From +Edson Brandi
* !^Subject:.*Re:
* !^FROM_DAEMON
* ^Subject:.*enviar chave pgp
| (formail -r ; cat ebrandi.asc ) | $SENDMAIL -oi -t
# A regra abaixo me permite descartar os e-mails de alguem que eu nao gosto
:0
* ^From.*pessoa_mala@algumlugar.com.br
/dev/null
# A regra abaixo procura as palavras virus, dinheiro, money, grana
# no corpo da mensagem, se alguma delas for encontrada a mensagem é
# descartada
:0 B:
* (virus|dinheiro|money|grana)
/dev/null
Voce pode aprender mais sobre como escrever suas regras lendo as man pages dos programas procmail, procmailrc, procmailsc, procmailex, formail."|IFS=' '&&exec /usr/local/bin/procmail -f-||exit 75 seu_login"O arquivo deve ser setado com permissão 755, e observe que as aspas são necessarias
Mlocal, P=/usr/libexec/mail.local, F=lsDFMAw5:/|@qPSXfmnz9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
T=DNS/RFC822/SMTP,
A=mail.local -l
pelas seguintes:
Mlocal, P=/usr/local/bin/procmail, F=lsDFMAw5:/|@qPSXfmnz9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
T=DNS/RFC822/SMTP,
A=procmail -Y -a $h -d $u
E restarte o seu sendmail. Agora o procmail sera o agente default de entrega de e-mails, quando chegar um e-mail o procmail sera executado e se existir um .procmailrc no home do usuario ele ira efetuar a filtragem, do contrario a mensagem sera entrega como se vc estivesse usando o mail.local.# formail -s procmail < sua_caixa_postalBoa sorte!