首页 > 解决方案 > 为什么 SendGrid 允许我从任何地址发送电子邮件?

问题描述

我有一个本地 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”的电子邮件。我可以让它看起来像是有人发送了电子邮件,这不是安全问题吗?

任何指导表示赞赏:)

标签: pythonsmtpsendgridsmtp-auth

解决方案


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

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

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

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


推荐阅读