суббота, 24 июля 2010 г.

Создание локальной резервной копии Gmail с помощью getmail

Перевод. Оригинал здесь.

К досаде конкурентов GoogleMail сегодня является практически синонимом электронной почты, так же как поисковый движок Google стал уже нарицательным обозначением поиска в интернете. Gmail — полезная штука и имеет множество преимуществ над традиционной клиент-серверной моделью электронной почты, особенно если вы часто путешествуете. По правде говоря эти премущества присущи любой системе электронной почты, работающей через браузер, и мы здесь говорим о Gmail только потому, что она наиболее популярна. Однако она имеет и один, но существенный недостаток — все ваши сообщения хранятся на серверах Google. Если вы по каким-либо причинам потеряете доступ к своему аккаунту, то лишитесь всей почты. Предотвратить такой печальный исход нам поможет getmail.
Getmail — это утилита командной строки для получения почты с удаленных серверов и сохранения ее на локальном компьютере. Почта может сохраняться в виде файла mbox или директории Maildir. Лично я предпочитаю последний, так как в этом случае почта не хранится в одном файле, постоянно растущим со временем.

Установка

Честно говоря сам не знаю, зачем я еще вставляю этот раздел в свои статьи. Установка ПО в современных системах GNU/Linux настолько проста, что для этого не нужно никаких подсказок. Просто найдите getmail в своем штатном менеджере пакетов и установите. Вы можете также скачать исходный код с домашней страницы и собрать пакет самостоятельно. Я просто установил его с помощью apt-get из командной строки. Getmail имеет несколько зависимостей, среди которых python script, так что должен быть установлен и Python.

Настройка GoogleMail

Для того, чтобы получить почту с Gmail, нужно разрешить доступ к почте извне. Getmail поддерживает аккаунты типа POP3, POP3-over-SSL, IMAP4, IMAP4-over-SSL и SDPS. Для скачивания почты я собираюсь использовать POP3, но GoogleMail, как известно, поддерживает IMAP.
Во-первых, войдите в свой аккаунт Gmail и перейдите в раздел «настройки». Выберите вкладку «Пересылка и POP/IMAP». В секции «Доступ по протоколу POP» задайте «Включить POP для всех писем». Позже вы сможете вернуть значение «Включить POP для писем, полученных с этого момента», но сейчас нам нужно сделать копию всех писем. После этого выберите нужную вам опцию для «Когда письма загружаются с помощью POP». Я например задал «сохранить копию письма во входящих Gmail». Сохраните изменения.

Настройка getmail

Можно использовать getmail для получения почты с GoogleMail, просто вводя параметры в командной строке, однако я думаю, вы захотите время от времени повторять эту процедуру, так что лучше настроить все в конфигурационном файле getmail. Если вы не укажете полный путь к конфигу, getmail будет искать его в директории, заданной по умолчанию. В большинстве систем это будет .getmail в домашней директории пользователя. Конечно, вы можете поместить этот файл где хотите. Главное, чтобы пользователь, под которым вы запускаете getmail, имел права чтения на этот файл. Если не указать путь к конфигу, по умолчанию будет использоваться ~/.getmail/getmailrc. Для простоты мы будем использовать значения по умолчанию, однако если у вас несколько аккаунтов, вы можете создать отдельный конфиг для каждого и при запуске указывать, который вам нужен:

getmail -r <путь к файлу>

Ну а теперь создадим файл ~/.getmail/getmailrc и введем в него свои данные. Здесь YourGoogleMailAddress — ваш адрес электронной почты на Gmail:

[retriever]
type = SimplePOP3SSLRetriever
server = pop.gmail.com
username = YourGoogleMailAddress

[destination]
type = Maildir
path = ~/gmailBackup/

[options]
verbose = 1
message_log = ~/.getmail/gmail.log

Строка message log необязательна, но полезна для контроля работы getmail. Некоторые другие опции заслуживают того, чтобы поговорить о них. Type может быть задано как Maildir или mbox, в зависимости от того, что вы предпочитаете. В качестве пути (path) может быть задана любая директория, для которой у пользователя, запускающего getmail, есть права записи. Строка verbose определяет сколько информации будет выводиться на консоль при работе getmail. При значении 1 будут выводиться скачиваемые сообщения, при 0 — только предупреждения и ошибки, а при 2 будет выводиться очень много информации. В данном случае единица — золотая середина.

Запуск

После создания конфигурационного файла можно запускать getmail. Откройте терминал, введите getmail и нажмите Enter. Если вы назвали свой конфиг по другому, необходимо указать имя файла в качестве ключа в командной строке:

getmail -r filename

если файл расположен в другой директории, необходимо указывать полный путь к нему:

getmail -r /path/to/your/config/file

После запуска getmail запросит ваш пароль от аккаунта Gmail. Если вам не хочется каждый раз вводить пароль вручную, можете внести его в секцию retriever конфигурационного файла. Ниже строки username вставьте:

password = YourGoogleMailPassword

Лично я к таким вещам отношусь негативно, так как каждый, имеющий доступ к моему ноутбуку, может получить доступ к почтовому аккаунту, но если вы собираетесь запускать getmail как задание для cron, то пароль необходимо будет задать в файле.
При каждом запучске getmail он будет скачивать новые письма, полученные после его последнего запуска. Для того, чтобы читать сохраненную почту на локальном компьютере, можно использовать любой почтовый клиент. Я предпочитаю mutt, так как он обеспечивает простой и быстрый доступ к резервной копии и не требует предварительной настройки аккаунтов, как большинство графических почтовых клиентов.

Автоматизация

Если вы достаточно интенсивно пользуетесь почтой Gmail, вероятно вы захотите выполнять резервное копирование регулярно. Конечно можно делать это и вручную, но лучше использовать cron для автоматизации резервного копирования. Наберите в терминале crontab -e и файл cron откроется в текстовом редакторе. Теперь можно добавить команды для запуска заданий в определенное время. Перейдите в конец файла и добавьте следующую строку:

10 10 * * 1-5 /usr/bin/getmail -r /full/path/to/your/config_file >/dev/null

Формат команд cron: минуты час день_месяца день_недели команда.

В данном случае команда будет запускаться в 10:10 каждый рабочий день недели каждого месяца. Обратите внимание, что необходимо указывать полный путь к любому конфигурационному файлу, который вы используете. Сокращения типа «~» работают не всегда. Конечно при использовании файла по умолчанию, его можно вообще не указывать. Запись > /dev/null в конце строки означает, что любой вывод команды аннулируется, иначе система будет каждый раз отправлять на ваш e-mail список загруженной почты. Ошибки при запуске команды (например, если вы неправильно введете команду) будут отправляться вам. Если вы хотите отключить отправку ошибок, замените > /dev/null на 1&2> /dev/null.

Замечания и предостережения

- предоставление доступа по протоколу POP к аккаунту Gmail может снизить уровень его безопасности. Если вы хотите избежать этого, необходимо вручную возвращать все настройки аккаунта в исходное положение после окончания резервного копирования.
- Getmail можно использовать с любым удаленным почтовым аккаунтом, который поддерживает стандартные протоколы. Это значит, что вы можете делать резервные копии аккаунтов и в других постовых службах, но не могу гарантировать, что это будет работать, так как сам не пробовал.
- Я не могу отвечать за сохранность вашей электронной почты, поэтому если вы последуете советам, приведенным в данной статье, и что-то пойдет не так, я снимаю с себя ответственность за какие-либо последствия. Все, что описано в данной статье, вы делаете на свой страх и риск.

1 комментарий:

  1. А как сделать резервную копию папки Отправленные. Насколько я понимаю через POP сохраняются только входящие письма?

    ОтветитьУдалить