【发布时间】:2020-03-26 12:27:54
【问题描述】:
我之前做过一个关于这个的问题,但仍然不明白该怎么做。
我需要为电子邮件制作规范化的标题和正文。我已经多次阅读这篇文档。有人可以举个例子吗,因为我无法理解这个:
3.4.1。 “简单”的标头规范化算法
“简单”标头规范化算法不会更改标头 任何方式的领域。标头字段必须提供给签名或 验证算法与消息中的完全相同 签名或验证。特别是,标题字段名称不得 大小写折叠且空格不得更改。
3.4.2。 “宽松”的标头规范化算法
“宽松”标头规范化算法必须应用 按顺序执行以下步骤:
将所有标题字段名称(不是标题字段值)转换为 小写。例如,将“SUBJect: AbC”转换为“subject: AbC”。
展开所有标题字段续行,如中所述 [RFC5322];特别是带有嵌入终止符的行 连续的头字段值(即 CRLF 序列后跟 WSP) 必须在没有 CRLF 的情况下进行解释。实现必须 不要删除头字段值末尾的 CRLF。
将一个或多个 WSP 字符的所有序列转换为单个 SP 特点。此处的 WSP 字符包括 折线边界。
删除每个展开的标题字段末尾的所有 WSP 字符 价值。
删除冒号前后剩余的所有 WSP 字符 将标头字段名称与标头字段值分开。这 必须保留冒号分隔符。
3.4.3。 “简单”的身体规范化算法
“简单”正文规范化算法会忽略所有空行 在消息正文的末尾。空行是零线 删除行终止符后的长度。如果没有身体或 消息正文中没有尾随 CRLF,则添加 CRLF。它没有 对邮件正文的其他更改。用更正式的说法, “简单”正文规范化算法在最后转换“*CRLF” 将正文转换为单个“CRLF”。
请注意,完全空的或缺失的主体被规范化为 单曲“CRLF”;也就是说,规范化的长度将为 2 个八位字节。
空主体的 SHA-1 值(base64 格式)(规范化为 "CRLF") 是:
uoq1oCgLlTqpdDX/iUbLy7J1Wic=
SHA-256 值为:
frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN/XKdLCPjaYaY=
3.4.4。 “宽松”的身体规范化算法
“宽松”正文规范化算法必须应用 依次执行(1)和(2)步骤:
-
减少空格:
忽略行尾的所有空格。实现 不得删除行尾的 CRLF。
将一行内的所有 WSP 序列减少为单个 SP 字符。
忽略邮件正文末尾的所有空行。 “空的 line”在第 3.4.3 节中定义。如果正文非空但 不以 CRLF 结尾,添加一个 CRLF。 (对于电子邮件,这是 仅在使用 SMTP 扩展或非 SMTP 传输时才有可能 机制。)
空主体的 SHA-1 值(base64 格式)(规范化为 空输入)是:
2jmj7l5rSw0yVb/vlWAYkK/YBwk=
SHA-256 值为:
47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
3.4.5。规范化示例(信息性)
在以下示例中,实际空格仅用于
明晰。实际输入和输出文本使用指定
括号内的描述符:"<SP>" 用于空格字符,"<HTAB>" 用于
制表符,"<CRLF>" 用于回车/换行序列。
比如"X <SP> Y"和"X<SP>Y"代表同一个三个
字符。
示例 1:消息阅读:
A: <SP> X <CRLF>
B <SP> : <SP> Y <HTAB><CRLF>
<HTAB> Z <SP><SP><CRLF>
<CRLF>
<SP> C <SP><CRLF>
D <SP><HTAB><SP> E <CRLF>
<CRLF>
<CRLF>
当对标头和标头使用宽松的规范化进行规范化时 正文导致标题读取:
a:X <CRLF>
b:Y <SP> Z <CRLF>
和正文阅读:
<SP> C <CRLF>
D <SP> E <CRLF>
示例 2:相同的消息使用简单规范化 标头和正文的规范化导致标头 阅读:
A: <SP> X <CRLF>
B <SP> : <SP> Y <HTAB><CRLF>
<HTAB> Z <SP><SP><CRLF>
和正文阅读:
<SP> C <SP><CRLF>
D <SP><HTAB><SP> E <CRLF>
示例 3:使用宽松的标头规范化和处理时 简单的正文规范化,规范化的版本有一个标题 的:
a:X <CRLF>
b:Y <SP> Z <CRLF>
和正文阅读:
<SP> C <SP><CRLF>
D <SP><HTAB><SP> E <CRLF>
【问题讨论】:
-
文档中提供的示例有什么问题?
-
我不明白他们对那个结构的意思,我一遍又一遍地做了几个算法,但它们不起作用。
-
我不知道为什么,但我不明白这个: A:
X B : Y Z 我认识的几个人也看过 i,但他们也无法将其包裹起来。 -
我想我需要一个真实的例子来理解它
标签: email smtp dkim canonicalization