[neomutt-users] My multi-account setup

Pietro Cerutti gahr at gahr.ch
Mon Jun 22 12:17:30 CEST 2020


Hi all,

I recently shared my multi-account setup with a number of users who 
asked for a solution on #neomutt. The overall reaction was positive, so 
I thought I'd share it with you all.

I am not claiming this is the best way to go about it. It's just how I 
got to a point where switching between account isn't a pain for me.

0. Background

I use NeoMutt purely as a front-end to IMAP. All my emails are stored 
remotely, on a number of IMAP accounts. I don't use maildirs or notmuch.  
No sync'ing. Just pure network access to IMAP. Sending email is done 
through each account's SMTP server.

1. Goals

I want it to be easy to switch between accounts. I always only want to 
see context related to one account at a time. I don't copy emails 
between accounts. I want the switching to be explicit. I don't use 
folder-hooks (for this purpose).

2. Method

I define a number of config files, one for each account.  They all look 
pretty similar, if not for how different IMAP servers organize 
well-known mailboxes such as Sent or Trash.  I define macros to source 
these files in a smart way (see imap_post.cfg and the my_imap_done 
variable below).  I have a main config file where I list all accounts 
and bind macros to them.  This also allows me to set up general config 
entries that are valid for all accounts.

3. Authentication

I store sensitive information such as my usernames and passwords in my_ 
variables. These are set at startup and always valid. Different accounts 
get different my_ variables.

4. The files

4.1 imap.cfg

The entry point for my multi-account config is the main imap.cfg file:

######################################################################
# ~/.config/neomutt/imap.cfg

# the default account to load when NeoMutt starts up
source ./imap_gmail.cfg

# macros for switching between accounts
macro index <F6> "<enter-command>unmailboxes *<enter><enter-command>source ~/.config/neomutt/imap_fastmail.cfg<enter><sync-mailbox>"
macro index <F7> "<enter-command>unmailboxes *<enter><enter-command>source ~/.config/neomutt/imap_gmail.cfg<enter><sync-mailbox>"
macro index <F8> "<enter-command>unmailboxes *<enter><enter-command>source ~/.config/neomutt/imap_hotmail.cfg<enter><sync-mailbox>"

# config valid for all accounts
set imap_check_subscribed = yes
set imap_authenticators = plain

# needed to skip reloading the default account on start up
set my_imap_done = true
######################################################################

4.2 imap_fastmail.cfg

FastMail.com account file. Works with an app-password.

######################################################################
# ~/.config/neomutt/imap_fastmail.cfg

set my_imap = imaps://$my_fastmail_user@imap.fastmail.com/

set imap_pass = $my_fastmail_pass

set folder    = "$my_imap"
set spoolfile = +INBOX
set postponed = +Drafts
set record    = +Sent
set trash     = +Trash
set move      = no

set smtp_authenticators = plain
set smtp_url  = smtps://$my_fastmail_user@smtp.fastmail.com
set smtp_pass = $my_fastmail_pass

source ./imap_post.cfg
######################################################################

4.3 imap_gmail.cfg

GMail.com account file. Works with an app-password.

######################################################################
# ~/.config/neomutt/imap_gmail.cfg
set my_imap = imaps://$my_gmail_user@imap.gmail.com/

set imap_pass = $my_gmail_pass

set folder    = "$my_imap"
set spoolfile = +INBOX
set postponed = +[Gmail]/Drafts
set record    = "+[Gmail]/Sent Mail"
set trash     = +[Gmail]/Trash
set move      = no

set smtp_authenticators = plain
set smtp_url  = smtps://$my_gmail_user@smtp.gmail.com
set smtp_pass = $my_gmail_pass

source ./imap_post.cfg
######################################################################

4.4 imap_hotmail.cfg

Hotmail.com account file.

######################################################################
# ~/.config/neomutt/imap_hotmail.cfg

set my_imap = imaps://$my_hotmail_user@imap-mail.outlook.com

set imap_pass = $my_hotmail_pass

set folder    = "$my_imap"
set spoolfile = +INBOX
set postponed = +Drafts
set record    = +Sent
set trash     = +Trash
set move      = no

set smtp_authenticators = plain
set smtp_url  = smtps://$my_hotmail_user@smtp-mail.outlook.com
set smtp_pass = $my_hotmail_pass

source ./imap_post.cfg
######################################################################

4.5 imap_post.cfg

Switches to $folder after loading an account file. It is guarded by 
my_imap_done so I don't load the default account twice on start up.

######################################################################
# ~/.config/neomutt/imap_post.cfg

ifdef my_imap_done "push <change-folder>$my_imap<enter>"
######################################################################

That's the bulk of it.  Feel free to adopt / enhance / fix / comment. 
I'll keep the most up-to-date version as a gist on github:
https://gist.github.com/gahr/870e866fa9c6bf7e6818cca39b304a40

Thanks,


-- 
Pietro Cerutti


More information about the neomutt-users mailing list