【问题标题】:Why does SendGrid allow me to send emails from any address?为什么 SendGrid 允许我从任何地址发送电子邮件?
【发布时间】:2019-01-24 23:05:46
【问题描述】:

我有一个本地 python 文件,用于通过 sendgrid 的 SMTP 发送电子邮件:

gmail_sender = "example@gmail.com"
server_username = "apikey"
server_password = prod.CONFIG['sendgrid_SMTP']

server = smtplib.SMTP_SSL('smtp.sendgrid.net', 465)
server.login(server_username, server_password)

email_information['From'] = gmail_sender

server.sendmail(email_information['From'], email_information['To'], 
    email_information.as_string())

我对发送电子邮件的人感到困惑。我用多个不同的电子邮件替换了 gmail_sender,并且无需为这些电子邮件提供密码,我可以通过 sendgrid 的 SMTP 发送电子邮件。在我发送的电子邮件的发件人部分中,它显示了我作为 gmail_sender 加上“通过 sendgrid.net”的电子邮件。我可以让它看起来像是有人发送了电子邮件,这不是安全问题吗?

任何指导表示赞赏:)

【问题讨论】:

  • 我认为大多数电子邮件提供商都不会接受这一点。 stackoverflow.com/questions/41750465/…
  • 感谢您的链接;我觉得这不应该是可能的,但我只是这样做了......
  • @jamesfdearborn 链接的问题基本上展示了 consumer 电子邮件基础架构的常见限制。一旦您拥有自己的声誉良好的电子邮件服务器,那么 1990 年代黑暗中的各种诡计就会再次成为可能。
  • (...或与愿意租给您的人签订的合同,只是为了明确涵盖这种情况。)
  • 我刚刚开始使用 sendgrid,当我使用我的实际电子邮件地址时,用于创建然后发件人的格式会产生一个错误,上面写着“来自电子邮件必须是唯一的”。我找不到任何文档。我创建了一个新的电子邮件地址(在我的域上),但实际上并没有使用该名称的用户。这对我来说是使用 sendgrid 的要求没有任何意义。

标签: python smtp sendgrid smtp-auth


【解决方案1】:

替代方案相当令人生畏。您必须在技术上向他们证明您要发送的每个地址实际上都是您的。

某些服务要求您通过向您提供唯一的 cookie 并告诉您将其发布到域的 DNS 记录中来证明 是您的。如果您可以控制某个域的 DNS,那么您就可以控制该域。但是电子邮件没有类似的机制 - 您可以简单地在电子邮件上伪造发件人,这应该证明您拥有该地址。

无论如何,为您要使用的每个域都经历这样的考验已经是一件苦差事了。想象一下,对于想要使用数十个、数百个甚至数千个不同发件人地址的客户来说,这意味着什么。

Sendgrid 服务条款包含一些关于网络滥用的通用语言,可能适用于使用他人的电子邮件地址。我在他们的 ToS 中找不到任何关于地址伪造的具体内容。在合同中有法律限制(并强制执行!)使他们无需实施技术限制。

【讨论】:

  • 为什么任何公司都需要使用多个发件人地址?
  • 相信我,他们会的。不同的活动、不同的部门、不同的邮件列表......
猜你喜欢
  • 2021-07-10
  • 1970-01-01
  • 2011-03-07
  • 2022-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 2018-11-08
相关资源
最近更新 更多