1.8.0
 o New 'subrelease' feature: on lists with 'subonlypost', non-subscribers
   can simultaneously subscribe and release their denied post by replying
   to a single address. Three variants are provided: subrelease (normal
   subscription), digestsubrelease, and nomailsubrelease.
 o Remove 'selfmoderate' feature, superseded by 'subrelease'.
 o Fix thread grouping in digest.
 o Fix garbage output in send_digest.
 o Properly close SMTP connection on EHLO failure.
 o Improve error handling in send_mail.
 o Clean up queue file on second do_all_the_voodoo_here failure.
 o Use buffered I/O where possible for better performance.
 o Update exim4 configuration hints for exim4 >= 4.94.
 o Many new unit tests.
1.7.1
 o Fix build with older GCC.
 o Fix a crash when processing email from list+owner.
 o Fix some potentials mails loss in case a failure of delivery.
 o Many small leak (memory and fd) fixes which are mainly cosmetic considering
   the process would have release at exit time anyway.
1.7.0
 o New 'autosubscribe' feature: on moderated mailing list autosubscribe as
   "nomail" when if a moderator approves a mail
 o New 'selfmoderate' feature: send the moderation email to the "From" address
   for validation
 o Fix 'nonomailsub' support
 o Plenty of memory leaks
 o Fix lock issue
1.6.0
 o Remove blanks in customheaders prefix and skip empty lines
 o $bouncenumbers$ in probe are now expended to number, messageid when
   possible
 o customheaeders allow now substitution of $posteraddr$ (Erwan Mas)
 o Fix portability issue on Hurd (Erwan Mas)
1.5.2
 o Plenty of portability fixes
1.5.1
 o Fix tests on system with a running smtp server on port 25
 o Fix portability issue on arm64
 o Fix tests where some struct were not initialised properly
1.5.0
 o Add option to copy From: to Reply-To: (Graham Leggett)
 o remove contrib/pymime
 o remove contrib/foot_filter
 o granular access rejection message
 o fix duplicated bounce recording
 o Remove support for all deprecated syntax in templates
1.4.7
 o fix duplicate queued moderation notification email
 o fix build on macOS
1.4.6
 o mlmmj-make-ml: fix on OpenBSD
 o Fix another regression regarding RFC 5321
1.4.5
 o Improve error messages in case of smtp failure
 o Regression: fix mlmmj-send -r
 o Modernize autotools usage
1.4.4
 o fix regression which results in probe not containing the list
   of bounced emails
1.4.3
 o fix regression which results in loosing track of probes
1.4.2
 o fix regression in lastdigest parser
1.4.1
 o fix regression in incremental updates
1.4.0-rc3
 o fix unattended usage of mlmmj-makeml
 o fix regression regarding RFC 5321
 o fix subscription validation
1.4.0-rc2
 o fix notifymod regression
 o fix VERP regression
1.4.0-rc1
 o moderation cookie for subscription is now under the sub directory
   moderation/subscribe
 o mlmmj-make-ml: now supports non interactive mailing list creation
 o listtext: reintegrate the tree (not a submodule anymore)
 o lots of code deduplication
1.4.0-b1
 o manpage converted from man(7) to mdoc(7)
 o Fix a potential crash with mail without separator between headers and body
 o mlmmj-send: -l 6 has been removed
 o mlmmj-send: accept file descriptor number as -s argument
 o mlmmj-send: accept file descriptor number as -m argument
 o cleanup .omit files leftover if moderated emails are rejected and notmetoo
   is set.
1.4.0-a2
 o Fix a crash with forged probe emails
 o mlmmj-send does not need anymore absolute path
 o Use copy_file_range if available
 o Use arc4random_uniform if available
 o Logs are not limited anymore to 256 characters per lines
1.4.0-a1
 o Add a test suite
 o Modernize code (dprintf, posix_spawn, asprintf, getline, daemon, ...)
 o Supporting passing email to a mta over ipv6
 o Fix relaying in IPV6-only systems
 o Fix decode quoted printable subject
 o Fix parsing RFC1891
 o Fix a crash if no owner has been defined
 o Validate ranges of all integers conversion
 o New 'send' tunable to allow email passthrough
 o Add support for 'X-Original-From'
 o Reduce subscription confirmation address length to fit RFC 5321
 o Use arc4random is available
 o Reduce memory manipulation
 o When unsubscribing bouncers, keep the bounce file if something went
   wrong and report in syslog what went wrong
 o Remove the -b option from mlmmj-unsub, it is not used anymore
1.3.0
 o Czech translation (Jiří Šolc)
 o Don't use address extensions from non-list addresses
 o Fix some RFC 5321 compliance issues (Martijn Grendelman)
 o Add smtphelo tunable (Andreas Schulze)
 o Implement modonlypost
1.2.19.0
 o Add README.footers and footer-related resources
 o Support ESMTP so OpenSMTPD uses 8 bits (Paul Fariello)
 o Use iconv to convert unknown character sets
 o Handle unfolded header lines better
 o Add a tunable for moderation request lifetime (Timo Boettcher)
 o Ensure mlmmj-send always honours tunables (e.g. relayhost)
 o Fix reason in denial messages for mails without the list in To: or CC:
1.2.18.1
 o Stop mlmmj-maintd deleting list posts while they are being sent
 o Fix +list from crashing Mlmmj
 o Fix bug that made double subscription possible
1.2.18.0
 o New list texts (Ben Schmidt, Xuacu Saturio, Nino Novak, Sophie Gautier,
   Epaminondas Diamantopoulos, Valter Mura, Sérgio Marques, Milos Sramek, Dean
   Lee)
 o Add %nowrap% to facilitate more complex formatting
 o Add subscription ability to php-admin
 o Add ability to except characters from width reckoning (and be zero-width)
   to facilitate wrapping even more languages well
 o Add different width-reckoning modes to facilitate wrapping many languages
 o Add different wrapping modes to facilitate wrapping many languages
 o Fix backslash escaping mechanism so double backslash can't effectively
   recurse and form part of another escape sequence, other non-unicode escapes
   aren't ignored, and first lines of included files don't 'escape' escaping.
 o Add ability to subscribe to both (normal and digest).
 o Fix access logic so subonlypost doesn't override a send access rule.
 o Make +unsubscribe remove the requester from all versions of the list.
 o Make mlmmj-unsub default to removing the requester from all versions of the
   list.
 o Make mlmmj-sub and +subscribe[-digest|-nomail] switch existing
   subscriptions.
 o Add a switch to bypass notifying the owner on subscribe/unsubscribe.
 o Introduce \<space> to indicate non-breakable space, \= to mark other
   locations where breaks should not occur, and \/ to mark locations where
   breaks can occur
 o Add rejection of posts and obstruction of subscriptions.
 o Avoid bogus error messages when logging that the list address has been
   found in To: or CC: headers.
 o Escape dashes in man pages.
 o Remove 'bashisms' from mlmmj-make-ml script (patch from Dan forwarded by
   Thomas Goirand).
 o Automatically skip blank lines followed by unsatisfied conditionals with no
   else part in list texts
 o Automatically skip lines with only whitespace and directives in list texts
 o Add support for conditionals in list texts
 o Add %wrap% and %wrap W% formatting directives
 o Add %digestthreads%, %gatekeepers%, %listsubs%, %digestsubs%, %nomailsubs%,
   %moderators% and %bouncenumbers%
 o Deprecate various list text substitutions such as $newsub$, $oldsub$,
   $moderateaddr$
 o Add $permitaddr$ and $releaseaddr$ substitutions
 o Make $subject$, $posteraddr$ and $subaddr$ more widely available
 o Fix potential crash when mail to the owner arrives with no From: header
 o Add %originalmail% and %originalmail N% directives
 o Allow more characters in control and text filenames for substitutions
 o Add %%, %^%, %comment%, %control C% and %text T% formatting directives
 o Improve algorithm for list text substitutions
 o Add $text T$ substitution
 o Add $$ substitution
 o Allow list texts to include real UTF-8 characters, as documented
 o Fix bug where the normal listtext would be sent when unsubscribing from the
   nomail version of the list
 o New listtext naming scheme
 o Avoid trailing whitespace in MAIL FROM line (Lukas Fleischer)
 o Better end-of-line handling and error reporting in php-admin (Franky Van
   Liedekerke)
 o Avoid losing mail when connecting to relayhost fails
 o Improved and more consistent closing of SMTP sessions in error cases
 o Check the relayhost gives a reply before reading it to avoid a crash
 o Avoid checking addresses multiple times for notmetoo and make it work even
   when delivering messages individually
 o Fixed small memory leaks when SMTP errors occur
 o Improved error logging when requeuing
 o Fix php-admin to work when topdir contains a symlink (e.g. on Mac)
 o Better techniques for locating support files in php-admin -- existing
   installations will need to have their conf/config.php altered to set
   the variable $confdir
 o Add $control C$ substitution
 o Fix theoretically possible memory corruption by chomp()
 o Remove .sh from mlmmj-make-ml.sh; symlink original name
 o Correct spelling of 'receive' and 'voodoo' throughout the code and
   documentation, making mlmmj-recieve a symlink to mlmmj-receive (Chris Webb)
 o Richer MIME list texts with inline messages
 o Add $random0$ through $random5$ substitutions
 o Add a $subject$ substitution for list texts
 o Allow arbitrary headers in list texts
 o Ensure digest listtext is always closed
 o Fix Content-Transfer-Encoding: header for digests and list texts
 o Fixed a bug that could cause a crash if $posteraddr$ appeared in the
   maxmailsize listtext
 o Documented listtexts
 o Makes the random strings produced always the same length rather than
   smaller random numbers producing shorter strings which could be
   problematic
 o Make random number generation more efficient by only seeding the
   generator once
 o Added feature to notify users when their posts are moderated
 o Fixed documentation regarding silent subscription, and added
   ability to silently subscribe
 o Added notmetoo feature where posts are not mirrored to their senders
 o Check return status in mlmmj-perl-admin when adding subscribers (Florian
   Streibelt, Bitmand)
 o Better validation of input in php-admin (Thomas Goirand)
 o Fixed security bug in mlmmj-php-admin (Florian Streibelt, Morten Shearman
   Kirkegaard)
 o Added README.postfix to distribution tarball
 o Added "send" keyword to control/access handling (Ben Schmidt)
 o Added contrib/amime-receive (Gerd v. Egidy)
 o Fixed memory leak in substitute_one() (Ben Schmidt)
 o Updated TUNABLES file (Ben Schmidt)
1.2.17
 o Added ifmodsendonlymodmoderate tunable
 o Replaced class.FastTemplate.php with class.rFastTemplate.php in
   contrib/web/php-admin (Christoph Thiel)
1.2.17-RC1
 o Added information about digest and nomail to listhelp (Robin H. Johnson)
 o Fixed bug in mlmmj-maintd which caused loss of archive files in some
   requeue cases (Robin H. Johnson)
 o Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
 o Added support for digest and nomail to +list (Christoph Wilke)
 o Caseinsensitive string compare for owner addr when +list is invoked. Spotted
   by Pavel Kolar.
 o Added contrib/web/php-moderation (Thomas Goirand)
1.2.16
 o Fixed injection in contrib/web/perl-user (Gerd von Egidy)
1.2.16-RC1
 o Updated Dutch listtexts (Franky Van Liedekerke)
 o Updated Italian listtexts (Fabio Busatto)
 o Added Postfix pipe backend support (Niki Guldbrand)
 o PHP admin interface bugfix (Niki Guldbrand)
 o Added support for static bounce addresses (Thomas Jarosch)
 o Added a sanity check in mlmmj-receive-strip (Chris Webb)
 o Added miscellaneous sanity checks (Thomas Jarosch)
 o Disabled digest mails when 'noarchive' is set (Thomas Jarosch)
 o Added Russian listtexts (Nikolay Derkach)
 o Fixed mmap()ing of zero-sized files (Robin H. Johnson)
 o Fixed mlmmj-recieve [sic] for architectures where
   sizeof(int) and sizeof(char *) differ
 o Added support for the 'originalmail' keyword (Sascha Sommer)
 o Merged various changes to the web interface from Franky Van Liedekerke
1.2.15-RC1
 o Added --enable-recieve-strip configure option (Ansgar Burchardt)
 o Added unicode support to listtexts
 o Fixed build outside the source directory (Ansgar Burchardt)
 o Moved English listtexts and install all languages (Ansgar Burchardt)
 o Fixed missing exit()s in case of failed execl() calls (Ansgar Burchardt)
 o Changed Message-ID headers to include FQDN (Ansgar Burchardt)
 o Added support for 'discard' keyword in access rules (Sascha Sommer)
1.2.14
 o Updated Danish listtexts (Jesper Lund)
1.2.14-RC1
 o Fixed a small memory leak in log_oper() log rotation
 o Fixed address parsing for cases with quotes and multiple addresses
 o Added contrib/recievestrip/ MIME processor (Sascha Sommer)
 o Fixed digest multipart boundary (Thanks to Ulrich Mueller)
 o Added support for mail size limit (Christoph Wilke)
 o Log the result of access rules in the operation log (Henne Vogelsang)
 o Ignore empty lines in control files
1.2.13
 o Added Dutch listtexts (Raymond den Ouden)
1.2.13-RC1
 o Added 'nonomailsub' tunable which will disable nomail subscriptions
   to a list (Henne Vogelsang)
 o Added 'nodigestsub' tunable which will disable subscription to the
   digest version of a list (Henne Vogelsang)
 o Added list FAQ feature (Henne Vogelsang)
 o Added support for default list text directory (Henne Vogelsang)
 o Fixed a Bourne Shell issue in mlmmj-make-ml.sh (Magnus Naeslund)
 o Fixed hostnamestr() for hosts that can't find themselves using
   gethostbyname() (Benoit Dolez)
 o Add 'modnonsubposts' tunable that when set will moderate all posts
   from non subscribers
 o Fixed requeue for lists with noarchive enabled
1.2.12
 o Fixed memory corruption in cleanquotedp()
 o Fixed bug in gethdrline() introduced in 1.2.12-RC3
1.2.12-RC4
 o Fixed memory leak in checkwait_smtpreply()
 o Changed mlmmj-process to look at environment variable DEFAULT instead
   of EXT for qmail (Fabio Busatto)
 o Added Frensh listtext unsub-confirm-digest (Christophe Gallienne)
1.2.12-RC3
 o Fixed EOF handling in checkwait_smtpreply()
 o Fixed header unfolding in gethdrline()
1.2.12-RC2
 o Changed German listtexts (Stefan Reinauer, Christian Lackas)
 o Changed English listtexts (Stefan Reinauer)
 o Changed chomp() to also remove CR from CRLF sequences
1.2.12-RC1
 o Update web interface with new tunables
 o Add support for qmail (envelope from address in environment variable)
 o Add digest text part
 o Add subscriber moderation
 o Fix default subject in administrative mails
 o Add French listtexts (Christophe Gallienne)
 o Add search and pagination functionality to the perl-admin web interface
 o Only add To: header when sending out actual list mail
 o Close stdin, stdout and stderr in the child of mlmmj-receive after
   forking. This is neccesary on FreeBSD.
 o No need to check for subscribers in 0-sized files
 o Make sure chomp works with empty strings (Frank Denis)
1.2.11
 o Previous fix to find_email_adr() was incomplete, so in some
   cases mails would get rejected due to the To: or Cc: rule. Thanks
   again lcars for finding this
 o Sanity check to make sure there's a '@' in listaddress
1.2.10
 o Fix nasty bug in the new 1.2.9 find_email_adr() making comma in
   quoted text in From: being discarded as invalid
 o Simply make all addresses lowercase before doing anything else
   wrt. sub/unsub and bounce
 o Add czech listtexts (Lukas Hluze)
 o Make non list emails (subconf, moderation etc.) also honor relayhost
   and smtpport
 o Add tunable to be able to close for subscription only (closedlistsub)
1.2.9
 o Make find_email_adr() more robust (BSD, Neale Pickett)
 o Make the email address check case-insensitive. (Neale Pickett)
 o Add spanish listtext translations (Enrique Matías Sánchez)
 o Make recipient delimiter configurable per list. SIC! (Joel Aelwyn)
 o Added italian list texts translation. A thanks to Andrea Barisani, he has
   checked italian texts. (Filippo F. Fadda)
 o Use is_subbed_in instead of find_subscriber when subscribing people
   (Christian Laursen)
 o Make it possible to confirm subscription even though it's a closedlist.
   It makes sense to be able to confirm a request submitted by the sysadmin
   on the commandline
 o Add 'subonlyget' tunable which makes +get-N only work for subscribers
1.2.8
 o Don't closedir() before done (GOOD spotting Christian Laursen)
 o Make sure the resend of queue files will not loop indefinately
 o Make Date: header RFC2822 compliant (Jakob Hirsch)
 o Add -s switch to mlmmj-{,un}sub to control whether or not to send a mail
   telling about already subscribed, or not subscribed when trying to
   subscribe or unsubscribe (Christian Laursen)
1.2.7
 o Remove old superflous cruft in the smtpreply reader function, making
   mlmmj-send not segfault in rare cases when SIGTERM was sent
 o Another printf had snuck in there printing a free'ed variable
1.2.6.1
 o Make sure the fromaddr is correct on sub-subscribed mails
 o Don't add an empty subject if there was one present
1.2.6
 o If prefix but no Subject: header is present, add one (Jakob Hirsch)
 o Add notification mail when subbed people try to sub (Jakob Hirsch)
 o Install SIGTERM handler in mlmmj-send to allow it to shut down gracefully
 o Also remove mails when it's a bounce from a person not subbed
 o Introduce read() wrapper (Stevens)
 o Bouncing confirmation mails of sub or unsub should be cleaned from
   the queue as well
 o Normally mails which doesn't have exactly one From: emailaddress are
   discarded but certain ISPs have bounce mails with no From: header, forcing
   us to allow bounce mails with no From: to make sure they're caught
 o In case of a succesful DSN parse, we werent deleting the mail, and thus
   littering the queue
 o When sending moderated mails, rename them so that they wont be moderated
   again while sending
1.2.5
 o Make listname+list send the list of regular subscribers to the owner who
   requested it.
 o Michael Fleming corrected some spelling / grammatical errors and made
   occasional minor clarifications in the english list texts.
 o Add README.sendmail from Andrea Barisani
 o Add README.exim4 from Jakob Hirsch
 o Skip addresses without a @ when sending
 o Set SO_KEEPALIVE for our connection socket
1.2.4
 o Spend some time making valgrind completely happy
 o Unlink totally harmless .lock files in subscribers dir.
 o Make it possible to specify more than one listaddress in
   LISTDIR/control/listaddress. The first one is the "real" one.
 o Make the port to connect to controlable with LISTDIR/control/smtpport
1.2.3
 o Only allow subscription of addresses with '@' in them
 o Fix return value from unsubscribe function
 o Add extra lock layer when accessing subscribers files
 o In case of listname+bounces-INDEX use the DSN (RFC1891) report to extract
   the bouncing address
 o Fix usage of a zero sized control/verp string
 o Make the Date: header RFC2822 conformant
1.2.2
 o Make mlmmj-send work allthough no subscribers exist
 o Bring webinterfaces up to speed (Christian Laursen)
 o Fix moderate tag in access
 o Make mlmmj-make-ml.sh default the listtext dir to where they were
   installed in the system (Stephan Kulow)
1.2.1
 o Introduce switches to turn off mails about posts being denied.
1.2.0
 o Remove debug info printing
1.2.0-RC2
 o Fix uninitialized strlist
 o Add logging regular operation to mlmmj.operation.log
 o Fix the sending loop by not sending the rest of the batch in every
   iteration
1.2.0-RC1
 o Add VERP support. http://cr.yp.to/proto/verp.txt
   For Postfix: http://www.postfix.org/VERP_README.html, add "postfix" to
   LISTDIR/control/verp
   $smtpd_authorized_verp_clients should be the only one needed to touch
1.1.1-RC2
 o It's ok to log to a symbolic link to somewhere else
 o Add Message-Id: and Date: headers to mail from mlmmj
 o Make log_oper() varargs capable (Rob Holland)
1.1.1-RC1
 o Never discard anything from LISTDIR/queue/, let the admin be able to judge
 o Grab the lock when sending a mail to make sure noone does bad things
   to it underneath us
 o Danish listtexts, thanks Jesper Lund
 o Add control/noget to turn off listname+get-INDEX
 o Rearrange envelope from to be listname+bounces-index-user=domain.tld@ instead
   of listname+bounces-user=domain.tld-index@ to prepare for VERP support
1.1.0
 o If mlmmj-recieve was invoked with a uid not root or not the owner of listdir
   inform about the uid actually invoked with
 o Add German listtexts (Hendrik Norman Vogelsang)
 o Add hooks for installing listtexts into $(pkgdatadir) (Drake Wyrm)
 o Add mlmmj-list manual page
 o Make mlmmj-list be capable of listing owners, moderators too
 o Perl interface updates
1.1.0-RC3
 o Add 'moderate' tag for usage in control/access when one wants to have the
   moderators moderate posts hitting this regexp. See README.access
 o Add a To: header with the recipient's address when sending digests
1.1.0-RC2
 o Strip envelope from before resending to +owner
 o Make statctrl bail if it's not possible to stat()
 o Add mlmmj-list binary to list the subcribers (-count) of a list
1.1.0-RC1
 o Rewrite the way listtexts are managed, and in the process move the Subject:
   out into the listtext file making mlmmj completely translateable
 o Enhance perl webinterface - including group writable patch
 o Add option control/nosubconfirm which makes it possible to subscribe
   without confirmation by just sending the mail. USE WITH CARE!
 o Make files discarded by maintd end in .by-maintd to make them distinct
 o Fix off-by-one error in the function cleaning quoted printable chars
 o Close the correct fd's in mlmmj-process
 o Be consistent when using To: or Delivered-To:
 o mlmmj-unsub should also change user id to the listdir owner
 o Add support for not archiving the list by touching listdir/control/noarchive
 o Add 'nomail' version of lists. Subscribers to the nomail version are
   subscribed, but does not get any mail
 o Don't talk about changing uid in mlmmj-sub when we're not really doing it
 o Add sanity checks to disallow denial mails going to the list
 o Add digest functionality
 o Implement -d option for mlmmj-maintd to be able to supply it with a directory
   containing several listdirs, where mlmmj-maintd then will run maintenance
 o Chown option and a fix for mlmmj-make-ml.sh. Thanks Ingo Lameter
1.0.0
 o Replace index() with strchr()
 o Add parenthesis around realloc call to make sure we alloc correctly
 o Make header matching case insensitive
 o Fix dumping of addresses to requeue
 o Make the time an address can bounce before unsubscribed configurable with
   listdir/control/bouncelife
 o Correct mlmmj-make-ml.sh cronentry line to include -F
 o Add manual pages. Thanks Soeren Boll for the initial ones
 o Make random numbers lowercase hex since gmail is lowercasing the address
   it replies to.
 o Also make sanity check in mlmmj-maintd to ensure it's invoke either
   as root or as listdir owner
1.0.0-RC4
 o Fix brown paper bag bug not allowing enough space for the new better random
   strings introduced in RC3 so subscribe and unsubscribe works again.
1.0.0-RC3
 o NULL and 0 are not the same on 64-bit platforms, so fix execlp(..., 0); to
   be execlp(..., NULL);
 o Add web-interface (PHP). Thank you Christoph Thiel
 o Have the random numbers be somewhat longer everywhere and not just somewhere
 o Move free() to where it belongs fixing problems with mlmmj-process some
   people have been seen
 o Fix printing of cron entry in mlmmj-make-ml.sh
1.0.0-RC2
 o Do not allow mails from <> going to the list
 o Fix mailing to +owner again by adding missing 'break;' to switch in
   mlmmj-send
 o perl-admin updates from Christian Laursen
 o php-user updates from Christoph Thiel
 o Use Delivered-To: instead of To: when available
1.0.0-RC1
 o Add web-interface. Thanks Christian Laursen for new perl-admin
 o Dump the customheaders before any Mime headers
 o Implement +get-N functionality, so it's possible to send a mail to
   foolist+get-101@domain.tld to retrieve mail 101 from that list. It's
   deliberately only possible to request one mail at a time.
 o Make sure that only either root or the listdir owner can execute the
   binaries when it has something to do with lists.
 o Don't leave bounces-help@ mails lying around in queue/
 o Remove unanchored ".*" from beginning of regexp
0.8.3
 o Have mlmmj-make-ml.sh remind people about using cron if they want
 o Replying to the confirmation address is enough to sub/unsub, no matter what
   address is used the second time
 o Fix possible DoS wrt. unsubscribing. Thank you Erik Toubro Nielsen
 o Add 'notifysub' functionality to have owner know when people sub/unsub.
   Thank you Kenneth Vestergaard Schmidt
 o Use Return-Path: for envelope From. Thanks Anders Johansson
 o Specification of which relayhost to use can now be done in control/relayhost
 o Add configure check to link against libnsl if needed.
 o Implement our own daemon() function since we don't have daemon() on Solaris
0.8.2
 o Make sure we don't cut of the first char of an emailaddress
 o Fix header value copying (thanks Anders Johansson)
 o Don't segfault if there's no email address in the To: header
 o Clean up the subconf and unsubconf directories for stale requests as well
0.8.1.1
 o Fix bug with prepstdreply not opening correct file. Thanks Christian Laursen
   for spotting.
0.8.1
 o Go through all open() calls and retry in case we (allthough it's extremely
   unlikely) did get EEXIST
 o Add the option to add a To: header including the recipient emailaddress.
   NOTE that this does not remove any existing To: headers, they should be
   removed in control/delheaders
 o Optimize mlmmj-send by preparing the mail in memory to reduce the amount of
   write syscalls. control/memmailsize (size in bytes) controls how big it can
   be. Default is 16k before it's send line by line.
 o Make sure we check if the Subject: prefix might be present in the
   de-quoted printable version of the Subject. If so, don't add it.
 o Fix bug with queuefilename not being correctly initialized when generating
   standard mails
 o Let mlmmj-send be capable of handling relayhost local users bounce probes
   bouncing.
 o Don't litter the queuedirectory with files when rejecting mails (the
   maintenance daemon would take care of it, but lets be nice)
0.8.0
 o Added regular expression based access control.
 o Added wrappers for malloc(), realloc(), free() and strdup(), so we can
   bail out if any of them fail.
0.7.3
 o Implement control/delheaders in where one can specify all the headers
   to delete in incoming mail to the list.
 o Add +owner functionality (control/owner). Several addresses possible.
 o Relicense the whole thing to be MIT instead of GPL
0.7.2
 o Make it possible to only let subscribers post
 o Implement feature to deny posts where the listaddress is not in To: or
   Cc:. Enabled pr. default, but can be disabled by touching control/tocc
 o Make mlmmj-sub change uid to the owner of listdir to avoid permission
   problems. Disable with -U to mlmmj-sub.
 o More memory debugging
0.7.1
 o Fix bug with .reciptto and .mailfrom getting swapped
 o Plug a few small memory leaks in mlmmj-maintd
 o Fix bug with maintenance logfile not being opened at the right spot
0.7.0
 o Add a macro to make sure mlmmj binaries are invoked with full path
 o Add the function to mlmmj-maintd to unsubscribe people who've been bouncing
   for BOUNCELIFE (default 432000 sec, 5 days) time. This completes
   the bouncehandling of mlmmj. SIC!
 o Add logging to mlmmj-maintd. mlmmj-maintd.lastrun.log in the listdir
   always has the log of the last run. This is work in progress.
 o Make mlmmj-bounce capable of sending probes
 o Include a function for easy generation of standard mail replies
0.6.0
 o Add several unlinks. No need to litter queue/ with useless files
 o Don't use moderation/queue for outgoing, just use queue/
 o Christoph Thiel pointed out that listaddress and moderators belong in
   control/ so move them there
 o Get rid of all FILE * instances and replace them with fd's
 o Also mmap the subscribers file when reading subcribers
 o Do an mmap of the mail to send once, instead of reading the mail for
   each mail to send
 o Rip out the ability to fork to make more than one connection to relayhost.
   It turned out to not make any performance gain (tested with lists with
   more than 120000 subscribers), and thus only complicated things.
   KISS won, so it's gone.
 o mlmmj-maint now handles resends and cleanup
 o Fixed interrupted fgets() in write_mailbody_from_file()
 o Fixed leak of subfile in mlmmj-send
0.5.2
 o footer and customheaders are now accessed from listdir/control/ where
   they belong
 o Discard mails that doesn't have one and only one From: address. Discard
   here means moving them to queue/discard
 o Make sure we retrieve info from all headers matching the token we want
 o Fixed error handling in mlmmj-send if we can not open subscribers.d/
 o Make mlmmj-send a lot more robust with SMTP and handle
   bounces from the relayhost.
 o Fix BUG in mlmmj-bounce still using listdir/subscribers
 o Handle subconf/unsubconf bounces
 o Begin work on mlmmj-maintd--the mlmmj maintenance daemon
 o Make help consistent and up to date with all options
 o Make mlmmj-send print the replies from the mailserver
 o Send our hostname in the HELO instead of relayhost
 o Implement requeueing mechanism to be able to resend mail when relayhost
   trouble occur
0.5.1
 o Add a file TUNABLES which documents the ways to tune mlmmj lists.
 o Add support for Subject: prefix
 o Added WAITTIME (time to sleep before checking if we should spawn another
   mlmmj-send process) option in mlmmj.h
 o Fixed error handling in mlmmj-unsub if we can not open subscribers.d/
0.5.0
 o Use a subscribers.d/ directory for several subscribers files. mlmmj-send
   will now fork for each file (up to MAX_CONNECTIONS) for faster delivery.
   mlmmj-unsub will search for subscribers in all of these files.
   mlmmj-sub will now add emailaddresses to the file in subscribers.d/ with
   the name of the first character in the emailaddress (foo@bar.com will be
   in subscribers.d/f).
 o Major cleanup of listcontrol() and in the process add closed list
   functionality (touch listdir/control/closedlist and it's closed)
0.4.0
 o Add moderation functionality
0.3.4
 o Fix handling of lines which start with a dot
0.3.3
 o Add primitive bounce handling
 o mlmmj-recieve now forks before exec()
 o mlmmj-{,un}sub now uses mmap and friends for better performance
0.3.2
 o Logging enhancement
 o Send on the full path to the binaries around in the program since
   execlp needs it.
 o Make mlmmj-make-ml.sh use /bin/sh not /bin/bash
 o Rename mlmmj-{subscribe,unsubscribe} to mlmmj-{sub,unsub}
 o Cleanup and reimplementation of several functions that needed it badly
0.3.1
 o Add BINDIR (mortenp)
 o Fix retstruct->emaillist initialize (mortenp)
 o Log handling adjustments (mortenp)
 o Touch subscribers and index (mortenp)
0.3.0
 o Footer addition. Make a file called /path/to/listname/footer and it will be
   added to all mails.
 o Implement the help function. Send a mail to listname+help to get help. Also
   address used as From: address when sending sub/unsub mails
 o Make find_subscriber more safe (mortenp)
 o Completely use EXIT_macro (mortenp)
0.2.2
 o Add proper checks for the execpl (mortenp)
 o Use EXIT_ macros for exit (mortenp)
 o Try /dev/urandom before /dev/random
 o Make the random_int() function work without /dev/random, which is not
   present on DEC-Unix/Tru64 (mortenp)
 o Make -V print the version
0.2.1
 o Make the From: header on sub/unsub mails be listname+help
 o Double check the subscription address before adding.
 o The From header should be generated according to archive in the list mails
   for proper bounce handling
 o Cannot specify both -c and -C to mlmmj-{unsub,sub}scribe
 o Small bugfixes
0.2.0
 o Implement subscription and unsubscription by email
 o Remove the need for the -l switch by introducing a listaddress file in the
   mailinglist directory
 o Make use of a queue directory, and not move mails to the archive before they
   are processed by mlmmj-send.
0.1.4
 o Properly handle the replies from the mailserver on our requests. Still need
   some kind of requeing mechanism though.
 o Use automake and autoconf
 o Use fcntl instead of flock
 o Add a script to make the mailinglist directories - thanks hennebird
0.1.3
 o Make it write \r\n for each \n.
 o Convert everything possible to snprintf
 o Make valgrind (http://developer.kde.org/~sewardj/) find no error, leaks
   anything
0.1.2
 o Made mlmmj-unsubscribe
 o Made mlmmj-subscribe
 o Fix the indexnumber in the From header. Was reversed.
0.1.1
 o Custom headers. Add a file called 'customheaders' in the listdir
   and it will be added. Should be used for Reply-To: if God forbid someone
   wants to use that.
 o Cleanup a bit
0.1.0
 o Initial version working with archiving and not much else apart from the
   same functionality as a list in /etc/aliases
