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 和补丁,最简单的方法是使用可以打开你喜欢的外部编辑器的扩展程序。

    以下是一些可以实现此目的的示例扩展程序。

要让内部编辑器表现正常,请执行以下操作

  • 编辑你的 Thunderbird 配置设置,使其不使用 format=flowed!转到你的主窗口并找到主下拉菜单的按钮。主菜单‣首选项‣常规‣配置编辑器...以打开 thunderbird 的注册表编辑器。

    • mailnews.send_plaintext_flowed 设置为 false

    • mailnews.wraplength72 设置为 0

  • 不要编写 HTML 消息!转到主窗口主菜单‣帐户设置‣[email protected]‣撰写和寻址!在那里,你可以禁用“以 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)。