Annotation of 42BSD/usr.lib/sendmail/src/Version.c, revision 1.1

1.1     ! root        1: # ifndef lint
        !             2: static char    SccsId[] = "@(#)SendMail version 4.12 of 9/7/83";
        !             3: # endif lint
        !             4: 
        !             5: char   Version[] = "4.12";
        !             6: 
        !             7: # ifdef COMMENT
        !             8: 
        !             9: SCCS/s.version.c:
        !            10: 
        !            11: D 4.12 83/09/07 09:45:41       eric    378     377     00000/00000/00005
        !            12: MRs:   
        !            13: Increase timeout for greeting message to five minutes; remember to close
        !            14: the connection properly if we get a failure during connection establishment.
        !            15: 
        !            16: D 4.11 83/09/05 15:02:48       eric    377     376     00000/00000/00005
        !            17: MRs:   
        !            18: Fix security hole caused by being able to freeze the configuration
        !            19: without owning the .fc file.
        !            20: 
        !            21: D 4.10 83/09/05 14:33:54       eric    376     375     00000/00000/00005
        !            22: MRs:   
        !            23: Cut down the amount of bulk that is sent in SMTP error messages, by
        !            24: trying to log only real errors in the transcript.  -v mode is unchanged.
        !            25: 
        !            26: D 4.9  83/08/31 17:42:50       eric    375     374     00000/00000/00005
        !            27: MRs:   
        !            28: fix problem with timeouts caused by change in EINTR semantics in 4.2bsd;
        !            29: add a two minute timeout on the greeting message in user smtp to detect
        !            30: hung connections
        !            31: 
        !            32: D 4.8  83/08/28 15:38:15       eric    374     373     00000/00000/00005
        !            33: MRs:   
        !            34: set FIOCLEX on /dev/kmem file when getting load average
        !            35: 
        !            36: D 4.7  83/08/28 14:45:35       eric    373     372     00000/00000/00005
        !            37: MRs:   
        !            38: Refuse to talk to yourself (i.e., reject HELO packets with your own name).
        !            39: Add two thresholds -- option 'x' is the load average at which messages are
        !            40: queued rather than delivered (default 12); option 'X' is the load average
        !            41: at which incoming TCP connections are refused (default 25).
        !            42: 
        !            43: D 4.6  83/08/21 15:40:13       eric    372     371     00000/00000/00005
        !            44: MRs:   
        !            45: Drop "Sender:" hack, since it doesn't work properly when relaying messages.
        !            46: 
        !            47: D 4.5  83/08/21 15:15:09       eric    371     370     00000/00000/00005
        !            48: MRs:   
        !            49: Insert a Sender: line if a From: line is specified and is different than
        !            50: what we would insert; don't send back a separate error message if we have
        !            51: diagnosed an error in a RCPT command; fix a *0 problem in some debug code.
        !            52: 
        !            53: D 4.4  83/08/06 10:37:57       eric    370     369     00000/00000/00005
        !            54: MRs:   
        !            55: Clear errno before trying connect in an attempt to track down EPERM
        !            56: problems.
        !            57: 
        !            58: D 4.3  83/07/31 10:46:22       eric    369     368     00000/00000/00005
        !            59: MRs:   
        !            60: Add EX_NOPERM to sysexits.h for kre
        !            61: 
        !            62: D 4.2  83/07/27 22:56:44       eric    368     367     00000/00000/00005
        !            63: MRs:   
        !            64: Don't uppercase hostname in myhostname so that it can be used as a
        !            65: UUCP name.
        !            66: 
        !            67: D 4.1  83/07/25 19:46:27       eric    367     366     00000/00000/00005
        !            68: MRs:   
        !            69: 4.2 release version
        !            70: 
        !            71: D 3.347        83/07/13 10:38:17       eric    366     365     00000/00000/00005
        !            72: MRs:   
        !            73: Delete "load limiting" for SMTP connections (a bad ethernet board can
        !            74: hang up all incoming mail); use sfgets in collect (same reason); check
        !            75: for I/O error in collect (from Bill Nowicki); switch date format to
        !            76: RFC822 style.
        !            77: 
        !            78: D 3.346        83/06/14 11:05:18       eric    365     364     00000/00000/00005
        !            79: MRs:   
        !            80: log the message-id only if non-null
        !            81: 
        !            82: D 3.345        83/06/11 20:59:30       eric    364     363     00000/00000/00005
        !            83: MRs:   
        !            84: %d => %ld in mailq for PDP-11's
        !            85: 
        !            86: D 3.344        83/06/11 19:28:58       eric    363     362     00000/00000/00005
        !            87: MRs:   045
        !            88: MRs:   240
        !            89: don't rearrange input header lines; force Received: lines to be at the
        !            90: beginning by always adding new header fields at the end of the header.
        !            91: 
        !            92: D 3.343        83/05/21 11:01:51       eric    362     361     00000/00000/00005
        !            93: MRs:   
        !            94: Miscellaneous changes for PDP-11's.
        !            95: Always send to a login name before a full name.
        !            96: 
        !            97: D 3.342        83/05/20 11:50:16       eric    361     360     00000/00000/00005
        !            98: MRs:   238
        !            99: MRs:   239
        !           100: Don't stack processes when VRFY fails.
        !           101: Give an error message on multiple RCPT commands with a bad address.
        !           102: 
        !           103: D 3.341        83/05/18 11:57:09       eric    360     359     00000/00000/00005
        !           104: MRs:   
        !           105: Change WKTIMEFACT to be negative to force failing jobs to the end of the
        !           106: queue rather than to the beginning, giving better overall performance --
        !           107: as noted by Jay Lepreau.  Also, clean up the format of the mailq output.
        !           108: 
        !           109: D 3.340        83/05/07 11:28:37       eric    359     358     00000/00000/00005
        !           110: MRs:   237
        !           111: Pass the size of the buffer to myhostname.
        !           112: 
        !           113: D 3.339        83/05/04 11:29:53       eric    358     357     00000/00000/00005
        !           114: MRs:   235
        !           115: fix botch in 3.338 -- arguments reversed
        !           116: 
        !           117: D 3.338        83/05/04 11:16:29       eric    357     356     00000/00000/00005
        !           118: MRs:   235
        !           119: Don't send domain-based UUCP addresses to UGLYUUCP hosts
        !           120: 
        !           121: D 3.337        83/05/01 14:27:55       eric    356     355     00000/00000/00005
        !           122: MRs:   234
        !           123: avoid core dumps on messages with very long header fields
        !           124: 
        !           125: D 3.336        83/04/30 15:14:51       eric    355     354     00000/00000/00005
        !           126: MRs:   
        !           127: lint
        !           128: 
        !           129: D 3.335        83/04/23 12:54:57       eric    354     353     00000/00000/00005
        !           130: MRs:   230
        !           131: Don't put Resent-*: lines in queue file to prevent outputing them
        !           132: inappropriately in the sent message.
        !           133: 
        !           134: D 3.334        83/04/19 19:20:44       eric    353     352     00000/00000/00005
        !           135: MRs:   228
        !           136: Fix bug causing convtime to loop forever on "w" (week) specification.
        !           137: 
        !           138: D 3.333        83/04/17 17:19:04       eric    352     351     00000/00000/00005
        !           139: MRs:   199
        !           140: MRs:   218
        !           141: MRs:   221
        !           142: MRs:   224
        !           143: put true current time on SMTP greeting message; drop >From hack (this belongs
        !           144: in the mailer if needed); fix bogus errno problems (clear errno in many
        !           145: places); fix *(0) problems
        !           146: 
        !           147: D 3.332        83/03/26 14:26:43       eric    351     350     00000/00000/00005
        !           148: MRs:   213
        !           149: MRs:   214
        !           150: MRs:   215
        !           151: increase buffer size in smtpmessage to avoid overflows; rewrite again with
        !           152: ruleset three after appending from domain so that we can add the bracket
        !           153: punctuation; changes from MRH for USG UNIX 5.0
        !           154: 
        !           155: D 3.331        83/03/19 14:25:33       eric    350     349     00000/00000/00005
        !           156: MRs:   211
        !           157: Don't have mail from su'ed people come from "daemon"
        !           158: 
        !           159: D 3.330        83/03/19 13:14:27       eric    349     348     00000/00000/00005
        !           160: MRs:   147
        !           161: Fix botch of putting incorrect full names on some addresses (usually
        !           162: UNIX-to-UNIX Copy)
        !           163: 
        !           164: D 3.329        83/03/12 18:05:51       eric    348     347     00000/00000/00005
        !           165: MRs:   196
        !           166: take ECONNRESET (Connection reset by peer) as a temporary error during
        !           167: connection initiation.
        !           168: 
        !           169: D 3.328        83/03/12 17:41:55       eric    347     346     00000/00000/00005
        !           170: MRs:   208
        !           171: Check for I/O error on close of temp file -- i.e., last buffer flush
        !           172: 
        !           173: D 3.327        83/03/12 15:40:05       eric    346     345     00000/00000/00005
        !           174: MRs:   207
        !           175: Don't artifically add a "from: $q" when running the queue -- this seems
        !           176: to cause the from line in the qf file to be ignored.
        !           177: 
        !           178: D 3.326        83/03/10 00:48:02       eric    345     344     00000/00000/00005
        !           179: MRs:   206
        !           180: Delete colon on front of aliases
        !           181: 
        !           182: D 3.325        83/03/08 19:22:48       eric    344     343     00000/00000/00005
        !           183: MRs:   205
        !           184: Pass the delimiter character to parseaddr so that we can correctly
        !           185: decide between comma and space
        !           186: 
        !           187: D 3.324        83/03/07 09:55:13       eric    343     342     00000/00000/00005
        !           188: MRs:   203
        !           189: Don't pass EX_TEMPFAIL code out (since we have already taken responsibility
        !           190: for delivering the message anyway).
        !           191: 
        !           192: D 3.323        83/03/07 09:25:01       eric    342     341     00000/00000/00005
        !           193: MRs:   202
        !           194: Handle OLDSTYLE addresses properly with the -t flag; notice that tabs also
        !           195: delimit addresses (as well as spaces)
        !           196: 
        !           197: D 3.322        83/03/06 16:30:29       eric    341     340     00000/00000/00005
        !           198: MRs:   201
        !           199: Handle messages with "Resent-xxx:" header lines properly (basically mark
        !           200: the message as being resent); ignore incoming From: lines if their text
        !           201: exactly matches our machine-readable address exactly -- this causes the
        !           202: full name to be added when called from (e.g.) MH.  Both of these mode are
        !           203: to improve interaction with MH.
        !           204: 
        !           205: D 3.321        83/03/05 17:39:11       eric    340     339     00000/00000/00005
        !           206: MRs:   200
        !           207: Ignore delimiters (e.g., commas) inside quotes
        !           208: 
        !           209: D 3.320        83/02/26 15:32:31       eric    339     338     00000/00000/00005
        !           210: MRs:   193
        !           211: Don't log message-id mapping and from person in a queue run
        !           212: 
        !           213: D 3.319        83/02/26 15:06:05       eric    338     337     00000/00000/00005
        !           214: MRs:   162
        !           215: map host name for $w macro to upper case -- this is more conventional
        !           216: 
        !           217: D 3.318        83/02/26 11:51:43       eric    337     336     00000/00000/00005
        !           218: MRs:   193
        !           219: log queueid <=> message-id correspondence
        !           220: 
        !           221: D 3.317        83/02/25 21:20:20       eric    336     335     00000/00000/00005
        !           222: MRs:   181
        !           223: More attempts at insuring that everything goes through ruleset 4
        !           224: 
        !           225: D 3.316        83/02/24 20:03:04       eric    335     334     00000/00000/00005
        !           226: MRs:   181
        !           227: arrange to cleanup addresses using ruleset 4 before storing in ADDR struct
        !           228: 
        !           229: D 3.315        83/02/24 18:55:32       eric    334     333     00000/00000/00005
        !           230: MRs:   162
        !           231: MRs:   192
        !           232: Fix bug in $w and $=w setup; truncate output to seven bits if the "limits"
        !           233: flag is set to insure that nothing can be sent that looks like TELNET
        !           234: protocol
        !           235: 
        !           236: D 3.314        83/02/20 12:29:15       eric    333     332     00000/00000/00005
        !           237: MRs:   190
        !           238: Avoid loops in the auto-closedown code
        !           239: 
        !           240: D 3.313        83/02/19 14:42:12       eric    332     331     00000/00000/00005
        !           241: MRs:   188
        !           242: Avoid core dumps on very long addresses in headers.
        !           243: 
        !           244: D 3.312        83/02/18 13:11:57       eric    331     330     00000/00000/00005
        !           245: MRs:   183
        !           246: Improve host verification -- put something in even if no HELO command given
        !           247: 
        !           248: D 3.311        83/02/18 12:44:13       eric    330     329     00000/00000/00005
        !           249: MRs:   183
        !           250: MRs:   185
        !           251: MRs:   187
        !           252: Add HELO hostname verification; give an error if a message terminates with
        !           253: EOF rather than dot in SMTP mode; put in a catch for "Not owner" error on
        !           254: connect -- see if we can find anything funny.
        !           255: 
        !           256: D 3.310        83/02/13 16:23:03       eric    329     328     00000/00000/00005
        !           257: MRs:   182
        !           258: fix clrbitmap to really clear the entire bitmap
        !           259: 
        !           260: D 3.309        83/02/10 10:00:49       eric    328     327     00000/00000/00005
        !           261: MRs:   176
        !           262: avoid core dump on return receipt processing; clean up return receipt
        !           263: message.
        !           264: 
        !           265: D 3.308        83/02/08 10:50:24       eric    327     326     00000/00000/00005
        !           266: MRs:   167
        !           267: MRs:   172
        !           268: MRs:   173
        !           269: MRs:   174
        !           270: clean up problems when QUEUE compile flag not defined; clean up hostname
        !           271: code to run on non-4.1c systems; fix use of -oeq (quiet on errors) flag.
        !           272: 
        !           273: D 3.307        83/02/03 10:46:02       eric    326     325     00001/00001/00004
        !           274: MRs:   160
        !           275: Change version stamp to have no date (so that it looks nice as $v/$V)
        !           276: 
        !           277: D 3.306        83/02/03 10:29:15       eric    325     324     00000/00000/00005
        !           278: MRs:   160
        !           279: $e macro is now SMTP entry message (so that configuration version can
        !           280: be included).
        !           281: 
        !           282: D 3.305        83/02/03 07:54:10       eric    324     323     00000/00000/00005
        !           283: MRs:   168
        !           284: Make mailer size limits a per-mailer parameter (M field in the mailer
        !           285: descriptor)
        !           286: 
        !           287: D 3.304        83/02/02 12:53:10       eric    323     322     00000/00000/00005
        !           288: MRs:   165
        !           289: implement classes and mailer flags as a bit map; define new class 'w'
        !           290: as the set of all hosts we are known by
        !           291: 
        !           292: D 3.303        83/02/01 20:47:34       eric    322     321     00000/00000/00005
        !           293: MRs:   166
        !           294: don't call printqueue() if queueing is turned off
        !           295: 
        !           296: D 3.302        83/01/18 20:38:09       eric    321     320     00000/00000/00005
        !           297: MRs:   
        !           298: pause() after reply error if 18.100 set -- so that Sam can try to track
        !           299: down the state of the connection in the CMU-CS-A problem.
        !           300: 
        !           301: D 3.301        83/01/17 21:41:42       eric    320     319     00000/00000/00005
        !           302: MRs:   158
        !           303: Set the $w macro to the hostname if at all possible to allow generic
        !           304: configuration tables.
        !           305: 
        !           306: D 3.300        83/01/17 12:31:10       eric    319     318     00000/00000/00005
        !           307: MRs:   155
        !           308: fix bug that caused "\r\n" string in TCP mailer definition to turn
        !           309: into something else -- causing all TCP connections to hang.
        !           310: 
        !           311: D 3.299        83/01/17 09:32:18       eric    318     317     00000/00000/00005
        !           312: MRs:   154
        !           313: define a newline in "nullmailer" so that queue files get written with
        !           314: newlines between the "H" lines.
        !           315: 
        !           316: D 3.298        83/01/16 22:08:47       eric    317     316     00000/00000/00005
        !           317: MRs:   
        !           318: put in socket debugging on a debug flag to help Sam find the CMU-CS-A
        !           319: problem -- this probably won't work with early 4.1c systems.
        !           320: 
        !           321: D 3.297        83/01/16 17:24:29       eric    316     315     00000/00000/00005
        !           322: MRs:   153
        !           323: make the maximum number of simultaneous SMTP connections an option
        !           324: 
        !           325: D 3.296        83/01/16 13:14:04       eric    315     314     00000/00000/00005
        !           326: MRs:   152
        !           327: Change mailer spec to have labelled fields for future expansion.
        !           328: **** This delta invalidates previous configuration files ****
        !           329: 
        !           330: D 3.295        83/01/15 17:40:49       eric    314     313     00000/00000/00005
        !           331: MRs:   149
        !           332: be sure everything gets appropriately externalized; canonname goes away,
        !           333: since everything is now done by remotename
        !           334: 
        !           335: D 3.294        83/01/12 08:56:51       eric    313     312     00000/00000/00005
        !           336: MRs:   144
        !           337: fix date format to be truly RFC822
        !           338: 
        !           339: D 3.293        83/01/09 15:43:11       eric    312     311     00000/00000/00005
        !           340: MRs:   139
        !           341: fix CRLF problem when sending SMTP commands; make newstr() and crlf()
        !           342: into macros
        !           343: 
        !           344: D 3.292        83/01/08 19:54:37       eric    311     310     00000/00000/00005
        !           345: MRs:   143
        !           346: release daemon resources when running the queue
        !           347: 
        !           348: D 3.291        83/01/08 13:49:08       eric    310     309     00000/00000/00005
        !           349: MRs:   142
        !           350: be sure to open a new transcript on every queue run; when returning
        !           351: an SMTP transcript, only send the last half (i.e., that part which
        !           352: describes the sending half).
        !           353: 
        !           354: D 3.290        83/01/06 18:21:54       eric    309     308     00000/00000/00005
        !           355: MRs:   141
        !           356: allow user-setable error codes in "error" mailer
        !           357: 
        !           358: D 3.289        83/01/06 18:09:01       eric    308     307     00000/00000/00005
        !           359: MRs:   140
        !           360: fix a botch in argument processing such that it used the last flag as
        !           361: a recipient if there were no other recipients (e.g., with "-t")
        !           362: 
        !           363: D 3.288        83/01/06 12:05:54       eric    307     306     00000/00000/00005
        !           364: MRs:   132
        !           365: fix (one more time!) long line wrapping.....
        !           366: 
        !           367: D 3.287        83/01/06 10:46:17       eric    306     305     00000/00000/00005
        !           368: MRs:   139
        !           369: split up FULLSMTP flag -- now have "X" (M_XDOT, use hidden dot algorithm),
        !           370: "p" (M_FROMPATH, use reverse-path in MAIL FROM:<> command), and "L"
        !           371: (M_LIMITS, enforce SMTP line limits).  I would like to change the format
        !           372: of the mail defn one more time to make named fields so that it would
        !           373: be more extensible.
        !           374: 
        !           375: D 3.286        83/01/05 20:30:10       eric    305     304     00000/00000/00005
        !           376: MRs:   132
        !           377: fix folded line output
        !           378: 
        !           379: D 3.285        83/01/05 17:57:11       eric    304     303     00000/00000/00005
        !           380: MRs:   138
        !           381: curiouser and curiouser.....  a read error on the reply from a QUIT will
        !           382: cause another QUIT command, and thus an fclose(NULL).  Some sites seem
        !           383: to be sending a 421 Shutting down and then closing without waiting for
        !           384: the QUIT, so this happens....
        !           385: 
        !           386: D 3.284        83/01/05 10:19:04       eric    303     302     00000/00000/00005
        !           387: MRs:   138
        !           388: improve error recovery for bizarre SMTP cases; unfortunately CMU has
        !           389: decided to start working again, so the strangest parts are untested.
        !           390: 
        !           391: D 3.283        83/01/04 19:53:55       eric    302     301     00000/00000/00005
        !           392: MRs:   137
        !           393: externalize $g macro using ruleset 4 also
        !           394: 
        !           395: D 3.282        83/01/04 18:52:08       eric    301     300     00000/00000/00005
        !           396: MRs:   136
        !           397: Don't try to drop our controlling TTY except when we are starting up a
        !           398: daemon; this can cause UUCP jobs to hang waiting for carrier on a dialin
        !           399: line (completely contrary to the intent).  Many thanks to Keith Sklower
        !           400: for pointing this one out.  However, that damned parameter to disconnect()
        !           401: has reappeared!
        !           402: 
        !           403: D 3.281        83/01/04 17:45:25       eric    300     299     00000/00000/00005
        !           404: MRs:   135
        !           405: Ignore SIGPIPE early (in main rather than in deliver) so that rude hosts
        !           406: that close the connection early don't cause us to die -- in particular,
        !           407: CMU-CS-A (nee CMU-10A) was doing this after the DATA command; the problem
        !           408: went away quite mysteriously, so I have no idea why it happened
        !           409: 
        !           410: D 3.280        83/01/04 13:10:35       eric    299     298     00000/00000/00005
        !           411: MRs:   129
        !           412: MRs:   134
        !           413: take EHOSTDOWN as a temporary failure; change the format of "deferred"
        !           414: message to be consistent with other messages.
        !           415: 
        !           416: D 3.279        83/01/04 10:58:55       eric    298     297     00000/00000/00005
        !           417: MRs:   133
        !           418: fix botch that causes sendmail to core dump when there are large
        !           419: numbers of requests
        !           420: 
        !           421: D 3.278        83/01/04 10:04:41       eric    297     296     00000/00000/00005
        !           422: MRs:   132
        !           423: Detect an internal error that seems to be occuring
        !           424: 
        !           425: D 3.277        83/01/03 18:01:33       eric    296     295     00000/00000/00005
        !           426: MRs:   129
        !           427: give more useful error messages (including the errno that caused
        !           428: a temporary failure); reflect these messages out to mailq
        !           429: 
        !           430: D 3.276        83/01/03 14:02:28       eric    295     294     00000/00000/00005
        !           431: MRs:   137
        !           432: have canonname pass the address through ruleset four also
        !           433: 
        !           434: D 3.275        83/01/03 13:44:39       eric    294     293     00000/00000/00005
        !           435: MRs:   131
        !           436: take ENETUNREACH (Network unreachable) as a transient error -- this
        !           437: probably isn't usually right, but it seem safer in the long run....
        !           438: 
        !           439: D 3.274        83/01/03 13:19:37       eric    293     292     00000/00000/00005
        !           440: MRs:   129
        !           441: print "request" instead of "requests" if there is only one request
        !           442: 
        !           443: D 3.273        83/01/03 13:03:01       eric    292     291     00000/00000/00005
        !           444: MRs:   130
        !           445: fix bug in commaize so that it won't core dump on every message (sigh);
        !           446: process timeouts like normal errors so that they will get delivered to
        !           447: the correct address (i.e., the Errors-To: address).
        !           448: 
        !           449: D 3.272        83/01/03 11:28:04       eric    291     290     00000/00000/00005
        !           450: MRs:   129
        !           451: fix botch in reading the queue that caused it to throw away the last
        !           452: entry it read -- this was particulary obvious with only one entry in
        !           453: the queue.
        !           454: 
        !           455: D 3.271        83/01/02 15:33:36       eric    290     289     00000/00000/00005
        !           456: MRs:   124
        !           457: Take errno 65, "Host is unreachable", to be a recoverable error
        !           458: 
        !           459: D 3.270        83/01/02 14:27:32       eric    289     288     00000/00000/00005
        !           460: MRs:   129
        !           461: clean up output of mailq mode
        !           462: 
        !           463: D 3.269        83/01/01 21:25:35       eric    288     287     00000/00000/00005
        !           464: MRs:   123
        !           465: Put CRLF on all lines in user SMTP.  Pass this info down to
        !           466: innumerable routines.
        !           467: 
        !           468: D 3.268        83/01/01 18:14:56       eric    287     286     00000/00000/00005
        !           469: MRs:   122
        !           470: Use a more resilient algorithm to handle the special case of an SMTP
        !           471: connection that is going down spontaneously (with a 421 reply code)
        !           472: 
        !           473: D 3.267        83/01/01 16:02:43       eric    286     285     00000/00000/00005
        !           474: MRs:   128
        !           475: tag syserr's specially in the log so they can be grep'ed out easily
        !           476: 
        !           477: D 3.266        82/12/30 17:30:57       eric    285     284     00000/00000/00005
        !           478: MRs:   114
        !           479: don't bother timing out on *.cf and qf* file reads -- they are
        !           480: really very vanilla
        !           481: 
        !           482: D 3.265        82/12/30 16:57:13       eric    284     283     00000/00000/00005
        !           483: MRs:   113
        !           484: close files 3 through 20 before startup to insure sufficient resources
        !           485: 
        !           486: D 3.264        82/12/29 17:39:27       eric    283     282     00000/00000/00005
        !           487: MRs:   112
        !           488: don't htons(sp->s_port) in makeconnection
        !           489: 
        !           490: D 3.263        82/12/24 08:14:55       eric    282     281     00000/00000/00005
        !           491: MRs:   108
        !           492: Change parse to parseaddr for BB&N TCP/IP implementation; clean up
        !           493: comments in daemon.c to simplify the poor alternate protocol type.
        !           494: 
        !           495: D 3.262        82/12/14 19:23:23       eric    281     280     00000/00000/00005
        !           496: MRs:   106
        !           497: fix freeze mode to do something more interesting that refreezing (over
        !           498: and over and over and .......)
        !           499: 
        !           500: D 3.261        82/12/14 16:57:16       eric    280     279     00000/00000/00005
        !           501: MRs:   105
        !           502: Add "print mail queue" mode (-bp flag or call as "mailq")
        !           503: 
        !           504: D 3.260        82/12/13 18:25:22       eric    279     278     00000/00000/00005
        !           505: MRs:   085
        !           506: The routine "sendto" is now a system call (yeuch!); change our sendto
        !           507: to "sendtolist"
        !           508: 
        !           509: D 3.259        82/12/13 17:47:27       eric    278     277     00000/00000/00005
        !           510: MRs:   085
        !           511: NEW-IPC: convert to 4.1c
        !           512: 
        !           513: D 3.258        82/12/09 19:18:32       eric    277     276     00000/00000/00005
        !           514: MRs:   036
        !           515: MRs:   053
        !           516: MRs:   064
        !           517: Fix a bug triggered when we add the sender's "@domain" to an address
        !           518: in the message body that is missing a domain -- we forgot to null
        !           519: terminate the list.
        !           520: 
        !           521: D 3.257        82/12/09 11:19:09       eric    276     275     00000/00000/00005
        !           522: MRs:   081
        !           523: MRs:   095
        !           524: MRs:   103
        !           525: log read timeouts as syserrs; be able to match the inverse of a class
        !           526: using the $~x syntax; don't add a full name during network forward operations
        !           527: 
        !           528: D 3.256        82/12/05 13:46:29       eric    275     274     00000/00000/00005
        !           529: MRs:   092
        !           530: Clear the envelope in the child in server SMTP to insure that our oh so
        !           531: helpful parent doesn't delete our transcript; move the transcript and
        !           532: temporary file pointers into the envelope; pass the envelope to other
        !           533: routines in the holy war against global variables; split off envelope
        !           534: routines from main.c to envelope.c
        !           535: 
        !           536: D 3.255        82/11/28 16:00:50       eric    274     273     00000/00000/00005
        !           537: MRs:   
        !           538: implement SMTP auto-shutdown on 421 codes; clean up some error processing
        !           539: items, particularly in SMTP; don't reinstantiate error message bodies after
        !           540: queueing; other minor changes.  This is all cleanup from 3.253.
        !           541: 
        !           542: D 3.254        82/11/28 10:22:20       eric    273     272     00000/00000/00005
        !           543: MRs:   
        !           544: fix a number of problems left over from yesterday's delta.  The big
        !           545: triumph is being able to delete the parameter from disconnect().
        !           546: 
        !           547: D 3.253        82/11/28 00:22:21       eric    272     271     00000/00000/00005
        !           548: MRs:   
        !           549: Many changes resulting from a complete code readthrough.  Most of these
        !           550: fix minor bugs or change the internal structure for clarity, etc.  There
        !           551: should be almost no externally visible changes (other than some cleaner
        !           552: error message printouts and the like).
        !           553: 
        !           554: D 3.252        82/11/24 18:44:28       eric    271     270     00000/00000/00005
        !           555: MRs:   
        !           556: lint it
        !           557: 
        !           558: D 3.251        82/11/24 17:15:30       eric    270     269     00000/00000/00005
        !           559: MRs:   026
        !           560: run SMTP jobs in a subprocess so that multiple jobs will work.  This
        !           561: delta also changes the envelope data structure so that flags are in
        !           562: a bit map, and adjusts some of the semantics.  The transcript is now
        !           563: local to an envelope.  A bunch of old code is deleted.  A serious bug
        !           564: was fixed in the "run in background" code.  Etc., etc.
        !           565: 
        !           566: D 3.250        82/11/21 17:19:05       eric    269     268     00000/00000/00005
        !           567: MRs:   026
        !           568: preliminary hacks for multiple SMTP transactions per connection: make
        !           569: assignment of multiple queue id's more efficient, make prefixes two
        !           570: characters (e.g., qfAA99999), pass the file name to freeze and thaw,
        !           571: add a mailer flag saying we are talking to one of our own kind.
        !           572: 
        !           573: D 3.249        82/11/20 12:43:29       eric    268     267     00000/00000/00005
        !           574: MRs:   083
        !           575: Accept user@[net.host.logical.imp] syntax
        !           576: 
        !           577: D 3.248        82/11/18 21:33:38       eric    267     266     00000/00000/00005
        !           578: MRs:   080
        !           579: Correctly run "sendmail -q" (had a reversed condition on QueueIntvl)
        !           580: 
        !           581: D 3.247        82/11/18 17:54:23       eric    266     265     00000/00000/00005
        !           582: MRs:   079
        !           583: Fix bug causing loops in sendto if there are scanner errors in addresses
        !           584: 
        !           585: D 3.246        82/11/18 08:56:27       eric    265     264     00000/00000/00005
        !           586: MRs:   060
        !           587: MRs:   073
        !           588: disconnect input, output, signals, etc. when running in background
        !           589: 
        !           590: D 3.245        82/11/17 09:36:47       eric    264     263     00000/00000/00005
        !           591: MRs:   060
        !           592: split operation mode ("-bx" flag) and delivery mode ("d" option)
        !           593: so that operation mode can apply to SMTP/daemon connections also.
        !           594: 
        !           595: D 3.244        82/11/14 15:34:59       eric    263     262     00000/00000/00005
        !           596: MRs:   075
        !           597: Explicitly inherit e_oldstyle from BlankEnvelope to MainEnvelope
        !           598: 
        !           599: D 3.243        82/11/14 15:14:00       eric    262     261     00000/00000/00005
        !           600: MRs:   074
        !           601: fix quote processing on program mailers
        !           602: 
        !           603: D 3.242        82/11/14 12:26:17       eric    261     260     00000/00000/00005
        !           604: MRs:   072
        !           605: Don't give an error message on unknown options
        !           606: 
        !           607: D 3.241        82/11/13 18:07:59       eric    260     259     00000/00000/00005
        !           608: MRs:   021
        !           609: MRs:   066
        !           610: MRs:   069
        !           611: MRs:   069
        !           612: MRs:   070
        !           613: MRs:   071
        !           614: Clean up argument structure (-I=>-bi, -Z=>-bz).  Add -bp stub to someday
        !           615: print queue.  Move compile conf into conf.h (still some stuff in the
        !           616: Makefile).  Assume -bp if called as "mailq" and -bi if called as
        !           617: "newaliases".  Drop old directory hack -- send out compat code instead.
        !           618: Don't rebuild the alias file automatically unless the D option is set.
        !           619: Clean up compilation flags.
        !           620: 
        !           621: D 3.240        82/11/07 16:14:44       eric    259     258     00000/00000/00005
        !           622: MRs:   041
        !           623: make all mailer output go to the transcript if running server smtp; this
        !           624: has the effect of making some significant changes in the output structure
        !           625: to handle such things as -em and -as together
        !           626: 
        !           627: D 3.239        82/11/07 15:31:50       eric    258     257     00000/00000/00005
        !           628: MRs:   063
        !           629: don't flag errors in setting dangerous options when -C is used
        !           630: 
        !           631: D 3.238        82/11/05 13:12:52       eric    257     256     00000/00000/00005
        !           632: MRs:   062
        !           633: arrange to freeze the configuration file for quick startup -- this
        !           634: technique requires reprocessing the argv so that flag settings don't
        !           635: get lost, and is really rather of a hack.
        !           636: 
        !           637: D 3.237        82/11/04 15:22:16       eric    256     255     00000/00000/00005
        !           638: MRs:   019
        !           639: don't unlink qf & df files on ^C
        !           640: 
        !           641: D 3.236        82/11/04 13:27:28       eric    255     254     00000/00000/00005
        !           642: MRs:   037
        !           643: put header conditionals into the .cf file
        !           644: 
        !           645: D 3.235        82/11/03 11:18:06       eric    254     253     00000/00000/00005
        !           646: MRs:   059
        !           647: don't strip quotes off of addresses during prescan
        !           648: 
        !           649: D 3.234        82/11/03 10:34:13       eric    253     252     00000/00000/00005
        !           650: MRs:   058
        !           651: Put the temporary file mode on the F option
        !           652: 
        !           653: D 3.233        82/11/03 09:49:15       eric    252     251     00000/00000/00005
        !           654: MRs:   049
        !           655: Arrange to strip quote bits in message header; move SPACESUB into
        !           656: conf.c; change SpaceSub to unquoted dot
        !           657: 
        !           658: D 3.232        82/11/03 09:00:33       eric    251     250     00000/00000/00005
        !           659: MRs:   056
        !           660: Arrange for queue.c to aapt to systems w/o new directory code
        !           661: 
        !           662: D 3.231        82/10/31 13:47:06       eric    250     249     00000/00000/00005
        !           663: MRs:   032
        !           664: MRs:   051
        !           665: Call ruleset 4 after doing per-mailer translation to convert from
        !           666: internal to external form.
        !           667: 
        !           668: D 3.230        82/10/28 17:41:15       eric    249     248     00000/00000/00005
        !           669: MRs:   039
        !           670: MRs:   027
        !           671: Put the "@:@" trick on the "a" option.  Also, move TrustedUsers into
        !           672: sendmail.h (it should have gone here in the first place!)
        !           673: 
        !           674: D 3.229        82/10/27 20:43:35       eric    248     247     00000/00000/00005
        !           675: MRs:   044
        !           676: strip out bcc: and resent-bcc: always
        !           677: 
        !           678: D 3.228        82/10/25 08:30:12       eric    247     246     00000/00000/00005
        !           679: MRs:   040
        !           680: Don't send closing protocol to SMTP if you haven't opened the
        !           681: connection; this happens if checkcompat fails on the only recipient.
        !           682: 
        !           683: D 3.227        82/10/22 09:02:44       eric    246     245     00000/00000/00005
        !           684: MRs:   023
        !           685: part of a heuristic hill climbing algorithm to minimize the number of
        !           686: IPC bugs that come crawling over me.
        !           687: 
        !           688: D 3.226        82/10/16 15:24:52       eric    245     244     00000/00000/00005
        !           689: MRs:   027
        !           690: Put list of login names able to use -f in the .cf file.
        !           691: 
        !           692: D 3.225        82/10/16 14:43:47       eric    244     243     00000/00000/00005
        !           693: MRs:   007
        !           694: Arrange for a wizards password (the W option).  The SMTP KILL command
        !           695: may only be issued if this option is set.  This delta adds the "WIZ"
        !           696: command, and changes _KILL => KILL, _DEBUG => DEBUG, _VERBOSE => VERB,
        !           697: and _SHOWQ => SHOWQ.
        !           698: 
        !           699: D 3.224        82/10/16 13:43:28       eric    243     242     00000/00000/00005
        !           700: MRs:   024
        !           701: Fix debug statement in sendall
        !           702: 
        !           703: D 3.223        82/10/16 13:22:22       eric    242     241     00000/00000/00005
        !           704: MRs:   010
        !           705: Arrange for MD_FORK to work well with -v so that we can use it as the
        !           706: default.  This was really a separate bug, but I have just lumped it in
        !           707: here -- the problem came up with stty tostop.
        !           708: 
        !           709: D 3.222        82/10/13 21:55:07       eric    241     240     00000/00000/00005
        !           710: MRs:   023
        !           711: Don't interrupt the process doing accepts (have a separate process
        !           712: running the queue) to avoid a large pile of 4.1[abc] bugs.  When
        !           713: something more stable comes out, I will change this.
        !           714: 
        !           715: D 3.221        82/10/13 18:43:28       eric    240     239     00000/00000/00005
        !           716: MRs:   022
        !           717: Don't interpret <, >, (, or ) while in QST (quote state) during prescan
        !           718: 
        !           719: D 3.220        82/10/11 09:51:43       eric    239     238     00000/00000/00005
        !           720: MRs:   016
        !           721: have auto-queueups print a polite message in the log (rather than an
        !           722: obnoxious "Temporary Failure").  Adds a new routine "logdelivery".
        !           723: 
        !           724: D 3.219        82/10/09 21:02:27       eric    238     237     00000/00000/00005
        !           725: MRs:   005
        !           726: force a queuename in returntosender to insure that everyone has a
        !           727: queue name.
        !           728: 
        !           729: D 3.218        82/10/09 20:27:42       eric    237     236     00000/00000/00005
        !           730: MRs:   003
        !           731: Lock out interrupts during alias rebuild; add an alias "@:@" after
        !           732: rebuild that we can check for to insure that the alias file is up to
        !           733: date.  Times out after five minutes (is this reasonable on ucbvax?)
        !           734: and forces a rebuild.  It shouldn't matter in the long run if two
        !           735: people rebuild, so I think this is the right thing to do.
        !           736: 
        !           737: D 3.217        82/10/09 19:06:31       eric    236     235     00000/00000/00005
        !           738: MRs:   002
        !           739: Handle Reverse-Path in some reasonable way.  You must put the 'X'
        !           740: flag (M_FULLSMTP) in the local mailer's flags to get this line.
        !           741: 
        !           742: D 3.216        82/10/09 18:11:21       eric    235     234     00000/00000/00005
        !           743: MRs:   013
        !           744: print a status indication when a message is autoqueued, either from
        !           745: a -bq flag or a NoConnect
        !           746: 
        !           747: D 3.215        82/10/09 17:22:35       eric    234     233     00000/00000/00005
        !           748: MRs:   008
        !           749: Force -v override of deferred connect
        !           750: 
        !           751: D 3.214        82/10/09 17:10:37       eric    233     232     00000/00000/00005
        !           752: MRs:   004
        !           753: Only put the "from" person on the error queue if an error actually
        !           754: occured -- prevents many "duplicate supressed" messages, etc.
        !           755: 
        !           756: D 3.213        82/10/09 09:05:35       eric    232     231     00000/00000/00005
        !           757: MRs:   001
        !           758: implement an experimental forward-path algorithm by stripping off a
        !           759: leading "@..." component and dropping it on the end.
        !           760: 
        !           761: D 3.212        82/10/07 08:52:47       eric    231     230     00000/00000/00005
        !           762: try to come up with a workaround on some of the IPC problems relating to
        !           763: interrupted accepts -- all this can go when everyone at Berkeley runs
        !           764: unflakey IPC.  Also, never use ruleset three alone -- involves changing
        !           765: canonname again.  Probably shouldn't do an auto-call of ruleset three now.
        !           766: 
        !           767: D 3.211        82/10/07 01:40:19       eric    230     229     00000/00000/00005
        !           768: bother.... it takes time to close a socket
        !           769: 
        !           770: D 3.210        82/10/07 00:09:14       eric    229     228     00000/00000/00005
        !           771: allow passing through multiple rewriting sets in test mode;
        !           772: <ndir.h> => <dir.h> for maximum portability
        !           773: 
        !           774: D 3.209        82/10/06 11:45:40       eric    228     227     00000/00000/00005
        !           775: add test mode (MD_TEST, -bt)
        !           776: 
        !           777: D 3.208        82/09/30 22:29:46       eric    227     226     00000/00000/00005
        !           778: workaround in daemon accept code for 4.1a kernel bug: if an accept
        !           779: gets an EINTR and then a valid accept before the interrupt returns,
        !           780: the connection will be lost forever (at least, as I understand it).
        !           781: 
        !           782: D 3.207        82/09/26 17:04:24       eric    226     225     00000/00000/00005
        !           783: Put more configuration into setoption; merge some of the argv processing
        !           784: with this; move configuration information out of conf.c into the .cf
        !           785: file.  Since a lot of stuff will default to zero, a new .cf file is
        !           786: required.
        !           787: 
        !           788: D 3.206        82/09/26 14:45:52       eric    225     224     00000/00000/00005
        !           789: completely instantiate queue files for all mail, even if not needed;
        !           790: fix a bug that would probably come up once every ten years in creating
        !           791: the queue id.  should merge argv flag processing with option processing.
        !           792: 
        !           793: D 3.205        82/09/24 19:39:25       eric    224     223     00000/00000/00005
        !           794: change option implementation; define a bunch of interesting options.
        !           795: 
        !           796: D 3.204        82/09/24 09:38:36       eric    223     222     00000/00000/00005
        !           797: arrange to be able to define options; put precedences in .cf file;
        !           798: send errors to an Errors-To: field; fix a serious bug causing mail
        !           799: to not be delivered to anyone if there were any errors.
        !           800: 
        !           801: D 3.203        82/09/22 10:50:47       eric    222     221     00000/00000/00005
        !           802: don't put commas in non-address fields; have -bq clean up its temp files
        !           803: 
        !           804: D 3.202        82/09/21 10:15:00       eric    221     220     00000/00000/00005
        !           805: get rid of double error returns; improve verbose mode output to be
        !           806: standard format (even though verbose mode isn't standard); output
        !           807: queue files with commas in headers to insure that the oldstyle stuff
        !           808: doesn't get confused.
        !           809: 
        !           810: D 3.201        82/09/18 20:37:46       eric    220     219     00000/00000/00005
        !           811: fix botch where it believes that a list is !oldstyle just because
        !           812: it has an alias expansion in it.
        !           813: 
        !           814: D 3.200        82/09/16 20:25:01       eric    219     218     00000/00000/00005
        !           815: drop ":...;" stuff -- it screws it up aliases; pass parameters to
        !           816: subroutines (this also adds $@ and $: features to subr calls); check
        !           817: overflow of "tobuf" on smtp deliveries, which caused core dumps on
        !           818: large mailing lists
        !           819: 
        !           820: D 3.199        82/09/12 22:17:30       eric    218     217     00000/00000/00005
        !           821: accept ": ... ;" syntax for groups if !oldstyle
        !           822: 
        !           823: D 3.198        82/09/12 16:44:03       eric    217     216     00000/00000/00005
        !           824: change inheritance for macros in envelopes; be able to canonicalize
        !           825: non-domained names by appending domain from sender; call ruleset 3
        !           826: explicitly before doing other rulesets; some general cleanup.
        !           827: 
        !           828: D 3.197        82/09/11 17:18:16       eric    216     215     00000/00000/00005
        !           829: don't assign $s to be the sending host (this mucks up Received:
        !           830: lines) -- instead just use HELO messages; chdir into queue directory
        !           831: and make all pathnames relative; be more conservative in creating
        !           832: queue id's -- in the event you get file table overflows, etc.
        !           833: 
        !           834: D 3.196        82/09/08 23:55:46       eric    215     214     00000/00000/00005
        !           835: fix stupid bug in wait code to dispose of "Interrupted system call" message
        !           836: 
        !           837: D 3.195        82/09/08 22:13:20       eric    214     213     00000/00000/00005
        !           838: fix a nasty botch in 3.194 that killed SMTP in daemon mode.   sigh......
        !           839: 
        !           840: D 3.194        82/09/08 21:20:05       eric    213     212     00000/00000/00005
        !           841: try to avoid "Interrupted system call" on wait in deliver and on
        !           842: writes; fix returned message to have proper sender; handle extra
        !           843: mailer output more cleverly.
        !           844: 
        !           845: D 3.193        82/09/06 19:55:17       eric    212     211     00000/00000/00005
        !           846: more hacking on oldstyle -- always assume sender fields are in new
        !           847: style so that locally generated fields are edited correctly.
        !           848: 
        !           849: D 3.192        82/09/06 18:47:26       eric    211     210     00000/00000/00005
        !           850: fix botch in "at"s in headers
        !           851: 
        !           852: D 3.191        82/09/06 18:24:40       eric    210     209     00000/00000/00005
        !           853: fix botch in computing e_oldstyle
        !           854: 
        !           855: D 3.190        82/09/06 17:58:40       eric    209     208     00000/00000/00005
        !           856: fix bug in scanner state machine that never let you out of quote state.
        !           857: 
        !           858: D 3.189        82/09/06 17:14:03       eric    208     207     00000/00000/00005
        !           859: increase log level needed to print "entered" message.
        !           860: 
        !           861: D 3.188        82/09/06 17:00:23       eric    207     206     00000/00000/00005
        !           862: user SMTP fixes to talk to ISI
        !           863: 
        !           864: D 3.187        82/09/06 16:24:51       eric    206     205     00000/00000/00005
        !           865: install new state-driven scanner; make everyone use it, thus fixing
        !           866: problems of quoted commas, etc.
        !           867: 
        !           868: D 3.186        82/09/05 18:08:58       eric    205     204     00000/00000/00005
        !           869: change $g processing from a macro substitution per mailer to two sets
        !           870: of rewriting rules per mailer -- one each for sender and recipient
        !           871: fields; convert to NBS standard on Return-Receipt-To: and Precedence:
        !           872: fields; clean up From: processing code and generalize it to all
        !           873: sender fields; tune debugging code; clean up canonname.
        !           874: **** This delta invalidates previous configuration files ****
        !           875: 
        !           876: D 3.185        82/09/05 11:48:27       eric    204     203     00000/00000/00005
        !           877: add $* to match zero or more and $> to make a "subroutine" call; stick
        !           878: in initial hooks for per-mailer rewriting; improve diagnostics in readcf,
        !           879: including number lines; increase the number of rewriting sets.
        !           880: 
        !           881: D 3.184        82/09/01 10:24:00       eric    203     202     00000/00000/00005
        !           882: log entering uid & pid; allow CANONUSER ($:) to abort a rewriting set.
        !           883: 
        !           884: D 3.183        82/08/31 17:46:56       eric    202     201     00000/00000/00005
        !           885: increase MAXMAILERS to 25
        !           886: 
        !           887: D 3.182        82/08/31 10:05:56       eric    201     200     00000/00000/00005
        !           888: clean up reply code processing some more; in particular, give more
        !           889: detail in many messages.  process connection failures correctly.
        !           890: 
        !           891: D 3.181        82/08/29 23:31:35       eric    200     199     00000/00000/00005
        !           892: handle comments and quotes in headers; still doesn't deal with
        !           893: backslashes however -- prescan should be cleaned up to deal with
        !           894: this case.  it turns out there are many bugs in prescan; it should
        !           895: be extensively rewritten.
        !           896: 
        !           897: D 3.180        82/08/29 17:32:49       eric    199     198     00000/00000/00005
        !           898: fix serious botch in SMTP reply code delta; change a bunch of
        !           899: "Internal error" codes to a new "Remote protocol error" -- so that
        !           900: I don't get blamed for things that other systems do.
        !           901: 
        !           902: D 3.179        82/08/29 16:52:31       eric    198     197     00000/00000/00005
        !           903: do a better job at interpreting SMTP reply codes
        !           904: 
        !           905: D 3.178        82/08/29 15:52:20       eric    197     196     00000/00000/00005
        !           906: give 554 message on syserr (instead of 451) if errno == 0; as it
        !           907: was some permanent errors appeared transient
        !           908: 
        !           909: D 3.177        82/08/27 18:01:25       eric    196     195     00000/00000/00005
        !           910: hack crackaddr to strip blanks off the end of a cracked address; this
        !           911: happens because "u at h" becomes "$g  " (with two spaces at the end).
        !           912: this doesn't solve the general case (e.g., "u at h (me)" comes out as
        !           913: "$g   (me)", with three spaces), but does handle the ugliest case.
        !           914: besides, the "at" syntax is supposed to go away.
        !           915: 
        !           916: D 3.176        82/08/27 16:01:58       eric    195     194     00000/00000/00005
        !           917: simplify timeout code; allow multiple simultaneous queue runs so that
        !           918: large messages don't freeze things up; fix EINTR problem in sfgets;
        !           919: clean up canonname to be really correct; lots of misc. cleanup
        !           920: 
        !           921: D 3.175        82/08/27 11:11:40       eric    194     193     00000/00000/00005
        !           922: release e_id after fork in daemon code; ignore events scheduled by
        !           923: another process
        !           924: 
        !           925: D 3.174        82/08/25 23:18:24       eric    193     192     00000/00000/00005
        !           926: assign a new queue id to all jobs coming in via TCP
        !           927: 
        !           928: D 3.173        82/08/25 21:22:10       eric    192     191     00000/00000/00005
        !           929: sigh....  more fun and games in the daemon code to try to guess right.
        !           930: 
        !           931: D 3.172        82/08/25 19:44:33       eric    191     190     00000/00000/00005
        !           932: recreate a socket after every failed accept()
        !           933: 
        !           934: D 3.171        82/08/25 16:19:23       eric    190     189     00000/00000/00005
        !           935: apply ruleset 4 to rewrite addresses in the body of the message; fix
        !           936: a clock.c bug that caused it to lose events; more time cleanup.
        !           937: 
        !           938: D 3.170        82/08/25 11:21:21       eric    189     188     00000/00000/00005
        !           939: clean up time manipulation to always be current; assign job
        !           940: id's earlier to make sure there is always one with a message.
        !           941: 
        !           942: D 3.169        82/08/25 10:46:27       eric    188     187     00000/00000/00005
        !           943: log locked files in queuer; don't mistakenly start up two runqueue's
        !           944: 
        !           945: D 3.168        82/08/24 19:55:39       eric    187     186     00000/00000/00005
        !           946: put queueup log messages on a higher logging level
        !           947: 
        !           948: D 3.167        82/08/24 19:41:32       eric    186     185     00000/00000/00005
        !           949: log more info (on log level 11); try to detect wild accept loops;
        !           950: some minor cleanup and debugging checks; fix NoConnect option to;
        !           951: only apply to expensive mailers (regardless of sendqueue order)
        !           952: 
        !           953: D 3.166        82/08/24 10:27:46       eric    185     184     00000/00000/00005
        !           954: clean up event handling so that events that do longjmp's don't turn
        !           955: off all future events; diagnose reentry of main().
        !           956: 
        !           957: D 3.165        82/08/23 11:59:50       eric    184     183     00000/00000/00005
        !           958: clean up queueing; log time in queue.
        !           959: **** This delta invalidates mqueue files ****
        !           960: 
        !           961: D 3.164        82/08/23 09:23:54       eric    183     182     00000/00000/00005
        !           962: allow continuation lines in .cf file (particularly in headers)
        !           963: 
        !           964: D 3.163        82/08/22 23:07:11       eric    182     181     00000/00000/00005
        !           965: change $i to $j; $i is now queue id; put "Received:" format in .cf
        !           966: file; minor cleanup
        !           967: 
        !           968: D 3.162        82/08/22 19:03:19       eric    181     180     00000/00000/00005
        !           969: assign a unique id to each transaction that can be determined from
        !           970: the queue file name.
        !           971: 
        !           972: D 3.161        82/08/21 17:54:37       eric    180     179     00000/00000/00005
        !           973: move <> and forward path processing to .cf file; increase MAXATOMS
        !           974: since some "comment" information may now be part of the address.
        !           975: **** this installation requires a new sendmail.cf file ****
        !           976: 
        !           977: D 3.160        82/08/20 20:35:15       eric    179     178     00000/00000/00005
        !           978: time stamp the SMTP greeting message; increase the buffer size in
        !           979: syslog to prevent core dumps.
        !           980: 
        !           981: D 3.159        82/08/17 20:45:43       eric    178     177     00000/00000/00005
        !           982: change Mail-From: to Received: for new SMTP spec (RFC821); handle
        !           983: folded lines in queue files correctly.
        !           984: 
        !           985: D 3.158        82/08/17 16:19:10       eric    177     176     00000/00000/00005
        !           986: rework header processing: do special purpose header munging in a
        !           987: separate routine so that the queue run can do it also; parse From lines
        !           988: in a fancy way, extracting the address part and turning it into a $g
        !           989: macro; avoid reading and processing core files that end up in the queue
        !           990: directory; check the queue directory name for legality; fix the verify
        !           991: (-bv) option.
        !           992: 
        !           993: D 3.157        82/08/15 17:35:39       eric    176     175     00000/00000/00005
        !           994: mark From: lines with the H_FROM bit; make VRFY work by adding the
        !           995: QuickAbort flag; handle headers more cleverly in queue files -- this
        !           996: seems to work, but I am frankly nervous.  Note: this version
        !           997: represents a flag day!-- old queues will not process properly.
        !           998: 
        !           999: D 3.156        82/08/15 11:58:25       eric    175     174     00000/00000/00005
        !          1000: output class rather than priority in log; accept zero intervals in
        !          1001: event scheduling; allow continuation lines in queue files (particularly
        !          1002: for headers); don't diagnose inappropriate errors when accepting a
        !          1003: connection; fix bug when reprocessing addresses that put garbage in
        !          1004: the header; some misc. debugging info (-d14 => commaize)
        !          1005: 
        !          1006: D 3.155        82/08/08 21:15:44       eric    174     173     00000/00000/00005
        !          1007: make "sleep" work correctly even in the face of other events; clean
        !          1008: up the queue processing: child queue runs now go away when done.  more
        !          1009: debugging logging is needed to verify that this works right though.
        !          1010: 
        !          1011: D 3.154        82/08/08 17:05:19       eric    173     172     00000/00000/00005
        !          1012: move remotename() from deliver.c to parse.c; change default log level
        !          1013: to 9; put error versus success delivery on different log levels;
        !          1014: diagnose overlength lines in headers; more general event mechanism;
        !          1015: initial implementation of canonname; don't diagnose link errors in
        !          1016: queue, since another daemon could have grabbed it legitimately;
        !          1017: fix a problem in VRFY on bad addresses
        !          1018: 
        !          1019: D 3.153        82/08/08 01:00:25       eric    172     171     00000/00000/00005
        !          1020: change debug level to a debug vector; add levels on logging (and the
        !          1021: -L flag); change logging to be by message-id; elevate message-id;
        !          1022: some lint-type cleanup
        !          1023: 
        !          1024: D 3.152        82/08/07 11:13:15       eric    171     170     00000/00000/00005
        !          1025: Fix address rewriting so that multiple spaces and tabs work properly
        !          1026: 
        !          1027: D 3.151        82/07/31 16:57:49       eric    170     169     00000/00000/00005
        !          1028: don't give error on ETIMEDOUT on accept call; print errno properly
        !          1029: in syserr()
        !          1030: 
        !          1031: D 3.150        82/07/31 12:56:56       eric    169     168     00000/00000/00005
        !          1032: By default, just queue up the mail for most mailers and deliver
        !          1033: from the queue.  This avoids the wild process problem in netnews
        !          1034: (or so we hope).
        !          1035: 
        !          1036: D 3.149        82/07/27 23:09:04       eric    168     167     00000/00000/00005
        !          1037: clean up semantics of daemon mode to facilitate use of other IPC;
        !          1038: move some code to main.c because it is not part of creating a
        !          1039: connection; if you can't create a socket assume there is another
        !          1040: sendmail running and exit; improve the verbose information in an
        !          1041: SMTP connection to make it more obvious which messages went which
        !          1042: way; don't attempt delivery if you get an error reading the queue file.
        !          1043: 
        !          1044: D 3.148        82/07/25 13:11:20       eric    167     166     00000/00000/00005
        !          1045: clean up error handling
        !          1046: 
        !          1047: D 3.147        82/07/22 01:23:15       eric    166     165     00000/00000/00005
        !          1048: new version of syslog that uses 4.2 IPC
        !          1049: 
        !          1050: D 3.146        82/07/20 19:39:15       eric    165     164     00000/00000/00005
        !          1051: be smarter about when to rerun the queue when you are in repeated
        !          1052: queue mode.
        !          1053: 
        !          1054: D 3.145        82/07/14 11:19:27       eric    164     163     00000/00000/00005
        !          1055: disconnect sendmail from the controlling tty in daemon mode.
        !          1056: 
        !          1057: D 3.144        82/07/14 11:00:33       eric    163     162     00000/00000/00005
        !          1058: arrange for MotherPid to be correct in daemon mode
        !          1059: 
        !          1060: D 3.143        82/07/14 10:46:00       eric    162     161     00000/00000/00005
        !          1061: fork automatically in daemon mode (but only if no debugging)
        !          1062: 
        !          1063: D 3.142        82/07/14 09:25:11       eric    161     160     00000/00000/00005
        !          1064: don't accidently unlink a null pointer in finis(); change the way
        !          1065: it decides whether to remove the temp file (you don't want to if you
        !          1066: are queueing it up); fix a bug in Apparently-To: that caused it to
        !          1067: output both pre- and post-expanded names (only output pre-expanded)
        !          1068: 
        !          1069: D 3.141        82/07/05 20:56:24       eric    160     159     00000/00000/00005
        !          1070: flush fatal error flag before returning error messages to avoid error
        !          1071: message loop; improve debugging: flush transcript before doing things
        !          1072: that might take a long time, add some info to debug messages; extend
        !          1073: configuration on timeouts so that text of error message is in conf.c
        !          1074: 
        !          1075: D 3.140        82/07/05 18:49:49       eric    159     158     00000/00000/00005
        !          1076: add "Apparently-To:" field if no recipients are in the header.
        !          1077: 
        !          1078: D 3.139        82/07/05 13:21:21       eric    158     157     00000/00000/00005
        !          1079: count Mail-From: lines to get a hop count, giving error as
        !          1080: appropriate after collection; don't attempt delivery of message if
        !          1081: errors occur before or during collection; fix a bug in -as mode
        !          1082: (non-daemon SMTP).
        !          1083: 
        !          1084: D 3.138        82/07/05 12:37:23       eric    157     156     00000/00000/00005
        !          1085: check for errors before opening a daemon connection
        !          1086: 
        !          1087: D 3.137        82/07/05 12:22:02       eric    156     155     00000/00000/00005
        !          1088: split off clock stuff from util.c so that vacation will compile
        !          1089: 
        !          1090: D 3.136        82/07/05 12:02:53       eric    155     154     00000/00000/00005
        !          1091: put timeouts on net reads
        !          1092: 
        !          1093: D 3.135        82/07/02 20:52:46       eric    154     153     00000/00000/00005
        !          1094: arrange to not lose temporary queue control files (tf files)
        !          1095: if you interrupt a queue run process.
        !          1096: 
        !          1097: D 3.134        82/07/02 10:00:16       eric    153     152     00000/00000/00005
        !          1098: be paranoid about resetting the "FatalErrors" flag -- always reset
        !          1099: after forking for daemon or queue mode.  This will prevent false error
        !          1100: return delivery.
        !          1101: 
        !          1102: D 3.133        82/07/02 09:43:39       eric    152     151     00000/00000/00005
        !          1103: take special care in outputing error messages to the transcript;
        !          1104: a little bit of paranoia never hurt a mail system.
        !          1105: 
        !          1106: D 3.132        82/06/30 22:39:22       eric    151     150     00000/00000/00005
        !          1107: open a separate transcript in the child of a daemon.
        !          1108: 
        !          1109: D 3.131        82/06/26 14:53:40       eric    150     149     00000/00000/00005
        !          1110: clean up error messages on SMTP temporary failures resulting from
        !          1111: failure to connect properly.
        !          1112: 
        !          1113: D 3.130        82/06/26 13:53:35       eric    149     148     00000/00000/00005
        !          1114: more debug information; fix dependencies in makefile
        !          1115: 
        !          1116: D 3.129        82/06/26 13:10:41       eric    148     147     00000/00000/00005
        !          1117: lint
        !          1118: 
        !          1119: D 3.128        82/06/26 12:33:39       eric    147     146     00000/00000/00005
        !          1120: take environment variable "NAME" to determine what your full name
        !          1121: is; this is overridden by -F.
        !          1122: 
        !          1123: D 3.127        82/06/26 11:56:51       eric    146     145     00000/00000/00005
        !          1124: add _kill command to SMTP.  this is probably dangerous in the
        !          1125: outside world.
        !          1126: 
        !          1127: D 3.126        82/06/25 19:38:24       eric    145     144     00000/00000/00005
        !          1128: add debugging information to server smtp code: _debug to set
        !          1129: Debug, _verbose to set verbose, and _showq to show the send queue
        !          1130: (already existant, just a name change)
        !          1131: 
        !          1132: D 3.125        82/06/23 12:12:19       eric    144     143     00000/00000/00005
        !          1133: check prescan return values in remotename
        !          1134: 
        !          1135: D 3.124        82/06/19 21:14:18       eric    143     142     00000/00000/00005
        !          1136: remember to put a newline at the end of the UGLYUUCP line
        !          1137: 
        !          1138: D 3.123        82/06/19 21:09:10       eric    142     141     00000/00000/00005
        !          1139: get rid of comment lines when storing rewriting rules
        !          1140: 
        !          1141: D 3.122        82/06/19 20:47:23       eric    141     140     00000/00000/00005
        !          1142: improve SMTP error reporting
        !          1143: 
        !          1144: D 3.121        82/06/18 11:58:31       eric    140     139     00000/00000/00005
        !          1145: believe host name on SMTP "HELO" line
        !          1146: 
        !          1147: D 3.120        82/06/17 10:44:38       eric    139     138     00000/00000/00005
        !          1148: fix botch in -Q flag (sets AliasFile rather than QueueDir)
        !          1149: 
        !          1150: D 3.119        82/06/16 14:51:16       eric    138     137     00000/00000/00005
        !          1151: allow connection refused as a temporary error; make sure there is
        !          1152: always someone to return the mail to on error
        !          1153: 
        !          1154: D 3.118        82/06/16 14:29:20       eric    137     136     00000/00000/00005
        !          1155: fix botch in outputing "recipient" type lines (e.g., To:)
        !          1156: 
        !          1157: D 3.117        82/06/07 23:53:26       eric    136     135     00000/00000/00005
        !          1158: allow multiple connections; call putline to output FULL_SMTP
        !          1159: lines (to limit line lengths, etc.); involves adding an asm.sed script
        !          1160: to the makefile
        !          1161: 
        !          1162: D 3.116        82/06/07 07:54:55       eric    135     134     00000/00000/00005
        !          1163: make transcripts verbose always; misc. message cleanup, etc.
        !          1164: 
        !          1165: D 3.115        82/06/07 07:06:13       eric    134     133     00000/00000/00005
        !          1166: strip out xlate stuff -- this belongs at a different level
        !          1167: 
        !          1168: D 3.114        82/06/06 23:13:08       eric    133     132     00000/00000/00005
        !          1169: avoid loops by not sending to owner-owner-* -- just send to
        !          1170: owner-owner instead
        !          1171: 
        !          1172: D 3.113        82/06/06 23:05:17       eric    132     131     00000/00000/00005
        !          1173: implement alias owner feature.  this actually works for any user.
        !          1174: basically, if the alias owner-xxx exists, errors sending to xxx will be
        !          1175: sent to that alias rather than to the sender.
        !          1176: 
        !          1177: D 3.112        82/05/31 19:03:47       eric    131     130     00000/00000/00005
        !          1178: make temp files the correct modes in all cases
        !          1179: 
        !          1180: D 3.111        82/05/31 18:49:50       eric    130     129     00000/00000/00005
        !          1181: pass lint.  notice that definitions in llib-lc have changed for
        !          1182: alarm() and sleep() calls {arg was unsigned, is now int}.
        !          1183: 
        !          1184: D 3.110        82/05/31 17:10:51       eric    129     128     00000/00000/00005
        !          1185: eliminate -V, -D, -p flags in favor of a single flag "-bx"
        !          1186: (be in mode x).
        !          1187: 
        !          1188: D 3.109        82/05/31 15:35:57       eric    128     127     00000/00000/00005
        !          1189: don't output SMTP/FTP error codes in transcript file
        !          1190: 
        !          1191: D 3.108        82/05/31 15:32:18       eric    127     126     00000/00000/00005
        !          1192: finish implementing envelopes.  it's not completely clear to me that
        !          1193: this is really the way to go, but it seems clearly better than what
        !          1194: i had before.  this delta includes many other minor changes, so it
        !          1195: should probably not be blithely removed.
        !          1196: 
        !          1197: D 3.107        82/05/30 10:25:35       eric    126     125     00000/00000/00005
        !          1198: add M_FULLSMTP (``X'' flag in .cf file) for eventual implementation
        !          1199: of full SMTP.  This version must support such garbage as line limits,
        !          1200: address length limits, return-path, etc.
        !          1201: 
        !          1202: D 3.106        82/05/29 20:00:30       eric    125     124     00000/00000/00005
        !          1203: allow the user with name "daemon" to send mail as anyone s/he wants.
        !          1204: 
        !          1205: D 3.105        82/05/22 02:05:48       eric    124     123     00000/00000/00005
        !          1206: add "junk mail" -- error responses are never returned.
        !          1207: 
        !          1208: D 3.104        82/05/22 01:38:07       eric    123     122     00000/00000/00005
        !          1209: add "envelopes" to contain the basic information needed as control
        !          1210: info for each message.  currently there is only one envelope -- this
        !          1211: being the obvious stupid conversion.  later there will be separate
        !          1212: envelopes for error messages, return receipts, etc.
        !          1213: 
        !          1214: D 3.103        82/05/20 17:46:07       eric    122     121     00000/00000/00005
        !          1215: add dfopen as a "determined fopen" -- it retries if it gets recoverable
        !          1216: errors.  we use it for returning mail (to dead.letter) and creating the
        !          1217: temp file.  the whole idea is to avoid dropping things on the floor on
        !          1218: heavily loaded systems.  this is untested, since it seems impossible to
        !          1219: fill up the inode or file tables on this VAX (but it works if the open
        !          1220: succeeds).
        !          1221: 
        !          1222: D 3.102        82/05/15 12:29:36       eric    121     120     00000/00000/00005
        !          1223: add the 'R' flag to mailers, saying to rewrite the recipient addresses
        !          1224: to be relative to the recipient.  This makes reply code easy, but
        !          1225: confuses user mail programs that are expecting to have to rewrite
        !          1226: recipient addresses.  In general, the receiving host must be "smart"
        !          1227: for this to work.
        !          1228: 
        !          1229: D 3.101        82/05/06 20:21:14       eric    120     119     00000/00000/00005
        !          1230: allow socket number on [IPC] connections -- eventually this
        !          1231: could be used to handle other low-level protocols.
        !          1232: 
        !          1233: D 3.100        82/03/27 20:15:12       eric    119     118     00000/00000/00005
        !          1234: delete neat remotename feature, because it doesn't work right in
        !          1235: UUCPland -- and breaks stupid hosts.  'Twill be fixed, I promise.  Time
        !          1236: must be spent figuring out how to define the civilized versus the
        !          1237: uncivilized world.
        !          1238: 
        !          1239: D 3.99 82/03/27 19:57:44       eric    118     117     00000/00000/00005
        !          1240: compensate for bug in getlogin: can return the empty string ("")
        !          1241: for certain error conditions rather than the NULL pointer.
        !          1242: 
        !          1243: D 3.98 82/03/22 22:37:54       eric    117     116     00000/00000/00005
        !          1244: continue the impossible task of tracking Bill Joy
        !          1245: 
        !          1246: D 3.97 82/03/22 22:10:44       eric    116     115     00000/00000/00005
        !          1247: more cleanup for new 4.2 system configuration and some more fixes
        !          1248: for vanilla V7
        !          1249: 
        !          1250: D 3.96 82/03/20 18:13:01       eric    115     114     00000/00000/00005
        !          1251: take % as an acceptable name terminator in GECOS field
        !          1252: ("in-care-of") -- for TEF%UCSFCGL
        !          1253: 
        !          1254: D 3.95 82/03/20 16:12:27       eric    114     113     00000/00000/00005
        !          1255: 16 bit changes -- should have no effect on VAX binaries to
        !          1256: speak of.
        !          1257: 
        !          1258: D 3.94 82/03/06 16:11:49       eric    113     112     00000/00000/00005
        !          1259: get queue scanning working correctly in conjunction with daemon mode
        !          1260: 
        !          1261: D 3.93 82/03/06 15:35:49       eric    112     111     00000/00000/00005
        !          1262: have daemon mode assume SMTP mode
        !          1263: 
        !          1264: D 3.92 82/03/06 15:08:24       eric    111     110     00000/00000/00005
        !          1265: give correct error message in SMTP if some of the addresses are not ok
        !          1266: 
        !          1267: D 3.91 82/03/06 14:52:22       eric    110     109     00000/00000/00005
        !          1268: arrange to be able to accept a connection from any host.
        !          1269: 
        !          1270: D 3.90 82/03/06 14:15:55       eric    109     108     00000/00000/00005
        !          1271: collapse special character processing into macro processing for
        !          1272: simplicity of code.
        !          1273: 
        !          1274: D 3.89 82/03/06 12:09:18       eric    108     107     00000/00000/00005
        !          1275: clean up error handling in IPC case; fix a minor bug in headers in
        !          1276: queueing code; make SMTP mail multi user per connect.
        !          1277: 
        !          1278: D 3.88 82/03/05 10:45:48       eric    107     106     00000/00000/00005
        !          1279: remove silly $U dependency in UGLYUUCP code
        !          1280: 
        !          1281: D 3.87 82/03/05 10:13:06       eric    106     105     00000/00000/00005
        !          1282: include direct connect on outgoing mail if the pathname is "[IPC]" --
        !          1283: this gives minimal number of processes for ethernet mail.
        !          1284: 
        !          1285: D 3.86 82/02/27 12:29:31       eric    105     104     00000/00000/00005
        !          1286: more work on after $g translate rewriting
        !          1287: 
        !          1288: D 3.85 82/02/27 11:37:42       eric    104     103     00000/00000/00005
        !          1289: implement "return receipt requested".
        !          1290: 
        !          1291: D 3.84 82/02/27 09:51:36       eric    103     102     00000/00000/00005
        !          1292: improve rewriting of "after $g translate" to correspond to the
        !          1293: real world.....
        !          1294: 
        !          1295: D 3.83 82/02/26 21:56:10       eric    102     101     00000/00000/00005
        !          1296: implement daemon mode
        !          1297: 
        !          1298: D 3.82 82/02/26 19:02:33       eric    101     100     00000/00000/00005
        !          1299: default to OldStyle headers -- this turns out to be needed so that it
        !          1300: will work right when running as a server.
        !          1301: 
        !          1302: D 3.81 82/02/22 19:59:16       eric    100     99      00000/00000/00005
        !          1303: some hacks to make the ethernet community happier -- .cf changes only
        !          1304: 
        !          1305: D 3.80 82/02/22 19:32:12       eric    99      98      00000/00000/00005
        !          1306: be much more clever about splitting up addresses when doing header
        !          1307: rewriting.  become NewStyle automatically based on heuristics; this
        !          1308: makes some other addresses work, although there are conceivably
        !          1309: sites that this could break.  Perhaps we should default to OldStyle?
        !          1310: I don't think this would break anything.
        !          1311: 
        !          1312: D 3.79 82/02/20 16:56:02       eric    98      97      00000/00000/00005
        !          1313: output names in a nice comma-separated fashion in messages -- this
        !          1314: opens up other possibilities
        !          1315: 
        !          1316: D 3.78 82/02/20 12:59:46       eric    97      96      00000/00000/00005
        !          1317: expand macros in rewriting rules early to allow multi-word macros to
        !          1318: be processed correctly.
        !          1319: 
        !          1320: D 3.77 82/02/20 12:12:09       eric    96      95      00000/00000/00005
        !          1321: add the -c flag, to cause sendmail to just queue messages that are for
        !          1322: mailers that are expensive; a later instantiation can come around and
        !          1323: send them in a batch.  Also, pass macro definitions through the
        !          1324: queueing code so that macros can be expanded later rather than sooner;
        !          1325: this is important for destination dependent macros such as $g.
        !          1326: 
        !          1327: D 3.76 82/02/04 20:31:21       eric    95      94      00000/00000/00005
        !          1328: add host aliasing; add -p flag.  this version doesn't yet know about
        !          1329: replacing the text of the host alias into the message however.  syntax
        !          1330: is grotty: "/hostmatch:%s@newhost" or whatever.
        !          1331: 
        !          1332: D 3.75 82/01/23 14:21:06       eric    94      93      00000/00000/00005
        !          1333: add M_UGLYUUCP flag; only catch names with leading slash as filenames;
        !          1334: let the user redefine their full name; don't pass -r or -f to uux.
        !          1335: 
        !          1336: D 3.74 82/01/10 21:57:33       eric    93      92      00000/00000/00005
        !          1337: cleanup from cbosgd (Mark Horton) testing; some internals, mostly
        !          1338: configuration.  This tries to make the configuration file (cf.m4) be
        !          1339: much more general, but I fear it is doomed to failure -- it may be
        !          1340: better to just tell people to roll their own.
        !          1341: 
        !          1342: D 3.73 82/01/05 09:59:19       eric    92      91      00000/00000/00005
        !          1343: fix botch in UGLYUUCP code -- gave "remote from <dest>" instead of
        !          1344: "remote from <source>"
        !          1345: 
        !          1346: D 3.72 82/01/01 18:39:43       eric    91      90      00000/00000/00005
        !          1347: know about all known Berknet host names so that we can handle the "."
        !          1348: notation happily in the full name representation.
        !          1349: 
        !          1350: D 3.71 82/01/01 18:27:15       eric    90      89      00000/00000/00005
        !          1351: send to dead.letter using sendto/recipient/deliver mechanism rather
        !          1352: than mailfile; this fixes a bug with the "from" name and seems like
        !          1353: a better abstraction.
        !          1354: 
        !          1355: D 3.70 81/12/06 12:39:10       eric    89      88      00002/00000/00003
        !          1356: cleanup so it will go through lint without any fancy grep -v's;
        !          1357: change the way SCCS Id's are handled.
        !          1358: 
        !          1359: D 3.69 81/12/05 14:14:06       eric    88      87      00000/00000/00003
        !          1360: insert SMTP "Mail-From:" line.
        !          1361: 
        !          1362: D 3.68 81/12/05 11:53:41       eric    87      86      00000/00000/00003
        !          1363: put the SMTP and queueing code on compilation flags so that sendmail
        !          1364: will fit on non-ID PDP-11's (ugh); put the ugly UUCP hack on a
        !          1365: compilation flag also to emphasize that it sucks eggs; makefile
        !          1366: cleanup.
        !          1367: 
        !          1368: D 3.67 81/11/27 21:37:05       eric    86      85      00000/00000/00003
        !          1369: this is a stupid hack to put "remote from <host>" lines on the From
        !          1370: lines going to UUCP mail.  someday i hope to rip out this stupidity.
        !          1371: it is triggered by any mailer named "uucp" -- it ought to be a special
        !          1372: flag, but i refuse to legitimize antique hacky mistakes.
        !          1373: 
        !          1374: D 3.66 81/11/22 19:17:45       eric    85      84      00000/00000/00003
        !          1375: Edit queue control files when running queue (assuming there are still
        !          1376: recipients left).  Also, modify the MsgPriority to be the absolute
        !          1377: number (not the Priority: value); this allows us to include aging into
        !          1378: the priority algorithm.
        !          1379: 
        !          1380: D 3.65 81/11/21 18:42:47       eric    84      83      00000/00000/00003
        !          1381: change the send queue to be only one queue instead of one per mailer.
        !          1382: this is slightly inefficient but simpler.  also, pass this queue
        !          1383: around so we can have multiple send queues.  this makes VRFY work.
        !          1384: 
        !          1385: D 3.64 81/11/21 16:38:29       eric    83      82      00000/00000/00003
        !          1386: convert to SMTP draft 3 -- finishing touches.  Punt on the VRFY/
        !          1387: EXPN commands for now; they aren't required anyhow.  Move the fullname
        !          1388: into the address structure so it can be inherited.
        !          1389: 
        !          1390: D 3.63 81/11/11 20:24:07       eric    82      81      00000/00000/00003
        !          1391: integrate user SMTP into sendmail itself.  If there is no $u arg
        !          1392: in the mailer argument list, SMTP is run.  This can be used directly
        !          1393: over the Ethernet or to any clever mailer.  We still need to edit
        !          1394: spooled control files to remove recipients that have been successfully
        !          1395: sent during queue processing.
        !          1396: 
        !          1397: D 3.62 81/11/08 13:00:21       eric    81      80      00000/00000/00003
        !          1398: know about SMTP over TCP.  The current SMTP user is not clever
        !          1399: enough to deal with multiple users at one host.  To fix this we will
        !          1400: have to speak some smart protocol between sendmail and the mailer --
        !          1401: maybe SMTP??
        !          1402: 
        !          1403: D 3.61 81/11/07 15:41:39       eric    80      79      00000/00000/00003
        !          1404: clean up to compile & work on ARPAVAX; move stat file to
        !          1405: /usr/lib/sendmail.st; fix bug in syserr with error codes
        !          1406: 
        !          1407: D 3.60 81/10/31 22:12:47       eric    79      78      00000/00000/00003
        !          1408: drop old NCP stuff for ARPANET handling; fix some bugs in error
        !          1409: messages with multiple recipients in SMTP; clean up error handling
        !          1410: 
        !          1411: D 3.59 81/10/27 12:24:51       eric    78      77      00000/00000/00003
        !          1412: experimental version combining queueing with daemon operation.
        !          1413: I'm sure this doesn't work -- if only because the wait()s are funny.
        !          1414: 
        !          1415: D 3.58 81/10/27 10:50:52       eric    77      76      00000/00000/00003
        !          1416: More queueing cleanup: implement timeouts (still one-stage),
        !          1417: properly implement priorities (didn't work before), and miscellaneous
        !          1418: cleanup.
        !          1419: 
        !          1420: D 3.57 81/10/26 14:22:34       eric    76      75      00000/00000/00003
        !          1421: Install new experimental queueing facility -- one stage timeout,
        !          1422: etc.  This version is still quite incomplete.  It needs to reorder
        !          1423: the queue after some interval, do two-stage timeout, take option
        !          1424: info from the queue file instead of the command line, read the
        !          1425: sender's .mailcf file, etc.  Some of this is useful for SMTP also.
        !          1426: 
        !          1427: D 3.56 81/10/23 19:38:09       eric    75      74      00000/00000/00003
        !          1428: Eliminate magic MN_LOCAL and MN_PROG; change q_mailer item in ADDRESS
        !          1429: to be pointer to mailer rather than index.
        !          1430: 
        !          1431: D 3.55 81/10/22 10:25:29       eric    74      73      00000/00000/00003
        !          1432: move stats file to /usr/lib; put location of sendmail.hf in conf.c
        !          1433: 
        !          1434: D 3.54 81/10/22 09:43:48       eric    73      72      00000/00000/00003
        !          1435: take fullname from /etc/passwd if Smtp mode and sender name
        !          1436: is indeed local.  Also accepts names more often; this is probably
        !          1437: a disaster for sender verification.
        !          1438: 
        !          1439: D 3.53 81/10/22 09:14:30       eric    72      71      00000/00000/00003
        !          1440: implement HELP and MRSQ -- MRSQ is a partial implementation
        !          1441: of old MTP -- in particular, To: fields in MAIL commands are not yet
        !          1442: implemented.  The "message" routine now takes first args of the form
        !          1443: "999-" to specify continuation.
        !          1444: 
        !          1445: D 3.52 81/10/20 11:36:24       eric    71      70      00000/00000/00003
        !          1446: clean up the SMTP stuff some more
        !          1447: 
        !          1448: D 3.51 81/10/19 22:27:17       eric    70      69      00000/00000/00003
        !          1449: implement SMTP mode -- doesn't support source routing or the
        !          1450: HELP command, and doesn't give the correct code on VRFY or forwarding.
        !          1451: Maybe someday....
        !          1452: 
        !          1453: D 3.50 81/10/17 16:58:04       eric    69      68      00000/00000/00003
        !          1454: initial prep to put in Daemon mode
        !          1455: 
        !          1456: D 3.49 81/10/12 10:04:19       eric    68      67      00000/00000/00003
        !          1457: throw in some "errno = 0;"'s to make syserr's more accurate;
        !          1458: take any -f flag if debug mode and uid==euid.
        !          1459: 
        !          1460: D 3.48 81/10/08 22:55:37       eric    67      66      00000/00000/00003
        !          1461: ignore interrupts and hangups while calling mailer.
        !          1462: 
        !          1463: D 3.47 81/10/08 09:13:30       eric    66      65      00000/00000/00003
        !          1464: fix botch in backup code during rewriting
        !          1465: 
        !          1466: D 3.46 81/10/06 19:12:57       eric    65      64      00000/00000/00003
        !          1467: change rewriting rules to use $N on RHS to match LHS, and include
        !          1468: $=X (class match) in the matching; this will allow us to match the
        !          1469: proposed "user.host@domain" syntax as well as the old syntax, by
        !          1470: putting the known domains into a class to disambiguate.
        !          1471: 
        !          1472: D 3.45 81/10/02 11:05:21       eric    64      63      00000/00000/00003
        !          1473: arrange to give the correct "from" person on error messages.
        !          1474: 
        !          1475: D 3.44 81/10/02 10:07:38       eric    63      62      00000/00000/00003
        !          1476: use ruleset 2 to rewrite names after the $g translate (to fix some
        !          1477: forwarding problems; do a read check in putmessage (just in case
        !          1478: the temp file disappeared); some general cleanup.
        !          1479: 
        !          1480: D 3.43 81/09/30 10:00:20       eric    62      61      00000/00000/00003
        !          1481: fix the <> syntax, convert "at" to "@" in from addresses also,
        !          1482: plus some minorness to get the multi-machine case going nicely.
        !          1483: 
        !          1484: D 3.42 81/09/29 18:22:25       eric    61      60      00000/00000/00003
        !          1485: change processing of From: person; basically, this mod deletes the
        !          1486: Original-From: line if redundant with the generated From: line, uses
        !          1487: the Original-From: line for the From: line if possible, and a host of
        !          1488: other such trivialities.
        !          1489: 
        !          1490: D 3.41 81/09/29 14:59:00       eric    60      59      00000/00000/00003
        !          1491: fix hash function computation for symbol table on 16-bit machines
        !          1492: 
        !          1493: D 3.40 81/09/28 19:17:29       eric    59      58      00000/00000/00003
        !          1494: enable aliases to self-reference themselves correctly.
        !          1495: 
        !          1496: D 3.39 81/09/24 10:30:44       eric    58      56      00000/00000/00003
        !          1497: changes to work under a V6 system -- mostly compilation flags
        !          1498: 
        !          1499: D 3.38.1.1     81/09/23 18:23:19       eric    57      56      00000/00000/00003
        !          1500: break some configuration into conf.h -- simplifies makefile changes
        !          1501: on different machines.  But there are still conditional libraries, so
        !          1502: this may not be a good idea.....
        !          1503: 
        !          1504: D 3.38 81/09/23 09:52:23       eric    56      55      00000/00000/00003
        !          1505: fix bug in file modes when mailing to files that didn't exist before;
        !          1506: add an 'F' line to the .cf file that will read class entries from
        !          1507: another file, given a scanf string to do the parsing.
        !          1508: 
        !          1509: D 3.37 81/09/22 13:24:25       eric    55      54      00000/00000/00003
        !          1510: fix problem with using macros in rules; change configuration to send
        !          1511: different flags when destined for arpanet vs. berknet hosts, etc.
        !          1512: 
        !          1513: D 3.36 81/09/22 11:33:29       eric    54      53      00000/00000/00003
        !          1514: finally make suppression of sender in mailing lists work -- this version
        !          1515: also works correctly on simple aliases.
        !          1516: 
        !          1517: D 3.35 81/09/21 18:49:53       eric    53      52      00000/00000/00003
        !          1518: fix suppression of from address in mailing lists.
        !          1519: 
        !          1520: D 3.34 81/09/20 10:46:32       eric    52      51      00000/00000/00003
        !          1521: don't let a mailer ever execute as root (that should solve the
        !          1522: security problems!) -- essentially just map root into someone else.
        !          1523: Adds yet another configuration variable (should this be in the .cf file?
        !          1524: 
        !          1525: D 3.33 81/09/16 20:04:26       eric    51      50      00000/00000/00003
        !          1526: take underscore as well as space to separate parts of a person's
        !          1527: full name.  Dot notation should be made to work someday also.
        !          1528: 
        !          1529: D 3.32 81/09/16 17:16:19       eric    50      49      00000/00000/00003
        !          1530: have .forward ownership stick harder than :include: ownership:
        !          1531: this prevents cretins from using writable root files for nastiness.
        !          1532: all this is pointless if /usr/lib/aliases is writable though....
        !          1533: 
        !          1534: D 3.31 81/09/16 16:39:44       eric    49      48      00000/00000/00003
        !          1535: be REALLY clever and inherit uid/gid from owner of :include:
        !          1536: files also...   solves problem of alias to non-secure file
        !          1537: 
        !          1538: D 3.30 81/09/16 16:24:19       eric    48      47      00000/00000/00003
        !          1539: last delta was too paranoid -- this increases the number of
        !          1540: cases that work (but is still safe -- I hope)
        !          1541: 
        !          1542: D 3.29 81/09/16 16:08:08       eric    47      46      00000/00000/00003
        !          1543: run as the user forwarding mail after a .forward operation;
        !          1544: fix a bug in .forwarding that caused recursive expansion;
        !          1545: restrict mail to programs, files, and with :include: for security
        !          1546: reasons.
        !          1547: 
        !          1548: D 3.28 81/09/14 12:41:28       eric    46      45      00000/00000/00003
        !          1549: check MAXATOM overflow; increase MAXATOM value
        !          1550: 
        !          1551: D 3.27 81/09/14 12:19:23       eric    45      44      00000/00000/00003
        !          1552: fix but in mailers that only take one address at a time
        !          1553: 
        !          1554: D 3.26 81/09/12 17:34:05       eric    44      43      00000/00000/00003
        !          1555: match on full name for local users
        !          1556: 
        !          1557: D 3.25 81/09/12 15:48:57       eric    43      42      00000/00000/00003
        !          1558: change From: processing to reduce the number of Original-From:
        !          1559: lines; change allocation of global variables.
        !          1560: 
        !          1561: D 3.24 81/09/07 14:12:48       eric    42      41      00000/00000/00003
        !          1562: fix up umask; allow setuid on files to take recipient owner;
        !          1563: factor some configuration info into conf.c
        !          1564: 
        !          1565: D 3.23 81/09/07 12:33:38       eric    41      40      00000/00000/00003
        !          1566: add auto-rebuild on alias database; fix some aliasing bugs;
        !          1567: add statistics to rebuild; slight code restructuring; change
        !          1568: version handling one last (?) time
        !          1569: 
        !          1570: D 3.22 81/09/07 10:23:04       eric    40      39      00000/00000/00003
        !          1571: add NOTUNIX compile flag to turn off UNIX "From " line processing
        !          1572: 
        !          1573: D 3.21 81/09/06 19:50:23       eric    39      38      00000/00000/00003
        !          1574: cleanup, commenting, linting, etc.
        !          1575: 
        !          1576: D 3.20 81/09/06 14:23:20       eric    38      37      00000/00000/00003
        !          1577: improve "version:" entry in makefile; fix -em (mail back errors) option
        !          1578: 
        !          1579: D 3.19 81/09/06 10:29:49       eric    37      36      00000/00000/00003
        !          1580: fix $u argument processing bug (happened in uucp); .cf file cleanup
        !          1581: 
        !          1582: D 3.18 81/08/31 21:22:39       eric    36      35      00000/00000/00003
        !          1583: collect mail statistics; minor configuration changes
        !          1584: 
        !          1585: D 3.17 81/08/31 12:11:57       eric    35      34      00000/00000/00003
        !          1586: allow "error" as a net name to print error messages
        !          1587: 
        !          1588: D 3.16 81/08/29 19:16:24       eric    34      33      00000/00000/00003
        !          1589: drop unnecessary H_FORCE bits in conf.c; delete H_DELETE
        !          1590: (since H_ACHECK can be used with a zero mask field)
        !          1591: 
        !          1592: D 3.15 81/08/27 11:42:58       eric    33      32      00000/00000/00003
        !          1593: on -t, use argument list as a supress list
        !          1594: 
        !          1595: D 3.14 81/08/25 16:06:37       eric    32      31      00000/00000/00003
        !          1596: change handling of <LWSP> characters; remove special
        !          1597: "at" processing (put it in .cf file)
        !          1598: 
        !          1599: D 3.13 81/08/24 14:05:39       eric    31      30      00000/00000/00003
        !          1600: Add "-t" option to read To:, Cc:, and Bcc: lines to get recipients
        !          1601: 
        !          1602: D 3.12 81/08/23 12:08:53       eric    30      29      00000/00000/00003
        !          1603: plug assorted security holes
        !          1604: 
        !          1605: D 3.11 81/08/22 17:52:06       eric    29      28      00000/00000/00003
        !          1606: Arrange to pull full name out of From line if found; includes
        !          1607: Original-From: hacking (oh so ugly).  There's got to be a better way
        !          1608: to do this...
        !          1609: 
        !          1610: D 3.10 81/08/22 14:45:27       eric    28      27      00000/00000/00003
        !          1611: fix UNIX From line parsing problem; add $b macro to get
        !          1612: correct dates; fix mail-to-file problem; define basic macros
        !          1613: before cracking arguments so that -D is more useful
        !          1614: 
        !          1615: D 3.9  81/08/21 18:51:33       eric    27      26      00000/00000/00003
        !          1616: return transcript even if no message was collected
        !          1617: 
        !          1618: D 3.8  81/08/21 18:23:53       eric    26      25      00000/00000/00003
        !          1619: drop M_FINAL, add $y=ttyname, rename some constants
        !          1620: 
        !          1621: D 3.7  81/08/20 15:19:50       eric    25      24      00000/00000/00003
        !          1622: internal cleanup & minor improvements
        !          1623: 
        !          1624: D 3.6  81/08/18 11:40:37       eric    24      23      00000/00000/00003
        !          1625: allow :include: specs
        !          1626: 
        !          1627: D 3.5  81/08/17 11:02:12       eric    23      22      00000/00000/00003
        !          1628: implement hashing in symbol table and add more headers, from
        !          1629: BB&N Report No. ICST/CBOS - 80/2, "Specification of a Draft Message
        !          1630: Format Standard (Draft Report)", prepared for NBS.
        !          1631: 
        !          1632: D 3.4  81/08/09 19:08:25       eric    22      21      00000/00000/00003
        !          1633: put mailer definitions into configuration file
        !          1634: 
        !          1635: D 3.3  81/03/28 11:52:37       eric    21      20      00003/00001/00000
        !          1636: change format of Version to be suitable for internal use
        !          1637: 
        !          1638: D 3.2  81/03/20 09:45:43       eric    20      19      00001/00001/00000
        !          1639: change name (again); from postbox to sendmail
        !          1640: 
        !          1641: D 3.1  81/03/07 14:27:18       eric    19      18      00001/00001/00000
        !          1642: ----- delivermail ==> postbox -----
        !          1643: 
        !          1644: D 2.8  81/02/28 11:54:11       eric    18      17      00000/00000/00001
        !          1645: install VAX mpx file logging
        !          1646: 
        !          1647: D 2.7  81/02/05 08:01:25       eric    17      16      00000/00000/00001
        !          1648: always issued a delivermail error message regardless of M_QUIET
        !          1649: 
        !          1650: D 2.6  81/01/10 14:28:41       eric    16      15      00000/00000/00001
        !          1651: include ArpaLocal; flush output on errors; allow
        !          1652: "user" "at" "host" as separate parameters; etc.
        !          1653: 
        !          1654: D 2.5  81/01/08 23:57:31       eric    15      14      00000/00000/00001
        !          1655: fixed botch in at => @ translation
        !          1656: 
        !          1657: D 2.4  81/01/08 19:37:22       eric    14      13      00000/00000/00001
        !          1658: fixed several bugs in parser; translate <lwsp> into quoted .
        !          1659: 
        !          1660: D 2.3  80/12/06 17:33:32       eric    13      12      00000/00000/00001
        !          1661: fix ^D botch in maketemp; allow "eric:eric,i.eric"
        !          1662: 
        !          1663: D 2.2  80/11/20 19:57:57       eric    12      11      00000/00000/00001
        !          1664: make dates be taken as date sent rather than date delivered
        !          1665: 
        !          1666: D 2.1  80/11/05 11:00:06       eric    11      10      00000/00000/00001
        !          1667: release 2
        !          1668: 
        !          1669: D 1.10 80/10/28 23:52:38       eric    10      9       00000/00000/00001
        !          1670: fixed ANOTHER bug in aliasing (this is getting dull....)
        !          1671: 
        !          1672: D 1.9  80/10/27 19:28:30       eric    9       8       00000/00000/00001
        !          1673: fix alias bug; count message sizes; map stderr->stdout; misc.
        !          1674: 
        !          1675: D 1.8  80/10/21 12:58:43       eric    8       7       00000/00000/00001
        !          1676: install dbm stuff + fix quoting bugs
        !          1677: 
        !          1678: D 1.7  80/10/18 16:48:51       eric    7       6       00000/00000/00001
        !          1679: cleanup for dbm stuff: Error => Errors; move local host
        !          1680: detection into parse; misc cleanup
        !          1681: 
        !          1682: D 1.6  80/10/15 10:24:24       eric    6       5       00000/00000/00001
        !          1683: deal with disk overflows
        !          1684: 
        !          1685: D 1.5  80/10/11 20:10:44       eric    5       4       00000/00000/00001
        !          1686: fixed problem with sizeof MsgId == 0
        !          1687: 
        !          1688: D 1.4  80/10/11 18:55:35       eric    4       3       00000/00000/00001
        !          1689: cleanup to simplify distribution
        !          1690: 
        !          1691: D 1.3  80/10/11 13:49:55       eric    3       2       00000/00000/00001
        !          1692: accept multi-line fields in headers
        !          1693: 
        !          1694: D 1.2  80/10/11 13:37:53       eric    2       1       00000/00000/00001
        !          1695: test
        !          1696: 
        !          1697: D 1.1  80/10/11 13:34:43       eric    1       0       00001/00000/00000
        !          1698: 
        !          1699: code versions:
        !          1700: 
        !          1701: conf.o:
        !          1702:        conf.c  4.4             8/28/83
        !          1703: main.o:
        !          1704:        sendmail.h      4.2             8/28/83
        !          1705:        main.c  4.3             9/5/83
        !          1706: collect.o:
        !          1707:        collect.c       4.1             7/25/83
        !          1708: parseaddr.o:
        !          1709:        parseaddr.c     4.1             7/25/83
        !          1710: alias.o:
        !          1711:        alias.c 4.1             7/25/83 (with DBM)
        !          1712: deliver.o:
        !          1713:        deliver.c       4.2             8/28/83
        !          1714: savemail.o:
        !          1715:        savemail.c      4.2             8/28/83
        !          1716: err.o:
        !          1717:        err.c   4.2             9/5/83
        !          1718: readcf.o:
        !          1719:        readcf.c        4.2             8/28/83
        !          1720: stab.o:
        !          1721:        stab.c  4.1             7/25/83
        !          1722: headers.o:
        !          1723:        headers.c       4.3             8/21/83
        !          1724: recipient.o:
        !          1725:        recipient.c     4.1             7/25/83
        !          1726: stats.o:
        !          1727:        stats.c 4.1             7/25/83
        !          1728: daemon.o:
        !          1729:        daemon.c        4.4             8/28/83 (with daemon mode)
        !          1730: usersmtp.o:
        !          1731:        usersmtp.c      4.4             9/7/83
        !          1732: srvrsmtp.o:
        !          1733:        srvrsmtp.c      4.3             8/28/83
        !          1734: queue.o:
        !          1735:        queue.c 4.1             7/25/83
        !          1736: macro.o:
        !          1737:        macro.c 4.1             7/25/83
        !          1738: util.o:
        !          1739:        util.c  4.2             8/31/83
        !          1740: clock.o:
        !          1741:        clock.c 4.1             7/25/83
        !          1742: trace.o:
        !          1743:        trace.c 4.1             7/25/83
        !          1744: envelope.o:
        !          1745:        envelope.c      4.2             8/21/83
        !          1746: sysexits.o:
        !          1747:        sysexits.c      4.2             7/31/83
        !          1748: bmove.o:
        !          1749:        bmove.c 4.1             7/25/83
        !          1750: arpadate.o:
        !          1751:        arpadate.c      4.1             7/25/83
        !          1752: convtime.o:
        !          1753:        convtime.c      4.1             7/25/83
        !          1754: 
        !          1755: # endif COMMENT

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.