在许多电子邮件服务中,您可能会被欺骗,以为电子邮件是从其他地址发送的。在
在Python中使用smtplib
,您可以通过操纵From
参数来轻松实现这一点。在
gmail
不容易出现这种情况,因为它们打印via
参数,该参数显示原始服务器。在
但是,我在任何地方都找不到如何在Python中检索原始的(未经操纵的)服务器名,就像gmail
对其via
功能的处理一样?在
我尝试过imaplib
和email
库,但是在那里我只能访问已经被操纵的发送方。在
有什么想法吗?是仅仅与特定提供者的配置相关(例如Google
、Outlook
、hotmail
等),还是可以不考虑这一点做一些事情?在
以下是我当前使用的部分代码(未成功):
import imaplib
import email
obj = imaplib.IMAP4('imap', portn)
obj.login('username', 'password')
obj.select('INBOX')
uidl_list = [68720]
resp, data = obj.uid('FETCH', ','.join(map(str, uidl_list)) , '(BODY.PEEK[HEADER.FIELDS (From Subject)] RFC822.SIZE)')
从未听说过
via
字段。它与这个特定的提供者相关。在您可以检查邮件的
Received
标头,以了解邮件经过的SMTP服务器。假设这些不是伪造的,并且在过程中没有被修改(例如,假设您信任这些服务器),那么它们应该指向用户连接以发送消息的SMTP服务器。在示例:
连接到
mail-ot1-x333.google.com
的用户为user@domain.tld
发布了一条消息。SMTP服务器添加了出现在底部的Received
标头。然后,它将消息发送到domain.tld
,位于domain.tld
的Postfix服务器添加了出现在顶部的头。在从RFC 5321开始,
^{pr2}$Received
标头总是添加在顶部。在最后一个应该总是指示用户连接到的SMTP服务器。在
请注意,
From
域与用于发送邮件的SMTP服务器不匹配是有充分理由的:相关问题 更多 >
编程相关推荐