Сегодня я приступаю к написанию скрипта на Python для миграции рассылки Mailman 2 (архивы и файл config.pck), используя только API Discourse. Если кому-то это интересно, процесс можно отследить здесь, и я буду обновлять эту тему по мере продвижения работы.
Любые комментарии о том, что кому-то нужно, или предложения о том, как сделать это лучше, безусловно, приветствуются
digest_members : отклонено. Невозможно запросить режим дайджеста для отдельной категории.
Возможно, «Следить за первым сообщением» будет приблизительным аналогом, в зависимости от того, как часто создаются новые ветки/темы и как часто на практике отправлялся дайджест в списке.
Первая версия скрипта была опубликована по адресу Client Challenge. Он работает у меня, надеюсь, он также поможет другим. Если нет — дайте знать, и я постараюсь адаптировать скрипт.
Как это работает со списками, где from_is_list установлено в значение «Модифицировать поле From» или «Обернуть сообщение» (или используются эквивалентные настройки, касающиеся только DMARC)? Может ли система определить, какой пользователь отправил такие сообщения?
Спасибо. Если это поможет, адрес электронной почты оригинального отправителя часто (всегда?) появляется в заголовке «Cc:» письма, по крайней мере, когда параметр from_is_list установлен в Munge From.
Это относится ко всем сообщениям, отправленным списком рассылки, кроме дайджестов. Для настроек, которые применяются только к сообщениям, чей домен в поле 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 работает практически так же, как 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:”), поэтому нам придется придумать другое решение. Или, возможно, нет… Я задам вопрос в другой теме. Спасибо за помощь.