Kopia zapasowa listów z Gmail`a

Uwaga: Ten wpis został utworzony ponad rok temu. Informacje w nim zawarte mogą być nieaktualne!

Należę do grona osób, które korzystają z usług Google, m.in. poczty Gmail, jak pewnie wielu użytkowników Ubuntu. Z racji ‚mobilności’ skrzynki, nie używam żadnych programów do obsługi konta pocztowego, a tym samym nie ściągam i nie przechowuję maili lokalnie na swojej maszynie. W pracy zajmuję się m. in. kopiami więc pomyślałem, że trzeba by się zająć również własnymi danymi, więc na pierwszy ogień poszła właśnie poczta Gmail. Maili mi się nazbierało sporo, gdyż nie kasuję permanentnie nic, oprócz spamu. Po przeczesaniu sieci, natknąłem się na ciekawy projekt, z którego korzystam i postaram się przybliżyć.

Gmail Backup, bo o nim mowa, jest dosyć ciekawym zestawem skryptów napisanych w Pythonie. Niestety, obecna wersja dostępna w Ubuntu (2.6) nie da sobie rady z dostępną oficjalnie wersją GB (pisany pod Python 2.5), więc skorzystamy z repozytorium SVN:

svn checkout http://gmail-backup-com.googlecode.com/svn/trunk/ gmail-backup

Należy pamiętać, że przed odpaleniem skryptu należy włączyć protokół IMAP w ustawieniach naszego konta Gmail. Następnie przechodzimy do katalogu gmail-backup i wydajemy polecenie:

python2.6 gmail-backup.py backup [katalog] [user]@gmail.com '[hasło]'

Oczywiście podajemy parametry naszego konta. Maile zostaną ściągnięte w formacie .eml i podzielone na lata i miesiące wysłania. Dodatkowo zostaną utworzone 3 pliki:

  • ids.txt – zawiera identyfikator dla każdego maila,
  • labels.txt – lista maili z przydzielonymi etykietami,
  • stamp – data pobrania wiadomości.

Możemy wykonać kopię w oparciu o ramy czasowe. W tym celu PO haśle wpisujemy datę startową i datę końcową w formacie YYYYMMDD (np. 20110307), wtedy zostaną pobrane tylko maile wysłane w tym czasie. Można pominąć drugą datę, wtedy pobrane zostaną maile od podanej daty do teraz, np.:

python2.6 gmail-backup.py backup [katalog] [user]@gmail.com '[hasło]' 20100101 20100401

Aby dokonać odtworzenia (wysłać maile z katalogu z powrotem na serwer Gmail`a) w poleceniu należy użyć ‚restore’ zamiast ‚backup’.

python2.6 gmail-backup.py restore [katalog] [user]@gmail.com '[hasło]'

Dodatkową opcją jest czyszczenie konta Gmail przez użycie opcji ‚clear’ zamiast ‚backup’, co spowoduje usunięcie wszystkich wiadomości ze skrzynki.

python2.6 gmail-backup.py clear [katalog] [user]@gmail.com '[hasło]'

Dosyć pomocną opcją skryptu jest backup maili od ostatniej wykonanej kopii, w tej sytuacji skrypt korzysta z utworzonego pliku ‚stamp’ i pobiera tylko maile wysłane po dacie zamieszczonej w pliku. Aby skorzystać z tej opcji należy uruchomić skrypt z dodatkowym parametrem ‚–stamp’ wpisanym po haśle.

python2.6 gmail-backup.py backup [katalog] [user]@gmail.com '[hasło]' --stamp

Jeśli chodzi o bezpieczeństwo zaprezentowanego skryptu to przeglądając kod nie znalazłem niczego dziwnego, więc nie należy się obawiać kradzieży hasła, jednak używacie go na własną odpowiedzialność :]

Jeżeli powyższy artykuł nie rozwiązał lub rozwiązał częściowo Twój problem, dodaj swój komentarz opisujący, w którym miejscu napotkałeś trudności.
Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.
  • danpre

    A nie lepiej po prostu użyć Thunderbirda przez imap? (i odpalać go raz na jakiś czas)

    Z dodatkiem zindus nie tylko pozwala na archiwizację poczty ale również na archiwizację kontaktów.

  • http://mahjong.info.pl/ marmez

    @danpre: Thunderbird przez Imap pobiera *wszystkie* wiadomości z konta? a nie tylko ileś tam najnowszych? Pytam bo nie wiem, w sumie nie używam.

    Można jeszcze wspomnieć, że jak ktoś używa dwustopniowej weryfikacji, to do takiego zalogowania musi sobie wygererować hasło. No ale ci, którzy używają to chyba to wiedzą ;)

    Na razie odpaliłem i zastanawiam się czym wygodnie przeglądać .eml’e pod Ubuntu :( (tak w razie czego) że o wyszukiwaniu w nich nie wspomnę, tzn. wiem, ze to pliki tekstowe i „tylko” treść z załącznikami jest kodowana w cośtam64 ale właśnie, treść… ;) na razie dowiedziałem się o sposobie rpzed dodawanie pliku jako załącznika w Evolution i funkcji munpack, która wyciąga zakodowane w base64 pliki, ale mi się ani jedno, ani drugie nie podoba :(

    Może faktycznie Thunderbird sensowniejszy [choć mam do niego awersję, wolałem zawsze TheBat!a, no ale to na windę :( ]

    • danpre

      @marmez

      Thunderbird pobiera wszystkie wiadomości (oczywiście możesz sobie ustawić czy ma pobierać tylko nagłówki czy wszystko)

  • woseba

    no faktycznie, przeglądanie tych eml`i jest troszkę kłopotliwe, no ale skrypt ma za zadanie jedynie zrobić kopię, przeglądać można już na koncie. A co do tego, że można to zrobić Thunderbirdem czy innym tego typu [badziewiem] to się zgodzę, tylko po co kombajn do ogródka? :D