Любое файловое почтовое клиентское приложение? (С целью помещения почтового ящика под VCS.)

899
Xiè Jìléi

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

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

4
С базой данных, вероятно, будет гораздо проще манипулировать, чем с набором файлов, если у вас есть для этого инструменты. Я не знаю каких-либо подробностей, но держу пари, что многие почтовые клиенты с открытым исходным кодом просто используют sqlite. Вы пытались найти фактический файл данных Thunderbird и запрашивать его с помощью sqlite? jcrawfordor 12 лет назад 0
А? В последний раз, когда я пробовал ThunderBird, я определенно обнаружил, что каждое сообщение хранится в отдельном файле. На самом деле, многие почтовые клиенты, которые я пробовал, были такими, как Windows Mail (и WMLive). (Хотя это не означает, что они также не создали * кучу * других файлов и мусора.) Synetech 12 лет назад 0

2 ответа на вопрос

5
imz -- Ivan Zakharyaschev

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

Возможно, в результатах поиска Google есть интересные вещи, например, среди * [maildir git imapsync] (http://www.google.com/search?q=maildir+git+imapsync) *, например, [HGM - распределенные maildirs ] (http://www.hawaga.org.uk/ben/tech/hgm/). imz -- Ivan Zakharyaschev 12 лет назад 0
4
Randy Orrison

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

Похожие вопросы