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 = '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)¶
非常适合内联文本(或使用附件)。
允许使用外部编辑器。
在大型文件夹上速度较慢。
无法通过非 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/
它需要安装一个“原生消息主机”。请阅读此处提供的维基页面: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 网页客户端会自动将制表符转换为空格。
同时,它每 78 个字符自动换行,并使用 CRLF 样式换行符,尽管制表符转空格的问题可以通过外部编辑器解决。
另一个问题是,Gmail 会对任何包含非 ASCII 字符的邮件进行 base64 编码。这包括像欧洲人名这样的内容。
HacKerMaiL (TUI)¶
HacKerMaiL (hkml) 是一个基于 public-inbox 的简单邮件管理工具,无需订阅邮件列表。它由 DAMON 维护者开发和维护,旨在支持 DAMON 和通用内核子系统的简单开发工作流程。详细信息请参阅 README (https://github.com/sjp38/hackermail/blob/master/README.md)。