328 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			328 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. _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 = '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.
 | |
| 
 | |
| - 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.
 |