요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
Mailer가 절대 바꾸면 안 되는 것
email-clients.rst:18-62- Patch는 mail body의 inline plain text로 보낸다. Attachment가 불가피하면 content-type text/plain을 쓰지만 review 인용이 어려워 권장되지 않는다.
- Line 앞뒤의 tab과 space를 수정하거나 삭제하지 않는다.
- format=flowed를 사용하지 않는다.
- 자동 word wrapping을 끈다.
- Encoding은 ASCII 또는 UTF-8만 사용하고 mailer가 charset을 임의 변환하지 않게 한다.
- References와 In-Reply-To header를 유지해 thread를 끊지 않는다.
- Clipboard paste가 tab을 space로 바꿀 수 있으므로 file insertion을 사용하거나 실제 round-trip test한다.
- Patch mail에 PGP·GPG signature를 붙이지 않는다. Patch 추출 script를 깨뜨릴 수 있다.
Alpine, Mutt, Pine과 HacKerMaiL
email-clients.rst:65-91,178-262,354-361Alpine은 Do Not Send Flowed Text를 켜고 Strip Whitespace Before Sending을 끈다. Compose 위치에서 Ctrl-R로 patch file을 삽입한다. Pine은 가능하면 successor인 Alpine을 쓰며 quell-flowed-text와 no-strip-whitespace-before-send를 설정한다.
Mutt는 외부 editor가 자동 line break를 넣지 않게 한다. Vim에서는 :r filename으로 patch를 삽입하거나 paste mode를 사용하고, git format-patch 결과는 mutt -H 0001-....patch로 열 수 있다. send_charset은 us-ascii:utf-8로 두고 From identity와 Signed-off-by identity를 일치시킨다.
HacKerMaiL은 public-inbox를 기반으로 mailing list 구독 없이 archive를 읽고 관리하는 TUI다. DAMON maintainer가 개발하며 일반 kernel subsystem workflow도 지원한다.
Claws, Evolution, KMail, Sylpheed와 TkRat
email-clients.rst:92-167,263-273,336-339Claws Mail은 Message→Insert File을 사용하고 compose wrapping을 끈다. Evolution은 paragraph style을 Preformatted로 바꾼 뒤 Insert→Text File로 넣는다. Sylpheed와 TkRat도 insert file 또는 external editor를 사용할 수 있다.
KMail은 HTML compose를 켜지 않고 word wrap을 끈 뒤 Message→Insert File을 사용한다. 일부 version은 compose window에서 눈에 보이는 line wrap을 전송 때 실제 wrapping으로 바꾸므로 긴 code line이 접히지 않도록 window 폭도 충분히 넓힌다. Inline patch에는 GPG signing을 사용하지 않는다.
원문은 Lotus Notes와 IBM Verse를 kernel patch 전송에 사용하지 말라고 단호하게 권고한다.
Thunderbird를 plain text로 고정
email-clients.rst:274-335가장 안전한 방법은 non-forking external editor extension을 이용해 patch를 file 그대로 편집하는 것이다. Internal editor를 쓴다면 Config Editor에서 flowed text와 wrap을 끈다.
mailnews.send_plaintext_flowed = false
mailnews.wraplength = 0
Account의 Compose messages in HTML format을 끄고 message view도 Plain Text로 둔다. External editor가 process를 fork하고 즉시 종료하면 extension이 편집 완료를 감지하지 못하므로 gvim --nofork 같은 option이 필요하다.
Gmail Web UI는 patch 전송에 사용하지 않는다
email-clients.rst:341-352Gmail web client는 tab을 space로 바꾸고 78 character마다 CRLF line break를 넣을 수 있다. Non-ASCII 문자가 하나라도 있으면 message 전체를 base64 encoding할 수 있어 inline review와 script 적용을 방해한다. Gmail account를 쓰더라도 git send-email 또는 올바르게 설정한 Mutt 같은 client로 SMTP 전송한다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. _email_clients:
Email clients info for Linux
============================
Git
---
These days most developers use ``git send-email`` instead of regular
email clients. The man page for this is quite good. On the receiving
end, maintainers use ``git am`` to apply the patches.
If you are new to ``git`` then send your first patch to yourself. Save it
as raw text including all the headers. Run ``git am raw_email.txt`` and
then review the changelog with ``git log``. When that works then send
the patch to the appropriate mailing list(s).
General Preferences
-------------------
Patches for the Linux kernel are submitted via email, preferably as
inline text in the body of the email. Some maintainers accept
attachments, but then the attachments should have content-type
``text/plain``. However, attachments are generally frowned upon because
it makes quoting portions of the patch more difficult in the patch
review process.
It's also strongly recommended that you use plain text in your email body,
for patches and other emails alike. https://useplaintext.email may be useful
for information on how to configure your preferred email client, as well as
listing recommended email clients should you not already have a preference.
Email clients that are used for Linux kernel patches should send the
patch text untouched. For example, they should not modify or delete tabs
or spaces, even at the beginning or end of lines.
Don't send patches with ``format=flowed``. This can cause unexpected
and unwanted line breaks.
Don't let your email client do automatic word wrapping for you.
This can also corrupt your patch.
Email clients should not modify the character set encoding of the text.
Emailed patches should be in ASCII or UTF-8 encoding only.
If you configure your email client to send emails with UTF-8 encoding,
you avoid some possible charset problems.
Email clients should generate and maintain "References:" or "In-Reply-To:"
headers so that mail threading is not broken.
Copy-and-paste (or cut-and-paste) usually does not work for patches
because tabs are converted to spaces. Using xclipboard, xclip, and/or
xcutsel may work, but it's best to test this for yourself or just avoid
copy-and-paste.
Don't use PGP/GPG signatures in mail that contains patches.
This breaks many scripts that read and apply the patches.
(This should be fixable.)
It's a good idea to send a patch to yourself, save the received message,
and successfully apply it with 'patch' before sending patches to Linux
mailing lists.
Some email client (MUA) hints
-----------------------------
Here are some specific MUA configuration hints for editing and sending
patches for the Linux kernel. These are not meant to be complete
software package configuration summaries.
Legend:
- TUI = text-based user interface
- GUI = graphical user interface
Alpine (TUI)
************
Config options:
In the :menuselection:`Sending Preferences` section:
- :menuselection:`Do Not Send Flowed Text` must be ``enabled``
- :menuselection:`Strip Whitespace Before Sending` must be ``disabled``
When composing the message, the cursor should be placed where the patch
should appear, and then pressing `CTRL-R` let you specify the patch file
to insert into the message.
Claws Mail (GUI)
****************
Works. Some people use this successfully for patches.
To insert a patch use :menuselection:`Message-->Insert File` (`CTRL-I`)
or an external editor.
If the inserted patch has to be edited in the Claws composition window
"Auto wrapping" in
:menuselection:`Configuration-->Preferences-->Compose-->Wrapping` should be
disabled.
Evolution (GUI)
***************
Some people use this successfully for patches.
When composing mail select: Preformat
from :menuselection:`Format-->Paragraph Style-->Preformatted` (`CTRL-7`)
or the toolbar
Then use:
:menuselection:`Insert-->Text File...` (`ALT-N x`)
to insert the patch.
You can also ``diff -Nru old.c new.c | xclip``, select
:menuselection:`Preformat`, then paste with the middle button.
Kmail (GUI)
***********
Some people use Kmail successfully for patches.
The default setting of not composing in HTML is appropriate; do not
enable it.
When composing an email, under options, uncheck "word wrap". The only
disadvantage is any text you type in the email will not be word-wrapped
so you will have to manually word wrap text before the patch. The easiest
way around this is to compose your email with word wrap enabled, then save
it as a draft. Once you pull it up again from your drafts it is now hard
word-wrapped and you can uncheck "word wrap" without losing the existing
wrapping.
At the bottom of your email, put the commonly-used patch delimiter before
inserting your patch: three hyphens (``---``).
Then from the :menuselection:`Message` menu item, select
:menuselection:`insert file` and choose your patch.
As an added bonus you can customise the message creation toolbar menu
and put the :menuselection:`insert file` icon there.
Make the composer window wide enough so that no lines wrap. As of
KMail 1.13.5 (KDE 4.5.4), KMail will apply word wrapping when sending
the email if the lines wrap in the composer window. Having word wrapping
disabled in the Options menu isn't enough. Thus, if your patch has very
long lines, you must make the composer window very wide before sending
the email. See: https://bugs.kde.org/show_bug.cgi?id=174034
You can safely GPG sign attachments, but inlined text is preferred for
patches so do not GPG sign them. Signing patches that have been inserted
as inlined text will make them tricky to extract from their 7-bit encoding.
If you absolutely must send patches as attachments instead of inlining
them as text, right click on the attachment and select :menuselection:`properties`,
and highlight :menuselection:`Suggest automatic display` to make the attachment
inlined to make it more viewable.
When saving patches that are sent as inlined text, select the email that
contains the patch from the message list pane, right click and select
:menuselection:`save as`. You can use the whole email unmodified as a patch
if it was properly composed. Emails are saved as read-write for user only so
you will have to chmod them to make them group and world readable if you copy
them elsewhere.
Lotus Notes (GUI)
*****************
Run away from it.
IBM Verse (Web GUI)
*******************
See Lotus Notes.
Mutt (TUI)
**********
Plenty of Linux developers use ``mutt``, so it must work pretty well.
Mutt doesn't come with an editor, so whatever editor you use should be
used in a way that there are no automatic linebreaks. Most editors have
an :menuselection:`insert file` option that inserts the contents of a file
unaltered.
To use ``vim`` with mutt::
set editor="vi"
If using xclip, type the command::
:set paste
before middle button or shift-insert or use::
:r filename
if you want to include the patch inline.
(a)ttach works fine without ``set paste``.
You can also generate patches with ``git format-patch`` and then use Mutt
to send them::
$ mutt -H 0001-some-bug-fix.patch
Config options:
It should work with default settings.
However, it's a good idea to set the ``send_charset`` to::
set send_charset="us-ascii:utf-8"
Mutt is highly customizable. Here is a minimum configuration to start
using Mutt to send patches through 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
The Mutt docs have lots more information:
https://gitlab.com/muttmua/mutt/-/wikis/UseCases/Gmail
http://www.mutt.org/doc/manual/
Pine (TUI)
**********
Pine has had some whitespace truncation issues in the past, but these
should all be fixed now.
Use alpine (pine's successor) if you can.
Config options:
- ``quell-flowed-text`` is needed for recent versions
- the ``no-strip-whitespace-before-send`` option is needed
Sylpheed (GUI)
**************
- Works well for inlining text (or using attachments).
- Allows use of an external editor.
- Is slow on large folders.
- Won't do TLS SMTP auth over a non-SSL connection.
- Has a helpful ruler bar in the compose window.
- Adding addresses to address book doesn't understand the display name
properly.
Thunderbird (GUI)
*****************
Thunderbird is an Outlook clone that likes to mangle text, but there are ways
to coerce it into behaving.
After doing the modifications, this includes installing the extensions,
you need to restart Thunderbird.
- Allow use of an external editor:
The easiest thing to do with Thunderbird and patches is to use extensions
which open your favorite external editor.
Here are some example extensions which are capable of doing this.
- "External Editor Revived"
https://github.com/Frederick888/external-editor-revived
https://addons.thunderbird.net/en-GB/thunderbird/addon/external-editor-revived/
It requires installing a "native messaging host".
Please read the wiki which can be found here:
https://github.com/Frederick888/external-editor-revived/wiki
- "External Editor"
https://github.com/exteditor/exteditor
To do this, download and install the extension, then open the
:menuselection:`compose` window, add a button for it using
:menuselection:`View-->Toolbars-->Customize...`
then just click on the new button when you wish to use the external editor.
Please note that "External Editor" requires that your editor must not
fork, or in other words, the editor must not return before closing.
You may have to pass additional flags or change the settings of your
editor. Most notably if you are using gvim then you must pass the -f
option to gvim by putting ``/usr/bin/gvim --nofork"`` (if the binary is in
``/usr/bin``) to the text editor field in :menuselection:`external editor`
settings. If you are using some other editor then please read its manual
to find out how to do this.
To beat some sense out of the internal editor, do this:
- Edit your Thunderbird config settings so that it won't use ``format=flowed``!
Go to your main window and find the button for your main dropdown menu.
:menuselection:`Main Menu-->Preferences-->General-->Config Editor...`
to bring up the thunderbird's registry editor.
- Set ``mailnews.send_plaintext_flowed`` to ``false``
- Set ``mailnews.wraplength`` from ``72`` to ``0``
- Don't write HTML messages! Go to the main window
:menuselection:`Main Menu-->Account Settings-->youracc@server.something-->Composition & Addressing`!
There you can disable the option "Compose messages in HTML format".
- Open messages only as plain text! Go to the main window
:menuselection:`Main Menu-->View-->Message Body As-->Plain Text`!
TkRat (GUI)
***********
Works. Use "Insert file..." or external editor.
Gmail (Web GUI)
***************
Does not work for sending patches.
Gmail web client converts tabs to spaces automatically.
At the same time it wraps lines every 78 chars with CRLF style line breaks
although tab2space problem can be solved with external editor.
Another problem is that Gmail will base64-encode any message that has a
non-ASCII character. That includes things like European names.
HacKerMaiL (TUI)
****************
HacKerMaiL (hkml) is a public-inbox based simple mails management tool that
doesn't require subscription of mailing lists. It is developed and maintained
by the DAMON maintainer and aims to support simple development workflows for
DAMON and general kernel subsystems. Refer to the README
(https://github.com/sjp38/hackermail/blob/master/README.md) for details.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
git send-email과 수신 patch 검증
1-16현재 대부분의 개발자는 일반 email client 대신 git send-email을 사용한다. Man page의 설명이 잘 되어 있으며 maintainer는 수신한 patch를 git am으로 적용한다.
git을 처음 쓴다면 첫 patch를 자신에게 보낸다. Header를 포함한 raw text 그대로 저장하고 git am raw_email.txt를 실행한 뒤 git log로 changelog를 검토한다. 이 과정이 성공하면 적절한 mailing list에 patch를 보낸다.
git am raw_email.txt
git log
Kernel patch email의 공통 원칙
18-62Linux kernel patch는 email로 제출하며 가능하면 message body의 inline plain text로 보낸다. Attachment를 허용하는 maintainer도 있지만 content-type은 text/plain이어야 한다. Attachment는 review 중 patch 일부를 quote하기 어렵게 하므로 일반적으로 선호하지 않는다.
Patch뿐 아니라 일반 email body도 plain text 사용을 강하게 권장한다. Preferred client 설정과 추천 client 정보는 https://useplaintext.email에서 찾을 수 있다.
- Client는 patch text를 전혀 바꾸지 않아야 한다. Line 시작과 끝의 tab 또는 space도 수정하거나 삭제하면 안 된다.
- format=flowed를 사용하지 않는다. 예상하지 못한 line break가 생길 수 있다.
- Automatic word wrapping을 끈다. Patch가 손상될 수 있다.
- Character set encoding을 임의로 바꾸지 않는다. Patch email은 ASCII 또는 UTF-8만 사용하며 UTF-8 전송 설정은 charset 문제를 줄인다.
- Mail thread가 깨지지 않도록 References: 또는 In-Reply-To: header를 생성하고 유지한다.
- 일반 copy-and-paste는 tab을 space로 바꾸는 경우가 많아 patch에 적합하지 않다. xclipboard, xclip, xcutsel은 동작할 수 있지만 직접 시험하거나 복사를 피하는 편이 낫다.
- Patch가 든 email에 PGP/GPG signature를 넣지 않는다. Patch를 읽고 적용하는 여러 script가 깨진다.
Mailing list로 보내기 전에 자신에게 patch를 보내고, 수신 message를 저장한 뒤 patch command로 성공적으로 적용되는지 확인하는 것이 좋다.
MUA 설정 안내의 범위
65-77이후 내용은 Linux kernel patch를 편집하고 보내기 위한 Mail User Agent(MUA)별 설정 단서다. Software package 전체 설정 안내는 아니다. TUI는 text-based user interface, GUI는 graphical user interface를 뜻한다.
Alpine과 Claws Mail
78-103Alpine (TUI)
- Sending Preferences에서 Do Not Send Flowed Text를 enable한다.
- Strip Whitespace Before Sending을 disable한다.
- Message 작성 중 patch를 넣을 위치에 cursor를 두고 CTRL-R을 눌러 삽입할 patch file을 지정한다.
Claws Mail (GUI)
Patch 전송에 성공적으로 사용하는 개발자가 있다. Message → Insert File 또는 CTRL-I로 patch를 넣거나 external editor를 사용한다. Claws compose window에서 삽입한 patch를 편집해야 한다면 Configuration → Preferences → Compose → Wrapping의 Auto wrapping을 disable한다.
Evolution
105-119Evolution으로 patch를 성공적으로 보내는 개발자가 있다. Mail 작성 시 Format → Paragraph Style → Preformatted 또는 CTRL-7, toolbar에서 Preformat을 선택한다. 그 뒤 Insert → Text File 또는 ALT-N x로 patch를 삽입한다.
또는 diff -Nru old.c new.c | xclip을 실행하고 Preformat을 선택한 뒤 middle button으로 붙여 넣을 수 있다.
diff -Nru old.c new.c | xclip
KMail
121-166KMail을 patch에 성공적으로 사용하는 개발자가 있다. 기본값인 non-HTML compose가 적합하므로 HTML을 enable하지 않는다.
작성 중 Options에서 word wrap을 끈다. 그러면 patch 앞의 일반 본문도 자동 wrapping되지 않으므로 수동으로 줄을 나눠야 한다. 쉬운 방법은 word wrap을 켜고 본문을 작성하여 draft로 저장한 뒤 다시 열어 hard-wrapped 상태로 만든 다음 word wrap을 끄는 것이다.
Email 아래쪽에 일반적인 patch delimiter인 hyphen 세 개(---)를 넣는다. Message → Insert File에서 patch를 선택한다. Message creation toolbar를 customize하여 Insert File icon을 추가할 수도 있다.
Composer window는 line이 wrap되지 않을 만큼 넓혀야 한다. KMail 1.13.5(KDE 4.5.4) 기준으로 Options에서 word wrapping을 꺼도 composer window에서 line이 접혀 보이면 전송할 때 실제 wrapping을 적용했다. Patch line이 길면 보내기 전에 window를 매우 넓혀야 한다.
Attachment는 안전하게 GPG sign할 수 있지만 patch는 inline text가 선호되므로 inline patch에는 GPG signature를 사용하지 않는다. Inline patch를 sign하면 7-bit encoding에서 추출하기 어려워진다.
반드시 attachment로 보내야 한다면 attachment를 right-click하고 Properties에서 Suggest automatic display를 선택해 inline 표시되도록 한다.
Inline patch를 저장할 때 message list에서 해당 email을 right-click하고 Save As를 선택한다. 올바르게 작성했다면 email 전체를 수정하지 않고 patch로 사용할 수 있다. 저장된 email은 user만 read/write할 수 있으므로 다른 위치로 복사하고 group 또는 world read가 필요하면 chmod를 적용한다.
Lotus Notes와 IBM Verse
168-176Lotus Notes에 대한 원문의 조언은 “피하라”는 한 문장이다. IBM Verse(Web GUI)에 대해서도 Lotus Notes와 같다고 적혀 있다.
Mutt 기본 사용
178-214많은 Linux 개발자가 mutt를 사용하므로 patch 작업에 잘 맞는다. Mutt에는 editor가 포함되어 있지 않다. 사용하는 editor가 자동 line break를 만들지 않도록 설정해야 하며 대부분의 editor에는 file content를 변경 없이 넣는 Insert File 기능이 있다.
Mutt에서 vim을 사용하려면 다음과 같이 설정한다.
set editor="vi"
xclip을 쓴다면 middle button 또는 Shift-Insert 전에 :set paste를 실행한다. Inline patch를 넣을 때는 :r filename을 사용할 수도 있다. Attachment 기능은 set paste 없이도 정상 동작한다.
:set paste
:r filename
git format-patch로 patch를 만든 뒤 Mutt로 보낼 수도 있다.
$ mutt -H 0001-some-bug-fix.patch
기본 설정으로도 동작하지만 send_charset은 다음처럼 설정하는 것이 좋다.
set send_charset="us-ascii:utf-8"
Mutt와 Gmail 최소 설정 예
215-247다음은 Gmail을 통해 patch를 보내기 위한 최소 .muttrc 예제다. 실제 환경에서는 password를 plain text로 저장하는 문제와 현재 Gmail authentication 요구 사항을 별도로 검토해야 한다. 아래 block은 원문 예제를 보존한다.
# .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 # encrypted connection 요구
# ================ Composition ====================
set editor = `echo \$EDITOR`
set edit_headers = yes # 편집할 때 header 표시
set charset = UTF-8 # $LANG 값, send_charset fallback
# Sender, email address, sign-off line이 일치해야 함
unset use_domain
set realname = "YOUR NAME"
set from = "username@gmail.com"
set use_from = yes
Pine과 Sylpheed
249-272Pine (TUI)
Pine에는 과거 whitespace truncation 문제가 있었지만 현재는 수정된 것으로 본다. 가능하면 successor인 Alpine을 사용한다. 최근 version에는 quell-flowed-text와 no-strip-whitespace-before-send option이 필요하다.
Sylpheed (GUI)
- Inline text와 attachment 모두 잘 처리한다.
- External editor를 사용할 수 있다.
- 큰 folder에서는 느리다.
- Non-SSL connection 위의 TLS SMTP authentication을 지원하지 않는다.
- Compose window에 유용한 ruler bar가 있다.
- Address book에 주소를 추가할 때 display name을 올바르게 이해하지 못한다.
Thunderbird와 external editor
274-317원문은 Thunderbird가 text를 변형하려는 성향이 있지만 설정으로 억제할 수 있다고 설명한다. Extension 설치를 포함한 변경 뒤에는 Thunderbird를 restart해야 한다.
가장 쉬운 방법은 선호하는 external editor를 여는 extension을 사용하는 것이다.
- External Editor Revived source
https://github.com/Frederick888/external-editor-revived - External Editor Revived add-on
https://addons.thunderbird.net/en-GB/thunderbird/addon/external-editor-revived/ - External Editor Revived wiki
https://github.com/Frederick888/external-editor-revived/wiki - External Editor source
https://github.com/exteditor/exteditor
External Editor Revived는 native messaging host 설치가 필요하므로 wiki를 읽는다. External Editor는 extension을 설치한 뒤 compose window의 View → Toolbars → Customize에서 button을 추가해 사용한다.
External Editor에서 실행하는 editor는 fork해서 즉시 return하면 안 되고 window를 닫을 때까지 기다려야 한다. gvim은 external editor 설정의 text editor field에 /usr/bin/gvim --nofork 또는 동등한 -f option을 넣는다. 다른 editor는 manual에서 foreground 실행 방법을 확인한다.
Thunderbird internal editor 설정
318-335Internal editor가 format=flowed와 wrapping을 사용하지 않도록 Main Menu → Preferences → General → Config Editor에서 다음 preference를 바꾼다.
mailnews.send_plaintext_flowed = false
mailnews.wraplength = 0
Main Menu → Account Settings → account → Composition & Addressing에서 Compose messages in HTML format을 disable하여 HTML message를 작성하지 않는다. Main Menu → View → Message Body As → Plain Text를 선택하여 message도 plain text로 연다.
TkRat, Gmail Web, HacKerMaiL
336-361TkRat (GUI)
정상 동작한다. Insert File 또는 external editor를 사용한다.
Gmail Web GUI
Patch 전송에는 적합하지 않다. Web client가 tab을 자동으로 space로 바꾸며 line을 78 character마다 CRLF로 wrapping한다. External editor로 tab 변환 문제를 해결하더라도 non-ASCII character가 하나라도 있는 message를 base64 encode한다. 유럽권 이름 같은 text도 이에 해당한다.
HacKerMaiL (TUI)
HacKerMaiL(hkml)은 mailing list subscription 없이 사용할 수 있는 public-inbox 기반의 간단한 mail 관리 도구다. DAMON maintainer가 개발하고 관리하며 DAMON 및 일반 kernel subsystem의 단순한 개발 workflow를 지원하는 것이 목표다.
git send-email과 자기 자신에게 보내는 시험
email-clients.rst:3-16대부분의 kernel 개발자는 일반 mail composer보다 git send-email을 사용하고 maintainer는 git am으로 patch를 적용한다. 첫 patch는 먼저 자신에게 보내고 header를 포함한 raw message로 저장한 뒤 git am raw_email.txt가 성공하는지 확인한다.
적용 뒤 git log로 author, subject, commit message와 diff가 의도대로 보존됐는지 검토한다. 이 round trip이 성공한 다음 maintainer와 mailing list에 보낸다.