all repos — site @ 53ef7e97ed6524d7a8d48671fd4607a085025c9e

source for my site, found at icyphox.sh

pages/txt/s-nail.txt (view raw)

  1---
  2date: '2020-05-06'
  3subtitle: And how to achieve a usable configuration for IMAP/SMTP
  4title: 'The S-nail mail client'
  5url: 's-nail'
  6---
  7
  8TL;DR: Here's my
  9[`.mailrc`](https://github.com/icyphox/dotfiles/blob/master/home/.mailrc).
 10
 11As I'd mentioned in my blog post about [mael](/blog/mael), I've been on
 12the lookout for a good, usable mail client. As it happens, I found
 13S-nail just as I was about to give up on mael. Turns out writing an MUA
 14isn't all too easy after all. S-nail turned out to be the perfect client
 15for me, but I had to invest quite some time in reading the [very
 16thorough manual](https://www.sdaoden.eu/code-nail.html) and exchanging
 17emails with its [very friendly author](https://www.sdaoden.eu). I did it
 18so you don't have to[^1], and I present to you this guide.
 19
 20basic settings
 21--------------
 22
 23These settings below should guarantee some sane defaults to get started
 24with. Comments added for context.
 25
 26``` {.conf}
 27# enable upward compatibility with S-nail v15.0
 28set v15-compat
 29
 30# charsets we send mail in
 31set sendcharsets=utf-8,iso-8859-1
 32
 33# reply back in sender's charset
 34set reply-in-same-charset
 35
 36# prevent stripping of full names in replies
 37set fullnames
 38
 39# adds a 'Mail-Followup-To' header; useful in mailing lists
 40set followup-to followup-to-honour-ask-yes
 41
 42# asks for an attachment after composing
 43set askattach
 44
 45# marks a replied message as answered
 46set markanswered
 47
 48# honors the 'Reply-To' header
 49set reply-to-honour
 50
 51# automatically launches the editor while composing mail interactively
 52set editalong
 53
 54# I didn't fully understand this :) 
 55set history-gabby=all
 56
 57# command history storage
 58set history-file=~/.s-nailhist
 59
 60# sort mail by date (try 'thread' for threaded view)
 61set autosort=date
 62```
 63
 64authentication
 65--------------
 66
 67With these out of the way, we can move on to configuring our
 68account---authenticating IMAP and SMTP. Before that, however, we'll have
 69to create a `~/.netrc` file to store our account credentials.
 70
 71(This of course, assumes that your SMTP and IMAP credentials are the
 72same. I don't know what to do otherwise. )
 73
 74``` {.netrc}
 75machine *.domain.tld login user@domain.tld password hunter2
 76```
 77
 78Once done, encrypt this file using `gpg` / `gpg2`. This is optional, but
 79recommended.
 80
 81    $ gpg2 --symmetric --cipher-algo AES256 -o .netrc.gpg .netrc
 82
 83You can now delete the plaintext `.netrc` file. Now add these lines to
 84your `.mailrc`:
 85
 86``` {.conf}
 87set netrc-lookup
 88set netrc-pipe='gpg2 -qd ~/.netrc.gpg'
 89```
 90
 91Before we define our account block, add these two lines for a nicer IMAP
 92experience:
 93
 94``` {.conf}
 95set imap-cache=~/.cache/nail
 96set imap-keepalive=240
 97```
 98
 99Defining an account is dead simple.
100
101``` {.conf}
102account "personal" {
103    localopts yes
104    set from="Your Name <user@domain.tld>"
105    set folder=imaps://imap.domain.tld:993
106
107    # copy sent messages to Sent; '+' indicates subdir of 'folder' 
108    set record=+Sent
109    set inbox=+INBOX
110    
111    # optionally, set this to 'smtps' and change the port accordingly
112    # remove 'smtp-use-starttls'
113    set mta=smtp://smtp.domain.tld:587 smtp-use-starttls
114
115    # couple of shortcuts to useful folders
116    shortcut sent +Sent \
117        inbox +INBOX \
118        drafts +Drafts \
119        trash +Trash \
120        archives +Archives
121}
122
123# enable account on startup
124account personal
125```
126
127You might also want to trash mail, instead of perma-deleting them
128(`delete` does that). To achieve this, we define an alias:
129
130    define trash {
131        move "$@" +Trash
132    }
133
134    commandalias del call trash
135
136Replace `+Trash` with the relative path to your trash folder.
137
138aesthetics
139----------
140
141The fun stuff. I don't feel like explaining what these do (hint: I don't
142fully understand it either), so just copy-paste it and mess around with
143the colors:
144
145    # use whatever symbol you fancy
146    set prompt='> '
147
148    colour 256 sum-dotmark ft=bold,fg=13 dot
149    colour 256 sum-header fg=007 older
150    colour 256 sum-header bg=008 dot
151    colour 256 sum-header fg=white
152    colour 256 sum-thread bg=008 dot
153    colour 256 sum-thread fg=cyan
154
155The prompt can be configured more extensively, but I don't need it. Read
156the man page if you do.
157
158essential commands
159------------------
160
161Eh, you can just read the man page, I guess. But here's a quick list off
162the top of my head:
163
164-   `headers`: Lists all messages, with the date, subject etc.
165-   `mail`: Compose mail.
166-   `<number>`: Read mail by specifiying its number on the message list.
167-   `delete <number>`: Delete mail.
168-   `new <number>`: Mark as new (unread).
169-   `file <shortcut or path to folder>`: Change folders. For example:
170    `file     sent`
171
172That's all there is to it.
173
174*This is day 2 of the \#100DaysToOffload challenge. I didn't think I'd
175participate, until today. So yesterday's post is day 1. Will I keep at
176it? I dunno. We'll see.*
177
178[^1]: Honestly, read the man page (and email Steffen!)---there's a ton
179    of useful options in there.