Programming Internet Email by David Wood This errata page lists errors outstanding in the most recent printing. If you have any error reports or technical questions, you can send them to booktech@oreilly.com. (Please specify the printing date of your copy.) This page was last updated on January 3, 2007. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification CONFIRMED errors: (13) In the first paragraph, second line, the wrong word is used. It now reads: "...connected but always..." Should read: "...connected and always..." (21) There is a spelling error in the 5th point from bottom. It now reads: "...formatted interace with..." Should read: "...formatted interface with..." {26} In paragraph 6, line 5, the wrong word is used. It now reads: "72 lines..." Should read: "72 characters..." (27) In paragraph 2, there is a confusing point in the discussion for splitting lines: The first occurrance of the string is "naturally" wrapped at the same point that the second one is manually split. The following footnote should be added to this line: "Note that this line is wrapped by the page layout, but that the reader should consider it to be unbroken when reading the example." (28) The last sentence of paragraph 6 now reads: "If it is present, it should reflect the actual author of the message." It should read: "If it is present, it should reflect the person (or program) who actually sent the message on behalf of the author." (30) The last sentence of paragraph 4 now reads: "The real author is represented in the Sender header and the person or program that actually sent the message is represented in the From header." It should read: "The real author is represented in the From header and the person or program that actually sent the message is represented in the Sender header." {31} In the sample conversation, there is a line missing. The SMTP DATA portion must be ended with a period (.) by itself on a line (followed by CRLF as line delimiter, of course), in the first column of the line. This line is not printed in the sample conversation. The correct way would be: the message. . << This '.' is currently missing. 250 (etc) (31) The message at the bottom of the page is missing the 'To' header field. CORRECTION: Change the last sentence of paragraph 3 from: "Similarly, the To header gets written..." to: "The MTA knows the message recipient from the RCPT TO: line. This means that the message recipient is in the envelope, but there is no matching To: header in the message." {33} The example telnet session is missing linebreaks. Two linebreaks should be inserted in the line beginning with 'Date:' after "+0400" and another linebreak after "action.", so that it looks like this: Date: Fri, 32 Feb 1492 09:53:43 +0400 Testing of the Date header from a user action. . (49) Paragraph 4 Paragraph 4 reads: "An octet is subtly different from a byte. An octet is 8 bits, where the earlier bits in the stream represent the most significance. This is called 'big-endian' and is the Internet standard order, called the 'network standard byte order'. A byte (8 bits), on the other hand, may be interpreted in one of two ways, big-endian or little-endian, and the manner of local interpretation is system dependent. Some computer systems use little-endian, where the earlier bits are interpreted as being the lower-order bits. Obviously, if you are on a little-endian system, encode a bit stream directly and send it to a big-endian system, the byte stream will not be correctly interpreted. Therefore, all bit streams must be converted to the network standard big-endian order (which yields an octet stream), prior to applying any type of MIME encoding." and should be changed to read: "An octet stream is subtly different from a bit stream. An octet is 8 bits, like an 8-bit byte. The earlier octets in the stream represent the most significance. This is called 'big-endian' and is the Internet standard order, called the 'network standard byte order'. An 8-bit byte stream, on the other hand, may be interpreted in one of two ways, big-endian or little-endian, and the manner of local interpretation is system dependent. Some computer systems use little-endian, where the earlier bytes are interpreted as being of lower-order. Obviously, if you are on a little- endian system, encode a bit stream directly and send it to a big-endian system, the stream will not be correctly interpreted. Therefore, all bit streams must be converted to the network standard big-endian order (which yields an octet stream), prior to applying any type of MIME encoding." (56,57) The bottom of page 56, top of page 57. The sample strings of characters should be in constant-width font. (74) The last sentence of the second paragraph from the bottom of the page should read: "S/MIME uses algorithms which are restricted to weak (40-bit) cryptography outside of the United States for the time being. This is due to export restrictions imposed by the United States government." A new paragraph should be added immediately after the above, which should read: "Both OpenPGP and S/MIME are affected by export restrictions on cryptographic products and algorithms. PGP's international version (by some, though not all, accounts started by an improper export) gives OpenPGP a head start on developing a system of more than 40-bit encryption across international borders." (155) In the first line, "The Log out State" should be changed to "The Logout State." (163) Some explanation of the "~" in the SUBSCRIBE example (7th line from bottom of page) should be given, at least for the Win32 users. For example, you could insert a paragraph immediately following the SUBSCRIBE example which reads: "Note that the '~' character used in the mailbox name is used under Unix and Unix-like operating systems to refer to a user's home directory." (164) In the 2nd to last paragraph, change "A SUBSCRIBE command is then use to mark" to "... is then used to mark..." (169) In Table 11-8, the DELETED key has a surplus character: "DELETED>" should be "DELETED". (172) In the IMAP FETCH example, the server tag returned should read "DF56", not "a127". (172) In the paragraph under the IMAP FETCH example, the phrase "It returned the date" should read "It returned the data". (202) In the second line under the heading "Reading an Entry," change "fllow" to "follow." (280) In the code, the comment "# Create the encoded content string, starting with the # newly-created MIME header" should either be in two lines (the second line starting "# newly-created..." or one line without the second '#'. (287) In the code, "#fflush socket..." should read "# flush socket...". (289) In the third line under "Sending MIMEi Email via Java," change "shorted" to "shorter." (325) In the first line of the 2nd full paragraph, change "it is makes" to "makes." (325) In the 4th line of the 5th full paragraph, change "did notlist" to "did not list." (330) Paragraph 4 Paragraph 4, sentance 4 should read, "This approach seemed to have promise, but has not worked out as well as some have hoped. This is due primarily to the fact that the RBL is based upon IP addresses, blocking the orginating mail server (often an Internet Service Provider). According to the RBL rules for inclusion, only those ISPs who operate an open mail relay will be blacklisted. Unfortunately, this includes both those supporting spam and those who are incapable or unwilling to restrict mail relaying via their servers. The RBL thus both reduces spam and generates much abuse from many of those banned. The remainder of the orginal paragraph should be deleted. (341) RFCs 2425/2426 are listed in reverse order. (348) Second column, eighth entry should be changed to include line breaks between the ten MIME types listed there. (354) In the entry for MTA, change "deliverying" to "delivering."