Upstream qmail 1.01
[qmail] / CHANGES
CommitLineData
2117e02e
MW
119970415 version: qmail 1.01.
219970414 doc: tightened up qmail-upgrade.7.
319970414 code: rewrote rewrite().
419970414 code: implemented recipientmap. suggested by RDM.
519970414 doc: auto-configured qmail home directory in qmail-control.5,
6 qmail-newu.8, qmail-pw2u.8, qmail-start.8, qmail-users.5.
719970414 port: Solaris needs socket libs for gethostname. impact: can't
8 compile under Solaris. fix: use socket.lib for qmail-local.
919970412 code: introduced stralloc_starts.
1019970412 code: introduced str_equal.
1119970412 code: introduced str_start.
1219970412 code: introduced byte_equal.
1319970412 code: made an optional aliasempty arg for qmail-start.
1419970412 code: made an aliasempty arg for qmail-lspawn.
1519970412 code: changed ALIAS_EMPTY to an arg for qmail-local.
1619970412 port: UnixWare returns >0 for SIOCGIFCONF. impact: ipme fails
17 under UnixWare. fix: check for >=0, not =0. tnx JD.
1819970412 port: DGUX does not have ranlib. impact: can't compile under
19 DGUX. fix: added dgux line to make-makelib. tnx HWM.
2019970412 code: changed maildir library to skip any filename beginning
21 with dot. tnx SP.
2219970412 doc: added FAQ entry about aliases with dots.
2319970412 doc: clarified in qmail-inject.8 that default envelope sender
24 is the same as _default_ From address.
2519970411 code: renamed qmail-makectl as qmail-config.
2619970411 code: renamed qmail-alias as qmail-local.
2719970411 code: switched from signal library to sig library.
2819970411 code: switched from qqtalk library to qmail library.
2919970411 code: switched from getline library to getln library.
3019970411 code: massive library cleanups.
3119970411 code: revamped autoconfiguration system.
3219970411 code: revamped configuration interface.
3319970411 code: eliminated qmail-home.
3419970411 code: eliminated tokenize.
3519970220 qmail 1.00.
3619970219 change: various documentation tweaks.
3719970218 change: updated THOUGHTS.
3819970218 change: talked about SPAWN_NUMD in FAQ. tnx EC.
3919970210 change: noted in maildir.5 that readers should skip any name
40 starting with a dot. tnx SP.
4119970209 change: added note to splogger.8 about reliability. tnx BT.
4219970209 change: added section to FAQ on slow sendmail switch. tnx BT.
4319970206 change: added section to FAQ about dtcm. tnx PJG.
4419970206 change: tweaked maildir.5.
4519970201 change: added MH spost note to FAQ. tnx TU.
4619970131 change: reorganized FAQ.
4719970131 change: added web references to FAQ.
4819970124 change: tweaked qmail-upgrade man page.
4919970120 qmail 0.96, gamma.
5019970120 change: removed various try* in auto-configuration.
5119970120 bug: qmail-inject fails to quote argument addresses. impact:
52 addresses containing special characters could be misinterpreted
53 or rejected. tnx C2F. fix: use quote2().
5419970120 portability problem: ESIX puts syslog() and openlog() into
55 -lgen. impact: can't compile under ESIX. fix: put -lgen into
56 LIBS for unix_sv. tnx RN.
5719961221 qmail 0.95, gamma.
5819961218 change: added various try* to TARGETS. tnx SA.
5919961216 change: clarified in qmail-send.8 that virtualdomains does not
60 apply to domains listed in locals.
6119961216 change: slurpclose() now closes fd on out-of-memory. makes it
62 more widely applicable.
6319961215 change: replaced elm instructions in INSTALL.mbox with an
64 explanation of what source change to make. tnx AB.
6519961212 portability problem: under NEWS-OS, time_t needs sys/types.h.
66 impact: couldn't compile under NEWS-OS. fix: include
67 sys/types.h in predate.c. tnx TU.
6819961211 change: used timeoutread, timeoutwrite in remoteinfo(). tnx
69 REB.
7019961210 portability problem: apparently some SGIs produce a systype of
71 irix64. impact: couldn't compile on those systems. fix: handle
72 irix64 in make-cmds. tnx M3S.
7319961208 change: added note to maildir2mbox.1 about mbox locking.
7419961208 qmail 0.94, gamma.
7519961207 change: added QMAILDEFAULTDOMAIN, QMAILDEFAULTHOST,
76 QMAILIDHOST, QMAILPLUSDOMAIN. tnx BTW.
7719961206 cleanup: readsubdir() protects itself against name overflow,
78 rather than depending on caller.
7919961204 change: changed FAQ 7.3 to prohibit fixup relaying.
8019961203 change: added note to FAQ about possibly having to put a space
81 before "$SENDER" for uux. tnx FW.
8219961202 change: added FAQ entry on QUEUE_EXTRA.
8319961202 change: added FAQ entry on backups. tnx DP.
8419961202 change: added note to INSTALL.mbox about qpopper. tnx VV.
8519961201 change: replaced logger with splogger in FAQ 5.1. tnx FPL.
8619961201 change: used netmask example for tcpcontrol in FAQ. tnx FPL.
8719961201 change: added note to README about the mailing list. tnx FPL.
8819961201 change: documented rcpthosts wildcards. tnx RN.
8919961201 change: added note to FAQ about making mailx use datemail.
9019961201 change: added datemail. function requested by several people;
91 approach suggested by TG.
9219961201 change: added predate.
9319961129 change: added QUEUE_EXTRA, QUEUE_EXTRALEN.
9419961129 change: qmail-remote bounces messages with partial final lines.
9519961129 change: added atomcheck() to quote crappy atoms.
9619961129 change: revised atomok() to let atoms deal with more crap.
9719961127 change: qmail-send adds note to deferral if flagdying. tnx TG.
9819961127 change: split off maildirbounce, maildir2qmtp, and maildir2smtp
99 into a separate serialmail package.
10019961126 change: eliminated beta success reports from README.
10119961124 change: forced res_query() return value to fit inside incoming
102 buffer size. allegedly there are buggy versions of res_query()
103 that don't guarantee this.
10419961122 qmail 0.93, gamma.
10519961122 change: allowed empty arg list in forward.
10619961121 change: qmail-smtpd now uses unknown (like qmail-qmtpd) rather
107 than dying if environment variables are not set.
10819961121 cleanup: reorganized helo handling in qmail-smtpd.c.
10919961121 cleanup: eliminated newfield_rec.
11019961121 cleanup: introduced DATE822FMT. used it in received.c.
11119961121 cleanup: introduced received.c. used it in qmail-qmtpd.c,
112 qmail-smtpd.c.
11319961121 change: qmail-smtpd now generates a new timestamp for each
114 message. tnx PJG.
11519961121 cleanup: used stralloc in newfield.
11619961121 cleanup: eliminated newfield_cc.
11719961121 change: eliminated hfield_mort().
11819961119 change: added 2-minute damper on tcpto.
11919961118 change: wrote defaults for readfile controls in showctl.
12019961117 change: control_readfile() now allows comments and blank lines.
121 tnx LW.
12219961117 change: qmail-start sets logger gid to GID_NOFILES.
12319961117 bug: ipme_init() uses a fixed-length buffer for SIOCGIFCONF.
124 impact: qmail-smtpd and qmail-remote will die if there are too
125 many local IP addresses. tnx MD. fix: ipme_init() now
126 dynamically allocates space, up to 200000 bytes, as long as
127 SIOCGIFCONF keeps failing. note that this is a very widespread
128 bug; it's in amd, exim, mrouted, named, nntpd, rarpd, sendmail,
129 tcpdump, timed, xntpd, and probably dozens more programs.
13019961117 portability problem: on BSD 4.4 and various other systems,
131 SIOCGIFCONF will truncate long lists and return success.
132 impact: on those systems, qmail-smtpd and qmail-remote will
133 miss some local IP addresses if there are too many. fix:
134 ipme_init() now checks whether there is enough space left in
135 the buffer for another ifreq, plus 64 bytes JIC. yuck.
13619961117 change: ipmeprint now flushes only at end.
13719961117 cleanup: introduced subfdinsmall. used it in qmail-clean.c,
138 qmail-qmtpd.c.
13919961117 cleanup: introduced subfdoutsmall. used it in hostname.c,
140 printbreak.c, printnumd.c, printsplit.c, qmail-alias.c,
141 qmail-clean.c, qmail-getpw.c, qmail-qmtpd.c, maildir2smtp.c,
142 maildir2qmtp.c.
14319961117 change: moved subfderr buf up to 256 characters.
14419961117 change: added maildirbounce. tnx MD, TG.
14519961116 change: maildir2smtp and maildir2qmtp now print filenames for
146 permanent bounces. tnx MD.
14719961116 change: in SECURITY, ``eleven most recent sendmail security
148 holes, five'' -> ``twelve most recent sendmail security holes,
149 six.''
15019961116 change: rewrote qmail-showctl more professionally.
15119961115 change: added several tests to find-systype.sh. this will
152 affect many systypes.
15319961115 change: qmail-alias now treats most exit codes as soft errors.
15419961115 change: revamped exit codes everywhere for 0, 100, 111.
15519961114 change: added splogger.
15619961114 portability problem: Sun's cc recognizes sqrt() as a builtin,
157 even if math.h is not included and sqrt is defined statically.
158 yuck. impact: when qmail is compiled with Sun's cc, next-retry
159 times are all screwed up. tnx PJG. fix: my sqrt() is now called
160 squareroot().
16119961114 change: dns_ip() now recognizes [1.2.3.4]. tnx DS.
16219961112 change: enabled x option in sendmail. tnx DS.
16319961111 change: added SIGHUP handling to qmail-send. suggested by many
164 people.
16519961111 bug: control routines returned incorrect codes for some
166 out-of-memory conditions. impact: none; conditions cannot
167 happen with sane control files. fix: return -1.
16819961111 change: added SIGALRM handling to qmail-send. suggested by many
169 people.
17019961111 change: eliminated flagnobreak (-b/-B) from qmail-pw2u.
17119961111 change: qmail-getpw now allows hyphens inside usernames.
17219961111 change: added users/append to qmail-pw2u. tnx G2A.
17319961111 change: added badmailfrom to qmail-smtpd. requested by several
174 people.
17519961110 change: replaced elm instructions in INSTALL.mbox with a simple
176 note to set incomingfolders in elm.rc. tnx AB.
17719961110 change: replaced ``owner hack'' with ``variable envelope
178 return paths'' throughout the documentation. tnx DS.
17919961110 change: qmail-setup installs man pages as well as cat pages.
18019961110 change: renamed qmail-newuser as qmail-newu. tnx G2A.
18119961110 change: renamed qmail-pw2user as qmail-pw2u. tnx G2A.
18219961105 change: set path in INSTALL.boot. tnx TJH.
18319961105 change: noted in qmail-smtpd.8 that addresses without @ are
184 always allowed through.
18519961105 change: indicated at various spots in FAQ that rcpthosts has to
186 be updated. suggested by various people.
18719961105 change: indicated at various spots in FAQ that qmail has to be
188 restarted. suggested by various people.
18919961029 change: fixed typo in maildir2qmtp.1. tnx BG.
19019961026 qmail 0.92, gamma.
19119961026 bug: qmail-getpw did not 0-terminate usernames. tnx CF. impact:
192 qmail-getpw would crash on some systems, deferring local
193 deliveries. fix: 0-terminate.
19419961025 cleanup: renamed auto-hassgprm.h to hassgprm.h.
19519961025 cleanup: renamed auto-hassgact.h to hassgact.h.
19619961024 change: replaced qmail-alias.0 with dot-qmail.0 in
197 INSTALL.alias. tnx MW.
19819961022 change: switched uids as early as possible in qmail-start.c.
19919961022 change: in SECURITY, ``ten most recent sendmail security
200 holes, five'' -> ``eleven most recent sendmail security holes,
201 five.''
20219961022 change: quote_need() now treats non-ASCII characters the same
203 way as control characters.
20419961022 change: added version and home page to qmail.7.
20519961022 cleanup: introduced slurpclose.c. used it in qmail-alias.c,
206 qmail-lspawn.c.
20719961021 portability problem: AT&T NCR boxes need stdio.h before
208 arpa/nameser.h. impact: dns.c would not compile. fix: include
209 stdio.h. tnx HS.
21019961021 change: added AIX section to INSTALL.ids. tnx SSB.
21119961021 change: added qmail-pw2user.
21219961020 change: added qmail-pw2user.8.
21319961020 change: qmail-alias now dies soft on EACCES/EPERM for .qmail.
21419961020 change: eliminated root comments from INSTALL.qsmhook.
21519961020 change: various improvements in FAQ.
21619961017 change: added QLX_ROOT.
21719961017 change: renamed hosts in FAQ. tnx SLB.
21819961017 change: in dot-qmail.5, documented envnoathost effects. tnx RN.
21919961017 change: revamped addresses.5.
22019961017 change: added stripvdomprepend() for better bounces. tnx PT.
22119961012 portability problem: under HP-UX 9, can't setgroups() to 65537.
222 impact: couldn't compile under HP-UX 9. fix: use 0 instead of
223 65537 in chkshsgr.c. tnx HHO.
22419961008 change: added several qlx codes.
22519961008 cleanup: eliminated qlx from qmail-alias.
22619961008 change: qmail-lspawn runs qmail-getpw as UID_PW.
22719961008 change: added qmail-newuser.
22819961008 change: added cdb support to qmail-lspawn.
22919961008 change: integrated cdb.
23019961007 change: added qmail-users.5.
23119961007 change: eliminated usermap.
23219961007 cleanup: switched execvp to execv in sendmail, qmail-lspawn.
23319961007 change: used qmail-getpw in qmail-lspawn.
23419961007 change: renamed LSPAWN_USERLEN as GETPW_USERLEN.
23519961007 change: added qmail-getpw.
23619961007 change: created users subdirectory of CONF_HOME.
23719961007 change: fixed typo in FAQ. tnx J1B.
23819961006 change: replaced subfdout with a small ss in qmail-alias.
23919961006 change: reduced qmail-alias buffer sizes to 1024.
24019961003 change: added note to maildir2smtp.0 about maildirmake. tnx SM.
24119961003 bug: if ipme_init() returned -1, qmail-remote would continue,
242 blindly assuming that all addresses are local. impact: on
243 systems with too many aliases, all remote deliveries fail. tnx
244 MD. fix: qmail-remote now dies with temp_oserr() on any result
245 other than 1.
24619961003 portability problem: all pre-4.9.4 versions of bind barf,
247 badly, on CNAME queries to lame servers. what a crappy system.
248 even if the resolver doesn't barf, the next name server down
249 the line may barf. impact: qmail can't get mail through to
250 domains that are (1) lame and (2) running old versions of bind.
251 fix: never, ever, do a CNAME query. dns_cname() now does an ANY
252 query instead. this, like sendmail's analogous procedure, is
253 unreliable when a CNAME is mixed with other records.
25419961001 cleanup: switched to libfd in qmail-start.c.
25519960929 cleanup: renamed auto-hasmkffo.h to hasmkffo.h.
25619960928 cleanup: reorganized qmail-start.c.
25719960928 cleanup: used libfd in preline.c, qmail-lspawn.c,
258 qmail-popup.c, qmail-rspawn.c, qmail-start.c, qqtalk.c,
259 qsmhook.c.
26019960928 cleanup: added libfd.
26119960927 change: in SECURITY, ``nine most recent sendmail security
262 holes, four'' -> ``ten most recent sendmail security holes,
263 five.''
26419960926 change: added tcpcontrol notes to FAQ.
26519960926 change: qmail-smtpd now immediately closes connection, with a
266 warning message dedicated to Solaris, if stray newlines show up
267 in the incoming data.
26819960926 change: added INSTALL.boot.
26919960926 portability problem: on systems that can handle IP interface
270 aliases (i.e., on sa_len systems), SIOCGIFADDR returns the
271 primary address for an alias. impact: ipme_init() did not
272 include alias addresses. fix: ipme_init() avoids SIOCGIFADDR on
273 sa_len systems; on these systems, the address we want is
274 already in ifr. tnx DM.
27519960926 change: qmail-alias kills itself if locking takes longer than
276 30 seconds.
27719960926 change: qmail-pop3d no longer moves messages. tnx RS.
27819960924 change: added note to FAQ about descriptors limit. tnx RD.
27919960922 change: open_trunc() now uses 644.
28019960922 change: qmail-setup now does umask(077).
28119960922 change: maildir2mbox now does umask(077).
28219960922 change: moved subfderr buf up to 64 characters.
28319960920 change: in SECURITY, ``eight most recent sendmail security
284 holes, three'' -> ``nine most recent sendmail security holes,
285 four.''
28619960920 portability problem: init run commands are subject to job
287 control signals under more systems than HP-UX. impact: on some
288 systems (e.g., Solaris), qmail daemons would be killed. fix:
289 INSTALL now tells everybody to use csh -cf.
29019960920 change: added queue-run section to FAQ.
29119960920 change: in pine-crashing question in FAQ, added -oem and -oi,
292 so that change will work with the real sendmail too.
29319960919 change: added CNAME section to FAQ. tnx to various people.
29419960919 change: eliminated QQX_EXECHARD and QQT_EXECHARD. this means
295 that all qmail-queue invocation failures are now soft, even
296 things like EPERM.
29719960919 change: replaced ``No such address'' with ``Sorry, no mailbox
298 here by that name.'' tnx G2A.
29919960919 change: qmail-remote now includes host name in no-such-host
300 messages. tnx G2A.
30119960919 change: replaced ``Temporarily unable to canonicalize address''
302 with ``CNAME lookup failed temporarily.''
30319960918 change: improved an error message in qmail-alias.c. tnx TG.
30419960918 change: added SHELL=/bin/sh to Makefile. tnx JL.
30519960916 change: reorganized INSTALL.ids a bit.
30619960916 change: ``from smtpd'' is now ``from network''.
30719960916 change: SMTPD is now DAEMON.
30819960916 change: qmail-start sets logger uid to UID_LOG. tnx JLH.
30919960916 change: added CONF_USERL.
31019960916 change: iaafmt() now puts a dot on in-addr.arpa.
31119960915 change: added UPGRADE. suggested by several people.
31219960915 change: added qsutil error messages to qmail-log.5.
31319960915 change: qsutil error messages are now alerts.
31419960915 portability problem: on some systems, logger appears to use
315 syslog(pri,buf) instead of syslog(pri,"%s",buf). tnx JC.
316 impact: logger could barf or crash if fed messages containing
317 %. an attacker could easily cause a crash, eliminating qmail's
318 logs. fix: % is no longer considered safe for logs.
31919960912 cleanup: split seek.c into seek_*.c.
32019960912 cleanup: replaced seek_to() with seek_set().
32119960912 cleanup: introduced libseek.a.
32219960907 cleanup: split case.c into case_*.c.
32319960907 cleanup: introduced libcase.a.
32419960907 cleanup: split wait.c into wait_*.c.
32519960907 cleanup: introduced libwait.a.
32619960907 cleanup: renamed auto-haswaitp.h to haswaitp.h.
32719960907 cleanup: split open.c into open_*.c.
32819960907 cleanup: introduced libopen.a.
32919960904 change: added generic pointer to qmail-control.5. tnx HW.
33019960904 change: rewrote rcpthosts section in FAQ. tnx HW.
33119960904 change: added organization section to FAQ. tnx HW.
33219960902 qmail 0.91, gamma.
33319960902 change: control_readfile() can now handle partial lines. tnx
334 JDHB.
33519960902 change: eliminated non-fqdn note from FAQ. next version of
336 tcpserver will use DNS directly.
33719960902 change: qlist now uses NEWSENDER, not SENDER.
33819960902 change: qmail-pop3d no longer obtains a lock. tnx RS.
33919960902 change: put }g on all seds in Makefile.
34019960831 change: noted in qmail-control.5 that comments are not allowed
341 in control files. tnx J2B.
34219960829 change: used double union in alloc.c. tnx ME.
34319960829 change: replaced semicolon with colon for smtproutes port.
34419960829 change: in INSTALL, put make man just before make setup.
34519960829 change: changed a few qmail messages into alerts.
34619960829 cleanup: renamed datetime_gmt as datetime_tai.
34719960829 change: added note to UUCP question that some UUCP software
348 doesn't want preline -f. tnx SB.
34919960829 change: added question 2.4 to FAQ on SLIP/PPP.
35019960828 change: replaced owner- with owner-@host-@[] in qmail-inject.
35119690828 change: replaced owner- with owner-@host-@[] in qmail-alias.
35219960828 change: replaced owner- with owner-@host-@[] in injectbounce().
35319960828 change: replaced owner- with owner-@host-@[] in senderadd() for
354 owner hack.
35519960828 change: qmail-inject -n now prints Return-Path.
35619960825 cleanup: revised ending code in token_addrlist().
35719960825 change: tokenize now uses linelen 0 for unparse.
35819960825 change: if linelen is 0 in token822_unparse, no length limit.
35919960825 change: added LINELEN macro to qmail-inject for unparse.
36019960825 change: token822_unparse now takes linelen argument. (leaving
361 two spaces on the right before linelen.)
36219960824 cleanup: renamed token as token822.
36319960822 portability problem: under NEWS-OS, /bin/mail and /usr/ucb/mail
364 invoke sendmail with -E and -J options. tnx TU. impact:
365 couldn't send mail with those programs. fix: accept opts,
366 including _optional_ args. ugh.
36719960821 change: sendmail now quits if invoked as newaliases. tnx TU.
36819960821 portability problem: under NEWS-OS, dirent.h needs sys/types.h.
369 tnx TU. this POSIX violation also appears in some versions of
370 FreeBSD. impact: couldn't compile under NEWS-OS. fix: include
371 sys/types.h in direntry.h* and trydrent.c. [sigh]
37219960821 change: added concurrencyremote question to FAQ.
37319960821 change: added chkspawn.
37419960821 change: moved default SPAWN_NUMD up to 120.
37519960818 change: allowed ;port in smtproutes. tnx AL.
37619960818 change: introduced port in qmail-remote.c.
37719960818 change: qmail-queue records qp in Received lines. 2 lines of
378 code. tnx ME.
37919960818 change: in SECURITY, ``seven most recent sendmail security
380 holes'' -> ``eight most recent sendmail security holes.''
38119960818 change: qmail-pop3d now appends an extra blank line to every
382 message, for compatibility with popper. some clients can't
383 deal with the right thing, unfortunately. tnx FPL.
38419960818 change: added qmail-tcpto.
38519960818 change: eliminated cc -posix for NeXTs. tnx SA.
38619960818 change: eliminated loadfifo. tnx SA.
38719960818 change: integrated auto-configured fifo.c code from SA.
38819960817 change: put SYSDEPS into a more reasonable order.
38919960813 change: indicated possibility of duplication when qmail-remote
390 gets a dead connection after DATA. tnx ME.
39119960813 change: documented qmail-inject environment variables.
39219960813 change: supported per-recipient owner hack in qmail-inject.
39319960813 change: supported per-message owner hack in qmail-inject.
39419960813 change: introduced hackedruser into qmail-inject.
39519960813 change: introduced QMAILRUSER, QMAILRHOST.
39619960812 change: added QMAILINJECT option to allow address-comment form.
39719960812 change: made name-address form the default in qmail-inject.
39819960812 change: added QMAILINJECT options f and m to delete From and
399 Message-ID on input. tnx LL.
40019960812 change: added QMAILINJECT environment variable.
40119960812 change: added QMAILHOST, QMAILUSER, QMAILNAME to override
402 MAILHOST, MAILUSER, MAILNAME. tnx MG.
40319960812 change: added qmail-showctl.
40419960812 portability problem: under Solaris 2.4 and possibly other
405 systems, the linker does not give generic alignment to an array
406 of 4096 chars. tnx JP. impact: some subset of the programs
407 would (reliably) die with a bus error; in the Solaris case,
408 maildir2mbox. fix: redefine space in alloc.c to be aligned.
40919960812 change: qmail-remote no longer does CNAME lookups if there's an
410 artificial SMTP route. tnx ME.
41119960812 change: added flagcname arg to addrmangle() in qmail-remote.
41219960812 cleanup: moved host/relayhost processing earlier in
413 qmail-remote.
41419960812 change: qmail-remote stops before DATA if no RCPTs were
415 successful. tnx JLH.
41619960812 change: rewrote rcpthosts explanation in FAQ.
41719960811 change: added qmail-log.5.
41819960811 change: introduced ALIAS_PATERNALISM. configurability requested
419 by several people.
42019960811 change: eliminated go-writability test for qmeox(). the alleged
421 value of paternalism is nonexistent if nobody even notices
422 you're doing it.
42319960811 change: in qbiff, changed no-/-allowed to no-/-at-beginning,
424 no-dots-allowed, must-be-nonempty. tnx MD.
42519960811 change: in mbox.5, discouraged mail readers from looking for
426 From_ lines only after blank lines. too much crap in the world.
42719960811 change: added subject line to qreceipt success notices.
42819960811 change: added subject line to qmail-send bounce messages.
42919960811 change: qmail-alias now expects dash arg. this finally gives
430 lspawn complete control over the local -> ~user/.qmail-ext map.
43119960811 change: qmail-lspawn passes dash arg to qmail-alias.
43219960811 change: reorganized qlist acknowledgment format. again.
43319960811 change: documented EXT, EXT2, EXT3, EXT4. tnx BB.
43419960810 change: qmail-makectl now copies locals to rcpthosts. should be
435 a better default. suggested by TK.
43619960805 portability problem: new makefile generator put in tabs again.
437 sigh. impact: couldn't compile under some systems. fix: same as
438 before. tnx TG.
43919960804 change: added tcpserver instructions to FAQ.
44019960804 change: reorganized FAQ server instructions into a new section.
44119960801 qmail 0.90, gamma.
44219960801 change: qmail-qmtpd now supports rcpthosts, RELAYCLIENT.
44319960731 change: default NUMD is now 29. this prepares for weird systems
444 where getpwnam() needs more than one descriptor (but the
445 descriptor limit is still 64! ... you never know), and for
446 possible future getpwnam() replacements.
44719960731 change: popped subfderr buffer up to 32 characters. made sure
448 that everybody flushed subfderr as necessary.
44919960731 change: maildir2qmtp now prints filenames and responses.
45019960731 change: maildir2smtp now prints filenames it's trying and
451 relevant portion of SMTP responses.
45219960731 change: used succwrite() in maildir2smtp, maildir2qmtp.
453 simplifies code quite a bit.
45419960731 change: qmail-remote's blast() checks sooner for write errors.
45519960731 change: added better -e option to sendmail. tnx TG.
45619960731 change: added maildir2qmtp.
45719960730 cleanup: eliminated die_nomem() in maildir2smtp.c.
45819960730 change: dns_cname now pretends that "foo." is a CNAME for "foo"
459 to give the desired behavior for people who misuse DNS and
460 violate RFC 822. tnx RN.
46119960730 change: dns_cname now tests for empty names and ] on every
462 loop.
46319960730 change: used LSPAWN_BREAK in qmail-send.c for usermap.
46419960730 change: updated header example in qmail-header.5.
46519960730 change: added printbreak. auto-configured BREAK in dot-qmail.5,
466 qmail-lspawn.7, qmail-send.8, qmail-upgrade.7, qlist2.
46719960730 change: added printnumd. auto-configured NUMD in qmail-send.8,
468 qmail-limits.8.
46919960730 change: added printsplit. auto-configured split in qmail-upq.
47019960730 change: added dot-qmail.5.
47119960730 change: qmail-smtpd now treats HELO as including RSET.
47219960730 change: added moreinfo to qlist usage message.
47319960729 change: improved an error message in qmail-alias.
47419960729 cleanup: merged qmeox(), qmeodx().
47519960729 bug: failure to stat .qmail-owner was not an error. impact: if
476 stat failed temporarily (e.g., because of NFS), .qmail-owner
477 would be incorrectly ignored, so outgoing message would have
478 wrong envelope sender. fix: qmail-alias does temp_nfsqmail() if
479 stat() returns a temporary error.
48019960729 change: added RFCOWNER.
48119960729 change: added qmtpd setup question to FAQ.
48219960729 change: added qmail-qmtpd.
48319960728 change: revamped maildir2smtp error messages.
48419960728 change: revamped maildirwatch error messages.
48519960728 change: revamped maildir2mbox error messages.
48619960728 change: used strerr in maildir_scan().
48719960728 change: used strerr in maildir_chdir().
48819960728 change: introduced strerr.
48919960728 bug: the new tcp-env tried to read from an ndelay socket.
490 impact: TCPREMOTEINFO would always be empty. fix: unset ndelay
491 in remoteinfo.c.
49219960728 bug: if maildir2smtp saw a permanent failure after MAIL, it
493 failed to do RSET. impact: all further messages would be
494 rejected at the MAIL stage. fix: maildir2smtp now always does
495 RSET. tnx JW.
49619960728 cleanup: qmail-alias now applies lowercase and dot-to-colon
497 conversion directly to dashext, leaving everything else alone.
498 this works since all .qmail access is factored through dashext.
49919960727 portability problem: under NeXTStep, -posix is almost entirely
500 broken. impact: qmail daemons would dump core under NeXTStep.
501 fix: turn off -posix, except for loading qmail-setup, which
502 needs mkfifo(); NeXT, bless them, didn't put mkfifo() into the
503 C library where it belongs. this requires a new make command,
504 namely loadfifo.
50519960727 change: all characters 33-126 are now considered safe for logs.
506 tnx MD.
50719960727 cleanup: eliminated qp variable from mailforward().
50819960727 cleanup: maildirwatch.c includes headerbody.h.
50919960727 cleanup: eliminated match from maildirwatch.c.
51019960727 cleanup: eliminated code variable from maildir2smtp.c:doit().
51119960727 cleanup: maildir2smtp.c includes scan.h.
51219960727 cleanup: maildir.c includes str.h.
51319960727 cleanup: qmail-popup.c now includes exit.h.
51419960727 cleanup: qmail-pop3d.c now includes exit.h.
51519960727 cleanup: eliminated path from qmail-start.c.
51619960727 cleanup: eliminated birthplusnn from nextretry().
51719960727 cleanup: eliminated r from timeoutconn().
51819960727 cleanup: tcpto.c now includes byte.h.
51919960727 cleanup: spawn.c now declares initialize().
52019960727 cleanup: qmail-lspawn.c now includes str.h, byte.h.
52119960727 cleanup: qmail-inject.c now includes quote.h.
52219960727 change: qmail-check now checks separately for group
523 readability and other readability.
52419960727 bug: maildir2smtp didn't check flagehlo in PIPELINING parsing.
525 impact: a server that said PIPELINING at any point, not just
526 EHLO, would receive pipelined data. fix: check flagehlo.
52719960727 bug: readsubdir was calling pause(). impact: if a subdirectory
528 was removed, qmail-send would hang. fix: use rs->pause().
52919960727 change: used error_str in qmail-qread.
53019960727 change: qmail-qread now looks for local/remote open errors.
53119960727 cleanup: added warn() in qmail-qread.c.
53219960727 change: qmail-qread now exits 111 for temporary errors.
53319960727 change: used error_str in qmail-setup.
53419960727 change: introduced error_str.
53519960727 change: replaced qmail-check with make check in INSTALL.
53619960727 change: added check target to Makefile.
53719960727 change: replaced qmail-setup with make setup in INSTALL.
53819960727 change: indirected fake targets through do- targets.
53919960727 change: added setup target to Makefile.
54019960727 change: qmail-makectl now makes sure that defaultdomain has
541 at least one dot. e.g., enteract.com -> enteract.com, not com.
54219960726 bug: quote() failed to quote commas. impact: addresses
543 containing commas would not have been quoted correctly for
544 Return-Path or for SMTP MAIL FROM. fix: quote commas.
54519960726 change: sendmail now mentions qmail-qread, not qmail-mailq.
54619960726 change: qmail-alias now expects ext arg. this eliminates
547 LSPAWN_BREAK from qmail-alias and gives lspawn almost complete
548 control over the local -> ~user/.qmail-ext transformation. the
549 exception is that qmail-alias always uses ~user/.qmail,
550 ignoring ext, if local is the same as user.
55119960726 change: qmail-lspawn passes ext to qmail-alias.
55219960726 change: alloc() now uses up a 4K space before calling malloc().
55319960726 change: ipalloc allocation base is now 10. 100 was silly.
55419960726 change: stralloc allocation base is now 30.
55519960726 change: injectbounce() now supports the owner hack.
55619960726 change: qmail-smtpd no longer requires HELO. tnx K1J.
55719960726 cleanup: replaced makereceived() with dohelo().
55819960726 change: qmail-smtpd is back to 555 for syntax errors.
55919960725 change: qmail-alias now supports the owner hack. tnx to RN for
560 prodding me to look at this problem.
56119960725 change: senderadd() now supports the owner hack.
56219960725 cleanup: split off senderadd().
56319960725 change: added pine-crashing note to FAQ.
56419960725 change: added procmail config.h note to INSTALL.mbox.
56519960725 change: added elm TMPDIR note to INSTALL.mbox.
56619960725 change: added pine.conf note to INSTALL.mbox.
56719960724 change: added fixup note to FAQ.
56819960724 change: qmail-inject now exits 111 for temporary errors.
56919960724 change: qmail-smtpd now appends RELAYCLIENT to incoming
570 recipient domain names.
57119960724 cleanup: moved relayclient out of qmail-smtpd's addrallowed()
572 into caller.
57319960724 change: added rcpthosts wildcards.
57419960724 change: added clean target to Makefile.
57519960723 change: added virtualdomains exceptions.
57619960722 change: added BLURB4.
57719960722 change: added BLURB3.
57819960722 change: eliminated smarthost and localnet.
57919960722 change: incorporated relaymap, contributed by LW. renamed it
580 as smtproutes.
58119960722 change: qmail-popup now supports APOP. suggested by BG, who
582 distributed similar changes.
58319960722 change: qmail-popup now sends APOP timestamp to checkpassword.
58419960722 cleanup: in qmail-popup, split off doanddie().
58519960722 change: qmail-popup now prints APOP timestamp in banner.
58619960722 change: added hostname argument to qmail-popup.
58719960722 cleanup: in qmail-popup, split out() into out(), outflush().
58819960722 cleanup: in qmail-popup, introduced pop3_greet().
58919960721 portability problem: under Unisys SVR4, hostname is not in the
590 usual path. impact: qmail-makectl fails. fix: added hostname
591 command here, used it in qmail-makectl.
59219960721 portability problem: on some sysctl-based systems, apparently
593 gethostname() doesn't write anything if the output buffer is
594 too small. it should write a truncated name. impact: if anyone
595 has a hostname longer than 64 characters, maildirs could get up
596 to 64 characters of garbage, rather than a truncated hostname.
597 fix: qmail-alias now does *host = 0 before calling gethostname.
59819960721 change: updated FAQ examples from qsmhook to preline.
59919960721 change: added preline.
60019960721 change: qsmhook now uses signal_init, signal_uninit.
60119960721 change: qsmhook now checks specifically for empty args.
60219960721 change: documented mbox.
60319960721 change: added EXT, EXT2, EXT3, EXT4.
60419960721 change: added LAST response to qmail-pop3d, always returning
605 OK 0. tnx RN.
60619960721 change: added qmail home page to README.
60719960721 change: added HELP response to qmail-smtpd. tnx RN.
60819960720 change: expanded, vertically, the qmail-inject error message
609 for unparseable header fields.
61019960720 change: logo is now dolphin. tnx CEJ.
61119960719 qmail 0.76, beta.
61219960719 change: used LSPAWN_BREAK in qmail-alias for deciding how to
613 handle extensions. this should produce better behavior in the
614 (unsupported) case that LSPAWN_BREAK is not a hyphen.
61519960719 bug: qmail-smtpd didn't check for null arg on MAIL, RCPT.
616 impact: qmail-smtpd would deref 0 and crash. fix: qmail-smtpd
617 now gives syntax error on null arg.
61819960719 change: documented UFLINE in qmail-command.8. tnx TG.
61919960718 change: added maildir2smtp.
62019960718 cleanup: introduced maildir.c. used it in maildir2mbox.c,
621 maildirwatch.c.
62219960718 change: added maildirwatch.
62319960718 cleanup: maildir2mbox now sets up pq2 as it is deleting from
624 pq, rather than simultaneously with pq.
62519960718 change: added H_DELIVEREDTO.
62619960718 portability problem: Unisys requires -lsocket -lnsl. impact:
627 couldn't compile under Unisys. fix: added unix_sv section to
628 make-cmds.sh. tnx TVP.
62919960718 change: added unix_sv section in find-systype. tnx TVP.
63019960717 change: qmail-alias now appends newline if .qmail does not end
631 with a newline. tnx MC.
63219960717 change: qmail-alias now defers delivery for a blank line only
633 if it is the first line of the file. handles user behavior
634 described by MC of putting many newlines at end of file.
63519960717 bug: qmail-inject looked for dots in user part, not just host
636 part, when deciding whether to use defaultdomain. impact: the
637 address joe.bloggs@here didn't have defaultdomain added. fix:
638 qmail-inject now stops at the @.
63919960717 change: updated INSTALL.alias to mention qmsmac.
64019960717 change: syntax error code for SMTP is now 501.
64119960717 change: added -e option to sendmail. tnx TG.
64219960716 change: changed ~alias files to .qmail-local, not .qmaillocal.
643 suggested by many people.
64419960716 change: redid qmail-alias/qmail-lspawn interface.
64519960716 change: replaced EXTENSION, USEREXT with LOCAL.
64619960716 change: qmail-queue now removes intd, mess upon error, as long
647 as it doesn't time out. suggested by BB et al.
64819960716 change: added flagmademess, flagmadeintd to qmail-queue.c.
64919960716 cleanup: changed todofd to intdfd in qmail-queue.c.
65019960716 cleanup: added cleanup() to qmail-queue.c.
65119960716 change: added timeout to tcp-env.c, default 30 seconds.
65219960716 change: remoteinfo_get() now uses timeoutconn().
65319960715 change: added procmail config.h note to FAQ.
65419960704 change: qmail-upgrade.7 now warns administrators that ~alias
655 generally doesn't apply to addresses starting with a user name.
65619960703 change: added echo \c note to FAQ. tnx PJG.
65719960702 change: qmail-smtpd now accepts HELO without an argument.
658 tnx K1J, J1B.
65919960627 change: qmail-lspawn.8 now mentions that qmail-lspawn doesn't
660 set up supplementary groups. tnx TG.
66119960625 portability problem: under Linux, read(,,0) doesn't do proper
662 error slippage. impact: timeoutconn() would always report
663 success; if a connection failed, qmail-remote would report a
664 greeting failure and skip all further MX records. tnx ME. fix:
665 timeoutconn() now uses getpeername() to check for success.
66619960625 change: qmail-smtpd now mentions disk full for QQT_WRITE.
66719960625 change: qmail-inject now mentions disk full for QQT_WRITE.
66819960622 change: if RELAYCLIENT is set, qmail-smtpd skips rcpthosts.
66919960609 change: updated INSTALL for current SMTP responses.
67019960607 change: clarified INSTALL.qsmhook examples. tnx S1R.
67119960607 change: added subject parsing to qlist.c. tnx RN.
67219960607 cleanup: used case_diffb in qlist.c.
67319960607 change: added extra log information to INSTALL examples.
67419960606 change: added -Pn to uucp line in FAQ. tnx DWS.
67519960605 portability problem: under Solaris, /usr/bin/groups incorrectly
676 reports your groups in /etc/group, rather than the results of
677 getgroups(). tnx MD, PJG. impact: test #19 in INSTALL fails.
678 fix: added special note to test #19 (sigh) about Solaris.
67919960605 change: improved maildir setup commands in INSTALL.mbox.
68019960605 change: on success, qmail-alias logs forwarding qp. 9 lines
681 extra code.
68219960605 change: qmail-send logs qp for bounce. 6 lines extra code.
68319960605 change: qmail-smtpd includes qp in its response when it accepts
684 a message. 7 lines extra code. requested by MD and others.
68519960605 change: added qqtalk_qp.
68619960605 change: qmail-send now logs uid and qp from todo file. 14 lines
687 extra code.
68819960605 change: qmail-queue now records uid and qp in u and p lines
689 in todo file. 7 lines extra code.
69019960605 change: improved qmail-alias x-bit error messages.
69119960605 change: newline in log is now converted to /, not underscore.
69219960604 change: when it accepts a message, qmail-smtpd includes the
693 local time in its 250 response.
69419960604 change: on success, qmail-alias prints delivery counts,
695 file+forward+program.
69619960603 change: qmail-remote now reports IP address on success. tnx MD.
69719960603 change: qmail-send now logs success and failure reports, not
698 just deferral reports.
69919960603 change: added netbsd section in find-systype, same as bsd.os
700 section. this will affect netbsd-* systypes. tnx MBS.
70119960530 qmail 0.75, beta.
70219960528 change: added qmail.7. tnx MD.
70319960525 change: added qmail-pop3d. tnx RN.
70419960525 change: added qmail-popup. tnx RN.
70519960525 change: added elm filter section to FAQ. tnx GB.
70619960502 portability problem: on many systems, select() on an
707 almost-full pipe incorrectly says writable. tnx ME for running
708 into this and helping track it down. impact: if qmail-send
709 writes a pipeful to qmail-lspawn or qmail-rspawn before they
710 can react (because of high concurrency, high load, or long
711 addresses), it will receive an incorrect -1/EAGAIN, and will
712 conclude that spawn died. sysadmin will have to restart qmail,
713 and messages will be duplicated. fix: in qmail-send.c,
714 busy-loop if write() to spawn returns any error other than
715 EPIPE.
71619960501 bug: qmail-alias treated NAMETOOLONG and NOTDIR as temporary
717 errors. impact: qmail-alias never looked for -default; even if
718 mail was destined to bounce, it would have to time out first.
719 fix: qmail-alias now uses error_temp().
72019960430 bug: qmail-smtpd treated qq crash as permanent error. impact:
721 if somebody actively kills qq, mail will be incorrectly
722 bounced. tnx SS. fix: qmail-smtpd now treats only TOOLONG and
723 EXECHARD as permanent errors.
72419960430 cleanup: eliminated QQT_TTY from qqtalk.h.
72519960428 change: added ``warning: '' before trouble-marking message.
72619960428 change: added percenthack. requested by GB.
72719960428 cleanup: switched to auto-generated Makefile.
72819960428 cleanup: switched to auto-generated .o dependencies.
72919960428 cleanup: eliminated fmt.o, scan.o from Makefile.
73019960428 portability problem: under HP-UX 10, the rc pgrp is sent HUP
731 when rc finishes. tnx BG. impact: the qmail daemons are killed
732 when rc finishes. fix: added special note in INSTALL (sigh) to
733 use csh -cf.
73419960427 cleanup: added PORT_SMTP in qmail-remote.c.
73519960427 cleanup: introduced timeoutwrite.c. used it in qmail-remote.c.
73619960427 cleanup: introduced timeoutread.c. used it in qmail-remote.c.
73719960427 cleanup: introduced timeoutconn.c. used it in qmail-remote.c.
73819960427 change: added timeoutconnect. default: 60 seconds.
73919960427 change: added pop3d instructions to FAQ. tnx RN.
74019960427 change: eliminated env manipulation from qmail-start. tnx BG.
74119960427 change: headerbody now ends header, inserting blank line, if
742 first line of a header field doesn't pass hfield_valid. tnx TG.
74319960427 change: headerbody now prepends MBOX-Line: to any header line
744 starting From_. this lets qmail-inject work with elm's bounce.
745 tnx OR, K1J, et al.
74619960426 change: added moreinfo arg to qlist and qlist2.
74719960426 change: added signal_uncatchchild() to qmail-send.c. tnx BG.
748 now, if sysadmin sets SIGCHLD to SIG_IGN before invoking
749 qmail-send [sigh], qmail-send won't screw up bounce messages.
75019960426 change: dns_cname now checks whether last character is ],
751 rather than whether first character is [, for quick return.
75219960426 cleanup: glue is now global in dns.c.
75319960426 cleanup: qmail-remote no longer does stralloc_0 for host and
754 canonhost.
75519960426 change: dns_mxip no longer rejects [foo].bar.
75619960426 change: dns_mxip no longer requires for bracket that input
757 be 0-terminated.
75819960426 change: qmail-start can now take logger as an argument.
75919960426 change: qmail-start now invokes qmail-send in foreground (as
760 parent of other processes).
76119960426 change: added mailsubj. tnx GAW.
76219960426 portability problem: under some systems, can't lock read-only
763 file. impact: maildir2mbox would always fail on those systems.
764 fix: maildir2mbox now opens a separate lock fd. tnx BG.
76519960426 cleanup: removed unnecessary #!/bin/sh and # AUTO from mctl.sh.
76619960426 change: added qmail-qstat.
76719960426 change: added qmail-qread.8.
76819960426 change: renamed qmail-mailq as qmail-qread.
76919960419 change: qmail-alias now defers delivery rather than skipping
770 blank lines in .qmail.
77119960419 change: in qmail-lspawn.c, lowercased name before getpwnam().
772 really getpwnam() should do this, but oh well.
77319960419 change: added username to qmail-lspawn.c, with LSPAWN_USERLEN
774 in conf-unusual.h. names longer than LSPAWN_USERLEN will skip
775 getpwnam().
77619960419 change: if qlist doesn't see any cmds, it presumes that you
777 meant to subscribe.
77819960419 change: reorganized qlist acknowledgment format.
77919960415 change: reorganized and rewrote FAQ.
78019960415 change: renamed HOWTO as FAQ.
78119960414 change: in qmail-alias, converted extension to lowercase just
782 before qmeopen(), qmeox() calls. thus EXTENSION and USEREXT and
783 RECIPIENT will preserve case passed by qmail-lspawn, while
784 .qmailext lookups will not.
78519960414 change: removed case_lowers(r) from qmail-lspawn.c. tnx JLH.
78619960414 change: moved extension . -> : conversion to just before
787 qmeopen(), qmeox() calls in qmail-alias.c. thus EXTENSION and
788 USEREXT and RECIPIENT will preserve dots.
78919960414 change: qsmhook -x now does case-independent comparison.
79019960413 change: added procmail instructions to HOWTO.
79119960409 bug: qmail-alias does not check for newlines when it generates
792 Return-Path. impact: resulting Return-Path header field will be
793 illegal, if sender address contains newline followed by
794 something other than whitespace. fix: qmail-alias now replaces
795 newline with underscore in rpline.
79619960409 change: added leaf UUCP description to HOWTO. tnx J2K.
79719960409 change: added -B option to sendmail. tnx OR.
79819960409 change: qlist now makes lists unwritable (after renaming from
799 .qtemp to .qmail). tnx MLH.
80019960409 change: added flagdtline to qsmhook.c, based on -l option.
80119960409 change: added PIPELINING declaration to qmail-smtpd. tnx JGM.
80219960409 change: qmail-smtpd now flushes output instantly after DATA,
803 QUIT, HELO, EHLO, NOOP, VRFY, or any 502.
80419960409 change: qmail-smtpd now flushes output upon read() and death.
80519960409 change: qmail-smtpd no longer flushes output in out().
80619960409 change: increased qmail-smtpd outbuf size from 128 to 512.
80719960409 cleanup: in qmail-smtpd, eliminated ssinit() in favor of FDBUF.
80819960409 bug: qmail-alias produced aliasfoo-owner rather than foo-owner
809 as envelope sender for ~alias/.qmailfoo. tnx DS. impact: wrong
810 envelope sender whenever ~alias/.qmailfoo-owner existed. fix:
811 qmail-alias now checks for hyphen at beginning of extension.
81219960409 change: added _ESMTP to end of 220. tnx JLH.
81319960409 change: moved out("\r\n") out of smtp_greet() into callers.
814 this improves the flushing behavior on 221.
81519960328 qmail 0.74, beta.
81619960326 change: changed subdirectory split from 32 to 23.
81719960326 portability problem: some versions of make don't understand
818 that a line with just a tab is blank. impact: couldn't compile
819 under those systems. fix: eliminated extra tab from Makefile.
820 tnx TG.
82119960325 change: added qmail-mailq.
82219960325 change: introduced readsubdir.
82319960325 change: qmail-setup makes split; qmail-check checks split.
82419960325 change: used split in qmail-send, qmail-clean, qmail-queue
825 for mess, info, local, remote.
82619960325 change: fmtqfn now supports split queue subdirectories.
82719960325 cleanup: eliminated cat2s().
82819960325 cleanup: introduced fmtqfn.c. used it in qmail-queue.c,
829 qmail-send.c, qmail-clean.c.
83019960325 change: in protocol between qmail-clean and qmail-send, now
831 using intd/ instead of mess/.
83219960325 change: qmail-queue.c and triggerpull.c now work inside queue
833 subdirectory.
83419960325 change: spawn.c now checks whether message is a regular file.
83519960325 change: spawn.c now allows slashes in messid except at
836 beginning.
83719960325 cleanup: introduced fnmake_split in qmail-send.c.
83819960325 cleanup: eliminated strnum in qmail-send.c in favor of
839 fnmake_{info,todo,mess,chanaddr} and fnmake2_bounce.
84019960325 cleanup: introduced strnum3 in qmail-send.c for the logging
841 uses of strnum.
84219960325 cleanup: in qmail-send.c, getinfo() now takes id argument.
84319960325 cleanup: qmail-send.c now preallocates space for fn, fn2.
84419960325 change: time zone is now -0000 instead of +0000. encouraging
845 DRUMS to use this as an i-don't-know-the-local-time indicator.
84619960324 change: qmail-rspawn.c now calls tcpto_clean().
84719960324 cleanup: spawn.c now calls initialize().
84819960324 change: qmail-setup makes lock/tcpto; qmail-check checks it.
84919960324 change: qmail-remote now quickly skips connect() to a host that
850 seems to be down. tnx BP for pressuring me to get this done.
85119960323 change: in qmail-alias.8, renamed mboxg as mboxrd. tnx RD.
852 idea was popularized by RD in June 1995.
85319960322 cleanup: eliminated subfd_init().
85419960322 change: qbiff now removes the word Subject.
85519960322 change: now /bin/true instead of /dev/null in the generic
856 INSTALL.ids instructions. tnx JPR.
85719960322 change: added hfield_skipname(). tnx RN.
85819960322 bug: qmail-inject did not check whether USER needed quoting.
859 impact: if USER had weird characters, the From address would
860 generally be wrong, unless the user manually set up MAILUSER
861 with proper quoting. fix: qmail-inject sets up a quoted-string
862 if necessary.
86319960322 cleanup: separated out quote_need() in quote.c.
86419960322 cleanup: added stralloc_catb.c. used it in qmail-alias.c,
865 qmail-send.c.
86619960322 change: qmail-send now uses a quadratic retry schedule from
867 birth of each message. this also eliminates clustering.
86819960322 cleanup: separated out nextretry() in qmail-send.c.
86919960322 change: qmail-remote now passes all non-@ addresses through
870 without comment, not just <> and <#>.
87119960322 change: replaced # test with anything@[] test in qmail-inject.
87219960322 change: replaced # with #@[] in qlist.c, qmail-alias.c,
873 qmail-send.c, qreceipt.c.
87419960322 change: qmail-lspawn no longer discards messages to <#>.
87519960322 cleanup: in qlist, used str_diff for <> and <#> tests.
87619960322 change: qmail-alias is now back to testing envelope sender for
877 <> and <#>, rather than things without an @.
87819960321 change: added 8BITMIME support to qmail-smtpd.
87919960321 change: added ESMTP support to qmail-smtpd.
88019960318 change: used NEWSENDER in place of SENDER for |forward.
88119960318 change: added NEWSENDER.
88219960318 change: added HCMSSC support to qmail-alias.c.
88319960318 change: added HCMSSC support to spawn.c.
88419960318 change: added HCMSSC support to qmail-remote.c.
88519960318 change: added HCMSSC support to qmail-smtpd.c.
88619960317 portability problem: SCO requires -lsocket -lnsl. impact:
887 couldn't compile under SCO. fix: added SCO section in
888 make-cmds.sh. tnx JPR. note that this is for OSR 5; 3.2v4.2
889 will need more fixes, and old 3.2 is basically hopeless.
89019960317 bug: newfield_datemake would leave newfield_date alone if it
891 was already initialized, even though qmail-send calls
892 newfield_datemake anew for each bounce. impact: bounce messages
893 would usually have an incorrect Date field. fix: redid
894 newfield_datemake to update newfield_date each time.
89519960317 change: allowed . and @ in 822 phrases; 822 doesn't allow them,
896 but they do show up. tnx to the DRUMS group.
89719960317 change: replaced GMT with +0000 in date822fmt.c. this confuses
898 a few versions of getdate(), but the DRUMS group is going to
899 outlaw GMT, not just recommend against it as in 1123.
90019960317 change: redefined ALIAS_EMPTY to take advantage of . for file
901 deliveries. tnx RN.
90219960317 change: qmail-alias now allows . as well as / to start file
903 deliveries. tnx RN.
90419960317 change: qmail-alias now dies (soft) if .qmail is writable to
905 others, rather than silently ignoring it.
90619960317 change: qmail-alias now dies (soft) if flagforwardonly is
907 violated, rather than silently ignoring the bad instructions.
90819960317 change: qmail-alias now ignores x bit on empty .qmail files.
90919960317 bug: if RCPT gave 4xx and DATA gave 5xx, qmail-rspawn would
910 incorrectly assign a permanent failure to that recipient.
911 impact: in that case, mail would be incorrectly bounced. fix:
912 remove orr > 0 test from qmail-rspawn.c.
91319960310 change: tcp-env now uses signal_uninit(). [sigh]
91419960310 change: tcp-env now specifically unsets HOST and INFO if they
915 are not applicable. just trying to make it more widely usable.
91619960310 cleanup: used byte_* in remoteinfo.c, ipme.c, tcp-env.c.
91719960310 cleanup: added readwrite.h, eliminated sys.h.
91819960310 cleanup: included byte.h in qmail-send.c.
91919960310 cleanup: eliminated i and j from forward.c's main().
92019960310 cleanup: eliminated wstat from qlist.c.
92119960310 cleanup: eliminated die_nomem() parameter in qmail-setup.c.
92219960310 cleanup: eliminated i from qmail-remote's addrmangle().
92319960310 cleanup: added exit.h.
92419960310 cleanup: split ipalloc.c off of ip.c.
92519960310 cleanup: added fmt_strn.c, eliminated fmt_strncpy.c.
92619960310 change: reorganized INSTALL to do some pre-upgrade tests.
927 tnx RN.
92819960310 change: reordered steps in upgrade procedure in INSTALL.
92919960308 change: eliminated ownership test in qmail-alias.c. tnx DS.
93019960304 change: in SECURITY, ``six most recent sendmail security
931 holes'' -> ``seven most recent sendmail security holes.''
93219960303 qmail 0.73, beta.
93319960303 change: added SYSDEPS.
93419960303 cleanup: revamped select.h autoconfiguration.
93519960303 cleanup: revamped fork.h autoconfiguration.
93619960303 cleanup: revamped direntry.h autoconfiguration. target is now
937 direntry.h; auto-hasdrent.h is gone.
93819960303 change: tryflock.c now includes <sys/types.h>, for consistency
939 with lock.c. may affect portability.
94019960302 portability problem: under BSDI, can't set sticky on normal
941 files. dorks. impact: the new qlist doesn't work under BSDI;
942 be glad I test things before release. fix: qmail-alias and
943 qlist now use executable instead of sticky.
94419960302 change: gfrom now quotes >From and >>From etc. as well as From;
945 in other words, I'm switching from mbox format to mboxg format.
94619960302 cleanup: added gfrom.c. used it in qmail-alias.c, maildir2mbox.c.
94719960302 change: addbounce() now substitutes \n\n -> \n/ in reports,
948 and \n -> _ in recips. thus bounces can now be reliably parsed.
94919960302 change: if qmail-send had trouble reading the original message
950 or the list of addresses for a bounce, it used to give up and
951 send a bounce with "Oh no! I had trouble reading the rest of
952 your message" or some such. now it aborts the bounce attempt
953 and tries again later.
95419960302 cleanup: added qqtalk_fail(). used it in qmail-alias.c,
955 qmail-smtpd.c.
95619960302 bug: if mailforward() had trouble reading message (e.g.,
957 because of an I/O error), it marked an error but kept reading.
958 impact: could loop forever. fix: upon error, break.
95919960302 change: maildir2mbox now scans (restrictively) for return-path.
96019960302 change: qbiff now prints subject and body, up to 74 chars.
96119960302 change: added H_SUBJECT to hfield.
96219960302 change: qbiff now puts TO before FROM.
96319960301 cleanup: added fmt_str.c. used it in many places.
96419960301 change: qmail-send now says something if you've told it to exit
965 but it's waiting for some deliveries. tnx RN.
96619960301 change: qmail-alias -n now continues (with warning) if home
967 directory is sticky. tnx RN.
96819960301 change: improved usage messages in qmail-alias.c. tnx RN.
96919960301 change: put limit on length of addresses in qlist.
97019960301 change: added exit 99 support to qmail-alias. tnx RN.
97119960301 change: qmail-alias now exits immediately on temporary or
972 permanent error. rewrote section in qmail-alias.8 accordingly.
97319960301 cleanup: eliminated flagsuccesses from qmail-alias.c.
97419960301 change: added usermap.
97519960301 bug: failure to append to mbox was a permanent error. impact:
976 if mbox was temporarily unopenable (e.g., because fds were
977 low), mail would be incorrectly bounced. fix: failure is now
978 temporary. tnx DS.
97919960229 change: qmail-alias now preserves any envelope sender that
980 doesn't contain an @, not just <> and <#>.
98119960229 cleanup: revamped byte_* interface.
98219960229 cleanup: renamed str_cpy as str_copy.
98319960229 cleanup: added str_chr.c. used it in qbiff.c, qmail-smtpd.c.
98419960229 cleanup: added str_rchr.c. used it in qmail-send.c, quote.c,
985 qmail-remote.c.
98619960229 cleanup: added byte_rchr.c. used it in qmail-smtpd.c, spawn.c.
98719960229 cleanup: used USEREXT instead of RECIPIENT in qsmhook.c.
98819960229 cleanup: used USEREXT instead of RECIPIENT in qbiff.c.
98919960229 cleanup: removed j and k from rewrite() in qmail-send.c.
99019960229 portability problem: under HP-UX 10 and Solaris 2.5, can't
991 setgroups()/setgid() to the system's nogroup/nobody gid. dorks.
992 impact: inetd chokes, so all SMTP connections are rejected; and
993 ``alias'' mail, including postmaster, bounces. fix: in
994 INSTALL.ids, set up a separate powerless gid (tentatively
995 ``nofiles'') for qmaild and alias. tnx DS and PJG.
99619960229 change: qreceipt now uses qqtalk rather than qmail-inject.
99719960229 change: qlist now uses qqtalk rather than qmail-inject.
99819960229 change: incorporated qmail-setup patch from RN for better
999 error messages.
100019960228 change: added LSPAWN_BREAK in conf-unusual.h; used it in
1001 lspawn.c. configurability requested by PJG.
100219960228 portability problem: on several systems, including everything
1003 from DEC, select() on a pipe reader returns 1 if there aren't
1004 any writers yet. pointed out by DS. impact: qmail-send chewed
1005 up lots of CPU time. fix: trigger_set() now opens the pipe for
1006 writing after opening it for reading. also added trynpbg1; on
1007 working systems, no point in wasting the extra fd.
100819960228 change: qmail-alias uses .qmail sticky bit for forwardonly.
100919960228 change: qlist now sets sticky bit on .qmail file.
101019960228 change: un-documented +list.
101119960228 portability problem: on HP-UX and possibly other systems, the
1012 supplementary group list does not include the gid. pointed out
1013 by DS. impact: on those systems, tryshsgr could incorrectly set
1014 hasshsgr; this would prevent qmail-send from running. fix: if
1015 tryshsgr sees that getgroups() returns 0, now it actively sets
1016 up a supplementary group list. added chkshsgr to make sure the
1017 setgroups() will work.
101819960227 cleanup: eliminated GETSHORT in dns.c in favor of getshort().
101919960227 cleanup: deleted h->len < 3 test from qlist.c:dobody. tnx RN.
102019960227 change: replaced ~ with $HOME in INSTALL.mbox.
102119960227 change: added note about setgid-mail bits to INSTALL.mbox.
102219960227 change: added forward.1.
102319960227 change: modified forward to allow multiple addresses.
102419960227 change: modified forward to take an entire address, not just a
1025 hostname.
102619960227 change: renamed qrelay as forward.
102719960227 change: added USEREXT support to qmail-alias.
102819960227 change: added -F to sendmail. the need for this was pointed
1029 out by RN.
103019960227 change: added 2 bytes of slop in alloc().
103119960227 bug: received_setup() was not allowing space for the final \0.
1032 impact: none; the line length is always between 65 and 75
1033 characters, which gives at least 45 characters of slop with
1034 existing malloc() implementations. fix: leave space. tnx NH.
1035 note that the bug here is really in fmt_strncpy, which was
1036 written before i was truly free of the curse of libc.a.
103719960227 change: added ALIAS_EMPTY in conf-unusual.h; used it in
1038 qmail-alias.c. tnx PJG.
103919960227 change: added SPAWN_NUMD in conf-unusual.h; used it in spawn.c.
104019960227 change: added conf-unusual.h.
104119960227 cleanup: replaced sizeof(short) with 2 in dns.c.
104219960227 portability problem: on an Alpha, long is 64 bits. pointed out
1043 by DS. impact: address lookups produced incorrect results on an
1044 Alpha; qmail-makectl and qmail-remote failed. fix: replaced
1045 sizeof(long) with 4 in dns.c.
104619960227 portability problem: on an Alpha, bzero() is declared properly
1047 via sys/time.h. impact: couldn't compile on an Alpha. fix:
1048 removed bzero() declaration from select.h. tnx DS.
104919960227 portability problem: under SCO, sys/file.h is not protected.
1050 impact: couldn't compile under SCO. fix: include sys/types.h in
1051 lock.c. tnx RN.
105219960219 change: added some .qmail-list hints to qlist.1.
105319960219 change: added +list support to qmail-alias.
105419960215 change: added THANKS.
105519960212 bug: foo was not initialized in qrelay.c. impact: depends on
1056 the machine; on some machines, no effect; on other machines,
1057 guaranteed core dump. fix: initialized foo. tnx DS.
105819960209 qmail 0.72, beta.
105919960209 change: qmail-alias now replaces dot, not slash, with colon.
1060 also, qmeopen() makes sure that .qmail file is S_IFREG; I hope
1061 this doesn't cause portability problems.
106219960209 change: added success-reporting procedure to INSTALL.
106319960208 change: added VERSION.
106419960208 change: added qlist2.
106519960208 change: revamped qlist interface. tnx RN.
106619960208 change: improved an error message in qlist.c.
106719960208 change: added qrelay. added relay section to HOWTO. tnx DS.
106819960208 cleanup: included substdio.h in qqtalk.h.
106919960207 bug: prioq_delmin() wasn't guaranteeing heap structure on the
1070 last element. impact: scheduled passes could have been delayed,
1071 conceivably as long as half an hour. fix: prioq_delmin() now
1072 checks when it can safely move the last element.
107319960207 change: added maildirmake.1, maildir2mbox.1.
107419960206 change: revised logo paragraph in THOUGHTS.
107519960206 change: replaced nowhere.org with nowhere.mil in examples.
1076 nowhere.org is a real domain... [sigh]
107719960206 change: added qreceipt.1.
107819960206 portability problem: IRIX doesn't have vfork. pointed out by
1079 DS. impact: couldn't compile under IRIX. fix: added fork.h,
1080 tryvfork.c.
108119960206 portability problem: IRIX doesn't have ranlib. pointed out by
1082 DS. impact: couldn't compile under IRIX. fix: added IRIX
1083 section in make-cmds.sh.
108419960205 cleanup: removed warning from substdio_copy() documentation; in
1085 fact, substdio_copy() can be used safely on a fed substdio.
108619960205 change: added qbiff.1.
108719960204 change: implemented localnet. removed relevant paragraph from
1088 THOUGHTS. tnx IS.
108919960204 change: in qmail-remote.8, explained the dangers of smarthost.
1090 tnx IS.
109119960204 change: implemented virtualdomains wildcards. tnx JLH.
109219960203 change: qmail-send now handles virtualdomains _after_ locals.
1093 updated INSTALL.qsmhook appropriately.
109419960203 change: added note to INSTALL.alias about ~ftp, ~www, ~uucp
1095 being owned by root.
109619960130 cleanup: in qlist.c, renamed flagremoved as flagwasthere.
109719960130 bug: qmail-send did not pay attention to flagexitasap in
1098 pass_dochan(). impact: qmail-send would happily start new
1099 deliveries even if it wanted to exit. fix: qmail-send now
1100 returns immediately in pass_selprep() and pass_dochan() if
1101 flagexitasap.
110219960130 change: in qlist.c and qlist.1, renamed ext as list.
110319960130 change: in qlist.c and qlist.1, renamed manager as owner.
110419960129 qmail 0.71, beta.
110519960129 change: mentioned djb-qmailbeta in README. tnx MWE.
110619960129 change: added a note to INSTALL.mbox making clear that
1107 Mailbox is in mbox format. tnx MWE.
110819960129 change: qlist now warns you if it didn't see any cmds. tnx RN.
110919960129 change: incorporated qlist patch from RN to refuse double subs.
111019960129 change: added qlist.1, contributed by RN. mangled it a bit.
111119960129 bug: comment was not allowed in ``phrase (comment) <route>'';
1112 pointed out by RN. impact: some correct address lists could be
1113 mis-parsed by qmail-inject or qlist. fix: token.c now allows
1114 TOKEN_COMMENT in the appropriate scan.
111519960128 change: added a logo paragraph to THOUGHTS.
111619960127 change: implemented rcpthosts.
111719960127 change: split up some uses of putflush in qmail-remote,
1118 qmail-smtpd, spawn.c. eliminated NODELAY and corresponding
1119 paragraph in THOUGHTS.
112019960127 change: added quote2(). used it in qmail-alias, qmail-send,
1121 qreceipt. now addresses are properly quoted in the From, To,
1122 and internal Return-Path of bounces; the From and To of
1123 receipts; and the Return-Path/RPLINE of delivered messages.
1124 removed relevant paragraph from THOUGHTS.
112519960127 change: in RFCLOOPS, documented fact that Delivered-To address
1126 is conventionally not quoted.
112719960127 change: knocked default SMTP timeouts down to 20 minutes.
112819960127 change: added INSTALL.ids. tnx RN.
112919960127 change: in INSTALL, noted that nogroup should already exist.
113019960127 bug: pass_selprep checked pqchan[c] even if pass[c].id. impact:
1131 qmail-send wasted CPU time whenever more than one message was
1132 waiting on a blocked channel. fix: pass_selprep now checks
1133 !pass[c].id.
113419960127 bug: programs invoked from qmail-alias were immune to SIGPIPE.
1135 impact: a delivery pipeline such as |yes|head -1000 would loop
1136 forever, since yes does not check for write errors. fix: added
1137 signal_uninit(). used it before execvp in qmail-alias. [sigh]
113819960127 cleanup: added date822fmt.c. used it in newfield.c, qmail-queue.
113919960127 cleanup: added fmt_uint0.c. used it in myctime.c, newfield.c,
1140 qmail-queue.
114119960127 cleanup: added dnsdoe.c. used it in dnscname, dnsfq, dnsip,
1142 dnsmxip, dnsptr.
114319960127 cleanup: eliminated temp from dnsfq.c.
114419960127 bug: gen_allocdefs was making assumptions incompatible with the
1145 alloc_re interface. impact: qmail-send would dump core if you
1146 ran out of memory. fix: changed alloc_re interface.
114719960126 portability problem: some versions of Linux don't have
1148 net/route.h. pointed out by RN. impact: couldn't compile under
1149 those versions. fix: ipme.c no longer includes net/route.h;
1150 hopefully this won't cause new portability problems.
115119960126 change: added chmod instructions to INSTALL and INSTALL.alias.
1152 tnx RN.
115319960126 change: INSTALL now refers to the traditional sendmail spot
1154 (/usr/lib), not the BSD 4.4 spot (/usr/sbin). tnx RN.
115519960126 change: make auto-uids.h now creates auto-uids.h.tmp first.
1156 thus, if someone disobeys the installation instructions, and
1157 his make fails to remove targets upon error, he'll still be
1158 okay. tnx RN.
115919960126 change: added forgeries.7.
116019960125 cleanup: eliminated flagverbose, flagmetoo in sendmail.
116119960125 cleanup: added substdio_copy.c. used it at several spots.
116219960125 cleanup: added constmap.c. qmail-send now uses constmap for
1163 locals and virtualdomains. this will speed things up: no
1164 problem now to have thousands of virtual domains. removed
1165 relevant paragraph from THOUGHTS.
116619960125 change: added linux section in find-systype. this will affect
1167 linux-* systypes. tnx RN for relevant info.
116819960124 change: added -od, -oe, -p, -f to sendmail. the need for
1169 these was pointed out by TN.
117019960124 bug: qmail-smtpd was reading from descriptor 1. impact: none;
1171 in normal use, both 0 and 1 point to the network. fix: changed
1172 1 to 0.
117319960124 bug: qmail-alias treated any .qmail open failure as permanent.
1174 impact: if a .qmail file was temporarily unopenable (e.g.,
1175 because of NFS), it was incorrectly ignored. fix: qmail-alias
1176 now dies QLX_SOFT on any open failure other than ENOENT.
117719960124 change: added freebsd section in find-systype, same as bsd.os
1178 section. this will affect freebsd-* systypes.
117919960124 cleanup: find-systype now immediately converts sys to lowercase.
118019960124 change: qmail-setup now copies man pages into /var/qmail/man;
1181 qmail-check checks /var/qmail/man. using .0 style, which might
1182 cause trouble on various machines, but better than not trying.
118319960124 change: in qmail-remote.c, changed perm_control to temp_control
1184 (and D to Z, thanks); thus failure to read control files (e.g.,
1185 because of permissions) is now a temporary error.
118619960124 bug: in qmail-remote.c, temp_chdir() used D, not Z. impact: if
1187 chdir() to CONF_HOME failed (e.g., because of NFS), message
1188 would be bounced. fix: changed D to Z.
118919960124 change: reorganized README.
119019960124 portability problem: Linux has the fifo kernel bug that I had
1191 hoped I'd never run into. impact: messages under Linux (and any
1192 other systems with this bug) were picked up only in sweeps, not
1193 instantly. fix: triggerpull.c now writes a byte (non-blocking)
1194 to the fifo. updated INTERNALS accordingly.
119519960124 bug: in qmail-remote.c, if quit() saw a remote write error, it
1196 would call writeerr() even though a message report had already
1197 been produced. impact: the mess report would include an extra
1198 ``ZConnected but communications failed,'' which was confusing
1199 to humans. fix: quit() now simply skips the wait-for-QUIT
1200 smtpcode() upon write error.
120119960124 portability problem: Linux does not have SIGSYS or SIGEMT.
1202 impact: couldn't compile under Linux. fix: added appropriate
1203 ifdefs in signal.c.
120419960124 qmail 0.70, beta.