Make sure that the file is there. When I upgraded to the new sendmail, it did not create two files, I can't remember exactly what they were. I've included the one off my machine, although depending on what version he is running, I don't know if it will work or not. I am running 8.11 . Good luck. On Fri, 4 Aug 2000, Nitebirdz wrote: -- --Need some help over here. A Red Hat user from Bolivia recently sent a --message to the list in Spanish because perhaps he didn't feel confident --enough to type the message in English. I tried helping him in Spanish, --but my suggestions did not seem to help. I'll try to explain his problem --here and somehow translate back and forth if necessary. -- --Basically, Nelson is running Red Hat 4.1, and in the last few days has --been unable to make his sendmail work. Whenever he starts the daemon he --gets the following error message: -- --Starting sendmail: sendmail 451 /etc/sendmail.cf: line --41: fileclass: cannot open /etc/sendmail.cw: Permission denied -- --When I asked him to paste some information from his /var/log/messages, --this is what he got: -- --Aug 4 13:34:04 urano inetd[5603]: execv /usr/bin/smtpd: No such file or --directory -- --Finally, I should also clarify that it doesn't appear to be a permissions --issue. Any ideas? He needs help as soon as possible. Again, I will --translate into Spanish if necessary... Any help will be appreciated. --Thanks in advance. -- -- -------------------------------- --Nitebirdz --http://www.linuxnovice.org --Tips, articles, news, links... -- -- -- -- --_______________________________________________ --Redhat-list mailing list [EMAIL PROTECTED] --https://listman.redhat.com/mailman/listinfo/redhat-list -- Jake McHenry [EMAIL PROTECTED]
# @(#)24 1.63 src/bos/usr/lib/sendmail/sendmail.cf, cmdsend, bos42G, g9702B 1/12/97 17:36:03 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # bos42G src/bos/usr/lib/sendmail/sendmail.cf 1.63 # # Licensed Materials - Property of IBM # # (C) COPYRIGHT International Business Machines Corp. 1985,1997 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # # COMPONENT_NAME: CMDSEND sendmail.cf # # FUNCTIONS: # # ORIGINS: 10 26 27 # # (C) COPYRIGHT International Business Machines Corp. 1985, 1996 # All Rights Reserved # Licensed Materials - Property of IBM # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # ############################################################ # Copyright (c) 1983, 1995 Eric P. Allman # Copyright (c) 1988, 1993 # The Regents of the University of California. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: # This product includes software developed by the University of # California, Berkeley and its contributors. # 4. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ###################################################################### ###################################################################### ##### ##### SENDMAIL CONFIGURATION FILE ##### ###################################################################### ###################################################################### # level 6 config file format V6/Berkeley ################## # local info # ################## # Hostname Definition # # By default, sendmail uses the value returned from a hostname lookup of # the result of the "hostname" command to define the w, d and D macros # and classes. In addition, it also adds to the w class any aliases # defined for the local hostname. Therefore it is unnecessary to define # these values here unless you wish to supplement the default values. # #DwYourHostName #DmYourDomainName #Cw localhost $w $?m$w.$m$. YourHostAliases #Cm $m YourOtherDomainNames # Cwlocalhost -- original line before adding virtual domain 021898-kek Cwlocalhost # next line - before moving to sendmail.cw file # Cw localhost $w $?m$w.$m$. bigspring.belle.k12.pa.us eagle.beasd.k12.pa.us wrench.ccts.org viking.bvsd.k12.pa.us bvsd.k12.pa.us l2l.kcnc.net kcnc.net bigspring.blfsd.org blfsd.org # file containing names of hosts for which we receive email #Fw-o /etc/sendmail.cw Fw-o /etc/sendmail.cw # my official domain name # Use this only if you wish to override the default. #Dj$w.$m # top level psuedo domains CP. # Each locally connected uucp host must be defined in one # of the following classes. This tells sendmail which host # resolves to which uucp-mailer. There are no defaults. # If a locally connected uucp host is not specified in a class, # he will not be able to resolve to a uucp mailer. # # Define the 'U' class for host(s) that require the uucp-old mailer # Define the 'Y' class for host(s) that require the uucp-new mailer # Define the 'Z' class for host(s) that require the uucp-uudom mailer # #CU #CY #CZ # The UUCP relay host # Specify which uucp-mailer to use when defining the relay host # #DYuucp-mailer:relayhostname #CPUUCP # Relay host that handles all RSCS-routed mail. # CV defines all the pseudo-domains that are used to indicate to # sendmail that the recipient is reached via the RSCS relay host # (e.g., a message addressed to "[EMAIL PROTECTED]" will be sent via # the RSCS relay host). # #DVmailer:relayhostname #CVRSCS BITNET NETNORTH EARN EARNET VNET # DECnet relay host #DCmailer:relayhostname #CPDECNET # The relay host that handles all X400 mail. #DXmailer:relayhostname # "Smart" relay host (may be null) # Relay host to forward outgoing mail not in the local domain to. # To forward ALL mail to this relay host, uncomment the appropriate # rule in ruleset 0, as indicated by the ruleset's comments. #DSmailer:relayhostname DS # who I send unqualified names (that is, names without @host) to # (null means deliver locally) # Use this relay to send all local mail to a central server #DRmailer:relayhostname DR # class L: names that should be delivered locally, even if we have a relay # class E: names that should be exposed as from this host, even if we masquerade # class M: domains that should be masqueraded (also everything in $=w) #CL root CE root # place to which unknown users should be forwarded #Kuser user -m -a<> #DLname_of_luser_relay # operators that cannot be in local usernames (i.e., network indicators) CO @ % ! # a class with just dot (for identifying canonical names) C.. # Mailer table (overriding domains) #Kmailertable dbm /etc/mailertable # Domain table (adding domains) #Kdomaintable dbm /etc/domaintable # Virtual User table (support virtual domains) Kvirtusertable dbm -o /etc/virtusertable # dequoting map Kdequote dequote # who I masquerade as (null for no masquerading) DM # my name for error messages DnMAILER-DAEMON CPREDIRECT # Configuration version number DZ8.7 ############### # Options # ############### # strip message body to 7 bits on input? O SevenBitInput=False # 8-bit data handling O EightBitMode=pass8 # wait for alias file rebuild (default units: minutes) O AliasWait=10 # location of alias file O AliasFile=/etc/aliases # minimum number of free blocks on filesystem O MinFreeBlocks=100 # maximum message size #O MaxMessageSize=1000000 # substitution for space (blank) characters O BlankSub=. # avoid connecting to "expensive" mailers on initial submission? O HoldExpensive=False # checkpoint queue runs after every N successful deliveries #O CheckpointInterval=10 # default delivery mode O DeliveryMode=background # automatically rebuild the alias database? #O AutoRebuildAliases # error message header/file #O ErrorHeader=/etc/sendmail.oE # error mode #O ErrorMode=print # save Unix-style "From_" lines at top of header? #O SaveFromLine # temporary file mode O TempFileMode=0600 # match recipients against GECOS field? #O MatchGECOS # maximum hop count #O MaxHopCount=17 # location of help file # (not supported in AIX, help commands are coded into sendmail program) #O HelpFile=/usr/lib/sendmail.hf # ignore dots as terminators in incoming messages? #O IgnoreDots # name resolver options #O ResolverOptions=+AAONLY # deliver MIME-encapsulated error messages? O SendMimeErrors=True # Forward file search path O ForwardPath=$z/.forward.$w:$z/.forward # open connection cache size O ConnectionCacheSize=2 # open connection cache timeout O ConnectionCacheTimeout=5m # use Errors-To: header? O UseErrorsTo=False # log level O LogLevel=9 # send to me too, even in an alias expansion? #O MeToo # verify RHS in newaliases? O CheckAliases=False # use MB, MG, and MR resource records? (AIX) #O NameServOpt=False # default messages to old style headers if no special punctuation? O OldStyleHeaders=True # SMTP daemon options #O DaemonPortOptions=Port=esmtp # privacy flags O PrivacyOptions=authwarnings # who (if anyone) should get extra copies of error messages #O PostMasterCopy=Postmaster # slope of queue-only function #O QueueFactor=600000 # queue directory O QueueDirectory=/var/spool/mqueue # timeouts (many of these) #O Timeout.initial=5m #O Timeout.helo=5m #O Timeout.mail=10m #O Timeout.rcpt=1h #O Timeout.datainit=5m #O Timeout.datablock=1h #O Timeout.datafinal=1h #O Timeout.rset=5m #O Timeout.quit=2m #O Timeout.misc=2m #O Timeout.command=1h #O Timeout.ident=30s #changed timeout.ident for better services through pixfirewall O Timeout.ident=0s #O Timeout.fileopen=60s O Timeout.queuereturn=5d #O Timeout.queuereturn.normal=5d #O Timeout.queuereturn.urgent=2d #O Timeout.queuereturn.non-urgent=7d O Timeout.queuewarn=4h #O Timeout.queuewarn.normal=4h #O Timeout.queuewarn.urgent=1h #O Timeout.queuewarn.non-urgent=12h # should we not prune routes in route-addr syntax addresses? #O DontPruneRoutes # queue up everything before forking? O SuperSafe=True # status file O StatusFile=/etc/sendmail.st # time zone handling: # if undefined, use system default # if defined but null, use TZ envariable passed in # if defined and non-null, use that info O TimeZoneSpec= # default UID (can be username or userid:groupid) O DefaultUser=1:1 # list of locations of user database file (null means no lookup) # (this option is not supported on AIX) #O UserDatabaseSpec=/etc/userdb # fallback MX host #O FallbackMXhost=fall.back.host.net # if we are the best MX host for a site, try it directly instead of config err #O TryNullMXList # load average at which we just queue messages #O QueueLA=8 # load average at which we refuse connections #O RefuseLA=12 # work recipient factor #O RecipientFactor=30000 # deliver each queued job in a separate process? #O ForkEachJob # work class factor #O ClassFactor=1800 # work time factor #O RetryFactor=90000 # shall we sort the queue by hostname first? #O QueueSortOrder=priority # minimum time in queue before retry #O MinQueueAge=30m # default character set #O DefaultCharSet=iso-8859-1 # service switch file (ignored on Solaris, Ultrix, OSF/1, others) # (ignored on AIX) # (the /etc/netsvc.conf file is used for service ordering on AIX) #O ServiceSwitchFile=/etc/service.switch # dialup line delay on connection failure #O DialDelay=10s # action to take if there are no recipients in the message #O NoRecipientAction=add-to-undisclosed # chrooted environment for writing to files #O SafeFileEnvironment=/arch # are colons OK in addresses? #O ColonOkInAddr # how many jobs can you process in the queue? #O MaxQueueRunSize=10000 # shall I avoid expanding CNAMEs (violates protocols)? #O DontExpandCnames # SMTP initial login message (old $e macro) O SmtpGreetingMessage=$j Sendmail $v; $b # UNIX initial From header format (old $l macro) O UnixFromLine=From $g $d # delimiter (operator) characters (old $o macro) O OperatorChars=.:%@!^/[]+= # shall I avoid calling initgroups(3) because of high NIS costs? #O DontInitGroups ########################### # Message precedences # ########################### Pfirst-class=0 Pspecial-delivery=100 Plist=-30 Pbulk=-60 Pjunk=-100 ##################### # Trusted users # ##################### # this is equivalent to setting class "t" #Ft/etc/sendmail.ct Troot Tdaemon Tuucp ######################### # Format of headers # ######################### H?P?Return-Path: $g HReceived: $?sfrom $s $.$?_($?s$|from $.$_) $.by $j ($v/$Z)$?r with $r$. id $i$?u for $u$.; $b H?D?Resent-Date: $a H?D?Date: $a H?F?Resent-From: $?x$x <$g>$|$g$. H?F?From: $?x$x <$g>$|$g$. H?x?Full-Name: $x HSubject: # HPosted-Date: $a # H?l?Received-Date: $b H?M?Resent-Message-Id: <$t.$i@$j> H?M?Message-Id: <$t.$i@$j> # ###################################################################### ###################################################################### ##### ##### REWRITING RULES ##### ###################################################################### ###################################################################### ########################################### ### Rulset 3 -- Name Canonicalization ### ########################################### S3 # handle null input (translate to <@> special case) R$@ $@ <@> # strip group: syntax (not inside angle brackets!) and trailing semicolon R$* $: $1 <@> mark addresses R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr> R$* :: $* <@> $: $1 :: $2 unmark node::addr R:include: $* <@> $: :include: $1 unmark :include:... #R$* : $* <@> $: $2 strip colon if marked R$* <@> $: $1 unmark R$* ; $: $1 strip trailing semi # null input now results from list:; syntax R$@ $@ :; <@> # strip angle brackets -- note RFC733 heuristic to get innermost item R$* $: < $1 > housekeeping <> R$+ < $* > < $2 > strip excess on left R< $* > $+ < $1 > strip excess on right R<> $@ < @ > MAIL FROM:<> case R< $+ > $: $1 remove housekeeping <> # make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later R@ $+ , $+ @ $1 : $2 change all "," to ":" # localize and dispose of route-based addresses R/C=$* $?X$:@$[$X$]:/C=$1$|$:/C=$1 R@ $+ : $+ $@ $>96 < @$1 > : $2 handle <route-addr> # find focus for list syntax R $+ : $* ; @ $+ $@ $>96 $1 : $2 ; < @ $3 > list syntax R $+ : $* ; $@ $1 : $2; list syntax # detect x400. focus and localize. R/C=$+@$=w $@/C=$1<@$2.> R/C=$+ $@</C=$1> x400 route addr # find focus for @ syntax addresses R$+ @ $+ $: $1 < @ $2 > focus on domain R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right R$+ < @ $+ > $@ $>96 $1 < @ $2 > already canonical # do some sanity checking R$* < @ $* : $* > $* $1 < @ $2 $3 > $4 nix colons in addrs # convert old-style addresses to a domain-based address R$- ! $+ $@ $>96 $2 < @ $1 .UUCP > resolve uucp names R$+ . $- ! $+ $@ $>96 $3 < @ $1 . $2 > domain uucps R$+ ! $+ $@ $>96 $2 < @ $1 .UUCP > uucp subdomains # convert node::user addresses into a domain-based address R$- :: $+ $@ $>96 $2 < @ $1 .DECNET > resolve DECnet names R$- . $- :: $+ $@ $>96 $3 < @ $1.$2 .DECNET > numeric DECnet addr # if we have % signs, take the rightmost one R$* % $* $1 @ $2 First make them all @s. R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last. R$* @ $* $@ $>96 $1 < @ $2 > Insert < > and finish # else we must be a local name R$* $@ $>96 $1 ################################################ ### Ruleset 96 -- bottom half of ruleset 3 ### ################################################ S96 # handle special cases for local names R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [a.b.c.d] R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr # look up domains in the domain table #R$* < @ $+ > $* $: $1 < @ $(domaintable $2 $) > $3 # if really UUCP, handle it immediately # try UUCP traffic as a local address #R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3 #R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3 # pass UUCP addresses straight through R$* < @ $+ . UUCP > $* $@ $1 < @ $2 . UUCP . > $3 # pass to name server to make hostname canonical R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4 # local host aliases and pseudo-domains are always canonical R$* < @ $=w > $* $: $1 < @ $2 . > $3 R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4 R$* < @ $* . . > $* $1 < @ $2 . > $3 # if this is the local hostname, make sure we treat is as canonical R$* < @ $j > $* $: $1 < @ $j . > $2 ################################################## ### Ruleset 4 -- Final Output Post-rewriting ### ################################################## S4 R$* <@> $@ handle <> and list:; # strip trailing dot off possibly canonical name R$* < @ $+ . > $* $1 < @ $2 > $3 # externalize local domain info R/C=$*<@$=w> $:/C=$1 R$* < $+ > $* $1 $2 $3 defocus R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical R@ $* $@ @ $1 ... and exit # UUCP must always be presented in old form R$+ @ $- . UUCP $2!$1 [EMAIL PROTECTED] => h!u # put x400 back R$+:/C=$+ $:/C=$2 R$+.UUCP/C=$+ $:/C=$2 # put DECnet back in :: form R$+ @ $+ . DECNET $2 :: $1 [EMAIL PROTECTED] => h::u # delete duplicate local names R$+ % $=w @ $=w $1 @ $j u%host@host => u@host ############################################################## ### Ruleset 97 -- recanonicalize and call ruleset zero ### ### (used for recursive calls) ### ############################################################## S97 R$* $: $>3 $1 R$* $@ $>0 $1 ################################################################################ # # # S6: Parsing addresses for nameserver queries # # # # This ruleset is applied to an address before querying the nameserver # # for any MB, MR, or MG records that match the address. It will only # # parse an address of the form "user@domain"; it returns the result in # # the form "user.domain", which is suitable for the nameserver query, # # and it prepends a "$#" token to indicate success. # # # ################################################################################ S6 # # Pass only addresses consisting of exactly one token, an '@', and one # or more tokens. # R$-@$+ $#$1.$2 ###################################### ### Ruleset 0 -- Parse Address ### ###################################### S0 R<@> $#local $: <@> special case error msgs R$* : $* ; <@> $#error $@ 5.1.3 $: "list:; syntax illegal for recipient addresses" R<@ $+> $#error $@ 5.1.1 $: "user address required" R$* <$* : $* > $* $#error $@ 5.1.1 $: "colon illegal in host name part" R$* < @ . > $* $#error $@ 5.1.2 $: "invalid host name" # handle numeric address spec R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec R$* < @ [ $+ ] > $* $#smtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send # now delete the local info -- note $=O to find characters that cause forwarding R$* < @ > $* $@ $>97 $1 user@ => user R< @ $=w . > : $* $@ $>97 $2 @here:... -> ... R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here R$* $=O $* < @ $=w . > $@ $>97 $1 $2 $3 ...@here -> ... # handle local hacks R$* $: $>98 $1 # short circuit local delivery so forwarded email works R$=L < @ $=w . > $#local $: @ $1 special local names R/C=$+/S=$-$*<@$=w.$*> $#local$:$2 x400 addressed local mail R$+ < @ $=w . > $#local $: $1 regular local name # not local -- try mailer table lookup #R$* <@ $+ > $* $: < $2 > $1 < @ $2 > $3 extract host name #R< $+ . > $* $: < $1 > $2 strip trailing dot #R< $+ > $* $: < $(mailertable $1 $) > $2 lookup #R< error : $- $+ > $* $#error $@ $1 $: $2 check -- error? #R< $- : $+ > $* $# $1 $@ $2 $: $3 check -- resolved? #R< $+ > $* $: $>90 <$1> $2 try domain # resolve x400 mail R</C=$*> $#987gateway$:/C=$1 # resolve locally connected UUCP links R$* < @ $=Z . UUCP. > $* $#uucp-uudom $@ $2 $: $1 < @ $2 .UUCP. > $3 R$* < @ $=Y . UUCP. > $* $#uucp-new $@ $2 $: $1 < @ $2 .UUCP. > $3 R$* < @ $=U . UUCP. > $* $#uucp-old $@ $2 $: $1 < @ $2 .UUCP. > $3 # resolve remotely connected UUCP links (if any) # resolve fake top level domains by forwarding to other hosts # resolve and RSCS relays. Note that relay is canonicalized. R$+ < @ $- .$=V > $: $>95 < $V > $1 < @ $2.$3 > R< @$+ .$=V > : $+ $: $>95 < $V > < @ $1.$2 > : $3 # forward non-local UUCP traffic to our UUCP relay R$*<@$*.UUCP.>$* $: $>95 < $Y > $1 <@$2.UUCP.> $3 uucp mail # figure out what should stay in our local mail system # Comment out this rule if you want all mail to go to the # Smart-Host relay defined by "DS" macro. R$* < @ $* .$=m. > $* $#smtp $@ $2.$3. $: $1 < @ $2.$3. > $4 # pass names that still have a host to a smarthost (if defined) R$* < @ $* > $* $: $>95 < $S > $1 < @ $2 > $3 glue on smarthost name # deal with other remote names R$* < @$* > $* $#smtp $@ $2 $: $1 < @ $2 > $3 [EMAIL PROTECTED] # if this is quoted, strip the quotes and try again R$+ $: $(dequote $1 $) strip quotes R$+ $=O $+ $@ $>97 $1 $2 $3 try again # handle locally delivered names R$=L $#local $: @ $1 special local names R$+ $#local $: $1 regular local names ########################################################################### ### Ruleset 5 -- special rewriting after aliases have been expanded ### ########################################################################### S5 # deal with plussed users so aliases work nicely R$+ + * $#local $@ $&h $: $1 R$+ + $* $#local $@ $2 $: $1 + * # prepend an empty "forward host" on the front R$+ $: <> $1 # send unrecognized local users to a relay host #R< > $+ + $* $: < $L . > $( user $1 $) + $2 #R< > $+ $: < $L . > $( user $1 $) look up user #R< $* > $+ <> $* $: < > $2 $3 found; strip $L #R< $* . > $+ $: < $1 > $2 strip extra dot # handle plussed local names R< > $+ + $* $#local $@ $2 $: $1 # see if we have a relay or a hub R< > $+ $: < $H > $1 try hub R< > $+ $: < $R > $1 try relay R< > $+ $@ $1 nope, give up R< $- : $+ > $+ $: $>95 < $1 : $2 > $3 < @ $2 > R< $+ > $+ $@ $>95 < $1 > $2 < @ $1 > ################################################################### ### Ruleset 90 -- try domain part of mailertable entry ### ################################################################### #S90 #R$* <$- . $+ > $* $: $1$2 < $(mailertable .$3 $@ $1$2 $@ $2 $) > $4 #R$* <$- : $+ > $* $# $2 $@ $3 $: $4 check -- resolved? #R$* < . $+ > $* $@ $>90 $1 . <$2> $3 no -- strip & try again #R$* < $* > $* $: < $(mailertable . $@ $1$2 $) > $3 try "." #R<$- : $+ > $* $# $1 $@ $2 $: $3 "." found? #R< $* > $* $@ $2 no mailertable match ################################################################### ### Ruleset 95 -- canonify mailer:host syntax to triple ### ################################################################### S95 R< > $* $@ $1 strip off null relay R< $- : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer R< $=w > $* $@ $2 delete local host R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer ################################################################### ### Ruleset 93 -- convert header names to masqueraded form ### ################################################################### S93 R$=E < @ $* > $@ $1 < @ $2 > leave exposed R$* < @ $=w . > $* $: $1 < @ $2 . @ $M > $3 convert local names R$* < @ $=M . > $* $: $1 < @ $2 . @ $M > $3 in same logical domain R$* < @ $+ @ > $* $@ $1 < @ $2 > $3 $M is null R$* < @ $+ @ $+ > $* $@ $1 < @ $3 . > $4 $M is not null ################################################################### ### Ruleset 94 -- convert envelope names to masqueraded form ### ################################################################### S94 #R$+ $@ $>93 $1 ################################################################### ### Ruleset 98 -- local part of ruleset zero (can be null) ### ################################################################### S98 # addresses sent to [EMAIL PROTECTED] will give a 551 error code R$* < @ $+ .REDIRECT. > $: $1 < @ $2 . REDIRECT . > < ${opMode} > R$* < @ $+ .REDIRECT. > <i> $: $1 < @ $2 . REDIRECT. > R$* < @ $+ .REDIRECT. > < $- > $# error $@ 5.1.1 $: "551 User not local; please try " <$1@$2> # DECNET delivery R$* < @ $=w .DECNET. > $#local $: $1 local DECnet R$+ < @ $+ .DECNET. > $#mail11 $@ $2 $: $1 DECnet user # handle virtual users R$+ < @ $=w . > $: < $(virtusertable $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . > R< @ > $+ < @ $+ . > $: < $(virtusertable @ $2 $@ $1 $: @ $) > $1 < @ $2 . > R< @ > $+ $: $1 R< error : $- $+ > $* $#error $@ $( dequote $1 $) $: $2 R< $+ > $+ < @ $+ > $: $>97 $1 # ###################################################################### ###################################################################### ##### ##### MAILER DEFINITIONS ##### ###################################################################### ###################################################################### ################################################## ### Local and Program Mailer specification ### ################################################## Mlocal, P=/bin/bellmail, F=lsDFMAw5:/|@mn, S=10/30, R=20/40, T=DNS/RFC822/X-Unix, A=mail -F $g $u Mprog, P=/bin/sh, F=lsDFMoeu, S=10/30, R=20/40, D=$z:/, T=X-Unix, A=sh -c $u # # Envelope sender rewriting # S10 R<@> $n errors to mailer-daemon R$+ $: $>50 $1 add local domain if needed R$* $: $>94 $1 do masquerading # # Envelope recipient rewriting # S20 R$+ < @ $* > $: $1 strip host part # # Header sender rewriting # S30 R<@> $n errors to mailer-daemon R$+ $: $>50 $1 add local domain if needed R$* $: $>93 $1 do masquerading # # Header recipient rewriting # S40 R$+ $: $>50 $1 add local domain if needed #R$* $: $>93 $1 do all-masquerading # # Common code to add local domain name (only if always-add-domain) # S50 #R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified #R$+ $@ $1 < @ $j . > add local qualification ##################################### ### SMTP Mailer specification ### ##################################### ##### @(#)smtp.m4 8.25 (Berkeley) 8/26/95 ##### Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990, T=DNS/RFC822/SMTP, A=IPC $h Mesmtp, P=[IPC], F=mDFMuXa, S=11/31, R=21, E=\r\n, L=990, T=DNS/RFC822/SMTP, A=IPC $h Msmtp8, P=[IPC], F=mDFMuX8, S=11/31, R=21, E=\r\n, L=990, T=DNS/RFC822/SMTP, A=IPC $h Mrelay, P=[IPC], F=mDFMuXa8, S=11/31, R=61, E=\r\n, L=2040, T=DNS/RFC822/SMTP, A=IPC $h # # envelope sender rewriting # S11 R</C=$+> $@<@$j.>:/C=$1 R/C=$+<@$+> $@<@$j.>:/C=$1 R$+ $: $>51 $1 sender/recipient common R$* :; <@> $@ list:; special case R$* $: $>61 $1 qualify unqual'ed names R$+ $: $>94 $1 do masquerading # # envelope recipient rewriting -- # also header recipient if not masquerading recipients # S21 R</C=$+> $@</C=$1> # do sender/recipient common rewriting R$+ $: $>51 $1 # unqualified names (e.g., "eric") are qualified by local host R$* < @ $* > $* $@ $1 < @ $2 > $3 already qualified R$+ $: $1 < @ $j > add local domain # # header sender and masquerading header recipient rewriting # S31 R</C=$+> $@<@$j.>:/C=$1 R/C=$+<@$+> $@<@$j.>:/C=$1 R$+ $: $>51 $1 sender/recipient common R:; <@> $@ list:; special case # do special header rewriting R$* <@> $* $@ $1 <@> $2 pass null host through R< @ $* > $* $@ < @ $1 > $2 pass route-addr through R$* $: $>61 $1 qualify unqual'ed names R$+ $: $>93 $1 do masquerading # # convert pseudo-domain addresses to real domain addresses # S51 # pass <route-addr>s through R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr> # output fake domains as user%fake@relay # do UUCP heuristics; note that these are shared with UUCP mailers R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form # leave these in .UUCP form to avoid further tampering R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. > R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 > R< $&h ! > $+ $@ $1 < @ $&h .UUCP. > R< $+ ! > $+ $: $1 ! $2 < @ $j . > R$+ < @ $+ : $+ > $: $1 < @ $3 > strip mailer: part # # common sender and masquerading recipient rewriting # S61 R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified R$+ $@ $1 < @ $j . > add local qualification ##################################### ### UUCP Mailer specification ### ##################################### ##### @(#)uucp.m4 8.24 (Berkeley) 9/5/95 ##### # # There are innumerable variations on the UUCP mailer. It really # is rather absurd. # # old UUCP mailer (two names) Muucp, P=/usr/bin/uux, F=DFMhuUd, S=12, R=22/42, M=100000, T=X-UUCP/X-UUCP/X-Unix, A=uux - -r -a$g -gC $h!rmail ($u) Muucp-old, P=/usr/bin/uux, F=DFMhuUd, S=12, R=22/42, M=100000, T=X-UUCP/X-UUCP/X-Unix, A=uux - -r -a$g -gC $h!rmail ($u) # smart UUCP mailer (handles multiple addresses) (two names) Msuucp, P=/usr/bin/uux, F=mDFMhuUd, S=12, R=22/42, M=100000, T=X-UUCP/X-UUCP/X-Unix, A=uux - -r -a$g -gC $h!rmail ($u) Muucp-new, P=/usr/bin/uux, F=mDFMhuUd, S=12, R=22/42, M=100000, T=X-UUCP/X-UUCP/X-Unix, A=uux - -r -a$g -gC $h!rmail ($u) # domain-ized UUCP mailer Muucp-dom, P=/usr/bin/uux, F=mDFMhud, S=52/31, R=21, M=100000, T=X-UUCP/X-UUCP/X-Unix, A=uux - -r -a$g -gC $h!rmail ($u) # domain-ized UUCP mailer with UUCP-style sender envelope Muucp-uudom, P=/usr/bin/uux, F=mDFMhud, S=72/31, R=21, M=100000, T=X-UUCP/X-UUCP/X-Unix, A=uux - -r -a$g -gC $h!rmail ($u) # # envelope and header sender rewriting # S12 # handle error address as a special case R<@> $n errors to mailer-daemon # list:; syntax should disappear R:; <@> $@ R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots R$* < @ $=w > $1 strip local name R<@ $- . UUCP > : $+ $1 ! $2 convert to UUCP format R<@ $+ > : $+ $1 ! $2 convert to UUCP format R$* < @ $- . UUCP > $2 ! $1 convert to UUCP format R$* < @ $+ > $2 ! $1 convert to UUCP format R$&h ! $+ ! $+ $@ $1 ! $2 $h!...!user => ...!user R$&h ! $+ $@ $&h ! $1 $h!user => $h!user R$+ $: $U ! $1 prepend our name R! $+ $: $k ! $1 in case $U undefined # # envelope recipient rewriting # S22 # list:; should disappear R:; <@> $@ R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots R$* < @ $j > $1 strip local name R<@ $- . UUCP > : $+ $1 ! $2 convert to UUCP format R<@ $+ > : $+ $1 ! $2 convert to UUCP format R$* < @ $- . UUCP > $2 ! $1 convert to UUCP format R$* < @ $+ > $2 ! $1 convert to UUCP format # # header recipient rewriting # S42 # list:; syntax should disappear R:; <@> $@ R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots R$* < @ $j > $1 strip local name R<@ $- . UUCP > : $+ $1 ! $2 convert to UUCP format R<@ $+ > : $+ $1 ! $2 convert to UUCP format R$* < @ $- . UUCP > $2 ! $1 convert to UUCP format R$* < @ $+ > $2 ! $1 convert to UUCP format R$&h ! $+ ! $+ $@ $1 ! $2 $h!...!user => ...!user R$&h ! $+ $@ $&h ! $1 $h!user => $h!user R$+ $: $U ! $1 prepend our name R! $+ $: $k ! $1 in case $U undefined # # envelope sender rewriting for uucp-dom mailer # S52 # handle error address as a special case R<@> $n errors to mailer-daemon # pass everything to standard SMTP mailer rewriting R$* $@ $>11 $1 # # envelope sender rewriting for uucp-uudom mailer # S72 # handle error address as a special case R<@> $n errors to mailer-daemon # do standard SMTP mailer rewriting R$* $: $>11 $1 R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots R<@ $- . UUCP > : $+ $@ $1 ! $2 convert to UUCP format R<@ $+ > : $+ $@ $1 ! $2 convert to UUCP format R$* < @ $- . UUCP > $@ $2 ! $1 convert to UUCP format R$* < @ $+ > $@ $2 ! $1 convert to UUCP format ########################################### ### UTK-MAIL11 Mailer specification ### ########################################### ##### @(#)mail11.m4 8.1 (Berkeley) 5/23/95 ##### Mmail11, P=/usr/etc/mail11, F=nsFx, S=15, R=25, A=mail11 $g $x $h $u S15 R$+ $: $>25 $1 preprocess R$w :: $+ $@ $w :: $1 ready to go S25 R$+ < @ $- .UUCP > $: $2 ! $1 back to old style R$+ < @ $- .DECNET > $: $2 :: $1 convert to DECnet style R$+ < @ $- .LOCAL > $: $2 :: $1 convert to DECnet style R$+ < @ $=w. > $: $2 :: $1 convert to DECnet style R$=w :: $+ $2 strip local names R$+ :: $+ $@ $1 :: $2 already qualified ############################################################# ### Forwarding to RFC987 gateway mailer specification ### ############################################################# Mto987gateway, P=[IPC], F=mDFMuex, S=16, R=26, A=IPC $h ############################################################# ### The RFC987 gateway mailer specification ### ### ### ### The RFC987 gateway simulation program and its path ### ### can be renamed to any name and path by modifying the ### ### following Mailer definition below. ### ### ### ############################################################# M987gateway, P=/usr/lpp/osimf/etc/x400mailer, F=sBFMhulmnSC, S=16, R=26, A=gateway -f /etc/x400gw.cfg $f $u S16 # fully qualify nonlocal host names in our local domain. R$+<@$-> $@$1<@$2.$m> # leave all other typical domain addresses alone. R$+<$+> $@$1<$2> S26 R$+ $:<$1>