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)。