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.
don't rely on filter-export anymore
Instead, parse the output of `mshow -t' and extract, one by one, the interesting parts. This allows to generate a better listing (we know name and size!) and to decide how to call the files (the extension is important for httpd!)