Ошибка Discourse::InvalidAccess возникла снова. На этот раз причина не в длине темы письма. Я подозреваю, что это связано с тем, что категория является подкатегорией с ограниченным доступом. Однако категория настроена на получение писем от адресов без аккаунта, поэтому я ожидал, что письмо будет обработано и в ней будет создана новая тема.
Сценарий использования — сбор предложений (CFP): люди должны иметь возможность отправлять сообщения, но читать их и обсуждать могут только организаторы. Я считаю, что это отличается от случая, описанного в Email in to a private category
Я выполнил пересборку после (пустой) команды git pull, и теперь всё, похоже, работает с добавлением второго домена в relay_domains Postfix. До этой серии тестов и после внесения изменений ошибок больше не было, но письма вообще не появлялись — ни в категории, ни в логах ошибок.
(Конечно, example.net — это не то, что фактически находится в конфигурационном файле. Там указан хостнейм форума и родительский домен, оба из которых настроены в DNS.)
Я заметил, что @mpalmer много лет назад упоминал, что добавление второго домена возможно, но:
Поэтому я ожидал, что небольшой параметр конфигурации relay_domains будет недостаточным, но, похоже, всё работает, если выполнить git pull перед пересборкой. Должна быть какая-то особенность в процессе сборки контейнера mail-receiver, из-за которой обновление pups не происходит…
Каким-то образом ошибка вернулась. Это немного нелепо, поскольку предыдущие тесты прошли успешно. Теперь, после очередной пересборки, входящая почта снова отклоняется. Я попытался повторить «танец» с git pull и rebuild, но на этот раз это, похоже, не сработало.
Подозреваю, что может влиять ситуация с подкатегориями, если только что-то не изменилось в обработке входящей почты в отношении разрешений на категории.
Сейчас ситуация такова: люди отправляют письма и получают отказ, поэтому мне приходится копировать отклонённые письма и вручную назначать темы авторам. «Опыт пользователя» при этом ужасен, а накладные расходы крайне раздражают.
Я не могу допустить, чтобы входящая почта принималась в публичной категории — в этом и заключается суть сбора предложений (CFP). Но, похоже, Discourse больше не способен решать эту задачу.
Для тех, у кого есть учётная запись, но нет доступа к категории, ожидается, что их заявки будут отклонены. Опция «Принимать письма от анонимных пользователей без учётных записей» применяется только к пользователям на стадии регистрации, а для тех, у кого уже есть учётная запись, применяются разрешения категории.
Странно, что пользователи без учётных записей отклоняются. Не связано ли это с изменениями, которые вы внесли в почтовый получатель?
Получается, что отклонение обрабатывается конечной точкой /admin/email/smtp_should_reject.json.
Я внес это изменение, потому что письма возвращались с ошибкой. Сначала я добавил несколько адресов в адрес входящей почты (разделяя их символом |), и это, казалось, сработало.
Понятно, это имеет смысл. Но немного запутанно. Если «кто угодно» может отправить письмо, а существующие пользователи — нет, это вроде бы противоречит самой цели.
Я проверю, находятся ли отклоненные письма в статусе «staged» или нет. Большое спасибо за помощь в отладке, @JammyDodger.
Я думаю, вы правы, @JammyDodger: новые пользователи проходят, существующие пользователи с обычным доступом к категории тоже проходят, но существующие аккаунты без доступа не могут отправлять письма в категорию.
Наверное, обходным путём будет создать группу CFP без уведомлений для категории, включающую всех существующих пользователей. Но это звучит очень костыльно и может иметь побочные эффекты, например отмену существующих уведомлений… Не уверен, что делать.
Имеется приватная категория с функцией отправки писем, разрешённой для неизвестных адресов электронной почты (т.е. принадлежащих несуществующим учётным записям, так называемым «временным пользователям»)
→ если письмо приходит с неизвестного адреса: оно доставляется в приватную категорию
→ если письмо приходит с известного адреса: оно доставляется только в том случае, если пользователь состоит в группе, имеющей право доступа к этой категории.
Следовательно, если вы хотите использовать функцию отправки писем для сбора предложений (CFP), настройте функцию отправки писем для приватной группы и используйте этот адрес. Сообщения могут быть «сделаны публичными» и преобразованы в тему в категории (приватной или нет).