Конвертация массовой папки Thunderbird в Gnus nnfolder
Я размышляю над идеей импортировать несколько тысяч папок Thunderbird, каждая из которых, конечно же, содержит много электронных писем, в виде набора почтовых групп Emacs Gnus. Имя каждой почтовой группы будет получено из иерархии папок. Из-за количества работа будет довольно утомительной, поэтому я бы автоматизировал этот масштабный импорт, если это возможно.
Среди доступных бэкэндов nnfolder кажется наиболее перспективным в этом случае. Я предполагаю, что было бы лучше заполнить почтовые группы из Gnus. В противном случае мне нужно было бы полностью понять формат nnfolder, и это может потребовать много итераций, прежде чем я действительно пойму это правильно. Более того, поскольку электронная почта продолжает поступать, итерации могут стать сложными для правильной организации без потери чего-либо.
Я предполагаю, что мне нужно переупорядочить все, при условии, что выбранная почтовая группа является функцией источника Thunderbird, переопределяя стандартный механизм выбора Gnus. В прошлом я занимался кодированием Gnus, но, поскольку я не трогал Emacs в течение десятка лет, все это очень ржаво. Я немного растерялся из-за того, как подойти к этой задаче максимально эффективно и быстро. Итак, мой вопрос: как бы вы справились с этим? Или есть какой-то умный скрытый угол Гнуса, который я должен исследовать более глубоко?:-)
Франсуа
PS После того, как я написал этот вопрос, я обнаружил, что у Gnus есть хорошая, помогающая функция в достижении этой цели. Идея состоит в том, чтобы сначала скопировать все файлы папки Thunderbird в пределах ~/Mail
каталог, так как они для содержания, но правильно переименованы. Как только это будет сделано, M-x nnfolder-generate-active-file
делает сразу, для каждой скопированной папки, редактирует содержимое, оставляет ~
резервное копирование, генерировать данные NOV, создать одну почтовую группу и, конечно же, настроить ~/Mail/active
файл.
Чтобы скопировать папки под ~/.thunderbird/LOGIN/Mail/Local Folders/
каталог, я написал небольшой скрипт Python. Игнорирует все .msf
файлы и рекурсировать в .sbd
каталоги. Путь к папке, относительно Local Folders/
, имеет все свои .sbd/
строки превращаются в точки для получения имени почтовой группы, а также в нижнем регистре, превращения пробелов и подчеркиваний в тире и соответствующей обработки других специальных символов. В частности, символы не ASCII не обрабатываются должным образом, nnfolder вводит в заблуждение UTF-8 и ISO-8859-1 здесь и там. Скрипт также должен пропустить msgfilterrules.dat
и вероятно drafts
, junk
и такие вещи.
Я заметил две детали, требующие внимания:
- Сам Thunderbird можно использовать для сжатия папок перед их копированием, в противном случае можно неохотно восстанавливать уже удаленные сообщения.
(setq nnmail-use-long-file-names t)
нужен в~/.emacs
до всей операции.
Пакетное преобразование прервано, сказав, что не может расшифровать одно из сообщений. Я удалил папку с ошибками, а затем продолжительная операция прошла успешно.