由于许多电子邮件服务,您可以被骗相信电子邮件已经从不同的地址发送。
在使用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服务器连接来发送消息的用户。
例:
Received: from mail-ot1-x333.google.com (mail-ot1-x333.google.com [IPv6:2617:f8c0:4864:20::331])
by smtp.domain.tld (Postfix) with ESMTPS id 6C488D0F8
for <[email protected]>; Mon, 19 Nov 2018 21:13:54 +0100 (CET)
Received: by mail-ot1-x333.google.com with SMTP id w25so38121669otm.11
for <[email protected]>; Mon, 19 Nov 2018 12:13:54 -0800 (PST)
连接到mail-ot1-x333.google.com
用户,张贴[email protected]
的消息。 SMTP服务器加入出现在底部的Received
报头。然后,将其发送到domain.tld
的消息,并且在后缀服务器domain.tld
补充,在顶部显示的标题。
从RFC 5321的Received
头始终会被添加在上面。
An Internet mail program MUST NOT change or delete a Received: line
that was previously added to the message header section. SMTP
servers MUST prepend Received lines to messages; they MUST NOT change
the order of existing lines or insert Received lines in any other
location.
最后每个人都应该是一个指示用户连接到SMTP服务器。
请注意,有很好的理由有不用于发送邮件的SMTP服务器匹配From
域: