16

根据Ubuntuuuencode(uu编码)手册页:具体来说,电子邮件无法处理二进制数据,甚至在看到六个字符的序列“0rom”时会插入一个字符。

这是真的吗?为什么会这样?我怀疑一些历史原因,这就是为什么我在这里问这个问题。

4

2个答案2

重置为默认值
45

问题中引用的文本可以在上找到这个网页。如果您下载troff源代码(在页面顶部方便地链接为uuencode.1.gz),你会看到原始的手册页上说

当看到六个字符的序列“From”时,插入一个字符。

groff文档在这里这么说\n个后跟一个字母,用该名称插入寄存器的值,并“如果寄存器未定义,则创建它并为其赋值“0””。

所以这只是手册页中的一个错误。正确的说法是,一些电子邮件(和Usenet)软件会咀嚼这五个字符“发件人“在一行的开头(通常通过添加>之前F类),因为Unix管理层收购format做出了使用该字符序列标记新消息开始的可疑决定。

13
  • 20
    @cjs某种类似于HTTP的帧块状的编码,通过编码,您可以得到消息的长度,然后是消息,然后是下一条消息的长度等。这样,您就不需要解释每条消息的全部内容来确定它是否真的是下一个消息的开始。他们在20世纪70年代没有发明maildir、MH或sqlite,这是可以原谅的,但以“From”开头的段落的真实消息会立即成为一个明显的问题。
    – 霍布斯
    评论 5月25日14:12
  • 2
    他们只能被“原谅”,因为任何程序员都可以原谅他们做了一些快速而肮脏的事情,并且没有仔细考虑后果。就我个人而言,我不是那么宽容。 评论 5月26日13:24
  • 2
    @cjs任何产生歧义的格式在客观上总是比没有歧义的更糟糕。例如,在数据大小方面,可能需要做出一些妥协,但歧义应该是不可接受的。毫无疑问的决定是选择一种无歧义的格式。
    – 昏暗的
    评论 5月27日13:16
  • @cjs主要问题是,当mbox转换时\n来自\n> 发件人,它不会变换\n> 发件人\n> >来自等。因此,无法判断序列\n> 发件人最初是发件人>发件人这使得它模棱两可,因为在读取mbox时,不可能反转该过程。
    – 
    评论 5月27日15:24
  • @Ben有些软件真的逃跑了>发件人>>发件人.维基百科这么说我记得这在野外很常见。如果所有软件在编写时都是这样,在阅读时都是那样,那么就不会有问题,但没有标准化。
    – 本格
    评论 5月27日20:15
8

我注意到序列0从实际上是5个字符。我想知道手册是否打算说这样的话>发件人

电子邮件软件有时将多封电子邮件存储在一个称为管理层收购格式。此格式使用以开头的行发件人标记存储的电子邮件的存在。为了真正有一行以开头发件人在电子邮件的内容中,使用了某种转换规则,称为From-munging公司。如果转换规则造成了任何模棱两可的情况,那么在重新打开邮件时,电子邮件的内容可能会与最初的组成方式不同。

例如,如果您写了一封包含以下内容的电子邮件:

从山脉到草原奔向泡沫洁白的海洋

下次打开电子邮件时,它可能如下所示:

>从山脉到草原奔向泡沫洁白的海洋

或者如果有人这样引用这些行:

>从山脉到草原>奔向泡沫洁白的海洋

当他们重新打开电子邮件时,可能是这样的:

从山脉到草原>奔向泡沫洁白的海洋

我认为任何电子邮件传输服务器都不需要进行这种转换,只需要使用电子邮件客户端软件来读取和保存电子邮件。但是,如果有人从以前的电子邮件中复制内容,并且他们的电子邮件客户端没有完全可逆的转换,那么即使您的电子邮件客户端和电子邮件传输路径本身没有问题,您也可能会看到这些类型的问题。

2
  • 2
    邮件传输服务器确实经常在收件人端执行此操作,因为传统上,它们是最初将邮件存放在用户的/var/spool/mail/xxx客户端软件的mbox文件。 评论 5月25日8:21
  • 2
    From-munging公司如果它得到一致的实施,就会非常有效。首先,这只是一个问题,而消息实际上位于管理层收购因此,在将消息放入管理层收购,将一个“>”添加到任何匹配/^>*From/的行中,并且当从管理层收购,从任何匹配/^>+from/的行中删除一个'>'。没有人会注意到。 评论 5月25日23:43

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.