68 Mail 4. Otherwise, use the name to figure out which user or users the message is meant for, and put the message into the appropriate mailboxes or files. Sendmail manages to blow every step of the process. STEP 1: Figure out what is address and what is body. This is easy for humans. For example, take the following message: Date: Wed, 16 Oct 91 17:33:07 -0400 From: Thomas Lawrence thomasl@media-lab.media.mit.edu To: msgs@media.mit.edu Subject: Sidewalk obstruction The logs obstructing the sidewalk in front of the building will be used in the replacement of a collapsing manhole. They will be there for the next two to three weeks. We have no trouble figuring out that this message was sent from “Thomas Lawrence,” is meant for the “msgs” mailing list which is based at the MIT Media Lab, and that the body of the message is about some logs on the sidewalk outside the building. It’s not so easy for Unix, which manages to produce: Date: Wed, 16 Oct 91 17:29:01 -0400 From: Thomas Lawrence thomasl@media-lab.media.mit.edu Subject: Sidewalk obstruction To: msgs@media.mit.edu Cc: The@media-lab.media.mit.edu, logs.obstructing.the.sidewalk.in.front.of.the.building. will.be.used.in.the@media-lab.media.mit.edu On occasion, sendmail has been known to parse the entire body of a mes- sage (sometimes backwards!) as a list of addresses:
Subject: Returned Mail: User Unknown 69 Date: Thu, 13 Sep 90 08:48:06 -0700 From: MAILER-DAEMON@Neon.Stanford.EDU Comment: Redistributed from CS.Stanford.EDU Apparently-To: Juan ECHAGUE e-mail:jve@lifia.imag.fr tel:76 57 46 68 (33) Apparently-To: PS:I’ll summarize if interest,etc.@Neon.Stan- ford.EDU Apparently-To: Juan@Neon.Stanford.EDU Apparently-To: Thanks in advance@Neon.Stanford.EDU Apparently-To: for temporal logics.Comments and references are wel- comed.@Neon.Stanford.EDU Apparently-To: I’m interested in gentzen and natural deduction style axiomatizations@Neon.Stanford.EDU STEP 2: Parse the address. Parsing an electronic mail address is a simple matter of finding the “stan- dard” character that separates the name from the host. Unfortunately, since Unix believes so strongly in standards, it has (at least) three separation characters: “!”, “@”, and “%”. The at-sign (@) is for routing on the Inter- net, the exclamation point (!) (which for some reason Unix weenies insist on calling “bang”) is for routing on UUCP, and percent (%) is just for good measure (for compatibility with early ARPANET mailers). When Joe Smith on machine A wants to send a message to Sue Whitemore on machine B, he might generate a header such as Sue@bar!B%baz!foo.uucp. It’s up to sendmail to parse this nonsense and try to send the message somewhere logical. At times, it’s hard not to have pity on sendmail, since sendmail itself is the victim of multiple Unix “standards.” Of course, sendmail is partially responsible for promulgating the lossage. If sendmail weren’t so willing to turn tricks on the sender’s behalf, maybe users wouldn’t have been so fla- grant in the addresses they compose. Maybe they would demand that their system administrators configure their mailers properly. Maybe netmail would work reliably once again, no matter where you were sending the mail to or receiving it from. Just the same, sometimes sendmail goes too far: Date: Wed, 8 Jul 1992 11:01-0400 From: Judy Anderson yduJ@stony-brook.scrc.symbolics.com To: UNIX-HATERS Subject: Mailer error of the day.