home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / N / SENDMAIL / _SENDMAI.TAR / usr / src / sendmail / linux.uucp.cf < prev    next >
Encoding:
Text File  |  1994-08-12  |  20.0 KB  |  761 lines

  1. #
  2. # Copyright (c) 1983 Eric P. Allman
  3. # Copyright (c) 1988, 1993
  4. #    The Regents of the University of California.  All rights reserved.
  5. #
  6. # Redistribution and use in source and binary forms, with or without
  7. # modification, are permitted provided that the following conditions
  8. # are met:
  9. # 1. Redistributions of source code must retain the above copyright
  10. #    notice, this list of conditions and the following disclaimer.
  11. # 2. Redistributions in binary form must reproduce the above copyright
  12. #    notice, this list of conditions and the following disclaimer in the
  13. #    documentation and/or other materials provided with the distribution.
  14. # 3. All advertising materials mentioning features or use of this software
  15. #    must display the following acknowledgement:
  16. #    This product includes software developed by the University of
  17. #    California, Berkeley and its contributors.
  18. # 4. Neither the name of the University nor the names of its contributors
  19. #    may be used to endorse or promote products derived from this software
  20. #    without specific prior written permission.
  21. #
  22. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  23. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  26. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  28. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  31. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  32. # SUCH DAMAGE.
  33. #
  34.  
  35.  
  36. ######################################################################
  37. ######################################################################
  38. #####
  39. #####        SENDMAIL CONFIGURATION FILE
  40. #####
  41. ##### built by root@runty on Fri Aug 12 03:01:27 CDT 1994
  42. ##### in /usr/src/sendmail/cf
  43. #####
  44. ######################################################################
  45. ######################################################################
  46.  
  47. #####  @(#)cf.m4    8.4 (Berkeley) 12/24/93  #####
  48.  
  49. #####  linux for setup with uucp which uses domain names  #####
  50. #####  @(#)linux.m4    8.2 (Berkeley) 8/21/93  #####
  51.  
  52.  
  53. #####  @(#)nodns.m4    8.1 (Berkeley) 8/6/93  #####
  54.  
  55. #####  @(#)always_add_domain.m4    8.1 (Berkeley) 6/7/93  #####
  56.  
  57.  
  58.  
  59.  
  60. #####  @(#)proto.m4    8.45 (Berkeley) 3/4/94  #####
  61.  
  62.  
  63. # level 5 config file format
  64. V5
  65.  
  66. ##################
  67. #   local info   #
  68. ##################
  69.  
  70. Cwlocalhost
  71.  
  72.  
  73. CP.
  74.  
  75. # "Smart" relay host (may be null)
  76. DSuucp-dom:otheruucphost
  77.  
  78. # who I send unqualified names to (null means deliver locally)
  79. DR
  80.  
  81. # who gets all local email traffic ($R has precedence for unqualified names)
  82. DH
  83.  
  84. # who I masquerade as (null for no masquerading)
  85. DM
  86.  
  87. # class L: names that should be delivered locally, even if we have a relay
  88. # class E: names that should be exposed as from this host, even if we masquerade
  89. #CLroot
  90. CEroot
  91.  
  92. # operators that cannot be in local usernames (i.e., network indicators)
  93. CO @ % !
  94.  
  95. # a class with just dot (for identifying canonical names)
  96. C..
  97.  
  98. # dequoting map
  99. Kdequote dequote
  100.  
  101.  
  102. ######################
  103. #   Special macros   #
  104. ######################
  105.  
  106. # SMTP initial login message
  107. De$j Sendmail $v/$Z ready at $b
  108.  
  109. # UNIX initial From header format
  110. DlFrom $g  $d
  111.  
  112. # my name for error messages
  113. DnMAILER-DAEMON
  114.  
  115. # delimiter (operator) characters
  116. Do.:%@!^/[]
  117.  
  118. # format of a total name
  119. Dq$?x$x <$g>$|$g$.
  120.  
  121. # Configuration version number
  122. DZ8.6.9
  123.  
  124.  
  125. ###############
  126. #   Options   #
  127. ###############
  128.  
  129. # strip message body to 7 bits on input?
  130. O7False
  131.  
  132. # wait (in minutes) for alias file rebuild
  133. Oa10
  134.  
  135. # location of alias file
  136. OA/etc/aliases
  137.  
  138. # minimum number of free blocks on filesystem
  139. Ob4
  140.  
  141. # substitution for space (blank) characters
  142. OB.
  143.  
  144. # avoid connecting to "expensive" mailers on initial submission?
  145. OcFalse
  146.  
  147. # checkpoint queue runs after every N successful deliveries
  148. OC10
  149.  
  150. # default delivery mode
  151. Odbackground
  152.  
  153. # automatically rebuild the alias database?
  154. ODFalse
  155.  
  156. # error message header/file
  157. #OE/etc/sendmail.oE
  158.  
  159. # error mode
  160. #Oep
  161.  
  162. # save Unix-style "From_" lines at top of header?
  163. OfFalse
  164.  
  165. # temporary file mode
  166. OF0600
  167.  
  168. # match recipients against GECOS field?
  169. OGFalse
  170.  
  171. # default GID
  172. Og1
  173.  
  174. # maximum hop count
  175. Oh17
  176.  
  177. # location of help file
  178. OH/usr/lib/sendmail.hf
  179.  
  180. # ignore dots as terminators in incoming messages?
  181. OiFalse
  182.  
  183. # Insist that the BIND name server be running to resolve names
  184. #OI
  185.  
  186. # deliver MIME-encapsulated error messages?
  187. OjTrue
  188.  
  189. # Forward file search path
  190. #OJ/var/forward/$u:$z/.forward.$w:$z/.forward
  191.  
  192. # open connection cache size
  193. Ok2
  194.  
  195. # open connection cache timeout
  196. OK5m
  197.  
  198. # use Errors-To: header?
  199. OlFalse
  200.  
  201. # log level
  202. OL9
  203.  
  204. # send to me too, even in an alias expansion?
  205. OmFalse
  206.  
  207. # verify RHS in newaliases?
  208. OnTrue
  209.  
  210. # default messages to old style headers if no special punctuation?
  211. OoTrue
  212.  
  213. # SMTP daemon options
  214. #OOPort=esmtp
  215.  
  216. # privacy flags
  217. Opauthwarnings
  218.  
  219. # who (if anyone) should get extra copies of error messages
  220. #OPPostmaster
  221.  
  222. # slope of queue-only function
  223. #Oq600000
  224.  
  225. # queue directory
  226. OQ/var/spool/mqueue
  227.  
  228. # read timeout -- now OK per RFC 1123 section 5.3.2
  229. #Ordatablock=10m
  230.  
  231. # queue up everything before forking?
  232. OsTrue
  233.  
  234. # status file
  235. OS/etc/sendmail.st
  236.  
  237. # default message timeout interval
  238. OT5d/4h
  239.  
  240. # time zone handling:
  241. #  if undefined, use system default
  242. #  if defined but null, use TZ envariable passed in
  243. #  if defined and non-null, use that info
  244. #Ot
  245.  
  246. # default UID
  247. Ou1
  248.  
  249. # list of locations of user database file (null means no lookup)
  250. OU
  251.  
  252. # fallback MX host
  253. #OVfall.back.host.net
  254.  
  255. # if we are the best MX host for a site, try it directly instead of config err
  256. OwFalse
  257.  
  258. # load average at which we just queue messages
  259. Ox8
  260.  
  261. # load average at which we refuse connections
  262. OX12
  263.  
  264. # work recipient factor
  265. #Oy30000
  266.  
  267. # deliver each queued job in a separate process?
  268. OYFalse
  269.  
  270. # work class factor
  271. #Oz1800
  272.  
  273. # work time factor
  274. #OZ90000
  275.  
  276. ###########################
  277. #   Message precedences   #
  278. ###########################
  279.  
  280. Pfirst-class=0
  281. Pspecial-delivery=100
  282. Plist=-30
  283. Pbulk=-60
  284. Pjunk=-100
  285.  
  286. #####################
  287. #   Trusted users   #
  288. #####################
  289.  
  290. Troot
  291. Tdaemon
  292. Tuucp
  293.  
  294. #########################
  295. #   Format of headers   #
  296. #########################
  297.  
  298. H?P?Return-Path: $g
  299. HReceived: $?sfrom $s $.$?_($?s$|from $.$_) $.by $j ($v/$Z)$?r with $r$. id $i$?u for $u$.; $b
  300. H?D?Resent-Date: $a
  301. H?D?Date: $a
  302. H?F?Resent-From: $q
  303. H?F?From: $q
  304. H?x?Full-Name: $x
  305. HSubject:
  306. # HPosted-Date: $a
  307. # H?l?Received-Date: $b
  308. H?M?Resent-Message-Id: <$t.$i@$j>
  309. H?M?Message-Id: <$t.$i@$j>
  310. #
  311. ######################################################################
  312. ######################################################################
  313. #####
  314. #####            REWRITING RULES
  315. #####
  316. ######################################################################
  317. ######################################################################
  318.  
  319.  
  320. ###########################################
  321. ###  Rulset 3 -- Name Canonicalization  ###
  322. ###########################################
  323. S3
  324.  
  325. # handle null input (translate to <@> special case)
  326. R$@            $@ <@>
  327.  
  328. # basic textual canonicalization -- note RFC733 heuristic here
  329. R$*<$*>$*<$*>$*        $2$3<$4>$5            strip multiple <> <>
  330. R$*<$*<$+>$*>$*        <$3>$5                2-level <> nesting
  331. R$*<>$*            $@ <@>                MAIL FROM:<> case
  332. R$*<$+>$*        $2                basic RFC821/822 parsing
  333.  
  334. # handle list:; syntax as special case
  335. R$*:;$*            $@ $1 :; <@>
  336.  
  337. # make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later
  338. R@ $+ , $+        @ $1 : $2            change all "," to ":"
  339.  
  340. # localize and dispose of route-based addresses
  341. R@ $+ : $+        $@ $>96 < @$1 > : $2        handle <route-addr>
  342.  
  343. # find focus for list syntax
  344. R $+ : $* ; @ $+    $@ $>96 $1 : $2 ; < @ $3 >    list syntax
  345. R $+ : $* ;        $@ $1 : $2;            list syntax
  346.  
  347. # find focus for @ syntax addresses
  348. R$+ @ $+        $: $1 < @ $2 >            focus on domain
  349. R$+ < $+ @ $+ >        $1 $2 < @ $3 >            move gaze right
  350. R$+ < @ $+ >        $@ $>96 $1 < @ $2 >        already canonical
  351.  
  352. # do some sanity checking
  353. R$* < @ $* : $* > $*    $1 < @ $2 $3 > $4        nix colons in addrs
  354.  
  355. # convert old-style addresses to a domain-based address
  356. R$- ! $+        $@ $>96 $2 < @ $1 .UUCP >    resolve uucp names
  357. R$+ . $- ! $+        $@ $>96 $3 < @ $1 . $2 >        domain uucps
  358. R$+ ! $+        $@ $>96 $2 < @ $1 .UUCP >    uucp subdomains
  359.  
  360. # if we have % signs, take the rightmost one
  361. R$* % $*        $1 @ $2                First make them all @s.
  362. R$* @ $* @ $*        $1 % $2 @ $3            Undo all but the last.
  363. R$* @ $*        $@ $>96 $1 < @ $2 >        Insert < > and finish
  364.  
  365. # else we must be a local name
  366.  
  367.  
  368. ################################################
  369. ###  Ruleset 96 -- bottom half of ruleset 3  ###
  370. ################################################
  371.  
  372. #  At this point, everything should be in a "local_part<@domain>extra" format.
  373. S96
  374.  
  375. # handle special cases for local names
  376. R$* < @ localhost > $*        $: $1 < @ $j . > $2        no domain at all
  377. R$* < @ localhost . $m > $*    $: $1 < @ $j . > $2        local domain
  378. R$* < @ localhost . UUCP > $*    $: $1 < @ $j . > $2        .UUCP domain
  379. R$* < @ [ $+ ] > $*        $: $1 < @@ [ $2 ] > $3        mark [a.b.c.d]
  380. R$* < @@ $=w > $*        $: $1 < @ $j . > $3        self-literal
  381. R$* < @@ $+ > $*        $@ $1 < @ $2 > $3        canon IP addr
  382.  
  383. # if really UUCP, handle it immediately
  384.  
  385. # try UUCP traffic as a local address
  386. R$* < @ $+ . UUCP > $*        $: $1 < @ $[ $2 $] . UUCP . > $3
  387. R$* < @ $+ . . UUCP . > $*        $@ $1 < @ $2 . > $3
  388.  
  389. # pass to name server to make hostname canonical
  390. R$* < @ $* $~P > $*        $: $1 < @ $[ $2 $3 $] > $4
  391.  
  392. # local host aliases and pseudo-domains are always canonical
  393. R$* < @ $=w > $*        $: $1 < @ $2 . > $3
  394. R$* < @ $* $=P > $*        $: $1 < @ $2 $3 . > $4
  395. R$* < @ $* . . > $*        $1 < @ $2 . > $3
  396.  
  397. # if this is the local hostname, make sure we treat is as canonical
  398. R$* < @ $j > $*            $: $1 < @ $j . > $2
  399.  
  400.  
  401. ##################################################
  402. ###  Ruleset 4 -- Final Output Post-rewriting  ###
  403. ##################################################
  404. S4
  405.  
  406. R$*<@>            $@ $1                handle <> and list:;
  407.  
  408. # strip trailing dot off possibly canonical name
  409. R$* < @ $+ . > $*    $1 < @ $2 > $3
  410.  
  411. # externalize local domain info
  412. R$* < $+ > $*        $1 $2 $3            defocus
  413. R@ $+ : @ $+ : $+    @ $1 , @ $2 : $3        <route-addr> canonical
  414. R@ $*            $@ @ $1                ... and exit
  415.  
  416. # UUCP must always be presented in old form
  417. R$+ @ $- . UUCP        $2!$1                u@h.UUCP => h!u
  418.  
  419. # delete duplicate local names
  420. R$+ % $=w @ $=w        $1 @ $j                u%host@host => u@host
  421.  
  422.  
  423.  
  424. ##############################################################
  425. ###   Ruleset 97 -- recanonicalize and call ruleset zero   ###
  426. ###           (used for recursive calls)           ###
  427. ##############################################################
  428.  
  429. S97
  430. R$*            $: $>3 $1
  431. R$*            $@ $>0 $1
  432.  
  433.  
  434. ######################################
  435. ###   Ruleset 0 -- Parse Address   ###
  436. ######################################
  437.  
  438. S0
  439.  
  440. R<@>            $#local $: <>            special case error msgs
  441. R$* : $* ;        $#error $@ USAGE $: "list:; syntax illegal for recipient addresses"
  442. R<@ $+>            $#error $@ USAGE $: "user address required"
  443. R<$* : $* >        $#error $@ USAGE $: "colon illegal in host name part"
  444.  
  445. # handle numeric address spec
  446. R$* < @ [ $+ ] > $*    $: $>98 $1 < @ [ $2 ] > $3    numeric internet spec
  447. R$* < @ [ $+ ] > $*    $#smtp $@ [$2] $: $1 < @ [$2] > $3    still numeric: send
  448.  
  449. # now delete the local info -- note $=O to find characters that cause forwarding
  450. R$* < @ > $*        $@ $>97 $1        user@ => user
  451. R< @ $=w . > : $*    $@ $>97 $2        @here:... -> ...
  452. R$* $=O $* < @ $=w . >    $@ $>97 $1 $2 $3        ...@here -> ...
  453.  
  454. # handle local hacks
  455. R$*            $: $>98 $1
  456.  
  457. # short circuit local delivery so forwarded email works
  458. R$+ < @ $=w . >        $: $1 < @ $2 . @ $H >        first try hub
  459. R$+ < $+ @ $+ >        $#local $: $1            yep ....
  460. R$+ < $+ @ >        $#local $: @ $1            nope, local address
  461.  
  462. # resolve locally connected UUCP links
  463. R$* < @ $=Z . UUCP. > $*    $#uucp-uudom $@ $2 $: $1 < @ $2 .UUCP. > $3
  464. R$* < @ $=Y . UUCP. > $*    $#uucp-new $@ $2 $: $1 < @ $2 .UUCP. > $3
  465. R$* < @ $=U . UUCP. > $*    $#uucp-old $@ $2 $: $1 < @ $2 .UUCP. > $3
  466.  
  467. # resolve remotely connected UUCP links (if any)
  468.  
  469. # resolve fake top level domains by forwarding to other hosts
  470.  
  471. # forward other UUCP traffic straight to UUCP
  472. R$* < @ $+ .UUCP. > $*        $#uucp $@ $2 $: $1 < @ $2 .UUCP. > $3    user@host.UUCP
  473.  
  474.  
  475. # pass names that still have a host to a smarthost (if defined)
  476. R$* < @ $* > $*        $: $>95 < $S > $1 < @ $2 > $3    glue on smarthost name
  477.  
  478. # deal with other remote names
  479. R$* < @$* > $*        $#smtp $@ $2 $: $1 < @ $2 > $3        user@host.domain
  480.  
  481. # if this is quoted, strip the quotes and try again
  482. R$+            $: $(dequote $1 $)        strip quotes
  483. R$+ $=O $+        $@ $>97 $1 $2 $3            try again
  484.  
  485. # handle locally delivered names
  486. R$=L            $#local $: @ $1            special local names
  487. R$+            $#local $: $1            regular local names
  488.  
  489. ###########################################################################
  490. ###   Ruleset 5 -- special rewriting after aliases have been expanded   ###
  491. ###           (new sendmail only)                    ###
  492. ###########################################################################
  493.  
  494. S5
  495.  
  496. # see if we have a relay or a hub
  497. R$+            $: < $R > $1            try relay
  498. R< > $+            $: < $H > $1            try hub
  499. R< > $+            $@ $1                nope, give up
  500. R< $- : $+ > $+        $: $>95 < $1 : $2 > $3 < @ $2 >
  501. R< $+ > $+        $@ $>95 < $1 > $2 < @ $1 >
  502.  
  503. ###################################################################
  504. ###  Ruleset 95 -- canonify mailer:host syntax to triple    ###
  505. ###################################################################
  506.  
  507. S95
  508. R< > $*            $@ $1                strip off null relay
  509. R< $- : $+ > $*        $# $1 $@ $2 $: $3        try qualified mailer
  510. R< $=w > $*        $@ $2                delete local host
  511. R< $+ > $*        $#relay $@ $1 $: $2        use unqualified mailer
  512.  
  513. ###################################################################
  514. ###  Ruleset 98 -- local part of ruleset zero (can be null)    ###
  515. ###################################################################
  516.  
  517. S98
  518. #
  519. ######################################################################
  520. ######################################################################
  521. #####
  522. #####            MAILER DEFINITIONS
  523. #####
  524. ######################################################################
  525. ######################################################################
  526.  
  527.  
  528. ##################################################
  529. ###   Local and Program Mailer specification   ###
  530. ##################################################
  531.  
  532. #####  @(#)local.m4    8.6 (Berkeley) 10/24/93  #####
  533.  
  534. Mlocal,        P=/usr/bin/deliver, F=lsDFMShP, S=10, R=20/40,
  535.         A=deliver $u
  536. Mprog,        P=/bin/sh, F=lsDFMeu, S=10, R=20/40, D=$z:/,
  537.         A=sh -c $u
  538.  
  539. S10
  540. R<@>            $n            errors to mailer-daemon
  541. R$+            $: $>40 $1
  542.  
  543. S20
  544. R$+ < @ $* >        $: $1            strip host part
  545.  
  546. S40
  547. R$* < @ $* > $*        $@ $1 < @ $2 > $3    already fully qualified
  548. R$*            $: $1 @ $M        add local qualification
  549. R$* @            $: $1 @ $j        if $M not defined
  550.  
  551. #####################################
  552. ###   SMTP Mailer specification   ###
  553. #####################################
  554.  
  555. #####  @(#)smtp.m4    8.15 (Berkeley) 2/14/94  #####
  556.  
  557. Msmtp,        P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n,
  558.         L=990, A=IPC $h
  559. Mesmtp,        P=[IPC], F=mDFMuXa, S=11/31, R=21, E=\r\n,
  560.         L=990, A=IPC $h
  561. Mrelay,        P=[IPC], F=mDFMuXa, S=11/31, R=61, E=\r\n,
  562.         L=2040, A=IPC $h
  563.  
  564. #
  565. #  envelope sender and masquerading recipient rewriting
  566. #
  567. S11
  568. R$+            $: $>51 $1            sender/recipient common
  569. R$* :; <@>        $@ $1 :;            list:; special case
  570. R$*            $@ $>61 $1            qualify unqual'ed names
  571.  
  572.  
  573. #
  574. #  header recipient rewriting if not masquerading recipients
  575. #
  576. S21
  577.  
  578. # do sender/recipient common rewriting
  579. R$+            $: $>51 $1
  580.  
  581. # unqualified names (e.g., "eric") are qualified by local host
  582. R$* < @ $* > $*        $@ $1 < @ $2 > $3        already qualified
  583. R$+            $: $1 < @ $j >            add local domain
  584.  
  585.  
  586. #
  587. #  header sender and masquerading recipient rewriting
  588. #
  589. S31
  590. R$+            $: $>51 $1            sender/recipient common
  591. R$* :; <@>        $@ $1 :;            list:; special case
  592.  
  593. # do special header rewriting
  594. R$* <@> $*        $@ $1 <@> $2            pass null host through
  595. R< @ $* > $*        $@ < @ $1 > $2            pass route-addr through
  596. R$=E < @ $=w . >    $@ $1 < @ $2 >            exposed user as is
  597. R$* < @ $=w . >        $: $1 < @ $2 @ $M >        masquerade as domain
  598. R$* < @ $+ @ >        $@ $1 < @ $2 >            in case $M undefined
  599. R$* < @ $+ @ $+ >    $@ $1 < @ $3 >            $M is defined -- use it
  600. R$*            $@ $>61 $1            qualify unqual'ed names
  601.  
  602.  
  603. #
  604. #  convert pseudo-domain addresses to real domain addresses
  605. #
  606. S51
  607.  
  608. # pass <route-addr>s through
  609. R< @ $+ > $*        $@ < @ $1 > $2            resolve <route-addr>
  610.  
  611. # output fake domains as user%fake@relay
  612.  
  613. # do UUCP heuristics; note that these are shared with UUCP mailers
  614. R$+ < @ $+ .UUCP. >    $: < $2 ! > $1            convert to UUCP form
  615. R$+ < @ $* > $*        $@ $1 < @ $2 > $3        not UUCP form
  616.  
  617. # leave these in .UUCP form to avoid further tampering
  618. R< $&h ! > $- ! $+    $@ $2 < @ $1 .UUCP. >
  619. R< $&h ! > $-.$+ ! $+    $@ $3 < @ $1.$2 >
  620. R< $&h ! > $+        $@ $1 < @ $&h .UUCP. >
  621. R< $+ ! > $+        $: $1 ! $2 < @ $Y >
  622. R$+ < @ >        $: $1 < @ $j >            in case $Y undefined
  623. R$+ < @ $+ : $+ >    $: $1 < @ $3 >            strip mailer: part
  624.  
  625.  
  626. #
  627. #  common sender and masquerading recipient rewriting
  628. #
  629. S61
  630.  
  631. R$* < @ $* > $*        $@ $1 < @ $2 > $3        already qualified
  632. R$=E            $@ $1 < @ $j>            show exposed names
  633. R$+            $: $1 < @ $M >            user w/o host
  634. R$+ <@>            $: $1 < @ $j >            in case $M undefined
  635.  
  636. #####################################
  637. ###   UUCP Mailer specification   ###
  638. #####################################
  639.  
  640. #####  @(#)uucp.m4    8.16 (Berkeley) 4/14/94  #####
  641.  
  642. #
  643. #  There are innumerable variations on the UUCP mailer.  It really
  644. #  is rather absurd.
  645. #
  646.  
  647. # old UUCP mailer (two names)
  648. Muucp,        P=/usr/bin/uux, F=DFMhuU, S=12, R=22/42, M=100000,
  649.         A=uux - -r -a$f -gC $h!rmail ($u)
  650. Muucp-old,    P=/usr/bin/uux, F=DFMhuU, S=12, R=22/42, M=100000,
  651.         A=uux - -r -a$f -gC $h!rmail ($u)
  652.  
  653. # smart UUCP mailer (handles multiple addresses) (two names)
  654. Msuucp,        P=/usr/bin/uux, F=mDFMhuU, S=12, R=22/42, M=100000,
  655.         A=uux - -r -a$f -gC $h!rmail ($u)
  656. Muucp-new,    P=/usr/bin/uux, F=mDFMhuU, S=12, R=22/42, M=100000,
  657.         A=uux - -r -a$f -gC $h!rmail ($u)
  658.  
  659. # domain-ized UUCP mailer
  660. Muucp-dom,    P=/usr/bin/uux, F=mDFMhu, S=52/31, R=21, M=100000,
  661.         A=uux - -r -a$f -gC $h!rmail ($u)
  662.  
  663. # domain-ized UUCP mailer with UUCP-style sender envelope
  664. Muucp-uudom,    P=/usr/bin/uux, F=mDFMhu, S=72/31, R=21, M=100000,
  665.         A=uux - -r -a$f -gC $h!rmail ($u)
  666.  
  667.  
  668. #
  669. #  envelope and header sender rewriting
  670. #
  671. S12
  672.  
  673. # handle error address as a special case
  674. R<@>                $n            errors to mailer-daemon
  675.  
  676. # do not qualify list:; syntax
  677. R$* :; <@>            $@ $1 :;
  678.  
  679. R$* < @ $* . >            $1 < @ $2 >        strip trailing dots
  680. R$* < @ $=w >            $1            strip local name
  681. R<@ $- . UUCP > : $+        $1 ! $2            convert to UUCP format
  682. R<@ $+ > : $+            $1 ! $2            convert to UUCP format
  683. R$* < @ $- . UUCP >        $2 ! $1            convert to UUCP format
  684. R$* < @ $+ >            $2 ! $1            convert to UUCP format
  685. R$&h ! $+ ! $+            $@ $1 ! $2        $h!...!user => ...!user
  686. R$&h ! $+            $@ $&h ! $1        $h!user => $h!user
  687. R$+                $: $U ! $1        prepend our name
  688. R! $+                $: $k ! $1        in case $U undefined
  689.  
  690. #
  691. #  envelope recipient rewriting
  692. #
  693. S22
  694.  
  695. # don't touch list:; syntax
  696. R$* :; <@>            $@ $1 :;
  697.  
  698. R$* < @ $* . >            $1 < @ $2 >        strip trailing dots
  699. R$* < @ $j >            $1            strip local name
  700. R<@ $- . UUCP > : $+        $1 ! $2            convert to UUCP format
  701. R<@ $+ > : $+            $1 ! $2            convert to UUCP format
  702. R$* < @ $- . UUCP >        $2 ! $1            convert to UUCP format
  703. R$* < @ $+ >            $2 ! $1            convert to UUCP format
  704.  
  705. #
  706. #  header recipient rewriting
  707. #
  708. S42
  709.  
  710. # don't touch list:; syntax
  711. R$* :; <@>            $@ $1 :;
  712.  
  713. R$* < @ $* . >            $1 < @ $2 >        strip trailing dots
  714. R$* < @ $j >            $1            strip local name
  715. R<@ $- . UUCP > : $+        $1 ! $2            convert to UUCP format
  716. R<@ $+ > : $+            $1 ! $2            convert to UUCP format
  717. R$* < @ $- . UUCP >        $2 ! $1            convert to UUCP format
  718. R$* < @ $+ >            $2 ! $1            convert to UUCP format
  719. R$&h ! $+ ! $+            $@ $1 ! $2        $h!...!user => ...!user
  720. R$&h ! $+            $@ $&h ! $1        $h!user => $h!user
  721. R$+                $: $U ! $1        prepend our name
  722. R! $+                $: $k ! $1        in case $U undefined
  723.  
  724.  
  725. #
  726. #  envelope sender rewriting for uucp-dom mailer
  727. #
  728. S52
  729.  
  730. # handle error address as a special case
  731. R<@>                $n            errors to mailer-daemon
  732.  
  733. # pass everything to standard SMTP mailer rewriting
  734. R$*                $@ $>11 $1
  735.  
  736. #
  737. #  envelope sender rewriting for uucp-uudom mailer
  738. #
  739. S72
  740.  
  741. # handle error address as a special case
  742. R<@>                $n            errors to mailer-daemon
  743.  
  744. # do not qualify list:; syntax
  745. R$* :; <@>            $@ $1 :;
  746.  
  747. R$* < @ $* . >            $1 < @ $2 >        strip trailing dots
  748. R$* < @ $=w >            $1            strip local name
  749. R<@ $- . UUCP > : $+        $1 ! $2            convert to UUCP format
  750. R<@ $+ > : $+            $1 ! $2            convert to UUCP format
  751. R$* < @ $- . UUCP >        $2 ! $1            convert to UUCP format
  752. R$* < @ $+ >            $@ $2 ! $1        convert to UUCP format
  753.  
  754. R$&h ! $+ ! $+            $@ $1 ! $2        $h!...!user => ...!user
  755. R$&h ! $+            $@ $&h ! $1        $h!user => $h!user
  756. R$+                $: $M ! $1        prepend masquerade name
  757. R! $+                $: $j ! $1        in case $M undefined
  758.  
  759.  
  760.  
  761.