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 签名。这会破坏许多读取和应用补丁的脚本。(这应该是可以修复的。)
最好将补丁发送给自己,保存收到的消息,并在将补丁发送到 Linux 邮件列表之前使用“patch”成功应用它。
一些电子邮件客户端(MUA)提示¶
以下是一些用于编辑和发送 Linux 内核补丁的特定 MUA 配置提示。这些并非完整的软件包配置摘要。
图例
TUI = 基于文本的用户界面
GUI = 图形用户界面
Alpine (TUI)¶
配置选项
在
部分
必须启用
必须禁用
编写邮件时,应将光标置于补丁应出现的位置,然后按 CTRL-R,可以让你指定要插入到邮件中的补丁文件。
Claws Mail (GUI)¶
有效。有些人成功地使用它来发送补丁。
要插入补丁,请使用
(CTRL-I) 或外部编辑器。如果插入的补丁必须在 Claws 编辑窗口中编辑,则应禁用
中的“自动换行”。Evolution (GUI)¶
有些人成功地使用它来发送补丁。
- 编写邮件时,请选择:预格式
从
(CTRL-7) 或工具栏
然后使用:
(ALT-N x) 来插入补丁。你也可以 diff -Nru old.c new.c | xclip
,选择 ,然后使用鼠标中键粘贴。
Kmail (GUI)¶
有些人成功地使用 Kmail 来发送补丁。
不使用 HTML 撰写的默认设置是合适的;不要启用它。
在撰写电子邮件时,在选项下,取消选中“自动换行”。唯一的缺点是你在电子邮件中输入的任何文本都不会自动换行,因此你必须在补丁之前手动换行文本。解决此问题的最简单方法是启用自动换行来撰写电子邮件,然后将其保存为草稿。一旦你从草稿中再次提取它,它现在是硬换行的,你可以取消选中“自动换行”,而不会丢失现有的换行。
在电子邮件的底部,在插入补丁之前放置常用的补丁分隔符:三个连字符 (---
)。
然后从
菜单项中,选择 并选择你的补丁。作为额外的奖励,你可以自定义消息创建工具栏菜单并将 图标放在那里。使编辑器窗口足够宽,以便没有行换行。截至 KMail 1.13.5 (KDE 4.5.4),如果行在编辑器窗口中换行,KMail 将在发送电子邮件时应用自动换行。在“选项”菜单中禁用自动换行是不够的。因此,如果你的补丁有很长的行,则必须在发送电子邮件之前使编辑器窗口非常宽。请参阅:https://bugs.kde.org/show_bug.cgi?id=174034
你可以安全地对附件进行 GPG 签名,但对于补丁,首选内联文本,因此不要对它们进行 GPG 签名。对作为内联文本插入的补丁进行签名会使它们难以从其 7 位编码中提取。
如果你绝对必须将补丁作为附件而不是将其内联为文本发送,请右键单击附件并选择
,然后突出显示 ,使附件内联,使其更易于查看。保存作为内联文本发送的补丁时,请从消息列表窗格中选择包含补丁的电子邮件,右键单击并选择
。如果邮件编写正确,你可以将整个邮件未经修改地用作补丁。电子邮件仅为用户保存为读写权限,因此如果将其复制到其他位置,则必须使用 chmod 使它们对组和世界可读。Lotus Notes (GUI)¶
远离它。
IBM Verse (Web GUI)¶
请参阅 Lotus Notes。
Mutt (TUI)¶
许多 Linux 开发人员使用 mutt
,因此它一定运行得很好。
Mutt 不自带编辑器,所以无论你使用什么编辑器,都应该避免自动换行。大多数编辑器都有
选项,可以原封不动地插入文件内容。要将 vim
与 mutt 一起使用
set editor="vi"
如果使用 xclip,请键入以下命令
:set paste
然后按鼠标中键或 Shift+Insert,或者使用
:r filename
如果你想将补丁内联包含。(a)ttach 在没有 set paste
的情况下也能正常工作。
你也可以使用 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 = '[email protected]'
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://[email protected]: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 = "[email protected]"
set use_from = yes
Mutt 文档有更多信息
Pine (TUI)¶
Pine 过去有一些空格截断问题,但现在应该都已修复。
如果可以,请使用 alpine(Pine 的继任者)。
配置选项
对于最近的版本,需要
quell-flowed-text
需要
no-strip-whitespace-before-send
选项
Sylpheed (GUI)¶
非常适合内联文本(或使用附件)。
允许使用外部编辑器。
在大型文件夹上速度较慢。
不会通过非 SSL 连接执行 TLS SMTP 身份验证。
在撰写窗口中有一个有用的标尺栏。
将地址添加到地址簿时,无法正确理解显示名称。
Thunderbird (GUI)¶
Thunderbird 是一个类似 Outlook 的克隆,它喜欢修改文本,但有一些方法可以强制它正常工作。
在进行修改后,包括安装扩展程序,你需要重新启动 Thunderbird。
允许使用外部编辑器
对于 Thunderbird 和补丁,最简单的方法是使用可以打开你喜欢的外部编辑器的扩展程序。
以下是一些可以实现此目的的示例扩展程序。
“External Editor Revived”
https://github.com/Frederick888/external-editor-revived
https://addons.thunderbird.net/en-GB/thunderbird/addon/external-editor-revived/
它需要安装一个“原生消息主机”。请阅读这里的 wiki:https://github.com/Frederick888/external-editor-revived/wiki
“External Editor”
https://github.com/exteditor/exteditor
要执行此操作,请下载并安装扩展程序,然后打开
窗口,使用 为其添加一个按钮,然后在你希望使用外部编辑器时单击新按钮即可。请注意,“External Editor”要求你的编辑器不能 fork,或者换句话说,编辑器必须在关闭之前不返回。你可能需要传递其他标志或更改编辑器的设置。最值得注意的是,如果你使用的是 gvim,则必须通过将
/usr/bin/gvim --nofork"
(如果二进制文件在/usr/bin
中)放入 设置中的文本编辑器字段,将 -f 选项传递给 gvim。如果你正在使用其他编辑器,请阅读其手册以了解如何执行此操作。
要让内部编辑器表现正常,请执行以下操作
编辑你的 Thunderbird 配置设置,使其不使用
format=flowed
!转到你的主窗口并找到主下拉菜单的按钮。 以打开 thunderbird 的注册表编辑器。将
mailnews.send_plaintext_flowed
设置为false
将
mailnews.wraplength
从72
设置为0
不要编写 HTML 消息!转到主窗口
!在那里,你可以禁用“以 HTML 格式撰写邮件”选项。仅以纯文本格式打开邮件!转到主窗口
!
TkRat (GUI)¶
有效。使用“插入文件...”或外部编辑器。
Gmail (Web GUI)¶
不适用于发送补丁。
Gmail Web 客户端会自动将制表符转换为空格。
同时,它会以 CRLF 样式的换行符将每行包装为 78 个字符,尽管可以通过外部编辑器解决 tab2space 问题。
另一个问题是,Gmail 会对任何包含非 ASCII 字符的消息进行 base64 编码。这包括像欧洲人的名字这样的东西。
HacKerMaiL (TUI)¶
HacKerMaiL (hkml) 是一个基于 public-inbox 的简单邮件管理工具,不需要订阅邮件列表。它由 DAMON 的维护者开发和维护,旨在支持 DAMON 和一般内核子系统的简单开发工作流程。有关详细信息,请参阅 README (https://github.com/sjp38/hackermail/blob/master/README.md)。