【发布时间】:2019-09-17 19:48:46
【问题描述】:
我正在了解什么是the proper way to send an email from Python code。我在understanding of MX lookup 中取得了一些进步,不过:“知识岛越大,奇迹的海岸线越长”。
感谢this answer,我能够使用此代码-sn-p 发送一封电子邮件(虽然是disposable mailbox):
import smtplib
from email.message import EmailMessage
message = EmailMessage()
message.set_content('Content of the message here.')
message['Subject'] = 'Mail sent from code'
message['From'] = 'whoever@whatever.com'
message['To'] = 'aloun36zmzazyxd3tyop@3mail.rocks'
smtplib.SMTP('mail.3mail.rocks:2525')
smtp_server.send_message(message)
smtp_server.quit()
以下是我想出 SMTP 地址和端口 (mail.3mail.rocks:2525) 的方法:
-
为
3mail.rocks域完成 MX 查找:-
host -t mx 3mail.rocks3mail.rocks mail is handled by 10 mail.3mail.rocks.
-
-
然后我刚开始检查ports used by default,与
telnet mail.3mail.rocks xxx,这给了我以下结果:-
telnet mail.3mail.rocks 25Trying 89.38.99.80... telnet: connect to address 89.38.99.80: Connection refused telnet: Unable to connect to remote host -
telnet mail.3mail.rocks 465Trying 89.38.99.80... telnet: connect to address 89.38.99.80: Operation timed out telnet: Unable to connect to remote host -
telnet mail.3mail.rocks 587Trying 89.38.99.80... telnet: connect to address 89.38.99.80: Operation timed out telnet: Unable to connect to remote host -
telnet mail.3mail.rocks 2525Trying 89.38.99.80... Connected to mail.3mail.rocks. Escape character is '^]'. 220 node1 ESMTP Haraka 2.8.16 ready
所以,这就是我找出所需端口的方法(本质上是通过蛮力)。
-
我继续在另一个一次性邮件服务 (mailforspam.com) 上测试我的 sn-p,遵循相同的步骤 — 返回 MX 查找 (host -t mx mailforspam.com):
mailforspam.com mail is handled by 10 mail2.mailforspam.com.
mailforspam.com mail is handled by 10 mail1.mailforspam.com.
虽然我无法通过 telnet 连接(我已尝试过两个服务器 mail2.mailforspam.com 和 mail1.mailforspam.com)到任何默认端口:端口 25 — Connection refused、端口 2525、587 , 465 — Operation timed out.
问题是:
- 如何确定代表特定域(由 MX 查找返回的域)接受邮件的服务器的正确端口?我的理解是,“默认”端口只是约定,实际上,服务器可以使用他们选择的任何空闲端口。
- 我假设当电子邮件从一个电子邮件提供商发送到另一个电子邮件提供商时,它提交到的 SMTP 服务器(属于正在发送电子邮件的用户的服务器)会执行类似的操作(即 MX 查找 => 连接到邮件接受服务器 = > 提交电子邮件)。这样的“真实世界”服务器如何找出正确的端口(或者他们只是通过默认端口进行暴力破解)?
【问题讨论】:
标签: python email networking smtp