Mutt imap

From wikinotes

Mutt can be configured to access emails remotely using an IMAP server. This is best for an email archive, which you may not want to constantly sync back-and-forth with the server.

Documentation

mutt manual http://www.mutt.org/doc/manual/#imap

Usage

# =======================
# Navigating IMAP folders
# =======================

# navigate to inbox in sidebar
c  # change-folder
?  # list-folders
.. # now browse and select folder with <enter>


# ===============
# moving messages
# ===============

T Paystub  # tag all paystub messages
;s         # save all tagged messages to X folder
?          # show folders

Account Types

Gmail

NOTE:

For gsuite accounts, set set folder = imaps://<email@domain.com>@imap.gmail.com:993/"

Login Auth

~/.mutt/accounts/<account>


# ~/.mutt/accounts/<account>
#
# credentials only - used as-needed for auth
# NOTE: created for account-hook, but it was difficult to restore folder settings afterwards. Just use folder-hooks.

set smtp_url      = "smtps://<your_email>@gmail.com@smtp.gmail.com:465/"
set smtp_pass     = "`<your-cli-password-cmd>`"

set imap_user     = "<your_email>@gmail.com"
set imap_pass     = "`<your-cli-password-cmd>`"

set ssl_force_tls = yes


~/.mutt/folders/<account>


# ~/.mutt/folders/<account>
#
# folder settings only. accounts/* will be used when needed.

source ~/.mail/accounts/<account>

set folder        = "imaps://<your_email>@imap.gmail.com:993/"
set spoolfile     = "+INBOX"

bind index ^r imap-fetch-mail


~/.mutt/muttrc


Make your user/pass load on account switch

# ~/.mutt/muttrc

# add desired folders to sidebar
mailboxes \
    "imaps://<your_email>@imap.gmail.com:993/INBOX" \
    "imaps://<your_email>@imap.gmail.com:993/filing/" \
    "imaps://<your_email>@imap.gmail.com:993/filing/receipts" 

# reads when folder changes
folder-hook imaps://<your_email>@imap.gmail.com:993/* 'source ~/.mutt/folders/<your_account>'


OAUTH2 Auth

gmail-oauth2-tools

Generate OAUTH2 Token


See gmail
Follow Authentication/OAUTH2 instructions to retrieve refresh token.


Download a copy of oauth2 script



~/.mutt/accounts/<account>


# ~/.mutt/accounts/<account>
#
# exclusively credentials info, settings in folders/*

set imap_authenticators="oauthbearer"
set imap_oauth_refresh_command="python2 ~/.mutt/scripts/oauth2.py \
  --quiet \
  --user=<your_email> \
  --client_id=<client_id> \
  --client_secret=<secret> \
  --refresh_token=<token>


  • use identical ~/.mutt/muttrc and ~/.mutt/folders/<account> to LOGIN Auth described above.

email-oath2-proxy

See https://github.com/simonrob/email-oauth2-proxy

I haven't tried this yet.

Tips/Tricks

Saving emails to a different IMAP account

macro index \cs '\
s\
?\
c\
<backspace><backspace><backspace><backspace><backspace><backspace>\
<backspace><backspace><backspace><backspace><backspace><backspace>\
<backspace><backspace><backspace><backspace><backspace><backspace>\
<backspace><backspace><backspace><backspace><backspace><backspace>\
<backspace><backspace><backspace><backspace><backspace><backspace>\
<backspace><backspace><backspace><backspace><backspace><backspace>\
imaps://${your_email}@imap.gmail.com:993\
<Tab>\
<backspace><backspace><backspace><backspace><backspace><backspace>\
<Tab>'\
    "Save message to +storage mailbox"