hartz
(adam hartz)
1
这可能只是我个人的问题,但我在设置“通过邮件回复”功能后,对收到的一些错误报告感到有些困惑。
当某人使用与其账户未关联的电子邮件地址回复消息时(在自托管的 Discourse 实例上),错误信息是否正确?看起来这条消息更像是发送给错误地址时应该收到的提示,而不是发件人地址未被识别时应有的提示。
在这种情况下,我收到的邮件主题为 Email issue – Unknown To: Address,正文内容如下:
_很抱歉,您发送给 [“SNIP”](标题为 Re: Help Please)的邮件未能成功发送。
未识别任何目标电子邮件地址,或者邮件中的 Message-ID 头已被修改。请确保您正在向工作人员提供的正确电子邮件地址发送邮件。_
将我的回复中的 From: 地址更改为与账户关联的地址后,问题似乎就解决了。
是否有简单的方法来修改这一行为?我是否配置错了什么?
(我或许应该说明,我真正希望的是有一个选项可以完全忽略 From: 头,转而仅使用如 此处 所讨论的回复密钥;是否有实现这一功能的可能?)
hartz
(adam hartz)
2
啊,这可能是因为这是对私信的回复,而非公开话题,因此 Discourse 认为发送邮件的人(它未将其识别为有效用户)不应能向该地址发送邮件?
这或许能解释为什么它标记“收件人”地址无效,而不是“发件人”地址?
在此期间,我已修改了该消息的文本,以说明问题可能出在“发件人”或“收件人”上。
为什么 Discourse 会接受一个随机的电子邮件地址,而不匹配目标站点上的任何有效用户账户?
在 Discourse 中发布任何内容时,您必须始终拥有一个有效的、经过身份验证的账户。
(有一个例外情况适用于分阶段用户,但这特定于通过 Discourse 私信处理电子邮件收件箱的场景)
riking
(Kane York)
4
出现这种情况是因为权限错误在调用栈中的某个位置被转换成了“未找到”错误,而邮件代码随后使用了该“未找到”错误对应的消息…
hartz
(adam hartz)
5
有人可能会争辩说,reply_id(似乎同时映射到主题和回复者)本身就是一个足够的标识符,而且伪造 reply_id 比伪造电子邮件地址更难,因此无论是否来自正确的电子邮件地址,其有效性实际上是一样的。
但我其实并不是想争辩这一点。你在这里说的完全有道理。经过思考,我意识到导致这种行为的确实是一个边缘情况(我们有 SSO 使用大学电子邮件地址创建账户,但人们有时会将这些邮件转发到其他地址,并从这些地址进行回复)。
我真正的问题是:在这种情况下,人们收到的错误邮件的内容似乎可能会产生误导。真正的问题,或者说至少是收到错误邮件的人在此情况下能够控制的问题,是“发件人”地址(以及与其账户关联的地址),而不是“收件人”地址,据我所知。
无论如何,我已经通过以下方式找到了变通方案:
- 修改该消息的内容(喜欢 Discourse 如此可定制!),以及
- 告知人们如果他们想使用“通过邮件回复”功能,需要更改他们的电子邮件地址
但我只是想知道,鉴于这种潜在的混淆,是否有必要针对在哪些情况下发送哪些错误消息做一些调整。
如果答案是“不,现状完全没问题”,那也完全没问题。
我们确实已经初步支持为每个用户添加备用电子邮件地址。
我想知道 @sam 和 @eviltrout,我们何时能将其进一步规范化,让用户可以添加次要电子邮件地址?这是否应纳入 2.5 版本路线图?
sam
(Sam Saffron)
7
我认为我们应该首先将其呈现在管理员用户页面中,以便您可以查看/添加 2.5 版本的电子邮件地址。接下来,既然我们已经有了经过充分测试的 rake 任务,或许可以在管理员页面中添加一些基本的用户界面功能来合并用户。
我仍然难以理解,既然 From: 头可以被极其简单地伪造,为什么 Discourse 还要信任/验证它?
回复 ID 头提供了有用的验证,因为坏人无法猜测或获知它。
验证 From: 头只会导致合法用户在尝试通过电子邮件发帖时,如果恰好从不同的电子邮件地址回复(这是一种比人们预想中更常见的边缘情况),就会收到令人困惑的拒绝信息。
电子邮件就是身份标识。所谓“不同的电子邮件地址”,就好比说“不同的 DNA”。
我有很多电子邮件地址,我的一些用户也是如此。
我真诚地并非想挑起争执。我只是对这个问题的后果略感心累,因为它导致我某个论坛的一位重要成员决定不再为该论坛做贡献。
那么你应该倡导支持每个用户设置多个邮箱地址的功能,不妨往上翻一翻,读一读相关内容?
很遗憾,我不确定所提议的功能是否能解决我在 Discourse 实例中遇到的问题。
在我的案例中,该用户是一位民间团体的主席。她有两个电子邮件地址和两个 Discourse 账户(每个地址对应一个账户)。一个账户代表她的个人身份,另一个则用于代表该民间团体发布“官方”帖子。
当她通过电子邮件回复时,经常从“错误”的电子邮件地址发送,导致她的回复被拒绝。
我推测上面讨论的功能将涉及每个 Discourse 账户支持多个电子邮件地址,但(自然地)会禁止每个电子邮件地址对应多个 Discourse 账户。因此,很遗憾,这无法解决我的使用场景。
downey
(Michael Downey)
14
难道不能直接合并这两个账户,将其中一个电子邮件地址设为次要地址吗?
如果不能,很遗憾,目前 Discourse 中没有任何工具可以帮助用户记住他们当时使用的是哪个身份。
从技术上来说我可以这么做,但用户能够以两种不同的身份(个人身份/代表民间社会)发帖是有意为之的。
downey
(Michael Downey)
16
是的。有时候人们确实会陷入这种场景,但我可能更愿意称之为“极端情况”而非“边缘情况”:smile:
我理解得对吗?这个人实际上有两个身份,但由于某种原因,这两个身份最终都关联到了同一个邮箱账户?如果是这样,他们似乎不仅仅在 Discourse 上会遇到这个棘手的问题,可能在其他地方也会遇到。也许这个问题更适合在邮件客户端层面处理?
我的工作邮箱中有一些与工作相关的别名,但我的邮件客户端在回复时会将“发件人”地址匹配为邮件原本发送到的地址…
我同意,这是一个边缘情况,如果她不是如此知名的用户,这本来不会成为大问题。
为了创建两个 Discourse 账户,我们使用了 Gmail 点号技巧,以便她能为自己的 Gmail 邮箱创建两个不同的电子邮件地址,从而注册两个 Discourse 账户。
当她通过电子邮件回复论坛帖子时,Gmail 未必使用 Discourse 所期望的那个电子邮件地址变体。
依我看,只要回复 ID 有效,Discourse 就应该接受该回复。
riking
(Kane York)
18
dot hack 极其脆弱,他们很可能使用加号地址(plus addressing)会顺畅得多。
如果两个账户都使用加号地址,且没有任何账户使用裸地址,那么“发件人”地址切换器将正常工作;若忘记设置,邮件只会被拒绝,而不会错误地提交到错误的账户。
使用加号代替点号也能让你的筛选规则更加清晰 
dan
(Dan Ungureanu)
21
我已提交一个拉取请求,以改进对多个电子邮件地址的支持: