У меня большие трудности с надежной работой контейнера mail-receiver. Сейчас он работает как задумано для ответов, отправленных с моего личного аккаунта Gmail, но отклоняет письма, приходящие из веб-приложения Office 365 моего работодателя. Я не могу определить, проблема ли это в моей конфигурации или что-то странное в том, как мой работодатель маршрутизирует почту.
Я новичок в анализе вывода ./launcher logs mail-receiver, но, думаю, этот фрагмент демонстрирует типичную последовательность событий при неудачной доставке:
Jan 27 17:19:13 myvps-mail-receiver postfix/spawn[363]: warning: command /usr/bin/policyd-spf exit status 120
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: warning: problem talking to server private/policyd-spf: Connection timed out
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: NOQUEUE: reject: RCPT from mail-server.employer.tld[XX.XXX.XX.XX]: 451 4.3.5 <4eb16fb194e4f56c53b738dd8b3f3411@reply.my_domain.tld>: Recipient address rejected: Server configuration problem; from=<me@employer.tld> to=<4eb16fb194e4f56c53b738dd8b3f3411@reply.my_domain.tld> proto=ESMTP helo=<mail-server.employer.tld>
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: using backwards-compatible default setting smtpd_relay_before_recipient_restrictions=no to reject recipient "4eb16fb194e4f56c53b738dd8b3f3411@reply.my_domain.tld" from client "mail-server.employer.tld[XX.XXX.XX.XX]"
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: disconnect from mail-server.employer.tld[XX.XXX.XX.XX] ehlo=1 mail=1 rcpt=0/1 data=0/1 rset=1 quit=1 commands=4/6
<22>Jan 27 17:20:56 policyd-spf[367]: : prepend Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=XX.XXX.XX.XX; helo=mail-server.employer.tld; envelope-from=me@employer.tld; receiver=reply.my_domain.tld <22>Jan 27 17:20:56 policyd-spf[367]: Traceback (most recent call last):
Jan 27 17:20:56 myvps-mail-receiver postfix/spawn[366]: warning: command /usr/bin/policyd-spf exit status 120
Похоже, что демон SPF-политики не работает, судя по первой, второй и последней строкам. Я не могу найти никаких диагностических данных о том, почему он не работает. Также я не уверен, необходим ли он вообще. Письма от Gmail проходят без проблем.
Я самостоятельно размещаю сервис на VPS с DNS Cloudflare и транзакционной почтой от Brevo.
Я также давно заметил довольно много непредсказуемых отказов от источников Microsoft 365, что особенно раздражает, учитывая, что его используют так много компаний. До сих пор мне не удавалось отследить источник этих проблем.
Возможно, проблема действительно в mail-receiver, как вы предполагаете; я был бы рад, если бы это было расследовано!
Не уверен, кто именно виноват: моя конфигурация, конфигурация моего работодателя или приложение для получения почты . Буду очень признателен за любые предложения о том, как извлечь из контейнера больше информации.
Может, кто-нибудь подскажет, как получить доступ к необработанным системным журналам из контейнера mail-receiver? Мне кажется, что после этой строки должен быть вывод трассировки стека:
Вот ответ, полученный после вставки всех строк журнала на ask.Discourse.com…
Устранение неполадок Postfix и Policyd-SPFИИ
denvergeeks:
Что означает эта ошибка:
Jan 27 17:19:13 myvps-mail-receiver postfix/spawn[363]: warning: command /usr/bin/policyd-spf exit status 120
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: warning: problem talking to server private/policyd-spf: Connection timed out
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: NOQUEUE: reject: RCPT from mail-server.employer.tld[XX.XXX.XX.XX]: 451 4.3.5 <4eb16fb194e4f56c53b738dd8b3f3411@reply.my_domain.tld>: Recipient address rejected: Server configuration problem; from=me@employer.tld to=<4eb16fb194e4f56c53b738dd8b3f3411@reply.my_domain.tld> proto=ESMTP helo=<mail-server.employer.tld>
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: using backwards-compatible default setting smtpd_relay_before_recipient_restrictions=no to reject recipient “4eb16fb194e4f56c53b738dd8b3f3411@reply.my_domain.tld” from client “mail-server.employer.tld[XX.XXX.XX.XX]”
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: disconnect from mail-server.employer.tld[XX.XXX.XX.XX] ehlo=1 mail=1 rcpt=0/1 data=0/1 rset=1 quit=1 commands=4/6
<22>Jan 27 17:20:56 policyd-spf[367]: : prepend Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=XX.XXX.XX.XX; helo=mail-server.employer.tld; envelope-from=me@employer.tld; receiver=reply.my_domain.tld <22>Jan 27 17:20:56 policyd-spf[367]: Traceback (most recent call last):
Jan 27 17:20:56 myvps-mail-receiver postfix/spawn[366]: warning: command /usr/bin/policyd-spf exit status 120
DiscourseHelper:
Поиск
Поиск по запросу: postfix policyd-spf exit status 120 server configuration problem connection timed out reason and solution
Похоже, что ваши логи ошибок указывают на проблемы с postfix и policyd-spf. В частности:
Код выхода 120 для policyd-spf:
Обычно это указывает на проблему в конфигурации или правах доступа policyd-spf. Policyd-SPF используется для проверки входящих писем на основе фреймворка Sender Policy Framework (SPF). Код выхода 120 часто означает ошибку приложения или невозможность обработать требования проверки SPF.
Тайм-аут подключения к private/policyd-spf:
Это происходит, когда postfix не может связаться со службой policyd-spf, вероятно, из-за:
Неверного пути или конфигурации сокета для связи.
Неправильной настройки процесса spawn для policyd-spf или его сбоя при инициализации.
Отклонение адреса получателя со статусом 451:
Адрес электронной почты получателя отклонен из-за «проблемы конфигурации сервера». Это указывает на то, что из-за сбоя проверки SPF postfix не может принять получателя.
Шаги для решения проблемы:
Проверьте конфигурацию policyd-spf:
Убедитесь, что конфигурации, связанные с SPF в /etc/postfix/main.cf (или аналогичной), указывают на правильную службу политик:
policy-spf unix - n n - - spawn
user=nobody argv=/usr/bin/policyd-spf
Если путь к команде argv (/usr/bin/policyd-spf) неверен, исправьте его.
Служба и логи:
Перезапустите службу policyd-spf:
systemctl restart policyd-spf
Просмотрите дополнительные логи policyd-spf для выявления конкретных проблем:
journalctl -u policyd-spf
Конфигурация Postfix:
Убедитесь, что postfix правильно использует policyd-spf. В файле /etc/postfix/master.cf проверьте:
smtp inet n - n - - smtpd
-o smtpd_recipient_restrictions=permit_mynetworks,reject_unauth_destination,check_policy_service=unix:private/policyd-spf
Проверьте права доступа к файлам в /etc/postfix и пути к сокетам.
Тестирование SPF:
Попробуйте вручную проверить запись SPF с помощью внешних инструментов или через CLI (команда dig):
dig +short txt yourdomain.com
Убедитесь, что ваши записи SPF для электронной почты верны.
Связь через сокет:
Проверьте, существует ли сокет private/policyd-spf и доступен ли он:
ls /var/spool/postfix/private/policyd-spf
# При необходимости измените права доступа, если файл существует:
chown postfix:postfix /var/spool/postfix/private/policyd-spf
chmod 770 /var/spool/postfix/private/policyd-spf
Если файл сокета отсутствует, пересоздайте или пересоздайте Unix-сокет.
Ошибки конфигурации:
Проверьте параметры по умолчанию в /etc/policyd-spf/policyd-spf.conf и убедитесь в их корректности для вашего случая использования.
Если после изменения конфигурации проблемы сохраняются, обратитесь к вашему хостинг-провайдеру или в службу поддержки Discourse, чтобы убедиться в исправности сервера и правильности настроек подключения. Также вы можете изучить дополнительную документацию по проблемам SPF или форумы сообщества postfix/policyd.
Я попробовал сделать всё возможное, исходя из этих ответов, но ничто не помогает решить проблему. Думаю, самым полезным было бы, если бы кто-нибудь рассказал, как вывести содержимое трассировок Python из policyd-spf в файлы журналов. Есть какие-нибудь предложения? Или это просто ложная тревога?
Приношу извинения за то, что поднимаю эту старую тему, но у меня возникла аналогичная проблема. Недавно я перенёс свою личную почту с Gmail на самодостаточную почтовую систему и столкнулся с той же проблемой, что и автор оригинального поста. Я могу отправлять письма с Gmail на свой сайт Discourse, но не могу отправлять их со своего собственного почтового сервера. Вместо этого письмо возвращается с ошибкой, и в логах моего почтового сервера появляется та же ошибка, что и у автора оригинального поста.
Я ожидал определённых сложностей при самостоятельной настройке почтового сервера (работа с почтой — дело непростое!), но всё же решил попробовать. Прошло уже несколько месяцев, и почта, кажется, доставляется повсюду, кроме этого случая. Кроме того, отчёт на mxtoolbox.com для моего домена и IP-адреса показывает всё зелёным.
Буду благодарен за любые советы!
Редакция: на самом деле, я понял, что текст моей ошибки немного отличается.
<22>Apr 3 18:14:28 policyd-spf[130]: : 550 5.7.23 Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.net/Why?s=mfrom;id=user@example.org;ip=192.0.2.1;r=example-site.example.orgApr 03 18:14:28 discourse-mail-receiver-example-site postfix/smtpd[122]: NOQUEUE: reject: RCPT from unknown[192.0.2.1]: 550 5.7.23 <staff@example-site.example.org>: Recipient address rejected: Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.net/Why?s=mfrom;id=user@example.org;ip=192.0.2.1;r=example-site.example.org; from=<user@example.org> to=<staff@example-site.example.org> proto=ESMTP helo=<discourse.example.org>
Apr 03 18:14:28 discourse-mail-receiver-example-site postfix/smtpd[122]: using backwards-compatible default setting smtpd_relay_before_recipient_restrictions=no to reject recipient "staff@example-site.example.org" from client "unknown[192.0.2.1]"
Apr 03 18:14:28 discourse-multisite-mail-receiver-example-site postfix/smtpd[122]: disconnect from unknown[192.0.2.1] ehlo=1 mail=1 rcpt=0/1 data=0/1 rset=1 quit=1 commands=4/6
Ссылка на http://www.openspf.net/Why?s=mfrom;id=user@example.org не работает. Похоже, что openspf.net больше не существует.