cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

email-clients.rst (11252B)


      1.. _email_clients:
      2
      3Email clients info for Linux
      4============================
      5
      6Git
      7---
      8
      9These days most developers use ``git send-email`` instead of regular
     10email clients.  The man page for this is quite good.  On the receiving
     11end, maintainers use ``git am`` to apply the patches.
     12
     13If you are new to ``git`` then send your first patch to yourself.  Save it
     14as raw text including all the headers.  Run ``git am raw_email.txt`` and
     15then review the changelog with ``git log``.  When that works then send
     16the patch to the appropriate mailing list(s).
     17
     18General Preferences
     19-------------------
     20
     21Patches for the Linux kernel are submitted via email, preferably as
     22inline text in the body of the email.  Some maintainers accept
     23attachments, but then the attachments should have content-type
     24``text/plain``.  However, attachments are generally frowned upon because
     25it makes quoting portions of the patch more difficult in the patch
     26review process.
     27
     28It's also strongly recommended that you use plain text in your email body,
     29for patches and other emails alike. https://useplaintext.email may be useful
     30for information on how to configure your preferred email client, as well as
     31listing recommended email clients should you not already have a preference.
     32
     33Email clients that are used for Linux kernel patches should send the
     34patch text untouched.  For example, they should not modify or delete tabs
     35or spaces, even at the beginning or end of lines.
     36
     37Don't send patches with ``format=flowed``.  This can cause unexpected
     38and unwanted line breaks.
     39
     40Don't let your email client do automatic word wrapping for you.
     41This can also corrupt your patch.
     42
     43Email clients should not modify the character set encoding of the text.
     44Emailed patches should be in ASCII or UTF-8 encoding only.
     45If you configure your email client to send emails with UTF-8 encoding,
     46you avoid some possible charset problems.
     47
     48Email clients should generate and maintain "References:" or "In-Reply-To:"
     49headers so that mail threading is not broken.
     50
     51Copy-and-paste (or cut-and-paste) usually does not work for patches
     52because tabs are converted to spaces.  Using xclipboard, xclip, and/or
     53xcutsel may work, but it's best to test this for yourself or just avoid
     54copy-and-paste.
     55
     56Don't use PGP/GPG signatures in mail that contains patches.
     57This breaks many scripts that read and apply the patches.
     58(This should be fixable.)
     59
     60It's a good idea to send a patch to yourself, save the received message,
     61and successfully apply it with 'patch' before sending patches to Linux
     62mailing lists.
     63
     64
     65Some email client (MUA) hints
     66-----------------------------
     67
     68Here are some specific MUA configuration hints for editing and sending
     69patches for the Linux kernel.  These are not meant to be complete
     70software package configuration summaries.
     71
     72
     73Legend:
     74
     75- TUI = text-based user interface
     76- GUI = graphical user interface
     77
     78Alpine (TUI)
     79************
     80
     81Config options:
     82
     83In 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
     88When composing the message, the cursor should be placed where the patch
     89should appear, and then pressing :kbd:`CTRL-R` let you specify the patch file
     90to insert into the message.
     91
     92Claws Mail (GUI)
     93****************
     94
     95Works. Some people use this successfully for patches.
     96
     97To insert a patch use :menuselection:`Message-->Insert File` (:kbd:`CTRL-I`)
     98or an external editor.
     99
    100If the inserted patch has to be edited in the Claws composition window
    101"Auto wrapping" in
    102:menuselection:`Configuration-->Preferences-->Compose-->Wrapping` should be
    103disabled.
    104
    105Evolution (GUI)
    106***************
    107
    108Some people use this successfully for patches.
    109
    110When composing mail select: Preformat
    111  from :menuselection:`Format-->Paragraph Style-->Preformatted` (:kbd:`CTRL-7`)
    112  or the toolbar
    113
    114Then use:
    115:menuselection:`Insert-->Text File...` (:kbd:`ALT-N x`)
    116to insert the patch.
    117
    118You can also ``diff -Nru old.c new.c | xclip``, select
    119:menuselection:`Preformat`, then paste with the middle button.
    120
    121Kmail (GUI)
    122***********
    123
    124Some people use Kmail successfully for patches.
    125
    126The default setting of not composing in HTML is appropriate; do not
    127enable it.
    128
    129When composing an email, under options, uncheck "word wrap". The only
    130disadvantage is any text you type in the email will not be word-wrapped
    131so you will have to manually word wrap text before the patch. The easiest
    132way around this is to compose your email with word wrap enabled, then save
    133it as a draft. Once you pull it up again from your drafts it is now hard
    134word-wrapped and you can uncheck "word wrap" without losing the existing
    135wrapping.
    136
    137At the bottom of your email, put the commonly-used patch delimiter before
    138inserting your patch:  three hyphens (``---``).
    139
    140Then from the :menuselection:`Message` menu item, select
    141:menuselection:`insert file` and choose your patch.
    142As an added bonus you can customise the message creation toolbar menu
    143and put the :menuselection:`insert file` icon there.
    144
    145Make the composer window wide enough so that no lines wrap. As of
    146KMail 1.13.5 (KDE 4.5.4), KMail will apply word wrapping when sending
    147the email if the lines wrap in the composer window. Having word wrapping
    148disabled in the Options menu isn't enough. Thus, if your patch has very
    149long lines, you must make the composer window very wide before sending
    150the email. See: https://bugs.kde.org/show_bug.cgi?id=174034
    151
    152You can safely GPG sign attachments, but inlined text is preferred for
    153patches so do not GPG sign them.  Signing patches that have been inserted
    154as inlined text will make them tricky to extract from their 7-bit encoding.
    155
    156If you absolutely must send patches as attachments instead of inlining
    157them as text, right click on the attachment and select :menuselection:`properties`,
    158and highlight :menuselection:`Suggest automatic display` to make the attachment
    159inlined to make it more viewable.
    160
    161When saving patches that are sent as inlined text, select the email that
    162contains 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
    164if it was properly composed.  Emails are saved as read-write for user only so
    165you will have to chmod them to make them group and world readable if you copy
    166them elsewhere.
    167
    168Lotus Notes (GUI)
    169*****************
    170
    171Run away from it.
    172
    173IBM Verse (Web GUI)
    174*******************
    175
    176See Lotus Notes.
    177
    178Mutt (TUI)
    179**********
    180
    181Plenty of Linux developers use ``mutt``, so it must work pretty well.
    182
    183Mutt doesn't come with an editor, so whatever editor you use should be
    184used in a way that there are no automatic linebreaks.  Most editors have
    185an :menuselection:`insert file` option that inserts the contents of a file
    186unaltered.
    187
    188To use ``vim`` with mutt::
    189
    190  set editor="vi"
    191
    192If using xclip, type the command::
    193
    194  :set paste
    195
    196before middle button or shift-insert or use::
    197
    198  :r filename
    199
    200if you want to include the patch inline.
    201(a)ttach works fine without ``set paste``.
    202
    203You can also generate patches with ``git format-patch`` and then use Mutt
    204to send them::
    205
    206    $ mutt -H 0001-some-bug-fix.patch
    207
    208Config options:
    209
    210It should work with default settings.
    211However, it's a good idea to set the ``send_charset`` to::
    212
    213  set send_charset="us-ascii:utf-8"
    214
    215Mutt is highly customizable. Here is a minimum configuration to start
    216using Mutt to send patches through Gmail::
    217
    218  # .muttrc
    219  # ================  IMAP ====================
    220  set imap_user = 'yourusername@gmail.com'
    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://username@smtp.gmail.com: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 = "username@gmail.com"
    241  set use_from = yes
    242
    243The 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
    249Pine (TUI)
    250**********
    251
    252Pine has had some whitespace truncation issues in the past, but these
    253should all be fixed now.
    254
    255Use alpine (pine's successor) if you can.
    256
    257Config options:
    258
    259- ``quell-flowed-text`` is needed for recent versions
    260- the ``no-strip-whitespace-before-send`` option is needed
    261
    262
    263Sylpheed (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
    274Thunderbird (GUI)
    275*****************
    276
    277Thunderbird is an Outlook clone that likes to mangle text, but there are ways
    278to coerce it into behaving.
    279
    280- Allow use of an external editor:
    281  The easiest thing to do with Thunderbird and patches is to use an
    282  "external editor" extension and then just use your favorite ``$EDITOR``
    283  for reading/merging patches into the body text.  To do this, download
    284  and install the extension, then add a button for it using
    285  :menuselection:`View-->Toolbars-->Customize...` and finally just click on it
    286  when in the :menuselection:`Compose` dialog.
    287
    288  Please note that "external editor" requires that your editor must not
    289  fork, or in other words, the editor must not return before closing.
    290  You may have to pass additional flags or change the settings of your
    291  editor. Most notably if you are using gvim then you must pass the -f
    292  option to gvim by putting ``/usr/bin/gvim -f`` (if the binary is in
    293  ``/usr/bin``) to the text editor field in :menuselection:`external editor`
    294  settings. If you are using some other editor then please read its manual
    295  to find out how to do this.
    296
    297To beat some sense out of the internal editor, do this:
    298
    299- Edit your Thunderbird config settings so that it won't use ``format=flowed``.
    300  Go to :menuselection:`edit-->preferences-->advanced-->config editor` to bring up
    301  the thunderbird's registry editor.
    302
    303- Set ``mailnews.send_plaintext_flowed`` to ``false``
    304
    305- Set ``mailnews.wraplength`` from ``72`` to ``0``
    306
    307- :menuselection:`View-->Message Body As-->Plain Text`
    308
    309- :menuselection:`View-->Character Encoding-->Unicode (UTF-8)`
    310
    311TkRat (GUI)
    312***********
    313
    314Works.  Use "Insert file..." or external editor.
    315
    316Gmail (Web GUI)
    317***************
    318
    319Does not work for sending patches.
    320
    321Gmail web client converts tabs to spaces automatically.
    322
    323At the same time it wraps lines every 78 chars with CRLF style line breaks
    324although tab2space problem can be solved with external editor.
    325
    326Another problem is that Gmail will base64-encode any message that has a
    327non-ASCII character. That includes things like European names.