That's this code: https://github.com/mailpile/Mailpile/blob/master/mailpile/conn_brokers.py
The connection broker uses with-block to selectively monkey patch the socket library, so third party code would make outgoing #TLS and/or #Tor connections according to a configurable security policy.
Pretty cool! I have yet to port this to #moggie, but I will for sure.
The security researcher just grepped and skimmed, they missed the fact that not only did I solve the problem, I knocked that one out of the park.
I politely told them so. ;-) (3/3)
It was very satisfying to be able to open a mailbox which hadn't been added to #moggie's search index (yet), and see the contents threaded - including messages from other mailboxes.
In human terms, this means being able to open up an old "inbox" and see entire conversations, even if half the messages were stored in the "sent" mailbox and aren't present in the inbox at all.
I'm told some other popular mail clients struggle with that. :-D
This weekend, in "email things which seem easy but aren't", I had fun with threading messages in #moggie.
If you know about all the messages, threading is easy. Just make a tree by following the In-Reply-To headers!
But what if your data-set is incomplete? Or what if the user has requested a subset of messages, but still wants a thread view? Or what if we have threading information coming from two distinct data sources? And need to create a unified view?
E-mail is beautiful chaos.
#moggie NLnet grant progress: First RfP (Request for Payment) has been filed!
I created Github issues to track the actual progress of completing the project as defined in the grant: https://github.com/mailpile/moggie/issues/7
The first (completed) issue includes instructions on how to verify I actually did the work, using docker to increase the odds it all reproduces correctly.
I think I'm doing a good job!
making #moggie, Part 1: A Read-Only Mail Client
https://www.mailpile.is/blog/2023-07-13_A_Read_Only_Mail_Client.html
I did it! I finished a milestone!
Now I gotta tell #NLNet to send me some money, and get started on the next one...
Alright!
I think I've got code which generates numeric IDs for messages within a Maildir or Mbox, where the happy path is a relatively efficient direct-ish lookup of the target message, but enough info is encoded in the ID to recover and do the right thing if the message has moved, changed slightly or been replaced by an imposter.
Along with hooks to notify the calling code that IDs have become inefficient and a re-indexing might be warranted.
I can sleep now.
It is very easy to write code that *usually* works with an mbox file.
It is surprisingly tricky to write code that *reliably* works with an #mbox file.
Almost impossible, actually, since there are multiple incompatible variants of the format.
I keep coming back to this code and finding new problems with it. That is a good thing, I guess? Making progress...
#mbox #email #moggie #mailpile
Even though #moggie isn't usable as a mail client yet, I have started reaching for it when troubleshooting #email things.
This was one of my goals: make moggie a light-weight command-line tool which I reach for by default, instead of good old mutt.
I really think I'm nailing it this time around.
I've started writing the very last section of Part 1 of the "a mail client in six steps" blog series.
(Part 0 is here: https://www.mailpile.is/blog/2023-05-01_A_Mail_Client_in_Six_Steps.html )
As I started writing it, I of course found a wart in the API which needs fixing. So I am fixing it! I may be behind schedule, but the process works.
Writing about #moggie makes the code better.
A friend: I need a tool to process 20k e-mails per day.
Me: Oh great, now I'll be obsessing over #moggie performance for days! ARGH!
...
My test moggie now has 1.4 million e-mails indexed. It *looks* like it is eating a lot of RAM, but that's because I've mmap()'ed lots of large files.
Startup and shutdown are still instantaneous, searching and viewing is still pretty snappy... It's holding up well.
So much better than Mailpile v1.
Time to generate and import more mail? 8-)
Dear Internet,
Please find attached a #moggie text-mode #OpenPGP screenshot, for your viewing pleasure!
As of this morning, OpenPGP states appear in the app in vaguely sensible way!
This screenshot demos how the signed part is marked as verified, but the unsigned mailing-list advertisement is not - and since it's a message with signed content, the unsigned bits are de-emphasized by using a darker text color.
I think this is acceptable.
Love,
- B
@grrrr_shark LOL. It's making progress!
I've worked my way up the stack now to the point where I can finally see encrypted/signed states in the #moggie text-mode user interface.
That's always a dopamine hit for me, when I can finally *see* the results in the app...
Me: Yay! Decrypting and verifying OpenPGP mail in #moggie seems to finally work!
Also me: Oh damn, I need to parse the protected header stuff too. I helped out on the spec, it would be lame not to...
Still me: Oh damn, I need to move all my decryption logic so I can also use it during composition (decrypt before forward/reply).
Oof. Slowly, slowly...
It is now two weeks since I missed my self-imposed deadline on delivering the first #Moggie e-mail client dev blog post.
I'm not quite the point where I have to multiply my time estimates by pi, but a factor of two is feeling plausible for the first milestone.
It's #OpenPGP support that is slowing me down, which was supposed to be a stretch goal... but I really wanna to ship it!
Well, that and summer. Summer is REALLY slowing me down! :-D
Writing a really rather quite long blog post about #moggie development, I documented a tool for interactively connecting to and exchanging messages with moggie's websocket server.
Then I wrote the tool. It's a great tool!
I should have written it ages ago.
I like documentation driven development. Explaining to people how things should work... and then making it true. Feels good.
I just published a new blog post on the #Mailpile website, discussing the grant we are getting from #NLNet and what we are going to do with the money: https://www.mailpile.is/blog/2023-05-01_A_Mail_Client_in_Six_Steps.html
The tl;dr is that we are bringing #moggie from "a thing Bjarni hacks on as often as he can", to "a new terminal mode e-mail client which people should be able to use."
I'm pretty excited about this!
This morning I taught `moggie email` to generate e-mails with protected headers, as described in this Internet Draft (co-authored by yours truly):
https://www.ietf.org/archive/id/draft-autocrypt-lamps-protected-headers-02.html
This extends PGP/MIME signatures to cover important message headers, and optionally allows header encryption, including the Subject in particular.
Progress!
#moggie #mailpile #OpenPGP #email
It's kinda fun when you need some sample data, and you know that there is an Internet Draft with your name on it, that contains exactly what you need...
https://www.ietf.org/archive/id/draft-bre-openpgp-samples-01.html