Введен формат 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
.