Ошибка номера версии Hotmail SSL3 с использованием smtp

Я пытаюсь использовать hotmail smtp-сервер из python. Однако моя попытка входа в систему вызывает очевидную ошибку номера версии SSL3. Как я могу изменить версию, которую я использую, и как я могу ее расследовать?

>> s.connect('smtp.live.com:587') (220, 'BLU0-SMTP46.phx.gbl Microsoft ESMTP MAIL Service, Version: 6.0.3790.4675 ready at Tue, 2 Jul 2013 12:15:57 -0700') >> s.ehlo() (250, 'BLU0-SMTP46.phx.gbl Hello [123.456.789.01]\nTURN\nSIZE 41943040\nETRN\nPIPELINING\nDSN\nENHANCEDSTATUSCODES\n8bitmime\nBINARYMIME\nCHUNKING\nVRFY\nTLS\nSTARTTLS\nOK') s.starttls() (220, '2.0.0 SMTP server ready') >> s.login('my.email@hotmail.com','MyPaSsW0rD') --------------------------------------------------------------------------- SMTPServerDisconnected Traceback (most recent call last) <ipython-input-48-c8e9d7577d8d> in <module>() ----> 1 s.login('mymemail@hotmail.com','myPassw0rd') /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.pyc in login(self, user, password) 600 elif authmethod == AUTH_PLAIN: 601 (code, resp) = self.docmd("AUTH", --> 602 AUTH_PLAIN + " " + encode_plain(user, password)) 603 elif authmethod == AUTH_LOGIN: 604 (code, resp) = self.docmd("AUTH", /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.pyc in docmd(self, cmd, args) 384 """Send a command, and return its response code.""" 385 self.putcmd(cmd, args) --> 386 return self.getreply() 387 388 # std smtp commands /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.pyc in getreply(self) 357 self.close() 358 raise SMTPServerDisconnected("Connection unexpectedly closed: " --> 359 + str(e)) 360 if line == '': 361 self.close() SMTPServerDisconnected: Connection unexpectedly closed: [Errno 1] _ssl.c:1363: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number 

Моя версия SSL:

 >> import _ssl >> print _ssl.OPENSSL_VERSION OpenSSL 1.0.1e 11 Feb 2013 

Возможно, это связано: Python Smtp SSL неправильная версия на Linux

One Solution collect form web for “Ошибка номера версии Hotmail SSL3 с использованием smtp”

Я могу дублировать вашу проблему с Debian Wheezy с Python 2.7.3, которая использует ту же самую версию OpenSSL, которую вы сообщаете. Я захватил пакеты с Wireshark, и есть успешное рукопожатие TLS, и некоторые данные обмениваются. Вскоре после этого клиентский конец получает недовольство тем, что сервер отправляет и закрывает соединение.

Я смог обойти проблему, используя SSL3 вместо TLS. Я не мог понять, как исправить библиотечный метод в Python, чтобы другие библиотеки, которые его использовали, ведут себя по-другому, поэтому я просто сделал свою собственную локальную копию smtplib .

Я скопировал версию smtplib версии smtplib (щелкните по ссылке для загрузки) и изменил одну строку:

  self.sock = ssl.wrap_socket(self.sock, keyfile, certfile) 

в

  self.sock = ssl.wrap_socket(self.sock, keyfile, certfile, ssl_version=ssl.PROTOCOL_SSLv3) 

Затем с отредактированным файлом в моем локальном каталоге я получаю:

 Python 2.7.3 (default, Jan 2 2013, 13:56:14) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import smtplib >>> s = smtplib.SMTP() >>> s.connect('smtp.live.com:587') (220, 'BLU0-SMTP418.blu0.hotmail.com Microsoft ESMTP MAIL Service, Version: 6.0.3790.4675 ready at Wed, 3 Jul 2013 09:59:32 -0700') >>> s.ehlo() (250, 'BLU0-SMTP418.blu0.hotmail.com Hello [24.143.227.254]\nTURN\nSIZE 41943040\nETRN\nPIPELINING\nDSN\nENHANCEDSTATUSCODES\n8bitmime\nBINARYMIME\nCHUNKING\nVRFY\nTLS\nSTARTTLS\nOK') >>> s.starttls() (220, '2.0.0 SMTP server ready') >>> s.ehlo() (250, 'BLU0-SMTP418.blu0.hotmail.com Hello [24.143.227.254]\nTURN\nSIZE 41943040\nETRN\nPIPELINING\nDSN\nENHANCEDSTATUSCODES\n8bitmime\nBINARYMIME\nCHUNKING\nVRFY\nAUTH LOGIN PLAIN\nOK') >>> s.login('my.email@hotmail.com','MyPaSsW0rD') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "smtplib.py", line 615, in login raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, '5.0.0 Authentication Failed') >>> 

У меня нет учетной записи Hotmail, поэтому я не могу пройти здесь, но больше нет ошибки SSL.

  • Как отключить проверку имени хоста в запросах python
  • Как использовать WSGI для перенаправления пользователя с http на https
  • Извлечение и анализ HTML с безопасного сайта с помощью Python?
  • python httplib Имя или услуга неизвестны
  • TCP-сервер через SSL с помощью SocketServer.TCPServer
  • urllib и "SSL: CERTIFICATE_VERIFY_FAILED" Ошибка
  • Внедрение безопасности транспортного уровня в Python - простой почтовый клиент
  • Как сделать python только на https Heroku?
  • Python FTP неявная проблема подключения TLS
  • бутылка на черрижском сервере + ssl
  • Feedparser.parse () 'SSL: CERTIFICATE_VERIFY_FAILED'
  • Python - лучший язык программирования в мире.