Конвертация массовой папки Thunderbird в Gnus nnfolder - PullRequest
2 голосов
/ 23 ноября 2011

Я размышляю над идеей импортировать несколько тысяч папок Thunderbird, каждая из которых, конечно же, содержит много электронных писем, в виде набора почтовых групп Emacs Gnus.Каждое имя почтовой группы будет получено из иерархии папок.Из-за количества работа будет довольно утомительной, поэтому я бы по возможности автоматизировал этот масштабный импорт.

Среди доступных бэкэндов nnfolder кажется наиболее перспективным в этом случае.Я предполагаю, что было бы лучше заполнить почтовые группы из Gnus.В противном случае мне нужно было бы полностью понять формат nnfolder , и это может потребовать много итераций, прежде чем я действительно пойму это правильно.Более того, поскольку электронная почта продолжает поступать, итерации могут стать сложными для правильной организации без потери чего-либо.

Я полагаю, что мне нужно respool всего, при условии, что выбранная почтовая группа является функциейпроисхождения 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 до выполнения всей операции.

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

...