Введен формат 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-commit
» вC
).
Пожалуйста, изучите детали самостоятельно, я имею в виду только общую идею, и сейчас я не использую такую процедуру на практике.
Я думаю, что это очень интересная задача, которую должны выполнять обычные известные утилиты, я хотел бы услышать больше об успешных установках, чтобы сделать это, что другие люди придумали!
AFAIR Я выбрал offlineimap
для своей задачи резервное копирование учетной записи IMAP в Git. Кстати, вот ответ с примером конфигурации offlineimap
.