在 SMTP 中,RCPT TO: 和 TO: 必须匹配吗?

问题描述 投票:0回答:3

发送电子邮件时,收件人列表在 SMTP 对话期间通过 RCTP TO: 命令给出。随后,在 DATA 命令中,指示“To”、“Cc”、“bcc”等标头字段。此 RCPT TO 收件人列表是否必须与 DATA 命令中指示的标头匹配?

另外,如果收件人没有在 RCPT TO 中标明,而是在电子邮件标头的“收件人”字段中标明,那么邮件是否会发送给 RCPT TO 中以外的收件人?

email smtp protocols
3个回答
24
投票

不,它们不必匹配。发送邮件时,SMTP 服务器(又名邮件传输代理或 MTA)将创建一个所谓的 SMTP 信封,其中包含邮件的收件人和发件人(请参阅RFC5321):

SMTP 传输邮件对象。邮件对象包含信封和内容。 SMTP信封作为一系列SMTP协议发送 单位(第 3 节中描述)。它由一个发起者组成 地址(错误报告应定向至该地址),一个或多个 收件人地址和可选协议扩展材料。

实际上,RCPT TO: 命令的接收者数量通常多于消息标头 - 一种常见情况是使用“密件抄送”bcc:(参见 RFC5321):

可能会出现未出现在邮件标题部分的地址 出于多种原因,在 RCPT 命令中将其发送到 SMTP 服务器。这 两个最常见的涉及使用邮寄地址作为“列表” 爆炸器”(解析为多个地址的单个地址)和 “盲抄”的出现。


15
投票

此 RCPT TO 收件人列表是否必须与标头匹配 DATA 命令中指示?

不。

如果收件人未在 RCPT TO 中指定,而是在 RCPT TO 字段中指定 电子邮件标头,是否将发送给不在 RCPT 中的收件人 到?

RCPT。这是我自己的 SMTP 客户端的(修改后的)记录,我按照您的要求进行操作:

CLIENT: MAIL FROM:<[email protected]>
SERVER: 250 2.1.0 OK 
CLIENT: RCPT TO:<[email protected]>
SERVER: 250 2.1.5 OK 
CLIENT: DATA
SERVER: 354  Go ahead 
CLIENT: Subject: Test email
CLIENT: From:'John Doe'<[email protected]>
CLIENT: To:'John Doe'<[email protected]>
CLIENT: This is a test...
CLIENT: .

消息已成功发送至“[电子邮件受保护]”。


6
投票

SMTP 协议 (RFC 2821) 规定如下:

当使用 RFC 822 格式 [7, 32] 时,邮件数据包括
备忘录标题项,例如日期、主题、收件人、抄送、发件人。服务器 SMTP
系统不应基于感知到的缺陷而拒绝消息
RFC 822 或 MIME [12] 消息标头或消息正文。

还有这个:

DATA 命令只能在协议中的两个点失败 交换:

  • 如果没有 MAIL,或没有 RCPT、命令或所有此类命令 被拒绝,服务器可能返回“命令乱序” (503) 或“无有效收件人”(554) 回复数据 命令。如果这些回复之一(或任何其他 5yz 回复)是 收到后,客户端不得发送消息数据;更多的 一般来说,除非收到 354 回复,否则不得发送消息数据 收到了。

从这些语句中,标题和 RCPT TO: 命令内容不必匹配(尽管它们应该匹配),并且不使用 RCPT TO: 可能会导致错误,从而阻止继续执行 DATA 命令。

© www.soinside.com 2019 - 2024. All rights reserved.