Commit Briefs
drop unnecessary unveil(".", "r")
These programs don't need to read files in the current directory: GotMArc loads in memory some files at load time, at that point no other accesses to "." are needed.
use $mid.$partno.$ext for attachments rather than random strings
Keeps the attachment file names stable while it also allows to drop the dep on Tempfile, the unveil of /tmp and the fattr pledge promise too.
build a cache of hashes for each thread
The idea is to use this cache to spot changed threads and re-export all the mail of the threads that changed. This will allow to add thread navigation hints on each exported mail and have them up-to-date. This makes the "skip if already exported" logic in mexp redundant and incomplete. pe will decide whether to export or not, and mexp blindly do the work.