使用 Amazon SES 的 SMTP 凭据发送电子邮件有效……但 Discourse 不行

我已经配置了 Amazon SES。
我已经脱离了沙盒环境,这意味着我可以向未经验证的地址发送电子邮件。
来自 Amazon SES 文档:

当您的账户脱离沙盒环境后,您可以向任何收件人发送电子邮件,无论收件人的地址或域名是否经过验证。但是,您仍然需要验证所有用作“发件人”、“源”、“寄件人”或“退信路径”地址的身份。

我还配置了我的 SMTP 凭据。

从 Amazon S3 控制面板或任何其他 SMTP 测试工具向未经验证的收件人发送测试电子邮件可以正常工作。

但是,从 Discourse 发送则不行。

app.yml:

  DISCOURSE_SMTP_ADDRESS: email-smtp.eu-west-3.amazonaws.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: AKIA****************
  DISCOURSE_SMTP_PASSWORD: "*************************************"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
  DISCOURSE_SMTP_DOMAIN: forum.monocycle.info # (address to send notifications from)
  DISCOURSE_NOTIFICATION_EMAIL: noreply@forum.monocycle.info # (address to send notifications from)

通过电子邮件回复设置:

当我在 Discourse 中发送测试电子邮件时,邮件被跳过并出现此错误消息:

554 消息被拒绝:电子邮件地址未经验证。在 EU-WEST-3 区域中,以下身份检查失败:monocycle.info+verp-3a76559e11c2b9a318165af8eb968f22@gmail.com

当然,在更改 app.yml 后我已重建了我的应用程序。

有什么想法可以解释为什么会出现此问题以及如何解决它?

该错误消息表明您需要为 monocycle.info@gmail.com 创建一个身份并进行验证。请注意,您无需验证标签(+verp-...),因为在未带标签的情况下验证地址时,所有标签都将被接受。

原因是电子邮件回复地址用作退信地址(Return-Path address),这是您的引用中强调需要验证的类型之一。

我不确定为什么其他发送方式有效,但我认为您的 Amazon 控制面板和 SMTP 测试工具测试之所以有效,是因为它们是您的电子邮件回复地址发送邮件,而不是像 Discourse 那样将其用作回复地址/退信地址。

身份验证文档在此处:

1 个赞

啊,是的,正如这里所述:

起初我没明白。让我们尝试在 SES 中添加我的 Gmail 地址作为已验证地址。

1 个赞

据我所知,您不能在 SES 上使用 ±地址。但我每天都通过 Discourse 使用 SES。

2 个赞

我已经验证了 monocycle.info@gmail.com,Discourse 可以向用户发送电子邮件。通过电子邮件回复功能也正常工作。
我会在接下来的几天看看是否遇到任何问题。

您能再详细解释一下吗?关于我刚才写的内容(似乎一切正常)。:slight_smile:

1 个赞

有两个不同的问题:

  • SES 无法在入站或出站流量中使用带加号的地址(我真的记不起“加号形式”的准确术语了)
  • 我一直在通过 Discourse 向 SES 发送电子邮件

当我尝试使用“通过电子邮件创建/回复”功能时,我需要使用 Gmail,就是因为这个原因。

这对您有影响吗……我一点也不知道 :man_facepalming:

1 个赞

好的,谢谢你的澄清。我不使用 SES 的 ± 地址,所以我觉得这在我的情况下不相关。:slight_smile:

亚马逊称它们为标签(labels),如果你指的是 user+label@domain 地址,我不记得这是电子邮件术语还是仅仅是亚马逊的术语。你确定它们不受支持吗?用户很常用它们。
我在文档中唯一能找到的是 SMTPUTF8 扩展不受支持,将本地部分(@符号之前)限制为 7位ASCII字符。这包括+字符。

不,你没有,但 +verp… 充当了该角色。或者我完全错了?

好吧,我的回复可能有点不对劲,因为我对与电子邮件相关的事情不太了解。


我的“通过电子邮件回复”设置确实是一个使用“+”等符号的 Gmail 地址。

如果“通过电子邮件回复”设置关闭,那么 Discourse 的电子邮件发送就可以正常工作(如果我没记错的话)。

如果“通过电子邮件回复”设置开启,并且我没有在 SES 中验证 Gmail 地址,那么 Discourse 将不会发送任何电子邮件,无论它们是否有 Gmail 的回复地址(例如,测试电子邮件或摘要电子邮件没有 Gmail 的回复地址),并会抛出 554 Message rejected: Email address is not verified 错误。

如果我在 SES 中验证了 Gmail 地址,那么 Discourse 发送的所有电子邮件似乎都可以正常工作,无论它们是否有 Gmail 的回复地址。

当然,我想多了解一点这些东西是如何工作的,但只要它能正常工作……这是我的首要 concerns。 :smile:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.