Отключение электронной почты при восстановлении из резервной копии

Отлично, что исходящая почта приостанавливается при восстановлении резервной копии, а также отображается соответствующее уведомление на сайте, напоминающее администратору включить её.

Можно ли расширить эту функциональность, чтобы она также перехватывала опрос POP, на случай если он был настроен и начнёт получать сообщения?

Это было бы полезно в ситуациях, когда включены настройки «опрос POP3» и «удалять сообщения с сервера после опроса POP3».

4 лайка

Да, я поддерживаю это.

Было бы отлично, если бы существовал режим «не обращаться к внешним сервисам», который отключает все внешние действия, оказывающие постоянное влияние на мир за пределами форума, такие как исходящие письма (кроме действительно необходимых), удаление сообщений с сервера по POP3 и запуск вебхуков.

5 лайков

Да, это своего рода «режим изоляции», который позволяет выполнить тестовое восстановление резервной копии (что является хорошей практикой, которую следует периодически применять) без риска воздействия на работающий экземпляр. Также при миграции можно запустить новый экземпляр и безопасно его проверить перед переключением (при условии, что исходный сайт находится в режиме только для чтения или отключен и т. д.).

2 лайка

Хорошая мысль, @gerhard, есть какие-то идеи по этому поводу?

2 лайка

Согласен. Режим «изоляции» был бы полезной функцией. Не только после восстановления.

На данный момент нечто подобное можно реализовать с помощью простого плагина. Что-то вроде следующего должно работать:

# name: isolation-mode
# about: Включает режим изоляции после восстановления резервной копии.
# version: 1.0

after_initialize do
  on(:site_settings_restored) do
    SiteSetting.pop3_polling_enabled = false
    WebHook.update_all(active: false)
  end
end

В качестве альтернативы вы также можете использовать CLI-команду discourse restore, а затем обновить настройки сайта и прочее с помощью rails runner.

3 лайка

Это всё ещё лучшая рекомендация?

Да, ничего не изменилось. Функции «режим изоляции» нет, поэтому отключение чего-либо, кроме исходящей почты, невозможно при восстановлении, так как нет способа уведомить администраторов и предоставить им простой вариант включения всего обратно.

1 лайк

https://github.com/merefield/discourse-isolation

Я добавил это в свой собственный репозиторий (конечно, с указанием авторства @gerhard!).

Что я добавил:

  • disable emails: да
  • login required: true

И вот результат после завершения восстановления из резервной копии:

Это действительно спасение для хостинга чувствительных тестовых версий с реальными электронными адресами пользователей…

Ещё раз спасибо!

1 лайк