Mutt + isync multiple accounts Unfinished
This is the setup that I use for mutt, I have two google domain account (read as gmail) and an institution where I work and study account. This means I have two gmail accounts and one outlook 365 account that i want to sync and read via mutt.
I want to store all my email locally as I travel a lot and will be in countries without easy internet access. For this I use mbsync (iSync). As it can handle multiple account types easily and efficently.
The setup works this way
[Remote Mail Servers] <= mbsync => [Local Mail Folders] Mutt (to read mail) xxxx (to send mail)
This setup will create a mutt instance with multiple gmail mailboxes sorted nicely into different folders, easy to browse in just one keypress.
~/ |── .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.
muttthrough 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.
Create Both Expunge Both SyncState * # IMAPAccount personal # ... IMAPAccount work Host imap.gmail.com User firstname.lastname@example.org 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"
set smtp_authenticators = "login" set ssl_force_tls = yes folder-hook 'work' 'source ~/.mutt/work' # folder-hook 'personal' macro index 1 "<change-folder> =../work/inbox/<enter>" # macro index 2 macro index G "!mbsync -a^M" "Update through mbsync" set move = no source ~/.mutt/work
set smtp_url = "smtp://email@example.com:587" set smtp_pass = set folder = "~/.mutt/mailbox/work" set spoolfile = "~/.mutt/mailbox/work/inbox" set postponed = "~/.mutt/mailbox/work/drafts" set trash = "+/trash" set record = "" set from = "firstname.lastname@example.org" set realname = "First Last"
mutt in a terminal. Press
Shift+g to sync, and
? to change mailboxes.
Here are tweaks I find useful.
# 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 move read mail to All Mail set move = no # 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
# Append a signature to mail set signature = ~/.mutt/work.signature
Read html mail
Mutt reads all mail as plain text by default. Use a terminal web browser to render html mail.
lynx is our choice.
text/html; lynx -dump %s; nametemplate=%s.html; copiousoutput;
No issues as of July 2017. Please comment your feedback!