My mail setup

Table of Contents

1 Introduction   NOEXPIRY

This document will try to show my current email setup.

2 Decomposition of emails tools   NOEXPIRY

On the contrary to "all-in-one" tools such as Thunderbird, I prefer to use one tool for each need.

I know only two ways to tackles emails: connect to a server and deal with them through some kind of web interface or get a local copy of the emails to use your own tools. The later gives you more freedom on how to filter, and index the emails, the former solution is lighter to use. I use the local copy solution.

Those are the tools I use for each use case associated to emails.

  • to synchronise the emails with a local maildir copy: offlineimap
  • to index emails (so that they can be found later): notmuch
  • to read emails: emacs + notmuch
  • to compose emails: emacs + notmuch
  • to send emails: msmtp
  • to encrypt emails: emacs + message-mode

First, I will try to describe the installation and configuration of all those tools, then, I will describe how I use the tool to fulfil each use case.

I won't dig into the detail of each tool since their documentation is quite well done. I will only provide the minimum information to make them work together.

3 Offlineimap   NOEXPIRY

The first tool of the chain, offlineimap allows you to keep synchronised a local Maildir folder with an IMAP account.

The configuration of offlineimap is made of:

  • local repositories: local maildir folders
  • remote repositories: remote IMAP accounts
  • accounts: link between two repositories

I think that you could have in sync two local maildir folders or two IMAP repositories by linking them with an account, but I never tried this.

You generally start by describing the general information

# the name of the accounts
accounts = konubinix
# a custom python file that links to functions you may use later
pythonfile = ${KONIX_PERSO_DIR}/

Then you describe each account separately. In my case, it generally contains no more than the names of the two repositories to keep in sync:

[Account konubinix]
localrepository = LocalKonubinix
remoterepository = RemoteKonubinix
# the default backend stores the sync information in a plain text file. It is much slower than the sqlite backend
status_backend = sqlite

Of course, the next step is to describe the two repositories to sync. In my situation, I use a gmail account:

[Repository LocalKonubinix]
type = GmailMaildir
localfolders = ~/Mail/mail.konubinix
[Repository RemoteKonubinix]
type = Gmail
remoteusereval = get_username("")
remotepasseval = get_password("")

Note the use of custom made functions get_username and get_password to get the informationa oO

4 notmuch   NOEXPIRY

Given the maildir folder synchronised by offlineimap, you'll want to index them.

Fortunately, the notmuch software does not much more than that.

You only need to follow the installation instructions available in their website.

5 msmtp   NOEXPIRY

msmtp is a smtp client. Generally, people use local smtp server to send emails. It is cumbersome to use such a solution without using the port 25 of your machine and then without needing to be root to configure the software. I dislike the idea of being root to configure my emails and all email providers that I know of already provide a smtp server to be connected to.

Once again, the documentation is quite clear and is quite server dependent.

My konubinix account looks like that

account        konu
tls on
tls_certcheck off
auth on
port           587
passwordeval && echo

Note the last line

Date: 2015-03-03 Tue 00:00

Author: konubinix

Created: 2019-03-06 Wed 15:34

Emacs 24.4.1 (Org mode 8.3beta)