home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume10 / ida / part07 < prev    next >
Encoding:
Internet Message Format  |  1987-06-22  |  45.3 KB

  1. Path: uunet!rs
  2. From: rs@uunet.UU.NET (Rich Salz)
  3. Newsgroups: comp.sources.unix
  4. Subject: v10i018:  The IDA Sendmail Kit, Part07/07
  5. Message-ID: <437@uunet.UU.NET>
  6. Date: 24 Jun 87 00:57:07 GMT
  7. Organization: UUNET Communications Services, Arlington, VA
  8. Lines: 1574
  9. Approved: rs@uunet.uu.net
  10.  
  11. Mod.sources: Volume 10, Number 18
  12. Submitted by: Lennart Lovstrand <mcvax!ida.liu.se!lel>
  13. Archive-name: ida/Part07
  14.  
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then unpack
  18. # it by saving it into a file and typing "sh file".  To overwrite existing
  19. # files, type "sh file -c".  You can also feed this as standard input via
  20. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  21. # will see the following message at the end:
  22. #        "End of archive 7 (of 7)."
  23. # Contents:  ida/doc/part2.ms
  24. # Wrapped by lenlo@prefix on Wed Jun 10 15:39:58 1987
  25. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  26. if test -f ida/doc/part2.ms -a "${1}" != "-c" ; then 
  27.   echo shar: Will not over-write existing file \"ida/doc/part2.ms\"
  28. else
  29. echo shar: Extracting \"ida/doc/part2.ms\" \(43054 characters\)
  30. sed "s/^X//" >ida/doc/part2.ms <<'END_OF_ida/doc/part2.ms'
  31. X.NH
  32. XMANAGING GENERIC MAIL ADDRESSES
  33. X.LP
  34. XWhile sending mail to people by specifying a mailbox on a named computer
  35. Xmay fulfill the technical requirements of an electronic mail system, it
  36. Xmay not always be very convenient.  With people having accounts on many
  37. Xdifferent hosts and often moving between them, it is hard to keep track
  38. Xof where a person presently will read his or her mail.  For external
  39. Xsenders, remembering strange host names for lots of people is even
  40. Xworse.  Just knowing that Person A, working in the same group as Person
  41. XB, has a mailbox on Computer C does not mean that B also can be reached
  42. Xon that machine.  It may very well be that Computer C is A's personal
  43. Xworkstation with no other accounts than A's.
  44. X.PP
  45. XSimply setting up as many forwarding addresses as possible on all sorts
  46. Xof machines does not solve the problem.  First of all, there might be
  47. Xreasons for a user to want to actually receive mail on any of these
  48. Xmachines\*-e.g. because this may be the easiest way of copying files
  49. Xbetween remote machines.  Also, there is still no visible connection
  50. Xbetween the person and his group, which makes it hard to remember his
  51. Xaddress.
  52. X.PP
  53. XAnother solution would be to have a special machine for mail forwarding,
  54. Xpreferably with a name corresponding to the local organization.  Since
  55. Xall mail has to go through this node in order to reach its recipients,
  56. Xit may prove to be an expensive solution if this means that the extra
  57. Xload will restrain users from doing other useful work on the machine.
  58. XAlso, if this node goes down, no mail will be delivered until it comes
  59. Xup again.
  60. X.PP
  61. XOur proposed solution to the problem is to extend
  62. X.I sendmail 's
  63. Xnotion of aliases to include forwarding of non-local addresses as well
  64. Xas those specific to the local host.  This way, several hosts may share
  65. Xthe non-local part of a aliases table and any of them can do the
  66. Xforwarding.  Users may change their preferred mailbox and computers may
  67. Xbe renamed at any time with no change in the way their inbound addresses
  68. Xlook like.  As an option, users'
  69. X.DQ From:
  70. Xline addresses may be rewritten to correspond to the organizational
  71. Xaddress by using the same database.  For example, this author's mail
  72. Xaddress:
  73. X.QQ
  74. Xlel@ida.liu.se  (\fIaka\fP lel@liuida.\s-1UUCP\s+1)
  75. X.LP
  76. Xis implemented by an entry in the aliases files on set of Sun systems
  77. Xand a Gould.  All of them will forward messages for that address to my
  78. Xpreferred mailbox on a
  79. X.UC DEC system-20.
  80. XAny message sent from either the Suns, the Gould, or the
  81. X.UC DEC system-20
  82. Xwill have 
  83. X.DQ lel@ida.liu.se
  84. Xas the
  85. X.DQ From:
  86. Xline return address.  The envelope sender, however, will at all times
  87. Xpoint to the actual user and host that originated the message.
  88. X.PP
  89. XThis is implemented using an
  90. X.I aliases
  91. Xfile with extended syntax, called
  92. X.I xaliases .
  93. XEntries in this file are marked for either inbound or outbound aliasing.
  94. XInbound is the normal function, and may be used for non-local addresses
  95. Xas well as local ones.  Outbound aliasing is done on header sender lines
  96. Xby rewriting them to the LHS value in the
  97. X.I xaliases
  98. Xentry.  The syntax for entries in this file is:
  99. X.QQ
  100. Xalias, alias, \|.\|.\|.\|: prefix address, prefix address, \|.\|.\|.\|
  101. X.LP
  102. Xwhere the first
  103. X.I alias
  104. Xis the generic address that should be substituted for those in the
  105. Xheader sender lines matching the RHS outbound
  106. X.I addresses .
  107. XAll LHS
  108. X.I aliases
  109. Xare mailboxes that should be forwarded to the RHS
  110. X.I addresses
  111. Xmarked inbound.  The
  112. X.I prefix
  113. Xbefore each RHS
  114. X.I address
  115. Xmarks it as either inbound, outbound or both according to the following
  116. Xtable:
  117. X.QQ
  118. X.TS
  119. Xl l .
  120. X(\fIno mark\fP)    Inbound
  121. X<    Outbound
  122. X>    Inbound
  123. X<>    Both Inbound and Outbound
  124. X.TE
  125. X.LP
  126. XThe
  127. X.I xaliases
  128. Xfile is then parsed by the
  129. X.I xalparse (8)
  130. Xprogram, producing a normal
  131. X.I aliases (5)
  132. Xfile as output together with a
  133. X.I dbm (1)
  134. Xinput file, consisting of the outbound aliases.  An example would
  135. Xbe:
  136. X.QQ
  137. XFooey.Barbaz@dept, bar@dept, foo: <> fooey@besthost, < fobar@otherhost
  138. X.LP
  139. Xwhich means that mails to either
  140. X.DQ Fooey.Barbaz@dept,
  141. X.DQ bar@dept,
  142. Xor
  143. X.DQ foo@localhost
  144. Xwill be forwarded to
  145. X.DQ fooey@besthost
  146. Xand that mail from either
  147. X.DQ fooey@besthost
  148. Xor
  149. X.DQ fobar@otherhost
  150. Xwill have their header sender lines substituted for
  151. X.DQ Fooey.Barbaz@dept.
  152. XSee the supplied
  153. X.I xaliases
  154. Xfile for more examples.
  155. X.PP
  156. XAn
  157. X.I aliases
  158. Xfile with non-local aliases should be processed by running
  159. X.I sendmail
  160. Xwith a configuration file having the
  161. X.UC NEWALIASES
  162. Xidentifier defined.  This makes it parse all addresses as local and
  163. Xreturn them to the
  164. X.UC LOCAL
  165. Xmailer when building the dbm alias tables.  A delivering
  166. X.I sendmail
  167. Xwill then lookup all addresses in the
  168. X.I aliases
  169. Xfile and return any found to the
  170. X.UC LOCAL
  171. Xmailer [ruleset 26].  The normal aliasing mechanisms of
  172. X.I sendmail
  173. Xare then used to distribute the messages further.
  174. X.PP
  175. XThe substitution of
  176. X.DQ physical
  177. Xsenders with
  178. X.DQ generic
  179. Xaddresses, is as previously mentinioned done in the header/sender
  180. Xspecific ruleset 5 by lookup in the
  181. X.UC GENERICFROM
  182. Xdatabase.
  183. X.NH
  184. XSENDMAIL SOURCE MODIFICATIONS
  185. X.LP
  186. X.I Sendmail
  187. Xgives a lot of flexibility to the maintainer and developer of electronic
  188. Xmail.  Still, it lacks certain functionality for which it was determined
  189. Xthat our project's goals could not be fulfilled without.  Just [sic]
  190. Xdeveloping a new configuration file was not adequate, but changes to the
  191. Xsource code itself had to be done.  Still, we did this with the
  192. Xphilosophy that it is best to avoid source code modifications whenever
  193. Xit is possible to obtain the same results by merely changing parameters
  194. Xin the configuration file.
  195. X.LP
  196. XThe following features have been implemented in our current version of
  197. X.I sendmail (5.51++):
  198. X.NH 2
  199. XNameserver Default Argument
  200. X.LP
  201. XPreviously, there was no way of knowing whether a nameserver lookup
  202. Xwas successful or not, thus making that feature of limited value.
  203. XThis version will allow you to add a
  204. X.I default
  205. Xargument to the nameserver lookup function, which will be returned if
  206. Xthe match fails.  A typical usage for this is to determine if a host is
  207. Xaccessible using the
  208. X.UC TCP/IP
  209. Xprotocol family.
  210. XThe extended syntax is as follows:
  211. X.QQ
  212. X.B $[
  213. Xhostname
  214. X.B $:
  215. Xdefault
  216. X.B $]
  217. X.LP
  218. Xwhere the 
  219. X.B $: \fIdefault\fP
  220. Xpart is optional.
  221. X.NH 2
  222. XDirect Access to Dbm(3) Files
  223. X.LP
  224. XThe configuration file syntax has been expanded to include the
  225. Xdeclaration and usage of general
  226. X.I ndbm (3)
  227. Xdatabases.  The option
  228. X.SQ K
  229. X(for
  230. X.I "Keyed database" )
  231. Xhas been added.  It takes two arguments, a one character internal name
  232. Xfor the database and the corresponding
  233. X.I dbm (3)
  234. Xfile(s), as in:
  235. X.QQ
  236. XOKP/usr/lib/mail/pathtable
  237. X.LP
  238. Xwhich defines the internal database
  239. X.SQ P
  240. Xto be associated with the dbm files /usr/lib/mail/pathtable.dir and
  241. Xpathtable.pag (or pathtable.map and pathtable.dat if you are using
  242. XMaryland's
  243. X.I mdbm (3)
  244. Xpackage).
  245. X.PP
  246. XThe
  247. X.SQ P
  248. Xdatabase may now be used to lookup arbitrary strings in the RHS of
  249. Xrewriting rules.  The syntax is as follows:
  250. X.QQ
  251. X\fB$(\fPx key \fB$@\fP arg \fB$:\fP default \fB$)\fP
  252. X.LP
  253. Xwhere
  254. X.I x
  255. Xis corresponds to a previously declared database,
  256. X.I key
  257. Xis the string that should be searched for in the database.
  258. XThe
  259. X.I arg
  260. Xand
  261. X.I default
  262. Xarguments are optional.  The 
  263. X.I default
  264. Xstring is returned is if the
  265. X.I key
  266. Xcould not be found in the database.  If neither
  267. X.I default
  268. Xstring, nor a matching
  269. X.I key
  270. Xis to be found, the whole expression expands to the value of
  271. X.I key .
  272. XHowever, if a result is found, it is used as the format string of a
  273. X.I sprintf (3)
  274. Xexpression, with the
  275. X.I arg
  276. Xas extra argument.  Thus, database values with
  277. X.DQ %s
  278. Xstrings embedded in them can be useful when rewriting expressions.  This
  279. Xcould typically be used in cooperation with the
  280. X.I pathalias (1)
  281. Xprogram to expand routes without leaving
  282. X.I sendmail .
  283. X.PP
  284. XThe
  285. X.I aliases (5)
  286. Xfile is automatically available using the
  287. X.SQ @
  288. Xdatabase and should
  289. X.B not
  290. Xbe declared with a option
  291. X.SQ K
  292. Xstatement.
  293. X.NH 2
  294. XBatched
  295. X.UC SMTP
  296. XSupport
  297. X.LP
  298. X.I Sendmail
  299. Xalready speaks
  300. X.UC SMTP
  301. Xover interactive channels, but because it both will drop errors occurring
  302. Xwhen acting as server as well as hang indefinitely when talking to a
  303. Xnon-responding channel as client, this is not sufficient to process or
  304. Xproduce
  305. X.UC SMTP
  306. Xbatches.
  307. XStill, since the
  308. X.UC SMTP
  309. Xcode already is there,
  310. Xit was considered easier to add batching support internally in
  311. X.I sendmail
  312. Xthan to write new front-end programs.
  313. X.PP
  314. XThe new code defines a new
  315. X.UC MD_BSMTP
  316. Xmode, which is activated by the
  317. X.B \-bb
  318. Xoption or by making a link to 
  319. X.I sendmail
  320. Xnamed
  321. X.I bsmtp .
  322. XThe normal way of digesting
  323. X.UC SMTP
  324. Xbatches is to execute
  325. X.I bsmtp
  326. Xwith no arguments.
  327. X.PP
  328. XTo produce
  329. X.UC SMTP
  330. Xscripts, the 
  331. X.UC M_BSMTP
  332. X(\fBB\fP) mailer flag 
  333. Xhas been added.  It is used as in the following example:
  334. X.QQ -1
  335. XMUUCP-B, P=/usr/bin/uux, F=BDFMSXhmpu, S=0,  R=15/0,  A=uux \- \-z \-r 
  336. X$h!bsmtp
  337. X.LP
  338. XThis defines the
  339. X.UC UUCP-B
  340. Xmailer to send
  341. X.UC SMTP
  342. Xscripts on the standard input to the
  343. X.I uux (1)
  344. Xprogram.
  345. X.NH 2
  346. XSeparate Envelope/Header Rewriting Rulesets
  347. X.LP
  348. XEnvelope and header addresses does not always look the same.  For
  349. Xexample, it
  350. Xis often desirable to have envelope return addresses formed using
  351. X.UC RFC 822
  352. Xroute syntax, while this format more rarely is understood by users'
  353. Xfront-end mail programs.  Another case is when the envelope recipient
  354. Xaddress is expanded to a system route, while the header recipient
  355. Xshould be kept simple.
  356. X.PP
  357. XWith this package, the mail system administrator has the option of
  358. Xseparating rewriting control for envelope/recipient addresses.
  359. XNormally, all sender/recipient addresses are passed through rulesets 1
  360. Xand 2, but if the \fISplitRewriting\fP option
  361. X.SQ /
  362. Xis set, only envelope addresses are handled that way; header addresses
  363. Xare given to rulesets 5 and 6, which should be properly defined.
  364. X.PP
  365. XMailer dependant rewriting may also be controlled in an envelope/header
  366. Xspecific way.  This is accomplished by extending the syntax for the 
  367. X.SQ R
  368. Xand
  369. X.SQ S
  370. Xattributes of the mailer definition statement:
  371. X.QQ
  372. XR=re/rh, S=se/sh
  373. X.LP
  374. Xwith the envelope and header rulesets divided by a slash.  If no slash
  375. Xis found, it functions as before by using the same ruleset for both
  376. Xtypes of rewriting.  A zero or missing ruleset indicates that no
  377. Xrewriting should be done.  In the previous example of the
  378. X.I "Batched \s-1SMTP\s+1 Support" ,
  379. Xno mailer dependant sender rewriting is done, recipient envelope
  380. Xaddresses are rewritten using ruleset 15, but recipient header addresses
  381. Xare left untouched.
  382. X.NH 2
  383. XSeparate Local
  384. X.UC UUCP
  385. XHost Name
  386. X.LP
  387. XWith the extensive, structured world of domains on one side and the
  388. Xflatspaced, shortnamed
  389. X.UC UUCP
  390. Xworld on the other, it may be desirable for a node to have a
  391. X.UC UUCP
  392. Xnode name separate from its normal host name.  For this purpose, the
  393. X.B $k
  394. Xmacro has been introduced to hold the local node's specific
  395. X.UC UUCP
  396. Xhost name.  It defaults to the node's
  397. X.DQ normal
  398. Xhost name (as returned by
  399. X.I gethostname (3)),
  400. Xif not explicitly defined in the
  401. Xconfiguration file.  It is used when rewriting headers in the
  402. X.I "\s-1UUCP\s+1 Relativization Routines"
  403. Xas well as when producing
  404. X.UC UUCP
  405. X.DQ From_
  406. Xlines with the
  407. X.UC M_FROMPATH
  408. X(\fBp\fP) turned on.
  409. X.NH 2
  410. XReturn Path for
  411. X.UC UUCP
  412. XMailers
  413. X.LP
  414. XThe
  415. X.UC M_FROMPATH
  416. X(\fBp\fP) mailer flag is used by the
  417. X.UC SMTP
  418. Xroutines to add the local
  419. Xhost to the envelope sender in the
  420. X.UC "MAIL FROM:"
  421. Xcommand.  This is a useful option for producing trustworthy routes
  422. Xback to the sender for receipts and error messages.  This capability
  423. Xhas now been added the the code that produces
  424. X.UC UUCP
  425. X.DQ From_
  426. Xlines.  The sender's address is simply prefixed using the local host's
  427. X.UC UUCP
  428. Xname and an exclamation mark\*-the canonical way of constructing
  429. Xpaths in the
  430. X.UC UUCP
  431. Xworld.  (For mailers with the
  432. X.UC M_UGLYUUCP
  433. Xflag (\fBU\fP) set, the local host's name is added after the
  434. X.DQ "remote from"
  435. Xstring.)
  436. X.NH 2
  437. X.UC UUCP
  438. XHeader Address Relativization
  439. X.LP
  440. XA new
  441. X.UC M_RELATIVIZE
  442. X(\fBV\fP) mailer flag has been added, which relativizes header lines
  443. Xwith respect to the immediate recipient host.  This means that
  444. X.I paths
  445. Xthrough the remote host will have the remote node's name removed (local
  446. Xrecipients at the remote host are untouched) and that other addresses
  447. Xare rewritten to have paths through the local host.
  448. X.PP
  449. XSpecifically,
  450. X.DQ \fB$h\fP!\|.\|.\|.\|!user
  451. Xaddresses are stripped down to the
  452. X.DQ \|.\|.\|.\|!user
  453. Xpart,
  454. X.DQ \fB$h\fP!user
  455. Xare left untouched, and
  456. X.DQ "others"
  457. Xrewritten into
  458. X.DQ \fB$k\fP!others
  459. X(the initial value of \fB$w\fP is used if \fB$k\fP is undefined).
  460. X.NH 2
  461. XSupport for Multi-Token Class Matches
  462. X.LP
  463. XWhen
  464. X.I sendmail
  465. Xtried to match a LHS \fB$=\fPX class expression, it used to be the case
  466. Xthat it only looked for matches with one token.  If the period is a
  467. Xdelimiter and if
  468. X.DQ foo.\s-1EDU\s+1
  469. Xis a member of the
  470. X.SQ X
  471. Xclass, it would not find the string
  472. X.DQ foo.\s-1EDU\s+1
  473. Xin the class since it contained three tokens
  474. X.DQ foo "" (
  475. X.DQ .
  476. Xand
  477. X.UQ EDU ).
  478. XThis was considered such a great inconvenience that the expression
  479. Xmatching code was rewritten to allow multi-token class matches on the
  480. Xexpense of being somewhat slower.  With the above example, the current
  481. Xversion will first try to find a match for
  482. X.DQ foo
  483. Xthen
  484. X.DQ foo.
  485. Xthen
  486. X.DQ foo.\s-1EDU\s+1
  487. Xand so on, each time incorporating the next successive token of the
  488. Xexpression in the class match.
  489. X.NH 2
  490. XSupport for Embedded Subruleset Calls
  491. X.LP
  492. XBeing a
  493. X.UC LISP
  494. Xhacker of heart, the author couldn't refrain from making
  495. X.I sendmail
  496. Xhandle embedded ruleset calls.  The previous version had the very
  497. Xannoying restriction of only allowing one ruleset call per rule and only
  498. Xallowing the
  499. X.B $@
  500. Xand
  501. X.B $:
  502. Xmacros to appear on its left side.  The current version handles both
  503. Xembedded ruleset calls of the form
  504. X.DQ "$>4$>10$>6 $1@.$2"
  505. Xas well as arbitrarily positioned calls within the RHS expression
  506. X(although the latter has not been fully tested).
  507. X.NH 2
  508. XElaborate Matching Algorithm for Unknown Local Recipients
  509. X.LP
  510. XBased on the idea that it always is a bad idea to throw mail back
  511. Xwith a
  512. X.DQ "User Unknown"
  513. Xerror message if a human operator might be able to guess the actual
  514. Xrecipients identity, we have added a more elaborate search algorithm
  515. Xthat matches unknown recipients with the personal name field of the
  516. X/etc/passwd file.  The previous version of
  517. X.I sendmail
  518. Xoffered a similar functionality, but would only find strings that were
  519. Xexact copies of that field.  This version uses an algorithm that will
  520. Xreturn a number corresponding to the degree of similarity between the
  521. Xtwo strings.  Strings are considered match best if as many mutual
  522. Xsubstrings as possible are found in sequence.  Substrings are delimited
  523. Xby any non-alphabetic character and completely equal substrings are
  524. Xbetter matches than just prefixes.
  525. X.PP
  526. XThe best match of such a search through the /etc/passwd file is returned
  527. Xas the local recipient, provided that only one such match exists.  If no
  528. Xbest match is found (i.e., if more than one
  529. X.I passwd
  530. Xentry have the same highest matching degree), the search fails and the
  531. Xmail is returned with an error message.
  532. X.NH 2
  533. XSupport for Maryland's Mdbm Package
  534. X.LP
  535. XSites that do not yet have the new
  536. X.I ndbm (3)
  537. Xfunctions of
  538. X.UC BSD
  539. X4.3 may still use the
  540. X.I "Database Access Functions"
  541. Xdescribed above using the University of Maryland's public domain
  542. Xmulti-dbm routines, which are available from your nearest
  543. Xcomp.sources.unix archive.  Note that these use different extensions of
  544. Xtheir database files (.map and \&.dat instead of \&.dir and \&.pag) as
  545. Xwell as a different internal format than
  546. X.I dbm (3),
  547. Xso it is still recommended to use
  548. X.I ndbm (3)
  549. Xwhenever possible.
  550. X.NH 2
  551. XImproved Test Mode Output
  552. X.LP
  553. XIt is hard to remember what all these
  554. X.DQ ^X s
  555. Xand
  556. X.DQ ^V s
  557. Xstand for when debugging sendmail rewriting rules, using its address
  558. Xrewriting test mode.  The changes in this version will make macros print
  559. Xin their symbolic form, i.e.
  560. X.DQ "\fB$:\fP"
  561. Xfor
  562. X.DQ "^X,"
  563. Xetc.
  564. X.PP
  565. XIn addition, at least this
  566. X.I sendmail.cf
  567. Xdeveloper often wanted to send addresses directly into a specific
  568. Xruleset without having them automatically rewritten by ruleset 3.
  569. XThus, the initial call to ruleset 3 has been 
  570. X.B deleted
  571. Xin this version.  You will have to send your addresses manually through
  572. Xruleset 3 henceforth if you adopt this change.
  573. X.PP
  574. XFinally, the ruleset rewriting output often became too wide to be easily
  575. Xread due to the excess of quotation marks around the tokens.  These have
  576. Xnow been removed from the test output, leaving just a space between each
  577. Xtoken.  The author thinks this is much more convenient and hopes that
  578. Xyou agree.
  579. X.NH 2
  580. XBetter To: and Cc: Headers of Returned Messages
  581. X.LP
  582. XThe original code would produce multiple To: header lines in returned
  583. Xmessages if the message was sent to more than one recipient.  A typical
  584. Xreason for this to happen was if you used the PostMasterCopy option in
  585. Xyour
  586. X.I sendmail.cf
  587. Xfile.  This version will put the PostMasterCopy on a separate Cc: line
  588. Xand all others together in a comma-separated list on the To: line.
  589. X.NH 2
  590. XQueue Bug Fixed
  591. X.LP
  592. XA nasty little queue bug bit us hard several times last year.  It
  593. Xoccurred when, for whatever reason, the queue daemon ended up processing
  594. Xa locked queue entry as its last.  It immediately discovered that it was
  595. Xlocked and left it alone, but then exited and while doing general
  596. Xcleanup in
  597. X.I finis ,
  598. Xremoved the locked queue file as well.  That way, we frequently started
  599. Xending up with broken queue files and lost messages as a consequence.
  600. XThe fix is to explicitly set the current envelope's id to
  601. X.UC NULL
  602. Xbefore leaving the current queue pass, since it should not exist
  603. Xanyway.
  604. X.NH 2
  605. XShared Input
  606. X.UC SMTP
  607. XBug Tentatively Fixed
  608. X.LP
  609. XThe
  610. X.UC SMTP
  611. Xserver routines read delivery requests from stdin.  Each message is
  612. Xhandled by a different process by forking after the
  613. X.UC "MAIL FROM:"
  614. Xcommand is read.  The parent then sleeps while the child delivers the
  615. Xmessage and continues to process more
  616. X.UC SMTP
  617. Xcommands thereafter.  Now, both parent and child read from stdin and
  618. Xshare the same file descriptor.  However, they do not share the same
  619. X.I _iobuf
  620. Xthat represents the stream, so when the parent starts reading
  621. Xafter the child has died, it reads the very same input that the child
  622. Xhas processed.\**
  623. X.FS
  624. XUnless stdin is connected to a terminal.
  625. X.FE
  626. X.PP
  627. XThere are only two ways out of this.  Either, the parent process don't
  628. Xfork and delivers all messages itself, or they all read unbuffered.  The
  629. Xformer solution (or a variant thereof) is probably better, but the
  630. Xlatter was easier to implement, so that is what presently have been
  631. Xdone.  Since this causes unnecessary overhead as each character has to
  632. Xbe read with a system call, someone ought to make a better fix for this
  633. Xeventually.
  634. X.NH 2
  635. XOptional
  636. X.UC BSD
  637. X2.9 and 4.2 Compatibility Code
  638. X.LP
  639. XThe Kit includes a set of changes that optionally may be added to make
  640. Xthe 5.51 version of
  641. X.I sendmail
  642. Xrun under the Berkeley 4.2 or 2.9 release of
  643. X.UX .
  644. XThe changes neccesary to make it run under 4.2 are very minor and mostly
  645. Xdeal with adding undefined symbols.  The 2.9 changes are fewer than you
  646. Xwould expect, although it still is necessary to drastically trim down
  647. Xthe size of
  648. X.I sendmail 's
  649. Xbuffers if you intend to run it on a
  650. X.UC PDP -11.
  651. XThe 2.9 changes are all enclosed under the
  652. X.UC BSD 29
  653. Xdefine.
  654. X.PP
  655. X.NH 2
  656. XMiscellaneous Changes
  657. X.LP
  658. XIn addition to what already has been mentioned, a set of changes has
  659. Xbeen included that only add minor functionality or deal with less
  660. Ximportant bugs in the original source.  They are further described in
  661. X.I "Appendix A: List of Affected Files" .
  662. X.NH
  663. XCONCLUSION
  664. X.LP
  665. XThe development of the IDA Sendmail Enhancment Kit has been going on
  666. Xmore or less continuously for over two years.  Many were the interim
  667. Xversions and many were the nights spent testing the newly configured
  668. Xsystem.  Still, it is our feeling that the current version is complete
  669. Xenough to be considered generally useful, and it is our sincere hope
  670. Xthat you have found your time spent reading this document worthwhile.
  671. X.PP
  672. XThe problems with complex hybrid addresses are parts of the growing
  673. Xpains of a rapidly expanding world of interconnecting computer networks.
  674. XIt is this author's opinion that it ultimately will be necessary to
  675. Xagree on some common way of identifying message originators and
  676. Xrecipients.  In the mean time, we will have to face the world as it is
  677. Xand try to relieve users' pains as much as possible by letting the MTAs
  678. Xworry about routing and foreign addressing format issues.
  679. X.PP
  680. XAn excellent source for further reading is John Quarterman's and Hosiah
  681. XHoskins' article
  682. X.I "Notable Computer Networks"
  683. X\&
  684. X.[[
  685. X%A John Quarterman
  686. X%A Hosiah Hoskins
  687. X%T Notable Computer Networks
  688. X%J Communications of the ACM
  689. X%V 29
  690. X%N 10
  691. X%D 1986
  692. X.]],
  693. Xwhich gives a thorough overview of existing major computer networks and
  694. Xsupplied services around the world, with an emphasis on electronic mail.
  695. XTheir survey has been an invaluable source of information for this
  696. Xauthor among others.
  697. X.PP
  698. XElectronic mail is truly an interesting medium.  It combines the speed
  699. Xof the telephone with the asychronacity of the written letter.  In
  700. Xaddition, it gives possibilities for developing all sorts of interesting
  701. Xcomputerized communication services, such as electronic conferencing
  702. Xsystems and database or expert systems consultation services.  But above
  703. Xall, it communicates across all boundaries with no respect to operating
  704. Xsystems or computer brands.  It may not always be painless, but that can
  705. Xbe improved.  As long as we communicate, everything can be improved.
  706. X.QQ
  707. X.ad r
  708. X.I
  709. XThe Mail Connectivity Conspiracy Continues\|.\|.\|.\|\c
  710. X.R
  711. X\&
  712. X.[[
  713. X%A Mark Crispin
  714. X%T (Private Communication)
  715. X%D 1986
  716. X.]]
  717. X.br
  718. X.ad b
  719. X.AP A
  720. XLIST OF AFFECTED FILES
  721. X.LP
  722. XThis is description of all changes made to the
  723. X.I sendmail
  724. Xsource files.
  725. X.SH
  726. X.UL "Nameserver Default Argument"
  727. X.JB daemon.c
  728. XChanged to return
  729. X.UC TRUE
  730. Xif
  731. X.I gethostbyname (3)
  732. Xsucceeds and
  733. X.UC FALSE
  734. Xif not.
  735. X.JB parseaddr.c
  736. XChanged to interpret the
  737. X.B $:
  738. X.I default
  739. Xargument and to take care of the returned value of
  740. X.I maphostname .
  741. X.SH
  742. X.UL "Direct Access to Dbm(3) Files"
  743. X.JB alias.c
  744. XChanged to allow access using the
  745. X.SQ @
  746. Xdatabase.
  747. X.JB conf.c
  748. XChanged to initialize all databases to
  749. X.UC DB_NOTYETOPEN .
  750. X.JB daemon.c
  751. XThe lookup function
  752. X.I mapkey
  753. Xgoes here.  It takes four arguments:
  754. X.I db ,
  755. Xthe character denoting the database,
  756. X.I key ,
  757. Xthe lookup string and buffer in which a result is returned,
  758. X.I keysiz ,
  759. Xthe maximum size of the key buffer, and
  760. X.I arg ,
  761. Xwhich either should be a character string or
  762. X.UC NULL .
  763. XThe function returns
  764. X.UC TRUE
  765. Xif a match could be found and
  766. X.UC FALSE
  767. Xotherwise. The debugging flag 60 may be used to trace database lookups.
  768. X.JB main.c
  769. XAdded mappings of
  770. X.B $(
  771. Xand
  772. X.B $)
  773. Xto
  774. X.UC KEYBEGIN
  775. Xand
  776. X.UC KEYEND .
  777. X.JB parseaddr.c
  778. XAdded code to interpret \fB$(\fP\|.\|.\|.\|\fB$)\fP
  779. Xconstructs.
  780. X.JB readcf.c
  781. XAdded understanding of the
  782. X.SQ K
  783. Xoption.
  784. X.JB sendmail.h
  785. XAdded definitions for the macro characters 
  786. X.UC KEYBEGIN
  787. Xand 
  788. X.UC KEYEND .
  789. XAdded the declaration of the global database file table DbmTab.
  790. X.SH
  791. X.UL "Batched \s-1SMTP\s+1 Support"
  792. X.JB main.c
  793. XAdded the
  794. X.UC MD_BSMTP
  795. Xoption and the usage of
  796. X.I bsmtp
  797. Xas an alternate name of
  798. X.I sendmail
  799. Xthat automatically will turn on the
  800. X.UC MD_BSMTP
  801. Xmode.
  802. X.JB sendmail.h
  803. XAdded the
  804. X.UC MD_BSMTP
  805. Xdefine.
  806. X.JB srvrsmtp.c
  807. XAdded the
  808. X.I batched
  809. Xargument (boolean) to the
  810. X.I smtp 
  811. Xfunction and changes that will make it mail
  812. Xback errors is
  813. X.I batched
  814. Xis set.
  815. X.JB usersmtp.c
  816. XChanged the code to automatically generate internal
  817. X.UC SMTPGOODREPLY
  818. X(\fB250\fP)
  819. Xreply codes to all
  820. X.UC SMTP
  821. Xcommands if the
  822. X.UC M_BSMTP
  823. Xmailer flag is set.
  824. X.SH
  825. X.UL "Separate Envelope/Header Rewriting Rulesets"
  826. X.JB headers.c
  827. XChanged to propagate a flag telling if this is an envelope or header
  828. Xaddress for
  829. X.I remotename
  830. Xto rewrite.
  831. X.JB main.c
  832. XTrace statement changed to display mailers' envelope and header specific
  833. Xrulesets.
  834. X.JB parseaddr.c
  835. XAdded a boolean
  836. X.I headeraddress
  837. Xargument to
  838. X.I remotename
  839. Xand code to distinguish between envelope and header rewriting.
  840. X.JB queue.c
  841. XSet both envelope and header rewriting rulesets to -1 in
  842. X.I nullmailer .
  843. X.JB readcf.c
  844. XMade it parse the
  845. X.SQ /
  846. Xoption and the extended mailer ruleset specification syntax.
  847. X.JB sendmail.h
  848. XExtended the mailer declaration to include both envelope and header
  849. Xspecific rulesets.
  850. X.SH
  851. X.UL "Separate Local \s-1UUCP\s+1 Host Name"
  852. X.JB deliver.c
  853. XUsed when producing
  854. X.DQ From_
  855. Xlines.
  856. X.JB main.c
  857. XAdded the definition of
  858. X.B $k
  859. Xto the initial value of
  860. X.B $w .
  861. X.JB parseaddr.c
  862. XUsed when making addresses
  863. X.UC UUCP
  864. Xrelative.
  865. X.SH
  866. X.UL "Return Path for \s-1UUCP\s+1 Mailers"
  867. X.JB deliver.c
  868. XChanged to look for the mailer flag
  869. X.UC M_FROMPATH
  870. Xwhen producing the
  871. X.UC UUCP
  872. X.DQ From_
  873. Xlines.
  874. X.SH
  875. X.UL "\s-1UUCP\s+1 Header Address Relativization"
  876. X.JB parseaddr.c
  877. XChanged to
  878. X.I uurelativize
  879. Xaddresses after ruleset 4 has been applied if the
  880. X.U M_RELATIVIZE
  881. Xmailer flag is set.  The actual
  882. X.I uurelativize
  883. Xis here too.
  884. X.JB sendmail.h
  885. XDefined the
  886. X.UC M_RELATIVIZE
  887. Xflag to be 'V'.
  888. X.SH
  889. X.UL "Support for Multi-Token Class Matches"
  890. X.JB parseaddr.c
  891. XCrude code added to enable multi-token class matches.
  892. X.SH
  893. X.UL "Support for Embedded Subruleset Calls"
  894. X.JB parseaddr.c
  895. XWrote a separate
  896. X.I callsubr
  897. Xfunction to take care of subruleset calls.
  898. X.SH
  899. X.UL "Elaborate Matching Algorithm for Unknown Local Recipients"
  900. X.JB recipient.c
  901. XAdded the 
  902. X.I partialstring
  903. Xmatching routine and code that calls it for unknown local recipients.
  904. X.SH
  905. X.UL "Support for Maryland's mdbm Package"
  906. X.JB alias.c
  907. XChanged to be independent on which package is being used.
  908. X.JB conf.h
  909. XAdded the
  910. X.UC MDBM
  911. Xdefine, to be used if the mdbm routines should be used instead of the
  912. Xndbm. 
  913. XNote that
  914. X.UC NDBM
  915. Xstill should be defined.
  916. X.JB mdbm_compat.h
  917. XA mdbm compatibility file, used to define macros which map ndbm
  918. Xfunctions to their mdbm equivalents.
  919. X.JB sendmail.h
  920. XAdded mdbm compatibility macros and generalized the dbm code in general.
  921. X.SH
  922. X.UL "Improved Test Mode Output"
  923. X.JB main.c
  924. XChanged it to export the macros' symbolic names.
  925. X.JB parseaddr.c
  926. XChanged it to call
  927. X.I printcav
  928. Xinstead of
  929. X.I printav
  930. Xwhen tracing the rewriting rules.
  931. X.JB sendmail.h
  932. XIncluded main.c's macro table among the global variables.
  933. X.JB util.h
  934. XChanged it to print macros using their symbolic names.  Added the
  935. X.I printcav
  936. Xfunction, which prints argument vectors without enclosing quotation
  937. Xmarks.
  938. X.SH
  939. X.UL "Better To: and Cc: Headers of Returned Messages"
  940. X.JB savemail.c
  941. XChanged the code to produce the above result.
  942. X.SH
  943. X.UL "Queue Bug Fixed"
  944. X.JB queue.c
  945. XSet the current envelope's id to
  946. X.UC NULL
  947. Xbefore exiting.
  948. X.SH
  949. X.UL "Shared Input \s-1SMTP\s+1 Bug Tentatively Fixed"
  950. X.JB main.c
  951. XTurned off buffering from standard input before the call to
  952. X.I smtp .
  953. X.SH
  954. X.UL "Optional \s-1BSD\s+1\&4.2 Compatibility Code"
  955. X.JB conf.h
  956. XAdded the definition of
  957. X.I sigmask
  958. Xif left undefined by <signal.h>.
  959. XAdded mock definitions for
  960. X.UC LOG_MAIL ,
  961. X.UC TRY_AGAIN ,
  962. Xand
  963. X.I h_errno .
  964. X.SH
  965. X.UL "Optional \s-1BSD\s+1\&2.9 Compatibility Code"
  966. X.JB conf.h
  967. XAdded the definition of 
  968. X.UC EPROCLIM
  969. X(not really applicable under
  970. X.UC BSD
  971. X2.9) and the inclusion of ../lib/libndir/dir.h.
  972. X.JB conf.c
  973. XChanged to include <a.out.h> instead of <nlist.h>, and to search /unix
  974. Xinstead of /vmunix for kernel symbols.
  975. X.JB daemon.c
  976. XChanged to use
  977. X.I gethostname (3)
  978. Xinstead of <whoami.h> to find out its local host name.
  979. X.JB deliver.h
  980. XChanged not to include <netdb.h>
  981. X.JB err.c
  982. XChanged not to include <netdb.h>
  983. X.SH
  984. X.UL "Miscellaneous Changes"
  985. X.JB deliver.c
  986. XAn array of verbose mailer error messages has been added together with
  987. Xcode that prints out the error in text instead of just giving the code
  988. Xin numeric form.  [Incorporated from
  989. X.UC USENET ]
  990. X.JB main.c
  991. XA new
  992. X.B \-Z
  993. Xcommand line option has been added, which defines the name of the frozen
  994. Xconfiguration file in analogy with
  995. X.B \-C .
  996. X.JB parseaddr.c
  997. XHas been changed to compare aliased users with
  998. X.I sameword
  999. Xinstead of
  1000. X.I strcmp
  1001. Xto make up for differencing case.
  1002. X.JB sendmail.h
  1003. XThe reference to <sys/syslog.h> has been replaced by <syslog.h> unless
  1004. Xsendmail is compiling on a
  1005. X.UC VAX .
  1006. XI'm not sure that this is correct, but neither our Suns, nor the Gould
  1007. Xhad syslog.h in that directory.  Also,
  1008. X.I s_host ,
  1009. Xhas been forced undefined if compiling on a Sun.  This is because it is
  1010. Xdefined in one of the Sun's include files as well.
  1011. X.JB srvrsmtp.c
  1012. XThe
  1013. X.B $s
  1014. Xmacro was set to be the name of the remote host, but then cleared before
  1015. Xit could be used.  It is now being set
  1016. X.I after
  1017. Xthe relevant cleanup routines have been run.  An unnecessary additional
  1018. Xrewriting of envelope recipient addresses in the
  1019. X.UC SMTP
  1020. Xroutines has been removed.  It could even be harmful if it was to be
  1021. Xleft alone.
  1022. X.JB ../doc/op.me
  1023. XAdded text to describe our new, wonderful features.
  1024. X.AP C
  1025. XCUSTOMIZATION PARAMETERS
  1026. X.LP
  1027. XThe following is a list of all
  1028. X.I m4
  1029. Xidentifiers used in the configuration file.
  1030. XAll of them are optional.
  1031. X.JS ALIASES
  1032. XName of the aliases file, defaults to sendmail's default.
  1033. X.JS BSD29
  1034. X.br
  1035. XActivates various hacks for usage on
  1036. X.UC BSD
  1037. X2.9 systems.
  1038. X.JS BANGIMPLIESUUCP
  1039. X.br
  1040. XIf defined, will inhibit domaintable lookups for unqualified nodes first
  1041. Xin
  1042. X.SQ ! -paths
  1043. Xand always interpreting them to reside in the
  1044. X.UC UUCP
  1045. Xpseudo-domain.
  1046. X.JS DECNETNODES
  1047. XA file containing
  1048. X.UC DEC net
  1049. Xhost names.  Used in combination with
  1050. X.UC DECNETXTABLE
  1051. Xto determine delivery through the
  1052. X.UC DEC net
  1053. Xmailer and when to expand flatspaced
  1054. X.UC DEC net
  1055. Xhost names into domains.
  1056. X.JS DECNETXTABLE
  1057. XThe
  1058. X.UC DEC net
  1059. Xtranslation table.  Returns a node's
  1060. X.UC DEC net
  1061. Xhost name if given its domain name. 
  1062. X.I Dbm "" (
  1063. Xfile, see ruleset 24 for more info).
  1064. X.JS DEFAULT_HOST
  1065. XExplicit host name, replaces automatic definition of
  1066. X.B $w .
  1067. X[Not normally used]
  1068. X.JS DEFAULT_DOMAIN
  1069. XThe string that (+ 
  1070. X.SQ "." )
  1071. Xwill be attached to
  1072. X.B $w
  1073. Xto form
  1074. X.B $j ,
  1075. Xthis node's official domain name.  Should only be left undefined when
  1076. Xyour hostname (\fB$w\fP) already contains its domain.
  1077. X.JS DOMAINTABLE
  1078. X.I Dbm
  1079. Xdatabase used for hostname canonicalization, i.e.  to find the official
  1080. Xdomain name for local or otherwise unqualified hosts.
  1081. X.JS GENERICFROM
  1082. XA database mapping actual user names to generic user names.  Used
  1083. Xinstead of
  1084. X.UC HIDDENNET
  1085. Xin a heterogeneous environment.
  1086. X.JS HIDDENNET
  1087. XPoints to a file containing a list of host names, one per line.  Mail
  1088. Xfrom users on any of these hosts will have their host names substituted
  1089. Xfor our host,
  1090. X.B $w .
  1091. X.JS LIBDIR    
  1092. X.br
  1093. XThe directory that will hold most data files, including
  1094. Xsendmail.{hf,st}; defaults to /usr/lib/mail.
  1095. X.JS PATHTABLE
  1096. XThe heart & soul of this sendmail configuration\*-the pathalias routing
  1097. Xtable in
  1098. X.I dbm (3)
  1099. Xformat, as produced by the
  1100. X.I pathalias (1)
  1101. Xprogram.  If you want some kind of routing capabilities, you either
  1102. Xdefine this or rely on
  1103. X.UC RELAYHOST/RELAYMAILER .
  1104. X.JS MAILERTABLE
  1105. XA
  1106. X.I dbm
  1107. Xtable mapping node names to
  1108. X.DQ "mailer:host"
  1109. Xpairs.  It is used for special cases when the resolving heuristics of
  1110. Xruleset 26 aren't enough.
  1111. X.JS NEWALIASES
  1112. XIf defined, will make ruleset 26 return all addresses as local.  This
  1113. Xshould be used by the newaliases program only when parsing the aliases
  1114. Xfile if you want to handle non-local aliases as well as local.
  1115. X.JS PSEUDONYMS
  1116. XAdditional names that we are known under (in addition to the nicknames
  1117. Xreturned by
  1118. X.I gethostbyname (3)).
  1119. X.JS "RELAY_HOST & RELAY_MAILER"
  1120. XName of the host and mailer to ship unknown recipient addresses to.  Not
  1121. Xnecessary to define if you have a complete
  1122. X.UC PATHTABLE .
  1123. X.JS RSH_SERVER
  1124. XIf defined, do local deliveries by 
  1125. X.I rsh (1)'ing
  1126. X/bin/mail on the 
  1127. X.UC RSH_SERVER
  1128. Xhost.
  1129. X.JS SPOOLDIR
  1130. XDirectory for sendmail queue files; defaults to /usr/spool/mqueue.
  1131. X.JS UUCPNAME
  1132. XThis node's
  1133. X.UC UUCP
  1134. Xhost name, if different from
  1135. X.B $w .
  1136. X.JS UUCPNODES
  1137. XA file containing names of directly connectable 
  1138. X.UC UUCP
  1139. Xnodes, normally /usr/lib/uucp/L.sys.
  1140. X.JS UUCPPRECEDENCE
  1141. XIf defined, will change the interpretation of mixed
  1142. X.SQ ! -
  1143. X/
  1144. X.SQ @ -addresses
  1145. Xto use heuristics instead of always preferring
  1146. X.UC RFC 822
  1147. Xstyle.\**
  1148. X.FS
  1149. XNot fully tested.
  1150. X.FE
  1151. X.JS UUCPRELAYS
  1152. XName of file containing names of known 
  1153. X.UC UUCP ) (
  1154. Xrelays.  Header addresses containing paths through any of these will be
  1155. Xshortened by having the path to the relay removed.  (It is assumed that
  1156. Xpaths to each of these are known to everybody)
  1157. X.JS UUCPXTABLE
  1158. XA table mapping domain node names to 
  1159. X.UC UUCP
  1160. Xnode names. Used in envelope addresses sent using  
  1161. X.UC UUCP /rmail.
  1162. X.AP D
  1163. XLIST OF DOMAINS
  1164. X.LP
  1165. XThe following is a list of all top-level domains officially registered
  1166. Xwith the SRI Network Information Center as of May 13, 1987:
  1167. X.QQ
  1168. X.SH
  1169. XOrganizational Domains
  1170. X.LP
  1171. X.TS
  1172. Xbox;
  1173. XlI lI
  1174. Xlp-1 l .
  1175. XDomain    Organizations
  1176. X_
  1177. XCOM    Commercial
  1178. XEDU    Educational
  1179. XGOV    Government
  1180. XMIL    Military
  1181. XNET    Network Administrations
  1182. XORG    Other Organizations
  1183. X.TE
  1184. X.SH
  1185. XNational Domains
  1186. X.LP
  1187. X.TS
  1188. Xbox;
  1189. XlI lI
  1190. Xlp-1 l .
  1191. XDomain    Country
  1192. X_
  1193. XAU    Australia
  1194. XDE    Germany
  1195. XFI    Finland
  1196. XFR    France
  1197. XIL    Israel
  1198. XJP    Japan
  1199. XKR    Korea
  1200. XNO    Norway
  1201. XNL    The Netherlands
  1202. XNZ    New Zealand
  1203. XSE    Sweden
  1204. XUK    The United Kingdom
  1205. XUS    The United States of America
  1206. X.TE
  1207. X.SH
  1208. XNetwork Domains
  1209. X.LP
  1210. X.TS
  1211. Xbox;
  1212. XlI lI
  1213. Xlp-1 l .
  1214. XDomain    Network
  1215. X_
  1216. XARPA    The Advanced Research Projects Agency Network
  1217. X.TE
  1218. Xwhich is the only officially registered network domain, but others more
  1219. Xor less widely recognized are:
  1220. X.TS
  1221. Xbox;
  1222. Xlp-1 l .
  1223. XBITNET    IBM Network, includes \s-1NETNORTH\s+1 and \s-1EARN\s+1
  1224. XCSNET    The Computer Science Network
  1225. XJUNET    The Japanese University Network
  1226. XMAILNET    A now deceased(?) networking project centered around \s-1MIT-MU
  1227. LTICS\s+1
  1228. XOZ    The Australian Computer Science Network (ACSnet)
  1229. XSUNET    The Swedish University Network
  1230. XUNINETT    The Norwegian University Network
  1231. XUUCP    The \s-1UNIX\s+1-to-\s-1UNIX\s+1-Copy Network
  1232. X.TE
  1233. X.AP F
  1234. XLIST OF DATA FILES
  1235. X.LP
  1236. XThe following is a list of all data files used by the
  1237. X.I sendmail
  1238. Xprogram in conjunction with the supplied configuration file.  Not all of
  1239. Xthem are used in the sample setup.  Not all of them will probably be
  1240. Xneeded by your setup either.
  1241. X.JB aliases
  1242. X\&.\|.\|.is better described in
  1243. X.I aliases (5).
  1244. X.JB domaintable
  1245. X\&.\|.\|.is domain name table used when finding a node's canonical name.
  1246. XIt is written in
  1247. X.I dbm (1)
  1248. X.B parse
  1249. Xformat.
  1250. X.JB generics
  1251. X\&.\|.\|.is automatically produced by the
  1252. X.I xalparse (8)
  1253. Xprogram from the xaliases file.  It contains entries mapping sending
  1254. Xuser's real addresses to generic ones.
  1255. X.JB hiddennet
  1256. X\&.\|.\|.may contain a list of node (domain) names that should be hidden
  1257. Xby the local host's name on header sender addresses.
  1258. X.JB mailertable
  1259. X\&.\|.\|.defines the mapping from node (domain) names to
  1260. X.I "Special Mailers" .
  1261. XIt is written in
  1262. X.I dbm (1)
  1263. X.B parse
  1264. Xformat, with each value being a
  1265. X.DQ mailer:host
  1266. Xtuple.
  1267. X.JB newaliases.cf
  1268. X\&.\|.\|.is a configuration file produced by having defined the
  1269. X.UC NEWALIASES
  1270. Xidentifier in the master file.  This should only be used when producing
  1271. Xa new
  1272. X.I aliases (5)
  1273. Xdbm table, because it returns all addresses to the
  1274. X.UC LOCAL
  1275. Xmailer in order to accept non-local aliases.
  1276. X.JB pathtable
  1277. X\&.\|.\|.is the basis for all explicit routing decisions.  It is written
  1278. Xin
  1279. X.I pathalias (1)
  1280. Xformat and describes how systems connect to each other and where to
  1281. Xforward according to (parent) domains.
  1282. X.JB xaliases
  1283. X\&.\|.\|.is the extended aliases file that is used to produce the
  1284. X.I aliases (5)
  1285. Xfile together with the
  1286. X.I generics
  1287. Xfile.  It is further described in the section about
  1288. X.I "Managing Generic Mail Addresses" .
  1289. X.JB \\\\\\\\k:\fInetwork\fB/nodes\\\\\\\\h'|\\\\\\\\n:u'\\\\\\\\v'+1'\fInetwor
  1290. k\fB/xtable\fR\\\\\\\\v'-1'
  1291. X.\".JB \fInetwork\fB/nodes\fR
  1292. X.\"\&.\|.\|.and.\|.\|.
  1293. X.\".br
  1294. X.\".ti -\n(I\n(IRu
  1295. X.\".B \fInetwork\fB/xtable\fR\t\c
  1296. X\&.\|.\|.are used when translating node names from one network to
  1297. Xanother.  The
  1298. X.B nodes
  1299. Xfile contain all internally known node names for the network and
  1300. X.B xtable
  1301. Xis a translation table that maps official domain names to the network's
  1302. Xinternal node names.
  1303. X.JB uucp/relays
  1304. X\&.\|.\|.contains node names of well-known
  1305. X.UC UUCP
  1306. Xrelays.  It is used when compressing header paths in the header
  1307. Xrewriting rulesets.
  1308. X.AP I
  1309. XINSTALLATION INSTRUCTIONS
  1310. X.LP
  1311. XThese instructions will tell you step-by-step how to install and bring
  1312. Xthe Kit's
  1313. X.I sendmail
  1314. Xsystem up.  The source code modifications are given as context
  1315. X.I diff (1)'s,
  1316. Xbased on the
  1317. X.UC BSD
  1318. X4.3 release of
  1319. X.I sendmail
  1320. X(version 5.11), ready to be installed using Larry Wall's eminent
  1321. X.I patch
  1322. Xprogram.  You will also need Maryland's
  1323. X.I mdbm
  1324. Xlibrary if you intend to use this instead of
  1325. X.I ndbm .
  1326. XFinally, in order to automatically produce routing tables, you will need
  1327. XPeter Honeyman's
  1328. X.I pathalias
  1329. Xprogram.  All of these are available from your nearest
  1330. X.UC USENET
  1331. X.B comp.sources.unix
  1332. Xarchive.
  1333. X.PP
  1334. XNow, assuming that you have read this far and made up your mind to try
  1335. Xit all for yourself, do the following:
  1336. X.II 1
  1337. XUnpack the Kit in the
  1338. X.B sendmail
  1339. Xdirectory (preferably).  This should give you a new
  1340. X.B ida
  1341. Xsubdirectory with all the Kit's files.
  1342. X.II
  1343. XGoto
  1344. X.B sendmail/ida
  1345. Xand check that you agree with the Makefile's definitions.  If you change
  1346. Xanything, do a
  1347. X.DQ "make configure"
  1348. Xto propagate those changes to the subdirectories' Makefiles.
  1349. X.II
  1350. XGoto
  1351. X.B sendmail/ida/doc .
  1352. XDoing
  1353. X.DQ "make doc"
  1354. Xwill print out this paper but since you already are reading it, this
  1355. Xmight be unneccesary.  Anyway, do
  1356. X.DQ "make man"
  1357. Xto print the manual pages.  Do
  1358. X.DQ "make install"
  1359. Xto install them in your manuals directory.
  1360. X.II
  1361. XGoto
  1362. X.B sendmail/ida/patches
  1363. Xand do
  1364. X.DQ "make backup."
  1365. XThis will create a backup copy of
  1366. X.B sendmail/src/*.[hc]
  1367. Xand
  1368. X.B sendmail/doc/op.me
  1369. Xin
  1370. X.B Backup.tar .
  1371. XYou can restore them if necessary by performing
  1372. X.DQ "make restore,"
  1373. Xstill in the patches directory.
  1374. X.II
  1375. XDo one of
  1376. X.DQ "make bsd43,"
  1377. X.DQ "make bsd42,"
  1378. Xor
  1379. X.DQ "make bsd29"
  1380. Xto patch the
  1381. X.I sendmail
  1382. Xsource to the required compatibility level.  You will need
  1383. X.I patch (1),
  1384. Xfor this or else edit the files by hand.  Look out for rejected patches.
  1385. X.II
  1386. XGoto
  1387. X.B sendmail/src
  1388. Xand recompile
  1389. X.I sendmail .
  1390. XSee that it still works.  Your old configuration file
  1391. X.I should
  1392. Xstill work unless you depend on some obscure side effects.  Note that a
  1393. X.UC BSD
  1394. X4.2 configuration file might not work with
  1395. X.I sendmail
  1396. X5.11.
  1397. X.II
  1398. XGoto
  1399. X.B sendmail/ida/aux
  1400. Xand do
  1401. X.DQ "make"
  1402. Xto compile the auxiliary programs.  Try them out, guided with the newly
  1403. Xprinted manual pages.
  1404. X.II
  1405. XDo
  1406. X.DQ "make install"
  1407. Xto install the programs in
  1408. X.UC BINDIR
  1409. X(\fB/usr/local/bin\fP by default; but another choice would be
  1410. X.B /usr/lib/mail
  1411. Xif you only intend to use them with this kit).  It's also about time to
  1412. X(manually) do a (symbolic) link from
  1413. X.B /usr/ucb/bsmtp
  1414. Xto
  1415. X.B /usr/lib/sendmail
  1416. Xif you intend to receive batched
  1417. X.UC SMTP
  1418. Xmail.
  1419. X.II
  1420. XGoto
  1421. X.B sendmail/ida/cf
  1422. Xand inspect the supplied
  1423. X.I m4 (1)
  1424. Xconfiguration definitions.  Send
  1425. X.B Sendmail.mc
  1426. Xto your line printer and study it.  Do
  1427. X.DQ "make"
  1428. Xto see how the sample configurations look expanded.
  1429. X.II
  1430. XGoto
  1431. X.B sendmail/ida/lib
  1432. Xand inspect the supplied sample data files.  Try applying the
  1433. X.I xalparse
  1434. Xprogram on the
  1435. X.I xaliases
  1436. Xfile if you feel like it.
  1437. X.II
  1438. XDetermine your site's routing capabilities and create your corresponding
  1439. Xdata files in
  1440. X.UC LIBDIR .
  1441. XGo back to
  1442. X.B sendmail/ida/cf
  1443. Xand create your own
  1444. X.I m4 (1)
  1445. Xconfiguration file using the samples as templates.  Produce an actual,
  1446. Xpersonal
  1447. X.B sendmail.cf
  1448. Xfile.
  1449. X.II
  1450. XTry out your new
  1451. X.I sendmail
  1452. Xsystem.
  1453. X.br
  1454. XGood Luck!
  1455. X.FS [\\n+(II]
  1456. XMail problems or comments to lel@ida.liu.se.
  1457. X.FE
  1458. X.AP P
  1459. XLIST OF AUXILIARY PROGRAMS
  1460. X.LP
  1461. XAll programs but
  1462. X.I scanf
  1463. Xare further described by their manual pages.  What you find here is only
  1464. Xa short overview of their functionality.
  1465. X.JB dbm
  1466. XA general
  1467. X.I dbm (3)
  1468. Xdatabase management tool.  Clears, loads, and dumps complete databases.
  1469. XStores, fetches, and deletes individual keys.  Also includes a special
  1470. Xparser that produces key/value pairs from a compressed but easily
  1471. Xreadable format.
  1472. X.JB mkdomext
  1473. XMake the extended set of domain names.  This program acts as a filter
  1474. Xthat, when supplied with fully qualified domain names on stdin, will
  1475. Xgenerate all legal abbreviations of these on stdout with respect to the
  1476. Xparent domains given on the command line.  It is used to be able to
  1477. Xrecognize unqualified local subdomains and sibling domains from one or
  1478. Xmore positions in the domain hierarchy.  See
  1479. X.UC RFC 822,
  1480. Xsection 6.2.2 for a rationale.
  1481. X.JB rmail
  1482. XYet another implementation of the remote mail receiving program.  This
  1483. Xtime with raw header line logging together with
  1484. X.I dbm
  1485. Xlookup of remote node names and a more liberal parsing of
  1486. X.DQ "From_"
  1487. Xlines.  Needs to run
  1488. X.DQ "seteuid root"
  1489. Xto be able to use the macro setting options of
  1490. X.I sendmail .
  1491. XNo new manual supplied, your old one will have to do.  Actually, your
  1492. Xold rmail itself will probably do too.
  1493. X.JB scanf
  1494. XQuick hack to scan and extract substrings from input lines using the
  1495. X.I scanf (3)
  1496. Xfunction.  No manual page, the source code is self documenting.
  1497. X.JB xalparse
  1498. XA program that parses an extended aliases file and produceces an ordinary
  1499. Xaliases file together with a file with generic address translations.
  1500. XIt's all described in the manual page and in the section about
  1501. X.I "Managing Generic Mail Addresses" .
  1502. XQuod vide.
  1503. X.AP R
  1504. XREFERENCES
  1505. X.LP
  1506. X.[
  1507. X$LIST$
  1508. X.]
  1509. X.AP T
  1510. XTABLE OF CONTENTS
  1511. X.SH
  1512. XSections
  1513. X.LP
  1514. X.X1 "\(sc 1" "INTRODUCTION"
  1515. X.X1 "\(sc 2" "NAMES, ADDRESSES, AND ROUTES"
  1516. X.X1 "\(sc 3" "MAIL ADDRESS FORMATS"
  1517. X.X2 "\(sc 3.1" "Relative Addresses"
  1518. X.X2 "\(sc 3.2" "Absolute Addresses"
  1519. X.X2 "\(sc 3.3" "Attribute Addresses"
  1520. X.X2 "\(sc 3.4" "Hybrid Addresses"
  1521. X.X1 "\(sc 4" "A SHORT ANATOMY OF THE ELECTRONIC MESSAGE"
  1522. X.X2 "\(sc 4.1" "The Envelope"
  1523. X.X2 "\(sc 4.2" "The Headers"
  1524. X.X1 "\(sc 5" "ADDRESS REWRITING STRATEGIES"
  1525. X.X2 "\(sc 5.1" "Sneak-In Preview"
  1526. X.X2 "\(sc 5.2" "The Configuration File"
  1527. X.X2 "\(sc 5.3" "Canonicalizing the Address"
  1528. X.X2 "\(sc 5.4" "Finding Route and Mailer"
  1529. X.X2 "\(sc 5.5" "Externalizing the Address"
  1530. X.X1 "\(sc 6" "MANAGING GENERIC MAIL ADDRESSES"
  1531. X.X1 "\(sc 7" "SENDMAIL SOURCE MODIFICATIONS"
  1532. X.X2 "\(sc 7.1" "Nameserver Default Argument"
  1533. X.X2 "\(sc 7.2" "Direct Access to Dbm(3) Files"
  1534. X.X2 "\(sc 7.3" "Batched \s-1SMTP\s+1 Support"
  1535. X.X2 "\(sc 7.4" "Separate Envelope/Header Rewriting Rulesets"
  1536. X.X2 "\(sc 7.5" "Separate Local \s-1UUCP\s+1 Host Name"
  1537. X.X2 "\(sc 7.6" "Return Path for \s-1UUCP\s+1 Mailers"
  1538. X.X2 "\(sc 7.7" "\s-1UUCP\s+1 Header Address Relativization"
  1539. X.X2 "\(sc 7.8" "Support for Multi-Token Matches"
  1540. X.X2 "\(sc 7.9" "Support for Embedded Subruleset Calls"
  1541. X.X2 "\(sc 7.10" "Elaborate Matching Algorithm for Unknown Local Recipients"
  1542. X.X2 "\(sc 7.11" "Support for Maryland's Mdbm Package"
  1543. X.X2 "\(sc 7.12" "Improved Test Mode Output"
  1544. X.X2 "\(sc 7.13" "Better To: and Cc: Headers of Returned Messages"
  1545. X.X2 "\(sc 7.14" "Queue Bug Fixed"
  1546. X.X2 "\(sc 7.15" "Shared Input \s-1SMTP\s+1 Bug Tentatively Fixed"
  1547. X.X2 "\(sc 7.16" "Optional \s-1BSD\s+1 2.9 and 4.2 Compatibility Code"
  1548. X.X2 "\(sc 7.17" "Miscellaneous Changes"
  1549. X.X1 "\(sc 8" "CONCLUSION"
  1550. X.SH
  1551. XAppendices
  1552. X.LP
  1553. X.X1 "Appendix A" "LIST OF AFFECTED FILES" "Appendix M"
  1554. X.X1 "Appendix C" "CUSTOMIZATION PARAMETERS" "Appendix M"
  1555. X.X1 "Appendix D" "LIST OF DOMAIN NAMES" "Appendix M"
  1556. X.X1 "Appendix F" "LIST OF DATA FILES" "Appendix M"
  1557. X.X1 "Appendix I" "INSTALLATION INSTRUCTIONS" "Appendix M"
  1558. X.X1 "Appendix P" "LIST OF AUXILIARY PROGRAMS" "Appendix M"
  1559. X.X1 "Appendix R" "REFERENCES" "Appendix M"
  1560. X.X1 "Appendix T" "TABLE OF CONTENTS" "Appendix M"
  1561. END_OF_ida/doc/part2.ms
  1562. if test 43054 -ne `wc -c <ida/doc/part2.ms`; then
  1563.     echo shar: \"ida/doc/part2.ms\" unpacked with wrong size!
  1564. fi
  1565. # end of overwriting check
  1566. fi
  1567. echo shar: End of archive 7 \(of 7\).
  1568. cp /dev/null ark7isdone
  1569. MISSING=""
  1570. for I in 1 2 3 4 5 6 7 ; do
  1571.     if test ! -f ark${I}isdone ; then
  1572.     MISSING="${MISSING} ${I}"
  1573.     fi
  1574. done
  1575. if test "${MISSING}" = "" ; then
  1576.     echo You have unpacked all 7 archives.
  1577.     echo "See ida/README and ida/INSTALL for further instructions."
  1578.     rm -f ark[1-9]isdone
  1579. else
  1580.     echo You still need to unpack the following archives:
  1581.     echo "        " ${MISSING}
  1582. fi
  1583. ##  End of shell archive.
  1584. exit 0
  1585.