Проблемы с доставкой писем от хостинга Discourse пользователям iCloud через Hide My Email

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

Письма, похоже, приходят без адреса отправителя, из-за чего возникает ошибка в Cloudflare.

У меня недостаточно прав доступа, чтобы подтвердить это. Кто-нибудь может помочь?

У меня нашлось немного времени, чтобы попытаться помочь, к тому же я склонен скептически относиться, когда кто-то заявляет о «баге».

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

Похоже, дело не в iCloud, а в функции «Скрыть мой адрес электронной почты» iCloud.

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

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

Хорошо, у меня на самом деле есть iCloud+, поэтому я попробовал использовать функцию «Скрыть мой адрес электронной почты» (ntrdl-2025), и всё сработало. Оказывается, проблема тоже не в этом.

Есть ли ещё что-то, что мне стоит попробовать?

Если мы получим чёткое объяснение проблемы, сможем разобраться.

Например, как именно Cloudflare участвует в этом?

Это означает, что автоматически пересылаться на подтверждённый адрес электронной почты в вашем аккаунте Apple будут только письма, отправленные с назначенных адресов через приложение или веб-сайт.

Работает ли пересылка на скрытый адрес только от одного отправителя? Как iCloud в этом участвует? Используется ли поле From? Envelope-From? Sender?

Для любых размещённых на хостинге сайтов мы можем проверить записи о доставке отдельных писем по ID очереди исходящих писем через /admin/email-logs. Для сайтов с самостоятельным размещением необходимо сделать то же самое с их почтовым провайдером.


Я просмотрел логи, чтобы попытаться понять проблему Dir’а — всё ниже анонимизировано.

В случае Dir’a было отправлено три письма с сайта Rust, которые были доставлены:

timestamp,queueid,message
2025-06-29T19:54:24.000Z,60Axxxxxxxx,client=unknown[2602:fd3f:3:112:0:242:ac11:10]
2025-06-29T19:54:24.000Z,60Axxxxxxxx,message-id=<c39588c5-xxxxxxxxxxxxxxxxxxxxxxxxxxx@users.rust-lang.org>
2025-06-29T19:54:24.000Z,60Axxxxxxxx,"from=<incoming+verp-e5bxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@rust-lang.discoursemail.com>, size=4556, nrcpt=1 (queue active)"
2025-06-29T19:54:28.000Z,60Axxxxxxxx,"to=<dxxxxxxxxxxxxxxx@icloud.com>, relay=mx02.mail.icloud.com[17.57.154.33]:25, delay=4.1, delays=0.01/0/0.55/3.5, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as D2xxxxxxxxx)"
2025-06-29T19:54:28.000Z,60Axxxxxxxx,removed
2025-06-29T19:56:20.000Z,2A7xxxxxxxx,client=unknown[2602:fd3f:3:108:0:242:ac11:1f]
2025-06-29T19:56:20.000Z,2A7xxxxxxxx,message-id=<d72180b5-xxxxxxxxxxxxxxxxxxxxxxxxxxx@users.rust-lang.org>
2025-06-29T19:56:20.000Z,2A7xxxxxxxx,"from=<incoming+verp-ea8xxxxxxxxxxxxxxxxxxxxxxxxxxxxx@rust-lang.discoursemail.com>, size=4556, nrcpt=1 (queue active)"
2025-06-29T19:56:23.000Z,2A7xxxxxxxx,"to=<dxxxxxxxxxxxxxxx@icloud.com>, relay=mx02.mail.icloud.com[17.57.156.30]:25, delay=3.4, delays=0.01/0/0.41/3, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as B9xxxxxxxxx)"
2025-06-29T19:56:23.000Z,2A7xxxxxxxx,removed
2025-06-29T20:24:33.000Z,C8Cxxxxxxxx,client=unknown[2602:fd3f:3:104:0:242:ac11:1f]
2025-06-29T20:24:33.000Z,C8Cxxxxxxxx,message-id=<c5db2547-xxxxxxxxxxxxxxxxxxxxxxxxxxx@users.rust-lang.org>
2025-06-29T20:24:33.000Z,C8Cxxxxxxxx,"from=<incoming+verp-9bfxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@rust-lang.discoursemail.com>, size=5589, nrcpt=1 (queue active)"
2025-06-29T20:25:36.000Z,C8Cxxxxxxxx,"to=<dxxxxxxxxxxxxxxx@icloud.com>, relay=mx02.mail.icloud.com[17.57.156.30]:25, delay=63, delays=0.01/60/0.4/2.9, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as DAxxxxxxxxx)"
2025-06-29T20:25:36.000Z,C8Cxxxxxxxx,removed

А также возвраты (bounces) для каждого из них в логе Bounced, например:

From: Mail Delivery System <mailer-daemon@icloud.com>
To: incoming+verp-e5bxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@rust-lang.discoursemail.com
Message-ID: <20250629195443.xxxxxxxxxxxx@outbound.ms.icloud.com>
Subject: Undelivered Mail Returned to Sender

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


<exxx@actualemaildomain.com>: host route1.mx.cloudflare.net[162.159.205.13] сказал:
    550 5.7.1 отсутствует или недопустим адрес в заголовке From. tUExxxxxxxxx (в
    ответ на конец команды DATA)

Ага. Теперь понятно, как именно Cloudflare участвует в этом — это реальный MX-сервер для домена электронной почты Dir’а.

Оставив в стороне смехотворный результат пересылки iCloud’ом сообщения о возврате, содержащего реальный адрес электронной почты пользователя, отправителю, проблема, похоже, заключается во взаимодействии между iCloud и Cloudflare.

iCloud, по всей видимости, использует SRS (Схема переписывания отправителя) для инкапсуляции реального адреса Envelope-From при отправке в Cloudflare, но Cloudflare отклоняет такие письма.

Не вижу, как Discourse мог бы что-то сделать иначе здесь — он выполняет всё, что от него требуется? Проблема, очевидно, находится в другом месте.

Да, похоже, что почтовая настройка не работает. Спасибо за помощь в диагностике!