【问题标题】:How does a mail relayer doesn't send a mail to already received recipients?邮件中继器如何不向已收到的收件人发送邮件?
【发布时间】:2012-11-11 01:43:11
【问题描述】:

我想知道。

假设我有一个交换服务器,(域可以是 me@company.com), 另外,我有一个中继服务器,它接受对互联网域(gmail/yahoo/etc)的请求。

假设我发送邮件到:(you@company.com; him@gmail.com) - 来自域中的用户 (me@company.com)

邮件发送到 Exchange 服务器,然后 Exchange 将域(company.com 和 gmail.com)分组 => 将邮件放入 you@company.com 邮箱。 p>

然后,交易所看到需要发送到him@gmail.com,所以会发送到中继服务器

中继服务器会收到 SMTP 请求:

来自:me@company.com

致:you@company.com; him@gmail.com


问题是 - smtp 中继服务器如何知道不将其发送到 you@company.com - 从而导致收到重复邮件?

另外,gmail 服务器如何知道不再尝试发送它收到的邮件? (因为他们只收到 smtp 请求,类似于发送邮件的客户端)

先谢谢了!

【问题讨论】:

    标签: smtp emailrelay


    【解决方案1】:

    邮件的内容不会被交换机或中继解析以确定邮件的去向。在这种情况下,每个人都在互相谈论 SMTP,并使用 RCPT 协议消息指定收件人。所以你的邮件客户端告诉exchange 两个RCPT,exchange 决定其中一个是远程的,然后说一个RCPT 给relay,依此类推。 This document 指定 SMTP 协议,您可以在其中了解 RCPT 动词。

    【讨论】:

    • 是不是说relay发他@gmail.com,但是“to”字段会包含两封邮件?
    • 是的,邮件中继或传输代理不能弄乱“收件人”邮件标头。出于会计目的,它只允许添加它自己的某些标题,如本问题中的其他评论所示。
    【解决方案2】:

    您看到的标题不用于传递消息。相反,SMTP 定义了一个名为 envelope 的概念,它具有一组完全不同的标头。作为一个常见的例子,这也是 Bcc: 的工作原理;收件人地址被复制到信封中,然后从信封内的邮件​​中删除。

    邮件投递时,通常会将信封发件人复制到Return-Path: 标头中,有时您会看到信封收件人信息复制到Received: 标头中。

    在邮件服务器决定邮件应该发送到哪些目的地时,通常对于每个不同的目的地都有一个邮件副本(假脱机文件、队列条目、你有什么)。因此,如果您从 you@company 发送到 me@company、you@private 和friend@gmail,第一台服务器可能会确定外部地址都应该发送到同一个出站中继,而内部副本在本地传递。然后中继同样决定它需要联系两个不同的目的地,因此单个传入消息被复制到两个出站消息,一个到 you@private,另一个到friend@gmail。

    【讨论】:

    • 所以我理解“收件人”字段仅用于视觉表示。发送应该发生的实际收件人是否写在消息的某处? (例如,如果我正在处理 EML 文件 - 比如 iis 虚拟服务器)
    • 我不确定我是否完全理解您的意思,但To: 标头与实际收件人之间确实没有关系(尽管通常发件人在收件人中指定收件人:和 Cc:标头,邮件提交代理将它们复制到信封;但如果发件人可以直接控制信封,则不必如此)并且不能保证信封收件人在邮件本身中可见,尽管许多邮件传输代理通常在他们添加的Received: 标头中包含此信息。
    • 问题是,我们正在尝试自己完成邮件中继,我们正在使用 SMTP 监听器将请求保存到磁盘,然后,我们正在创建新邮件并发送它。我们只想将邮件发送给 RCPT TO 中列出的人,现在在“to”标题中(正如您所说,它不相关)。我想知道在消息中添加 RCPT TO 是否常见,但你说它不是我理解的
    • 这是正确的,尽管如前所述,许多接收 MTA:s 将 RCPT TO: 信封收件人标记到它添加的 Received: 标头。但是,出于隐私原因,当有多个收件人时不应该这样做。当你重新发明一个不需要重新发明的轮子时,你会遇到多个额外的问题。希望这会有所帮助。
    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2012-07-29
    • 2015-10-15
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多