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