Skip to content

Instantly share code, notes, and snippets.

@A6GibKm
Last active November 15, 2025 16:32
Show Gist options
  • Select an option

  • Save A6GibKm/238b754a4a90051f60906b9efa3e8000 to your computer and use it in GitHub Desktop.

Select an option

Save A6GibKm/238b754a4a90051f60906b9efa3e8000 to your computer and use it in GitHub Desktop.
Read your emails with mu4e

Connecting emacs and Protonmail Bridge

This guide will cover the basics on how to integrate emacs with the bridge using

  • mu4e
  • mbsync
  • smtpmail

How to install them:

  • Fedora: sudo dnf install isync maildir-utils
  • Debian: sudo apt install isync maildir-utils

Configuring mbsync

Create a configuration file ~/.mbsyncrc for mbsync

IMAPAccount protonmail
Host 127.0.0.1
Port 1143
PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk 'FNR == 1 {print $8}'"
SSLType STARTTLS
SSLVersions TLSv1.2
CertificateFile ~/.config/protonmail/bridge/cert.pem

IMAPStore remote
Account protonmail

#You can change .mail to something else
MaildirStore local
Path ~/.mail/
Inbox ~/.mail/INBOX/

Channel inbox
Master :remote:
Slave :local:
Patterns * 
Create Both
Expunge Both
SyncState *

Group protonmail
Channel inbox

Logging credentials

Next we need to create a file to log our credentials for sending mail with smtpmail. Create a file ~/.authinfo with the following contents

machine 127.0.0.1 login USERNAME_HERE@protonmail.com port 1143 password PASSWORD_PROVIDED_BY_BRIDGE
machine 127.0.0.1 login USERNAME_HERE@protonmail.com port 1025 password PASSWORD_PROVIDED_BY_BRIDGE

You should encrypt it one option is to use epa in emacs M-x epa-encrypt-file. Another is to set a symmetric encryption that will require some password $ gpg --symetric .authinfo. Finally delete .authinfo.

Now to get/sync you mail, run on a terminal $ mbsync protonmail.

Configuring mu4e

This is a minimal configuration that you should include in your init.el configuration file.

(require 'mu4e)

(setq mu4e-maildir "~/.mail"
mu4e-attachment-dir "~/Downloads")

(setq user-mail-address "USERNAME_HERE@protonmail.com"
user-full-name  "YOUR_NAME")

;; Get mail
(setq mu4e-get-mail-command "mbsync protonmail"
mu4e-change-filenames-when-moving t   ; needed for mbsync
mu4e-update-interval 120)             ; update every 2 minutes

;; Send mail
(setq message-send-mail-function 'smtpmail-send-it
smtpmail-auth-credentials "~/.authinfo.gpg"
smtpmail-smtp-server "127.0.0.1"
smtpmail-stream-type 'starttls
smtpmail-smtp-service 1025)

(add-to-list 'gnutls-trustfiles (expand-file-name "~/.config/protonmail/bridge/cert.pem"))

To index your emails from the terminal run mu index --maildir=~/.mail

Now just launch M-x mu4e from emacs to read your mail.

@marvhus
Copy link

marvhus commented Feb 9, 2024

I'm not entirely sure how to do a pull request on a Gist, but I fixed a typo, and you can see the fix in my fork.

I essentially changed gpg --symetric .authinfo to gpg --symmetric .authinfo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment