Поддержка SSL для smtp.live.com и TIdSmtp (Indy, Delphi) - PullRequest
8 голосов
/ 06 февраля 2012

Я пытаюсь подключиться к smtp.live.com для отправки электронных писем (live.com, очевидно, с 2009 года поддерживает бесплатный pop3 / smtp, но для меня это совершенно новость).

Вот что происходит, когда я пытаюсь подключиться к порту 587 smtp.live.com:

Method sslvSSLv2  - timeout (obviously the server does not support SSL2)
Method sslvSSLv3  - Error connecting with SSL. - error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Method sslvSSLv23 - Error connecting with SSL. - error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Method sslvTLSv1  - Error connecting with SSL. - error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

Я использую один и тот же код с sslvSSLv23 и sslvTLSv1, и он нормально работает с сервером gmail smtp (smtp.gmail.com, порт 465). Кроме того, Outlook отправляет почту нормально при проверке SSL и на порту 587, так что это может быть что-то, связанное с OpenSSL. Может ли кто-нибудь помочь мне с этой загадкой? Я что-то пропустил?

1 Ответ

5 голосов
/ 07 февраля 2012

Как и GMail, порт Live.com 587 требует, чтобы клиент подключился в незашифрованном виде и отправил команду STARTTLS перед тем, как инициировать рукопожатие SSL / TLS. В Indy 10 вы делаете это, устанавливая для свойства TIdSMTP.UseTLS значение utUseExplicitTLS перед подключением. Похоже, что вместо свойства UseTLS установлено значение utUseImplicitTLS (что необходимо для порта GMail 465).

...