获取在Python原始电子邮件发件人服务器

问题描述 投票:1回答:1

由于许多电子邮件服务,您可以被骗相信电子邮件已经从不同的地址发送。

在使用Python smtplib,你可以很容易地通过操纵From参数做的伎俩。

因为它们打印gmail参数,它显示了原始服务器via是不容易说。

不过,我找不到任何地方是你如何在Python中恢复原始(未操作)服务器名,同为gmail他们via的功能呢?

我已经试过imaplibemail库,但我只能访问已经操纵发件人。

有任何想法吗?是只与特定的供应商(例如GoogleOutlookhotmail等)的配置,或可被东西不管做呢?

这是我目前使用(没有成功)的部分代码:

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)')
python email imap
1个回答
2
投票

从来没有听说过的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 5321Received头始终会被添加在上面。

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域:

  • ISP迫使用户使用自己的SMTP服务器
  • 使用多个电子邮件账户的邮件客户端只提供一个单一的配置SMTP
© www.soinside.com 2019 - 2024. All rights reserved.