Как установить ограничение скорости отправки писем?

У меня есть форум на Discourse, но с ограничением скорости отправки (20/сек).
Могу ли я установить ограничение скорости отправки в Discourse?

Я задаю этот вопрос, потому что обнаружил, что в таблице unsubscribe_keys ежедневно появляется почти 500 000 записей, тогда как в mail_log — только 9000, а в skipped_mail_log — 1000. У нашего форума также почти 500 000 участников.
Не уверен, вызвано ли это слишком быстрой отправкой писем, что привело к каким-то странным проблемам, поэтому я пытаюсь ограничить скорость отправки, но без успеха.

Unsubscribe_keys

email_log

Вам необходимо получить более быстрый почтовый сервер и/или изменить настройки, чтобы письма от letmail отправлялись.

Вы можете изменить частоту отправки сводных писем и настроить максимальное количество писем в день.

Настройки ограничения скорости отправки нет.

Не уверен, нужен ли лимит скорости отправки…
Потому что даже если мы увеличим его, скажем, до 60 в секунду, всё ещё возможно, что сервер будет отправлять слишком быстро и получит блокировку.

Что вы используете для отправки электронной почты?

Я использую сервис AWS SES

Вы обращались в их службу поддержки?

Почему так много участников Discourse получают письма? И по какому именно поводу? Это более важный вопрос.

В типичной установке Discourse единственное письмо для «всех пользователей» — это дайджест, и даже оно адресовано только тем, кто не заходил на сайт неделю или дольше, но при этом отсутствовал не более года.

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

У нас была одна активность ранее (несколько месяцев назад). Эта активность привлекла около 90 тысяч зарегистрированных участников. Сейчас они могут отсутствовать в течение нескольких недель, поэтому система отправила им дайджест-письма.

Вы когда-нибудь находили решение? Я собираюсь перейти на Amazon SES и только что осознал, что наш начальный лимит составляет 14 писем в секунду. Не уверен, как быстро Discourse будет отправлять их в SES. На сайте отправляется много писем.

Знает ли кто-нибудь максимальную скорость отправки писем в Discourse? Будет ли он пытаться отправлять больше 14 писем в секунду?

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

Редактирование: Я понял, что мог бы выяснить, является ли это проблемой, проверив логи Mandrill. Если только я не наблюдаю какое-то дополнительное ограничение скорости со стороны Mandrill, я думаю, что у нас максимум около 8 писем в секунду, так что всё должно быть в порядке.

Привет, Джош!

Для дайджестов вы можете ограничить это значение до 14 писем в секунду, установив глобальную переменную Discourse равной 420. Это делается следующим образом в файле сборки вашего контейнера:

 DISCOURSE_MAX_DIGESTS_ENQUEUED_PER_30_MINS_PER_SITE: 420

Это не «в точности» то, что вам нужно, но очень близко.

Поскольку 14 писем в секунду (из вашего сообщения), умноженные на 30 секунд, дают 420, эта глобальная настройка ограничит количество дайджестов примерно до 420 каждые 30 минут, как и заявлено в коде:

См. также:

Естественно, если ваш SMTP-канал отправляет и другие письма, вам нужно будет уменьшить это значение; либо вы можете настроить отдельный канал специально для дайджест-писем (как это делаем мы).

Примечание: по умолчанию эта глобальная настройка установлена на 10 000 дайджестов за 30 минут; это довольно много дайджестов в час, если вы спросите меня ;). Поэтому мы установили это значение значительно ниже, чтобы наш ежемесячный счёт от SendGrid оставался «разумным».

30 дайджестов за 30 минут = 1440 в день или примерно 43 200 в месяц (потому что до того, как я внес это изменение несколько дней назад, мы отправляли очень много дайджестов). В следующем месяце я увеличу это значение до примерно 60 дайджестов за 30 минут, то есть около 86 400 дайджестов в месяц с небольшими отклонениями.

Надеюсь, это поможет.