70 Mail I had fun with my own mailer-error-of-the-day recently. Seems I got mail from someone in the “.at” domain. So what did the Unix mailer do with this address when I tried to reply? Why it turned “at” into “@” and then complained about no such host! Or was it invalid address format? I forget, there are so many different ways to lose. …Or perhaps sendmail just thinks that Judy shouldn’t be sending e-mail to Austria. STEP 3: Figure out where it goes. Just as the U.S. Postal Service is willing to deliver John Doe’s mail whether it’s addressed to “John Doe,” “John Q. Doe,” or “J. Doe,” elec- tronic mail systems handle multiple aliases for the same person. Advanced electronic mail systems, such as Carnegie Mellon University’s Andrew System, do this automatically. But sendmail isn’t that smart: it needs to be specifically told that John Doe, John Q. Doe, and J. Doe are actually all the same person. This is done with an alias file, which specifies the mapping from the name in the address to the computer user. Alias files are rather powerful: they can specify that mail sent to a single address be delivered to many different users. Mailing lists are created this way. For example, the name “QUICHE-EATERS” might be mapped to “Anton, Kim, and Bruce.” Sending mail to QUICHE-EATERS then results in mail being dropped into three mailboxes. Aliases files are a natural idea and have been around since the first electronic message was sent. Unfortunately, sendmail is a little unclear on the concept, and its alias file format is a study in misdesign. We’d like to say something insulting, like “it’s from the dark ages of computing,” but we can’t: alias files worked in the dark ages of computing. It is sendmail’s modern, up-to-date alias files that are riddled with problems. Figure 1 shows an excerpt from the send- mail aliases file of someone who maintained systems then and is forced to use sendmail now. Sendmail not only has a hopeless file format for its alias database: many versions commonly in use refuse to deliver mail or perform name resolu- tion, while it is in the processing of compiling its alias file into binary for- mat.
Subject: Returned Mail: User Unknown 71 Date: Thu, 11 Apr 91 13:00:22 EDT From: Steve Strassmann straz@media-lab.mit.edu To: UNIX-HATERS Subject: pain, death, and disfigurement ############################################################### # # READ THESE NOTES BEFORE MAKING CHANGES TO THIS FILE: thanks! # # Since aliases are run over the yellow pages, you must issue the # following command after modifying the file: # # /usr/local/newaliases # (Alternately, type m-x compile in Emacs after editing this file.) # # [Note this command won't -necessarily- tell one whether the # mailinglists file is syntactically legal -- it might just silently # trash the mail system on all of the suns. # WELCOME TO THE WORLD OF THE FUTURE.] # # Special note: Make sure all final mailing addresses have a host # name appended to them. If they don't, sendmail will attach the # Yellow Pages domain name on as the implied host name, which is # incorrect. Thus, if you receive your mail on wheaties, and your # username is johnq, use "johnq@wh" as your address. It # will cause major lossage to just use "johnq". One other point to # keep in mind is that any hosts outside of the "ai.mit.edu" # domain must have fully qualified host names. Thus, "xx" is not a # legal host name. Instead, you must use "xx.lcs.mit.edu". # WELCOME TO THE WORLD OF THE FUTURE # # # Special note about large lists: # It seems from empirical observation that any list defined IN THIS # FILE with more than fifty (50) recipients will cause newaliases to # say "entry too large" when it's run. It doesn't tell you -which- # list is too big, unfortunately, but if you've only been editing # one, you have some clue. Adding the fifty-first recipient to the # list will cause this error. The workaround is to use:include # files as described elsewhere, which seem to have much larger or # infinite numbers of recipients allowed. [The actual problem is # that this file is stored in dbm(3) format for use by sendmail. # This format limits the length of each alias to the internal block # size (1K).] # WELCOME TO THE WORLD OF THE FUTURE # # Special note about comments: # Unlike OZ's MMAILR, you -CANNOT- stick a comment at the end of a # line by simply prefacing it with a "#". The mailer (or newaliases) # will think that you mean an address which just so happens to have # a "#" in it, rather than interpreting it as a comment. This means, # essentially, that you cannot stick comments on the same line as # any code. This also probably means that you cannot stick a comment # in the middle of a list definition (even on a line by itself) and # expect the rest of the list to be properly processed. # WELCOME TO THE WORLD OF THE FUTURE # ################################################################### FIGURE 1. Excerpts From A sendmail alias file