dlucazeau
(Daniel Lucazeau)
2026 年2 月 25 日 11:24
1
我仔细阅读了此链接 Email delivery configuration checklist 及后续的邮件指南。
我研究了此链接 https://meta.discourse.org/t/how-to-setup-reply-by-email-address-now-that-it-must-be-different-from-the-notification-email/126767,以及这个 https://meta.discourse.org/t/notification-email-cannot-be-the-same-as-reply-by-email/28840。
我在论坛上使用的所有地址都可以通过邮件客户端(如 Thunderbird 或 Claws Mail)发送或接收邮件。
有四个不同的地址,只有前三个与此主题相关:
app.yml 中的管理地址:admin@
app.yml 中的通知地址:forum@
reply-to 地址:reply@
以及邮件发布地址:questions@
通过论坛邮件列表状态收到的通知发送正常。并且 admin/email/server-settings 页面上的发送测试也通过了。
如果我设置了邮件回复功能,该功能可以正常运行,但通知功能却停止工作了。
先前的发送测试会失败,状态显示为“501 5.5.4 You are not allowed to send from this address.”(您不允许从该地址发送。)
如果我禁用邮件回复功能,测试会再次正常通过。
谁能向我解释为什么会出现这个错误,以及如何正确地同时设置通知和“邮件回复”功能?
2 个赞
pfaffman
(Jay Pfaffman)
2026 年2 月 25 日 11:53
2
dlucazeau:
501 5.5.4 您不允许从该地址发送邮件。
该消息来自您的邮件发送服务。它很清楚。
您需要从您的 SMTP 服务器可以使用的电子邮件地址发送。这就像它被设置为从 example.com 发送,而您现在正从 forum.example.com 发送。
4 个赞
dlucazeau
(Daniel Lucazeau)
2026 年2 月 25 日 12:12
3
那么为什么在一种情况下发送测试是正常的,而当我设置“通过电子邮件回复”时却是失败的呢?我需要说明的是,我没有更改通知的任何配置。
Discourse 在准备邮件时发生了什么?
1 个赞
dlucazeau
(Daniel Lucazeau)
2026 年2 月 25 日 14:05
4
问题确实出在 Discourse。
通过优化日志设置,我看到所发帖文确实是通过正确的地址进行身份验证的:
2026-02-25T12:54:24Z TRACE Data store
iteration operation (store.data-iterate) elapsed = 0ms
<3.14, remotePort = 47104, accountName =
“forum.cagut@domain.tld”, accountId = 31
但是它变成了
2026-02-25T12:54:24Z ^\[\[35;1mTRACE ^\[\[37;1mRaw SMTP output sent
(smtp.raw-output) listenerId = “submissions”, localPort = 465, remoteIp
= 51.178.53.14, >
<53.14, remotePort = 47104, size = 73,
contents = “MAIL
FROM:<reply.cagut+verp-8bf40c695b1f612e555cf25f3c14c9b8@domain.tld>\\r\\n”
邮件服务器对这种地址格式一无所知。
1 个赞
pfaffman
(Jay Pfaffman)
2026 年2 月 25 日 19:12
5
dlucazeau:
FROM:
这个魔术数字是 Discourse 将回复与主题关联起来的方式。
dlucazeau:
邮件服务器不知道这种地址格式。
您需要另一个邮件服务器(或更改此服务器以支持 + 地址)或者不使用邮件回复。
dlucazeau
(Daniel Lucazeau)
2026 年2 月 25 日 19:27
6
是的,我知道这是用于“通过电子邮件回复”的标识符。
因此,当“回复…”启用时,发送邮件的测试不起作用。文档中没有说明这一点,而且错误确实来自 Discourse,而不是邮件服务器,这正是您最初的回答!
dlucazeau
(Daniel Lucazeau)
2026 年2 月 25 日 20:30
7
此外,“from”地址如何能有这个“魔术数字”?这种地址格式用于邮件头中。
您的回答根本不是一个答案。
不应该对“From”进行这种转换。
而且,回答说我们必须放弃软件预期的功能是很奇怪的……
明天,我将进行其他研究。
1 个赞
dlucazeau:
这个“From”的转换不应该进行。
它本身并不是对邮件头(header)的转换——当启用“通过邮件回复”时,Discourse 会发送邮件,并将信封发件人(envelope-from)设置为 reply_by_email_address 地址模式,如果邮件可回复,还会设置 reply-to: 字段。
例如,在 meta(本站)上是这样的:
notification_email: notifications@meta.discoursemail.com
reply_by_email_address: incoming+%{reply_key}@meta.discoursemail.com
这会变成:
Return-Path: <incoming+verp-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@meta.discoursemail.com>
From: Person <notifications@meta.discoursemail.com>
Reply-To: Person <incoming+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@meta.discoursemail.com>
通知邮件进入 From 邮件头,而 reply_by_email_address 进入信封发件人。我们配置了传入邮件,使得任何发往 …@meta.discoursemail.com 的邮件都会被投递到 meta,从而使这个机制生效。
但是,如果您的邮件服务器不允许您使用这个信封发件人,您就会收到您报告的错误。
dlucazeau:
错误来自 Discourse 而不是邮件服务器
这个错误绝对是来自邮件服务器。Discourse 可能会向您报告它,但生成错误的还是邮件服务器。
2 个赞