Так что я пытаюсь отправлять письма через скрипт python. Он работает нормально, используя обычный формат адреса получателя «[email protected]». Когда я сейчас пытаюсь использовать скрипт с получателем «user @ [IP-Address], все мои выходные данные отладки выглядят хорошо, а метод sendmail работает, но почта никогда не принимается. Я получаю IP-адрес через dig от моего терминала .Отправлять почту на IP-адрес с помощью python
Это мой метод, ожидающий приемник в качестве параметра (вырезать некоторые маловажную вещи из зашифрованы и реальные адреса/учетные данные)
def sendmail(receiver):
msg = MIMEText('This is the body of the mail.')
msg['From'] = email.utils.formataddr(('me', myaddr))
msg['To'] = email.utils.formataddr(('me', receiver))
msg['Subject'] = "Python Mail Script"
server = smtplib.SMTP(smtpServer, smtpPort)
try:
server.set_debuglevel(True)
# identify ourselves, prompting server for supported features
server.ehlo()
# If we can encrypt this session, do it
if server.has_extn('STARTTLS'):
server.starttls()
server.ehlo() # re-identify ourselves over TLS connection
server.login("[email protected]", "...")
server.sendmail("[email protected]", toAddr, msg.as_string())
finally:
server.quit()
выход я получаю для отправки сообщения на IP-адрес является (снова я запутывал SMTP-сервер и почтовые/IP-адреса):
send: 'ehlo [127.0.1.1]\r\n'
reply: '250-mail.example.de\r\n'
reply: '250-PIPELINING\r\n'
reply: '250-SIZE 102400000\r\n'
reply: '250-VRFY\r\n'
reply: '250-ETRN\r\n'
reply: '250-STARTTLS\r\n'
reply: '250-AUTH PLAIN LOGIN\r\n'
reply: '250-AUTH=PLAIN LOGIN\r\n'
reply: '250-ENHANCEDSTATUSCODES\r\n'
reply: '250-8BITMIME\r\n'
reply: '250 DSN\r\n'
reply: retcode (250); Msg: mail.example.de
PIPELINING
SIZE 102400000
VRFY
ETRN
STARTTLS
AUTH PLAIN LOGIN
AUTH=PLAIN LOGIN
ENHANCEDSTATUSCODES
8BITMIME
DSN
send: 'STARTTLS\r\n'
reply: '220 2.0.0 Ready to start TLS\r\n'
reply: retcode (220); Msg: 2.0.0 Ready to start TLS
send: 'ehlo [127.0.1.1]\r\n'
reply: '250-mail.example.de\r\n'
reply: '250-PIPELINING\r\n'
reply: '250-SIZE 102400000\r\n'
reply: '250-VRFY\r\n'
reply: '250-ETRN\r\n'
reply: '250-AUTH PLAIN LOGIN\r\n'
reply: '250-AUTH=PLAIN LOGIN\r\n'
reply: '250-ENHANCEDSTATUSCODES\r\n'
reply: '250-8BITMIME\r\n'
reply: '250 DSN\r\n'
reply: retcode (250); Msg: mail.example.de
PIPELINING
SIZE 102400000
VRFY
ETRN
AUTH PLAIN LOGIN
AUTH=PLAIN LOGIN
ENHANCEDSTATUSCODES
8BITMIME
DSN
send: 'AUTH PLAIN AHRob21hc0B0b3Jh6feldi5kZQBiYWdpbmVy\r\n'
reply: '235 2.7.0 Authentication successful\r\n'
reply: retcode (235); Msg: 2.7.0 Authentication successful
send: 'mail FROM:<[email protected]> size=234\r\n'
reply: '250 2.1.0 Ok\r\n'
reply: retcode (250); Msg: 2.1.0 Ok
send: 'rcpt TO:<[email protected][IP-ADDRESS]>\r\n'
reply: '250 2.1.5 Ok\r\n'
reply: retcode (250); Msg: 2.1.5 Ok
send: 'data\r\n'
reply: '354 End data with <CR><LF>.<CR><LF>\r\n'
reply: retcode (354); Msg: End data with <CR><LF>.<CR><LF>
data: (354, 'End data with <CR><LF>.<CR><LF>')
send: 'Content-Type: text/plain; charset="us-ascii"\r\nMIME-Version: 1.0\r\nContent-Transfer-Encoding: 7bit\r\nFrom: me <[email protected]>\r\nTo: me <[email protected][IP-ADDRESS]>\r\nSubject: Python Mail Script\r\n\r\nThis is the body of the mail.\r\n.\r\n'
reply: '250 2.0.0 Ok: queued as 4C5A78560196\r\n'
reply: retcode (250); Msg: 2.0.0 Ok: queued as 4C5A78560196
data: (250, '2.0.0 Ok: queued as 4C5A78560196')
send: 'quit\r\n'
reply: '221 2.0.0 Bye\r\n'
reply: retcode (221); Msg: 2.0.0 Bye
Любой, кто видит какую-либо ошибку или ошибку?
Редактировать: Используя собственный постфикс-сервер smtp в университете (к сожалению, нет доступа к внешнему миру) и отправки почты пользователю @ [IP-ADDRESS] этого самого сервера приходит почта. Вероятно, еще один признак того, что в проблемном случае, указанном выше, smtp-сервер получателя просто не разрешает IP-адрес в качестве адресата.
Edit2: /var/log/mail.log
mail.log:Sep 9 00:34:06 mail postfix/qmgr[4854]: A30168560199: from=<[email protected]>, size=1197, nrcpt=1 (queue active)
mail.log:Sep 9 00:34:06 mail postfix/smtp[19355]: A30168560199: to=<[email protected][IP-ADDRESS]>, relay=none, delay=314, delays=313/0.04/0.01/0, dsn=4.4.1, status=deferred (connect to IP-ADDRESS[IP-ADDRESS]:25: Connection refused)
mail.log:Sep 9 00:38:31 mail postfix/smtpd[19907]: warning: Illegal address syntax from my_host_where_the_python_script_runs[IP of me] in RCPT command: <[email protected]>
Таким образом, соединение с сервером SMTP я использую на сервер получателя отказывается и 4 минуты спустя SMTP демон говорит, что получил неправильный синтаксис хотя в рукопожатии, где я отправляю по моему сценарию, он говорит 250 Ok ... Так что в основном я думаю, что SMTP-получатель отказывается от него. Thx guys
Хотя это технически поддерживается RFC, возможно, хост электронной почты просто не принимает сообщения, отправленные таким образом. Это возможная тактика спама для отправки сообщений на общедоступные IP-адреса, которые принимают входящие SMTP-соединения, без фактического знания допустимого целевого домена. – admdrew
Что показывает журнал сообщений? (Если unix,/var/log/maillog) – user590028
Проблема: у меня нет доступа к smtp-серверу, который я использую для отправки этих писем. Обратившись к админу, он может отправить мне журнал. @admdrew у вас есть и действительная точка, это может быть проблемой –