120071130 version: netqmail 1.06
220071130 legal: qmail-1.03 is now in the public domain
320051103 doc: dot-qmail.9 updated for changed (19980613) conf-patrn default, tnx ADM
420040121 version: netqmail 1.05
520040121 code: qmail-smtpd is protected from exceedingly long (eg 2GB)
6         header lines
720040121 code: qmail_lspawn, qmail-newmrh, qmail-newu, and qmail-rspawn
8         are protected from misbehaving on hosts where the size of an
9         integer is not the same as the size of a character pointer
10         (eg 64 bit hosts with 32 bit ints)
1120031027 version: netqmail 1.04.
1220031027 doc: INSTALL points to http://lifewithqmail.org/lwq.html
1320031027 doc: qmail.7 identifies installation as netqmail and points to
14         http://qmail.org/
1520031027 doc: qmail-queue.8 adds explanation of $QMAILQUEUE
1620031027 doc: qmail-log.5 adds reference to errors from $QMAILQUEUE script
1720031027 doc: FAQ also points to http://cr.yp.to/qmail/faq.html and
18         http://qmail.org/
1920031027 code: qmail-smtpd identifies itself as netqmail
2020031027 code: if $QMAILQUEUE is set, it's invoked instead of qmail-queue
2120031024 code: changed errno from int to #include.
2220031024 code: fixed .qmail parsing bug.
2320031024 code: recognize 0.0.0.0 as a local address.
2420031024 code: sendmail's -f flag now overrides environment variables.
2519980615 version: qmail 1.03.
2619980614 doc: eliminated BIN.setup in favor of a web page.
2719980614 code: added other auto* to qmail-showctl output.
2819980614 doc: added pointer to immhf.html in qmail-header.5.
2919980614 doc: added note to TEST.receive about SMTP command format.
3019980614 doc: added FAQ 5.6 on qmail-qmqpd.
3119980614 code: removed unused variables in idedit.c.
3219980613 code: changed conf-patrn to 002.
3319980613 doc: moved SENDMAIL lower in INSTALL.
3419980612 code: added install-big.
3519980612 code: added BIN.Makefile.
3619980612 doc: added BIN.README, BIN.setup.
3719980612 code: switched to new install.
3819980611 code: added idedit.
3919980611 doc: added FAQ 1.3 on $QMAILMFTFILE.
4019980611 doc: used bouncesaying in FAQ 5.5.
4119980611 code: added except.
4219980611 code: added bouncesaying.
4319980611 code: allowed unbracketed IP addresses in dns_ipplus() and
44         dns_mxip().
4519980611 code: allowed spaces after colon in non-bracketed addresses in
46         qmail-smtpd.
4719980611 doc: cleaned up UPGRADE.
4819980528 bug: qmail-smtpd skips first character in rcpthosts() call.
49         tnx NND. impact: qmail-smtpd crashes on empty address; and it
50	 allows relaying to ""@any.host. fix: use addr.s.
5119980515 doc: expanded flock discussion in INSTALL.mbox.
5219980515 doc: eliminated flock warning from INSTALL.maildir.
5319980515 doc: split REMOVE.binmail out of INSTALL.
5419980515 doc: split REMOVE.sendmail out of INSTALL.
5519980515 doc: split TEST.deliver and TEST.receive out of INSTALL and
56         UPGRADE.
5719980515 doc: integrated INSTALL.boot into INSTALL.
5819980515 code: cleaned up final output in qmail-qmqpd.c.
5919980514 doc: updated procmail notes in INSTALL.mbox. tnx JRM.
6019980514 doc: changed FAQ 4.4 to point to INSTALL.mbox for procmail.
61         tnx JRM.
6219980514 code: separated HELO and EHLO; single-line response for HELO.
63         tnx to various people.
6419980430 version: qmail 1.02.
6519980430 doc: updated SECURITY.
6619980430 doc: fixed FAQ 4.9. tnx KB.
6719980430 code: changed quote2() to avoid quoting <>.
6819980429 code: changed quote_need() to quote empty local parts. tnx HHO.
6919980428 doc: added status notes to INSTALL and UPGRADE.
7019980428 code: skip setting environment in sendmail.c if PROTO is set.
7119980428 code: eliminated recipientmap.
7219980428 code: added virtual users to qmail-send.c. tnx RN.
7319980428 code: eliminated domain from rewrite() in qmail-send.c.
7419980428 code: added binm1, binm1+df, binm2, binm2+df, binm3, binm3+df.
7519980428 doc: eliminated most Mailbox references from INSTALL, UPGRADE.
7619980428 code: added config-fast.
7719980428 code: renamed qmail-config as config.
7819980428 code: supported QMAILMFTFILE in qmail-inject.c.
7919980428 code: recognized Mail-Followup-To in hfield.c.
8019980428 code: replaced rwrecip() with rwappend() in qmail-inject.c.
8119980428 code: cleaned up doheaderfile() in qmail-inject.c.
8219980426 code: eliminated -type test from qmail-qstat to speed it up.
83         tnx FT.
8419980421 doc: eliminated remove-rcpthosts comments from FAQ.
8519980421 doc: updated FAQ 4.3 to point to Russ Allbery's FAQ.
8619980421 doc: took account of /var/qmail/boot in INSTALL, UPGRADE, and
87         INSTALL.vsm.
8819980421 code: added /var/qmail/boot, with home, home+df, proc, proc+df.
8919980421 doc: skipped make and make man in INSTALL.
9019980420 doc: cleaned up mbox description in SENDMAIL.
9119980420 code: changed QMQP port to official port 628.
9219980402 doc: updated qmsmac references to fastforward.
9319980402 doc: replaced qmail-upgrade man page with doc/SENDMAIL.
9419980402 code: added qmqpservers output to qmail-showctl.
9519980402 code: added qmail-qmqpd.
9619980402 code: added qmail-qmqpc.
9719980304 code: eliminated del_saywhynoexit in qmail-send.c.
9819980304 code: eliminated concurrencynodel in qmail-send.c.
9919980222 code: added status() to qmail-send.c.
10019980222 code: added concurrencyused to qmail-send.c.
10119980128 doc: added note to qmail-getpw.9 about ETXTBSY.
10219980127 code: eliminated err_seenmail() in qmail-smtpd.c. tnx PO.
10319980126 doc: used $DEFAULT in FAQ where possible.
10419980126 code: added DEFAULT in qmail-local.
10519980126 code: added -/ to qmail-pw2u.
10619980126 code: revamped qmeopen() as qmesearch() with more sensible
107         semantics, separating dash from ext cleanly.
10819980126 code: split qmeexists() out of qmeopen() in qmail-local.c.
10919980126 code: introduced safeext in qmail-local.c.
11019980126 code: changed ~alias to mode 2755, to put files into group
111         qmail rather than group nofiles under System V.
11219980126 doc: switched to /var/qmail/rc in INSTALL*, UPGRADE, FAQ.
11319980126 code: added rc.
11419980119 doc: added .qmail creation warning to condredirect.1.
11519980118 code: made auto_uids.c creation atomic in Makefile. tnx HHO.
11619980118 doc: added PIC.*.
11719980117 portability problem: Solaris 2.5.1 incorrectly converts
118         O_NDELAY into O_NONBLOCK for sockets, so that ndelay_off()
119	 fails to undo ndelay_on(). impact: none, since all the network
120	 readers here use select() via timeoutread(). fix: use
121	 O_NONBLOCK if it is defined.
12219980115 code: reformatted qmail-qmtpd.c.
12319980115 doc: changed tcpcontrol references in FAQ.
12419980115 doc: documented morercpthosts in qmail-qmtpd.9.
12519980115 code: eliminated unused datetime in qmail-qmtpd.c.
12619980115 code: eliminated sigalrm() in qmail-qmtpd.c.
12719980115 code: used rcpthosts() in qmail-smtpd.c, qmail-qmtpd.c.
12819980115 code: introduced rcpthosts.c.
12919980115 code: added morercpthosts.cdb support to qmail-showctl.
13019980115 code: added morercpthosts support to qmail-showctl.
13119980115 code: do_lst now returns file-exists in qmail-showctl.
13219980112 doc: documented morercpthosts in qmail-smtpd.9.
13319980112 code: added qmail-newmrh.
13419980112 code: used commands.c in qmail-popup.
13519980112 code: used commands.c in qmail-pop3d.
13619980112 code: introduced fakehelo in qmail-smtpd.
13719980112 code: moved flagbarf setting out of bmfcheck().
13819980112 code: allowed more address misformatting in qmail-smtpd.
13919980112 code: eliminated qmail@pobox.com help address in qmail-smtpd.
14019980112 code: reorganized qmail-smtpd.
14119980112 code: reformatted qmail-smtpd.
14219980112 code: used commands.c in qmail-smtpd.
14319980112 code: switched from 0 to "" for no arg in commands().
14419980112 code: added commands.c.
14519971230 doc: added -s to FreeBSD commands in INSTALL.ids. tnx TM.
14619971224 doc: added pointer to qmail pictures in README.
14719971223 doc: added note in FAQ about qmail-pop3d using maildir.
14819971219 code: added HOST2, HOST3, HOST4.
14919971219 code: renamed extx as x in qmail-local.c.
15019971219 doc: partitioned qmail-command.0.
15119971219 doc: updated FAQ 4.3 to point to newer majordomo patches.
15219971219 doc: eliminated qlist2 from FAQ.
15319971219 doc: eliminated qlist discussion from SECURITY.
15419971219 code: moved qlist, qlist2 to separate package.
15519971213 doc: added FAQ 4.10 on qmail-users generally.
15619971213 doc: added FAQ 4.9 on dealing with NFS outages.
15719971031 doc: added Linux and FreeBSD commands to INSTALL.ids. tnx TM.
15819971026 doc: added note about smtplf in qmail-smtpd.8. tnx S2S.
15919971014 doc: some tweaks to THOUGHTS.
16019971012 doc: used MAILER-DAEMON in UUCP example in INSTALL.
16119971003 code: eliminated dataline and getln() from qmail-remote.c.
16219971003 code: revamped blast() in qmail-remote.c.
16319971002 doc: added FAQ entries for .forward and /etc/aliases.
16419971002 doc: rewrote INSTALL.mbox and INSTALL.vsm.
16519971002 doc: renamed INSTALL.qsmhook as INSTALL.vsm.
16619971002 doc: emphasized the qmail-popup argv0 in FAQ.
16719971001 doc: added dot-forward note to BLURB3.
16819971001 doc: added more configuration notes to qmail-upgrade.9.
16919971001 doc: added note in INSTALL.qsmhook about dot-forward.
17019970930 code: token822_parse() now supports backslash as a quoting
171         character in atoms.
17219970929 doc: suggested symbolic links in INSTALL.mbox.
17319970925 doc: added note to INTERNALS about bounce stability.
17419970925 doc: added section to THOUGHTS discussing CNAME lookups.
17519970925 code: qmail-remote no longer does CNAME lookup on sender. tnx
176         C2F.
17719970923 portability problem: under SCO OSR5, splogger needs socket
178         libraries. impact: couldn't compile. fix: socket.lib. tnx RB.
17919970906 portability problem: under RISC/OS, Mail invokes sendmail -bm.
180         impact: can't send mail using Mail on RISC/OS. fix: ignore -bm.
181	 tnx NW.
18219970813 code: implemented databytes in qmail-qmtpd.
18319970813 code: implemented databytes. tnx M4S for sample code.
18419970813 code: replaced execvp() with execv() for sh in qmail-local.
18519970813 doc: said in qmail-control.9 that recipientmap allows comments.
18619970813 code: used strerr in qmail-local.c.
18719970813 code: changed timeoutread(), timeoutwrite() interface.
18819970813 code: eliminated shutdown() in timeoutread(), timeoutwrite().
18919970813 code: revamped I/O in qmail-smtpd.c.
19019970813 code: used timeoutread(), timeoutwrite() in qmail-smtpd.c.
19119970813 code: simplified getcontrol() logic in qmail-remote.c; some
192         out-of-memory messages are now cannot-read-control messages.
19319970813 code: eliminated scan_nbblong().
19419970813 code: reformatted qmail-remote.c.
19519970813 code: renamed flaganyrecipok as flagbother in qmail-remote.c.
19619970813 code: integrated status report into quit() in qmail-remote.c.
19719970813 code: revamped smtpcode() in qmail-remote.c.
19819970813 code: added flagcritical in qmail-remote.c. eliminates
199         possible-duplicate warning if dot has not yet been sent.
20019970813 code: revamped I/O in qmail-remote.c.
20119970813 code: quit immediately after sending QUIT in qmail-remote.c.
20219970813 code: made many more globals in qmail-remote.c.
20319970813 code: switched qmail-remote.c from subfdin to home-grown.
20419970813 code: switched qmail-remote.c from subfdout to subfdoutsmall.
20519970813 code: added LAST support to qmail-pop3d.
20619970812 code: changed qmail_close() success return from 0 to "".
20719970812 code: revamped I/O in qmail-qmtpd.c.
20819970812 code: added qmail-tcpok.
20919970812 code: used strerr in maildirmake.c.
21019970812 code: reformatted maildirmake.c.
21119970812 code: printed qp in condredirect.c.
21219970812 code: printed qqx in condredirect.c.
21319970812 code: revamped I/O in condredirect.c.
21419970812 code: reformatted condredirect.c.
21519970812 code: used strerr in preline.c.
21619970812 code: revamped I/O in preline.c.
21719970812 code: reformatted preline.c.
21819970812 code: printed qp in forward.c.
21919970812 code: printed qqx in forward.c.
22019970812 code: revamped I/O in forward.c.
22119970812 code: used strerr in forward.c.
22219970812 code: reformatted forward.c.
22319970812 code: used strerr in predate.c.
22419970812 code: forced failure in qmail-qmtpd if no recipients; saves
225         time for qmail-send.
22619970812 code: added smtpd() to sendmail.c.
22719970812 code: added mailq() to sendmail.c.
22819970812 code: added die_usage() to sendmail.c.
22919970812 code: reformatted sendmail.c.
23019970812 code: used byte_zero() in qmail-popup.c.
23119970812 code: reformatted qmail-popup.c.
23219970812 code: eliminated unused header files in qmail-popup.c.
23319970812 code: changed I/O system in qmail-popup.c to match qmail-pop3d.
23419970812 doc: pointed people to the mailing list in INSTALL and UPGRADE.
23519970810 code: added TXTBSY check to qmail-getpw.c. this gives vendors
236         the opportunity to make getpwnam() reliable.
23719970810 code: moved non-deleted messages from new/ to cur/ in
238         qmail-pop3d. tnx to various people.
23919970810 code: introduced list() in qmail-pop3d.c.
24019970810 code: reformatted qmail-pop3d.c.
24119970810 code: merged dataline and newname into line in qmail-pop3d.c.
24219970810 code: chopped filenames in qmail-pop3d at colons for UIDL. tnx
243         to various people.
24419970810 code: eliminated printint(), printlong() in qmail-pop3d.c.
24519970810 code: revamped I/O in qmail-pop3d.c.
24619970810 code: used timeoutread(), timeoutwrite() in qmail-pop3d.c.
24719970810 code: eliminated die_prot() in qmail-pop3d.c.
24819970810 code: eliminated unused header files in qmail-pop3d.c.
24919970810 code: switched qmail-pop3d to use maildir.c. tnx MD.
25019970809 code: added uid/gid printing to qmail-showctl. tnx PGF.
25119970808 code: switched control.c from scan_nbblong to scan_ulong.
25219970808 code: cleaned up wait_pid to use waitpid() when possible, and
253         to support at least one extra child otherwise.
25419970807 code: in qmail-smtpd, treat long envelope addresses as a syntax
255         error, instead of waiting for qmail-queue to reject them.
25619970803 code: changed condredirect, forward, qlist, qmail-inject,
257         qmail-local, qmail-qmtpd, qmail-send, qmail-smtpd, qreceipt for
258	 new qmail_close() interface.
25919970803 code: revised qmail_close() to handle qmail-queue exit codes.
26019970802 doc: documented SMTP-related exit codes in qmail-queue.8.
26119970802 doc: documented qmail-queue exit codes in qmail-queue.8.
26219970802 code: revamped qmail-queue exit codes.
26319970802 doc: noted linking restrictions in qmail-queue.8.
26419970802 doc: rewrote INSTALL.mbox.
26519970802 doc: split INSTALL.maildir off of INSTALL.mbox.
26619970802 code: added /var/qmail/doc/ creation to qmail-hier.
26719970802 doc: added ezmlm note to FAQ.
26819970802 doc: replaced qlist blurbs with ezmlm blurbs in BLURB*.
26919970802 doc: added various notes to qmail-start.9.
27019970728 doc: eliminated RFC*.
27119970714 doc: added daemontools notes to FAQ.
27219970714 code: eliminated ESMTP parameter syntax checking.
27319970701 doc: changed ``forwarded'' to ``resent'' in qmail-header.5.
27419970629 code: reformatted constmap.c.
27519970628 code: changed straynewline() message in qmail-smtpd.c to point
276         to http://pobox.com/~djb/smtplf.html. tnx RDM.
27719970609 doc: added preline to vacation example in dot-qmail.9. tnx C2S.
27819970421 code: cleaned up slurpclose to handle interrupts.
27919970421 code: set qmail-popup to mode 711. tnx MD.
28019970421 doc: fixed qmail-local -n example in dot-qmail.9.
28119970415 version: qmail 1.01.
28219970414 doc: tightened up qmail-upgrade.7.
28319970414 code: rewrote rewrite().
28419970414 code: implemented recipientmap. suggested by RDM.
28519970414 doc: auto-configured qmail home directory in qmail-control.5,
286         qmail-newu.8, qmail-pw2u.8, qmail-start.8, qmail-users.5.
28719970414 port: Solaris needs socket libs for gethostname. impact: can't
288         compile under Solaris. fix: use socket.lib for qmail-local.
28919970412 code: introduced stralloc_starts.
29019970412 code: introduced str_equal.
29119970412 code: introduced str_start.
29219970412 code: introduced byte_equal.
29319970412 code: made an optional aliasempty arg for qmail-start.
29419970412 code: made an aliasempty arg for qmail-lspawn.
29519970412 code: changed ALIAS_EMPTY to an arg for qmail-local.
29619970412 port: UnixWare returns >0 for SIOCGIFCONF. impact: ipme fails
297         under UnixWare. fix: check for >=0, not =0. tnx JD.
29819970412 port: DGUX does not have ranlib. impact: can't compile under
299         DGUX. fix: added dgux line to make-makelib. tnx HWM.
30019970412 code: changed maildir library to skip any filename beginning
301         with dot. tnx SP.
30219970412 doc: added FAQ entry about aliases with dots.
30319970412 doc: clarified in qmail-inject.8 that default envelope sender
304         is the same as _default_ From address.
30519970411 code: renamed qmail-makectl as qmail-config.
30619970411 code: renamed qmail-alias as qmail-local.
30719970411 code: switched from signal library to sig library.
30819970411 code: switched from qqtalk library to qmail library.
30919970411 code: switched from getline library to getln library.
31019970411 code: massive library cleanups.
31119970411 code: revamped autoconfiguration system.
31219970411 code: revamped configuration interface.
31319970411 code: eliminated qmail-home.
31419970411 code: eliminated tokenize.
31519970220 qmail 1.00.
31619970219 change: various documentation tweaks.
31719970218 change: updated THOUGHTS.
31819970218 change: talked about SPAWN_NUMD in FAQ. tnx EC.
31919970210 change: noted in maildir.5 that readers should skip any name
320         starting with a dot. tnx SP.
32119970209 change: added note to splogger.8 about reliability. tnx BT.
32219970209 change: added section to FAQ on slow sendmail switch. tnx BT.
32319970206 change: added section to FAQ about dtcm. tnx PJG.
32419970206 change: tweaked maildir.5.
32519970201 change: added MH spost note to FAQ. tnx TU.
32619970131 change: reorganized FAQ.
32719970131 change: added web references to FAQ.
32819970124 change: tweaked qmail-upgrade man page.
32919970120 qmail 0.96, gamma.
33019970120 change: removed various try* in auto-configuration.
33119970120 bug: qmail-inject fails to quote argument addresses. impact:
332         addresses containing special characters could be misinterpreted
333	 or rejected. tnx C2F. fix: use quote2().
33419970120 portability problem: ESIX puts syslog() and openlog() into
335         -lgen. impact: can't compile under ESIX. fix: put -lgen into
336	 LIBS for unix_sv. tnx RN.
33719961221 qmail 0.95, gamma.
33819961218 change: added various try* to TARGETS. tnx SA.
33919961216 change: clarified in qmail-send.8 that virtualdomains does not
340         apply to domains listed in locals.
34119961216 change: slurpclose() now closes fd on out-of-memory. makes it
342         more widely applicable.
34319961215 change: replaced elm instructions in INSTALL.mbox with an
344         explanation of what source change to make. tnx AB.
34519961212 portability problem: under NEWS-OS, time_t needs sys/types.h.
346         impact: couldn't compile under NEWS-OS. fix: include
347	 sys/types.h in predate.c. tnx TU.
34819961211 change: used timeoutread, timeoutwrite in remoteinfo(). tnx
349         REB.
35019961210 portability problem: apparently some SGIs produce a systype of
351         irix64. impact: couldn't compile on those systems. fix: handle
352	 irix64 in make-cmds. tnx M3S.
35319961208 change: added note to maildir2mbox.1 about mbox locking.
35419961208 qmail 0.94, gamma.
35519961207 change: added QMAILDEFAULTDOMAIN, QMAILDEFAULTHOST,
356         QMAILIDHOST, QMAILPLUSDOMAIN. tnx BTW.
35719961206 cleanup: readsubdir() protects itself against name overflow,
358         rather than depending on caller.
35919961204 change: changed FAQ 7.3 to prohibit fixup relaying.
36019961203 change: added note to FAQ about possibly having to put a space
361         before "$SENDER" for uux. tnx FW.
36219961202 change: added FAQ entry on QUEUE_EXTRA.
36319961202 change: added FAQ entry on backups. tnx DP.
36419961202 change: added note to INSTALL.mbox about qpopper. tnx VV.
36519961201 change: replaced logger with splogger in FAQ 5.1. tnx FPL.
36619961201 change: used netmask example for tcpcontrol in FAQ. tnx FPL.
36719961201 change: added note to README about the mailing list. tnx FPL.
36819961201 change: documented rcpthosts wildcards. tnx RN.
36919961201 change: added note to FAQ about making mailx use datemail.
37019961201 change: added datemail. function requested by several people;
371         approach suggested by TG.
37219961201 change: added predate.
37319961129 change: added QUEUE_EXTRA, QUEUE_EXTRALEN.
37419961129 change: qmail-remote bounces messages with partial final lines.
37519961129 change: added atomcheck() to quote crappy atoms.
37619961129 change: revised atomok() to let atoms deal with more crap.
37719961127 change: qmail-send adds note to deferral if flagdying. tnx TG.
37819961127 change: split off maildirbounce, maildir2qmtp, and maildir2smtp
379         into a separate serialmail package.
38019961126 change: eliminated beta success reports from README.
38119961124 change: forced res_query() return value to fit inside incoming
382         buffer size. allegedly there are buggy versions of res_query()
383	 that don't guarantee this.
38419961122 qmail 0.93, gamma.
38519961122 change: allowed empty arg list in forward.
38619961121 change: qmail-smtpd now uses unknown (like qmail-qmtpd) rather
387         than dying if environment variables are not set.
38819961121 cleanup: reorganized helo handling in qmail-smtpd.c.
38919961121 cleanup: eliminated newfield_rec.
39019961121 cleanup: introduced DATE822FMT. used it in received.c.
39119961121 cleanup: introduced received.c. used it in qmail-qmtpd.c,
392         qmail-smtpd.c.
39319961121 change: qmail-smtpd now generates a new timestamp for each
394         message. tnx PJG.
39519961121 cleanup: used stralloc in newfield.
39619961121 cleanup: eliminated newfield_cc.
39719961121 change: eliminated hfield_mort().
39819961119 change: added 2-minute damper on tcpto.
39919961118 change: wrote defaults for readfile controls in showctl.
40019961117 change: control_readfile() now allows comments and blank lines.
401         tnx LW.
40219961117 change: qmail-start sets logger gid to GID_NOFILES.
40319961117 bug: ipme_init() uses a fixed-length buffer for SIOCGIFCONF.
404         impact: qmail-smtpd and qmail-remote will die if there are too
405	 many local IP addresses. tnx MD. fix: ipme_init() now
406	 dynamically allocates space, up to 200000 bytes, as long as
407	 SIOCGIFCONF keeps failing. note that this is a very widespread
408	 bug; it's in amd, exim, mrouted, named, nntpd, rarpd, sendmail,
409	 tcpdump, timed, xntpd, and probably dozens more programs.
41019961117 portability problem: on BSD 4.4 and various other systems,
411         SIOCGIFCONF will truncate long lists and return success.
412	 impact: on those systems, qmail-smtpd and qmail-remote will
413	 miss some local IP addresses if there are too many. fix:
414	 ipme_init() now checks whether there is enough space left in
415	 the buffer for another ifreq, plus 64 bytes JIC. yuck.
41619961117 change: ipmeprint now flushes only at end.
41719961117 cleanup: introduced subfdinsmall. used it in qmail-clean.c,
418         qmail-qmtpd.c.
41919961117 cleanup: introduced subfdoutsmall. used it in hostname.c,
420         printbreak.c, printnumd.c, printsplit.c, qmail-alias.c,
421	 qmail-clean.c, qmail-getpw.c, qmail-qmtpd.c, maildir2smtp.c,
422	 maildir2qmtp.c.
42319961117 change: moved subfderr buf up to 256 characters.
42419961117 change: added maildirbounce. tnx MD, TG.
42519961116 change: maildir2smtp and maildir2qmtp now print filenames for
426         permanent bounces. tnx MD.
42719961116 change: in SECURITY, ``eleven most recent sendmail security
428         holes, five'' -> ``twelve most recent sendmail security holes,
429	 six.''
43019961116 change: rewrote qmail-showctl more professionally.
43119961115 change: added several tests to find-systype.sh. this will
432         affect many systypes.
43319961115 change: qmail-alias now treats most exit codes as soft errors.
43419961115 change: revamped exit codes everywhere for 0, 100, 111.
43519961114 change: added splogger.
43619961114 portability problem: Sun's cc recognizes sqrt() as a builtin,
437         even if math.h is not included and sqrt is defined statically.
438	 yuck. impact: when qmail is compiled with Sun's cc, next-retry
439	 times are all screwed up. tnx PJG. fix: my sqrt() is now called
440	 squareroot().
44119961114 change: dns_ip() now recognizes [1.2.3.4]. tnx DS.
44219961112 change: enabled x option in sendmail. tnx DS.
44319961111 change: added SIGHUP handling to qmail-send. suggested by many
444         people.
44519961111 bug: control routines returned incorrect codes for some
446         out-of-memory conditions. impact: none; conditions cannot
447	 happen with sane control files. fix: return -1.
44819961111 change: added SIGALRM handling to qmail-send. suggested by many
449         people.
45019961111 change: eliminated flagnobreak (-b/-B) from qmail-pw2u.
45119961111 change: qmail-getpw now allows hyphens inside usernames.
45219961111 change: added users/append to qmail-pw2u. tnx G2A.
45319961111 change: added badmailfrom to qmail-smtpd. requested by several
454         people.
45519961110 change: replaced elm instructions in INSTALL.mbox with a simple
456         note to set incomingfolders in elm.rc. tnx AB.
45719961110 change: replaced ``owner hack'' with ``variable envelope
458         return paths'' throughout the documentation. tnx DS.
45919961110 change: qmail-setup installs man pages as well as cat pages.
46019961110 change: renamed qmail-newuser as qmail-newu. tnx G2A.
46119961110 change: renamed qmail-pw2user as qmail-pw2u. tnx G2A.
46219961105 change: set path in INSTALL.boot. tnx TJH.
46319961105 change: noted in qmail-smtpd.8 that addresses without @ are
464         always allowed through.
46519961105 change: indicated at various spots in FAQ that rcpthosts has to
466         be updated. suggested by various people.
46719961105 change: indicated at various spots in FAQ that qmail has to be
468         restarted. suggested by various people.
46919961029 change: fixed typo in maildir2qmtp.1. tnx BG.
47019961026 qmail 0.92, gamma.
47119961026 bug: qmail-getpw did not 0-terminate usernames. tnx CF. impact:
472         qmail-getpw would crash on some systems, deferring local
473	 deliveries. fix: 0-terminate.
47419961025 cleanup: renamed auto-hassgprm.h to hassgprm.h.
47519961025 cleanup: renamed auto-hassgact.h to hassgact.h.
47619961024 change: replaced qmail-alias.0 with dot-qmail.0 in
477         INSTALL.alias. tnx MW.
47819961022 change: switched uids as early as possible in qmail-start.c.
47919961022 change: in SECURITY, ``ten most recent sendmail security
480         holes, five'' -> ``eleven most recent sendmail security holes,
481	 five.''
48219961022 change: quote_need() now treats non-ASCII characters the same
483         way as control characters.
48419961022 change: added version and home page to qmail.7.
48519961022 cleanup: introduced slurpclose.c. used it in qmail-alias.c,
486         qmail-lspawn.c.
48719961021 portability problem: AT&T NCR boxes need stdio.h before
488         arpa/nameser.h. impact: dns.c would not compile. fix: include
489	 stdio.h. tnx HS.
49019961021 change: added AIX section to INSTALL.ids. tnx SSB.
49119961021 change: added qmail-pw2user.
49219961020 change: added qmail-pw2user.8.
49319961020 change: qmail-alias now dies soft on EACCES/EPERM for .qmail.
49419961020 change: eliminated root comments from INSTALL.qsmhook.
49519961020 change: various improvements in FAQ.
49619961017 change: added QLX_ROOT.
49719961017 change: renamed hosts in FAQ. tnx SLB.
49819961017 change: in dot-qmail.5, documented envnoathost effects. tnx RN.
49919961017 change: revamped addresses.5.
50019961017 change: added stripvdomprepend() for better bounces. tnx PT.
50119961012 portability problem: under HP-UX 9, can't setgroups() to 65537.
502         impact: couldn't compile under HP-UX 9. fix: use 0 instead of
503	 65537 in chkshsgr.c. tnx HHO.
50419961008 change: added several qlx codes.
50519961008 cleanup: eliminated qlx from qmail-alias.
50619961008 change: qmail-lspawn runs qmail-getpw as UID_PW.
50719961008 change: added qmail-newuser.
50819961008 change: added cdb support to qmail-lspawn.
50919961008 change: integrated cdb.
51019961007 change: added qmail-users.5.
51119961007 change: eliminated usermap.
51219961007 cleanup: switched execvp to execv in sendmail, qmail-lspawn.
51319961007 change: used qmail-getpw in qmail-lspawn.
51419961007 change: renamed LSPAWN_USERLEN as GETPW_USERLEN.
51519961007 change: added qmail-getpw.
51619961007 change: created users subdirectory of CONF_HOME.
51719961007 change: fixed typo in FAQ. tnx J1B.
51819961006 change: replaced subfdout with a small ss in qmail-alias.
51919961006 change: reduced qmail-alias buffer sizes to 1024.
52019961003 change: added note to maildir2smtp.0 about maildirmake. tnx SM.
52119961003 bug: if ipme_init() returned -1, qmail-remote would continue,
522         blindly assuming that all addresses are local. impact: on
523	 systems with too many aliases, all remote deliveries fail. tnx
524	 MD. fix: qmail-remote now dies with temp_oserr() on any result
525	 other than 1.
52619961003 portability problem: all pre-4.9.4 versions of bind barf,
527         badly, on CNAME queries to lame servers. what a crappy system.
528	 even if the resolver doesn't barf, the next name server down
529	 the line may barf. impact: qmail can't get mail through to
530	 domains that are (1) lame and (2) running old versions of bind.
531	 fix: never, ever, do a CNAME query. dns_cname() now does an ANY
532	 query instead. this, like sendmail's analogous procedure, is
533	 unreliable when a CNAME is mixed with other records.
53419961001 cleanup: switched to libfd in qmail-start.c.
53519960929 cleanup: renamed auto-hasmkffo.h to hasmkffo.h.
53619960928 cleanup: reorganized qmail-start.c.
53719960928 cleanup: used libfd in preline.c, qmail-lspawn.c,
538         qmail-popup.c, qmail-rspawn.c, qmail-start.c, qqtalk.c,
539	 qsmhook.c.
54019960928 cleanup: added libfd.
54119960927 change: in SECURITY, ``nine most recent sendmail security
542         holes, four'' -> ``ten most recent sendmail security holes,
543	 five.''
54419960926 change: added tcpcontrol notes to FAQ.
54519960926 change: qmail-smtpd now immediately closes connection, with a
546         warning message dedicated to Solaris, if stray newlines show up
547	 in the incoming data.
54819960926 change: added INSTALL.boot.
54919960926 portability problem: on systems that can handle IP interface
550         aliases (i.e., on sa_len systems), SIOCGIFADDR returns the
551	 primary address for an alias. impact: ipme_init() did not
552	 include alias addresses. fix: ipme_init() avoids SIOCGIFADDR on
553	 sa_len systems; on these systems, the address we want is
554	 already in ifr. tnx DM.
55519960926 change: qmail-alias kills itself if locking takes longer than
556         30 seconds.
55719960926 change: qmail-pop3d no longer moves messages. tnx RS.
55819960924 change: added note to FAQ about descriptors limit. tnx RD.
55919960922 change: open_trunc() now uses 644.
56019960922 change: qmail-setup now does umask(077).
56119960922 change: maildir2mbox now does umask(077).
56219960922 change: moved subfderr buf up to 64 characters.
56319960920 change: in SECURITY, ``eight most recent sendmail security
564         holes, three'' -> ``nine most recent sendmail security holes,
565	 four.''
56619960920 portability problem: init run commands are subject to job
567         control signals under more systems than HP-UX. impact: on some
568	 systems (e.g., Solaris), qmail daemons would be killed. fix:
569	 INSTALL now tells everybody to use csh -cf.
57019960920 change: added queue-run section to FAQ.
57119960920 change: in pine-crashing question in FAQ, added -oem and -oi,
572         so that change will work with the real sendmail too.
57319960919 change: added CNAME section to FAQ. tnx to various people.
57419960919 change: eliminated QQX_EXECHARD and QQT_EXECHARD. this means
575         that all qmail-queue invocation failures are now soft, even
576	 things like EPERM.
57719960919 change: replaced ``No such address'' with ``Sorry, no mailbox
578         here by that name.'' tnx G2A.
57919960919 change: qmail-remote now includes host name in no-such-host
580         messages. tnx G2A.
58119960919 change: replaced ``Temporarily unable to canonicalize address''
582         with ``CNAME lookup failed temporarily.''
58319960918 change: improved an error message in qmail-alias.c. tnx TG.
58419960918 change: added SHELL=/bin/sh to Makefile. tnx JL.
58519960916 change: reorganized INSTALL.ids a bit.
58619960916 change: ``from smtpd'' is now ``from network''.
58719960916 change: SMTPD is now DAEMON.
58819960916 change: qmail-start sets logger uid to UID_LOG. tnx JLH.
58919960916 change: added CONF_USERL.
59019960916 change: iaafmt() now puts a dot on in-addr.arpa.
59119960915 change: added UPGRADE. suggested by several people.
59219960915 change: added qsutil error messages to qmail-log.5.
59319960915 change: qsutil error messages are now alerts.
59419960915 portability problem: on some systems, logger appears to use
595         syslog(pri,buf) instead of syslog(pri,"%s",buf). tnx JC.
596	 impact: logger could barf or crash if fed messages containing
597	 %. an attacker could easily cause a crash, eliminating qmail's
598	 logs. fix: % is no longer considered safe for logs.
59919960912 cleanup: split seek.c into seek_*.c.
60019960912 cleanup: replaced seek_to() with seek_set().
60119960912 cleanup: introduced libseek.a.
60219960907 cleanup: split case.c into case_*.c.
60319960907 cleanup: introduced libcase.a.
60419960907 cleanup: split wait.c into wait_*.c.
60519960907 cleanup: introduced libwait.a.
60619960907 cleanup: renamed auto-haswaitp.h to haswaitp.h.
60719960907 cleanup: split open.c into open_*.c.
60819960907 cleanup: introduced libopen.a.
60919960904 change: added generic pointer to qmail-control.5. tnx HW.
61019960904 change: rewrote rcpthosts section in FAQ. tnx HW.
61119960904 change: added organization section to FAQ. tnx HW.
61219960902 qmail 0.91, gamma.
61319960902 change: control_readfile() can now handle partial lines. tnx
614         JDHB.
61519960902 change: eliminated non-fqdn note from FAQ. next version of
616         tcpserver will use DNS directly.
61719960902 change: qlist now uses NEWSENDER, not SENDER.
61819960902 change: qmail-pop3d no longer obtains a lock. tnx RS.
61919960902 change: put }g on all seds in Makefile.
62019960831 change: noted in qmail-control.5 that comments are not allowed
621         in control files. tnx J2B.
62219960829 change: used double union in alloc.c. tnx ME.
62319960829 change: replaced semicolon with colon for smtproutes port.
62419960829 change: in INSTALL, put make man just before make setup.
62519960829 change: changed a few qmail messages into alerts.
62619960829 cleanup: renamed datetime_gmt as datetime_tai.
62719960829 change: added note to UUCP question that some UUCP software
628         doesn't want preline -f. tnx SB.
62919960829 change: added question 2.4 to FAQ on SLIP/PPP.
63019960828 change: replaced owner- with owner-@host-@[] in qmail-inject.
63119690828 change: replaced owner- with owner-@host-@[] in qmail-alias.
63219960828 change: replaced owner- with owner-@host-@[] in injectbounce().
63319960828 change: replaced owner- with owner-@host-@[] in senderadd() for
634         owner hack.
63519960828 change: qmail-inject -n now prints Return-Path.
63619960825 cleanup: revised ending code in token_addrlist().
63719960825 change: tokenize now uses linelen 0 for unparse.
63819960825 change: if linelen is 0 in token822_unparse, no length limit.
63919960825 change: added LINELEN macro to qmail-inject for unparse.
64019960825 change: token822_unparse now takes linelen argument. (leaving
641         two spaces on the right before linelen.)
64219960824 cleanup: renamed token as token822.
64319960822 portability problem: under NEWS-OS, /bin/mail and /usr/ucb/mail
644         invoke sendmail with -E and -J options. tnx TU. impact:
645	 couldn't send mail with those programs. fix: accept opts,
646	 including _optional_ args. ugh.
64719960821 change: sendmail now quits if invoked as newaliases. tnx TU.
64819960821 portability problem: under NEWS-OS, dirent.h needs sys/types.h.
649         tnx TU. this POSIX violation also appears in some versions of
650	 FreeBSD. impact: couldn't compile under NEWS-OS. fix: include
651	 sys/types.h in direntry.h* and trydrent.c. [sigh]
65219960821 change: added concurrencyremote question to FAQ.
65319960821 change: added chkspawn.
65419960821 change: moved default SPAWN_NUMD up to 120.
65519960818 change: allowed ;port in smtproutes. tnx AL.
65619960818 change: introduced port in qmail-remote.c.
65719960818 change: qmail-queue records qp in Received lines. 2 lines of
658         code. tnx ME.
65919960818 change: in SECURITY, ``seven most recent sendmail security
660         holes'' -> ``eight most recent sendmail security holes.''
66119960818 change: qmail-pop3d now appends an extra blank line to every
662         message, for compatibility with popper. some clients can't
663	 deal with the right thing, unfortunately. tnx FPL.
66419960818 change: added qmail-tcpto.
66519960818 change: eliminated cc -posix for NeXTs. tnx SA.
66619960818 change: eliminated loadfifo. tnx SA.
66719960818 change: integrated auto-configured fifo.c code from SA.
66819960817 change: put SYSDEPS into a more reasonable order.
66919960813 change: indicated possibility of duplication when qmail-remote
670         gets a dead connection after DATA. tnx ME.
67119960813 change: documented qmail-inject environment variables.
67219960813 change: supported per-recipient owner hack in qmail-inject.
67319960813 change: supported per-message owner hack in qmail-inject.
67419960813 change: introduced hackedruser into qmail-inject.
67519960813 change: introduced QMAILRUSER, QMAILRHOST.
67619960812 change: added QMAILINJECT option to allow address-comment form.
67719960812 change: made name-address form the default in qmail-inject.
67819960812 change: added QMAILINJECT options f and m to delete From and
679         Message-ID on input. tnx LL.
68019960812 change: added QMAILINJECT environment variable.
68119960812 change: added QMAILHOST, QMAILUSER, QMAILNAME to override
682         MAILHOST, MAILUSER, MAILNAME. tnx MG.
68319960812 change: added qmail-showctl.
68419960812 portability problem: under Solaris 2.4 and possibly other
685         systems, the linker does not give generic alignment to an array
686	 of 4096 chars. tnx JP. impact: some subset of the programs
687	 would (reliably) die with a bus error; in the Solaris case,
688	 maildir2mbox. fix: redefine space in alloc.c to be aligned.
68919960812 change: qmail-remote no longer does CNAME lookups if there's an
690         artificial SMTP route. tnx ME.
69119960812 change: added flagcname arg to addrmangle() in qmail-remote.
69219960812 cleanup: moved host/relayhost processing earlier in
693         qmail-remote.
69419960812 change: qmail-remote stops before DATA if no RCPTs were
695         successful. tnx JLH.
69619960812 change: rewrote rcpthosts explanation in FAQ.
69719960811 change: added qmail-log.5.
69819960811 change: introduced ALIAS_PATERNALISM. configurability requested
699         by several people.
70019960811 change: eliminated go-writability test for qmeox(). the alleged
701         value of paternalism is nonexistent if nobody even notices
702	 you're doing it.
70319960811 change: in qbiff, changed no-/-allowed to no-/-at-beginning,
704         no-dots-allowed, must-be-nonempty. tnx MD.
70519960811 change: in mbox.5, discouraged mail readers from looking for
706         From_ lines only after blank lines. too much crap in the world.
70719960811 change: added subject line to qreceipt success notices.
70819960811 change: added subject line to qmail-send bounce messages.
70919960811 change: qmail-alias now expects dash arg. this finally gives
710         lspawn complete control over the local -> ~user/.qmail-ext map.
71119960811 change: qmail-lspawn passes dash arg to qmail-alias.
71219960811 change: reorganized qlist acknowledgment format. again.
71319960811 change: documented EXT, EXT2, EXT3, EXT4. tnx BB.
71419960810 change: qmail-makectl now copies locals to rcpthosts. should be
715         a better default. suggested by TK.
71619960805 portability problem: new makefile generator put in tabs again.
717         sigh. impact: couldn't compile under some systems. fix: same as
718	 before. tnx TG.
71919960804 change: added tcpserver instructions to FAQ.
72019960804 change: reorganized FAQ server instructions into a new section.
72119960801 qmail 0.90, gamma.
72219960801 change: qmail-qmtpd now supports rcpthosts, RELAYCLIENT.
72319960731 change: default NUMD is now 29. this prepares for weird systems
724         where getpwnam() needs more than one descriptor (but the
725	 descriptor limit is still 64! ... you never know), and for
726	 possible future getpwnam() replacements.
72719960731 change: popped subfderr buffer up to 32 characters. made sure
728         that everybody flushed subfderr as necessary.
72919960731 change: maildir2qmtp now prints filenames and responses.
73019960731 change: maildir2smtp now prints filenames it's trying and
731         relevant portion of SMTP responses.
73219960731 change: used succwrite() in maildir2smtp, maildir2qmtp.
733         simplifies code quite a bit.
73419960731 change: qmail-remote's blast() checks sooner for write errors.
73519960731 change: added better -e option to sendmail. tnx TG.
73619960731 change: added maildir2qmtp.
73719960730 cleanup: eliminated die_nomem() in maildir2smtp.c.
73819960730 change: dns_cname now pretends that "foo." is a CNAME for "foo"
739	 to give the desired behavior for people who misuse DNS and
740	 violate RFC 822. tnx RN.
74119960730 change: dns_cname now tests for empty names and ] on every
742         loop.
74319960730 change: used LSPAWN_BREAK in qmail-send.c for usermap.
74419960730 change: updated header example in qmail-header.5.
74519960730 change: added printbreak. auto-configured BREAK in dot-qmail.5,
746         qmail-lspawn.7, qmail-send.8, qmail-upgrade.7, qlist2.
74719960730 change: added printnumd. auto-configured NUMD in qmail-send.8,
748         qmail-limits.8.
74919960730 change: added printsplit. auto-configured split in qmail-upq.
75019960730 change: added dot-qmail.5.
75119960730 change: qmail-smtpd now treats HELO as including RSET.
75219960730 change: added moreinfo to qlist usage message.
75319960729 change: improved an error message in qmail-alias.
75419960729 cleanup: merged qmeox(), qmeodx().
75519960729 bug: failure to stat .qmail-owner was not an error. impact: if
756         stat failed temporarily (e.g., because of NFS), .qmail-owner
757	 would be incorrectly ignored, so outgoing message would have
758	 wrong envelope sender. fix: qmail-alias does temp_nfsqmail() if
759	 stat() returns a temporary error.
76019960729 change: added RFCOWNER.
76119960729 change: added qmtpd setup question to FAQ.
76219960729 change: added qmail-qmtpd.
76319960728 change: revamped maildir2smtp error messages.
76419960728 change: revamped maildirwatch error messages.
76519960728 change: revamped maildir2mbox error messages.
76619960728 change: used strerr in maildir_scan().
76719960728 change: used strerr in maildir_chdir().
76819960728 change: introduced strerr.
76919960728 bug: the new tcp-env tried to read from an ndelay socket.
770         impact: TCPREMOTEINFO would always be empty. fix: unset ndelay
771	 in remoteinfo.c.
77219960728 bug: if maildir2smtp saw a permanent failure after MAIL, it
773         failed to do RSET. impact: all further messages would be
774	 rejected at the MAIL stage. fix: maildir2smtp now always does
775	 RSET. tnx JW.
77619960728 cleanup: qmail-alias now applies lowercase and dot-to-colon
777         conversion directly to dashext, leaving everything else alone.
778	 this works since all .qmail access is factored through dashext.
77919960727 portability problem: under NeXTStep, -posix is almost entirely
780         broken. impact: qmail daemons would dump core under NeXTStep.
781	 fix: turn off -posix, except for loading qmail-setup, which
782	 needs mkfifo(); NeXT, bless them, didn't put mkfifo() into the
783	 C library where it belongs. this requires a new make command,
784	 namely loadfifo.
78519960727 change: all characters 33-126 are now considered safe for logs.
786         tnx MD.
78719960727 cleanup: eliminated qp variable from mailforward().
78819960727 cleanup: maildirwatch.c includes headerbody.h.
78919960727 cleanup: eliminated match from maildirwatch.c.
79019960727 cleanup: eliminated code variable from maildir2smtp.c:doit().
79119960727 cleanup: maildir2smtp.c includes scan.h.
79219960727 cleanup: maildir.c includes str.h.
79319960727 cleanup: qmail-popup.c now includes exit.h.
79419960727 cleanup: qmail-pop3d.c now includes exit.h.
79519960727 cleanup: eliminated path from qmail-start.c.
79619960727 cleanup: eliminated birthplusnn from nextretry().
79719960727 cleanup: eliminated r from timeoutconn().
79819960727 cleanup: tcpto.c now includes byte.h.
79919960727 cleanup: spawn.c now declares initialize().
80019960727 cleanup: qmail-lspawn.c now includes str.h, byte.h.
80119960727 cleanup: qmail-inject.c now includes quote.h.
80219960727 change: qmail-check now checks separately for group
803         readability and other readability.
80419960727 bug: maildir2smtp didn't check flagehlo in PIPELINING parsing.
805         impact: a server that said PIPELINING at any point, not just
806	 EHLO, would receive pipelined data. fix: check flagehlo.
80719960727 bug: readsubdir was calling pause(). impact: if a subdirectory
808         was removed, qmail-send would hang. fix: use rs->pause().
80919960727 change: used error_str in qmail-qread.
81019960727 change: qmail-qread now looks for local/remote open errors.
81119960727 cleanup: added warn() in qmail-qread.c.
81219960727 change: qmail-qread now exits 111 for temporary errors.
81319960727 change: used error_str in qmail-setup.
81419960727 change: introduced error_str.
81519960727 change: replaced qmail-check with make check in INSTALL.
81619960727 change: added check target to Makefile.
81719960727 change: replaced qmail-setup with make setup in INSTALL.
81819960727 change: indirected fake targets through do- targets.
81919960727 change: added setup target to Makefile.
82019960727 change: qmail-makectl now makes sure that defaultdomain has
821         at least one dot. e.g., enteract.com -> enteract.com, not com.
82219960726 bug: quote() failed to quote commas. impact: addresses
823         containing commas would not have been quoted correctly for
824	 Return-Path or for SMTP MAIL FROM. fix: quote commas.
82519960726 change: sendmail now mentions qmail-qread, not qmail-mailq.
82619960726 change: qmail-alias now expects ext arg. this eliminates
827         LSPAWN_BREAK from qmail-alias and gives lspawn almost complete
828	 control over the local -> ~user/.qmail-ext transformation. the
829	 exception is that qmail-alias always uses ~user/.qmail,
830	 ignoring ext, if local is the same as user.
83119960726 change: qmail-lspawn passes ext to qmail-alias.
83219960726 change: alloc() now uses up a 4K space before calling malloc().
83319960726 change: ipalloc allocation base is now 10. 100 was silly.
83419960726 change: stralloc allocation base is now 30.
83519960726 change: injectbounce() now supports the owner hack.
83619960726 change: qmail-smtpd no longer requires HELO. tnx K1J.
83719960726 cleanup: replaced makereceived() with dohelo().
83819960726 change: qmail-smtpd is back to 555 for syntax errors.
83919960725 change: qmail-alias now supports the owner hack. tnx to RN for
840         prodding me to look at this problem.
84119960725 change: senderadd() now supports the owner hack.
84219960725 cleanup: split off senderadd().
84319960725 change: added pine-crashing note to FAQ.
84419960725 change: added procmail config.h note to INSTALL.mbox.
84519960725 change: added elm TMPDIR note to INSTALL.mbox.
84619960725 change: added pine.conf note to INSTALL.mbox.
84719960724 change: added fixup note to FAQ.
84819960724 change: qmail-inject now exits 111 for temporary errors.
84919960724 change: qmail-smtpd now appends RELAYCLIENT to incoming
850         recipient domain names.
85119960724 cleanup: moved relayclient out of qmail-smtpd's addrallowed()
852         into caller.
85319960724 change: added rcpthosts wildcards.
85419960724 change: added clean target to Makefile.
85519960723 change: added virtualdomains exceptions.
85619960722 change: added BLURB4.
85719960722 change: added BLURB3.
85819960722 change: eliminated smarthost and localnet.
85919960722 change: incorporated relaymap, contributed by LW. renamed it
860         as smtproutes.
86119960722 change: qmail-popup now supports APOP. suggested by BG, who
862         distributed similar changes.
86319960722 change: qmail-popup now sends APOP timestamp to checkpassword.
86419960722 cleanup: in qmail-popup, split off doanddie().
86519960722 change: qmail-popup now prints APOP timestamp in banner.
86619960722 change: added hostname argument to qmail-popup.
86719960722 cleanup: in qmail-popup, split out() into out(), outflush().
86819960722 cleanup: in qmail-popup, introduced pop3_greet().
86919960721 portability problem: under Unisys SVR4, hostname is not in the
870         usual path. impact: qmail-makectl fails. fix: added hostname
871	 command here, used it in qmail-makectl.
87219960721 portability problem: on some sysctl-based systems, apparently
873         gethostname() doesn't write anything if the output buffer is
874	 too small. it should write a truncated name. impact: if anyone
875	 has a hostname longer than 64 characters, maildirs could get up
876	 to 64 characters of garbage, rather than a truncated hostname.
877	 fix: qmail-alias now does *host = 0 before calling gethostname.
87819960721 change: updated FAQ examples from qsmhook to preline.
87919960721 change: added preline.
88019960721 change: qsmhook now uses signal_init, signal_uninit.
88119960721 change: qsmhook now checks specifically for empty args.
88219960721 change: documented mbox.
88319960721 change: added EXT, EXT2, EXT3, EXT4.
88419960721 change: added LAST response to qmail-pop3d, always returning
885         OK 0. tnx RN.
88619960721 change: added qmail home page to README.
88719960721 change: added HELP response to qmail-smtpd. tnx RN.
88819960720 change: expanded, vertically, the qmail-inject error message
889         for unparseable header fields.
89019960720 change: logo is now dolphin. tnx CEJ.
89119960719 qmail 0.76, beta.
89219960719 change: used LSPAWN_BREAK in qmail-alias for deciding how to
893         handle extensions. this should produce better behavior in the
894	 (unsupported) case that LSPAWN_BREAK is not a hyphen.
89519960719 bug: qmail-smtpd didn't check for null arg on MAIL, RCPT.
896         impact: qmail-smtpd would deref 0 and crash. fix: qmail-smtpd
897	 now gives syntax error on null arg.
89819960719 change: documented UFLINE in qmail-command.8. tnx TG.
89919960718 change: added maildir2smtp.
90019960718 cleanup: introduced maildir.c. used it in maildir2mbox.c,
901         maildirwatch.c.
90219960718 change: added maildirwatch.
90319960718 cleanup: maildir2mbox now sets up pq2 as it is deleting from
904         pq, rather than simultaneously with pq.
90519960718 change: added H_DELIVEREDTO.
90619960718 portability problem: Unisys requires -lsocket -lnsl. impact:
907         couldn't compile under Unisys. fix: added unix_sv section to
908	 make-cmds.sh. tnx TVP.
90919960718 change: added unix_sv section in find-systype. tnx TVP.
91019960717 change: qmail-alias now appends newline if .qmail does not end
911         with a newline. tnx MC.
91219960717 change: qmail-alias now defers delivery for a blank line only
913         if it is the first line of the file. handles user behavior
914	 described by MC of putting many newlines at end of file.
91519960717 bug: qmail-inject looked for dots in user part, not just host
916         part, when deciding whether to use defaultdomain. impact: the
917	 address joe.bloggs@here didn't have defaultdomain added. fix:
918	 qmail-inject now stops at the @.
91919960717 change: updated INSTALL.alias to mention qmsmac.
92019960717 change: syntax error code for SMTP is now 501.
92119960717 change: added -e option to sendmail. tnx TG.
92219960716 change: changed ~alias files to .qmail-local, not .qmaillocal.
923	 suggested by many people.
92419960716 change: redid qmail-alias/qmail-lspawn interface.
92519960716 change: replaced EXTENSION, USEREXT with LOCAL.
92619960716 change: qmail-queue now removes intd, mess upon error, as long
927	 as it doesn't time out. suggested by BB et al.
92819960716 change: added flagmademess, flagmadeintd to qmail-queue.c.
92919960716 cleanup: changed todofd to intdfd in qmail-queue.c.
93019960716 cleanup: added cleanup() to qmail-queue.c.
93119960716 change: added timeout to tcp-env.c, default 30 seconds.
93219960716 change: remoteinfo_get() now uses timeoutconn().
93319960715 change: added procmail config.h note to FAQ.
93419960704 change: qmail-upgrade.7 now warns administrators that ~alias
935         generally doesn't apply to addresses starting with a user name.
93619960703 change: added echo \c note to FAQ. tnx PJG.
93719960702 change: qmail-smtpd now accepts HELO without an argument.
938         tnx K1J, J1B.
93919960627 change: qmail-lspawn.8 now mentions that qmail-lspawn doesn't
940         set up supplementary groups. tnx TG.
94119960625 portability problem: under Linux, read(,,0) doesn't do proper
942         error slippage. impact: timeoutconn() would always report
943	 success; if a connection failed, qmail-remote would report a
944	 greeting failure and skip all further MX records. tnx ME. fix:
945	 timeoutconn() now uses getpeername() to check for success.
94619960625 change: qmail-smtpd now mentions disk full for QQT_WRITE.
94719960625 change: qmail-inject now mentions disk full for QQT_WRITE.
94819960622 change: if RELAYCLIENT is set, qmail-smtpd skips rcpthosts.
94919960609 change: updated INSTALL for current SMTP responses.
95019960607 change: clarified INSTALL.qsmhook examples. tnx S1R.
95119960607 change: added subject parsing to qlist.c. tnx RN.
95219960607 cleanup: used case_diffb in qlist.c.
95319960607 change: added extra log information to INSTALL examples.
95419960606 change: added -Pn to uucp line in FAQ. tnx DWS.
95519960605 portability problem: under Solaris, /usr/bin/groups incorrectly
956         reports your groups in /etc/group, rather than the results of
957	 getgroups(). tnx MD, PJG. impact: test #19 in INSTALL fails.
958	 fix: added special note to test #19 (sigh) about Solaris.
95919960605 change: improved maildir setup commands in INSTALL.mbox.
96019960605 change: on success, qmail-alias logs forwarding qp. 9 lines
961         extra code.
96219960605 change: qmail-send logs qp for bounce. 6 lines extra code.
96319960605 change: qmail-smtpd includes qp in its response when it accepts
964         a message. 7 lines extra code. requested by MD and others.
96519960605 change: added qqtalk_qp.
96619960605 change: qmail-send now logs uid and qp from todo file. 14 lines
967         extra code.
96819960605 change: qmail-queue now records uid and qp in u and p lines
969         in todo file. 7 lines extra code.
97019960605 change: improved qmail-alias x-bit error messages.
97119960605 change: newline in log is now converted to /, not underscore.
97219960604 change: when it accepts a message, qmail-smtpd includes the
973         local time in its 250 response.
97419960604 change: on success, qmail-alias prints delivery counts,
975         file+forward+program.
97619960603 change: qmail-remote now reports IP address on success. tnx MD.
97719960603 change: qmail-send now logs success and failure reports, not
978         just deferral reports.
97919960603 change: added netbsd section in find-systype, same as bsd.os
980         section. this will affect netbsd-* systypes. tnx MBS.
98119960530 qmail 0.75, beta.
98219960528 change: added qmail.7. tnx MD.
98319960525 change: added qmail-pop3d. tnx RN.
98419960525 change: added qmail-popup. tnx RN.
98519960525 change: added elm filter section to FAQ. tnx GB.
98619960502 portability problem: on many systems, select() on an
987         almost-full pipe incorrectly says writable. tnx ME for running
988	 into this and helping track it down. impact: if qmail-send
989	 writes a pipeful to qmail-lspawn or qmail-rspawn before they
990	 can react (because of high concurrency, high load, or long
991	 addresses), it will receive an incorrect -1/EAGAIN, and will
992	 conclude that spawn died. sysadmin will have to restart qmail,
993	 and messages will be duplicated. fix: in qmail-send.c,
994	 busy-loop if write() to spawn returns any error other than
995	 EPIPE.
99619960501 bug: qmail-alias treated NAMETOOLONG and NOTDIR as temporary
997         errors. impact: qmail-alias never looked for -default; even if
998	 mail was destined to bounce, it would have to time out first.
999	 fix: qmail-alias now uses error_temp().
100019960430 bug: qmail-smtpd treated qq crash as permanent error. impact:
1001         if somebody actively kills qq, mail will be incorrectly
1002	 bounced. tnx SS. fix: qmail-smtpd now treats only TOOLONG and
1003	 EXECHARD as permanent errors.
100419960430 cleanup: eliminated QQT_TTY from qqtalk.h.
100519960428 change: added ``warning: '' before trouble-marking message.
100619960428 change: added percenthack. requested by GB.
100719960428 cleanup: switched to auto-generated Makefile.
100819960428 cleanup: switched to auto-generated .o dependencies.
100919960428 cleanup: eliminated fmt.o, scan.o from Makefile.
101019960428 portability problem: under HP-UX 10, the rc pgrp is sent HUP
1011         when rc finishes. tnx BG. impact: the qmail daemons are killed
1012	 when rc finishes. fix: added special note in INSTALL (sigh) to
1013	 use csh -cf.
101419960427 cleanup: added PORT_SMTP in qmail-remote.c.
101519960427 cleanup: introduced timeoutwrite.c. used it in qmail-remote.c.
101619960427 cleanup: introduced timeoutread.c. used it in qmail-remote.c.
101719960427 cleanup: introduced timeoutconn.c. used it in qmail-remote.c.
101819960427 change: added timeoutconnect. default: 60 seconds.
101919960427 change: added pop3d instructions to FAQ. tnx RN.
102019960427 change: eliminated env manipulation from qmail-start. tnx BG.
102119960427 change: headerbody now ends header, inserting blank line, if
1022         first line of a header field doesn't pass hfield_valid. tnx TG.
102319960427 change: headerbody now prepends MBOX-Line: to any header line
1024         starting From_. this lets qmail-inject work with elm's bounce.
1025	 tnx OR, K1J, et al.
102619960426 change: added moreinfo arg to qlist and qlist2.
102719960426 change: added signal_uncatchchild() to qmail-send.c. tnx BG.
1028         now, if sysadmin sets SIGCHLD to SIG_IGN before invoking
1029	 qmail-send [sigh], qmail-send won't screw up bounce messages.
103019960426 change: dns_cname now checks whether last character is ],
1031         rather than whether first character is [, for quick return.
103219960426 cleanup: glue is now global in dns.c.
103319960426 cleanup: qmail-remote no longer does stralloc_0 for host and
1034         canonhost.
103519960426 change: dns_mxip no longer rejects [foo].bar.
103619960426 change: dns_mxip no longer requires for bracket that input
1037         be 0-terminated.
103819960426 change: qmail-start can now take logger as an argument.
103919960426 change: qmail-start now invokes qmail-send in foreground (as
1040         parent of other processes).
104119960426 change: added mailsubj. tnx GAW.
104219960426 portability problem: under some systems, can't lock read-only
1043         file. impact: maildir2mbox would always fail on those systems.
1044	 fix: maildir2mbox now opens a separate lock fd. tnx BG.
104519960426 cleanup: removed unnecessary #!/bin/sh and # AUTO from mctl.sh.
104619960426 change: added qmail-qstat.
104719960426 change: added qmail-qread.8.
104819960426 change: renamed qmail-mailq as qmail-qread.
104919960419 change: qmail-alias now defers delivery rather than skipping
1050         blank lines in .qmail.
105119960419 change: in qmail-lspawn.c, lowercased name before getpwnam().
1052         really getpwnam() should do this, but oh well.
105319960419 change: added username to qmail-lspawn.c, with LSPAWN_USERLEN
1054         in conf-unusual.h. names longer than LSPAWN_USERLEN will skip
1055	 getpwnam().
105619960419 change: if qlist doesn't see any cmds, it presumes that you
1057         meant to subscribe.
105819960419 change: reorganized qlist acknowledgment format.
105919960415 change: reorganized and rewrote FAQ.
106019960415 change: renamed HOWTO as FAQ.
106119960414 change: in qmail-alias, converted extension to lowercase just
1062         before qmeopen(), qmeox() calls. thus EXTENSION and USEREXT and
1063	 RECIPIENT will preserve case passed by qmail-lspawn, while
1064	 .qmailext lookups will not.
106519960414 change: removed case_lowers(r) from qmail-lspawn.c. tnx JLH.
106619960414 change: moved extension . -> : conversion to just before
1067         qmeopen(), qmeox() calls in qmail-alias.c. thus EXTENSION and
1068	 USEREXT and RECIPIENT will preserve dots.
106919960414 change: qsmhook -x now does case-independent comparison.
107019960413 change: added procmail instructions to HOWTO.
107119960409 bug: qmail-alias does not check for newlines when it generates
1072         Return-Path. impact: resulting Return-Path header field will be
1073	 illegal, if sender address contains newline followed by
1074	 something other than whitespace. fix: qmail-alias now replaces
1075	 newline with underscore in rpline.
107619960409 change: added leaf UUCP description to HOWTO. tnx J2K.
107719960409 change: added -B option to sendmail. tnx OR.
107819960409 change: qlist now makes lists unwritable (after renaming from
1079         .qtemp to .qmail). tnx MLH.
108019960409 change: added flagdtline to qsmhook.c, based on -l option.
108119960409 change: added PIPELINING declaration to qmail-smtpd. tnx JGM.
108219960409 change: qmail-smtpd now flushes output instantly after DATA,
1083         QUIT, HELO, EHLO, NOOP, VRFY, or any 502.
108419960409 change: qmail-smtpd now flushes output upon read() and death.
108519960409 change: qmail-smtpd no longer flushes output in out().
108619960409 change: increased qmail-smtpd outbuf size from 128 to 512.
108719960409 cleanup: in qmail-smtpd, eliminated ssinit() in favor of FDBUF.
108819960409 bug: qmail-alias produced aliasfoo-owner rather than foo-owner
1089         as envelope sender for ~alias/.qmailfoo. tnx DS. impact: wrong
1090	 envelope sender whenever ~alias/.qmailfoo-owner existed. fix:
1091	 qmail-alias now checks for hyphen at beginning of extension.
109219960409 change: added _ESMTP to end of 220. tnx JLH.
109319960409 change: moved out("\r\n") out of smtp_greet() into callers.
1094         this improves the flushing behavior on 221.
109519960328 qmail 0.74, beta.
109619960326 change: changed subdirectory split from 32 to 23.
109719960326 portability problem: some versions of make don't understand
1098         that a line with just a tab is blank. impact: couldn't compile
1099	 under those systems. fix: eliminated extra tab from Makefile.
1100	 tnx TG.
110119960325 change: added qmail-mailq.
110219960325 change: introduced readsubdir.
110319960325 change: qmail-setup makes split; qmail-check checks split.
110419960325 change: used split in qmail-send, qmail-clean, qmail-queue
1105         for mess, info, local, remote.
110619960325 change: fmtqfn now supports split queue subdirectories.
110719960325 cleanup: eliminated cat2s().
110819960325 cleanup: introduced fmtqfn.c. used it in qmail-queue.c,
1109         qmail-send.c, qmail-clean.c.
111019960325 change: in protocol between qmail-clean and qmail-send, now
1111         using intd/ instead of mess/.
111219960325 change: qmail-queue.c and triggerpull.c now work inside queue
1113         subdirectory.
111419960325 change: spawn.c now checks whether message is a regular file.
111519960325 change: spawn.c now allows slashes in messid except at
1116         beginning.
111719960325 cleanup: introduced fnmake_split in qmail-send.c.
111819960325 cleanup: eliminated strnum in qmail-send.c in favor of
1119         fnmake_{info,todo,mess,chanaddr} and fnmake2_bounce.
112019960325 cleanup: introduced strnum3 in qmail-send.c for the logging
1121         uses of strnum.
112219960325 cleanup: in qmail-send.c, getinfo() now takes id argument.
112319960325 cleanup: qmail-send.c now preallocates space for fn, fn2.
112419960325 change: time zone is now -0000 instead of +0000. encouraging
1125         DRUMS to use this as an i-don't-know-the-local-time indicator.
112619960324 change: qmail-rspawn.c now calls tcpto_clean().
112719960324 cleanup: spawn.c now calls initialize().
112819960324 change: qmail-setup makes lock/tcpto; qmail-check checks it.
112919960324 change: qmail-remote now quickly skips connect() to a host that
1130         seems to be down. tnx BP for pressuring me to get this done.
113119960323 change: in qmail-alias.8, renamed mboxg as mboxrd. tnx RD.
1132         idea was popularized by RD in June 1995.
113319960322 cleanup: eliminated subfd_init().
113419960322 change: qbiff now removes the word Subject.
113519960322 change: now /bin/true instead of /dev/null in the generic
1136         INSTALL.ids instructions. tnx JPR.
113719960322 change: added hfield_skipname(). tnx RN.
113819960322 bug: qmail-inject did not check whether USER needed quoting.
1139         impact: if USER had weird characters, the From address would
1140	 generally be wrong, unless the user manually set up MAILUSER
1141	 with proper quoting. fix: qmail-inject sets up a quoted-string
1142	 if necessary.
114319960322 cleanup: separated out quote_need() in quote.c.
114419960322 cleanup: added stralloc_catb.c. used it in qmail-alias.c,
1145         qmail-send.c.
114619960322 change: qmail-send now uses a quadratic retry schedule from
1147         birth of each message. this also eliminates clustering.
114819960322 cleanup: separated out nextretry() in qmail-send.c.
114919960322 change: qmail-remote now passes all non-@ addresses through
1150         without comment, not just <> and <#>.
115119960322 change: replaced # test with anything@[] test in qmail-inject.
115219960322 change: replaced # with #@[] in qlist.c, qmail-alias.c,
1153         qmail-send.c, qreceipt.c.
115419960322 change: qmail-lspawn no longer discards messages to <#>.
115519960322 cleanup: in qlist, used str_diff for <> and <#> tests.
115619960322 change: qmail-alias is now back to testing envelope sender for
1157         <> and <#>, rather than things without an @.
115819960321 change: added 8BITMIME support to qmail-smtpd.
115919960321 change: added ESMTP support to qmail-smtpd.
116019960318 change: used NEWSENDER in place of SENDER for |forward.
116119960318 change: added NEWSENDER.
116219960318 change: added HCMSSC support to qmail-alias.c.
116319960318 change: added HCMSSC support to spawn.c.
116419960318 change: added HCMSSC support to qmail-remote.c.
116519960318 change: added HCMSSC support to qmail-smtpd.c.
116619960317 portability problem: SCO requires -lsocket -lnsl. impact:
1167         couldn't compile under SCO. fix: added SCO section in
1168	 make-cmds.sh. tnx JPR. note that this is for OSR 5; 3.2v4.2
1169	 will need more fixes, and old 3.2 is basically hopeless.
117019960317 bug: newfield_datemake would leave newfield_date alone if it
1171         was already initialized, even though qmail-send calls
1172	 newfield_datemake anew for each bounce. impact: bounce messages
1173	 would usually have an incorrect Date field. fix: redid
1174	 newfield_datemake to update newfield_date each time.
117519960317 change: allowed . and @ in 822 phrases; 822 doesn't allow them,
1176         but they do show up. tnx to the DRUMS group.
117719960317 change: replaced GMT with +0000 in date822fmt.c. this confuses
1178         a few versions of getdate(), but the DRUMS group is going to
1179	 outlaw GMT, not just recommend against it as in 1123.
118019960317 change: redefined ALIAS_EMPTY to take advantage of . for file
1181         deliveries. tnx RN.
118219960317 change: qmail-alias now allows . as well as / to start file
1183         deliveries. tnx RN.
118419960317 change: qmail-alias now dies (soft) if .qmail is writable to
1185         others, rather than silently ignoring it.
118619960317 change: qmail-alias now dies (soft) if flagforwardonly is
1187         violated, rather than silently ignoring the bad instructions.
118819960317 change: qmail-alias now ignores x bit on empty .qmail files.
118919960317 bug: if RCPT gave 4xx and DATA gave 5xx, qmail-rspawn would
1190         incorrectly assign a permanent failure to that recipient.
1191	 impact: in that case, mail would be incorrectly bounced. fix:
1192	 remove orr > 0 test from qmail-rspawn.c.
119319960310 change: tcp-env now uses signal_uninit(). [sigh]
119419960310 change: tcp-env now specifically unsets HOST and INFO if they
1195         are not applicable. just trying to make it more widely usable.
119619960310 cleanup: used byte_* in remoteinfo.c, ipme.c, tcp-env.c.
119719960310 cleanup: added readwrite.h, eliminated sys.h.
119819960310 cleanup: included byte.h in qmail-send.c.
119919960310 cleanup: eliminated i and j from forward.c's main().
120019960310 cleanup: eliminated wstat from qlist.c.
120119960310 cleanup: eliminated die_nomem() parameter in qmail-setup.c.
120219960310 cleanup: eliminated i from qmail-remote's addrmangle().
120319960310 cleanup: added exit.h.
120419960310 cleanup: split ipalloc.c off of ip.c.
120519960310 cleanup: added fmt_strn.c, eliminated fmt_strncpy.c.
120619960310 change: reorganized INSTALL to do some pre-upgrade tests.
1207         tnx RN.
120819960310 change: reordered steps in upgrade procedure in INSTALL.
120919960308 change: eliminated ownership test in qmail-alias.c. tnx DS.
121019960304 change: in SECURITY, ``six most recent sendmail security
1211         holes'' -> ``seven most recent sendmail security holes.''
121219960303 qmail 0.73, beta.
121319960303 change: added SYSDEPS.
121419960303 cleanup: revamped select.h autoconfiguration.
121519960303 cleanup: revamped fork.h autoconfiguration.
121619960303 cleanup: revamped direntry.h autoconfiguration. target is now
1217         direntry.h; auto-hasdrent.h is gone.
121819960303 change: tryflock.c now includes <sys/types.h>, for consistency
1219         with lock.c. may affect portability.
122019960302 portability problem: under BSDI, can't set sticky on normal
1221         files. dorks. impact: the new qlist doesn't work under BSDI;
1222         be glad I test things before release. fix: qmail-alias and
1223         qlist now use executable instead of sticky.
122419960302 change: gfrom now quotes >From and >>From etc. as well as From;
1225         in other words, I'm switching from mbox format to mboxg format.
122619960302 cleanup: added gfrom.c. used it in qmail-alias.c, maildir2mbox.c.
122719960302 change: addbounce() now substitutes \n\n -> \n/ in reports,
1228	 and \n -> _ in recips. thus bounces can now be reliably parsed.
122919960302 change: if qmail-send had trouble reading the original message
1230	 or the list of addresses for a bounce, it used to give up and
1231	 send a bounce with "Oh no! I had trouble reading the rest of
1232	 your message" or some such. now it aborts the bounce attempt
1233	 and tries again later.
123419960302 cleanup: added qqtalk_fail(). used it in qmail-alias.c,
1235         qmail-smtpd.c.
123619960302 bug: if mailforward() had trouble reading message (e.g.,
1237         because of an I/O error), it marked an error but kept reading.
1238	 impact: could loop forever. fix: upon error, break.
123919960302 change: maildir2mbox now scans (restrictively) for return-path.
124019960302 change: qbiff now prints subject and body, up to 74 chars.
124119960302 change: added H_SUBJECT to hfield.
124219960302 change: qbiff now puts TO before FROM.
124319960301 cleanup: added fmt_str.c. used it in many places.
124419960301 change: qmail-send now says something if you've told it to exit
1245         but it's waiting for some deliveries. tnx RN.
124619960301 change: qmail-alias -n now continues (with warning) if home
1247         directory is sticky. tnx RN.
124819960301 change: improved usage messages in qmail-alias.c. tnx RN.
124919960301 change: put limit on length of addresses in qlist.
125019960301 change: added exit 99 support to qmail-alias. tnx RN.
125119960301 change: qmail-alias now exits immediately on temporary or
1252         permanent error. rewrote section in qmail-alias.8 accordingly.
125319960301 cleanup: eliminated flagsuccesses from qmail-alias.c.
125419960301 change: added usermap.
125519960301 bug: failure to append to mbox was a permanent error. impact:
1256	 if mbox was temporarily unopenable (e.g., because fds were
1257	 low), mail would be incorrectly bounced. fix: failure is now
1258	 temporary. tnx DS.
125919960229 change: qmail-alias now preserves any envelope sender that
1260         doesn't contain an @, not just <> and <#>.
126119960229 cleanup: revamped byte_* interface.
126219960229 cleanup: renamed str_cpy as str_copy.
126319960229 cleanup: added str_chr.c. used it in qbiff.c, qmail-smtpd.c.
126419960229 cleanup: added str_rchr.c. used it in qmail-send.c, quote.c,
1265         qmail-remote.c.
126619960229 cleanup: added byte_rchr.c. used it in qmail-smtpd.c, spawn.c.
126719960229 cleanup: used USEREXT instead of RECIPIENT in qsmhook.c.
126819960229 cleanup: used USEREXT instead of RECIPIENT in qbiff.c.
126919960229 cleanup: removed j and k from rewrite() in qmail-send.c.
127019960229 portability problem: under HP-UX 10 and Solaris 2.5, can't
1271         setgroups()/setgid() to the system's nogroup/nobody gid. dorks.
1272	 impact: inetd chokes, so all SMTP connections are rejected; and
1273	 ``alias'' mail, including postmaster, bounces. fix: in
1274	 INSTALL.ids, set up a separate powerless gid (tentatively
1275	 ``nofiles'') for qmaild and alias. tnx DS and PJG.
127619960229 change: qreceipt now uses qqtalk rather than qmail-inject.
127719960229 change: qlist now uses qqtalk rather than qmail-inject.
127819960229 change: incorporated qmail-setup patch from RN for better
1279         error messages.
128019960228 change: added LSPAWN_BREAK in conf-unusual.h; used it in
1281         lspawn.c. configurability requested by PJG.
128219960228 portability problem: on several systems, including everything
1283         from DEC, select() on a pipe reader returns 1 if there aren't
1284	 any writers yet. pointed out by DS. impact: qmail-send chewed
1285	 up lots of CPU time. fix: trigger_set() now opens the pipe for
1286	 writing after opening it for reading. also added trynpbg1; on
1287	 working systems, no point in wasting the extra fd.
128819960228 change: qmail-alias uses .qmail sticky bit for forwardonly.
128919960228 change: qlist now sets sticky bit on .qmail file.
129019960228 change: un-documented +list.
129119960228 portability problem: on HP-UX and possibly other systems, the
1292         supplementary group list does not include the gid. pointed out
1293	 by DS. impact: on those systems, tryshsgr could incorrectly set
1294	 hasshsgr; this would prevent qmail-send from running. fix: if
1295	 tryshsgr sees that getgroups() returns 0, now it actively sets
1296	 up a supplementary group list. added chkshsgr to make sure the
1297	 setgroups() will work.
129819960227 cleanup: eliminated GETSHORT in dns.c in favor of getshort().
129919960227 cleanup: deleted h->len < 3 test from qlist.c:dobody. tnx RN.
130019960227 change: replaced ~ with $HOME in INSTALL.mbox.
130119960227 change: added note about setgid-mail bits to INSTALL.mbox.
130219960227 change: added forward.1.
130319960227 change: modified forward to allow multiple addresses.
130419960227 change: modified forward to take an entire address, not just a
1305         hostname.
130619960227 change: renamed qrelay as forward.
130719960227 change: added USEREXT support to qmail-alias.
130819960227 change: added -F to sendmail. the need for this was pointed
1309         out by RN.
131019960227 change: added 2 bytes of slop in alloc().
131119960227 bug: received_setup() was not allowing space for the final \0.
1312         impact: none; the line length is always between 65 and 75
1313	 characters, which gives at least 45 characters of slop with
1314	 existing malloc() implementations. fix: leave space. tnx NH.
1315	 note that the bug here is really in fmt_strncpy, which was
1316	 written before i was truly free of the curse of libc.a.
131719960227 change: added ALIAS_EMPTY in conf-unusual.h; used it in
1318         qmail-alias.c. tnx PJG.
131919960227 change: added SPAWN_NUMD in conf-unusual.h; used it in spawn.c.
132019960227 change: added conf-unusual.h.
132119960227 cleanup: replaced sizeof(short) with 2 in dns.c.
132219960227 portability problem: on an Alpha, long is 64 bits. pointed out
1323         by DS. impact: address lookups produced incorrect results on an
1324	 Alpha; qmail-makectl and qmail-remote failed. fix: replaced
1325	 sizeof(long) with 4 in dns.c.
132619960227 portability problem: on an Alpha, bzero() is declared properly
1327         via sys/time.h. impact: couldn't compile on an Alpha. fix:
1328	 removed bzero() declaration from select.h. tnx DS.
132919960227 portability problem: under SCO, sys/file.h is not protected.
1330         impact: couldn't compile under SCO. fix: include sys/types.h in
1331	 lock.c. tnx RN.
133219960219 change: added some .qmail-list hints to qlist.1.
133319960219 change: added +list support to qmail-alias.
133419960215 change: added THANKS.
133519960212 bug: foo was not initialized in qrelay.c. impact: depends on
1336         the machine; on some machines, no effect; on other machines,
1337	 guaranteed core dump. fix: initialized foo. tnx DS.
133819960209 qmail 0.72, beta.
133919960209 change: qmail-alias now replaces dot, not slash, with colon.
1340	 also, qmeopen() makes sure that .qmail file is S_IFREG; I hope
1341	 this doesn't cause portability problems.
134219960209 change: added success-reporting procedure to INSTALL.
134319960208 change: added VERSION.
134419960208 change: added qlist2.
134519960208 change: revamped qlist interface. tnx RN.
134619960208 change: improved an error message in qlist.c.
134719960208 change: added qrelay. added relay section to HOWTO. tnx DS.
134819960208 cleanup: included substdio.h in qqtalk.h.
134919960207 bug: prioq_delmin() wasn't guaranteeing heap structure on the
1350         last element. impact: scheduled passes could have been delayed,
1351	 conceivably as long as half an hour. fix: prioq_delmin() now
1352	 checks when it can safely move the last element.
135319960207 change: added maildirmake.1, maildir2mbox.1.
135419960206 change: revised logo paragraph in THOUGHTS.
135519960206 change: replaced nowhere.org with nowhere.mil in examples.
1356         nowhere.org is a real domain... [sigh]
135719960206 change: added qreceipt.1.
135819960206 portability problem: IRIX doesn't have vfork. pointed out by
1359         DS. impact: couldn't compile under IRIX. fix: added fork.h,
1360	 tryvfork.c.
136119960206 portability problem: IRIX doesn't have ranlib. pointed out by
1362         DS. impact: couldn't compile under IRIX. fix: added IRIX
1363	 section in make-cmds.sh.
136419960205 cleanup: removed warning from substdio_copy() documentation; in
1365         fact, substdio_copy() can be used safely on a fed substdio.
136619960205 change: added qbiff.1.
136719960204 change: implemented localnet. removed relevant paragraph from
1368         THOUGHTS. tnx IS.
136919960204 change: in qmail-remote.8, explained the dangers of smarthost.
1370         tnx IS.
137119960204 change: implemented virtualdomains wildcards. tnx JLH.
137219960203 change: qmail-send now handles virtualdomains _after_ locals.
1373         updated INSTALL.qsmhook appropriately.
137419960203 change: added note to INSTALL.alias about ~ftp, ~www, ~uucp
1375         being owned by root.
137619960130 cleanup: in qlist.c, renamed flagremoved as flagwasthere.
137719960130 bug: qmail-send did not pay attention to flagexitasap in
1378         pass_dochan(). impact: qmail-send would happily start new
1379	 deliveries even if it wanted to exit. fix: qmail-send now
1380	 returns immediately in pass_selprep() and pass_dochan() if
1381	 flagexitasap.
138219960130 change: in qlist.c and qlist.1, renamed ext as list.
138319960130 change: in qlist.c and qlist.1, renamed manager as owner.
138419960129 qmail 0.71, beta.
138519960129 change: mentioned djb-qmailbeta in README. tnx MWE.
138619960129 change: added a note to INSTALL.mbox making clear that
1387         Mailbox is in mbox format. tnx MWE.
138819960129 change: qlist now warns you if it didn't see any cmds. tnx RN.
138919960129 change: incorporated qlist patch from RN to refuse double subs.
139019960129 change: added qlist.1, contributed by RN. mangled it a bit.
139119960129 bug: comment was not allowed in ``phrase (comment) <route>'';
1392         pointed out by RN. impact: some correct address lists could be
1393	 mis-parsed by qmail-inject or qlist. fix: token.c now allows
1394	 TOKEN_COMMENT in the appropriate scan.
139519960128 change: added a logo paragraph to THOUGHTS.
139619960127 change: implemented rcpthosts.
139719960127 change: split up some uses of putflush in qmail-remote,
1398	 qmail-smtpd, spawn.c. eliminated NODELAY and corresponding
1399	 paragraph in THOUGHTS.
140019960127 change: added quote2(). used it in qmail-alias, qmail-send,
1401         qreceipt. now addresses are properly quoted in the From, To,
1402	 and internal Return-Path of bounces; the From and To of
1403	 receipts; and the Return-Path/RPLINE of delivered messages.
1404	 removed relevant paragraph from THOUGHTS.
140519960127 change: in RFCLOOPS, documented fact that Delivered-To address
1406         is conventionally not quoted.
140719960127 change: knocked default SMTP timeouts down to 20 minutes.
140819960127 change: added INSTALL.ids. tnx RN.
140919960127 change: in INSTALL, noted that nogroup should already exist.
141019960127 bug: pass_selprep checked pqchan[c] even if pass[c].id. impact:
1411	 qmail-send wasted CPU time whenever more than one message was
1412	 waiting on a blocked channel. fix: pass_selprep now checks
1413	 !pass[c].id.
141419960127 bug: programs invoked from qmail-alias were immune to SIGPIPE.
1415         impact: a delivery pipeline such as |yes|head -1000 would loop
1416	 forever, since yes does not check for write errors. fix: added
1417	 signal_uninit(). used it before execvp in qmail-alias. [sigh]
141819960127 cleanup: added date822fmt.c. used it in newfield.c, qmail-queue.
141919960127 cleanup: added fmt_uint0.c. used it in myctime.c, newfield.c,
1420         qmail-queue.
142119960127 cleanup: added dnsdoe.c. used it in dnscname, dnsfq, dnsip,
1422         dnsmxip, dnsptr.
142319960127 cleanup: eliminated temp from dnsfq.c.
142419960127 bug: gen_allocdefs was making assumptions incompatible with the
1425         alloc_re interface. impact: qmail-send would dump core if you
1426	 ran out of memory. fix: changed alloc_re interface.
142719960126 portability problem: some versions of Linux don't have
1428         net/route.h. pointed out by RN. impact: couldn't compile under
1429	 those versions. fix: ipme.c no longer includes net/route.h;
1430	 hopefully this won't cause new portability problems.
143119960126 change: added chmod instructions to INSTALL and INSTALL.alias.
1432         tnx RN.
143319960126 change: INSTALL now refers to the traditional sendmail spot
1434         (/usr/lib), not the BSD 4.4 spot (/usr/sbin). tnx RN.
143519960126 change: make auto-uids.h now creates auto-uids.h.tmp first.
1436	 thus, if someone disobeys the installation instructions, and
1437	 his make fails to remove targets upon error, he'll still be
1438	 okay. tnx RN.
143919960126 change: added forgeries.7.
144019960125 cleanup: eliminated flagverbose, flagmetoo in sendmail.
144119960125 cleanup: added substdio_copy.c. used it at several spots.
144219960125 cleanup: added constmap.c. qmail-send now uses constmap for
1443         locals and virtualdomains. this will speed things up: no
1444	 problem now to have thousands of virtual domains. removed
1445	 relevant paragraph from THOUGHTS.
144619960125 change: added linux section in find-systype. this will affect
1447         linux-* systypes. tnx RN for relevant info.
144819960124 change: added -od, -oe, -p, -f to sendmail. the need for
1449         these was pointed out by TN.
145019960124 bug: qmail-smtpd was reading from descriptor 1. impact: none;
1451         in normal use, both 0 and 1 point to the network. fix: changed
1452	 1 to 0.
145319960124 bug: qmail-alias treated any .qmail open failure as permanent.
1454         impact: if a .qmail file was temporarily unopenable (e.g.,
1455	 because of NFS), it was incorrectly ignored. fix: qmail-alias
1456	 now dies QLX_SOFT on any open failure other than ENOENT.
145719960124 change: added freebsd section in find-systype, same as bsd.os
1458         section. this will affect freebsd-* systypes.
145919960124 cleanup: find-systype now immediately converts sys to lowercase.
146019960124 change: qmail-setup now copies man pages into /var/qmail/man;
1461         qmail-check checks /var/qmail/man. using .0 style, which might
1462	 cause trouble on various machines, but better than not trying.
146319960124 change: in qmail-remote.c, changed perm_control to temp_control
1464         (and D to Z, thanks); thus failure to read control files (e.g.,
1465	 because of permissions) is now a temporary error.
146619960124 bug: in qmail-remote.c, temp_chdir() used D, not Z. impact: if
1467         chdir() to CONF_HOME failed (e.g., because of NFS), message
1468	 would be bounced. fix: changed D to Z.
146919960124 change: reorganized README.
147019960124 portability problem: Linux has the fifo kernel bug that I had
1471         hoped I'd never run into. impact: messages under Linux (and any
1472	 other systems with this bug) were picked up only in sweeps, not
1473	 instantly. fix: triggerpull.c now writes a byte (non-blocking)
1474	 to the fifo. updated INTERNALS accordingly.
147519960124 bug: in qmail-remote.c, if quit() saw a remote write error, it
1476         would call writeerr() even though a message report had already
1477	 been produced. impact: the mess report would include an extra
1478	 ``ZConnected but communications failed,'' which was confusing
1479	 to humans. fix: quit() now simply skips the wait-for-QUIT
1480	 smtpcode() upon write error.
148119960124 portability problem: Linux does not have SIGSYS or SIGEMT.
1482         impact: couldn't compile under Linux. fix: added appropriate
1483	 ifdefs in signal.c.
148419960124 qmail 0.70, beta.
1485