[[!sidebar content=""]] [[!meta title="Revisiting the anatomy of Emacs mail user agents"]] [[!meta copyright="Copyright © 2022 Mohsen BANAN"]] [[!inline pages="internal(2022/info/mail-nav)" raw="yes"]] # Revisiting the anatomy of Emacs mail user agents Mohsen BANAN (MO-HH-SS-EN, he/him, ) [[!inline pages="internal(2022/info/mail-before)" raw="yes"]] [[!template id="help" volunteer="" summary="Q&A could be indexed with chapter markers" tags="help_with_chapter_markers" message="""The Q&A session for this talk does not have chapter markers yet. Would you like to help? See [[help_with_chapter_markers]] for more details. You can use the vidid="mail-qanda" if adding the markers to this wiki page, or e-mail your chapter notes to ."""]] Actually, it makes very good sense to use Emacs as your Mail User Agent (MUA). A dominant and fundamental aspect of mail composition and mail processing is editing. And, if you live inside of Emacs, of course you expect to have the ultimate messaging environment. Over the years many Emacs MUAs have appeared. As of 2022, the following Emacs MUAs are available to choose from: Gnus, VM, WanderLust, Mew, mu4e, notmuch.el, mh-e and Rmail. Emacs MUAs can be used as Monolithic-MUAs (with elisp smtp and imap protocol implementations) or as Split-MUAs (with external smtp and imap protocol implementations). We make a case for superiority of the Split-MUA model. Recent evolutions of Gmail and Outlook towards requiring OAuth and our agility to better address that requirement based on the Split-MUA anatomy is one of our justifications for converging towards the Split-MUA anatomy. While what we are presenting here applies to all Emacs MUAs, our focus is Gnus. Gnus is distributed with Emacs proper and is the richest and most potent MUA, anywhere! We have wrapped all that is needed to use Gnus as a complete Split-MUA for Unix-like environments in a package called MARMEE (Multi-Account Resident Message Exchange Environment). MARMEE consists of a set of packages that span: - Deb GNU/Linux Packages - PyPI Python Packages - Emacs Elisp Packages plus everything that is needed to properly install these on Debian-like GNU/ Linux systems and integrate them with Gnus. By choice, we have limited our integration languages to elisp, python and bash. MARMEE component packages include: - OuterRim-qmail (deb+PyPI) – Outer Rim oriented qmail, as a Resident Mail Submission UA. qmail-remote is replaced by a python implementation which includes OAuth awareness. qmail-inject is replaced by a python implementation which is X822-Bus aware (for DSN requests) - offlineimap (PyPI) – as a Resident Mail Retrieval UA. offlineimap includes OAuth awareness. - notmuch (deb) – for searching - gpg (deb) – for privacy and integrity - flufl.bounce (PyPI) – for bounces and DSN (Delivery Status Notification) processing. - bisos.cs (PyPI) – BISOS CommandServices for configuration and secrets management and integration. - gmailOauth2.cs (PyPI) – For SMTP and IMAP authentication/authorization through gmail.com Used by qmail-remote for out-going and by offlineimap for in-coming OAuth based mail. - org-msg (EmacsPkg) – For HTML-composition in org-mode and for htmlized citations. - mcdt (EmacsPkg) – Mail Composition, Templating, Distribution and Tracking. The integration framework for MARMEE is BISOS (ByStar Internet Services OS). Full integration of Emacs, MARMEE and BISOS is called Blee (ByStar Libre-Halaal Emacs Environment). The easiest way to use MARMEE is to install BISOS – which includes Blee. In this talk I will demonstrate what a wonderful environment the Split-MUA model of Gnus+MARMEE can be. After walking through the concepts and the integration framework, I’ll walk through transparent access to multiple mail servers conveniently and show org-mode composition of BIDI emails going out as html. My primary goal is to show that these packages can be integrated, but that integration is not simple. Furthermore, various improvements can be made to the packages to enhance the complete integrated environment. I’ll be enumerating my requests from relevant package managers. If we were to collectively buy into something like this, we can greatly simplify use of Emacs MUAs with all mail systems – including the commonly used Gmail and Outlook. Of course, we should not be using Gmail and Outlook. Instead we should extend Libre Software into Libre Services and provide for edge-oriented autonomy and privacy in the services domain. There is a services side to what we have presented here. It is called “The Libre-Halaal By* (ByStar) Digital Ecosystem” – Perhaps that could be a topic for the next EmacsConf. For questions or comments, feel welcome to email me at: # Discussion ## Notes - great talk -- this is a **LOT** of info to ingest! - link to book on polyexistentialism: ## Questions and answers - Q:something I have liked about notmuch is using maildir makes searching fast and the knowledge that you have all your email period:) why gnus over notmuch. as a side note you also have muchsync for notmuch clients and jmap for more exotic normal clients. - A: - Q:So the idea is more about emacs as a holistic computing experiance with other packages and services rather than about email specificly. as an alternative to the something like the microsoft office suite? - A: - Q: Early on you expressed misgivings about the western copyright regime, but you're using a GPL license.  Is this a conflict? (great work BTW) - A: - Q: Do you know of GNU Guix how do you think about using it for packaging/configuring Emacs & your various packages else you might look it up;) Or nix"os" - A: - Q:Is this being split up in a heavily configured server for emall hosting and a thin client package for youl local client to integrate with your emacs packages, maybe with a client thin docker container for other packages like notmuch locally - A: - Q:Could you expand on the definition libre-halaal? - A:(answered - capture TBD) - Q: What is the scope of what you are imagining? Just software? - A: (answered - capture TBD) - Q:NFTs!  - A: (responded - capture TBD) [[!inline pages="internal(2022/info/mail-after)" raw="yes"]] [[!inline pages="internal(2022/info/mail-nav)" raw="yes"]] [[!taglink CategoryMail]]