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 和补丁最简单的方法是使用能够打开您喜欢的外部编辑器的扩展。

    以下是一些能够实现此目的的示例扩展。

要让内部编辑器变得有用,请执行以下操作

  • 编辑您的 Thunderbird 配置设置,使其不再使用 format=flowed!转到主窗口,找到主下拉菜单按钮。主菜单‣偏好设置‣常规‣配置编辑器... 以调出 Thunderbird 的注册表编辑器。

    • mailnews.send_plaintext_flowed 设置为 false

    • mailnews.wraplength72 设置为 0

  • 不要撰写 HTML 邮件!转到主窗口主菜单‣账户设置‣youracc@server.something‣撰写与地址簿!在那里您可以禁用“以 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)。