This ChangeLog file summarizes the (implementation) changes from the technical view. The code repository log file provides the changes in full detail. Have a look at the NEWS file for a summary of the changes in a less technical speach and with focus on compatibility. 0.2.25 Tue, 06 Jul 2010 19:58:29 +0200 * added server-side SMTP SIZE support. Thanks to Paolo. * always remove Bcc: headers from now on * never create headers from envelope recipients from now on * add ``To: undisclosed-recipients:;'' if no recipient header is present * added checks for too long addresses in SMTP dialog. Thanks to Paolo. * allow colons (`:') unquoted in config file. Thanks to Paolo. * new warnmsg.tpl.it. Thanks to Paolo. * don't install the tests any longer * removed the ACC_NO_RECVD_HDR because it is never used * changed name ACC_NODOT_TERM to ACC_DOT_IGNORE for better understanding * fixed max_size_delete * added Paolo's mailq.wmbiffrc * better debugging output. Thanks to Paolo. * documented some, yet undocumented, config options * improved documentation of -t option * added man page for rmail(1) * several typo fixes in man pages and code comments * gen-dist: don't distribute mercurial files 0.2.24 Mon, 21 Jun 2010 10:07:32 +0200 * removed dead code in child.c * fixed closing of log files on receival of SIGHUP. See commit message and http://bugs.debian.org/536060 . * the daemon does reparent to init anymore if init is already its parent. This situation appears on SIGHUP receival. * fixed correct processing of mails with data lines longer 4096 chars. See commit message for details. * various refactoring * fixed is_ingroup() to check for the primary group of users * moved man page of mservdetect to section 1 * added rmail script from postfix which is a bit better than calling masqmail as rmail. See docs/uucp-setup * permissions.c describes how to make another group (e.g. `uucp') trusted * uninstall target removes now docs and thelike * minor updates in the documentation 0.2.23 Sun, 30 May 2010 21:00:44 +0200 * fixed inverted condition for undefined online_file. Thanks to Juergen Daubert. * masqmail installs to /usr/local by default now. Previously it installed to /usr. * man pages get installed again. Again thanks to Juergen Daubert. Docs and examples do get installed now too. * updated the docs. Moved the man pages from docs/ to man/. Added the old manual from the old website to the distribution. * reworked the test cases completely. * updated the README file and added a bug report howto * fixed dist-gen (wrong paths for md5sum) 0.2.22 Thu, 20 May 2010 21:19:56 +0200 * new maintainer: markus schnalke . See NEWS. * fixed expanding of $prefix for template files. Thanks to Johann Felix Soden. * fixed delivery with empty or non-existent alias files. Thanks to Marcos Dione. * fixed empty or only-whitespace connection names. * fixed typos, reported by Reuben Thomas. * corrected man page about /etc/aliases. Thanks to Alexis. * further corrections and improvements in man pages. Man pages will be maintained in the nroff code directly in future. * removed distribution specific data from repo. It is now separately available on the website. * changed default online status file to /var/run/masqmail/masqmail-route * removed trigraph warnings 0.2.21 Mon, 07 Nov 2005 14:09:21 -0800 * do not use shell when executing sub programs (security fix) * do not accept backtick in email adresses (security fix) * write log files as 'mail' user (security fix) * use /var/run/masqmail/ for pid files 0.2.20 Mon, 19 May 2003 21:14:06 +0200 * fixed a segfaulting bug in spool.c caused by folded headers * regard connect_error_fail when failing for pipes (Debian Bug #186364) * hopefully fixed uid/gid problem in peidopen.c 0.2.19 Wed, 12 Mar 2003 21:33:53 +0100 * fixed a bug in addr_string (set buffer = NULL if g_free'd buffer) 0.2.18 Fri, 06 Dec 2002 14:57:41 +0100 * new option connect_error_fail * install /var/{log,spool} before subdirs, so they get correct ownerships, if installing to a tmp. directory Thx to Juergen Daubert. * failure notices and warnings also if connection fails 0.2.17 Thu, 28 Nov 2002 14:59:24 +0100 * fixed errors in man page masqmail.conf.5 about online_detect Thx to Juergen Daubert. * fixed a segfaulting bug in accept.c on pop retrieval, if there is no return_path in the mail and Sender: is empty. Thx to Olaf Buddenhagen for debug information. * implemented 'last_route' option * moved *.tpl to /usr/share/masqmail/tpl (from /etc/masqmail/tpl) * french translation of warnmsg.tpl by Rémi Denis-Courmont * added delivery warn messages for deferals new options: 'warn_intervals', 'warnmsg_file', 'max_defer_time' * warn/fail also if remote SMTP server replies with 4xx or 5xx just after EHLO/HELO (yes, that was a bug) * removed a few -Wall warnings. Thanks to Juergen Daubert. 0.2.16 Tue, 12 Nov 2002 17:27:13 +0100 * fixed debugging, which has been broken in 0.2.15 0.2.15 Wed, 06 Nov 2002 12:19:55 +0100 * added french translation of delivery failure message template. Thanks to Rémi Denis-Courmont * accept -f "" without segfaulting. Thanks to Ralf Friedl. * fixed buffer overflows in conf.c. Thanks to Damian M Gryski. * read conf file _after_ dropping privileges 0.2.14 Sat, 26 Oct 2002 14:40:49 +0200 * corrected html version of documentation * include masqmail.8 man page (was garbled in 0.2.13) * small lintian fixes for Debian 0.2.13 Wed, 23 Oct 2002 20:54:39 +0200 * fixed a possible buffer overflow (IMHO not exploitable) Thanks to Anonymous. 0.2.12 Wed, 23 Oct 2002 18:57:42 +0200 * new do_pipelining option (to switch it off if necessary) * new helo_name option for route * fixed remote_port option (but marked it as deprecated) * swapped setegid/seteuid in maildir_out() * try again on EAGAIN failure for local delivery via mbox 0.2.11: * make it possible for *.route file to have mode 600, owned by root. Thx to Juergen Daubert for noticing. * do not choke on trailing blanks after comments in conf file. Anonymous again. * try again on EAGAIN failure for local delivery via mda * fixed a potential buffer overflow in conf.c. Thanks to Anonymous again. * set umask 066 for log files. Thanks to Anonymous. * implemented map_h_mail_followup_to_addresses * fixed a bug: masqmail -t with empty body caused weird errors. Thanks to Anonymous. * added do_save_envelope_to option 0.2.10: * fixed a small bug in mserver.c (atoi) (Thanks to Gert Ohme) * allow ';' in rval also if rval is unqoted * write pidfiles to /var/run/masqmail{,-get}.pid * now runs on freebsd without leaving zombies * use setjmp() in readsock.c for timeouts 0.2.9: * attempts to make it compile on freebsd - works, but leaves zombies behind (will be done next release, I hope) * removed some bashisms from configure.ac * fixed segfault when called with -t under some circumstances * some fixes about locking when fetching mail (yes, 0 _is_ a valid fd...) * some speedups for uidl handling, and do not bloat log files any more 0.2.8: * use flock() for locking in retrieving mails (get.c) * can use /etc/mailname as host_name (for Debian) * added ESMTP LOGIN * made uidl handling even more safe 0.2.7: * fixed stupid locking bug * do not complain about 'unknown mode' when getting mail * added italian version of failmsg.tpl (by Paolo) * changed MIME boundaries in failmsg.tpl (Paolo) * applied patches from Paolo (Gabel - ): mostly replacing g_strdup_printf() with g_strdup(), a few ticks ('), changed SENDER_LOCAL environment variable and fixed missing '\' in debian/masqmail.ip-up 0.2.6: * rediscovered previously undocumented allowed_return_paths option for routes and made it usable for null sender addresses. * added mbox_default, and {mbox,mda,maildir}_users options * changes to vsnprintf function use in pop3_in.c and smtp_in.c (by egp) * fixes to ip-up/ip-down scripts (by Ben Low) * ENABLE_SMTP_SERVER define was incorrectly written as ENABLE_MODE_SMTP (by Ben Low) * fixed bug in get_header() in src/header.c (by egp) 0.2.5: * PowerPC fix for varargs functions * relay checking: if do_relay is set to false, do not allow non local to non local addresses * alias is always caseless for postmaster (disregarding alias_local_caseless option) * do not rebounce to postmaster * implemented Maildir support * rearranged append_file in local.c * use sysexits.h for correct error reply for failure messages (mda only) 0.2.4: * fixed uidl bug: uidl list was not written if a mail was not fetched because it was in the list * fixed bug in src/conf.c: g_free'd twice in destroy_route() * security fix, Debian Bug#102092: 'Privilege escalation in masqmail piped alias handling': fixed by using set[ug]id instead of sete[ug]id in peopen.c (noted by Colin Phipps) * limit count of children in pop3_in.c and wait for them * ignore SIGPIPE signal * docu updates by Uli Funcke * find path to masqmail via --prefix or --exec-prefix option for configure * implemented -v (log to stdout) option 0.2.3: * local_addresses and not_local_addreses option (patch by Uli Funcke) * replaced /usr/sbin/masqmail in fail_msg.c with /usr/sbin/sendmail * typo in man pages (noted by Sebastian Inacker) * hostnames can now begin with a digit (noted by CatcherInTheRye) * chdir to '/' (on some systems getcwd() failes when changing uid) * implemented lock_dir option * ignore EINVAL after fdatasync * configure option to link with libcrypto * configure option to disable resolver support * configure option to enable mserver support * configure option to disable smtp server * configure option to link glib statically * msg_count option for get configuration * bug fix: do not terminate if accept() return error (patch by Edouard G. Parmelan) * removed some files from package in debian (by Edouard G. Parmelan)) * mailrm alias (by Edouard G. Parmelan) * bug fix: removed superfluous g_free from dot_unlock() (by Edouard G. Parmelan) * write uidl list to temporary file first * write uidl list each time a message was retrieved (avoid duplicate mails when interupted) 0.2.2: * fix of Debian Bug#92894 by Gregor Hoffleit (correct error reply for lacking permissions) * fixed 'last line missing' bug * fixed spool locking bug: lock was deleted if unsuccessful (unlocking it) * added patch from Uli Funcke for log_user (user getting all delivered mail) * implemented get daemon * create lock file when getting mail * use tables for finding route and get lists 0.2.1: * expand_h_sender_address now defaults to true (as described in docs) * included documentation patch by Marc Herbert (masqmail call in ifup configuration) * complain to log if failure message template cannot be opened * errmsg_file defaults to /etc/masqmail/tpl/failmsg.tpl * corrected error message for insufficient permissions (Debian Bug #92894) * get mail depending on connection: -go option and online_get 0.2.0: * included the debian/ directory from the debian package. * added return_path option for get configuration * added max_messages option for get configuration * added independent program 'mservdetect', which can be used with online_detect=pipe as replacement for online_detect=mserver * added online detection method 'pipe' * replaced configure option --with-conffile with --with-confdir, default is now /etc/masqmail/ (/etc/masqmail/masqmail.conf for the conf file). * added do_uidl_dele option (delete messages in uid listing on server) * qualify address for get configuration. * better checking for valid From: address when retrieving mail via pop3 and this is used as the return path. * port number for mail_host in routes possible * introduce delivery failue notices * added addr_string() function for easy output of addresses * expire spool lock files after a while (currently 300s) * started development branch 0.2.x 0.1.12: * previous fix auf AUTH broke it - reverted it partially and fixed it again * bug fix in get.c: retrieval via pop from different server could cause mail to be lost 0.1.11: * bug fix in smtp_out.c: of AUTH methods supplied by server, only the first was recognized 0.1.10: * added support for IP address as mail_host in routes * include in masqmail.h to make it compile with glibc 2.2.2 0.1.9: * fixed a few typos in man pages * ignore -v option * added patch from Bernhard Ehlers to program aliases runq, rmail, smtpd and in.smtpd * added patch from Edouard G. Parmelan to correct default directories to install * implemtented pipe, pipe_fromhack and pipe_fromline options for routes (for protocol 'pipe') * implememted 'pipe' protocol for routes * memset to 0 of configuration structures (it is safer and easier) * list of routes for each connection * do not be picky about EOF if locally received message is not terminated by a dot * speeded up accept.c for large messages (noted by Falko Flessner) 0.1.8: * security bug fix (Debian Bug#81079): if local address cannot be resolved, masqmail listened on an arbitrary port (fixed by Adel Belhouane) * bug fix: -d without argument caused segfault (Thanks to Jan Setzer) * added more help for configure * Iain Lea sent a spec file for Redhat. Thanks! * lines can now be indefinetely long for mail acception (well, nearly...) * implemented 'wrapper' options for routes and get configurations for ssl and maybe other purposes * unified read_sockline() for smtp_out.c, smtp_in.c, pop3_in.c, accept.c and mserver.c * escaping of quotes in configuration now possible and now works correctly in alias file (Edouard G. Parmelan sent a patch, but I fixed it differently) * kill -HUP seems to work now. * close all file descriptors >= 3 on start (patch by Edouard G. Parmelan) * replaced exit() with _exit where appropriate (children) * added pipe_fromhack and pipe_fromline options * added mda support and mda_fromhack and mda_fromline options * user can delete his own mail if received via smtp from one of ident_trusted_nets * bug fix in lookup.c: if the name that an MX points could not be resolved, delete entry * added expand_h_sender_address option. expend_h_sender_domain should be obsolete now. * unprivileged user can delete his own mail from queue if received locally * replaced popen() in local.c with peopen() from snippet from sourceforge. Fixed a bug there. 0.1.7: * debug option can be changed for privileged users only * fixed a security hole: -C option for unprivileged users now implies run_as_user and drops _all_ privileges * environment variables for pipe transport * wildcards for map_* options * rearranged interface handling, IP addresses now possible for listen_addresses and mserver_iface * beautified masqmail.c * revised uid and gid settings in spool.c and local.c (pipe transport) * optionally use ident protocol (RFC 1413) and store user id in spool file * proper spool file locking 0.1.6: * record user id in spool file (though it is not used anywhere) * command line option to remove messages from queue (-Mrm) * command line option for version information (-bV) 0.1.5: * implemented -F option * removed bug in accept.c (dot bug, noted by Andre Masloch) * location of main conf is now configurable with ./configure (suggested by Greger Hoffleit). Default is /etc/masqmail.conf. * remote_port defaults to 25 (noted by Andre Masloch) * docu fixes: remote_port documented and typo fix (noted by Andre Masloch. Again :-)) * do not return failure on exit on delivery if mail queue was empty (noted by Andre Masloch) * qualify -f address with host_name if unqualified (noted by Andre Masloch) 0.1.4: * Jens Askengren discovered a segfaulting bug when parsing headers. 0.1.3: * warn if pop/auth options are given, but compiled without support * fixed allowed_rcpt_domains option (was broken since 0.1.0, but nobody noticed) * exit with 1 if queue run fails for any reason (not for daemon) * fail if alias file cannot be read * better handling of SMTP SIZE error * implemented alias_local_caseless option (suggestion by Andre Masloch) * case insensitive domain matching (noted by Andre Masloch) * removed nearly all warnings if compiled with -Wall 0.1.2: * some changes in configure.in * continue if get conf could not be read. Thanks to Edouard G. Parmelan! * fixed another bug on pipe addresses in spool.c * Andre Masloch found a bug in spool.c which caused a segfault on pipe addresses. Thanks! 0.1.1: * Edouard G. Parmelan sent a patch for starting a queue run on start of daemon. Thanks! * rpm packages for SuSE * regard CFLAGS in Makefile.am * implemtented -g option * be more verbose in pop3_get.c * implemented -f option (set return path) * fixed bug: "no debug file, msg was:" in smtp_out.c when debugging was off * internal changes of smtp_out_log_failure() * removed 'no log file' error * complain if host name could not be resolved in connect.c * added option resolve_list for route and get configurations * removed bug in rcptlist_with_one_of_hostlist(): exited when list was empty 0.1.0: * included ESMTP AUTH support (as client), CRAM-MD5 only * included pop3 client support, with UIDL and APOP, single drop only * rearranged routing code: - messages will be deleted from spool earlier, as soon as they are delivered - unified online/offline delivery, making it more simple 0.0.13: * ignore set_h_{from,reply_to}_domain if map_h_{from,reply_to}_addresses is set and warn in logs about misconfiguration. * fail if there are no recipients * fixed bug: if called with -t, qualify recipient address with host_name * fixed bug: if called with -bi, no longer wait for message on stdin 0.0.12: * warn if spool file could not be deleted (Thanks to Alberto González Palomo) * fixed bug: set len for getsockname * fixed bug: set local_net_routes to NULL if there is no local net (noted by Frank Schnekenbuehl) * say 'mail queue is empty' if mail queue is empty (Thanks to Frank Schnekenbuehl) * fixed bug: setegid in local.c (was noted by both Michael Piefel and Alberto González Palomo) 0.0.11: * if Bcc: headers have been removed (-t option), and there is no To: or Cc: header,an empty Bcc: header will be created (RFC 822 compliance!) * fixed bug: if rcpts are given on command line To: headers were created, even if they already existed. This caused Bcc: recipient addresses to be revealed if they were given on the cmd line. Now a To: header is only created if there is no To:, Cc: or Bcc: header. Thanks to Richard Clamp for pointing this out. * fixed bug: segfault when -d option was given without arguments * fixed bug: segfault when configuration file not found 0.0.10: * removed -g option from Makefile * fixed bug: -odq did not work, was broken in some earlier version * addresses with leading '\' will not be expanded any further in aliases * pipe transport implemented * alias support implemented. * changed permissions for queue runs again: got to be root, mail or in group trusted. * some configuration parameters can be read from files * internal changes in routing logics/deliver code, preparing for aliases support. * Gregor Hoffleit sent another patch: use liblockfile if available (Debian!) and DESTDIR will be used. Also updated the NEWS file. Thanks again! * define fdatasync to fsync if not available. * lookup.c includes sys/types.h, some environments need this * fixed bug in RFC 822 parsing: name in brackets after address caused problems. Thanks to David Maslen. * values in tables without leading spaces 0.0.9: * anyone in group 'trusted' is now allowed to do queue runs. Thanks to Alberto Gonzalez Palomo for the suggestion. * changed umask for spool writing to 026. * removed silly 'no rcpt domain for this route' message * there is now a mailing list (see http://www.innominate.org/mailman/listinfo/masqmail) * Gregor Hoffleit sent a patch to make masqmail work with mutt (and balsa and any other MUA that uses the mutt libs): it now supports '--' in options. Thanks! * accept_message() supports flag ACC_NO_RECVD_HDR (but this is not used in masqmail). * accept_message() is no longer responsible for queuing, makes it easier to recycle the code for other projects (eg. jpilot-Mail) 0.0.8: * added a FAQ page. * removed all warnings, at least for egcs. Output of make looks pretty now ;-) * added allowed_mail_locals and not_allowed_mail_locals options for routes. * implemented folding und unfolding of headers (but currently used for the Received: header only). * corrected docs: should be 'online_detect', NOT 'detect_online'. * mailq now gives information about the time mails spent in the queue, the message size and the received host. * added allowed_rcpt_domains option for routes. * increased buffer size to 1024 for SMTP responses when delivering. * fixed minor bug: slash in unquoted strings in conf parsing was not allowed. 0.0.7: * fixed a bug in smtp_out.c: sock was tested before it was initialized. * fixed a bug in the configuration code: for statements in two adjacent lines, the second was not recognized. 0.0.6: * rewrote part of the configuration parsing code because it caused problems with reading config statements on multiple lines. * added a LF after each mail local mail spool file, as this seems to be required for some MUAs and especially cucipop when it reads mails. Otherwise mails seem to be concatenated. Thanks to Dale Perkel for pointing this out. 0.0.5: * added expand_h_sender_domain option (boolean, default: true) because some clients use the Sender: address as the sender address (though it should be the From: address). * changed configure script to better recognize whether libresolv should be linked or not. * fixed a nasty bug: if masqmail -q was called (or qo and a mail was not delivered), the headers were lost! Problem was an additional LF after received_host in the spool file. 0.0.4: * 'From' hack is now a 'From ' hack. * configure now accepts options --with-logdir=LOGDIR and --with-spooldir=SPOOLDIR. * the directories /var/masqmail and /var/spool/masqmail will now be created with make install; user and group will be set appropriately * configure now accepts options --with-user=USER and --with-group=GROUP * dove into autoconf: configure now recognizes libc5 and links with libresolv only for libc6 and defines getline for libc5 * fixed timeout code when sending. This was broken in some earlier version. 0.0.3: * fixed bug in spool write code: rcpt address was written incorrectly to spool file under some circumstances (with a LF). * added methods for online detection (file and mserver) and added code to deliver immediately when mail is received at online time. * too many changes to list: rearranged routing code, unified smtp deliveries to the local net with online deliveries, so now route configurations can be used for the local net. Also multiple messages per connection for the local net possible. And reduced code size. * fixed bug: if server does not use neither the esmtp size extension nor pipelining, output after MAIL FROM was not flushed. So MM waited forever for a response... 0.0.2: * fixed bug: euid was not set properly for local delivery * when debugging, it does not write the whole message to the log any more. * added 'From' hack * qualified address for return path and recipients is now required if not accepted locally, if locally accepted the addresses will be qualified with host_name. (Thereby fixed a seg fault bug) * added -i option (same as -oi) * added more header rewriting (set_ and map_ options) * fixed bug: potential seg fault when writing spool files because it was not read properly * multiple messages per connection now also if mail is sent directly (same for local_nets is still missing, but I will use routes for these anyway in the future) * the queue will now be read in random order * implemented multiple messages per connection (but only online and if mail_host is defined) * implemented rewriting of local parts in return path for online delivery * domain matching is no longer case sensitive (had to define _GNU_SOURCE so that I could use FNM_CASEFOLD for fnmatch) * added do_correct_helo option for routes * fixed bug: corrected retrying hosts if one failed (connect.c). 0.0.1: * fixed bug: seg fault when delivering online directly and there was more than one rcpt to a single host. * fixed bug: if mail was succesfully delivered in online mode to all rcpts, and if there were additional (local) rcpts for which the mail was not yet delivered, the mail was deleted from spool. * rearranged smtp_out.c to prepare for multiple messages per connection * log now shows the real host a message is sent to by SMTP (previously it was the one looked for, now it is the one that was found by DNS) * added NOOP, HELP and not recognized replies in smtp_in * fixed bug: forgot to close dup_sock in accept_connect (listen.c) * can now list the queue with the -bp option or when called as mailq * debug_level is now configurable and -d option added * corrected rfc821 address parsing and rearranged code 0.0.0: * initial release