Here's how I set up
mu4e with Doom Emacs on Arch Linux for my custom domainhosted on iCloud. I'm using
msmpt. I originally went witha systemd timer as detailed in the first two sections as recommended in the Arch, but
mu4e actually has a built-in functionality to deal with this for us.Note that what I've written here is the minimum I needed to do to actuallysync, send, and read emails from
emacs. There's a lot more you can do.
(set-email-account! "icloud" '((mu4e-sent-folder . "/icloud/Sent") (mu4e-drafts-folder . "/icloud/Drafts") (mu4e-trash-folder . "/icloud/Trash") (mu4e-refile-folder . "/icloud/Archive") (smtpmail-smtp-user . "lucianolaratelli") (mu4e-compose-signature . "\n\nLuciano")) t) (after! mu4e (setq sendmail-program (executable-find "msmtp") send-mail-function #'smtpmail-send-it smtpmail-stream-type 'starttls message-sendmail-f-is-evil t message-sendmail-extra-arguments '("--read-envelope-from") message-send-mail-function #'message-send-mail-with-sendmail))
The crucial part when you're using a custom domain hosted on iCloud is to useyour iCloud email address instead of the custom one. I thought this was a bugwith custom domains (I've run into another one) but I called Apple's support andthey told me I needed to use the iCloud email address. You can find this on aniPhone or iPad by going to Settings, tapping on your name up top, and tapping on
Name, Phone Numbers, Email. I had
@icloud.com emails there. Iwent with the
@icloud.com one. Apple's docs on third-party iCloud clients sayyou can use just the part before the domain, but I included the whole thing justin case. Without further ado,
tls_starttls both on. I think I only need one of these, but Idon't want to muck with testing my mail configuration to get a blog post out.You might need one, the other, or both. Exercise for the reader!
I was originally using
gpg as described by Erich Grunewald in his very helpfulpost, but unlocking my yubikey every five minutes became a pain and I figured mylogin keychain was secure enough for my (unsophisticated) threat model.
yay mbsync sudo pacman -S msmtp yay mu mu4e # impossible to find mu otherwise mkdir -p ~/home/Dropbox/mailbox/icloud mbsync -Va mu init -m ~/Dropbox/mailbox --my-address firstname.lastname@example.org mu index systemctl enable --user --now mbsync systemctl enable --user --now mbsync.timer doom sync
At this point you can run
<SPC> o m, and get to emailin'!
This was working fine but I wasn't getting in-
emacs notifications when newemails came in, even though
mbsync was running on schedule! So I got rid ofthe
mbsync.timer service with
systemctl disable --now --user mbsync.timer. Ikept
mbsync.service so that my email syncs when I log in for the day. Then, inmy
(after! mu4e (setq mu4e-get-mail-command "mbsync --verbose --all" mu4e-update-interval 300))
emacs and I was good to go.
Tecosaur's awe-inspiring config
The already-mentioned post from Erich Grunewald
The Doom Emacs
mu4e module documentation (also from Tecosaur)
This article, though it focuses on macOS