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

Defined functions

A defined in line 383; used 5 times
ECONNRESET defined in line 138; never used
ENETUNREACH defined in line 413; never used
H_DELETE defined in line 1574; never used
Standard defined in line 1597; never used
VAX defined in line 1167; used 2 times
X defined in line 1443; never used
accept defined in line 907; used 11 times
address defined in line 431; used 12 times
addresses defined in line 179; used 13 times
alarm defined in line 1148; used 6 times
aliasing defined in line 1646; used 2 times
cbosgd defined in line 1319; never used
changes defined in line 525; used 13 times
crlf defined in line 326; never used
date defined in line 256; used 5 times
delimiters defined in line 185; never used
disconnect defined in line 525; used 3 times
early defined in line 383; used 2 times
em defined in line 1562; used 1 times
field defined in line 1167; used 4 times
file defined in line 1322; used 34 times
files defined in line 1066; used 21 times
fix defined in line 335; used 62 times
flag defined in line 1106; used 27 times
forever defined in line 757; used 1 times
from defined in line 185; used 33 times
h defined in line 641; used 5 times
hacking defined in line 1591; used 1 times
half defined in line 335; used 1 times
info defined in line 989; used 6 times
last defined in line 1552; used 5 times
line defined in line 383; used 21 times
lines defined in line 1136; used 19 times
log defined in line 666; used 13 times
mail defined in line 1167; used 18 times
mailers defined in line 936; used 5 times
main defined in line 940; used 5 times
message defined in line 256; used 33 times
minutes defined in line 716; never used
mode defined in line 1066; used 25 times
names defined in line 1051; used 8 times
netnews defined in line 1014; never used
newstr defined in line 326; never used
oeq defined in line 256; never used
parameter defined in line 256; used 2 times
password defined in line 666; never used
processing defined in line 1581; used 19 times
queue defined in line 1350; used 49 times
recipients defined in line 335; used 5 times
refreezing defined in line 477; never used
refused defined in line 25; used 1 times
remotename defined in line 992; used 3 times
sleep defined in line 1148; never used
spontaneously defined in line 431; never used
string defined in line 1167; used 2 times
structure defined in line 525; used 4 times
syserr defined in line 1014; used 3 times
translate defined in line 1453; used 2 times
verify defined in line 975; used 1 times
wait defined in line 1394; used 3 times
work defined in line 1495; used 16 times
yourself defined in line 14; never used

Defined variables

SccsId defined in line 2; never used
Version defined in line 5; used 1 times
Last modified: 1983-12-09
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1463
Valid CSS Valid XHTML 1.0 Strict