Summary: Errors listed in EVM for sendmail

From: Brewer, Edward (BREWERE@OD.NIH.GOV)
Date: Thu Jul 18 2002 - 08:53:16 EDT


Admins,

        Well I think the answer is in....

from: David Ross

  On my desk, I have a copy of the "Bat Book" (The O'Reilly "Sendmail"
book, by Bryan Costales with Eric Allman -- An invaluable reference for a
devoted sendmail admin, and a surefire cure for insomnia for everybody
else), which is over a thousand pages thick. A large portion of this
volume is devoted entirely to explaining what the "line noise" in the
sendmail.cf file means. People have gone completely mad from trying to
deciper it. H P Lovecraft used to be a happy, well adjusted boy before he
found an early release of sendmail and went completely mad from trying to
the configuration file (which he refers to as "The Necronomicon" in his
diary) by hand. He then went on to found HP, and we all know where that
led.

  Okay, I'm exaggurating a bit, but sendmail rulesets are really no picnic.
In general, you do _not_ want to mess with them. Here's a quick rundown on
what all those operators mean, but it's pretty dull. Don't say I didn't
warn you.

   --- BORING PART BEGINS ---

"R" at the beginning of a line defines a rule. Rules are obeyed one at a
time, starting from a ruleset declaration (something like S0 or S10) which
is defined in the declaration of the mailer being used. Look up a bit in
the file and you'll see a line which starts with S, that's where everything
begins.

"$-" is a wildcard operator, which means that this rule will only match a
single token. The left hand side must match the address passed to it, so
this rule will be invoked for "you" or "user" but not "user @ host" because
that would be more than one token.

If the left hand side ("$-") matches the address, then the right hand side
("$:$1??$(@ $1 $: $)") is evaluated. The "Look up aliases" part is a
comment, and is ignored. If you look very closely, you'll see that the
LHS, RHS and the comment are seperated by tabs rather than spaces.

"$:" is a token which refers to the user. It tells sendmail that
everything from the "$:" up to the next operator is the user we want to
send mail to.

"$1" is the username, whatever comes before the "@" sign. Since we only
run this rule if there is one token, and "@" counts as a token, this is the
entire address which we are trying to delver to ("you" or "user").

The "$(@ $1 $: $)" part is a map lookup operator. It starts with "$(" and
ends with "$)". As a whole, it means to look in the map named "@" for the
key "$1", the username we are trying to deliver to If we find it, then
set $: (the final username, which is different from $1) to the result.

I believe that the "??" operator a logical or, which will return either "
$(@ $1 $: $)" (the match for $1 in map @) or "$1" if that is nothing. I'm
a bit fuzzy on that one though.

  --- BORING PART ENDS ---

So, that rule will look for a destination address which is a single,
unqualified name, look it up in the aliases map named "@" and if it
matches, replace it with its alias. In short, it is trying to "Look up
aliases", which is just what the comment said.

Getting back to your original error:

 sendmail[1427843]: IAA1427875: SYSERR(oracle): rewrite: map @ not found

It looks like it is complaing about the "@" map, which that rule expects to
contain alias information, not being defined at all. I seem to recall that
the name "@" was used in older versions of sendmail, but replaced with
something more obvious ("aliases") in recent versions.

Is it possible that you're trying to use an old sendmail configuration on a
new version of sendmail? That doesn't always work, since the rules can
change depending on the server.

Try running this command to check:

      # telnet localhost 25

You should see a response something like this (only with different names
and numbers):

      Connected to localhost.
      Escape character is '^]'.
      220 pandora.dccs.ctc ESMTP Sendmail 8.11.6/8.11.5; Tue, 16 Jul 2002
15:21:22 -0400 (EDT)

On my server, the server software is version 8.11.6 while the configuration
file version is 8.11.5. Idealy these two should match exactly. If they
don't, bad things like this can happen.

What I would suggest doing is either:

 a) Edit sendmail.cf and replace the "@" with the name "aliases". This may
fix the one error message that you're seeing, but may leave all sorts of
other problems that just haven't come up yet.

 b) Rebuild the config file from the beginning using either the
"mailconfig" program (if you're using the "stock" Tru64 install of
sendmail) or by reading the file cf/README in the sendmail source if you
have installed a more recent version.

  (Back up your current sendmail.cf file first. You may need it again
later.)

  Editing the sendmail.cf file by hand is usually a Bad Thing, so I would
strongly advise using mailconfig or m4, which is the reccomended way of
creating sendmail.cf.

Thanks to David, Here is my summary

   I was not finding the same things listed in my O'Reily Sendmail book and
my configuration file. I wasn't here when the system was implemented late
last year. I think that the old configuration file was just put in place
(from a old tru64 4.0f system) to our new 5.1 Wildfire. So I couldn't make
head or tails as to why there were syntaxical differnces....so i took the
above advice; I saved the old sendmail configutaion file and ran mailconfig
(we are using the sendmail that came with the OS)....so as of now all is
well....Thanks again!

Lee Brewer



This archive was generated by hypermail 2.1.7 : Sat Apr 12 2008 - 10:48:46 EDT