Недопустимое имя HELO при отправке с помощью TIDSmtp

При использовании Delphi 2007 и Indy 10.6.2.0 у меня возникает следующая ошибка при попытке использовать TIdSMTP в определенной учетной записи:

Отказано в доступе — неверное имя HELO (см. RFC2821 4.1.1.1)

Я впервые вижу эту ошибку. Другие аккаунты отправляются без проблем. По соображениям безопасности я не могу предоставить учетные данные, но учетная запись подключена к порту 587 и использует SSL со следующими параметрами:

SSLOptions.Method := sslvTLSv1;
SSLOptions.VerifyMode := [];
SSLOptions.VerifyDepth := 0;
OnStatusInfo := ssl1statusinfo;

person delphirules    schedule 20.01.2020    source источник
comment
Вы присвоили имя TIdSMTP.HeloName? Некоторые серверы требуют этого.   -  person whosrdaddy    schedule 20.01.2020
comment
@whosrdaddy Нет, что мне назначить?   -  person delphirules    schedule 20.01.2020
comment
неважно, возможно, сервер smtp нуждается в аутентификации. Вы проверили и протестировали с помощью почтового клиента (например, Mozilla Thunderburd), что вы действительно можете отправлять электронные письма?   -  person whosrdaddy    schedule 20.01.2020
comment
может быть связано   -  person whosrdaddy    schedule 20.01.2020
comment
вы пробовали другие библиотеки? лично я закончил делать SMTP с библиотекой Ararat Synapse. Это упрощенно и, возможно, даже barebone, но потому что, если бы я мог отладить его код и посмотреть, как он работает внутри и так далее. Каждый раз, когда я смотрел на Инди, мне казалось, что это огромный перепроектирование, как лабиринт, из которого я, возможно, не найду выхода :-)   -  person Arioch 'The    schedule 20.01.2020
comment
@Arioch'Спасибо за предложение, но до сих пор Инди работал очень хорошо для меня, и у них тоже была хорошая поддержка. На данный момент изменить библиотеку будет проблематично   -  person delphirules    schedule 20.01.2020
comment
@whosrdaddy Да, в Thunderbird работают те же учетные данные!   -  person delphirules    schedule 20.01.2020
comment
Затем используйте что-то вроде Microsoft Network Monitor или WireShark для перехвата и анализа SMTP-трафика. Посмотрите, какие HELO и другие команды были отправлены Thunderbird и вашим приложением, и подумайте о различиях. Возможно, вам нужно временно отключить SSL, или, возможно, для этих утилит есть модули TLS MITM, не знаю.   -  person Arioch 'The    schedule 21.01.2020


Ответы (1)


Как заявил @whosrdaddy в комментариях, TIdSMTP.HeloName — это решение вашей ошибки. Это не проблема аутентификации или SSL. Установите HeloName на соответствующее имя узла DNS, представляющее ваш клиент, например, из GetComputerNameEx() или хотя бы ваш общедоступный IP-адрес. Если вы не установите HeloName, TIdSMTP будет использовать имя хоста или имя компьютера локального компьютера, которое может быть или не быть в формате свойств DNS для приема SMTP-сервером, в зависимости от конфигурации. Некоторые серверы не заботятся об этом, но некоторые делают.

person Remy Lebeau    schedule 20.01.2020
comment
Спасибо, но я пытаюсь установить TIDSmtp.HeloName, используя мое имя хоста, локальный IP-адрес и общедоступный IP-адрес, но ничего не работает, та же ошибка остается: X - person delphirules; 21.01.2020
comment
Может быть, я могу отправить вам учетные данные, чтобы вы могли отладить, почему не отправляется? - person delphirules; 21.01.2020
comment
@delphirules нет, потому что ошибка возникает до того, как происходит аутентификация, во время начального SMTP-рукопожатия, когда клиент и сервер приветствуют друг друга, поэтому учетные данные не имеют значения. И мое имя хоста будет отличаться от вашего. Скорее всего, вам придется связаться с администратором сервера и спросить, почему вашему клиенту отказано в доступе. Возможно, сервер использует белый список разрешенных машин, а вашей машины нет в списке. - person Remy Lebeau; 21.01.2020
comment
Это маловероятно, потому что просто используя Thunderbird без каких-либо специальных настроек, это сработает... Я нашел эту тему: techieshelp.com/ , может быть, это связано? - person delphirules; 21.01.2020
comment
Я связался с провайдером электронной почты, они сказали, что особых требований к HELO нет... кажется, что-то отсутствует на TIdSmtp. - person delphirules; 31.01.2020
comment
Уверяю вас, ничего не пропало. Провайдеру, вероятно, потребуется проанализировать ваш сеанс SMTP на своей стороне, чтобы выяснить, откуда на самом деле происходит сбой. Вы получаете сообщение об ошибке от сервера, поэтому им нужно выяснить, почему он не работает. Вы сделали то, что предложил Ариох, и захватили сетевой трафик от Thunderbird и сравнили его с сетевым трафиком от TIdSMTP, чтобы увидеть, есть ли какие-либо различия? - person Remy Lebeau; 31.01.2020