Невалидно 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'The Благодаря за предложението, но досега Indy работи много добре за мен и те също имат добра поддръжка. В този момент библиотеката за промяна би била караница   -  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 сесия от своя страна, за да разбере откъде всъщност идва грешката. Получавате съобщение за грешка от сървъра, така че те трябва да разберат защо се проваля. Направихте ли това, което Arioch предложи и заснехте ли мрежовия трафик от Thunderbird и го сравнихте с мрежовия трафик от TIdSMTP, за да видите дали има някакви разлики? - person Remy Lebeau; 31.01.2020