home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / usr.sbin / sendmail / src / sendmail.cf < prev    next >
Encoding:
Text File  |  1991-04-23  |  16.4 KB  |  635 lines

  1. # Copyright (c) 1983 Eric P. Allman
  2. # Copyright (c) 1988 The Regents of the University of California.
  3. # All rights reserved.
  4. #
  5. # Redistribution and use in source and binary forms, with or without
  6. # modification, are permitted provided that the following conditions
  7. # are met:
  8. # 1. Redistributions of source code must retain the above copyright
  9. #    notice, this list of conditions and the following disclaimer.
  10. # 2. Redistributions in binary form must reproduce the above copyright
  11. #    notice, this list of conditions and the following disclaimer in the
  12. #    documentation and/or other materials provided with the distribution.
  13. # 3. All advertising materials mentioning features or use of this software
  14. #    must display the following acknowledgement:
  15. #    This product includes software developed by the University of
  16. #    California, Berkeley and its contributors.
  17. # 4. Neither the name of the University nor the names of its contributors
  18. #    may be used to endorse or promote products derived from this software
  19. #    without specific prior written permission.
  20. #
  21. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31. # SUCH DAMAGE.
  32. #
  33. #    @(#)sendmail.cf    5.2 (Berkeley) 4/23/91
  34. #
  35.  
  36. # built by root on Mon Aug 21 13:47:04 PDT 1989
  37. # in /usr/src/local/nettables/sendmail.cf/cf on monet.Berkeley.EDU
  38. #
  39. ############################################################
  40. ############################################################
  41. #####
  42. #####        SENDMAIL CONFIGURATION FILE
  43. #####
  44. ############################################################
  45. ############################################################
  46.  
  47.  
  48. ##################
  49. #   local info   #
  50. ##################
  51.  
  52. # file containing our internet aliases
  53. Fw/etc/sendmail.cw
  54.  
  55. # uucp hostnames
  56. DUokeeffe
  57. CUokeeffe
  58.  
  59. # local UUCP connections
  60. CV    blia
  61. CV    ccicpg
  62. CV    mjk
  63. CV    oxford
  64. CV    zulu
  65.  
  66.  
  67. #############################
  68. ###   Setup Information   ###
  69. #############################
  70.  
  71.  
  72. ######################
  73. #   General Macros   #
  74. ######################
  75.  
  76. # local domain name
  77. DDBerkeley.EDU
  78.  
  79. # Internet relay host -- machines in our domain that are not
  80. # registered with the NIC will be "hidden" behind this relay machine
  81. # with the % kludge, although SMTP delivery will still be performed
  82. # by the sending machine.  Someday this will go away.
  83. DAucbvax.Berkeley.EDU
  84.  
  85. # UUCP relay host
  86. DRucbvax.Berkeley.EDU
  87.  
  88. # csnet relay host
  89. DCrelay.cs.net
  90.  
  91. # bitnet relay host
  92. DBjade.Berkeley.EDU
  93.  
  94. # my official hostname
  95. Dj$w
  96.  
  97.  
  98.  
  99. ###############
  100. #   Classes   #
  101. ###############
  102.  
  103. # Internal ("fake") domains that we use in rewriting
  104. CIUUCP BITNET CSNET
  105.  
  106.  
  107.  
  108. ############################################################
  109. ############################################################
  110. #####
  111. #####    BERKELEY HOSTS REGISTERED WITH THE NIC
  112. #####
  113. ############################################################
  114. ############################################################
  115.  
  116.  
  117. CNbach ucbbach
  118. CNbizet ucbbizet
  119. CNcad ucbcad
  120. CNdegas ucbdegas
  121. CNeast ucbeast
  122. CNernie ucbernie
  123. CNesvax ucbesvax
  124. CNjade ucbjade
  125. CNji ucbji
  126. CNmike ucbmike
  127. CNmonet ucbmonet
  128. CNpostgres
  129. CNrenoir ucbrenoir
  130. CNucbarpa
  131. CNucbvax
  132. CNviolet ucbviolet
  133.  
  134.  
  135. ######################
  136. #   Version Number   #
  137. ######################
  138.  
  139. DZ1.37
  140.  
  141.  
  142. ######################
  143. #   Special macros   #
  144. ######################
  145.  
  146. # my name
  147. DnMAILER-DAEMON
  148. # UNIX header format
  149. DlFrom $g  $d
  150. # delimiter (operator) characters
  151. Do.:%@!^=/[]
  152. # format of a total name
  153. Dq$g$?x ($x)$.
  154. # SMTP login message
  155. De$j Sendmail $v/$Z ready at $b
  156.  
  157. ###############
  158. #   Options   #
  159. ###############
  160.  
  161. # location of alias file
  162. OA/etc/aliases
  163. # wait up to ten minutes for alias file rebuild
  164. Oa10
  165. # substitution for space (blank) characters
  166. OB.
  167. # (don't) connect to "expensive" mailers
  168. #Oc
  169. # default delivery mode (deliver in background)
  170. Odbackground
  171. # temporary file mode
  172. OF0600
  173. # default GID
  174. Og1
  175. # location of help file
  176. OH/usr/share/misc/sendmail.hf
  177. # log level
  178. OL9
  179. # default network name
  180. ONARPA
  181. # default messages to old style
  182. Oo
  183. # queue directory
  184. OQ/var/spool/mqueue
  185. # read timeout -- violates protocols
  186. Or2h
  187. # status file
  188. OS/var/log/sendmail.st
  189. # queue up everything before starting transmission
  190. Os
  191. # default timeout interval
  192. OT3d
  193. # time zone names (V6 only)
  194. OtPST,PDT
  195. # default UID
  196. Ou1
  197. # wizard's password
  198. OW*
  199. # load average at which we just queue messages
  200. Ox8
  201. # load average at which we refuse connections
  202. OX12
  203.  
  204. ###########################
  205. #   Message precedences   #
  206. ###########################
  207.  
  208. Pfirst-class=0
  209. Pspecial-delivery=100
  210. Pbulk=-60
  211. Pjunk=-100
  212.  
  213. #####################
  214. #   Trusted users   #
  215. #####################
  216.  
  217. Troot
  218. Tdaemon
  219. Tuucp
  220.  
  221. #########################
  222. #   Format of headers   #
  223. #########################
  224.  
  225. H?P?Return-Path: <$g>
  226. HReceived: $?sfrom $s $.by $j ($v/$Z)
  227.     id $i; $b
  228. H?D?Resent-Date: $a
  229. H?D?Date: $a
  230. H?F?Resent-From: $q
  231. H?F?From: $q
  232. H?x?Full-Name: $x
  233. HSubject:
  234. # HPosted-Date: $a
  235. # H?l?Received-Date: $b
  236. H?M?Resent-Message-Id: <$t.$i@$j>
  237. H?M?Message-Id: <$t.$i@$j>
  238.  
  239.  
  240.  
  241. ###########################
  242. ###   Rewriting Rules   ###
  243. ###########################
  244.  
  245.  
  246. ################################
  247. #  Sender Field Pre-rewriting  #
  248. ################################
  249. S1
  250. #R$*<$*>$*        $1$2$3                defocus
  251.  
  252. ###################################
  253. #  Recipient Field Pre-rewriting  #
  254. ###################################
  255. S2
  256. #R$*<$*>$*        $1$2$3                defocus
  257.  
  258.  
  259.  
  260. #################################
  261. #  Final Output Post-rewriting  #
  262. #################################
  263. S4
  264.  
  265. R@            $@                handle <> error addr
  266.  
  267. # resolve numeric addresses to name if possible
  268. R$*<@[$+]>$*        $:$1<@$[[$2]$]>$3        lookup numeric internet addr
  269.  
  270. # externalize local domain info
  271. R$*<$+>$*        $1$2$3                defocus
  272. R@$+:@$+:$+        @$1,@$2:$3            <route-addr> canonical
  273.  
  274. # UUCP must always be presented in old form
  275. R$+@$-.UUCP        $2!$1                u@h.UUCP => h!u
  276.  
  277. # delete duplicate local names
  278. R$+%$=w@$=w        $1@$w                u%host@host => u@host
  279. R$+%$=w@$=w.$D        $1@$w                u%host@host => u@host
  280.  
  281.  
  282. ###########################
  283. #  Name Canonicalization  #
  284. ###########################
  285. S3
  286.  
  287. # handle "from:<>" special case
  288. R$*<>$*            $@@                turn into magic token
  289.  
  290. # basic textual canonicalization -- note RFC733 heuristic here
  291. R$*<$*<$*<$+>$*>$*>$*    $4                3-level <> nesting
  292. R$*<$*<$+>$*>$*        $3                2-level <> nesting
  293. R$*<$+>$*        $2                basic RFC821/822 parsing
  294.  
  295. # make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later
  296. R@$+,$+            @$1:$2                change all "," to ":"
  297.  
  298. # localize and dispose of route-based addresses
  299. R@$+:$+            $@$>6<@$1>:$2            handle <route-addr>
  300.  
  301. # more miscellaneous cleanup
  302. R$+            $:$>8$1                host dependent cleanup
  303. R$+:$*;@$+        $@$1:$2;@$3            list syntax
  304. R$+:$*;            $@$1:$2;            list syntax
  305. R$+@$+            $:$1<@$2>            focus on domain
  306. R$+<$+@$+>        $1$2<@$3>            move gaze right
  307. R$+<@$+>        $@$>6$1<@$2>            already canonical
  308.  
  309. # convert old-style addresses to a domain-based address
  310. R$+^$+            $1!$2                convert ^ to !
  311. R$-!$+            $@$>6$2<@$1.UUCP>        resolve uucp names
  312. R$+.$-!$+        $@$>6$3<@$1.$2>            domain uucps
  313. R$+!$+            $@$>6$2<@$1.UUCP>        uucp subdomains
  314. R$+%$+            $:$>9$1%$2            user%host
  315. R$+<@$+>        $@$>6$1<@$2>            already canonical
  316. R$-.$+            $@$>6$2<@$1>            host.user
  317.  
  318.  
  319. #################################
  320. #   special local conversions   #
  321. #################################
  322.  
  323. S6
  324. R$*<@$=w>$*        $:$1<@$w>$3            get into u@$w form
  325. R$*<@$=w.$D>$*        $:$1<@$w>$3
  326. R$*<@$=U.UUCP>$*    $:$1<@$w>$3
  327.  
  328.  
  329. ################################
  330. #   Change rightmost % to @.   #
  331. ################################
  332.  
  333. S9
  334. R$*%$*            $1@$2                First make them all @'s.
  335. R$*@$*@$*        $1%$2@$3            Undo all but the last.
  336. R$*@$*            $@$1<@$2>            Put back the brackets.
  337.  
  338.  
  339.  
  340. ###################
  341. ###   Mailers   ###
  342. ###################
  343.  
  344.  
  345. ############################################################
  346. ############################################################
  347. #####
  348. #####        Local and Program Mailer specification
  349. #####
  350. ############################################################
  351. ############################################################
  352.  
  353. Mlocal,    P=/usr/libexec/delivermail, F=lsDFMmn, S=10, R=20, A=mail -r $g -d $u
  354. Mprog,    P=/bin/sh,   F=lsDFMe,   S=10, R=20, A=sh -c $u
  355.  
  356. S10
  357. R@            $n            errors to mailer-daemon
  358.  
  359.  
  360. ############################################################
  361. ############################################################
  362. #####
  363. #####        Local Domain SMTP Mailer specification
  364. #####
  365. #####    Messages processed by this specification are assumed to remain
  366. #####    the local domain.  Hence, they can refer to hosts that are
  367. #####    not registered in the NIC host table.
  368. #####
  369. ############################################################
  370. ############################################################
  371.  
  372. Mtcpld,    P=[IPC], F=mDFMueXLC, S=17, R=27, A=IPC $h, E=\r\n
  373.  
  374. S17
  375.  
  376. # cleanup forwarding a bit
  377. R$*<$*>$*        $1$2$3                defocus
  378. R$*            $:$>3$1                canonicalize
  379. R$*%$*<@$w>        $:$>9$1%$2            user%localhost@localdomain
  380.  
  381. # pass <route-addr>'s through
  382. R<@$+>$*        $@<@$[$1$]>$2            resolve <route-addr>
  383.  
  384. # map colons to dots everywhere
  385. R$*:$*            $1.$2                map colons to dots
  386.  
  387.  
  388.  
  389. # output local host as user@host.domain
  390. R$-            $@$1<@$w>            user w/o host
  391. R$+<@$w>        $@$1<@$w>            this host
  392. R$+<@$=w>        $@$1<@$w>            or an alias
  393. R$+<@$->        $:$1<@$[$2$]>            ask nameserver
  394. R$+<@$w>        $@$1<@$w>            this host
  395. R$+<@$->        $@$1<@$2.$D>            if nameserver fails
  396.  
  397. # if not local, and not a "fake" domain, ask the nameserver
  398. R$+<@$+.$~I>        $@$1<@$[$2.$3$]>        user@host.domain
  399. R$+<@[$+]>        $@$1<@[$2]>            already ok
  400.  
  401. # output fake domains as user%fake@relay
  402.  
  403. R$+<@$+.BITNET>        $@$1%$2.BITNET<@$B>        user@host.bitnet
  404. R$+<@$+.CSNET>        $@$1%$2.CSNET<@$C>        user@host.CSNET
  405. R$+<@$+.UUCP>        $@$2!$1<@$w>            user@host.UUCP
  406.  
  407.  
  408. S27
  409.  
  410. # cleanup
  411. R$*<$*>$*        $1$2$3                defocus
  412. R$*            $:$>3$1                now canonical form
  413. R$*%$*<@$w>        $:$>9$1%$2            user%localhost@localdomain
  414.  
  415. # pass <route-addr>'s through
  416. R<@$+>$*        $@<@$[$1$]>$2            resolve <route-addr>
  417.  
  418. # map colons to dots everywhere
  419. R$*:$*            $1.$2                map colons to dots
  420.  
  421. # output local host as user@host.domain
  422. R$-            $@$1<@$w>            user w/o host
  423. R$+<@$w>        $@$1<@$w>            this host
  424. R$+<@$=w>        $@$1<@$w>            or an alias
  425. R$+<@$->        $:$1<@$[$2$]>            ask nameserver
  426. R$+<@$w>        $@$1<@$w>            this host
  427. R$+<@$->        $@$1<@$2.$D>            if nameserver fails
  428.  
  429. # if not local, and not a "fake" domain, ask the nameserver
  430. R$+<@$+.$~I>        $@$1<@$[$2.$3$]>        user@host.domain
  431. R$+<@[$+]>        $@$1<@[$2]>            already ok
  432.  
  433. # output fake domains as user%fake@relay
  434.  
  435. R$+<@$+.BITNET>        $@$1%$2.BITNET<@$B>        user@host.BITNET
  436. R$+<@$+.CSNET>        $@$1%$2.CSNET<@$C>        user@host.CSNET
  437. R$+<@$+.UUCP>        $@$2!$1                user@host.UUCP
  438.  
  439.  
  440.  
  441. ############################################################
  442. ############################################################
  443. #####
  444. #####        Internet SMTP Mailer specification
  445. #####
  446. #####    Messages processed by this specification are assumed to leave
  447. #####    the local domain -- hence, they must be canonical according to
  448. #####    RFC822 etc.  This means that machines not registered with
  449. #####    the NIC must be hidden behind our Internet relay.
  450. #####
  451. ############################################################
  452. ############################################################
  453.  
  454. Mtcp,    P=[IPC], F=mDFMueXLC, S=14, R=24, A=IPC $h, E=\r\n
  455.  
  456. S14
  457.  
  458. # pass <route-addr>'s through
  459. R<@$+>$*        $@<@$[$1$]>$2            resolve <route-addr>
  460.  
  461. # map colons to dots everywhere
  462. R$*:$*            $1.$2                map colons to dots
  463.  
  464. # output local host in user@host.domain syntax
  465. R$-            $1<@$w>                user w/o host
  466. R$+<@$=w>        $:$1<@$w>            this host
  467. R$+<@$->        $:$1<@$[$2$]>            canonicalize into dom
  468. R$+<@$->        $:$1<@$2.$D>            if nameserver fails
  469. R$+<@$=N.$D>        $@$1<@$2.$D>            nic-reg hosts are ok
  470. R$+<@$*.$D>        $@$1%$2.$D<@$A>            else -> u%h@gateway
  471.  
  472. # if not local, and not a "fake" domain, ask the nameserver
  473. R$+<@$+.$~I>        $@$1<@$[$2.$3$]>        user@host.domain
  474. R$+<@[$+]>        $@$1<@[$2]>            already ok
  475.  
  476. # output internal ("fake") domains as "user%host@relay"
  477.  
  478. R$+<@$+.BITNET>        $@$1%$2.BITNET<@$B>        user@host.BITNET
  479. R$+<@$+.CSNET>        $@$1%$2.CSNET<@$C>        user@host.CSNET
  480. R$+<@$+.UUCP>        $@$2!$1<@$w>            user@host.UUCP
  481.  
  482.  
  483. S24
  484.  
  485. # put in <> kludge
  486. R$*<$*>$*        $1$2$3                defocus
  487. R$*            $:$>3$1                now canonical form
  488.  
  489. # pass <route-addr>'s through
  490. R<@$+>$*        $@<@$[$1$]>$2            resolve <route-addr>
  491.  
  492. # map colons to dots everywhere.....
  493. R$*:$*            $1.$2                map colons to dots
  494.  
  495. # output local host in user@host.domain syntax
  496. R$-            $1<@$w>                user w/o host
  497. R$+<@$=w>        $:$1<@$w>            this host
  498. R$+<@$->        $:$1<@$[$2$]>            canonicalize into dom
  499. R$+<@$->        $:$1<@$2.$D>            if nameserver fails
  500. R$+<@$=N.$D>        $@$1<@$2.$D>            nic-reg hosts are ok
  501. R$+<@$*.$D>        $@$1%$2.$D<@$A>            else -> u%h@gateway
  502.  
  503. # if not local, and not a "fake" domain, ask the nameserver
  504. R$+<@$+.$~I>        $@$1<@$[$2.$3$]>        user@host.domain
  505. R$+<@[$+]>        $@$1<@[$2]>            already ok
  506.  
  507. # Hide fake domains behind relays
  508.  
  509. R$+<@$+.BITNET>        $@$1%$2.BITNET<@$B>        user@host.BITNET
  510. R$+<@$+.CSNET>        $@$1%$2.CSNET<@$C>        user@host.CSNET
  511. R$+<@$+.UUCP>        $@$2!$1                user@host.UUCP
  512.  
  513.  
  514.  
  515. ############################################################
  516. ############################################################
  517. #####
  518. #####        UUCP Mailer specification
  519. #####
  520. ############################################################
  521. ############################################################
  522.  
  523.  
  524. Muucp,    P=/usr/bin/uux, F=DFMhuU, S=13, R=23, M=100000,
  525.     A=uux - -r -z -a$f -gC $h!rmail ($u)
  526.  
  527. S13
  528. R$+            $:$>5$1                convert to old style
  529. R$*<@$=w>$*        $1<@$w>$2            resolve abbreviations
  530. R$*<@$->$*        $1<@$2.$D>$3            resolve abbreviations
  531. R$+<@$+>        $2!$1                uucpize (no @'s in addr)
  532. R$w!$+            $1                strip local name
  533. R$+            $:$U!$1                stick on our host name
  534. R$=U!$-%$-        $:$1!$2@$3.$D            ucbvax!user@host.domain
  535.  
  536. S23
  537. R$+            $:$>5$1                convert to old style
  538. R$*<@$=w>$*        $1<@$w>$2            resolve abbreviations
  539. R$*<@$->$*        $1<@$2.$D>$3            resolve abbreviations
  540. R$+<@$w>        $U!$1                a!b@here -> here!a!b
  541. R$=U!$+            $2                here!a!b -> a!b
  542. # sanity ... should not happen.
  543. R$=U.$D!$+        $2                strip local name.domain
  544.  
  545.  
  546. ############################################################
  547. ############################################################
  548. #####
  549. #####        Provide Backward Compatibility
  550. #####
  551. ############################################################
  552. ############################################################
  553.  
  554. #####################################################
  555. #  General code to convert back to old style names  #
  556. #####################################################
  557. S5
  558.  
  559. R$+<@$w>        $1                strip host
  560. R$+<@$-.UUCP>        $2!$1                u@host.UUCP => host!u
  561.  
  562.  
  563.  
  564. #####################
  565. ###   Rule Zero   ###
  566. #####################
  567.  
  568.  
  569. ############################################################
  570. ############################################################
  571. #####
  572. #####        RULESET ZERO PREAMBLE
  573. #####
  574. #####    The beginning of ruleset zero is constant through all
  575. #####    configurations.
  576. #####
  577. ############################################################
  578. ############################################################
  579.  
  580. S0
  581.  
  582. # first make canonical
  583. R$*<$*>$*        $1$2$3                defocus
  584. R$+            $:$>3$1                make canonical
  585.  
  586. # handle special cases
  587. R$*<@[$+]>$*        $:$1<@$[[$2]$]>$3        numeric internet addr
  588. R$*<@[$+]>$*        $#tcp$@[$2]$:$1@[$2]$3        numeric internet spec
  589. R$+            $:$>6$1
  590. R$-<@$w>        $#local$:$1
  591. R@            $#error$:Invalid address    handle <> form
  592.  
  593. # canonicalize using the nameserver if not internal domain
  594. R$*<@$*.$~I>$*        $:$1<@$[$2.$3$]>$4
  595. R$*<@$->$*        $:$1<@$[$2$]>$3
  596. R$*<@$->$*        $:$1<@$2.$D>$3            if nameserver fails
  597.  
  598. # now delete the local info
  599. R<@$w>:$*        $@$>0$1                @here:... -> ...
  600. R$*<@$w>        $@$>0$1                ...@here -> ...
  601.  
  602. ##################################
  603. #  End of ruleset zero preamble  #
  604. ##################################
  605.  
  606.  
  607. ###############################################
  608. ###   Machine dependent part of Rule Zero   ###
  609. ###############################################
  610.  
  611.  
  612.  
  613. # resolve local UUCP connections
  614. R<@$=V.UUCP>:$+        $#uucp$@$1$:$2                @host.UUCP:...
  615. R$+<@$=V.UUCP>        $#uucp$@$2$:$1                user@host.UUCP
  616.  
  617.  
  618.  
  619.  
  620. # resolve fake top level domains by forwarding to other hosts
  621. R$*<@$+.BITNET>$*    $#tcp$@$B$:$1<@$2.BITNET>$3        user@host.BITNET
  622. R$*<@$+.CSNET>$*    $#tcp$@$C$:$1<@$2.CSNET>$3        user@host.CSNET
  623.  
  624.  
  625. # forward non-local UUCP traffic to our UUCP relay
  626. R$*<@$*.UUCP>$*        $#tcpld$@$R$:$1<@$2.UUCP>    uucp mail
  627.  
  628. # resolve SMTP traffic
  629. R$*<@$*.$D>$*        $#tcpld$@$2.$D$:$1<@$2.$D>$3    user@host.ourdomain
  630. R$*<@$+>$*        $#tcp$@$2$:$1<@$2>$3        user@host.ourdomain
  631.  
  632. # remaining names must be local
  633. R$+            $#local$:$1            everything else
  634.  
  635.