Просьба о совете по настройке почтовой доставки для многосайтового Discourse

Всем привет,

После нескольких недель экспериментов я с восторгом сообщаю, что мне удалось успешно развернуть мультисайтовую конфигурацию в одном контейнере (после множества неудач). Это стало для меня невероятным достижением, особенно учитывая, что я работаю с крайне ограниченными ресурсами: около 1,34 ГБ памяти для двух сайтов — это потрясающий результат, значительно лучше, чем запуск двух отдельных контейнеров.

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

Однако я столкнулся с проблемой, касающейся доставки почты для каждого поддомена. Насколько я понял, нативная поддержка отдельных адресов электронной почты для каждого сайта в мультисайтовой конфигурации отсутствует. Это кажется мне странным, особенно учитывая, что Discourse управляет размещёнными экземплярами вроде xyz.discourse.group, и я предполагаю, что вы не выделяете 2 ГБ памяти на каждый экземпляр. Surely, вы используете схожий мультисайтовый подход?

Мой вопрос: как вы решаете задачу доставки почты для каждого поддомена?

Например, если у меня есть сайты xyz1.domain.com и xyz2.domain.com, я хочу, чтобы исходящие письма отправлялись с адресов notification@xyz1.domain.com и notification@xyz2.domain.com соответственно, а не все с одного общего адреса. Я пробовал настраивать Postfix с помощью проверок заголовков (например, X-Originating-Domain), но уперся в тупик, так как все письма отправляются с одного адреса. Возможно, использование заголовка List-Id будет более подходящим решением? Понимаю, что эта тема может быть деликатной, возможно, содержит конфиденциальную информацию, но любая помощь будет очень ценна.

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

Заранее спасибо за ваше время и любые советы, которые вы сможете дать!

Это неверно. Откуда вы это взяли?
Вы можете настроить notification_email для каждого экземпляра.

Нативная поддержка отдельных учетных данных электронной почты для каждого сайта недоступна.

Снова здравствуйте,

Приношу извинения за путаницу в моём предыдущем посте — я понял, что некорректно описал проблему. Позвольте уточнить.

Сложность, с которой я столкнулся, касается доставки электронной почты в настройке мультисайта, где основная проблема заключается не в поддоменах, а в совершенно разных основных доменах. Например, я пытаюсь настроить сайты вроде xyz1.domain1.com и xyz2.domain2.com в одном контейнере Discourse.

Я понимаю, что Discourse позволяет определить один адрес для уведомлений в файле app.yml, например:

DISCOURSE_SMTP_ADDRESS: smtp.domain1.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: noreply@domain1.com
DISCOURSE_SMTP_PASSWORD: password
DISCOURSE_SMTP_ENABLE_START_TLS: true

Это отлично работает для первого экземпляра (xyz1.domain1.com). Однако, когда письма отправляются со второго экземпляра (xyz2.domain2.com), почтовые провайдеры, такие как Gmail, помечают их как несоответствующие, поскольку заголовки писем не совпадают с доменом xyz2.domain2.com. По сути, я не могу определить отдельные конфигурации SMTP для каждого домена в рамках одной настройки мультисайта.

Кто-нибудь успешно решал такую задачу, когда каждый основной домен в настройке мультисайта использует свои собственные учётные данные SMTP (например, отдельные параметры DISCOURSE_SMTP_* для каждого сайта)? Существует ли обходной путь, или это требует отдельных контейнеров для каждого домена, чтобы избежать несоответствий?

Или, может быть, есть какие-либо лучшие практики или инструменты (например, настройки Postfix, использование заголовков List-Id), которые могли бы помочь решить проблему несоответствия без необходимости использовать отдельные контейнеры для каждого сайта?

Я был бы очень признателен за любые идеи или предложения. Ещё раз спасибо за ваше время и поддержку!

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

То, что SMTP_USER_NAME выглядит как адрес электронной почты, связано с тем, что провайдер решил требовать, чтобы заголовок From: отправляемых писем совпадал (или: был переписан так, чтобы совпадать) с SMTP_USER_NAME.

Заголовки писем устанавливаются системой Discourse. Если вы используете почтового провайдера, который не изменяет их и позволяет использовать несколько адресов «От» в рамках одной учётной записи, всё будет работать корректно.

Понял, значит, мне нужно просто настроить Postfix для создания пользовательских проверок заголовков:

/^From:.+@example\.com/ REPLACE From: Ваше Имя <вашеимя@example.com>

и на этом всё? СПАСИБО!

Если вы используете собственную установку Postfix, то я не вижу, почему это могло бы стать проблемой.