home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume16 / ida2 / part07 < prev    next >
Text File  |  1988-11-13  |  46KB  |  1,577 lines

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