4

Как и Subversion, который имеет два внутренних типа: на основе BDB и на основе файлов. Большинство почтовых приложений, которые я видел, используют серверную часть базы данных, но конечным пользователем манипулировать базой данных не так удобно.

В настоящее время я использую Thunderbird, который также использует базу данных в качестве back-end. Я запускаю Thunderbird на четырех машинах, поэтому есть 4 отдельные базы данных. И у меня много почтовых аккаунтов, может быть, 20 и более. (Нет, пожалуйста, не говорите мне пересылку почты.) Итак, если серверная часть основана на файлах, я могу просто настроить Git-репозиторий и синхронизировать их все. Но Thunderbird имеет свой внутренний формат базы данных, поэтому управлять этими отдельными базами данных очень неудобно.

2 ответа2

5

Введен формат Maildir для хранения почты, который точно выполняет то, что вы описываете: одно сообщение хранится в одном отдельном файле.

И есть драйверы (бэкэнды) Maildir для некоторых почтовых клиентов, а также некоторые агенты доставки почты и некоторые службы доступа к почте (IMAP или POP или веб-интерфейс).

Конечно, если ваша почта хранится в Maildirs, проще всего поместить ее под обычный контроль версий.

Таким образом, вы можете искать бэкэнды Maildir для почтовых клиентов.

Но, на самом деле, синхронизация вашего почтового хранилища может быть немного сложнее, чем синхронизация каталогов файлов - из-за различных флагов (новых, прочитанных), меток, перемещений или копий сообщений между папками и - самой сложной части - внутренние идентификаторы сообщений, используемые серверами доступа к почте (IMAP) или почтовыми клиентами. О чем эти идентификаторы? Что ж, важно сохранить идентификаторы между несколькими копиями вашего почтового хранилища, чтобы, например, процедура кэширования вашего почтового клиента работала правильно.

Я изучил эту проблему и записал здесь несколько заметок: исследование, как сделать резервную копию учетной записи IMAP. (Но тогда мне не нужно было завершать эту задачу, поэтому заметки и мое практическое решение не были завершены.)

Общая идея, к которой я пришел, заключается в том, что использование почтового клиента и простое помещение Maildirs под контроль версий не дает вам всего, что вам может понадобиться при управлении версиями вашего почтового хранилища. Лучше объединить его с реальными серверами IMAP (удаленными или локальными) для единообразного доступа к почте и со специальными инструментами, которые работают поверх IMAP для синхронизации различных копий / репозиториев / веток вашего почтового хранилища (специальные инструменты позаботьтесь о флагах, метках, идентификаторах правильно). Обычный контроль версий подходит для проверки ревизий и возврата к предыдущей ревизии, но для объединения ветвей (= синхронизация) я бы рассмотрел более сложную процедуру:

Вы хотите объединить ветви A и B

  • Таким образом, вы готовите новое состояние (ревизию) C которое будет содержать объединенное состояние, путем копирования одного из них, например, копирования A в новый C
  • Затем вы используете инструмент (например, "imapsync"; выберите тот, который соответствует вашим потребностям; я перечислил несколько таких инструментов в своих заметках), чтобы перенести новые изменения с B на C: imapsync B на C

(это может предполагать, что вы обращаетесь к хранилищу почты через IMAP через сервер)

  • Теперь зафиксируйте C (как результат слияния A и B ; до этого вы могли бы использовать соответствующую команду в вашей VCS для записи информации, которая является результатом слияния B с A , например, что-то вроде « git merge B -s ours --no-commitC).

Пожалуйста, изучите детали самостоятельно, я имею в виду только общую идею, и сейчас я не использую такую процедуру на практике.

Я думаю, что это очень интересная задача, которую должны выполнять обычные известные утилиты, я хотел бы услышать больше об успешных настройках, чтобы сделать это, что другие люди придумали!


AFAIR Я выбрал offlineimap для своей задачи резервного копирования учетной записи IMAP в Git. Кстати, вот ответ с примером конфигурации offlineimap .

4

Лучший ответ - использовать сервер, предназначенный для обмена электронной почтой между клиентами, - сервер IMAP. Почти любой почтовый клиент сможет получить доступ к электронной почте на этом сервере. Вы можете настроить свой собственный, в Ubuntu, или использовать Gmail, или, если вы используете провайдера для своей электронной почты, этот провайдер, вероятно, разрешит IMAP доступ к вашей электронной почте там.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .