Programming Internet Email by David Wood Here are the changes made in the 3/00 reprint: {47} Code in middle of page: "plus paces" now reads "plus spaces" "values of 0-31..." now reads "values of 1-31" (49) Paragraph 4 has been 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. (49) Rule 4 now makes reference to Rule #2 instead of Rule #1. {50} Removed the "=" from the code list. {51} In the 2nd chunk of code, the lines now wrap as follows: "And it should be the law: If you use = the word 'paradigm' without knowing what the dictionary says it means,= you go to jail. No exceptions. =3D=3D> David Jones" (52) First sentence on the page now reads: "An equals sign that is neither followed by two hexadecimal characters nor at the end of a line"... Added the following to the end of the 1st "base64" paragraph: "Base64 encoding is described in RFC 2045." {53} base64 encoding table: Changed the number to the left of the letter 'm' to read '38' (79) Second paragraph from the bottom: The last two sentences have been changed to read: "It uses the application/x-pkcs7-signature protocol for digital signatures and either the SHA.1 or MD5 cryptographic algorithms for message integrity checks. The micalg parameter is therefore set to either 'sha1' or 'md5'." (123) Inserted this sentence at the end of 2nd paragraph: "In this case, the MTA determined my user name via identd, the IDENT daemon. A discussion of identd is best left to its own documentation." {125} Code block in middle, Line 4: Server: 050.... now reads: Server: 250.... (136) Changed the last 3 sentences of paragraph 2 to read: "A server typically responds by spawning a new thread or a copy of itself (a fork) to handle each new connection. These threads or copies are either destroyed or returned to a pool when a session completes. In this way, a server can handle many requests from a single application." (137-138) Figures 10-1 and 10-2, "POP tp TCP Port 110" now reads: "POP to TCP Port 110" {142} In the last sample on the page: {143} Code in middle: First line now reads: Client: APOP mmouse c4c9334bac560ecc979e58001b3e22fb {146} RETR example: Client: RETR now reads: Client: RETR 2 {150} Figure 10-3: Changed the result of the STAT from "+OK 1 320" to "+OK 1 340". (153) Changed the last 3 sentences of paragraph 2 to read: "The server responds by either spawning a thread or forking a copy of itself to handle the new request. The session handler sends a banner greeting to the client and awaits further commands from the client. Each IMAP command is discussed in detail in this chapter." {168} EXPUNGE example Line 3 now reads: S: * 10 EXPUNGE {173} The example for UID FETCH: Line 2 did read: Server: * 1 FETCH (FLAGS (\Answered \Seen)) now reads: Server: * 1 FETCH (FLAGS (\Answered \Seen) UID 90) {176} Figure 11-2: Right side, near bottom; line did read: * 3 FETCH (BODY[TEXT] {60} now reads: * 3 FETCH (BODY[TEXT] {62} {191} 2nd line from bottom: did read: ...NOT EQUAL "Email"... now reads: ...NOT EQUAL "Contact.Email"... {198} ACAP Sessions" second sentence. "A client initiates an IMAP session..." now reads: "A client initiates an ACAP session..." {201} 1st line of code: did read: gzip -d [modulename].tar.gz tar xvf [modulename].tar now reads: gzip -d [modulename].tar.gz; tar xvf [modulename].tar {201} 3rd line of code: did read: perl Makefile.PL make make test make install now reads: perl Makefile.PL ; make ; make test ; make install {277} Line 10 from bottom: did read: if ($attachment_list) >0){ now reads: if (($attachment_list) >0){ {281} Line 9 from bottom: did read: $encode_table[(((vec($decoded_attachment... now reads: $encode_table[((vec($decoded_attachment... (removed one "(") (298) First paragraph, 3rd sentence "The getpts line in..." now reads: "The getopts line in..." {298} 3rd line from bottom: did read: Synopsis: $0 [-u] [-l ] [-f now reads: Synopsis: $0 [-u] [-a] [-d] [-l ] [-f ]" {306} Middle of page: Line did read: print NEWBOX $pline, "\n";; now reads: print NEWBOX $pline, "\n"; {330} 4th paragraph, 4th sentence now reads: 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 was deleted. (348) 8th entry in list: Added line breaks between the 10 MIME types listed. (352) Added the following entry to the table: Site URL Description ----------------------------------------------------------- ACAP Home Page http://asg.web.cmu.edu/acap/ Information on and Implementations of the ACAP protocol.