Mutt mail with multiple gmail accounts synced by mbsync, easy to browse in just one keypress. iSync (aka mbsync) is modular, handles multiple accounts (Gmail, Yahoo, Outlook) with ease, and syncs much faster than IMAP.
~/
|── .mutt/
| ├── muttrc
| ├── work
| └── work/
└── .mbsyncrc
Synchronize mail <-> manipulate mail -> send mail
[ mbsync ] [ msmtp ]
[ mutt ] [ mutt ] [ mutt ]
This guide will use iSync (aka mbsync) to sync mail via IMAP, and mutt to do the rest. If you want just mutt, see this guide. If you want mbsync + mutt + msmtp, follow this guide, delete mutt's SMTP settings, and tack on smtp in another guide.
- Install
isync
andmutt
through brew or equivalent. - If on Gmail, enable IMAP.
- If on Gmail 2FA, make an App Password.
- If on Gmail non-2FA, enable less secure apps.
~/.mbsyncrc
Create Both
Expunge Both
SyncState *
# IMAPAccount personal
# ...
IMAPAccount work
Host imap.gmail.com
User [email protected]
Pass
SSLType IMAPS
AuthMechs LOGIN
IMAPStore work-remote
Account work
MaildirStore work-local
Path ~/.mutt/mailbox/work/
Inbox ~/.mutt/mailbox/work/inbox
Channel work-inbox
Master :work-remote:
Slave :work-local:
Patterns "INBOX"
Channel work-sent
Master :work-remote:"[Gmail]/Sent Mail"
Slave :work-local:sent
Channel work-trash
Master :work-remote:"[Gmail]/Trash"
Slave :work-local:trash
Group work
Channel work-inbox
Channel work-sent
Channel work-trash
# Gmail mailboxes:
# "All Mail"
# "Drafts"
# "Important"
# "Sent Mail"
# "Spam"
# "Starred"
# "Trash"
~/.mutt/muttrc
set smtp_authenticators = "login"
set ssl_force_tls = yes
macro index G "!mbsync -a^M" "Update through mbsync"
set move = no
folder-hook 'work' 'source ~/.mutt/work'
# folder-hook 'personal'
macro index 1 "<change-folder> =../work/inbox/<enter>"
# macro index 2
source ~/.mutt/work
~/.mutt/work
set smtp_url = "smtp://[email protected]:587"
set smtp_pass =
set folder = "~/.mutt/mailbox/work"
set spoolfile = +inbox
set postponed = +drafts
set trash = +trash
set record = ""
set from = "[email protected]"
set realname = "First Last"
Start mutt
in a terminal. Press Shift+g
to sync, and c
?
to change mailboxes.
~/.mutt/muttrc
# Use mousewheel
bind pager <down> next-line
bind pager <up> previous-line
# Dont add a '+' to urls that wrap
unset markers
# Don't ask to confirm deletions
set delete
# Don't show help bar
set help = no
# Don't wait to switch mailboxes
set sleep_time = 0
# Read top-down mail instead of bottom-up
set sort = reverse-threads
# Simplify UI
set status_format = "%f"
set date_format = "%m%d"
set index_format = "%Z %D %-15.15n %s"
# Keep a list of contacts ('aliases')
set alias_file = ~/.mutt/alias
source $alias_file
~/.mutt/work
# Append a signature to mail
set signature = ~/.mutt/work.signature
Use lynx
to have mutt render html mail.
~/.mutt/muttrc
auto_view text/html
~/.mailcap
text/html; lynx -dump %s; nametemplate=%s.html; copiousoutput;
No issues as of July 2018. Please comment your feedback!