Change Log for the Freedom Remailer
1995 jfleming@indiana.edu
1997 hanne@squirrel.owl.de

Version 2.0 (new maintainer: Johannes Kroeger <hanne@squirrel.owl.de>)
Changes since version 1.6:
* The remailer queues incoming messages with a default latency
  if more than one remailer process is running at the same time.
* The remailer doesn't run the latent queue automatically after remailing;
  you must run "remailer -q" from cron to do this.
* Configurable size limit SIZE_LIMIT for incoming messages.
* Separate block list for destination addresses and newsgroups.
* URL's are checked against block list before being accessed.
* Simplified parsing of remailer directives and fixed infinite loop when
  processing messages with no blank line after the :: and ## header blocks.
* Careful checking of time strings in parsetime() to make it bullet-proof.
* Sendmail now called with -t as in Mixmaster rather than putting the
  destination on the sendmail command line.
* The remailer honors ##'ed To:, Cc: and Bcc: headers and checks them for
  blocked destinations.
* Bit-bucket messages should now have a Null: line in the ::'ed header block.
* Added filtering of user-supplied headers, controlled by new configuration
  file "headers.del" as in Mixmaster 2.0.4.
* The remailer kills Reply-To: headers with blocked destinations to prevent
  mailbombs from autoresponders (test newsgroups etc.).
* No autoresponder files (help, stats, key) are sent to destination-blocked
  Reply-To: or From: addresses.
* Two configurable name <address> pairs are used: ANON_NAME <ANON_ADDR> for
  anonymous messages and REMAILER_NAME <REMAILER_ADDRESS> for autoresponder
  answers.
* New function scan_subject() for scanning and blocking ##'ed subject lines.
* The remailer now always kills incoming subject headers ("ksub" feature).
* A "Subject: None" header is added if no ##'ed subject line is found.
* New function encrypt_sub() implements Andy Dustman's "esub" code.
* Scrapped count.c and used Matt Ghio's genid() code to generate random
  ASCII id's for file names and subject digest encryption in encrypt_sub().
* Removed support for obsolete X-Anon-To: remailer directive (Ghio2 and
  Mixmaster don't support it and noone uses it anymore).
* chop() now removes leading whitespace as well.
* block() skips blank lines and lines beginning with # in block lists.
* rxmatch() rewritten for compatibility with GNU Rx library.
* Added PGP option +armorlines=0 in function encrypt_key().
* Changed all fgets(s, n, fp) statements to fgets(s, sizeof(s), fp).
* Changed all line buffers to char[BUFSIZ] for RFC822 compatibility.
  BUFSIZE is defined in <stdio.h> and should be >= 1024.
* Minor changes (prototypes, int main() etc.) to avoid warnings with gcc -Wall.
* Added support for posting through mail2news gateways instead of inews,
  controlled by new configuration variable MAIL2NEWS in config.h.
* Subject lines added to remailer help and key files, no need to have them
  hard-wired in the source code.
* Disclaimer as RFC822 "Comments:" header; defined as DISCLAIMER in config.h.
* Improved statistics output format as in Mixmaster 2.0.4.
* Help file updated to reflect user-visible changes.
* COPYING file replaced by newer version with updated FSF address.

Version 1.6:
Changes since version 1.5:
* fgets() return value no longer compared to an integer throughout program
* (thanks to shutton@indiana.edu) Makefile has options for HP/UX and popen()
  returns are casted as (FILE *) wherever they occur.
* README updated

Version 1.5:
Changes since version 1.4:
* FSF address updated everywhere it occurred except in COPYING
* now recognizes freedom-stats freedom-key freedom-help in subject
* if get-url: or get-html-source: was received, look for return-to:
  if it exists, mail www response to that address (if not, mail to sender)
* when mailing www response, pre-pend the original message body.
* with above two options, anonymous requests can be made through chains
  and/or sent back through chains

Version 1.4:
Changes since version 1.3:
* Stats code heavily modified; keeps track of more stuff
* Lockfiles used by stats code now
  (so that more than one remailer process doesn't try to update/read stats
  at the same time)
* config.h split into config.h and freedom.h
* address grabbed properly from From: email@address (Real Name)
* No longer accepts Encrypted:PGP (why support those who don't follow
  directions?)  Still not entirely decided on this issue, though.
* config.h & util4.c made so that it's easy to config for lynx instead
  of cern
* INSTALLATION updated to reflect changed config.h
* FTP site added to README

Version 1.3:
Changes since version 1.2:
* now accepts "Encrypted:PGP" as well as "Encrypted: PGP"
* :: can appear on first non-empty line of body, not just on the very
  first line of the body
* Makefile changed so regex.o isn't deleted on a make clean

Version 1.2:
Changes since version 1.1:
* can handle requests for URL's using the CERN linemode browser. if it
  gets a message with a get-url: header, it gets the url and mails it back
  to the sender (this will be expanded on later)
* can handle requests for HTML source via get-html-source: header.

Version 1.1:
Changes since version 1.0:
* allows regular expressions in blocking files
* config option at compile-time to use regular expressions or not
  (using regular expressions requires GNU regex.o or librx.a)
* README, TODO, INSTALLATION updated
* README.blocking added

Version 1.0:
Changes since version 0.99.3b:
* none; this is the release version

Version 0.99.3b:
Changes since version 0.99.2b:
* more checking on fopen()s and opendir()s so that we don't try to access
  unopened files/directories, which should cut out all future segmentation
  faulting.  if file/dir was not opened, alternate action is taken and
  processing continues.
* blank lines in block files no longer cause every message to be blocked.
  this was too easy to fix to look over at this time
* README, TODO, INSTALLATION updated according to changes

Version 0.99.2b:
Changes since version 0.99.1b:
* when handling pgp decrypted messages in remailer.c, does not try to
  process if it wasn't properly decrypted (ie the message was not encrypted
  with the remailer's key but someone else's or not at all)

Version 0.99.1b:
Changes since version 0.99b:
* retslower() removed.  it was horrid.  program now gets further before
  memory faulting
* scan_message returns NON_ANON if the message can't be opened.  this is
  because when processing cutmarks leftovers, there IS no message in that
  file.  As long as trimmings is checked before NON_ANON in remailer.c
  (it is) this fixes it.  This did not mess up on Linux, but caused seg.
  faults on other systems.  Those should be solved now.
* README updated
* TODO updated

Version 0.99b:
Changes since version 0.98b:
* setenv() and unsetenv() calls replaced by putenv()

Version 0.98b:
Changes since version 0.97b:
* decent help file added to distribution
* some debugging info can be turned on at compile-time
* #ifdefs removed and replaced with if (...) 's
* scan_message changed so the anon-to: header does not have to come last
* help file rewritten to reflect changes in the header processing
* README and INSTALLATION updated

Version 0.97b
Changes since version 0.96b:
* Subject blocking added.
* Bug fix version?  Kinda.  Mostly changed the way certain things are done
  so that they are more versatile and avoid problems if someone does
  something wrong:
* the way Cutmarks: and Encrypt-Key: headers are stripped was changed so
  that it is not case-sensitive, causing infinite loops if the user does
  not type them in the proper case. A stupid problem that I knew of when
  I wrote the code but did not feel like fixing.  Its time for fixing has
  come.
* Changed usage of strstr() to strncmp() when looking for headers in
  scan_message.  Probably doesn't matter practically, but seems more
  correct.
* Stupid bug that was documented in the README (up until this point) that
  made it impossible to use uppercase in encrypt-keys and cutmarks was
  finally fixed.
* There was a stupid bug that caused the remailer to leave out the first
  line of mail it was dumping to spool.  Fixed.
* took out all the extraneous printf's I was using for debugging
* added some #defines in config.h and #ifdefs in remailer.c files to
  enable/disable posting, pgp support, and statistics-keeping
* Typo in CHANGES (this file) that said queue could be run by giving
  "-r" when in fact the argument is "-q".  Changed.
* README updated in a few places
* INSTALLATION file updated
* TODO updated
* Makefile changed a bit

Version 0.96b
Changes since version 0.95b:
* bugfix! was reusing cfilename for encrypt-key so if there were more
  cutmarks to process after encrypt-key was used, all was lost; now
  a new tempfile is used for encrypt-key

Version 0.95b
Changes since verson 0.94b:
* now supports Encrypt-Key: header

Version 0.94b
Changes since version 0.93b:
* now queues messages with latent-time header, recognizing XX:XX,
  +XX:XX, and +XX:XXR
* runs latent message queue each time it is run, after recursion is done
* ONLY runs latent message queue if called with argument -q

Version 0.93b
Changes since version 0.92b:
* now mails remailer's key if subject remailer-key is received
* now dumps mail sent anonymous to "null"

Version 0.92b
++ First betatesting version
Changes since verson 0.91:
* GNU public license added
* README, INSTALL, TODO, CHANGES (duh) updated appropriately
* Source files updated to include pointer to the GNU public license

Version 0.91
Changes since version 0.9:
* added support for x-anon-to: and anon-send-to:
* added Organization: line to usenet postings
* added updatestats(STATS_MESSAGE) to usenet postings, at least until I
  modify stats to keep usenet stats separately
* somehow I missed the line in mailstats() that showed how many messages
  were queued with latency.  I added it back.

Version 0.9
Changes since version 0.8:
* <string.h> added to remailer.c  Oops!
* support for cutmarks: header added

Version 0.81
Changes since version 0.8:
* :: headers handled differently & more properly.  they are only considered
  if the :: appears on the first line of the body of the message.
* code to separate headers, remove the first :: header, and paste ## headers
  rewritten but has the same functionality

Version 0.8
Changes since version 0.71:
* support for remail-to: header added
* pgp messages handled differently; now, any unencrypted text after the pgp
  message is also remailed, whereas before, only the unencrypted pgp message
  was remailed

Version 0.71
Changes since version 0.7:
* made remailer check for anon-post-to in real headers as well a :: headers
  silly oversight the first time around
* made remailer only cut out the first :: header to allow chains
* made remailer paste in the ## headers only if last in chain
(I'm half-surprised the damn thing still works at this point)

Version 0.7
Changes since version 0.6:
* usenet posting added via anon-post-to: header

Version 0.6
Changes since version 0.5:
* source blocking added
* destination blocking added

Version 0.5
Changes since version 0.4:
* now mails help file if sent a message with Subject: remailer-help
* fixed bug in mailstats() which printed *'s to stdout instead of pipe
* mailstats() now puts a To: header in, just for looks
* added INSTALL and README file to distribution (in anticipation of release)

Version 0.4
Changes since version 0.3:
* PGP support added
* Stats code reformatted

Version 0.3
Changes since version 0.2:
* statistics code added
* now mails statistics if sent a message with Subject: remailer-stats

Version 0.2
Changes since version 0.1:
* pasted in headers are now actually in the message headers

Version 0.1
* supports type 1 messages with anon-to: and request-remailing-to: headers
* recognizes "::" extra header formats
* discards all original message headers
* pastes in "##" extra headers
* dumps non anonymous mail into spool specified in config.h file
