sendmail, second edition by Bryan Costales with Eric Allman Here are the changes from the 4/98 reprint: {1} 1st indented para.: changed "mail transport agent" to "mail transfer agent" {4} Section 1.1, 2nd paragraph, Changed: A mail transport agent (\s-1MTA\s0) Into: A mail transfer agent (\s-1MTA\s0) (144) last para. of section 13.2.7, line 1: changed "ether" to "either" {274} Section 19.6.28, 4th line from end of page, inserted this new paragraph above the one one that begins "You declare ....": Also note that virtual domains in the key (such as \f(CW@fictional.com\fR) must be added to class \f(CWw\fR in order for them to be recognized as local. (275) reprinted for pagebreak {289} Section 20.2.1, line 19, inserted an _ character to change: RealHostAddr.sin.sin_addr.saddr Into: RealHostAddr.sin.sin_addr.s_addr {290} Section 20.2.1, last paragraph, last sentence: Deleted phrase: , nor does it expect \f(CWRealHostAddr\fR to be \s-1NULL\s0. {334} "If TCPWRAPPER is defined..." now reads: "If TCPWRAPPERS is defined.." {388} Section 23.9.13, the indented paragraph headed N, Added this new sentence just before the last: If the \f(CWN\fR is absent, but an \f(CWS\fR, \f(CWF\fR, or \f(CWD\fR is present, \s-1DSN\s0 information will not be propagated. {492} Section 29.1.5, 3rd line of 1st example: Changed: Pjunk Into: Pjunk=-100 (518) 5th-last line of Section 30.3.1: The second "run" (the one after "grep") was removed. {535} Section 30.4.11, 3rd sentence: Changed: ... SMTP RCPT ... Into: ... SMTP MAIL ... {548} Section 30.8.3, 3rd sentence: Changed: ... with the F=5 flag set ... Into: ... with the F=A flag set ... {549} Section 30.8.5, last sentence: Changed: (pass8bit) Into: (pass 8) {565} Section 30.8.40, 1st paragraph, second from last sentence: Inserted "effective" in two places in: as the user and group specified To form: as the effective user and effective group specified {565} Section 30.8.40, 1st paragraph, appended to end of paragraph: In both instances, the real \s-1GID\s0 and \s-1UID\s0 remain that of the receiving user --that is, the \f(CWF=S\fR flag acts like the \s-1UNIX\s0 \fIsuid\fR and \fIsgid\fR bits. {567} Section 30.8.45, first sentence: Changed: ... signifies the end of the message. Into: ... have that dot doubled. also Deleted the 2 sentences: Ordinarily, \s-1SMTP\s0 would interpret the first of those lines as the end of the mail message. To prevent that misinterpretation, it is necessary to double the leading dot in transmission {588} Section 31.10.5 second from last paragraph, last sentence: Changed: relay_host Into: relayhost {592} Section 31.10.14, first sentence of last paragraph on page: Changed: (and performed aliasing for a local sender) Into: (possibly aliased) {596} Section 31.10.20, 2nd to last paragraph in section: Changed: \f(CW$j\fR is also used in the \f(CWMessage-Id:\fR header definition. Into: \f(CW$j\fR is also used: in the \f(CWMessage-Id:\fR header definition; and as the canonical host-name following .IX HELO the \s-1HELO\s0 or \s-1EHLO\s0 command. {613} Section 32.1.2.1, last example in section: Changed: %[^#] Into: %[^\#] {613} Section 32.1.2.1, last paragraph: Appended new sentence to end of paragraph: The \f(CW\\\fR character prevents \fIsendmail\fR from treating the \f(CW#\fR as a comment character. {614} Section 32.2.1, last sentence on page: Changed: server1@domain2.edu Into: server1.domain2.edu {616} Section 32.2.3, second example: Changed: R$+ . $=X $* Into: R$+ $=X $* {638} Section 33.3.4.11, last sentence in section: Changed: See also -k for the value's column .... Into: See also -k for the key's column .... {666} Section 34.1.3, Table 34-1, Changed: Use the -i command line switch .... Into: Use the -OIgnoreDots command line switch .... (667) reprinted for pagebreak {669} Section 34.3, Table 34-3 for item confCOPY_ERRORS_TO: Changed: PostmasterCopy (g) Into: PostmasterCopy (P) {670} Section 34.3, Table 34-3 for item confOLD_STYLE_HEADERS: Changed: OldStyleHeaders (g) Into: OldStyleHeaders (o) {672} Section 34.4, Table 34-4, item EightBitMode: Changed: Boolean Into: Character {678} Section 34.6.5, inserted new paragraph following table 34-10: The \fIsendmail\fR program checks its connection cache just before opening up a new connection to a host. If the cache contains an entry for that host, \fIsendmail\fR sends an \s-1SMTP RSET\s0 command to the host to make sure the connection is still active. If the \s-1SMTP RSET\s0 succeeds, the connection is re-used. If the \s-1SMTP RSET\s0 times out (see \(sc\#sOPTION_Timeout_rset, the \f(CWTimeout.rset\fR option), or fails, or if the host was not in the cache, an new connection is made. {678} Section 34.6.6, first sentence: Changed: The sendmail program offers three .... Into: The sendmail program offers four .... {705} Section 34.8.22.1, Appended new sentence to section: Note that compiling with \s-1MIME8TO1=1\s0 (see \(sc\#sCOMPILE_MIME8TO7) causes \s-1ESMTP\s0 to always advertise \s-18BITMIME\s0. {711} Section 34.8.27, 2nd para., third sentence: Changed: $f Into: $x (713) Section 34.8.30, second sentence: Changed \fI/etc/host\fR into \fI/etc/hosts\fR {715} Section 34.8.32, 3rd line of first listing, Changed: ... command line shorthand Into: ... command line shorthand (deprecated) {719} the bottom line was: define('confMAX_DAEMON_CHILDREN',`(CInum') <- V8 m4 technique it is now: define('confMAX_DAEMON_CHILDREN',`num') <- V8 m4 technique {739} Section 34.8.52, last sentence, 2nd paragraph on page: Changed: (which could involve recreating a freeze file) Into: (which prior to V8 could involve creating a freeze file) {790} Section 35.8, 2nd paragraph from end of section: Changed: recipients is the number of recipients specified in the To:, Cc: and Bcc: header lines (after alias expansion), Into: recipients is either the number of recipients in the envelope or (with -t) the number of recipients specified in the To:, Cc: and Bcc: header lines (after alias expansion), {799} Section 35.10.15, Appended new text to last sentence in section: But note that V8 \fIsendmail\fR will remove the \f(CWFull-Name:\fR header if the \f(CWF=x\fR flag (see \(sc\#sAGENTM_x) is set for the recipient's delivery agent. {803} Section 35.10.25, 3rd sentence of section: Changed: ... added to the end of the list .... Into: ... added to the top of the list .... {805} Section 35.10.25, item "$?u for $u" Changed: $?u for $u Into: $?u for $u$. {806} Section 35.10.27, first sentence: Changed: ... go to an address that is ... Into: ... to to one or more addresses that are ... {806} Section 35.10.28, only example in section: Changed: H?P?Return-Path: $g Into: H?P?Return-Path: <$g> {813} Section 36.1.1, under item Results, second example: Changed: smtp msg Into: smtp id msg {825} Section 36.5.8, 5th paragraph: Changed: DNS lookups Into: DNS lookup failures {832} Section 36.7.9, first bulleted item on page: Changed: ..., the sender becomes .... Into: ..., the header sender becomes .... {846} Section 37.1, 4th paragraph on page: Swapped the second and third sentences in that paragraph to form: The maximum value that may be specified for a single \f(CIcategory\fR is 99. Any value specified above the maximum is reduced to the maximum. The maximum value for \f(CIlevel\fR is that of an \fIunsigned char\fR (255 decimal). {864} Section 37.5.18, last sentence of last paragraph: Changed: ...TRUE is a zero result and FALSE is a.... Into: ...TRUE represents a zero result and FALSE represents a.... {870} Section 37.5.30, Table 37.5, line 1: Changed: Authoritative server not found Into: Host not found (authoritative answer returned) {879} Section 37.5.48, Table 37.8, item j: Changed: Deliver w/o queueing Into: Deliver w/o queueing (obsolete as of V8) {911} Section 37.5.118, 1st paragraph of section: Changed: When \fIsendmail\fR bounces a mail message, it needs to create headers that probably didn't exist before. It uses the \fIputheader\fR\|(\|) routine to create them. Into: The \fIsendmail\fR program uses \fIputheader\fR\|(\|) to create headers that didn't exist before. {911} Section 37.5.119, 1st sentence: Changed: Each header line created for the bounced message is displayed Into: Each header line created is displayed {914} Section 37.3.123, footnote to Table 37.13: Changed: This is the base (offset) of types 16 through 16+\fIn\fP, where \fIn\fP is the maximum number of connections as defined with the \f(CWConnectionCacheSize\fR (\f(CWk\fR) option (see \(sc\#sOPTIONConnectionCacheSize). Into: This is the base (offset) of types 16 through 16+\fIn\fP, where \fIn\fP is 16 plus \s-1MAXMAILERS\s0 as defined in \fIconf.h\fR. {927} Section 37.5.146, Table 37-15: Changed: Priority must be high enough Into: Priority must be high enough (required qf file line) {927} Section 37.5.146, Table 37-15: Changed: Must have been in queue long enough Into: Must have been in queue long enough (required qf file line) {928} Section 37.5.148, Table 37-16: Changed: Message (DATA) being sent Into: Message being sent (929) reprinted for pagebreak {934} Section 37.5.159, 1st sentence of 4th paragraph on page: Changed: ... specified, if SUID_ROOT_FILES_OK was defined when sendmail was compiled, if the file .... Into: ... specified, if the file .... And delete the footnote about SUID_ROOT_FILES_OK. {940} Section 37.5.176, last sentence 2nd paragraph: Changed: If logging fails, ... Into: If the message on output fails, ... {963} Section 38.5.5, 2nd paragraph from end, first sentence: Changed: your@localhost Into: you@localhost {983} Section C.3, first example on page, % ln -s /usr/local/include/db/cdefs.h /usr/local/include/db/sys % ln -s /usr/local/include/db/cdefs.h /usr/local/include/db/sys Deleted the second, duplicate, line. {985} Appendix D, first paragraph. Replaced existing first paragraph with new text: Sun Microsystems has adopted V8.6 as its standard version of \fIsendmail\fR as of Solaris 2.5. It will adopt V8.8 when it releases Solaris 2.7. Here, we cover Sun's enhancements to V8.8 as planned for Solaris 2.7. {985} Appendix D, 2nd paragraph, 2nd sentence: Changed: V6/Sun Into: V7/Sun {985} Section D.1, 1st paragraph, 3rd line, two places: Changed: V6/Sun Into: V7/Sun {985} Appendix D, footnote: Changed: Note that V6/Sun is available only with Solaris 2.6. If your release of the operating system is earlier than Solaris 2.6, ... Into: Note that V7/Sun will be available only with Solaris 2.7. If your release of the operating system is earlier than Solaris 2.7, ... (1001) Index: Changed: ConnectionCasheTimeout Into: ConnectionCacheTimeout