我正在向以下收件人发送电子邮件:
test@example.com
,test1@test.com
,test2@test.com
邮件将发送到我的本地smtp服务器,该服务器必须将其转发至@example.com
和@test.com
。
我的问题是:服务器应该怎么做?
将邮件保留原样并将其转发给更复杂的smtp服务器,该服务器将执行其他选项之一
将其分成两条消息,并在一条消息中将一条消息转发至@exampl
e,将另外两封消息转发至@test.com
将其分为三条消息,转发一次至@example.com
,两次转至@test.com
接收服务器(例如@example.com
)如何知道它也不应该自己发送@test.com
消息? (任何邮件标题?)
如果@example.com
和@test.com
由同一服务器提供服务,它会多次收到该消息会怎样?
我可能在SMTP协议中遗漏了一些内容。
答案 0 :(得分:3)
信封(RFC822及其他)只是外部界限。有趣的事情发生在ESMTP协议中。
就普通SMTP而言,每个收件人(RCPT TO)都会在发件箱队列中触发一条新邮件 - 每个收件人一个。然后,它被交付。
现在让我们谈谈交付:假设我要求发送到user@host.com。以下是它的工作原理:
在DNS上查询host.com地址,特别是MX(邮件交换器)类型的记录。 (nslookup -q = MX应该告诉你它是如何完成的)
对它们进行排序(最低编号),并使用此类循环尝试传递。
当它被传递到任何MX记录主机时,它就完成了。但是,有多个MX主机的原因是由于需要在中断时排队邮件,例如。因此,较高的MX主机可能只是排队而不是让原始主机服务器退回并使消息过期(当消息卡在给定主机上时会发生这种情况 - 您可以通过其标头跟踪它)
每个服务器都有自己的传送规则,但是,当您转发到试图在MX目标上传送自身的主机时,我们称之为智能主机。主机知道它是否应该排队等待另一台主机(中继)或通过SMTP问候语(HELO)本地传送。
此外:单个SMTP连接将允许您发送多条消息,因此即使您必须收件人,也只会发生一个连接(尽管邮件队列中有两条消息)