![]() |
Fetchpop e procmail
| Linux in Brazil Documentação original e de qualidade em bom português |
Destaques de hoje: |
:0:
* ^Subject.*Backup.*
in-backups
:0:
* ^Sender.*linux-br.*conectiva.*
linux-brasil
Lendo mail via pop:
fetchpop + procmail
Uma dúvida comum entre usuários novos de sistemas Unix é sobre qual a
maneira ideal de ler os mails do provedor Internet. Muitos adotam soluções
integradas, como o Netscape, kmail (do KDE) ou XFMail, capazes de buscar as
mensagens, filtrá-las e exibi-las. Outros, insatisfeitos com o "peso" e as
limitações destes clientes, procuram por maneiras mais flexíveis, completas
e linux-like.
Minha posição pessoal, enquanto usuário, é de que não existe uma maneira
"ideal" de realizar esta tarefa. Você tem que procurar a que mais se adapta
às suas necessidades e possibilidades. De qualquer forma, vou expor aqui a
solução que eu uso em todas as instalações onde tenho acesso de e-mail.
Para começar, você vai precisar ter o procmail instalado. O procmail é um
processador de mail, e a maior parte (eu diria todas) as distribuições de
Linux o incluem nos seus CDs. Além disso, você vai precisar de uma
ferramenta capaz de fazer o download dos mails do seu provedor; a minha
favorita é o fetchpop, que você encontra para download no Metalab
(http://www.metalab.unc.edu/pub/Linux/system/mail/pop/). Finalmente, você
vai precisar de uma ferramenta capaz de exibir/redirecionar/responder seus
mails, e também de criar novos mails. Aí a escolha é ampla, e não vou entrar
nessa área. Eu uso o tradicional Pine (em modo texto). Outras escolhas podem
ser o mutt, Postilion, Balsa e vários outros.
Procmail
O procmail, como já foi dito, é um processador de mail. Entre suas muitas
habilidades, está a de filtrar o mail recebido, separando em "pastas" de
acordo com o assunto, a origem, o tamanho ou outro critério qualquer. Se bem
configurado, ele pode filtrar spam, manter um address-book automático, fazer
forward automático de mensagens importantes, e praticamente qualquer coisa
que você possa imaginar e seja capaz de programar.
A configuração do procmail tem duas etapas básicas: a criação do arquivo de
regras (~/.procmailrc) e a garantia de que o procmail vá ser executado na
recepção de mail local.
O arquivo de regras do procmail
Normalmente o procmail procura por um arquivo chamado .procmailrc, gravado
em seu diretório pessoal (~/.procmailrc). Este arquivo vai conter a
configuração básica do procmail como um todo, e a lista de regras de
filtragem.
A configuração básica é bastante simples. Como exemplo, vou citar a que
consta na própria documentação do procmail, e que eu costumo usar:
PATH=/bin:/usr/bin:/usr/bin
MAILDIR=$HOME/Mail
DEFAULT=$MAILDIR/mbox
LOGFILE=$MAILDIR/from
A variável MAILDIR define onde você pretende guardar seus mails.
Naturalmente, o diretório tem que existir, e você deve ter permissão de
escrita nele (se não existir, crie-o. O
procmail não vai criá-lo por você). A variável DEFAULT especifica o nome da
pasta a ser usada para armazenar mails que não caiam em nenhuma regra. A
variável LOGFILE especifica, naturalmente, o arquivo de log das operações do
procmail.
Logo após esta configuração, vêm as regras de filtragem. Com estas regras,
você pode definir pastas automáticas para os seus mails de listas, mails
automáticos, assuntos importantes, etc. A sintaxe das regras pode ser muito
complexa, e não vai ser abordada aqui. Darei alguns exemplos, para que você
possa criar suas próprias.
Exemplo 1) Filtro por assunto. Digamos que você deseja que todas as
mensagens que tenham a palavra Backup em qualquer posição do campo Subject
sejam gravadas automaticamente no folder in-backups. A regra ficaria assim:
:0:
* ^Subject.*Backup.*
in-backups
Exemplo 2) Filtro por origem (sender). Esta é a melhor maneira de filtrar
e-mails de listas. Vamos imaginar que você é assinante da lista Linux-br da
Conectiva, e deseja separar em um folder à parte as 300 mensagens que recebe
diariamente da mesma. O primeiro passo é examinar atentamente os cabeçalhos
de uma mensagem desta lista, à procura do campo "Sender:". No caso
específico desta lista, o campo Sender vem sempre preenchido como:
Sender: linux-br@bazar.conectiva.com.br
Portanto, para filtrar os mails desta lista e guardá-los todos em uma pasta
denominada linux-brasil, bastaria a seguinte regra:
:0:
* ^Sender.*linux-br.*conectiva.*
linux-brasil
A sintaxe da linha que começa com um asterisco (a linha condicional) obedece
à sintaxe das expressões regulares do Unix. Uma explicação sobre esta
sintaxe não caberia aqui - digite man 7 regex
ou procure um bom livro sobre
awk, perl ou sed se quiser dominar o assunto - mas você deve ter percebido
que a sequência .* serve como um wildcard ou "coringa" para substituição de
múltiplos caracteres.
Juntando tudo
O nosso arquivo .procmailrc de exemplo ficaria assim:
PATH=/bin:/usr/bin:/usr/bin
MAILDIR=$HOME/Mail
DEFAULT=$MAILDIR/mbox
LOGFILE=$MAILDIR/from
Lembre-se que você pode ter dezenas de regras diferentes, e que as regras
podem fazer muitas coisas além de armazenar mensagens em pastas. Para
conhecer melhor o potencial do procmailrc, digite man procmailrc
(sintaxe) ou man procmailrc (exemplos)
Se você tem alguma regra interessante de procmail que deseja compartilhar
com os leitores de Linux in Brazil, envie para publicação!
Fetchpop
Se você seguiu os passos do item anterior, você já tem definidas as regras
de filtragem de e-mail. Agora, falta o principal: buscar as mensagens do seu
servidor, para que as mesmas sejam filtradas e posteriormente liberadas para
consulta. Você pode usar vários programas para isto; o fetchmail é o mais
popular, mas eu prefiro o fetchpop.
Configurar o fetchpop é muito fácil. Após instalá-lo, na primeira vez que
for executado ele se encarregará de perguntar tudo que é necessário saber
para baixar suas mensagens do provedor. Veja o exemplo de uma primeira
execução:
brain@gibraltar ~> fetchpop -pa
The .fetchhost file does not exit. I will make it for you.
Enter the pop server address.
Pop3 Host: pop.matrix.com.br
Enter login name on pop.matrix.com.br
User: exemplo
Enter the password for user exemplo
Password: exemplo
Enter time for fetchpop to sleep(>=300)
when running as daemon (-d flag).
Sleep time(in seconds): 300
fetchpop 1.9 release, by Seung-Hong Oh.
using mailbox folder /var/spool/mail/brain
Os textos em negrito são os que você precisa preencher, de acordo com as
configurações de seu provedor. Notas: (1) a sua senha vai aparecer na tela;
entretanto ela será armazenada de forma criptografada. (2) o campo sleep
time diz respeito ao tempo em segundos que o fetchpop vai esperar entre
cada nova leitura da caixa de mail se rodado em modo daemon
Após esta configuração inicial, basta você rodar o fetchpop sempre que
quiser buscar seus mails no provedor. Entretanto, o fetchpop tem algumas
opções de linha de comando que devem ser levadas em conta. São elas:
-p - esta opção força a utilização do procmail após a recepção do mail.
Nunca deixe de utilizá-la
-a - busca todos os mails do provedor, inclusive os que já estiverem
marcados como "lidos"
-r - remove os mails do provedor conforme for fazendo o download.
-d - inicia o fetchpop em modo daemon, o que significa que ele vai ficar
rodando em background e a cada N segundos (definidos na configuração) irá
checar novamente a sua caixa postal.
Portanto, se você chamar o fetchpop com o comando fetchpop -pard
ele vai entrar em modo daemon, checando a caixa a cada N segundos, buscando
todos os mails que estiverem lá, removendo-os do provedor, e filtrando-os
localmente através do procmail. Simples não?