Как сконфигурировать получение SMTP command pipelining?

Ссылка скопирована
1 ответ

По вводным: postfix отказывается принимать письма от почтовых доменов на хостинге Яндекса, и некоторых других
По вводным: в конфиге включены smtpd_data_restrictions = reject_unauth_pipelining
Сейчас ситуация такая: но и проверял убирать эту настройку, не проходят письма все равно
Нужно понять: можно его заставить отправить без pipelining?

Sep 17 17:22:20 postfix/smtpd[2863]: connect from forward502a.mail.yandex.net[178.154.239.82] Sep 17 17:22:20 postfix/smtpd[2863]: Anonymous TLS connection established from forward502a.mail.yandex.net[178.154.239.82]: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) Sep 17 17:23:55 policyd-spf[2880]: prepend Received-SPF: None (mailfrom) identity=mailfrom; client-ip=178.154.239.82; helo=forward502a.mail.yandex.net; envelope-from=aaaaaaaa@yandex.ru; receiver=<UNKNOWN> Sep 17 17:23:55 postgrey[990]: action=pass, reason=client AWL, client_name=forward502a.mail.yandex.net, client_address=178.154.239.82/32, sender=aaaaaaaa@yandex.ru, recipient=aaaaaaaa@gazbank.ru Sep 17 17:23:56 postfix/smtpd[2863]: 009EE208C2: client=forward502a.mail.yandex.net[178.154.239.82] Sep 17 17:23:56 postfix/smtpd[2863]: improper command pipelining after DATA from forward502a.mail.yandex.net[178.154.239.82]: Sep 17 17:23:56 postfix/smtpd[2863]: 009EE208C2: reject: DATA from forward502a.mail.yandex.net[178.154.239.82]: 503 5.5.0 <DATA>: Data command rejected: Improper use of SMTP command pipelining; from=<aaaaaaaa@yandex.ru> to=<aaaaaaaa@gazbank.ru> proto=ESMTP helo=<forward502a.mail.yandex.net> Sep 17 17:23:56 postfix/smtpd[2863]: lost connection after DATA from forward502a.mail.yandex.net[178.154.239.82] Sep 17 17:23:56 postfix/smtpd[2863]: disconnect from forward502a.mail.yandex.net[178.154.239.82] ehlo=2 starttls=1 mail=1 rcpt=1 data=0/1 commands=5/6

По вводным: закомментил строку reject_unauth_pipelining, теперь так стало

Sep 17 18:42:41 postfix/smtpd[5701]: improper command pipelining after DATA from forward501b.mail.yandex.net[178.154.239.145]: Sep 17 18:42:41 postfix/smtpd[5701]: lost connection after DATA (0 bytes) from forward501b.mail.yandex.net[178.154.239.145] Sep 17 18:42:41 postfix/smtpd[5701]: disconnect from forward501b.mail.yandex.net[178.154.239.145] ehlo=2 starttls=1 mail=1 rcpt=2 data=0/1 commands=6/7
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Редакция DevOps Ответ

SMTP command pipelining — это расширение SMTP, при котором клиент может отправлять несколько команд подряд, не дожидаясь ответа на каждую. Но «сконфигурировать получение» pipelining обычно нельзя только на стороне клиента: сервер должен объявить поддержку PIPELINING в ответе EHLO, а клиент должен уметь этим пользоваться.

Проверьте, объявляет ли сервер PIPELINING:

openssl s_client -connect smtp.example.com:465 -crlf
EHLO test.example.com

openssl s_client -connect smtp.example.com:465 -crlf EHLO test.example.com

Или для STARTTLS:

openssl s_client -starttls smtp -connect smtp.example.com:587 -crlf
EHLO test.example.com

openssl s_client -starttls smtp -connect smtp.example.com:587 -crlf EHLO test.example.com

В ответе сервера должны быть строки возможностей. Если там есть PIPELINING, сервер поддерживает расширение. Если нет, клиент не должен отправлять команды пачкой.

250-smtp.example.com
250-PIPELINING
250-SIZE 52428800
250-STARTTLS
250 AUTH PLAIN LOGIN

250-smtp.example.com 250-PIPELINING 250-SIZE 52428800 250-STARTTLS 250 AUTH PLAIN LOGIN

Если вопрос связан с Яндексом или внешним SMTP, вы не сможете заставить чужой сервер объявлять PIPELINING. Можно только выбрать порт/режим, проверить EHLO и настроить свой клиент. Если вы администрируете свой Postfix, поддержка обычно включена по умолчанию, но может зависеть от smtpd_discard_ehlo_keywords:

postconf | grep smtpd_discard_ehlo_keywords
postconf | grep pipelining

postconf | grep smtpd_discard_ehlo_keywords postconf | grep pipelining

  • PIPELINING не ускорит авторизацию, если задержка вызвана TLS или DNS;
  • не все клиенты используют pipelining даже при поддержке сервера;
  • на антиспам-шлюзах расширение могут отключать специально;
  • после изменения SMTP-сервера проверяйте логи mail.log/maillog.

Если цель — ускорить массовую отправку, обычно важнее держать соединение открытым, не выполнять reconnect на каждое письмо, настроить DNS/rDNS/SPF/DKIM и ограничить rate по требованиям провайдера.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно