1

Несколько размышлений на эту тему можно найти в Интернете. Никто (это легко найти) отвечает на вопрос, особенно для тех, кто не знаком с обоими форматами в деталях.

Соответствующая статья о вики Mozilla отмечает в первом абзаце: «Реализация maildir в Thunderbird позволяет использовать одно уникальное имя файла в письме (EML). ОДНАКО, обратите внимание, что это НЕ полный maildir в том смысле, что большинство людей, особенно пользователи linux или почтовые администраторы, знают как maildir ». Итак, предположительно, фондовый конвертер Thunderbird не предлагает правильного решения.

Dovecot рекомендует dsync но он предположительно разработан специально для dovecot. Я хочу прекратить использование Thunderbird, но я не собираюсь сейчас использовать Dovecot, в его вики упоминается «Maildir ++». Dovecot также рекомендует (там же) mb2md.pl с некоторыми собственными патчами Dovecot. Похоже, что mb2md рекомендуется в целом.

Однако есть две реализации mb2md: скрипт sh+Python и скрипт Perl. Первая - это оригинальная реализация, и на ее странице в буквальном смысле говорится следующее о версии Perl: «если вы столкнетесь с этой [кажущейся абсурдно тривиальной, связанной с окружающей средой] проблемой с моим сценарием, попробуйте его [реализацию Perl]», и ничего больше. Не ясно, работают ли эти два сценария одинаково или даже поддерживают один и тот же синтаксис. (Краткая проверка показывает, что это не так; зачем тогда использовать то же имя?) Версия Python, как сообщается, выпущена в 2006 году, и на сегодняшний день ей уже более 10 лет. Бывает и так, что используемый мной дистрибутив (Gentoo), похоже, не имеет mb2md в своем репозитории. Я мог бы установить Dovecot и использовать его конвертер, но это не так.

Хотя этот вопрос может быть тривиальным (mbox - это не что иное, как конкатенация строк eml, верно?), Все вышеперечисленное вызывает тревогу: для более чем 10-летнего формата (Maildir), который широко считается превосходящим mbox, очевидно, не существует стандарта механизм миграции. Я не хочу конвертировать вслепую, только чтобы потом узнать, что некоторые данные были потеряны, как предупреждает страница mb2md , или что я не могу добавить больше сообщений в новое хранилище Maildir без потери согласованности, как упоминалось на странице руководства mbsync. (поиск по фразе «родная схема быстрее»).

Для записи я собираюсь использовать mbsync с новым хранилищем Maildir. Надеюсь, ответ не будет зависеть от этого.

  1. Будет ли 10-летний преобразователь sh+Python mb2md работать с современными mboxen так же хорошо, как с 2006?
  2. Каталог Thunderbird содержит подкаталоги Mail , ImapMail , News и Feeds , которые, в свою очередь, содержат другие файлы. Являются ли файлы INBOX единственными файлами mbox, или я могу пропустить некоторые другие?
  3. Должен ли я конвертировать каждый файл mbox с помощью mb2md отдельно и нужно ли каким-то образом вручную подключать или группировать их в хранилище Maildir?
  4. В прошлом Thunderbird предлагал «сжатие» папок, что бы это ни значило, и пользователь сказал «да». Влияет ли это на процесс конвертации?
  5. Что следует учитывать при выборе между различными версиями mb2md ? Для полноты предположим, что теги, шифрование PGP и подписи в различных формах широко использовались в Thunderbird.

3 ответа3

1

Для пользователей Thunderbird версия 60 принесла экспериментальную двунаправленную версию mbox для поддержки конвертации в Maildir. Смотри метатик для открытых вопросов. Лично я могу порекомендовать метод dovecot dsync.

Недавно конвертировав большие папки Thunderbird mbox в Maildir и оценив упомянутые вами ссылки, я не могу порекомендовать ни один из вспомогательных сценариев. Был пропущен скрипт «От:», разделенный на один, и количество сообщений до и после миграции не совпадало, другие проблемы были с кодировкой текста или отметками времени с другими скриптами преобразования, найденными на github.

Вместо этого dsync дал быстрые (1-2 минуты на сообщениях 25k) и стабильные результаты, см. Упомянутую вами страницу Wiki миграции /MailFormat : dsync -Dv mirror mbox:~/.thunderbird/<profile/popMail/Account>:INBOX=Inbox . Как уже отмечалось, предварительно mail_location=maildir:~/Maildir . Начните с пустой папки, а затем сделайте ее папкой учетной записи для Thunderbird с включенной поддержкой Maildir с некоторой ручной очисткой. {cur, new, tmp} в basedir должен переместиться в "Входящие", и префикс папки .dot может быть удален. Наличие второго профиля с поддержкой Maildir даст указания, что ожидает Thunderbird.

0

Ответ от wbob полезен и подробен. Тем не менее, я использовал другое решение, прежде чем wbob предложил преобразование dovecot. Кроме того, я получил не очень много места для хранения. Я должен принять свой собственный ответ, потому что это то, что привыкло в конце концов.

Я использовал простой скрипт Python, использующий библиотеку mailbox . (Благодаря notmuch каналов IRC на freenode.)

#!/usr/bin/python3
import mailbox
import sys
import os
mbox_filename = sys.argv[1]
maildir_root_dir_name = sys.argv[2]
mbox = mailbox.mbox(mbox_filename, create=False)
mailbox_name = os.path.basename(mbox_filename)
maildir_dir_name = "/".join((maildir_root_dir_name, mailbox_name))
os.mkdir(maildir_dir_name, mode=0o750)
mdir = mailbox.Maildir(maildir_dir_name, create=True)
os.mkdir("/".join((maildir_dir_name, "cur")), mode=0o750)
os.mkdir("/".join((maildir_dir_name, "new")), mode=0o750)
os.mkdir("/".join((maildir_dir_name, "tmp")), mode=0o750)
count = 0
for x in mbox:
    print(x.get_from())
    count += 1
    if count % 1000 == 0:
        print(count)
    mdir.add(x)

Некоторые сообщения были сломаны; сценарий остановился с ошибкой и номером строки, поэтому мне пришлось использовать emacs (я полагаю, с vlf для открытия больших файлов), чтобы исправить проблемные сообщения в файле mbox.

Вопрос заслуживает более подробного ответа, так как для большинства пользователей довольно сложно выполнить задачу. Надеюсь, я буду расширять это в будущем.

0

Хотя это вопрос программирования, практическим ответом для получения данных, экспортируемых из Thunderbird, является использование альтернативного аддона «альтернативный импорт / экспорт», и вы можете экспортировать в формат eml среди других

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .