554 5.7.1 [HME1] — аутентификация не прошла (iCloud)
Повторы не помогут. Письмо доставлено не будет.
Ответ сервера
554 5.7.1 [HME1] Message rejected due to local policy.Единственный код семейства с конкретным и устранимым смыслом: письмо аутентифицировалось как ничьё. Не прошли ни SPF, ни DKIM, и у iCloud нет доказательств, что отправитель — тот, кем назвался в From:. Это целиком ваша зона ответственности и обычно ошибка в DNS.
Что это значит
SPF проверяет, разрешён ли отправляющий IP доменом из конверта; DKIM проверяет подпись над письмом ключом из DNS отправляющего домена. Обычно достаточно любой из двух проверок. Провал обеих означает, что письмо ничем не связано с доменом, от имени которого пришло, — а это неотличимо от подделки. В отличие от политических меток здесь содействие Apple не нужно: опубликуйте записи правильно, и код исчезнет.
Почему так происходит
- У домена нет SPF-записи — или в ней не перечислен сервер, который реально отправляет.
- Адрес в конверте принадлежит не тому домену, чей SPF вы поправили.
- DKIM не настроен, или публичного ключа нет в DNS по селектору, указанному в подписи.
- SPF-запись вышла за лимит в десять DNS-запросов и возвращает permerror: запись может выглядеть безупречной и не проходить нигде.
- Две записи v=spf1 на одном имени — это ошибка, а не объединение.
- Подпись DKIM сломана по дороге списком рассылки или шлюзом, изменившим письмо.
Что делать
- Опубликуйте SPF-запись со всеми серверами, отправляющими за домен, и уложитесь в десять DNS-запросов.
- Настройте подпись DKIM и убедитесь, что публичный ключ отдаётся по адресу selector._domainkey.вашдомен.
- Проверьте, что аутентифицируется именно домен из видимого From:, а не только из конверта.
- Проверяйте снаружи своей сети: не разошедшаяся запись ведёт себя точно так же, как отсутствующая.
- Когда SPF и DKIM проходят, добавьте политику DMARC и читайте приходящие отчёты.
Вопросы
SPF опубликован, почему всё равно не проходит?
Три обычные причины: адрес в конверте принадлежит другому домену, запись выходит за десять DNS-запросов и возвращает permerror, или на имени две записи v=spf1 — это ошибка, а не объединение.
Достаточно ли одного DKIM?
Для этого кода — да, прошедшей подписи DKIM хватает. DKIM к тому же устойчивее: он переживает пересылку, которую SPF не переживает.