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.

terça-feira, 18 de agosto de 2009

Backup Incremental com o Mutt + sSMTP + Gmail...

Um dia, mais cedo ou mais tarde, acontece. Pode ser por um arquivo corrompido ou deletado, ou por um disco danificado, ou por uma partição formatada, ou por inundação, incêndio, explosão, ou por qualquer outra coisa. Um dia você vai perder aquele(s) arquivo(s) super-hiper-importante(s), vai lembrar que o último backup existente é de uns 3 meses atrás e se arrepender de não ter parado 10 minutos no dia anterior para fazer uma simples cópia de tudo.

Há um bom tempo tenho feito grandes backups de todos meus arquivos, em CD/DVD e num velho disco removível. Só que entre um backup e outro havia um espaço de 1, 2, ..., n meses, e os novos arquivos criados e as modificações ficavam sem cópia por um bom tempo. Felizmente, nos últimos anos, não precisei recuperar arquivos, mas é bom estar prevenido. Pensei, pesquisei, e arquitetei um backup incremental usando o Mutt + sSMTP + Gmail + algumas coisinhas.

O Mutt é um cliente de e-mail, e sua principal característica neste projeto é que pode-se enviar por ele um e-mail através da linha de comando. O sSMTP é um servidor "simplificado" de correio eletrônico, necessário para ser utilizar o Mutt. O Gmail dispensa apresentação. O Tar é uma ferramenta em linha de comando para empacotar arquivos. O cron, o agendador de tarefas da família Unix.

Como misturei tudo??? Simples. Comecei criando um script em shell, com o comando tar fazendo um backup incremental.
tar -cvzf /pasta_para_backup/bck_diario_`date +%Y%m%d`.tgz --exclude=bck* --exclude=*.com --newer-mtime `date -d '2 day ago' +%Y-%m-%d` /pasta_para_backup/* >> /pasta_para_backup/bck_diario_`date +%Y%m%d`.log
Opções utilizadas:
-c, cria um novo arquivo;
-v, informa cada arquivo copiado. A listagem é redirecionada, gerando um arquivo de log (>> /pasta_para_backup/bck_diario_`date +%Y%m%d`.log);
-z, comprime o arquivo de backup gerado com o gzip;
-f, nome do novo arquivo de backup a ser criado. Utilizo o comando Date com o opção %Y%m%d para criar parte do nome do arquivo de backup e de log. Os nomes dos arquivos gerados hoje, por exemplo, foram bck_diario_20090818.tgz e bck_diario_20090818.log;
--exclude, exclui alguns arquivos do backup. O --exclude=bck* exclui a si mesmo, os demais arquivos de backups existentes e os arquivos de log, já que salvo tudo na mesma pasta onde realizo os backups. O Gmail recusa alguns tipos de anexos, mesmo dentro de um arquivo tgz, como executáveis, e arquivos compactados dentro de outros arquivos compactos. Utilizo a opção --exclude=*.com por que o Pidgin salva certificados com o nome do servidor, como por exemplo login.live.com. Esse arquivo não é um executável, é um simples certificado em ASCII, mas se tentar enviar para o Gmail, o e-mail vai ser recusado;
--newer-mtime, faz a cópia somente dos arquivos modificados e criados após a data informada. Eu utilizo date -d '2 day ago' +%Y-%m-%d para fornecer a data de dois dias atrás. O backup é feito diariamente. Escolhi dois dias para minimizar eventual falha num dia;
e, para terminar, o local onde devem ser procurados os arquivos. O /pasta_para_backup/* inclui as subpastas.

E para mandar os arquivos para o Gmail, utilizo o Mutt.
echo "Backup encerrado em `date`" | mutt -s "Backup `date +%Y%m%d`" -a /pasta_para_backup/bck_diario_`date +%Y%m%d`.tgz /pasta_para_backup/bck_diario_`date +%Y%m%d`.log -- email@do_destino.com.br
Um forma simples do chamar o Mutt na linha de comando para enviar uma mensagem é corpo_da_mensagem | mutt -s assunto_da_mensagem -a anexo_da_mensagem -- email@do_destino.com.br. Utilizo o comando Date da mesma forma que utilizo para criar o arquivo tar, por isso o bck_diario_`date +%Y%m%d`.tgz. Eu utilizo o Mutt, e o sSMTP, somente para essa função, então eles não estão corretamente configurados. Para que eles funcionem, é preciso configurar dois arquivos.

No arquivo de configuração do Mutt, o .muttrc, normalmente na raiz da pasta do usuário, é preciso, no mínimo, configurar a forma de envio dos e-mails.
set sendmail="/usr/sbin/ssmtp -auemail@do_remetente.com.br -apsenha_do_email"

No arquivo de configuração do sSMTP, o ssmtp.conf, em /etc/ssmtp/, as configurações do Gmail.
FromLineOverride=NO
Mailhub=smtp.gmail.com:465
UseTLS=YES
E para que isso funcione automaticamente, incluí uma linha no arquivo crontab, chamando o script uma vez por dia.

Basicamente, é isso.

O Mutt, por não estar totalmente configurado, cria um arquivo sent na pasta do usuário. Incluí um rm /pasta_para_backup/sent no final do shell script para exclui-lo.

Na dúvida se foi ou não foi, olho os logs mail.err, mail.info, mail.log, mail.warn e syslog, todos na pasta /var/log/.

F.M.

sexta-feira, 17 de julho de 2009

Guardando as senhas em segurança com o GnuPG...

Um dos problemas que assolam a todos na sociedade pós internet é guardar n senhas dos n sítios que nos cadastramos web a fora. Como é difícil guardar no cérebro n senhas diferente, uma para cada coisa, usar a mesma senha para tudo parece ser uma boa idéia. E de preferencia uma senha facilmente lembrável, como "senha", "123456", "qwerty" ou "pussy" (sim, acredite, a 5ª senha mais usada de todos os tempos). Obviamente, isso não é uma boa idéia.

Para resolver este problema, já fazia algum tempo que eu usava uma solução caseira. Eu tinha criado um arquivo em html com todas as minhas senhas, criptografadas por uma máquina enigma adaptada do código sugerido no artigo Máquina Enigma e encriptação em XOR. Isso já afastaria 99,9% do problema, já que os dados estariam seguros contra um eventual bisbilhoteiro. Salvo se este bisbilhoteiro entendesse um pouquinho de criptoanalise, já que a quebra deste tipo de criptografia é muito conhecida, podendo ser feita em questão de pouco tempo.

Para guardar bem minhas senhas e outros arquivos que devam ficar muuuuito bem guardados e em segredo, procurei uma solução mais robusta, e encontrei o GnuPG. O GPG é uma implementação completa e livre do OpenPGP, usado para assinar e criptografar dados, através de um par de chaves assimétricas, uma publica, outra privada. Resumidamente, num algorítimo de criptografia assimétrica, os dados que forem cifrados com a chave publica só podem ser decifrados com a utilização da chave privada, e vice-versa. Possui algumas interfaces gráficas, como o Seahorse, disponível nos pacotes do Ubuntu, mas preferi utilizar a consola mesmo.

Depois de criar as chaves (sugiro a leitura deste artigo), a operação se resume a dois comandos:

Cifrar o arquivo a ser guardado:
$ gpg --encrypt --armor texto.txt
Uso a opção --armor para criar um arquivo em ASCII. No caso, gerou o arquivo criptografado texto.txt.asc. Por padrão, seria criado um arquivo binário, o que geraria, neste caso, o arquivo texto.txt.gpg.

Decifrar o arquivo:
$ gpg --decrypt texto.txt.asc
Neste caso, como eu não informei o arquivo de saída (opção --output), o arquivo mostrado é visualizado no próprio terminal.

F.M.

sábado, 4 de julho de 2009

Criando Mapas para o GPS da Garmin...

Como comentei no post Gerenciando dados de GPS com o Viking..., adquiri recentemente um navegador GPS modelo eTrex Legend da Garmin. Um dos problemas ao se adquirir este e boa parte dos navegadores existentes são seus mapas, já que muitas vezes mal tem o traçado correto das principais rodovias e vias das principais cidades do Brasil, quanto mais o traçado das estradas do interior de Rodeio Bonito e arredores. E, infelizmente, fazer mapas para estes navegadores não é algo muito simples, já que os fabricantes, via de regra, não auxiliam os usuários nisso (para entender um pouco os motivos e dificuldades, sugiro a leitura do artigo Criando Mapas de Fundo para GPS Garmin™, do criador do programa GPS TrackMaker).

No Brasil, um grupo de usuários, sabedores destas dificuldades, se uniu com o intuito de construir mapas para os GPS da Garmin, o Projeto TrackSource. O grupo esta ativo, produzindo bons mapas, e inicialmente pensei em contribuir com o projeto, coletando e desenvolvendo o mapa aqui da minha região. O único problema foi que os programas utilizados eram baseados no sistemas operacional das janelinhas, e a utilização destes através do Wine se mostrou instável e improdutiva. Procurando soluções, me deparei com o OpenStreetMap.

O OpenStreetMap é um projeto que tem por objetivo fornecer a todos mapas free as in speech, sendo um projeto colaborativo, em que qualquer pessoa pode auxiliar, seja coletando dados, seja editando os mapas. O upload dos dados coletados são realizados no formato gpx, que podem ser gerados no Viking, como mencionei no meu post anterior. E o projeto possui um editor online, o Potlatch, desenvolvido em Flash, que permite a edição de mapas em qualquer navegador (possui tambem o editor JOSM, presente nos pacotes do Ubuntu, que, confesso, não usei). Em questão de minutos/horas depois de cada edição, os dados são renderizados para que todos possam se beneficiar do projeto.


E o melhor de tudo, é que o projeto não para por aí. Um dos programas oriundos do projeto é o Mkgmap, presentes nos pacotes do Ubuntu, que é um programa em Java que converte os mapas OpenStreetMap para o formato utilizado nos GPS da Garmin, de forma bem simples. Basta exportar a área do mapa desejada no formato de dados XML OpenStreetMap (*.osm), através do sitio do projeto, e sobre o arquivo gerado, dar o comando mkgmap, por exemplo mkgmap mapa.osm, que o arquivo é gerado.


Agora só falta transferir o arquivo .img gerado para o navegador GPS. Para isso, usei o Sendmap, programa que tem uma versão free as in beer, do mesmo criador do programa cGPSmapper. Depois de baixar o programa e marcar como executável, é dar o comando, no meu caso foi sendmap17Lstatic /dev/ttyS0 -u 63240001.img, e sair por aí com o GPS.

F.M.

terça-feira, 16 de junho de 2009

Gerenciando dados de GPS com o Viking...

Uma das características do meu novo emprego é que em boa parte dos locais em que devo ir fica na área rural dos municípios, sendo que, por obvio, a (in)precisão do endereçamento envolvem alguns quilômetros de estrada de chão. Felizmente, em boa parte dos locais, tenho previamente a posição geográfica, o que me levou a adquirir um navegador GPS. Analisando praticidade, facilidade de uso e custo, escolhi o eTrex Legend da Garmin. O aparelho vem acompanhado de um cabo de interface, permitindo ser ligado a um computador utilizando uma porta serial, que eu previamente já sabia que poderia ser feito no Ubuntu.

Faltava escolher o programa. Testei alguns que estavam disponíveis pelo gerenciador de aplicativos, e acabei escolhendo o Viking. O Viking é um programa para gerenciar dados de GPS, que permite importar e traçar trilhas e waypoints. Para importar dados do eTrex é bem simples. Basta ir no menu File -> Acquire -> From GPS, que a janela de opções é aberta:
Basta dar OK, que a importação começa:

Eu tenho o costume de exportar cada nova trilha no formato GPX, que permite a utilização dos dados por outros programas, como por exemplo o Google Earth. Um detalhe importante é que a atual versão (0.9.8) não permite exportar individualmente cada trilha (como dito aqui). Para contornar isso, é preciso inicialmente criar um novo TrackWaypoint Layer (em Layers -> New TrackWaypoint Layer) e arrastar a nova trilha para lá, exportando este novo layer.

O programa tem outras ferramentas, e consegui construir mapas com diversos layers facilmente.


Uma característica interessante é que o programa permite gerar uma imagem do mapa (em File -> Generate Image File), tornando útil para diversos fins.


F.M.

terça-feira, 2 de junho de 2009

D-Link DWA-110 no Ubuntu...

Dei um tempo na minha relação com a Claro 3G. Quem já tenha lido o meu blog teve ter notado que o casamento com a Claro 3G não ia bem. Na verdade, nunca foi bem. Aproveitei que mudei de cidade e passei a residir em um hotel, pelo menos por um tempo, e que tem rede wireless, resolvi suspender o plano com a Claro e usar a rede disponível. Como eu não tinha nenhum adaptador de rede, tive que comprar um, que atendesse três requisitos:
1) teria que funcionar no Ubuntu 9.04 com nenhuma ou com fácil configuração;
2) facilmente encontrado (por causa da mudança, não tinha muito tempo para procurar);
3) barato, ao menos com custo semelhante a um mês de banda larga da Claro.

Consultei o oráculo, procurei aqui a ali, até que encontrei este tópico e resolvi testar. Comprei o D-Link DWA-110 e fiz minha mudança. Quando cheguei no hotel, pluguei o adaptador e liguei o PC. O Ubuntu reconheceu o adaptador e saiu funcionando.

Instalação??? Para que???

Não estava previsto que a rede do hotel estava protegida por criptografia WEP. Mas isso não foi nenhum problema.
Foi colocar a senha e pronto.


Tudo funcionando. Suspendi o plano da Claro 3G, comprei um adaptador e economizei R$ 0,99 no primeiro mês. Baita negócio.

F.M.

quinta-feira, 21 de maio de 2009

What??? Saraiva is Listed as Suspicious????





E agora, vou comprar aonde????

F.M.

P.S.: O Google Safe Browsing é uma extensão para o Firefox que alerta se uma página da web que você visita pede informações pessoais ou financeiras sob falsos pretextos, numa tradução rápida de http://www.google.com/tools/firefox/safebrowsing/.

terça-feira, 12 de maio de 2009

Estou Voltando II ...

Ok. Faz 261 dias que não escrevo, e essa é a segunda fez que digo que estou voltando. A desculpa é a mesma: problemas com meu casamento com a Claro 3G, outros projetos, preguiça. Prometo aos meus fieis leitores do meu blog (todos os dois !!!), tocar o projeto adiante, começando com uma rápida reatualização de tudo.

Meu relacionamento com a Claro 3G não mudou em nada. Não vejo a hora de pedir o divórcio. O que mudou um pouco é que, a partir da versão 8.10, o Ubuntu vem com suporte ao 3G, sem precisar maiores configuração. No caso, a única coisa ainda pode ficar pendente é o DNS. Há quem consiga resolver isso colocando no Automático (veja aqui). Eu prefiro, para garantir, continuar utilizando o OpenDNS.

De resto, comentando alguns posts na ordem das postagens no meu blog:

Horário de verão no Ubuntu...: Passado. Não é preciso fazer nada para que o Ubuntu, nas novas versões, funcione corretamento com o horário de verão.

Estou livre 151 dias....: Agora são 727 dias. Festinha de "2 Anos 100 % Livre" nos próximos dias.

Configuração do Gmail no Evolution...: As configurações são as mesmas. Atualmente, não uso mais o Evolution, estou somente nas nuvens já alguns meses.

Proteção de tela e papel de parede...: Isso continua, e a quantidade de paisagens aumenta a cada ano...

eMule sem nenhum servidor...: Meu mais famoso post, responsável por mais de 35% dos acessos ao meu blog. Agradeço as visitas, e espero que a informação esteja atualizada, por que eu não tenho a menor idéia. E essas visitas todas me faz pensar em terminar o super manual do eMule, que eu deixei em algum lugar....

Eu participei do Desafio Telefônica....: Não levei nada além da experiencia. A parte boa é que boa parte do material serviu de base para o meu estudo de caso, um do projetos que me manteve ocupado nos ultimos meses.

Problemas com PDF no Gutsy...: Aposentei o Gutsy a um bom tempo, e nunca mais tive o problema relatado.

Eu tó voltando....: E já tó indo de volta para algum lugar no interior. Em breve no blog.

Como não....: Agora não mais. Vendi o Jeep.

O Dia...: Trabalho da faculdade em UML??? Nunca mais.

Rã à milanesa...: Estava muito boa. Espero repetir um dia. Difícil é encontrar no mercado carne de rã.

O que não dizer no MSN...: Ainda aparece coisas inacreditáveis no meu MSN, impublicável até mesmo na série Flagras no MSN.

Começos....: Nem me fale de começos... Em breve.

Medo...: Um dias desse post mais algumas frases de minha autoria.

Faltam 29 dias (29???? não era para ser 90????)...: Bem, pelo menos mudanças totalmente fora de controle não é nenhuma novidade... Em breve.

Engenharia Reversa com o Wireshark...: Projeto do post sobre o Google Maps API arquivado.

Quero a Mi Torrico na Playboy....: Ela não chegou lá, mas quem sabe um dia. Participem da campanha http://michellitorricomusa.blogspot.com/.

Domínio Personalizado no Blogger...: Que eu saiba, as configurações continuam as mesmas.

Sem o Youtube e agora sem o youtube-dl???? e youtube-dl, pornotube-dl e metacafe-dl...: Bem, pelo menos isso não precisei mais usar. O velho esquema do cache do Firefox funciona.

Estou quase de volta, só mais um pouco...: Bem, foi a primeira vez. Mas não a última...

MV Maps...: Projeto aposentado.

Eu agora sou um Geek...: O Filipe Freitas continua agregado ao Planet Geek, prometo fazer jus ao voto de confiança.

MarquesBlog é página amiga do FISL...: E a partir de hoje, também página amiga do fisl 10.

Erro no OpenOffice...: Nunca mais tive este problema.

Gadgets no Orkut...: Agora largamente utilizados, virou mania no Orkut (BuddyPoke que o diga). o PhotoAttack é conhecido atualmente por PhotoBuzz.

Imposto de Renda no Ubuntu...: Esse ano também declarei meu IR. 100 % livre, 100 % fácil.

Erro no Mplayer...: A cada versão, o Ubuntu chega mais perto da perfeição. Minhas placas de vídeo e de captura estão se entendendo muito bem agora.

Mplayer e o XScreenSaver...: Sem problemas atualmente.

Medibuntu e os meus AMRs...: Nem me fale em AMR, o meu MP5 Made in China foi para o espaço...

Ferramenta certa, mas a hora...: Será útil, para fazer o backup no blog, a partir de agora.

Photofunia: и телефон?...: Volta e meia faço uma foto...


É isso por hoje,

F.M.