使用 Django 通过反向 DNS 设置向 AWS 发送电子邮件以指向不同的服务器

Using Django to send emails with AWS with a reverse DNS setup to point at a different server

我正在尝试在 AWS 实例上设置 Django 以通过我的主要网站的服务器(非 AWS)发送电子邮件,而不是需要使用外部邮件服务,例如 Mandrill、Amazon SES...等

我首先设置主服务器的 DNS 记录以将子域指向 aws 实例的弹性 IP,例如:

mail1.website.com-->1.1.1.1

我提交了一个请求,要求设置一个反向 DNS 记录设置,将我的 AWS 实例的弹性 IP 指向一个子域,他们设置了它,例如:

1.1.1.1 --> mail1.website.com

现在设置了反向 dns 记录 mail1.website.com 应该可以在 django 中使用来发送电子邮件而不会被标记为垃圾邮件。

https://docs.djangoproject.com/es/1.9/topics/email/#smtp-backend

使用以下是否足够?

EMAIL_HOST = 'mail1.website.com'
DEFAULT_FROM_EMAIL = 'test.website.com'

如果我需要提供电子邮件 user/password/port 是否可以将其设置为使用特定的电子邮件登录,例如 aws_no_reply@website.com 然后从 test@website.com 发送电子邮件或者我是否必须设置根电子邮件地址的 smtp 设置

No_reply 邮箱:

EMAIL_HOST = 'mail1.website.com'
EMAIL_HOST_USER = 'aws_no_reply@website.com'
EMAIL_HOST_PASSWORD = 'mypasshere'
EMAIL_PORT = 465
DEFAULT_FROM_EMAIL = 'test.website.com'

或根:

EMAIL_HOST = 'mail1.website.com'
EMAIL_HOST_USER = 'root'
EMAIL_HOST_PASSWORD = 'mypasshere'
EMAIL_PORT = 465
DEFAULT_FROM_EMAIL = 'test@website.com'

我不确定我是否理解您尝试这样做的原因,但如果您当前的电子邮件服务器运行正常,并且您希望能够使用它来中继来自您的 AWS 实例的电子邮件,我会只需在 AWS 和您当前的网络之间设置一个 VPN,并允许您的 AWS 实例以这种方式发送电子邮件。您没有将电子邮件服务器用作外部中继,因此送达率不应改变。

但实际上,正确的答案是使用 SES 发送电子邮件。只要您不做任何侮辱性的事情,您的送达率应该没有问题。

编辑:您提到的特定例外情况(SPF_SOFTFAIL、RDNS_DYNAMIC 和 HELO_DYNAMIC_IPADDR)可能不会消失,即使您为 AWS 实例设置了反向 DNS public IP - 你仍然从已知的 "dynamic" IP 地址池中提取 - AWS 发布了他们的 IP 地址列表 here - 我怀疑人们是否会费心检查其中的一小部分是正确设置。

设置 SPF 以允许 AWS 代表您发送是 pretty easy