Hi! I just stumbled upon terminal email clients, and decided to give mutt a go. This is how you setup mutt with Yahoo.
Install mutt
Using your preferred package manager, install the mutt
package. I’m on Arch (btw), so for me, that’s pacman
:
sudo pacman -S mutt
Configuring mutt
I followed the steps from this forum post:
1. Create the config directories and files:
mkdir -p ~/.mutt/cache/headers
mkdir ~/.mutt/cache/bodies
touch ~/.mutt/certificates
touch ~/.mutt/muttrc
Note: the -p
on mkdir
is a flag to create missing parent directories. So the first command will create ~/.mutt/ and ~/.mutt/cache if they don’t exist, before attempting to create ~/.mutt/cache/headers.
2. Create a Yahoo app password
Yahoo won’t let you sign in from any app without an “app password”. The idea is that your main Yahoo password is restricted to the web client only. Open up the Security page in your Yahoo Account preferences – link.
Scroll to “How you sign in to Yahoo”, which should have a panel for “Other ways to sign in” with “App Password” underneath. Click on “Generate and manage app passwords”, enter a name for the app (it doesn’t matter what you write here, I used “mutt laptop” so I can differentiate between apps easily). When you enter the name, the password will appear. Write that down somewhere, because you won’t get to see it again otherwise.
3. Configuration file
Open ~/.mutt/muttrc
with your preferred text editor (nvim of course) and use the following template:
# Yahoo settings
set imap_user = "username@yahoo.com"
set imap_pass = "password"
set smtp_url = "smtp://$imap_user:$imap_pass@smtp.mail.yahoo.com:587"
set smtp_pass = "password"
set from = "username@yahoo.com"
set realname = "Your real name"
set folder = "imaps://imap.mail.yahoo.com:993"
set spoolfile = "+INBOX"
set postponed="+[Yahoo]/Drafts"
set header_cache=~/.mutt/cache/headers
set message_cachedir=~/.mutt/cache/bodies
set certificate_file=~/.mutt/certificates
set move = no
set sort = 'threads'
set sort_aux = 'last-date-received'
set imap_check_subscribed
# Some tweaks
set ssl_starttls = yes
set imap_keepalive = 300
set mail_check = 90
set timeout = 15
set charset = iso-8859-1
4. Replace placeholders
- On the bits where it says
username
in the values (e.g.username@yahoo.com
), put your login, so essentially write your email address. - Don’t forget to replace “Your real name” with whatever you wish to show up as the sender when sending mail. For the webmail client, this is whatever name you’ve configured in your Yahoo account.
- On the bits where it says
password
, use the App Password we generated above.
Voilà!
You should be all set. Run mutt
in your terminal to see if it worked. Hopefully you get to see your inbox! (I have some Cyrillic emails which show up as ?)
An issue I encountered
It’s a good client, but it + kitty (my terminal emulator) do not seem to pair well. Let’s look at an email with links:
Yeah, not pretty. If you’re looking for a solution for that, this blog seems to have fixed it, but I haven’t tested it. Happy mutt-ing!
This is a very helpful post.
This is one of the best articles I’ve read on this topic. Your detailed explanations and practical advice are greatly appreciated.
Keep up the good work!