mutt is a text-based mailer: when you have big mailboxes, it’s much much faster and efficient than standard web mail interfaces and heavy clients. But of course, because it’s text-based, it’s also less “nice, fancy and beautiful”. But I care much more about speed than design, so, here is my config file to use mutt with INRIA zimbra:

set copy="yes"                           # Save sent mail on Zimbra
set from=""     # Your email 
set folder="imaps://"    # The remote Zimbra IMAP URI
set spoolfile="imaps://" # Where your inbox is located on Zimbra
set imap_idle="yes"                      # Use IMAP IDLE for pushing mail
set imap_user="cerisara"                 # Your IMAP username
set imap_pass="$MUTTPASS1"
set mail_check="60"                      # Poll every 60 seconds rather than waiting 24 minutes for new mail
set postponed="+Drafts"                  # Saving postponed messages on Zimbra for later
set realname="First Last"                # Your first name and last name
set reverse_alias="yes"                  # If email is saved in your alias file, show the name of the mail 
set signature="~/.mutt/sig.txt"          # Your email signature, if any
set smtp_url="smtp://" # The SMTPS URI for sending mail
set smtp_pass="$MUTTPASS1"
set record="+Sent"                       # Save sent mail to "/Sent" on Zimbra
set sort_alias="alias"                   # Sort the alias file by alias
source ~/.mutt/aliases                   # Alias file to store your "address book"
source ~/.mutt/lists                     # Store any mailing lists here, and respond to the list, rather than "reply to all"Create the file if it 
does not already exist

set header_cache = ~/.cache/mutt
set message_cachedir = ~/.cache/mutt

This set-up works with INRIA zimbra. There are a few additional tricks to check though:

  • install the library libsasl2-modules, otherwise, sending mail via smtp will not work (and there won’t be any self-explaining error !)
  • the password is stored in an file ecrypted with gpg, which contains:
export MUTTPASS1="mypassword"
  • and I’ve define a wrapper bash script around mutt that decrypt this file before calling mutt

pwds=`echo gpgpassphrase | gpg --batch -q --passphrase-fd 0 -d ~/.passwords.mutt`
eval "$pwds"
exec mutt "$@"

Of course, this wrapper is chmoded 700 so that nobody else sees my simple passphrase. You may also use your standard gpg keys and agent, but I don’t want to enter my master gpg password too often, and this solution seems good enough for me on my machine.

Written on November 30, 2018