Note

此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。

Original:

Email clients info for Linux

译者:
校译:

Linux邮件客户端配置信息

Git

现在大多数开发人员使用 git send-email 而不是常规的电子邮件客户端。这方面 的手册非常好。在接收端,维护人员使用 git am 加载补丁。

如果你是 git 新手,那么把你的第一个补丁发送给你自己。将其保存为包含所有 标题的原始文本。运行 git am raw_email.txt ,然后使用 git log 查看更 改日志。如果工作正常,再将补丁发送到相应的邮件列表。

通用配置

Linux内核补丁是通过邮件被提交的,最好把补丁作为邮件体的内嵌文本。有些维护者 接收附件,但是附件的内容格式应该是”text/plain”。然而,附件一般是不赞成的, 因为这会使补丁的引用部分在评论过程中变的很困难。

同时也强烈建议在补丁或其他邮件的正文中使用纯文本格式。https://useplaintext.email 有助于了解如何配置你喜欢的邮件客户端,并在您还没有首选的情况下列出一些推荐的 客户端。

用来发送Linux内核补丁的邮件客户端在发送补丁时应该处于文本的原始状态。例如, 他们不能改变或者删除制表符或者空格,甚至是在每一行的开头或者结尾。

不要通过”format=flowed”模式发送补丁。这样会引起不可预期以及有害的断行。

不要让你的邮件客户端进行自动换行。这样也会破坏你的补丁。

邮件客户端不能改变文本的字符集编码方式。要发送的补丁只能是ASCII或者UTF-8编码 方式,如果你使用UTF-8编码方式发送邮件,那么你将会避免一些可能发生的字符集问题。

邮件客户端应该生成并且保持“References:”或者“In-Reply-To:”邮件头,这样邮件会话 就不会中断。

复制粘帖(或者剪贴粘帖)通常不能用于补丁,因为制表符会转换为空格。使用xclipboard, xclip或者xcutsel也许可以,但是最好测试一下或者避免使用复制粘帖。

不要在使用PGP/GPG签名的邮件中包含补丁。这样会使得很多脚本不能读取和适用于你的 补丁。(这个问题应该是可以修复的)

在给内核邮件列表发送补丁之前,给自己发送一个补丁是个不错的主意,保存接收到的 邮件,将补丁用’patch’命令打上,如果成功了,再给内核邮件列表发送。

一些邮件客户端提示

这里给出一些详细的MUA配置提示,可以用于给Linux内核发送补丁。这些并不意味是 所有的软件包配置总结。

说明:

  • TUI = 以文本为基础的用户接口

  • GUI = 图形界面用户接口

Alpine (TUI)

配置选项:

在 Sending Preferences 菜单:

  • Do Not Send Flowed Text 必须开启

  • Strip Whitespace Before Sending 必须关闭

当写邮件时,光标应该放在补丁会出现的地方,然后按下 CTRL-R 组合键,使指 定的补丁文件嵌入到邮件中。

Claws Mail (GUI)

可以用,有人用它成功地发过补丁。

用 Message‣Insert File (CTRL-I) 或外置编辑器插入补丁。

若要在Claws编辑窗口重修改插入的补丁,需关闭 Configuration‣Preferences‣Compose‣Wrapping 的 Auto wrapping 。

Evolution (GUI)

一些开发者成功的使用它发送补丁。

撰写邮件时: 从 格式‣段落样式‣预格式化 (CTRL-7) 或工具栏选择 预格式化 ;

然后使用: 插入‣文本文件... (ALT-N x) 插入补丁文件。

你还可以 diff -Nru old.c new.c | xclip ,选择 预格式化 , 然后使用鼠标中键进行粘帖。

Kmail (GUI)

一些开发者成功的使用它发送补丁。

默认撰写设置禁用HTML格式是合适的;不要启用它。

当书写一封邮件的时候,在选项下面不要选择自动换行。唯一的缺点就是你在邮件中输 入的任何文本都不会被自动换行,因此你必须在发送补丁之前手动换行。最简单的方法 就是启用自动换行来书写邮件,然后把它保存为草稿。一旦你在草稿中再次打开它,它 已经全部自动换行了,那么你的邮件虽然没有选择自动换行,但是还不会失去已有的自 动换行。

在邮件的底部,插入补丁之前,放上常用的补丁定界符:三个连字符(---)。

然后在 信件 菜单,选择 插入文本文件 ,接 着选取你的补丁文件。还有一个额外的选项,你可以通过它配置你的创建新邮件工具栏, 加上 插入文本文件 图标。

将编辑器窗口拉到足够宽避免折行。对于KMail 1.13.5 (KDE 4.5.4),它会在发送邮件 时对编辑器窗口中显示折行的地方自动换行。在选项菜单中取消自动换行仍不能解决。 因此,如果你的补丁中有非常长的行,必须在发送之前把编辑器窗口拉得非常宽。 参见:https://bugs.kde.org/show_bug.cgi?id=174034

你可以安全地用GPG签名附件,但是内嵌补丁最好不要使用GPG签名它们。作为内嵌文本 插入的签名补丁将使其难以从7-bit编码中提取。

如果你非要以附件的形式发送补丁,那么就右键点击附件,然后选择 属性 ,打开 建议自动显示 ,使附件内联更容 易让读者看到。

当你要保存将要发送的内嵌文本补丁,你可以从消息列表窗格选择包含补丁的邮件,然 后右键选择 另存为 。如果整个电子邮件的组成正确,您可直接将 其作为补丁使用。电子邮件以当前用户可读写权限保存,因此您必须 chmod ,以 使其在复制到别处时用户组和其他人可读。

Lotus Notes (GUI)

不要使用它。

IBM Verse (Web GUI)

同上条。

Mutt (TUI)

很多Linux开发人员使用mutt客户端,这证明它肯定工作得非常漂亮。

Mutt不自带编辑器,所以不管你使用什么编辑器,不自动断行就行。大多数编辑器都有 插入文件 选项,它可以在不改变文件内容的情况下插入文件。

用 vim 作为mutt的编辑器:

set editor="vi"

如果使用xclip,敲入以下命令:

:set paste

然后再按中键或者shift-insert或者使用:

:r filename

把补丁插入为内嵌文本。 在未设置 set paste 时(a)ttach工作的很好。

你可以通过 git format-patch 生成补丁,然后用 Mutt发送它们:

$ mutt -H 0001-some-bug-fix.patch

配置选项:

它应该以默认设置的形式工作。 然而,把 send_charset 设置一下也是一个不错的主意:

set send_charset="us-ascii:utf-8"

Mutt 是高度可配置的。 这里是个使用mutt通过 Gmail 发送的补丁的最小配置:

# .muttrc
# ================  IMAP  ====================
set imap_user = 'yourusername@gmail.com'
set imap_pass = 'yourpassword'
set spoolfile = imaps://imap.gmail.com/INBOX
set folder = imaps://imap.gmail.com/
set record="imaps://imap.gmail.com/[Gmail]/Sent Mail"
set postponed="imaps://imap.gmail.com/[Gmail]/Drafts"
set mbox="imaps://imap.gmail.com/[Gmail]/All Mail"

# ================  SMTP  ====================
set smtp_url = "smtp://username@smtp.gmail.com:587/"
set smtp_pass = $imap_pass
set ssl_force_tls = yes # Require encrypted connection

# ================  Composition  ====================
set editor = `echo \$EDITOR`
set edit_headers = yes  # See the headers when editing
set charset = UTF-8     # value of $LANG; also fallback for send_charset
# Sender, email address, and sign-off line must match
unset use_domain        # because joe@localhost is just embarrassing
set realname = "YOUR NAME"
set from = "username@gmail.com"
set use_from = yes

Mutt文档含有更多信息:

Pine (TUI)

Pine过去有一些空格删减问题,但是这些现在应该都被修复了。

如果可以,请使用alpine(pine的继承者)。

配置选项:

  • 最近的版本需要 quell-flowed-text

  • no-strip-whitespace-before-send 选项也是需要的。

Sylpheed (GUI)

  • 内嵌文本可以很好的工作(或者使用附件)。

  • 允许使用外部的编辑器。

  • 收件箱较多时非常慢。

  • 如果通过non-SSL连接,无法使用TLS SMTP授权。

  • 撰写窗口的标尺很有用。

  • 将地址添加到通讯簿时无法正确理解显示的名称。

Thunderbird (GUI)

Thunderbird是Outlook的克隆版本,它很容易损坏文本,但也有一些方法强制修正。

在完成修改后(包括安装扩展),您需要重新启动Thunderbird。

  • 允许使用外部编辑器:

    使用Thunderbird发补丁最简单的方法是使用扩展来打开您最喜欢的外部编辑器。

    下面是一些能够做到这一点的扩展样例。

若要修正内部编辑器,请执行以下操作:

  • 修改你的Thunderbird设置,不要使用 format=flowed ! 回到主窗口,按照 主菜单‣首选项‣常规‣配置编辑器... 打开Thunderbird的配置编辑器。

    • 将 mailnews.send_plaintext_flowed 设为 false

    • 将 mailnews.wraplength 从 72 改为 0

  • 不要写HTML邮件! 回到主窗口,打开 主菜单‣账户设置‣你的@邮件.地址‣通讯录/编写地址簿 , 关掉 以HTML格式编写消息 。

  • 只用纯文本格式查看邮件! 回到主窗口, 主菜单‣查看‣消息体为‣纯文本 !

TkRat (GUI)

可以使用它。使用”Insert file...”或者外部的编辑器。

Gmail (Web GUI)

不要使用它发送补丁。

Gmail网页客户端自动地把制表符转换为空格。

虽然制表符转换为空格问题可以被外部编辑器解决,但它同时还会使用回车换行把每行 拆分为78个字符。

另一个问题是Gmail还会把任何含有非ASCII的字符的消息改用base64编码,如欧洲人的 名字。

HacKerMaiL (TUI)

HacKerMaiL (hkml) 是一个基于公共收件箱的简单邮件管理工具,它不需要订阅邮件列表。 该工具由 DAMON 维护者开发和维护,旨在支持 DAMON 和通用内核子系统的基本开发工作 流程。详细信息可参考 HacKerMaiL 的 README 文件 (https://github.com/sjp38/hackermail/blob/master/README.md)。