Configuring mutt
Believe it or not, there are (smart) people using command line mail clients in 2020. Of course I’m talking about me and mutt
.
Installation in Red Hat/CentOS is easy:
# yum -y install mutt
I use several different accounts, so I will need different configuration files. One of them, my default account, will be soft-linked to ~/.muttrc
:
$ ls -la .muttrc
lrwxrwxrwx. 1 me me 36 jun 11 22:32 .muttrc -> /home/me/.mutt/.muttrc-account1
$ ls -la .mutt/.muttrc-*
-rw-------. 1 me me 587 jun 12 00:13 .mutt/.muttrc-account1
-rw-------. 1 me me 584 jun 12 00:19 .mutt/.muttrc-account2
-rw-------. 1 me me 584 jun 12 00:24 .mutt/.muttrc-account3
So we can start with just mutt command or we can choose a configuration file: mutt -F .mutt/.muttrc-account2
Basic configuration
Part of the configuration is account specific:
# Account specific information
set from = "test@example.com"
set realname = "My Name"
# Signature
set signature = "~/.mutt/signature"
# IMAP configuration
set imap_user = "uesrname"
set imap_pass = "password"
set folder = "imaps://imap.example.com:993"
set spoolfile = "+INBOX"
# SMTP configuration
set smtp_url = "smtps://username@smtp.example.com:465/"
set smtp_pass = "password"
set ssl_force_tls=yes
That’s enough to make it work; however, we will improve it little by little including some files and getting rid of clear text passwords.
Common settings
Some settings (folders, GPG, colours…) are common for all accounts, so we can just include them in the account specific configuration files.
Something like this:
# Common configuration
source ~/.mutt/common.rc
# GnuPG bootstrap
source ~/.mutt/gpg.rc
# Appearance
source ~/.mutt/appearance.rc
Should I write my password in the config file?
No, you shouldn’t. And there is no need to do it. You can safely leave the imap_pass
and smtp_pass
lines out and mutt will ask for passwords when required.
You can also write them in a temporary file:
set imap_pass = "my_very_secret_imap_password"
set smtp_pass = "my_very_secret_smtp_password"
Encrypt the file:
gpg --recipient me@example.com --encrypt ~/.mutt/.pw-account1
And include it in your account configuration file:
source "gpg -d ~/.mutt/.pw-account1.gpg |"
Warning: don’t forget to remove the imap_pass
and smtp_pass
and securely erase the file where you wrote your passwords in clear text.
Dealing with HTML email
To be able to read HTML email we will need a command line browser. I use w3m
that will require an additional repo to be enabled:
sudo subscription-manager repos --enable "codeready-builder-for-rhel-8-$(arch)-rpms"
sudo yum -y install w3m
Then add this to ~.mailcap
:
text/html; "$BROWSER" %s &; test=test -n "$DISPLAY"; needsterminal;
text/html; w3m -I %{charset} -T text/html; copiousoutput;
And this to your .muttrc
:
# HTML
auto_view text/html
alternative_order text/plain text/enriched text/html
And you are good to go.
Signing and encrypting mail
Signing and encrypting mail is almost trivial once you have properly set up your GPG keys.
I created a gpg.rc
file from a template:
$ cat /usr/share/doc/mutt/gpg.rc |grep -v ^#|sed '/^$/d' > .mutt/gpg.rc
$ cat >>.muttrc <<EOF
# GnuPG bootstrap
source ~/.mutt/gpg.rc
EOF
And added a couple extra lines:
set crypt_autosign=yes
set pgp_use_gpg_agent
Messages will then be automatically signed. to encrypt them you just have to press “p” before sending a message with “y” and choose what you want to do:
PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear?
Appearance
Add some fancy colours for good measure:
# set arrow_cursor
color index white default '.*'
# For new mail:
color index brightyellow black "~N"
# Header colors:
color header blue default ".*"
color header brightmagenta default "^(From)"
color header brightcyan default "^(Subject)"
color header brightwhite default "^(CC|BCC)"
Enjoy a proper mail client!