Используйте алиасы в iRedMail для категорий с включённой функцией входящей почты

:mega: ВНИМАНИЕ — эта тема касается очень специфического редкого сценария использования, и, скорее всего, вам не стоит этого делать. Обратитесь к первым двум ссылкам ниже для получения рекомендаций по настройке.

Предварительные требования

Я искал на форуме четкую статью о том, как настроить систему тикетов с помощью Discourse, и нашел несколько отличных тем:

  1. Configuring incoming email to create new topics or group messages
  2. Use Discourse as a Private Support/Ticket System

Вопросы

К сожалению, я недостаточно знаком с некоторыми функциями почтового сервера и не знаю, как настроить поддержку reply+mailbox@server.com или somerandomcode+mailbox@server.com. Как это вообще работает, о боже? :man_facepalming:

Как можно использовать несколько email-адресов, назначенных разным категориям? Как это работает, если настройки форума поддерживают только один адрес электронной почты?

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

Базовый полностью функциональный почтовый сервер

Для тех, кто хочет настроить бесплатный почтовый сервер, я рекомендую iRedMail.

  • Здесь статья по настройке почтового сервера на базе Ubuntu + Postfix + iRedMail на английском языке.
  • Здесь то же самое для CentOS на русском языке.

Почтовые алиасы

После стандартной установки у вас будет готовый к подключению к Discourse почтовый сервер. Выполните шаги 1 и 2 из предыдущих инструкций, а затем следуйте дальнейшим шагам по использованию почтовых алиасов в iRedMail.

Например, вы создали почтовый ящик master@server.com и две категории:

feature
feature -> internal [private]

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

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

ssh login@server.com
sudo su - postgres
psql

Затем переключитесь на схему vmail и создайте два алиаса:

postgres=# \c vmail
postgres=# INSERT INTO alias (address, domain, active)
VALUES ('feat@server.com', 'server.com', 1);

postgres=# INSERT INTO alias (address, domain, active)
VALUES ('staff@server.com', 'server.com', 1);

Следующий шаг — создание пересылок:

postgres=# INSERT INTO forwardings (address, forwarding,
                              domain, dest_domain,
                              is_list, active)
VALUES ('feat@server.com', 'master@server.com',
'server.com', 'server.com', 1, 1);

postgres=# INSERT INTO forwardings (address, forwarding,
                              domain, dest_domain,
                              is_list, active)
VALUES ('staff@server.com', 'master@server.com',
'server.com', 'server.com', 1, 1);

postgres=# \q ИЛИ CTRL+D для выхода

Вы можете проверить две таблицы, aliases и forwardings, в предпочитаемом вами менеджере БД:

%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5

%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5

Обратите внимание на поле active, оно должно быть равно 1.

Проверка настроек

Назначьте алиасы электронной почты категориям и отправьте письмо с адреса вашего зарегистрированного пользователя. При необходимости вы можете разрешить анонимную отправку писем и автоматическое создание временных пользователей с помощью следующих настроек:

  • Принимать письма от анонимных пользователей без учетных записей (опционально, настройка категории)
  • Включить временных пользователей (если true, также отметьте approve unless staged)
  • pop3 polling enabled = true
  • pop3 polling host (ваш FQDN хоста)
  • pop3 polling port (обычно 995)
  • pop3 polling username (master@server.com)
  • pop3 polling password
  • pop3 polling delete from server (опционально, я оставляю отключенным, чтобы оригинальное сообщение оставалось в моем почтовом клиенте)
  • log mail processing failures (опционально, так как вы можете отслеживать все события на вкладке Emails)
  • email in = true
  • email in min trust (я использую 0 сразу после запуска форума, также проверьте clean up inactive users after days)
  • email prefix (опционально, если название вашего сайта написано ЗАГЛАВНЫМИ БУКВАМИ, это может повысить спам-рейтинг автоответов)
  • enable forwarded emails (опционально, в версии 2.4.0beta2 это все еще BETA, иногда не удается найти тело письма)

Проверка входящих писем

Отправьте письма на ваши алиасы и проверьте:

/admin/email/received
/admin/email/rejected

Теперь все письма, отправленные на master@server.com, feat@server.com ИЛИ staff@server.com, будут попадать в один почтовый ящик master@server.com. Разница заключается в том, что письма, отправленные на feat@, будут обрабатываться категорией feature, а письма, отправленные на staff@, — категорией internal.

Убедитесь, что появились новые темы! :sunny:

Некоторые замечания

  • Даже если вы назначите основной адрес master@ какой-либо публичной или приватной категории, все письма будут обработаны правильно (без дубликатов, без нарушения конфиденциальности).
  • Настройка min topic title length не влияет на длину темы письма.

Тот, который рекомендую я, находится по адресу Configure direct-delivery incoming email for self-hosted sites with Mail-Receiver. Вам не нужно настраивать ничего, кроме нескольких вещей, чтобы его запустить, а после этого вы можете использовать любые адреса электронной почты для групп или категорий, и всё будет работать без проблем.

2 лайка

Спасибо за информацию, @pfaffman, я не нашёл эту тему. Я человек старой школы, поэтому доверяю проверенным схемам, используемым в продакшене. Я просто предлагаю быстрое и стабильное решение. Также я не нашёл ни одного упоминания слова alias в результатах релевантного поиска. Так что пусть это будет в этом гайде).

1 лайк

На каждого своё, но для обработки входящей почты в Discourse контейнер с запущенным Postfix — довольно проверенное решение. Трудно представить, что iRedMail может быть быстрее или стабильнее, ведь iRedMail включает в себя кучу компонентов, которые не нужны, если ваша единственная цель — доставка почты в Discourse.

Эта тема допустима, но она чрезвычайно специфична для вашего довольно необычного случая использования. Я добавлю предупреждение об этом в начало темы.

4 лайка