forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
327 lines
11 KiB
327 lines
11 KiB
.. _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 :kbd:`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` (:kbd:`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` (:kbd:`CTRL-7`) |
|
or the toolbar |
|
|
|
Then use: |
|
:menuselection:`Insert-->Text File...` (:kbd:`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 = '[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 |
|
|
|
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. |
|
|
|
- Allow use of an external editor: |
|
The easiest thing to do with Thunderbird and patches is to use an |
|
"external editor" extension and then just use your favorite ``$EDITOR`` |
|
for reading/merging patches into the body text. To do this, download |
|
and install the extension, then add a button for it using |
|
:menuselection:`View-->Toolbars-->Customize...` and finally just click on it |
|
when in the :menuselection:`Compose` dialog. |
|
|
|
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 -f`` (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 :menuselection:`edit-->preferences-->advanced-->config editor` to bring up |
|
the thunderbird's registry editor. |
|
|
|
- Set ``mailnews.send_plaintext_flowed`` to ``false`` |
|
|
|
- Set ``mailnews.wraplength`` from ``72`` to ``0`` |
|
|
|
- :menuselection:`View-->Message Body As-->Plain Text` |
|
|
|
- :menuselection:`View-->Character Encoding-->Unicode (UTF-8)` |
|
|
|
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.
|
|
|