Migrando do nmzmail para o mu
Há cerca de dois anos resolvi aceitar a dura realidade de que nenhum programa de email presta. Após essa revelação, resolvi seguir os passos dos que foram iluminados antes e resolvi usar o mutt[1]. O mutt é um programa bacana criado com um único propósito: ler email. Isso quer dizer que ele não não se preocupa em baixar os emails, enviá-los ou em editá-los. Ele é até capaz de fazer isso, mas sejamos sinceros, ele é uma porcaria desempenhando essas outras funções. 
Então, depois de configurar meu ambiente de email, com
- offlineimap para sincronização do backup local de mensagens com os servidores IMAP de meu email;
- vim para edição dos emails;
- msmtp para envio dos emails por SMTP;
- msmtpqueue para manutenção da fila de emails não enviados;
- Truecrypt para cifragem do banco de dados de emails;
- GnuPG para a paranóia básica;
- gnome-keyring como chaveiro com as minhas senhas[2];
- nmzmail para indexação e busca rápida das minhas mensagens.
Essa configuração funciona muito bem, mas dia desses acabei esbarrando numa página que comparava três indexadores (mairix, nmzmail e maildir-utils) e que dizia que o maildir-utils era a opção do sujeito.
Nunca considerei o mairix pois li em alguns reviews [citation needed] que o nmzmail possuía mais impressões positivas, mas como não conhecia o maildir-utils (mu), era hora de comparar os dois e ver no que dava. Meu objetivo não era comparar por comparar, mas o nmzmail costumava gastar bastante tempo processando meu banco de dados de email, que consiste de aproximadamente 45000 documentos e quase dois milhões de palavras.
Após instalação do mu, hora de gerar o índice. Como a geração inicial do índice costuma ser custosa, ela não foi usada para comparação. No entanto, após a criação do índice, resolvi fazer algumas novas indexações para comparação de desempenho (há um cronjob que levanta de três em três horas para atualizar o índice, quanto menos tempo, melhor). Enquanto o tempo total de indexação do mu ficou na ordem de cinco segundos em todas as execuções, o nmzmail levou cerca de 50 segundos. 
Depois desse resultado, resolvi usar o mu por mais algum tempo para ver se me adapto ao programa. Infelizmente ele não possui uma interface para entrada de consultas (pelo menos eu não vi nenhuma) e a solução do zack não me agradou muito. Por isso, criei o script python abaixo para fazer cache das consultas com readline e facilitar a minha vida.
#!/usr/bin/env python
import atexit
import readline
from os.path import join
from os import environ as env
from subprocess import call
HOME = env['HOME']
INDEXPATH = join(HOME, '.mu', 'results')
MAILDIRPATH = join(HOME, 'Maildir')
HISTORY = '.mailfinder_history'
HISTFILE = join(HOME, HISTORY)
try:
readline.read_history_file(HISTFILE)
except IOError:
pass
atexit.register(readline.write_history_file, HISTFILE)
def main():
query = raw_input('Query: ')
call(['rm -fr %s' % INDEXPATH], shell = True)
command = 'mu find -m %s -l %s %s' % (MAILDIRPATH, INDEXPATH, query)
ret = call([command], env = env, shell = True)
if __name__ == '__main__':
main()
No mutt, continuo com o meu antigo atalho (S) para para execução das consultas e adicionei outro atalho (F9) para revisitar os resultados da última busca:
macro generic S "mail-finder.py c~/.mu/results " "Search via mu" macro index " ~/.mu/results\n" "Display mu find results"
O script de atualização dos índices, por sua vez, ficou assim agora:
#!/bin/sh
mount | grep $MAILDIR &> /dev/null
if [ "$?" == "1" ]; then
echo "$MAILDIR not mounted. Aborting." > /dev/stderr
exit 1
fi
exec nice -n 19 /usr/bin/mu index -q -m $MAILDIR
Fim! Legal, né?
PS: O esquema de cores padrão do mutt é meio nojento também. Depois de virar usuário do zenburn, acabei criando um tema equivalente para o mutt, exibido no início deste post.
Notas
Textos Relacionados (gerado automaticamente):
Sobre esta página
Atualmente, você está lendo “Migrando do nmzmail para o mu,” uma página do Vale do Trovão
- Publicado em:
- 6.4.10 / 4pm
- Categoria:
- programação

View Comments
Ir para o formulário de comentários | comments rss [?] | trackback uri [?]