1

我在想。

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

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

邮件被发送到交换服务器,然后交换组域(company.com 和 gmail.com)=> 它将邮件放入you@company.com 邮箱

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

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

来自:me@company.com

至:you@company.com;他@gmail.com


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

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

提前致谢!

4

2 回答 2

1

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

于 2012-11-22T20:08:29.713 回答
0

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

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

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

于 2012-11-22T20:04:34.480 回答