terça-feira, 10 de novembro de 2009

Backup do Gmail com o Getmail...

Como vivo nas nuvens, faz um bom tempo que acesso os meus e-mails somente pelo navegador. Hoje em dia, salvo em casos bem específicos, não faz mesmo muito sentido possuir um cliente de e-mail instalado no computador. Entretanto, lembrando Murphy, seja uma indisponibilidade do Gmail ou alguem sequestrando a sua conta, algo sempre pode dar errado. E não ter uma cópia dos seus e-mail numa hora dessas não é uma boa idéia.

Para resolver isso, procurei o oráculo, e ele de meu uma solução: Getmail (aqui e aqui).

O Getmail é um programa via linha de comando que permite receber os e-mails de uma ou mais caixas postais e encaminhar para um arquivo ou um MDA.

Para receber os e-mails do Gmail, basta instalar o programa e criar o arquivo de configuração em ~/.getmail/getmailrc. Eu configurei desta forma:

# cabeçalho padrão para acesso do Gmail via IMAP.
# Pode-se usar o Getmail via POP3 tambem.
[retriever]
type = SimpleIMAPSSLRetriever
server = imap.gmail.com
username = meu_usuário
password = minha_senha

# Quando se acessa via IMAP, é possível configurar qual(is) pasta(s), ou marcador(es), se quer baixar.
mailboxes = ("2009", )

# Destino dos arquivos. Pode ser para um arquivo no formato mbox ou uma pasta de e-mails no formato maildir. Cada um tem suas pecularidades. Para o backup eu prefiro o maildir. Entretanto, utilizo o mimeStrip.pl (ver abaixo) com o formato mbox, então configurei para usar os dois. As pastas (cur, new, tmp) e, ou, o arquivo deverão ser previamente criadas.
[destination]
type = MultiDestination
destinations = ('[mboxrd-destination]', '[maildir-destination]')

[mboxrd-destination]
type = Mboxrd
path = ~/tmp.mbox

[maildir-destination]
type = Maildir
path = ~/Documentos/Mail/2009/

# Um log para dar uma olhada quando se precisa é sempre bom.
[options]
verbose = 0
message_log = ~/.getmail/gmail.log
read_all = false

Configurado, basta chamar getmail na linha de comando.

Para facilitar mais um pouco minha vida, misturei isso tudo com essa dica aqui, que sugere a utilização do script em perl mimeStrip.pl. Como em alguns e-mail o que realmente interessa é o que esta em anexo, aproveito o backup que faço do Gmail, e através do arquivo mbox que foi criado utilizo o script para extrair os anexos e salvar tudo numa pasta.

Importantes anexos extraídos pelo mimeStrip.pl

Por fim, misturei tudo num script, que eu chamo de hora em hora, pelo crontab:

touch ~/tmp.mbox
getmail
~/Documentos/Mail/mimeStrip.pl --in ~/tmp.mbox --out /dev/null --dir ~/Temp/0mail/
rm ~/tmp.mbox

F.M.