Я использую NetCore Cloud в качестве поставщика электронной почты, но не могу включить получение писем или отправку ответов. Есть ли идеи, как этого добиться с помощью NetCore Cloud Email?
Я работаю над этим с @Abdelrahman_MoHamed — мы считаем, что наша основная проблема/блокатор заключается в том, что мы пытаемся настроить netcore для отправки входящих ответов по электронной почте в Discourse для обработки.
Мы не можем понять, как передать эти данные (разобранный входящий email) в Discourse для обработки. Где находится экран конфигурации, который мы рассматриваем в netcore:
Мы полагаем, что нам нужно ввести URL, аналогичный этому:
https://forum.mamapedia.com/admin/email/handle_mail
Однако мы в замешательстве, так как при просмотре настройки вебхуков кажется, что это POST-запросы..
Также мы исходим из предположения, что для достижения нашей цели должны использовать вебхуки.
Привет, сообщество Discourse,
Я работаю над настройкой функции «Ответ по электронной почте» для моего экземпляра Discourse и нуждаюсь в разъяснениях и руководстве.
Моя текущая конфигурация
• Я использую Netcore как поставщика услуг электронной почты.
• Для входящих писем я настроил правило в Netcore для перехвата всех писем, соответствующих формату: reply+*@mydiscourse.com.
• Netcore поддерживает пересылку этих писем либо:
-
На другой адрес электронной почты
-
На веб-хук
Что я пробовал
Я попытался переслать эти письма на следующую конечную точку Discourse:
https://mydiscourse.com/admin/email/handle_mail
К сожалению, это привело к ошибке 404 Not Found.
Мои вопросы
-
Кто обрабатывает входящие письма в этой конфигурации? Должны ли они обрабатываться непосредственно Discourse, или поставщику услуг электронной почты нужно пересылать их в специальном формате для обработки Discourse?
-
Я заметил опцию под названием «Прямой прием электронной почты» с использованием mail-receiver. Является ли это лучшим подходом для моей конфигурации?
Я хочу убедиться, что входящие письма правильно обрабатываются для включения функции «Ответ по электронной почте». Не могли бы вы подсказать правильный способ настройки этого с Netcore или направить к соответствующей документации?
Заранее благодарю за поддержку!
Один момент: netcore — это то, что раньше называлось «pepipost». Если это название кому-то знакомо, это может помочь нам найти правильное направление.
Заранее спасибо!
Самый простой способ — Настройка входящей электронной почты с прямой доставкой для самохостинговых сайтов с помощью Mail-Receiver
Я почти уверен, что используемая вами конечная точка предназначена для обработки возвратов, но могу ошибаться.
Спасибо за ваш ответ. Используя эту настройку, мы получим конечную точку, которую можно будет использовать в поставщике электронной почты для публикации данных?
@pfaffman очень полезно, спасибо. Так что, отложив в сторону netcore (aka pepipost), звучит так, будто вы говорите: если нам нужно:
- отправка писем
- управление отскоками
- обработка ответов
Независимо от того, используем ли мы mailgun, sendgrid и т. д., нам придется настроить прямую доставку входящей почты для самохостинговых сайтов с помощью Mail-Receiver — верно? Вы упомянули «самый простой» способ, поэтому мне интересно: есть ли другие варианты?
Ещё раз большое спасибо за ответ, мы уже несколько дней упираемся в эту проблему…
Кроме того, публикуя это в общем сообществе, мы хотим подтвердить, что настройка входящей электронной почты с прямой доставкой для самохостинговых сайтов с помощью Mail-Receiver необходима для полноценной обработки электронной почты в самохостинговых средах.
Если кто-то ещё сможет подтвердить, что это действительно необходимо, это было бы очень полезно.
Также можно настроить почтовый ящик POP3, который будет опрашивать Discourse. Получатель писем проще в использовании и позволяет использовать произвольные адреса для почтовых ящиков групп или категорий.
Спасибо, @pfaffman — снова очень полезно. Мы переходим к работе с почтовым приёмником, у нас установка для нескольких сайтов. Как только закончим, при условии, что всё пройдёт хорошо, мы вернёмся сюда.
Привет, @pfaffman, ещё раз спасибо за помощь.
Я пытаюсь настроить контейнер mail-receiver для Discourse на своём форуме, но столкнулся с проблемой отклонения писем при тестировании. Вот подробности:
- Домен форума: test.mamapedia.com (проксируется через Cloudflare)
- Домен почтового приёмника: reply.mamapedia.com
- Детали ошибки:
При попытке протестировать почтовый приёмник через Telnet я получаю следующую ошибку:
telnet reply.mamapedia.com 25
Trying 34.122.3.90...
Connected to reply.mamapedia.com.
Escape character is '^]'.
220 ESMTP server
MAIL FROM: <abdohamoda636@gmail.com>
250 2.1.0 Ok
RCPT TO: <test@reply.mamapedia.com>
554 5.7.1 <test@reply.mamapedia.com>: Recipient address rejected: Mail to this address is not accepted. Check the address and try to send again.
Логи почтового приёмника: В логах контейнера mail-receiver отображается следующее сообщение об отклонении:
Dec 17 17:19:12 test-discourse-20241125-173103-mail-receiver postfix/smtpd[139]: NOQUEUE: reject: RCPT from 90.3.122.34.bc.googleusercontent.com[34.122.3.90]: 554 5.7.1 <test@reply.mamapedia.com>: Recipient address rejected: Mail to this address is not accepted. Check the address and try to send again?; from=<abdohamoda636@gmail.com> to=<test@reply.mamapedia.com> proto=SMTP
Dec 17 17:19:12 test-discourse-20241125-173103-mail-receiver postfix/smtpd[139]: using backwards-compatible default setting smtpd_relay_before_recipient_restrictions=no to reject recipient "test@reply.mamapedia.com" from client "90.3.122.34.bc.googleusercontent.com[34.122.3.90]"
Наблюдения:
- Сообщение об ошибке в логах указывает на то, что адрес получателя “test@reply.mamapedia.com” отклоняется.
- Проблема, похоже, связана с конфигурацией Postfix или каким-то ограничением, которое не позволяет принять письмо.
Что я уже пробовал:
- Убедился, что DNS-записи (MX) для
reply.mamapedia.comнастроены правильно. - Перепроверил конфигурацию контейнера mail-receiver и убедился, что домен
reply.mamapedia.comуказан корректно.
Файл конфигурации Mail-Receiver
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
## Куда должны отправляться письма на ваш форум. В целом, вполне допустимо
## использовать здесь тот же домен, что и у самого форума.
MAIL_DOMAIN: reply.mamapedia.com
# раскомментируйте эти строки (и том ниже!), чтобы включить поддержку TLS
POSTCONF_smtpd_tls_key_file: /letsencrypt/reply.mamapedia.com.key
POSTCONF_smtpd_tls_cert_file: /letsencrypt/fullchain.cer
POSTCONF_smtpd_tls_security_level: may
## Базовый URL для этого экземпляра Discourse.
## Это будет URL вашего сайта Discourse. Например,
## https://test.mamapedia.com. Если вы используете настройку с подпапкой,
## обязательно учтите это (например, https://example.com/forum).
DISCOURSE_BASE_URL: 'https://test.mamapedia.com'
## Главный API-ключ вашего форума Discourse. Вы можете получить его
## на вкладке "API" в панели администратора.
DISCOURSE_API_KEY: '#############'
## Имя пользователя для обработки входящей почты. Если вы не переименовывали
## пользователя `system`, оставьте это значение без изменений.
DISCOURSE_API_USERNAME: system
volumes:
- volume:
host: /var/discourse/shared/mail-receiver/postfix-spool
guest: /var/spool/postfix
# раскомментируйте для поддержки TLS
- volume:
host: /var/discourse/shared/standalone/letsencrypt
guest: /letsencrypt
DNS-записи Cloudflare
![]()
![]()
![]()
Буду благодарен за любую помощь или комментарии, которые вы сможете предоставить.
Не знаю, но такие ошибки всегда связаны с DNS. И каждый раз, когда задействован Cloudflare. В последний раз, довольно давно, я столкнулся с ошибкой escape — это был тайм-аут из-за неправильно настроенного сервера.
У меня появляется это сообщение при попытке отправить письмо через telnet, но всё работает, когда я отвечаю на уведомления с помощью обычных почтовых провайдеров.
Предлагаю вам включить функцию ответа по электронной почте и протестировать её в реальных условиях, чтобы посмотреть, как это будет работать.
Спасибо, @Canapin, возможно, вы правы. Я попробую ответить на любое письмо и посмотрю, сработает ли это.
Буду публиковать обновления.
На случай, если это поможет, вот содержимое моего рабочего файла mail-receiver.yml.
Я использую Cloudflare SSL, поэтому, поскольку TLS предоставляется Cloudflare, я оставил все строки TLS закомментированными.
## это шаблон контейнера для входящей почты
##
## После внесения изменений в этот файл вы ОБЯЗАНЫ выполнить пересборку
## /var/discourse/launcher rebuild mail-receiver
##
## БУДЬТЕ *ОЧЕНЬ* ОСТОРОЖНЫ ПРИ РЕДАКТИРОВАНИИ!
## YAML-ФАЙЛЫ ЧРЕЗВЫЧАЙНО ЧУВСТВИТЕЛЬНЫ К ОШИБКАМ В ПРОБЕЛАХ И ВЫРАВНИВАНИИ!
## посетите http://www.yamllint.com/, чтобы при необходимости проверить этот файл
base_image: discourse/mail-receiver:release
update_pups: false
expose:
- "25:25" # SMTP
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
## Куда должна отправляться почта на ваш форум. В общем случае вполне допустимо
## использовать здесь тот же домен, что и для самого форума.
MAIL_DOMAIN: mydiscourseinstance.com
# раскомментируйте эти строки (и том ниже!), чтобы включить поддержку TLS
# POSTCONF_smtpd_tls_key_file: /letsencrypt/discourse.example.com/discourse.example.com.key
# POSTCONF_smtpd_tls_cert_file: /letsencrypt/discourse.example.com/fullchain.cer
# POSTCONF_smtpd_tls_security_level: may
## Базовый URL для этого экземпляра Discourse.
## Это должен быть URL вашего сайта Discourse. Например,
## https://discourse.example.com. Если вы используете настройку с подпапкой,
## обязательно учтите это (например, https://example.com/forum).
DISCOURSE_BASE_URL: 'https://mydiscourseinstance.com'
## Главный API-ключ вашего форума Discourse. Его можно получить на
## вкладке "API" в панели администратора.
DISCOURSE_API_KEY: xxxxxxxxxxxxxxxx
## Имя пользователя, используемое для обработки входящей почты. Если вы не переименовывали
## пользователя `system`, оставьте это значение без изменений.
DISCOURSE_API_USERNAME: system
volumes:
- volume:
host: /var/discourse/shared/mail-receiver/postfix-spool
guest: /var/spool/postfix
# раскомментируйте для включения поддержки TLS
# - volume:
# host: /var/discourse/shared/standalone/letsencrypt
# guest: /letsencrypt
Спасибо всем за ваши ценные предложения и поддержку! @pfaffman, @Jagster, @Canapin и @denvergeeks — я благодарен вам за помощь. Хочу сообщить, что теперь всё работает! Я удалил все свои старые конфигурации, обновил Docker до последней версии и убедился, что необходимый MX-запись корректно добавлена. Telnet по-прежнему не работает, но теперь я могу успешно получать ответы. Ещё раз спасибо за то, что помогли мне разобраться в этом!
Рад, что в итоге всё работает. Меня интересует, какая именно настройка Postfix отклоняет письма, отправленные через telnet (их могут отклонить по многим причинам, но указанная причина кажется странной).
Верно. Он принимает только ту почту, которую примет Discourse.

