Работаю над скриптом миграции с mailman2 на Discourse

Здравствуйте,

Сегодня я приступаю к написанию скрипта на Python для миграции рассылки Mailman 2 (архивы и файл config.pck), используя только API Discourse. Если кому-то это интересно, процесс можно отследить здесь, и я буду обновлять эту тему по мере продвижения работы.

Любые комментарии о том, что кому-то нужно, или предложения о том, как сделать это лучше, безусловно, приветствуются :slight_smile:

Всего наилучшего

digest_members : отклонено. Невозможно запросить режим дайджеста для отдельной категории.

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

Первая версия скрипта была опубликована по адресу Client Challenge. Он работает у меня, надеюсь, он также поможет другим. Если нет — дайте знать, и я постараюсь адаптировать скрипт.

Как это работает со списками, где from_is_list установлено в значение «Модифицировать поле From» или «Обернуть сообщение» (или используются эквивалентные настройки, касающиеся только DMARC)? Может ли система определить, какой пользователь отправил такие сообщения?

Это не так, я посмотрю, что для этого потребуется.

Спасибо. Если это поможет, адрес электронной почты оригинального отправителя часто (всегда?) появляется в заголовке «Cc:» письма, по крайней мере, когда параметр from_is_list установлен в Munge From.

from_is_list

from_is_list

  • Это относится ко всем сообщениям, отправленным списком рассылки, кроме дайджестов. Для настроек, которые применяются только к сообщениям, чей домен в поле From: публикует политику DMARC с параметрами p=reject или p=quarantine, см. описание dmarc_moderation_action в разделе Фильтры отправителей.

Если установлено значение Munge From, адрес в заголовке From: заменяется на адрес публикации списка рассылки для смягчения проблем, вызванных политикой DMARC или аналогичными политиками исходного домена в поле From:, а исходный адрес From: помещается в заголовок Reply-To:.

Если установлено значение Wrap Message, исходное сообщение оборачивается как MIME-часть внешнего сообщения с заголовками From: и Reply-To:, как указано выше.

Полагаю, что в Discourse нет аналогичной функции. Я не встречал никаких настроек сайта, которые могли бы ей соответствовать. Кроме того, за последние несколько дней я несколько раз просматривал все настройки, связанные с электронной почтой, в контексте текущей миграции с Mailman 2.

Возможно, ваш вопрос касается того, как письма импортируются из архивов, а не реализации этой функции в Discourse?

Discourse работает практически так же, как Mailman 2 с параметром from_is_list = Munge From — при таких настройках каждое письмо из рассылки Mailman отправляется «От: listname@example.com» (вместо «От: joebloggs@email.com»). Аналогично, каждое уведомление от Discourse отправляется с одного и того же адреса форума (noreply@forum.example.com или аналогичного).

Но я спрашивал не о том, как воспроизвести эту функцию в Discourse. [Редактирование — как вы уже поняли, я только что увидел ваш второй ответ!]

Я имел в виду следующее: когда эта настройка Mailman включена, будет ли ваш скрипт импортировать эти сообщения как исходящие от одного пользователя Discourse (с адресом listname@example.com), или же он сможет определить оригинального отправителя?

Надеюсь, это понятно!

Спасибо за разъяснение. Скрипт mailman2discourse не играет в этом роли, так как он не импортирует сообщения. Импорт сообщений осуществляется через импортер mbox в Discourse.

Я полагаю, что он установит автора всех писем как listname@example.com. В файле discourse/script/import_scripts/mbox/importer.rb я не вижу ничего, что говорило бы об обратном. Это была бы полезная функция, которую можно было бы добавить и, возможно, контролировать через поле use_reply_to_instead_of_from в файле settings.yml?

Теперь понятно, спасибо.

К сожалению, у меня также установлено значение “Этот список” для параметра reply_goes_to_list (что изменяет заголовок “Reply-To:”), поэтому нам придется придумать другое решение. Или, возможно, нет… Я задам вопрос в другой теме. Спасибо за помощь.

Для справки: скрипт миграции достиг стадии, когда он готов к использованию, и доступна инструкция: