Python 2.7.x не сможет отправить сообщение NTLM Type 3 из-за пустого указанного cmd:
code, response = smtp.docmd("", ntlm_message)
Это приводит к отправке правильного ответа обратно на сервер, однако он ожидает пробел из-за характера docmd (), вызывающего putcmd ().
smtplib.py:
def putcmd(self, cmd, args=""):
"""Send a command to the server."""
if args == "":
str = '%s%s' % (cmd, CRLF)
else:
str = '%s %s%s' % (cmd, args, CRLF)
self.send(str)
# ...
def docmd(self, cmd, args=""):
"""Send a command, and return its response code."""
self.putcmd(cmd, args)
return self.getreply()
, который в результате выбирает путь к условию else, тем самым отправляя str(' ' + ntlm_message + CRLF)
, что приводит к (501, 'Syntax error in parameters or arguments')
.
Таким образом, исправление заключается в простой отправке сообщения NTLM в виде cmd.
code, response = smtp.docmd(ntlm_message)
Исправление к вышеуказанному ответу было представлено, хотя кто знает, когда он будет рассмотрен / принят.