How to manage multiple imap accounts with mutt

Even though there are some useful guides on this site and this one, I thought I would just show you my currently working solution. You might note that it is similar to the aforementioned guides, but with additions and differences: I have found it is possible not to use account-hooks or folder-hooks in some cases. See the Mutt wiki for an alternative take on setting this up.

I will post the elements of the setup and then post my entire .muttrc so you can see how it all fits together.

It is easiest to enter the settings of both of your accounts in separate files and save them in the ~/.mutt folder. As an example, your two accounts could be called account.gmail1 and account.gmail2. So create two text files with those names and follow this template below for the contents; they should be both identical apart from the user@ part; just replace all occurrences of that with your real email (e.g. mik123@) in both files.

set imap_user = "[email protected]"
set imap_pass = ""
set from = "[email protected]"
set realname = "user"
set hostname = gmail.com
set folder = "imaps://[email protected]:993"
set spoolfile = "imaps://[email protected]/INBOX"
set postponed = "imaps://[email protected]/[Gmail]/Drafts"
set record = "imaps://[email protected]/[Gmail]/Sent Mail"
set smtp_url = "smtp://[email protected]:587"
set smtp_pass = ""
  • Note that I have left the password blank (""), which means you will be prompted for it, and that is what I prefer, but you can integrate your own solution if you don't want to have to keep entering the password.

  • If you want a default account loaded at startup, you can use in your .muttrc a similar line to this, just specify your own config file.

    source "~/.mutt/account.gmail1"

  • To actually switch between the accounts, place a shortcut in your .muttrc referring to the actual location and name of your account configs:

    macro index <f4> '<sync-mailbox><enter-command>source ~/.mutt/account.gmail1<enter><change-folder>!<enter>'
    macro index <f5> '<sync-mailbox><enter-command>source ~/.mutt/account.gmail2<enter><change-folder>!<enter>'

  • You will be able to switch between folders within both accounts with pager commands such as

    macro index,pager ga "<change-folder>=[Gmail]/All Mail<enter>" "Go to all mail"

that are defined in your .muttrc; these will still work for each account (see my attached .muttrc).

  • I tested these particular settings with the additional general ones in my .muttrc, so you can use that file and/or collate it with your own, it is up to you.

Now just load mutt in terminal and you should be able to load up one account and then switch to the other one using your shortcut. My .muttrc is pasted here if you need a working example of a configuration.

See the good article on this site on Mutt and the Mutt wiki for further ways of setting up mutt such as using folder-hooks to associate setings with various mailboxes, which is also explained here.


You can use several configuration files. For example, you could run:

  • mutt -F .muttrc-yahoo on /dev/pts/1
  • mutt -F .muttrc-gmail on /dev/pts/2

Tags:

Imap

Mutt