← Documents Documentation/process/email-clients.rst GitHub 원문 ↗

Linux 6.18.37 · 개발 절차

Kernel patch용 email client 설정

Patch의 tab·공백·line wrapping을 보존하고 plain text thread로 보내기 위한 git send-email과 주요 mail client 설정을 설명합니다.

Source pathDocumentation/process/email-clients.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

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에 보낸다.

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-361

Alpine은 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-339

Claws 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-352

Gmail 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 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. _email_clients:
2
3 Email clients info for Linux
4 ============================
5
6 Git
7 ---
8
9 These days most developers use ``git send-email`` instead of regular
10 email clients. The man page for this is quite good. On the receiving
11 end, maintainers use ``git am`` to apply the patches.
12
13 If you are new to ``git`` then send your first patch to yourself. Save it
14 as raw text including all the headers. Run ``git am raw_email.txt`` and
15 then review the changelog with ``git log``. When that works then send
16 the patch to the appropriate mailing list(s).
17
18 General Preferences
19 -------------------
20
21 Patches for the Linux kernel are submitted via email, preferably as
22 inline text in the body of the email. Some maintainers accept
23 attachments, but then the attachments should have content-type
24 ``text/plain``. However, attachments are generally frowned upon because
25 it makes quoting portions of the patch more difficult in the patch
26 review process.
27
28 It's also strongly recommended that you use plain text in your email body,
29 for patches and other emails alike. https://useplaintext.email may be useful
30 for information on how to configure your preferred email client, as well as
31 listing recommended email clients should you not already have a preference.
32
33 Email clients that are used for Linux kernel patches should send the
34 patch text untouched. For example, they should not modify or delete tabs
35 or spaces, even at the beginning or end of lines.
36
37 Don't send patches with ``format=flowed``. This can cause unexpected
38 and unwanted line breaks.
39
40 Don't let your email client do automatic word wrapping for you.
41 This can also corrupt your patch.
42
43 Email clients should not modify the character set encoding of the text.
44 Emailed patches should be in ASCII or UTF-8 encoding only.
45 If you configure your email client to send emails with UTF-8 encoding,
46 you avoid some possible charset problems.
47
48 Email clients should generate and maintain "References:" or "In-Reply-To:"
49 headers so that mail threading is not broken.
50
51 Copy-and-paste (or cut-and-paste) usually does not work for patches
52 because tabs are converted to spaces. Using xclipboard, xclip, and/or
53 xcutsel may work, but it's best to test this for yourself or just avoid
54 copy-and-paste.
55
56 Don't use PGP/GPG signatures in mail that contains patches.
57 This breaks many scripts that read and apply the patches.
58 (This should be fixable.)
59
60 It's a good idea to send a patch to yourself, save the received message,
61 and successfully apply it with 'patch' before sending patches to Linux
62 mailing lists.
63
64
65 Some email client (MUA) hints
66 -----------------------------
67
68 Here are some specific MUA configuration hints for editing and sending
69 patches for the Linux kernel. These are not meant to be complete
70 software package configuration summaries.
71
72
73 Legend:
74
75 - TUI = text-based user interface
76 - GUI = graphical user interface
77
78 Alpine (TUI)
79 ************
80
81 Config options:
82
83 In the :menuselection:`Sending Preferences` section:
84
85 - :menuselection:`Do Not Send Flowed Text` must be ``enabled``
86 - :menuselection:`Strip Whitespace Before Sending` must be ``disabled``
87
88 When composing the message, the cursor should be placed where the patch
89 should appear, and then pressing `CTRL-R` let you specify the patch file
90 to insert into the message.
91
92 Claws Mail (GUI)
93 ****************
94
95 Works. Some people use this successfully for patches.
96
97 To insert a patch use :menuselection:`Message-->Insert File` (`CTRL-I`)
98 or an external editor.
99
100 If the inserted patch has to be edited in the Claws composition window
101 "Auto wrapping" in
102 :menuselection:`Configuration-->Preferences-->Compose-->Wrapping` should be
103 disabled.
104
105 Evolution (GUI)
106 ***************
107
108 Some people use this successfully for patches.
109
110 When composing mail select: Preformat
111 from :menuselection:`Format-->Paragraph Style-->Preformatted` (`CTRL-7`)
112 or the toolbar
113
114 Then use:
115 :menuselection:`Insert-->Text File...` (`ALT-N x`)
116 to insert the patch.
117
118 You can also ``diff -Nru old.c new.c | xclip``, select
119 :menuselection:`Preformat`, then paste with the middle button.
120
121 Kmail (GUI)
122 ***********
123
124 Some people use Kmail successfully for patches.
125
126 The default setting of not composing in HTML is appropriate; do not
127 enable it.
128
129 When composing an email, under options, uncheck "word wrap". The only
130 disadvantage is any text you type in the email will not be word-wrapped
131 so you will have to manually word wrap text before the patch. The easiest
132 way around this is to compose your email with word wrap enabled, then save
133 it as a draft. Once you pull it up again from your drafts it is now hard
134 word-wrapped and you can uncheck "word wrap" without losing the existing
135 wrapping.
136
137 At the bottom of your email, put the commonly-used patch delimiter before
138 inserting your patch: three hyphens (``---``).
139
140 Then from the :menuselection:`Message` menu item, select
141 :menuselection:`insert file` and choose your patch.
142 As an added bonus you can customise the message creation toolbar menu
143 and put the :menuselection:`insert file` icon there.
144
145 Make the composer window wide enough so that no lines wrap. As of
146 KMail 1.13.5 (KDE 4.5.4), KMail will apply word wrapping when sending
147 the email if the lines wrap in the composer window. Having word wrapping
148 disabled in the Options menu isn't enough. Thus, if your patch has very
149 long lines, you must make the composer window very wide before sending
150 the email. See: https://bugs.kde.org/show_bug.cgi?id=174034
151
152 You can safely GPG sign attachments, but inlined text is preferred for
153 patches so do not GPG sign them. Signing patches that have been inserted
154 as inlined text will make them tricky to extract from their 7-bit encoding.
155
156 If you absolutely must send patches as attachments instead of inlining
157 them as text, right click on the attachment and select :menuselection:`properties`,
158 and highlight :menuselection:`Suggest automatic display` to make the attachment
159 inlined to make it more viewable.
160
161 When saving patches that are sent as inlined text, select the email that
162 contains the patch from the message list pane, right click and select
163 :menuselection:`save as`. You can use the whole email unmodified as a patch
164 if it was properly composed. Emails are saved as read-write for user only so
165 you will have to chmod them to make them group and world readable if you copy
166 them elsewhere.
167
168 Lotus Notes (GUI)
169 *****************
170
171 Run away from it.
172
173 IBM Verse (Web GUI)
174 *******************
175
176 See Lotus Notes.
177
178 Mutt (TUI)
179 **********
180
181 Plenty of Linux developers use ``mutt``, so it must work pretty well.
182
183 Mutt doesn't come with an editor, so whatever editor you use should be
184 used in a way that there are no automatic linebreaks. Most editors have
185 an :menuselection:`insert file` option that inserts the contents of a file
186 unaltered.
187
188 To use ``vim`` with mutt::
189
190 set editor="vi"
191
192 If using xclip, type the command::
193
194 :set paste
195
196 before middle button or shift-insert or use::
197
198 :r filename
199
200 if you want to include the patch inline.
201 (a)ttach works fine without ``set paste``.
202
203 You can also generate patches with ``git format-patch`` and then use Mutt
204 to send them::
205
206 $ mutt -H 0001-some-bug-fix.patch
207
208 Config options:
209
210 It should work with default settings.
211 However, it's a good idea to set the ``send_charset`` to::
212
213 set send_charset="us-ascii:utf-8"
214
215 Mutt is highly customizable. Here is a minimum configuration to start
216 using Mutt to send patches through Gmail::
217
218 # .muttrc
219 # ================ IMAP ====================
220 set imap_user = '[email protected]'
221 set imap_pass = 'yourpassword'
222 set spoolfile = imaps://imap.gmail.com/INBOX
223 set folder = imaps://imap.gmail.com/
224 set record="imaps://imap.gmail.com/[Gmail]/Sent Mail"
225 set postponed="imaps://imap.gmail.com/[Gmail]/Drafts"
226 set mbox="imaps://imap.gmail.com/[Gmail]/All Mail"
227
228 # ================ SMTP ====================
229 set smtp_url = "smtp://[email protected]:587/"
230 set smtp_pass = $imap_pass
231 set ssl_force_tls = yes # Require encrypted connection
232
233 # ================ Composition ====================
234 set editor = `echo \$EDITOR`
235 set edit_headers = yes # See the headers when editing
236 set charset = UTF-8 # value of $LANG; also fallback for send_charset
237 # Sender, email address, and sign-off line must match
238 unset use_domain # because joe@localhost is just embarrassing
239 set realname = "YOUR NAME"
240 set from = "[email protected]"
241 set use_from = yes
242
243 The Mutt docs have lots more information:
244
245 https://gitlab.com/muttmua/mutt/-/wikis/UseCases/Gmail
246
247 http://www.mutt.org/doc/manual/
248
249 Pine (TUI)
250 **********
251
252 Pine has had some whitespace truncation issues in the past, but these
253 should all be fixed now.
254
255 Use alpine (pine's successor) if you can.
256
257 Config options:
258
259 - ``quell-flowed-text`` is needed for recent versions
260 - the ``no-strip-whitespace-before-send`` option is needed
261
262
263 Sylpheed (GUI)
264 **************
265
266 - Works well for inlining text (or using attachments).
267 - Allows use of an external editor.
268 - Is slow on large folders.
269 - Won't do TLS SMTP auth over a non-SSL connection.
270 - Has a helpful ruler bar in the compose window.
271 - Adding addresses to address book doesn't understand the display name
272 properly.
273
274 Thunderbird (GUI)
275 *****************
276
277 Thunderbird is an Outlook clone that likes to mangle text, but there are ways
278 to coerce it into behaving.
279
280 After doing the modifications, this includes installing the extensions,
281 you need to restart Thunderbird.
282
283 - Allow use of an external editor:
284
285 The easiest thing to do with Thunderbird and patches is to use extensions
286 which open your favorite external editor.
287
288 Here are some example extensions which are capable of doing this.
289
290 - "External Editor Revived"
291
292 https://github.com/Frederick888/external-editor-revived
293
294 https://addons.thunderbird.net/en-GB/thunderbird/addon/external-editor-revived/
295
296 It requires installing a "native messaging host".
297 Please read the wiki which can be found here:
298 https://github.com/Frederick888/external-editor-revived/wiki
299
300 - "External Editor"
301
302 https://github.com/exteditor/exteditor
303
304 To do this, download and install the extension, then open the
305 :menuselection:`compose` window, add a button for it using
306 :menuselection:`View-->Toolbars-->Customize...`
307 then just click on the new button when you wish to use the external editor.
308
309 Please note that "External Editor" requires that your editor must not
310 fork, or in other words, the editor must not return before closing.
311 You may have to pass additional flags or change the settings of your
312 editor. Most notably if you are using gvim then you must pass the -f
313 option to gvim by putting ``/usr/bin/gvim --nofork"`` (if the binary is in
314 ``/usr/bin``) to the text editor field in :menuselection:`external editor`
315 settings. If you are using some other editor then please read its manual
316 to find out how to do this.
317
318 To beat some sense out of the internal editor, do this:
319
320 - Edit your Thunderbird config settings so that it won't use ``format=flowed``!
321 Go to your main window and find the button for your main dropdown menu.
322 :menuselection:`Main Menu-->Preferences-->General-->Config Editor...`
323 to bring up the thunderbird's registry editor.
324
325 - Set ``mailnews.send_plaintext_flowed`` to ``false``
326
327 - Set ``mailnews.wraplength`` from ``72`` to ``0``
328
329 - Don't write HTML messages! Go to the main window
330 :menuselection:`Main Menu-->Account Settings-->[email protected]>Composition & Addressing`!
331 There you can disable the option "Compose messages in HTML format".
332
333 - Open messages only as plain text! Go to the main window
334 :menuselection:`Main Menu-->View-->Message Body As-->Plain Text`!
335
336 TkRat (GUI)
337 ***********
338
339 Works. Use "Insert file..." or external editor.
340
341 Gmail (Web GUI)
342 ***************
343
344 Does not work for sending patches.
345
346 Gmail web client converts tabs to spaces automatically.
347
348 At the same time it wraps lines every 78 chars with CRLF style line breaks
349 although tab2space problem can be solved with external editor.
350
351 Another problem is that Gmail will base64-encode any message that has a
352 non-ASCII character. That includes things like European names.
353
354 HacKerMaiL (TUI)
355 ****************
356
357 HacKerMaiL (hkml) is a public-inbox based simple mails management tool that
358 doesn't require subscription of mailing lists. It is developed and maintained
359 by the DAMON maintainer and aims to support simple development workflows for
360 DAMON and general kernel subsystems. Refer to the README
361 (https://github.com/sjp38/hackermail/blob/master/README.md) for details.
362

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-62

Linux 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-103

Alpine (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-119

Evolution으로 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-166

KMail을 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-176

Lotus 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 = '[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 # 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 = "[email protected]"
set use_from = yes

Pine과 Sylpheed

249-272

Pine (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는 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-335

Internal 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-361

TkRat (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를 지원하는 것이 목표다.