lunes, 28 de marzo de 2011

Respaldar los correos de Gmail

Hace algunos días 150.000 cuentas de Gmail desaparecieron víctimas de un virus.

Dada la popularidad de Gmail y la cantidad de información sensible que normalmente conservamos en nuestra cuenta, se impone buscar algún método para respaldarla y así evitar males mayores.

Una opción parece ser Gmail Backup un programa multiplataforma cuya contra es que su última versión es de octubre de 2008 y, al parecer, el proyecto está abandonado.

La manera más rápida, y la que parece más recomendable (y que, además, ya probé que sí funciona), si se tiene instalado un cliente de correo POP (como Thunderbird o MS Outlook), es configurarlo para revisar desde allí la cuenta de Gmail. Y, entonces, copias de los mensajes se descargan al disco local.

Para la gran mayoría de los lectores, esta entrada puede terminar aquí.
Pero los más "aventureros" pueden seguir leyendo por una tercera opción -válida sólo para usuarios GNU/Linux (y brindada por Matt Cutts)- que cuenta de cuatro pasos:
  1. Instalar getmail4 (vía el Centro de Software puede ser una forma rápida, para los usuarios de Ubuntu).
  2. Configurar getmail y Gmail:
    • En la cuenta de Gmail hay que pinchar en el vínculo Configuración (arriba a la derecha), luego en Reenvío y correos POP/IMAP. En el apartado Descarga correo POP, hay que marcar, en la sección 1. Estado: el botón de opción Habilitar POP para todos los mensajes (incluso si ya se han descargado) y en la sección 2. Cuando se accede a los mensajes a través de POP: Conservar la copia de Gmail en Recibidos.
    Para almacenar los correos se utilizarán dos métodos: mbox (genera un solo archivo con todos los correos) y Maildir (genera un archivo por cada correo).

    Formato mbox
    • Cree un directorio llamado .getmail en su carpeta personal con el comando mkdir ~/.getmail.
    • Cree un directorio llamado gmail-archive con el comando mkdir ~/gmail-archive
    • Cree un archivo ~/.getmail/getmail.gmail con el siguiente contenido (sustituya por la dirección de correo y contraseña donde corresponda):
      [retriever]
      type = SimplePOP3SSLRetriever
      server = pop.gmail.com
      username = [aquí escriba su dirección de correo electrónio, del estilo jperez@gmail.com]
      password = [aquí escriba la contraseña]

      [destination]
      type = Mboxrd
      path = ~/gmail-archive/gmail-backup.mbox

      [options]
      # print messages about each action (verbose = 2)
      # Other options:
      # 0 prints only warnings and errors
      # 1 prints messages about retrieving and deleting messages only
      verbose = 2
      message_log = ~/.getmail/gmail.log
    • Ejecute el comando touch ~/gmail-archive/gmail-backup.mbox
      Este comando crea un archivo vacío al que getmail luego se puede adjuntar.

    Formato Maildir
    Para utilizar Maildir en lugar de mbox, igualmente hay que ejecutar mkdir ~/.getmail y mkdir ~/gmail-archive, pero, además, hay que crear 3 directorios más:
    • mkdir ~/gmail-archive/tmp
    • mkdir ~/gmail-archive/new
    • mkdir ~/gmail-archive/cur
    Además, la sección [destination] deberá decir: [destination] type = Maildir path = ~/gmail-archive/
    Para archivar sus correos en los dos formatos:
    Además de crear los directorios necearios para ambos formatos, deberá modificar la información de la sección [destination] de la siguiente manera:
    [destination]
          type = MultiDestination
          destinations = ('[mboxrd-destination]', '[maildir-destination]')
    
          [mboxrd-destination]
          type = Mboxrd
          path = ~/gmail-archive/gmail-backup.mbox
    
          [maildir-destination]
          type = Maildir
          path = ~/gmail-archive/


  3. Ejecute getmail escribiendo (sustituya "usuario" por su nombre de usuario) getmail -r /home/[usuario]/.getmail/getmail.gmail
    Si todo anda bien, verá algo como esto:

    getmail version 4.6.5
    Copyright (C) 1998-2006 Charles Cazabon. Licensed under the GNU GPL version 2.
    SimplePOP3SSLRetriever:bob@gmail.com@pop.gmail.com:995:
    msg 1/99 (7619 bytes) from  delivered to Mboxrd /home/usuario/gmail-archive/gmail-backup.mbox
    msg 2/99 (6634 bytes) from  delivered to Mboxrd /home/usuario/gmail-archive/gmail-backup.mbox
    …
    99 messages retrieved, 0 skipped
    Summary:
    Retrieved 99 messages from SimplePOP3SSLRetriever:bob@gmail.com@pop.gmail.com:995

    ¡Funciona! Pero tenga presente que  Gmail permite descargar algunos cientos de correos por vez. Así que deberá repetir el comando cada vez que getmail termine su trabajo hasta que haya descargado todos los mensajes.


  4. Para tener respaldos periódicos y automáticos (y, de paso, evitarse tener que repetir el comando del paso 3 si hay muchísimos correos que respaldar) se puede escribir un archivo con el nombre /home/[usuario]/fetch-email.sh que contenga el siguiente texto:

    #!/bin/bash
    # Note: -q means fetch quietly so that this program is silent
    /usr/bin/getmail -q -r /home/[usuario]/.getmail/getmail.gmail

    Asegúrese que el archivo tenga permisos de lectura y ejecución (con el comando chmod u+rx /home/[usuario]/fetch-email.sh
    Para asegurarse que funciona, ejecute el comando /home/[usuario]/fetch-email.sh. El programita debería ejecutarse sin generar salida alguna, pero, si hay correos nuevos en su cuenta, los descargará.
    Finalmente, escriba el comando crontab -e y agregue la siguiente entrada:

    # Every 10 minutes (at 7 minutes past the hour), fetch my email
    7 * * * * /home/[usuario]/fetch-email.sh

    Esta entrada le dice a cron que ejecute el script una vez por hora (a los 7 minutos de pasada la hora en punto).
    Está listo. Ya están los correos respaldados, e incluso, se puede revisar el correo sin conexión.

(Visto en despuesdeg.com, referenciado por Ubuntu Life).

En mi caso particular, comencé a usar Gmail en setiembre de 2006 y, al momento de escribir estas líneas, tenía 3964 conversaciones en "Recibidos", 3179 en "Enviados" y 78 en "Borradores".
Seguí los pasos 1 a 3 indicados en esta entrada para respaldar los mensajes en los dos formatos. La primera vez que ejecuté el comando getmail -r /home/[usuario]/.getmail/getmail.gmail empezó a descargar los primeros 441 mensajes, de los cuales, uno solo dio mensaje de error (que además, fue el único de todo el proceso que dio error). Esta primera descarga demoró varios minutos.
Al terminar tenía en el directorio gmail-archive un archivo gmail-backup.mbox de 157,2 Mb. Y el subdirectorio new contenía 440 elementos.
Volví a ejecutar el comando y descargó otros 491 mensajes, el archivo de respaldo único creció hasta los 381,9 Mb y en el directorio new ahora habían 931 elementos.
Repetí el procedimiento 19 veces más (a lo largo de varios días), hasta completar el respaldo: el archivo quedó de 4,9 Gb y el directorio new quedó con 10933 archivos (uno por cada mensaje respaldado).

A continuación, con el K3b, guardé toda la información del directorio gmail-archive en DVD y borré los respaldos del disco duro.
Para recuperarlos, y por las someras pruebas que hice, los mensajes guardados con el formato maildir se pueden levantar desde Thunderbird, el problema es que no veo cómo saber de qué mensaje se trata hasta después de abrirlo. Lo que lo vuelve inviable. Sin embargo, el archivo de respaldo en formato mbox, lo pude abrir, luego de un largo rato importándolo, con Evolution. Y la recuperación del respaldo fue correcta y pude navegar entre los mensajes sin problemas.

Por último y antes de proceder con el paso 4, fui a mi cuenta de Gmail y volví a la configuración y allí a Reenvío y correos POP/IMAP. En el apartado Descarga correo POP, ahora marqué, en la sección 1. Estado: el botón de opción Habilitar POP para los mensajes que se reciban a partir de ahora.

Luego, para ver si funcionaba, primero ejecuté nuevamente el comando touch ~/gmail-archive/gmail-backup.mbox, para generar de nuevo ese archivo (ya que previamente lo había borrado) y luego ejecuté nuevamente getmail -r /home/[usuario]/.getmail/getmail.gmail, esperando que no hiciera nada por la opción que recién le había marcado en la configuración del Gmail. Y, al parecer, funcionó.

Entonces sí realicé los pasos sugeridos en el punto 4 y quedó listo el respaldo automático de mi cuenta de Gmail.

3 comentarios:

  1. Hola!

    Buena guia, enhorabuena pero tengo el problema de no saber donde se han descargado! me sale 12 message retrieved pero no los veo por ningun lado... podrias decirme como verlo? o saber donde estan? Salu2

    ResponderBorrar
    Respuestas
    1. Hola Anónimo.
      Hace mucho que no uso estos procedimientos (esta entrada tiene más de 10 años) pero tengo entendido
      que debería seguir funcionando.
      Por lo que veo de las pruebas que hice en aquel entonces, los mensajes se guardan en un único archivo
      gmail-bacup.mbox ubicado en ~/gmail-archive/gmail-backup.mbox y, para verlos, debería importar ese
      archivo .mbox desde un cliente de correo electrónico (como Thunderbird o similar)

      Borrar
    2. Muchisimas gracias por tu contestacion, Un saludo

      Borrar

Lo que escriba a continuación será revisado antes de publicarse.
Gracias por tus comentarios.