It's been said that a "POP Toaster" (a standalone mail server that does, at minimum, POP and SMTP) is an application that any decent hacker can throw together in a weekend. I found this one called "XMail" [http://xmailserver.org] that was started in 1999 and apparently abandoned in 2010. It doesn't have IMAP or Webmail but it looks like a nice compact little server that someone put a reasonable amount of thought into. I wonder if anyone is still using it. Nothing has been updated since 2010 and all of the mirror sites are long gone. It's only a coincidence that I stumbled upon XMail, and I'm not actually interested in it at all, except to notice that it's an artifact of a time when lots of people were building little mail servers. What brought me to the project's web site was a mentio somewhere of a library called "libxdiff" [http://www.xmailserver.org/xdiff-lib.html] that implements "diff" and "patch" functions as a C library. I don't know the relationship between these two projects, or maybe one is just hosted on the other's web site because they're the same author? But I've been looking for something like this for years. I don't know how I missed it until now. Citadel's wiki engine stores page revisions by saving a MIME multipart message, with the first part being the current version of the page and the remaining parts being a series of "diff" outputs from version to version. When I wrote the wiki engine many years ago, I looked all over the place for a C library that could handle diff/patch functions. All I found was implementations in higher level languages. I briefly looked at GNU Diff to see if I could just pull out the parts I needed, but that code is so byzantine that there's no hope of taking it apart. I ended up writing code that calls out to the "diff" and "patch" command line utilities. I *hate* doing that, and it's always bothered me. Now that I've discovered LibXDiff, I can rewrite that bit of code to keep all of the processing inside the Citadel Server's memory space, instead of making potentially insecure calls to system utilities.
But this effort won't begin until I finish the new inbox filter engine :)