home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / mmdf / mmdf-IIb.43 / doc / administrators / runtime < prev    next >
Encoding:
Text File  |  1990-02-28  |  45.2 KB  |  1,306 lines

  1. .\".AU
  2. .\"Julian Onions
  3. .\".AI
  4. .\"Department of Computer Science,
  5. .\"The University,
  6. .\"NOTTINGHAM,
  7. .\"NG7 2RD.
  8. .\"ENGLAND.
  9. .\"(0602) 506101 ext 3595
  10. .bp
  11. .NH
  12. Runtime Tailoring the \*M system
  13. .NH 2
  14. Introduction
  15. .PP
  16. The \*M Mail Transport system
  17. can be run in one of two modes.
  18. It can either have all the site dependent information
  19. tailored at compile time,
  20. or else it can be asked to read the information from an
  21. ASCII human-readable file each time it starts up.
  22. Obviously the latter provides much more scope for tweaking
  23. various constants etc.
  24. but does slow down the start-up time of the programs using
  25. this information.
  26. Most sites will want to run somewhere in the middle, with
  27. most of the static information (bug address, directories,
  28. filenames, etc.) compiled in, and the remainder configured
  29. at runtime.  If you later have a need to change some
  30. compiled in values, you can simply add an item to the runtime
  31. tailoring file to override the compiled-in value and
  32. thus avoid having to recompile the mail system.
  33. There are obvious efficiencies to be had from a smaller configuration
  34. file which makes it attractive to try to keep it small.
  35. Typically one would runtime configure the host name and domain,
  36. the support address, the tables, the channels, the domains, and the
  37. logging levels.
  38. .PP
  39. Many people may be worried about the cost of runtime tailoring.
  40. The method for reading in the tailoring file is very efficient,
  41. involving only a single read system call.  The use of runtime
  42. tailoring adds very little overhead to the \*M mail system.
  43. The advantages of runtime tailoring generally far outweigh the
  44. minor extra cost at startup.
  45. .PP
  46. Occasionally there will be a need to compile in the configuration
  47. at a particular site (e.g. CSNET-RELAY) because the runtime tailoring file
  48. becomes far too large.  There are two tools for helping to do this in
  49. src/tools.
  50. \fBFixtai\fR reads a specified runtime tailoring file and produces structure
  51. initializations for those structures suitable
  52. for being #included into chan.c.
  53. \fBRem_chans\fR comments out specified channel entries in a runtime tailoring
  54. file that you now expect to compile in.  You may wish to do this by
  55. hand if you only have a few.
  56. .PP
  57. In general,
  58. keywords in the tailoring file are case independent,
  59. however such things as filenames and similar values,
  60. obviously are not. The full specification for the tailoring
  61. parsing can be found in manual section tai(3).
  62. Strings are generally quoted to prevent them from being parsed
  63. into separate words accidentally.  Simple words consisting of
  64. only alpha-numeric characters can be safely left unquoted, but
  65. all others strings should be quoted, especially those containing
  66. spaces or punctuation.
  67. .PP
  68. This section describes tailoring through the external file,
  69. but much of this information is applicable when using the
  70. compiled-in tailoring.
  71. The 
  72. subsections below describe the specific entries which can be placed
  73. in the tailoring file.
  74. .PP
  75. Examples are given for a number of sites
  76. including most of those with directories in the \fBconf\fR directory.
  77. See the directory \fBsamples\fR; subdirectories will contain actual
  78. tables and tailoring files for these systems.
  79. .PP
  80. This whole process is perhaps easiest if you copy a tailor file
  81. for some other system
  82. and change the bits you need.
  83. This example will show you common values that have been
  84. used for parameters;
  85. they are not necessarily what you want,
  86. but they should give you a guide.
  87. In some cases, there is more than one way to do something.
  88. For example, setting up the list channel tables was done differently
  89. at BRL and UCL.
  90. This does not mean that one is wrong, just different.
  91. One is perhaps more elegant, but both should work.
  92. .XX
  93. Choose a tailor file to copy.
  94. .XX
  95. Copy the chosen tailor file to the location you specified as
  96. .I mmtailor
  97. in the conf.c file (see section 2.5.1).
  98. .XX
  99. Edit your tailor file as described below.
  100. .NH 2
  101. Local Names and Site-Specific Information
  102. .PP
  103. The MLNAME is the name of your machine
  104. or site as you wish it to
  105. be known throughout the network.
  106. This may be a generic host name used to hide a number of local
  107. hosts.
  108. If a generic host name,
  109. internal hosts will be differentiated by MLOCMACHINE (described below).
  110. .DS
  111. .TS
  112. l l .
  113. MLNAME    ``Maths''        # UK site
  114. MLNAME    ``Arpahost''        # ARPA site
  115. .TE
  116. .DE
  117. Case should not matter here.
  118. .PP
  119. The MLDOMAIN line gives your full local domain.
  120. This,
  121. combined with the MLNAME (and possibly the MLOCMACHINE) will
  122. give you the full network address.
  123. .DS
  124. .TS
  125. l l .
  126. MLDOMAIN    ``Nott.AC.UK''    # UK site
  127. MLDOMAIN    ``ARPA''    # ARPA site
  128. .TE
  129. .DE
  130. This will give as your address
  131. .DS
  132. .TS
  133. l l .
  134. Maths.Nott.AC.UK    # UK site
  135. Arpahost.ARPA        # ARPA site
  136. .TE
  137. .DE
  138. .PP
  139. The MLOCMACHINE line is often set to the null string,
  140. unless you are a large transparent site.
  141. The normal use of this is for a site which has several machines
  142. but wishes the machines themselves to appear as one address.
  143. .LP
  144. For example:
  145. .br
  146. Arpahost is, say, really a name that covers 5 machines,
  147. mach1 to mach5.
  148. Mail leaving any ``Arpahost'' machine
  149. is stamped as originating from
  150. Arpahost, and mail is addressed to username@Arpahost by outsiders.
  151. The alias table then maps the incoming address to
  152. .DS
  153. .TS
  154. l l .
  155. username    username@mach1.Arpahost.ARPA
  156. .TE
  157. .DE
  158. Take a look at the ucl-cs setup for an example of how such
  159. things function in real life.
  160. Remember that the mail system will really believe its name
  161. is \fIlocname.locdomain\fR and any mail with that domain will
  162. be verified locally.  If it finds a more specific domain such
  163. as \fIlocmachine.locname.locdomain\fR it will pass it on to
  164. the referenced host.
  165. If defined, the
  166. .I locmachine
  167. string will never be generated in addresses by the system,
  168. although it is recognized and can be supplied
  169. by a user if it is important to
  170. bypass the normal aliasing done by the system.
  171. The
  172. .I locmachine
  173. string will be used in id strings (Received: and Message-ID:
  174. header lines).
  175. .DS
  176. .TS
  177. l l .
  178. MLOCMACHINE    maths70
  179. .TE
  180. .DE
  181. The MSIG line is the signature that MMDF will use when notifying senders
  182. of mail delivery problems.  This should be
  183. something that indicates a message agent was responsible.
  184. .DS
  185. .TS
  186. l l .
  187. MSIG      ``MMDF Mail System''
  188. .TE
  189. .DE
  190. MLOGIN is the user that owns the MMDF transport system.
  191. .DS
  192. .TS
  193. l l .
  194. MLOGIN    mmdf
  195. .TE
  196. .DE
  197. MSUPPORT is the address to which to send mail that
  198. MMDF can't cope with (i.e. that MMDF can't deliver or return
  199. to sender).  Be sure MSUPPORT is a legal address!
  200. .DS
  201. .TS
  202. l l l .
  203. MSUPPORT    mmdf@Maths.Nott.AC.UK    # UK site
  204. MSUPPORT    mmdf@Arpahost.ARPA    # ARPA site
  205.         or perhaps
  206. MSUPPORT    postmaster@Arpahost.ARPA
  207. .TE
  208. .DE
  209. .PP
  210. AUTHREQUEST is the address to which users should mail if they have questions
  211. about why a message was not authorized for delivery.  It is also used as the
  212. sender of authorization warning messages.  It is not used if authorization
  213. is not enabled on some channel.
  214. .DS
  215. .TS
  216. l l .
  217. AUTHREQUEST    postmaster
  218. .TE
  219. .DE
  220. The MMAILID line is used to enable the use of the the
  221. Mail-IDs facility of \*M which disassociates mail addresses
  222. from login names.  The line is of the form:
  223. .DS
  224. .TS
  225. l l .
  226. MMAILID           \fInumber\fR
  227. .TE
  228. .DE
  229. where \fInumber\fR is either 0 to disable the feature, or
  230. 1 (non-zero) to enable it.
  231. If it is enabled, you should have the tables ``users'' and ``mailids''
  232. with appropriate mapping from userids to mailids and vica-versa.
  233. See section 5.4.4 of this document and tables(5) for more information on
  234. setting up these tables. 
  235. .NH 2
  236. Directory Tailoring
  237. .PP
  238. Next, a whole heap of path names to directories can
  239. be tailored.  The example that follows has the \*M file
  240. under both /usr/spool and /usr/lib/mmdf.  This is the
  241. way UCL arranges their \*M directories.  Also shown are
  242. the values used at BRL where everything is placed under
  243. under /usr/mmdf (see the samples directory for more examples).
  244. .br
  245. MLOGDIR is the default directory in which the log files are kept.
  246. .DS
  247. .TS
  248. l l .
  249. MLOGDIR     ``/usr/spool/mmdflogs''
  250. MLOGDIR     ``/usr/mmdf/log''
  251. .TE
  252. .DE
  253. MPHSDIR is the directory in which the timestamps for the
  254. channels are made,
  255. showing what state of activity they are in.
  256. .DS
  257. .TS
  258. l l .
  259. MPHSDIR       ``/usr/spool/mmdflogs/phase''
  260. MPHSDIR       ``/usr/mmdf/log/phase''
  261. .TE
  262. .DE
  263. MTBLDIR is the default directory for the table files.
  264. .DS
  265. .TS
  266. l l .
  267. MTBLDIR       ``/usr/lib/mmdf/mmdftable''
  268. MTBLDIR       ``/usr/mmdf/table''
  269. .TE
  270. .DE
  271. MQUEDIR is the parent directory for the various queues and
  272. address directories.
  273. .DS
  274. .TS
  275. l l .
  276. MQUEDIR       ``/usr/spool/mmdflock/que''
  277. MQUEDIR       ``/usr/mmdf/lock/home''
  278. .TE
  279. .DE
  280. MLCKDIR is the directory where the locking of files takes
  281. place,
  282. this is dependent on what style of locking you are doing.
  283. .DS
  284. .TS
  285. l l .
  286. MLCKDIR       ``/usr/spool/locks''
  287. MLCKDIR       ``/tmp/mmdf''
  288. .TE
  289. .DE
  290. MTEMPT is the temporary files directory;
  291. if not a full pathname, it is taken relative to MQUEDIR.
  292. .DS
  293. .TS
  294. l l .
  295. MTEMPT       ``temp/''
  296. .TE
  297. .DE
  298. MADDRQ as above, but holds the address files.
  299. .DS
  300. .TS
  301. l l .
  302. MADDRQ       ``addr/''
  303. .TE
  304. .DE
  305. MMSGQ as above, used for the message texts.
  306. .DS
  307. .TS
  308. l l .
  309. MMSGQ       ``msg/''
  310. .TE
  311. .DE
  312. MCMDDIR is the default commands directory
  313. where the various \*M commands live;
  314. any command that does not have a full pathname
  315. is taken relative to this directory.
  316. .DS
  317. .TS
  318. l l .
  319. MCMDDIR       ``/usr/lib/mmdf''
  320. MCMDDIR       ``/usr/mmdf''
  321. .TE
  322. .DE
  323. MCHNDIR is where the channel programs are to be found.
  324. .DS
  325. .TS
  326. l l .
  327. MCHNDIR       ``/usr/lib/mmdf/chans''
  328. MCHNDIR       ``/usr/mmdf/chans''
  329. .TE
  330. .DE
  331. The MQUEPROT gives the protection mode in octal that the
  332. parent of the MQUEDIR directory will have.
  333. .DS
  334. .TS
  335. l l .
  336. MQUEPROT   0700
  337. .TE
  338. .DE
  339. .NH 2
  340. Database Files
  341. .PP
  342. The MDBM line tells MMDF where to find the database file
  343. containing the associative store.
  344. Dbm style databases get their speed and
  345. flexibility by dynamic hashing and can get quite large.
  346. By default, the file is located in the MTBLDIR dirctory, but
  347. it might need to be relocated due to its size.
  348. .DS
  349. .TS
  350. l l .
  351. MDBM       ``/usr/spool/mmdfdbm''
  352. .TE
  353. .DE
  354. This is not the actual form of the file name,
  355. as the dbm(3) package forms two files with the suffices
  356. .I \&.pag
  357. and
  358. .I \&.dir
  359. which are closely coupled by the dbm package.
  360. Another file may also appear with a
  361. .I \&.lck
  362. suffix.
  363. This is a file that is used in locking the database.
  364. .NH 2
  365. The Log Files
  366. .PP
  367. Several parameters affecting the logging of information can be tailored.
  368. One parameter is the level of detail that should be logged.  If this parameter
  369. is set for verbose logging,
  370. then enormous amounts of information can be gleaned,
  371. probably most of it indecipherable (but a good start towards
  372. your guru's badge),
  373. and most of the \*M programs become noticeably slower and
  374. I/O bound. To get the fullest logging information available,
  375. the programs have to be compiled with the \-DDEBUG flag.  Setting this
  376. flag may cause
  377. the programs to get too large for some PDP-11
  378. computers.
  379. .PP
  380. The MMSGLOG controls the logging information produced by
  381. \fIdeliver\fR and \fIsubmit\fR; MCHANLOG controls the logging by most
  382. other \*M programs with the following exceptions:
  383. PHLOG controls phone logging information
  384. and AUTHLOG controls authorisation information.
  385. An argument without an equal sign is taken as the new name of
  386. the log.
  387. Logging files and levels can also be specified in the channel
  388. descriptions.  The logging file, if specified there, will override
  389. the MCHANLOG definition.  The logging level for the channel will be
  390. set to the maximum of the MCHANLOG level and the channel description's
  391. level.  The MCHANLOG level can therefore be used to increase logging
  392. on all channels at once.
  393. .DS
  394. .TS
  395. l l .
  396. MMSGLOG    /tmp/mmdf.log, level=FST, size=40, stat=SOME
  397. MCHANLOG    level=FST, size=40, stat=SOME
  398. PHLOG    level=FST, size=40, stat=SOME
  399. AUTHLOG    level=FST, size=40, stat=SOME
  400. .TE
  401. .DE
  402. These examples set the logging level to FST (full statistics).
  403. Alternatives here are:
  404. .RS
  405. .TS
  406. l l .
  407. FAT    \- Logging of fatal errors only.
  408. TMP    \- Temporary errors and fatal errors.
  409. GEN    \- Include the generally interesting diagnostics.
  410. BST    \- Show some basic statistics.
  411. FST    \- Full statistics.
  412. PTR    \- Give a program trace listing of what is happening.
  413. BTR    \- Give more detailed tracing.
  414. FTR    \- Give every diagnostic you can.
  415. .TE
  416. .RE
  417. .PP
  418. The last two conditions (BTR and FTR) are enabled only if you have compiled
  419. the MMDF system with DEBUG #define'd.  This amount of tracing
  420. can quickly fill up log files.
  421. During normal operation, the logging level should be set somewhere
  422. between GEN and FST.
  423. .PP
  424. Size is set to the number of 25-block lumps you wish your log file
  425. to grow to. When the log files reach that size,
  426. logging either stops or it may start to cycle around overwriting old data.
  427. .PP
  428. Stat sets up various status flags for logging.
  429. Options here are:
  430. .RS
  431. .IP close 10
  432. Close the log after each entry; this allows other processes
  433. to write to it as well.
  434. .IP wait 10
  435. If the log is busy, wait awhile for it to free.
  436. .IP cycle 10
  437. If the log is at maximum length specified above, then
  438. cycle to the beginning (this feature doesn't work currently).
  439. .IP some 10
  440. Sets the values close and wait. It is the most
  441. common setting.
  442. .IP timed 10
  443. Open the log only once in a while (e.g. 5 minutes).  After the timeout period,
  444. close the log and reopen it.  This option is used to reduce the overhead of
  445. re-opening the log for every entry while still retaining the ability to move
  446. the log file out from under a running process and have the process begin logging
  447. in the new log file soon thereafter.  This option overrides all other options.
  448. .RE
  449. .PP
  450. The logfile tailoring is generally done at the end of the
  451. tailor file to prevent logging the tailoring action itself,
  452. thereby needlessly filling the logfiles when higher tracing
  453. levels are enabled.
  454. If you have bugs in the tailoring, you will obviously want to move
  455. the logfile tailoring closer to the top.
  456. .PP
  457. The DEFTRAN line gives the name of the default transcript
  458. file for use in phone logging.
  459. It is the only log that is not size limited,
  460. as it is created anew each time a connection is made with
  461. the phone channel or slave program.
  462. .DS
  463. .TS
  464. l l .
  465. DEFTRAN    "ph.trn"
  466. .TE
  467. .DE
  468. .NH 2
  469. Runtime Table Definitions
  470. .PP
  471. Table contents are discussed in section 4 of this document.  Table definitions
  472. are discussed here.  Tables fall into three categories: domain, channel, and
  473. others.  Domain and channel tables are discussed below.  The "other" category
  474. is discussed here.  
  475. Regardless of category, table definitions all have the same format.
  476. They all consist of the following parts:
  477. .RS
  478. .IP name 10
  479. A name by which the table is known.
  480. .IP file 10
  481. A file from which the contents of the table are built up.
  482. .IP show 10
  483. A display line,
  484. which is used for pretty printing purposes to explain what
  485. the table is all about.
  486. .IP flags 10
  487. The flags parameter is used to indicate additional
  488. properties about the table being defined.
  489. This can be specified more than once for a given table to set
  490. more than one flag.
  491. Currently this is used to specify various table options - source type,
  492. nameserver lookup parameters, and control of partial lookups.
  493. .sp
  494. There are three source types defined: ``file'', ``dbm'', and ``ns''.
  495. The type ``file'' means that the table comes from a sequentially
  496. read file (the default).
  497. The type ``dbm'' indicates that the table is in the MMDF hashed
  498. database built with \fIdbmbuild\fR.
  499. The type ``ns'' indicates that the table data is obtained by making
  500. queries on a nameserver.  
  501. .sp
  502. In the case of an ns-type table,
  503. the ``flags'' field will also specify the type of nameserver lookup.
  504. Currently ``domain'' and ``channel'' are supported.
  505. ``Domain'' indicates a lookup of the given address in the domain
  506. specified by the dmn= parameter of the domain definition (e.g. for FOO.ARPA,
  507. look up FOO in dmn=``ARPA'' or FOO.ARPA in dmn=``'').  ``Channel''
  508. indicates a lookup of the given fully-qualified domain name to determine
  509. the address(es) to use in delivering via SMTP.  (Note that there used to be
  510. a lookup type of ``root''.  This type no longer exists--instead use a flags
  511. setting of ``domain''
  512. in the table definition with a domain definition parameter of dmn=``''.)
  513. .sp
  514. When a domain is looked up in a domain table and no exact match exists, the
  515. optional flag ``route'' determines whether a search should be done on
  516. successive subdomains of the domain.  If a subdomain match is found, the
  517. right-hand-side of the table entry is used as a route to the domain.  
  518. For example,
  519. the top domain table entry UKY.EDU:RELAY.UKY.EDU would cause routing via
  520. RELAY.UKY.EDU for A.CS.UKY.EDU if the ``route'' flag were set.  This flag
  521. essentially enables one table entry to act as a wildcard for a gateway to an
  522. entire subdomain.  (Note that ``route'' used to be the default for all domain 
  523. tables.  To get the same behavior, you must now explicity set the
  524. ``route'' flag.)
  525. .sp
  526. Generally, the MDMN ``dmn='' setting determines what domain tables will be
  527. searched when looking up a domain name.  However, if an exact or "route-style"
  528. match cannot be made in the standard domain tables, the optional flag
  529. ``partial'' controls whether the domain should be looked up in other domain
  530. tables.  For example, if domain tables ARPA
  531. and EDU have the ``partial'' flag set, an address of FOO
  532. will generate lookups for FOO.ARPA
  533. and FOO.EDU.  The ``partial'' flag is often used for the local domain table
  534. to allow users to omit the full domain specification when referring to local
  535. machines.  (Note that ``partial'' used to be the default for dbm-style tables.
  536. To get the same behavior, you must now explicitly set the ``partial'' flag.)
  537. .sp
  538. Normally, when looking up a domain name in an ns-type domain table and a
  539. timeout occurs, MMDF looks through the list of domains for other tables in
  540. which to try the lookup.  To force MMDF to not try other tables after a
  541. timeout, use the optional flag ``abort''.  ``Abort'' would normally be used
  542. when this ns-type domain table is the only reliable source of information
  543. about this domain (and when results would be confusing or incorrect if
  544. alternate domain tables were consulted occasionally).
  545. .sp
  546. Note:  In the current release there are only two modes of operation.
  547. If you use tb_io.c, you will get sequential table io ONLY.  If you
  548. use tb_dbm.c you will get DBM and NS support (and the latter only if you
  549. define NAMESERVER).  The source types ``file'' and ``dbm'' are therefore
  550. treated the same.
  551. .RE
  552. .LP
  553. A typical example might be:
  554. .DS
  555. MTBL  name=aliases, file=aliases, show=``User & list aliases''
  556. MTBL  name=smtpchan, flags=channel, flags=ns, show=``SMTP Addrs via NS''
  557. .DE
  558. If the first argument does not have an equal sign in it,
  559. it is taken as the value for the other parameters.
  560. For example:
  561. .DS
  562. MTBL  aliases, show=``Alias table''
  563. .DE
  564. sets the name,
  565. file and show parameters to the string ``aliases'',
  566. and then resets the show parameter to the string ``Alias table''.
  567. .PP
  568. The following tables are provided automatically via chan.c
  569. and the tailoring package when Mail-IDs are enabled (see section 3.2 above):
  570. .RS
  571. .IP users 10
  572. A mapping of usernames to Mail-IDs
  573. .IP mailids 10
  574. A mapping of Mail-IDs to usernames
  575. .RE
  576. .PP
  577. The aliases tables are sometimes compiled in from the configuration
  578. file chan.c, so they can be left out of a runtime configuration.
  579. If they are not in chan.c they must be specified in the runtime configuration.
  580. If this is your first time through, best go for runtime tailoring
  581. until you know what you want.
  582. The tables for mailids and users are also compiled into
  583. chan.c since other parts of MMDF need to know about these tables.
  584. Changes to the mailids or users table definitions are best made in chan.c.
  585. .XX
  586. Define or change the aliases tables (if necessary).
  587. .NH 2
  588. Runtime Alias Definitions
  589. .PP
  590. Alias definitions are used to tell the system about the
  591. various sources of alias information.  \*M can have more than
  592. one alias file.
  593. In addition, each alias source has the option of being trusted
  594. and the option of preventing bypassing (via the\ \~\ on the front
  595. of an address).
  596. .PP
  597. Making an alias file trusted is a serious decision.
  598. A trusted alias file can direct mail to be delivered
  599. to any file or process using the permissions of any user on the
  600. system.  It should only be modifiable by the Superuser,
  601. or guarded as such.  Typically there is only one or two trusted
  602. alias files per system.
  603. .PP
  604. The alias tables are searched in the order they are defined.
  605. When a hit is made, no further searching is done for additional
  606. hits in later tables.
  607. .RS
  608. .IP table 10
  609. Specifies name of the table to be associated with this alias entry.
  610. .IP trusted 10
  611. The entries in the table will be allowed to cause delivery to
  612. files and pipes.
  613. .IP nobypass 10
  614. The `\~address' alias bypass mechanism will not work on this file.
  615. .IP public 10
  616. The aliases defined in this file will be visible to the smtpsrvr EXPN command
  617. and to non-privileged users of malias(1).
  618. .RE
  619. .DS
  620. ALIAS    table=sysaliases, trusted, nobypass
  621. ALIAS    table=forward\ \ \ \ \ \ # modified by users (== .forward)
  622. ALIAS    table=useraliases, trusted, public
  623. .DE
  624. .XX
  625. Define your alias tables and their attributes.
  626. .NH 2
  627. Runtime Domain Definitions
  628. .PP
  629. See section 5.2 for a discussion of how to choose a set of domains to include
  630. in the tailor file.
  631. Domain definitions consist of the following:
  632. .RS
  633. .IP name 10
  634. A name by which to refer to
  635. this domain definition.
  636. .IP show 10
  637. A display line,
  638. which is used for pretty printing purposes to explain what
  639. the domain is all about.
  640. .IP dmn 10
  641. The full domain name (x.y.z...) that specifies this domain.
  642. .IP table 10
  643. The associated table entry of known hosts or subdomains in this domain.  
  644. If the specified
  645. table has not been previously defined, it will be defined with the same name,
  646. file, and show as for this domain.  
  647. .RE
  648. .PP
  649. There are many defaults to make life easier.
  650. As in the table case,
  651. if the first argument does not have an equal sign,
  652. the values of the name,
  653. dmn and show parameters take on this value.  If no table name is specified,
  654. it defaults to the value of the name parameter.
  655. .DS
  656. MDMN    name=``nott.ac.uk'', dmn=``nott.ac.uk'', table=nott,
  657.     show=``Nottingham Domain''
  658. MDMN    arpa, show=``ARPANET Domain''
  659. MDMN    name=``Root'', dmn=``'', show=``Root Domain'', table=rootdomain
  660. .DE
  661. .XX
  662. Define a set of domains in your tailor file.
  663. .NH 2
  664. Runtime Channel Definitions
  665. .PP
  666. The first stage is to determine the set of channels to be used.
  667. Typically, a local and list channel will be required.
  668. Then, there will be one channel for each PhoneNet link, and one channel
  669. (at least) for each protocol network pair (e.g. smtp channel for
  670. SMTP/ARPANET and an NIFTP channel for JNT Mail/X.25).  UUCP
  671. needs only one channel.  In some cases it may be desirable to split what
  672. would normally be one channel
  673. so that some authorisation can be used on the basis of channel.
  674. For example, one may choose to have a separate channel for ARPANET and
  675. Hosts using SMTP/TCP on a local ethernet, even though they could use
  676. the same channel.  Another case might be to have separate JNT Mail
  677. channels for JANET and PSS.   This allows for logical authorisation
  678. functions to be applied on a per-channel basis.
  679. .XX
  680. Decide what channels you will need to use.
  681. .PP
  682. Next you must define these channels in the tailor file.  The channel
  683. definitions are more complex than tables and domains.  There are
  684. a large number
  685. of parameters available because of the diverse behavior of the different
  686. channel programs.  
  687. Many of the parameters are not necessary for most of the
  688. channels.
  689. The specific parameters are as follows:
  690. .RS
  691. .IP name 10
  692. The name of the channel.
  693. .IP show 10
  694. A display line,
  695. which is used for pretty printing purposes to explain what
  696. the channel is used for.
  697. .IP que 10
  698. The queue directory into which messages for this channel should be queued.
  699. .IP tbl 10
  700. The associated table entry of hosts that are accessible on this
  701. channel.  If the specified table has not been previously defined,
  702. it will be defined with the same name, file, and show as for this channel. 
  703. Warning: do not define two channels that process the same queue that use 
  704. different tbl= tables.  (Doing so results in queue structure problems).
  705. .IP pgm 10
  706. The channel program to be invoked for this channel.
  707. .IP mod 10
  708. The mode in which this channel works.  If several values are selected,
  709. they are cumulative.  Normally, one of ``reg'', ``bak'', ``psv'',
  710. or ``imm'' is selected.  ``Pick'' and ``send'' are usually both selected
  711. on two-way channels such as phone or pobox.
  712. The values are:
  713. .RS
  714. .IP "reg \-" 9
  715. regular mode (the default).  The channel may be explicitly invoked by running
  716. .I deliver.
  717. .IP "bak \-" 9
  718. channel may be invoked only by the background deliver daemon.
  719. .IP "psv \-" 9
  720. the channel is passive; it is a pickup type channel (e.g. pobox).
  721. .IP "imm \-" 9
  722. this channel may be started up immediately; there is no 
  723. need to batch up mail.
  724. .IP "pick \-" 9
  725. This channel may pick up mail from the remote host.
  726. .IP "send \-" 9
  727. This channel may send mail to the remote host.
  728. .IP "host \-" 9
  729. When sorting queued messages, also sort by host to minimize the number of
  730. reconnections to each destination.
  731. .RE
  732. .IP ap 10
  733. The address-parser type to be used for reformatting headers
  734. on messages going out on this channel. 
  735. The settings of ap control reformatting.  If none is selected, the
  736. channel will not reformat.  If several values are selected, they are
  737. cumulative:
  738. .RS
  739. .IP "same \-" 9
  740. selects no address reformatting
  741. .IP "822 \-" 9  
  742. selects RFC 822 style source routes (e.g. @A:B@C)
  743. .IP "733 \-" 9
  744. selects % style\ (JNT) source routes (e.g. B%C@A)
  745. .IP "big \-" 9  
  746. selects NRS hierarchy ordering (for the UK)
  747. .IP "nodots \-" 9
  748. selects output of leftmost part of domain names (e.g. A in A.B.C) for sites
  749. that can't handle domains (usually used in conjunction with `known=' (described
  750. below) to hide domain names behind a smart relay).
  751. .IP "try \-" 9
  752. indicates that the header parser should try to rewrite addresses for this
  753. channel (if selected by one of the other ap= options) but should ignore any
  754. nameserver timeouts that occur.  If a nameserver timeout occurs, the original
  755. (unrewritten) address is used and a warning is inserted into the header.
  756. .IP "jnt \-" 9
  757. is equivalent to ap=733 + ap=big
  758. .RE
  759. .IP lname 10
  760. This specifies a name overriding the default MLNAME value
  761. when used in this channel.  This is the name by which the local host
  762. is known to hosts accessed by this channel.
  763. This is used when the channel should have non-standard values
  764. for the local domain.  If \fIlocname\fR = `UCL-CS' and \fIlocdomain\fR = `AC.UK',
  765. then for an arpa smtp channel, one would set the parameters
  766. ldomain = `ARPA' (and, implicitly, lname = `UCL-CS').  All local references
  767. in this channel would be mapped to UCL-CS.ARPA if reformatting is used.
  768. For this mapping to take place, domain lookups of the various names by which
  769. the local host is known must all resolve to locname.locdomain.  For example, 
  770. the line "UCL-CS:UCL-CS.AC.UK" must appear in both the ARPA and AC.UK domain
  771. tables.
  772. .IP ldomain 10
  773. As above, but overriding the value of MLDOMAIN.  See the example above.
  774. .IP host 10
  775. The name of the host that is being contacted by this
  776. channel, usually used in the phone and pobox channels.
  777. (Also the name of the relay host when all mail to hosts in this
  778. channel's table gets relayed to one host.)
  779. This is required on the
  780. .I badusers
  781. and
  782. .I badhosts
  783. pseudo-channels.  It is also required to be set to the local host for the
  784. .I list
  785. channel.
  786. .IP user 10
  787. The login name of the account which uses the slave program to pick up mail
  788. (used for the pobox channel only).
  789. .IP scr 10
  790. The name of the dialing script file to be used by the phone channel.
  791. .IP trn 10
  792. The name of the transcript file to be used for this channel;
  793. this currently applies only to PhoneNet,
  794. and defaults to DEFTRAN (usually ph.trn).
  795. .IP poll 10
  796. The frequency of polling the remote machine.  A poll on a two-way channel
  797. (such as the phone channel) is used to see if any mail is waiting to be
  798. picked up from the remote host.
  799. A value of 0 disables polling;
  800. a value of -1 requests polling to be done every time the
  801. channel is started up.
  802. Any other value is the number of 15-minute intervals to wait
  803. between polls.  Note that the value of poll is ignored if any mail is waiting
  804. to be sent; in this case, a connection is always attempted.
  805. .IP insrc 10
  806. Table of hosts controlling message flow.   See the paper
  807. .B "Configuring MMDF Authorisation"
  808. by Steve Kille for details.
  809. .IP outsrc 10
  810. See insrc, above.
  811. .IP indest 10
  812. See insrc, above.
  813. .IP outdest 10
  814. See insrc, above.
  815. .IP known 10
  816. This is a table of hosts that are known on this channel.
  817. If a known table is specified and a given host is not in the table,
  818. then a relay form of the address is used,
  819. specifying that the return address goes through this
  820. host.  This conversion occurs after appending lname.ldomain
  821. (if appropriate--see above).
  822. Only the LHS of this table is used; the RHS
  823. is ignored.  The LHS should contains hosts, not domains.
  824. Typically, channel tables double as ``known
  825. tables''.  If the table is an NS-type table, it must be a
  826. domain or top table, not a channel table.
  827. Be sure that the table also contains your own 
  828. fully specified name (localhost.locdomain).  Note that
  829. the ``known table'' must exist.  A tailor entry will not define a ``known
  830. table'' that has not been predefined.
  831. .IP confstr 10
  832. This is a string that is used by some channels for
  833. specifying the invocation of another program.
  834. There is a form of macro expansion in this string,
  835. so that it can include the target address,
  836. the return address, etc.  Refer to the man pages describing specific channels
  837. for more information about using the confstr.  Most channels don't use this
  838. string currently.
  839. .IP auth 10
  840. This specifies the authorisation tests that are made on this
  841. channel.
  842. It takes any combination of the following modes:
  843. .RS
  844. .IP free 10 
  845. default, no checking takes place.
  846. .IP inlog 10
  847. log information regarding incoming messages.
  848. .IP outlog 10
  849. log information regarding outgoing messages.
  850. .IP inwarn 10
  851. warn sender of incoming message if his/her authorisation is
  852. inadequate (the message still goes through).
  853. .IP outwarn 10
  854. as above, but for outgoing messages.
  855. .IP inblock 10
  856. reject incoming messages that have inadequate
  857. authorisation.
  858. .IP outblock 10
  859. as above, but for outgoing messages.
  860. .IP hau 10
  861. Host And User control.  Requires both host and user
  862. authorisations to be acceptable.
  863. .IP dho 10
  864. Direct Host Only. 
  865. When applying host controls, the message must be associated
  866. with a user local to that host (i.e. no source routes).
  867. .RE
  868. .IP ttl 10
  869. The \fIdeliver\fR program keeps track of connection failures to specific hosts.
  870.  When a connection fails, the host is marked ``dead'' for a certain period of
  871. time.  This period is called the ``time-to-live'' of the dead-host entry.
  872. After a connection failure to a given host, retries are blocked for ttl
  873. minutes.  This value may be overridden on the deliver command line.  If the ttl
  874. is not given here or given to deliver, a default of 2 hours is used.
  875. .IP log 10
  876. This specifies the name of the log file to be used instead of
  877. the default channel log file (see CHANLOG above).
  878. Typically this is something like ``log=smtplog'' which will use
  879. a logfile called smptlog if it exists in the default logging directory.
  880. .IP level 10
  881. This specifies the logging level to use for this channel.
  882. The form is the same as that used to specify the default logging
  883. level (e.g. ``level=FST'') as described in section 3.5 of this document.
  884. The actual logging level used is the maximum of this level (if present)
  885. and the default MCHANLOG level.
  886. .RE
  887. .PP
  888. As mentioned above,
  889. the majority of these options are not used for most
  890. channels.
  891. .RS
  892. .TS
  893. center;
  894. l l.
  895. MCHN    name=local, que=local, tbl=local, show=``Local (maths)'',
  896.     pgm=local, poll=0, mod=imm, ap=822, level=BST
  897. MCHN    uucp, name=uucp, que=uucp, tbl=uucp, show=``UUCP'',
  898.     pgm=uucp, poll=0, mod=reg, ap=822, auth=inlog, auth=outlog
  899. MCHN    smtp, show=``SMTP/TCP'', que=smtp, tbl=smtp,
  900.     pgm=smtp, mod=reg, ap=822, log=smtp.log, level=FST,
  901.     confstr=``mysite.mydomain''
  902. MCHN    list, show=``Mailing List Processor'', que=list, tbl=list,
  903.     pgm=list, mod=reg, host=``mysite''
  904. MCHN    bboards, show=``BBoards Delivery'', que=bboards, tbl=bboards,
  905.     pgm=bboards, mod=reg, ap=822
  906. MCHN    dial-out, show=``Dial-out channel to dial-site'',
  907.     que=dial-site, tbl=dial-site, trn="dial-out.trn", ap=822,
  908.     pgm=phone, mod=reg, mod=send, mod=pick, poll=8,
  909.     host=dial-site, scr="dial-site.script"
  910. MCHN    dial-in,  show=``Dial-in channel from dial-site'',
  911.     que=dial-site, tbl=dial-site, trn="dial-in.trn", ap=822,
  912.     pgm=pobox, mod=psv, mod=send, mod=pick,
  913.     host=dial-site, user=dislave
  914. .TE
  915. .RE
  916. In the ``uucp'' example, the name, que, tbl and pgm could have been omitted;
  917. they would have defaulted to ``uucp'' since it was the first argument.  It is
  918. common, however, to include these explicit settings for clarity.
  919. The order of parameters is unimportant.
  920. .XX
  921. Define the channels needed at your site.
  922. .NH 2
  923. Some Runtime Constants for Messages
  924. .PP
  925. Now there are a collection of constants defined:
  926. .LP
  927. MADDID controls whether
  928. .I submit
  929. will add Message-ID: header lines if they are missing from
  930. messages.  It takes a number as an argument.  If the number
  931. is 0, no action is taken.  If the number is non-zero,
  932. then
  933. .I submit
  934. will add Message-ID: header lines if they are missing from messages.
  935. .DS
  936. MADDID  1
  937. .DE
  938. .LP
  939. MLISTSIZE specifies the maximum number of addresses in a message
  940. before it is considered to have a ``big'' list.
  941. If there are more than the maximum number of addresses, then \*M
  942. will not send a warning message for waiting mail and will only
  943. return a ``citation'' for failed mail.  A ``citation'' consists
  944. of the entire header plus the first few lines of the message
  945. body.
  946. .DS
  947. MLISTSIZE  20
  948. .DE
  949. .LP
  950. MMAXHOPS specifies the maximum number of Received: or Via:
  951. lines in a message before it is considered to be looping, and is rejected.
  952. .DS
  953. MMAXHOPS  20
  954. .DE
  955. .LP
  956. MWARNTIME specifies the time in hours that a message may
  957. remain in a queue before a warning message about delayed
  958. delivery is sent to the sender.
  959. .DS
  960. MWARNTIME  72
  961. .DE
  962. .LP
  963. MFAILTIME is the time a message may remain in a queue before
  964. a failed mail message is sent to the sender and the message is
  965. purged from the queue.
  966. .DS
  967. MFAILTIME  144
  968. .DE
  969. If the number of items in the queue is less than
  970. MMAXSORT,
  971. the messages will be sorted by arrival time and dispatched
  972. in that order;
  973. otherwise a message will be dispatched as it is found in the
  974. directory search.
  975. .DS
  976. MMAXSORT   150
  977. .DE
  978. MSLEEP is the length of time in seconds that the background
  979. delivery daemon sleeps between queue scans.  The following
  980. causes the daemon to sleep 5 minutes between passes.
  981. .DS
  982. MSLEEP       300
  983. .DE
  984. .NH 2
  985. Runtime UUCP Settings
  986. .PP
  987. The only two uucp strings worth bothering with are UUXSTR
  988. and UUNAME.  UUXSTR is the command used to invoke the UUCP software.
  989. In general you may want to tailor the grade level if supported
  990. and the disabling of immediate attempts (via \-r).
  991. If you have special per-message  arguments, then you will
  992. need to modify the UUCP channel itself (e.g. \-a\fIsender\fR).
  993. .DS
  994. UUXSTR  ``uux -''
  995. \tor
  996. UUXSTR  ``uux - -r''
  997. \tor perhaps
  998. UUXSTR  ``uux - -r -gA''
  999. .DE
  1000. UUNAME determines the name that appears in the blank:
  1001. .nf
  1002. From blah <date stuff> remote from ________
  1003. .fi
  1004. .DS
  1005. UUNAME ``loki''
  1006. .DE
  1007. .NH 2
  1008. Runtime General Variables
  1009. .PP
  1010. Now some more general variables.
  1011. .DS
  1012. .TS
  1013. l l .
  1014. MSUBMIT    path=submit
  1015. MDELIVER    deliver deliver
  1016. MPKUP    name=pickup, path=deliver
  1017. MV6MAIL    mmdfmail ``/bin/v6mail''
  1018. .TE
  1019. .DE
  1020. MSUBMIT tells MMDF where the \fIsubmit\fR program lives.
  1021. MDELIVER is where the \fIdeliver\fR program lives, and MPKUP is the
  1022. post box pickup program.
  1023. MV6MAIL is the mail program MMDF should use to return
  1024. undeliverable messages and to send diagnostics.
  1025. It should behave rather like the original Bell \fImail\fR program.
  1026. It is not typically necessary to include these tailoring entries.
  1027. .NH 2
  1028. Runtime Delivery Tailoring
  1029. .PP
  1030. MDLVRDIR is the directory in which to deliver mail.
  1031. If this is null, then the user's home directory is used.
  1032. MMBXNAME is the name of the mailbox.
  1033. If this is null, then the user's login name is used.
  1034. The following would set \*M to deliver mail to /usr/spool/mail
  1035. with each mailbox named after the user's login name:
  1036. .DS
  1037. MDLVRDIR   ``/usr/spool/mail''
  1038. MMBXNAME   ``''
  1039. .DE
  1040. The following causes mailbox files to be created
  1041. in the user's home directory:
  1042. .DS
  1043. MDLVRDIR   ``''
  1044. MMBXNAME   ``mailbox''
  1045. .DE
  1046. MMBXPROT is the protection mode that should be used when
  1047. creating the user's mailbox. Its value is an octal number.  See manual 
  1048. section \fIchmod(1)\fR.
  1049. .DS
  1050. MMBXPROT   0600
  1051. .DE
  1052. MMBXPREF and MMBXSUFF are two strings that are written
  1053. before and after the message is written into the mailbox.
  1054. These are usually set to a sequence of control-A's.
  1055. .DS
  1056. MMBXPREF ``\e001\e001\e001\e001\en''
  1057. MMBXSUFF ``\e001\e001\e001\e001\en''
  1058. .DE
  1059. MDLV is the name of the maildelivery file,
  1060. used for tailoring the delivery for each user.
  1061. See manual section \fImaildelivery\fR(5).
  1062. .DS
  1063. MDLV ``.maildelivery''
  1064. .DE
  1065. The preceding parameters are also good contenders for being compiled-in
  1066. since they very seldom change once established at a given site.
  1067. .NH 2
  1068. Runtime PhoneNet Tailoring
  1069. .PP
  1070. If you do not use the phone or pobox channels, you may skip this section of the
  1071. tailoring document.
  1072. .PP
  1073. DBADOUT and DBADIN are eight octal integers
  1074. specifying the ASCII codes that can be used for host-to-host
  1075. communications over PhoneNet.
  1076. If there is a bit set in the ASCII position,
  1077. then that ASCII code is not allowed to be used in the
  1078. transmissions and therefore is escaped.
  1079. .DS
  1080. .TS
  1081. l l .
  1082. DBADOUT    0177777,0177777,0000010,0000000,
  1083.     0000001,0010000,0000000,0100000
  1084. DBADIN    0177777,0177777,0000010,0000000,
  1085.     0000001,0010000,0000000,0100000
  1086. .TE
  1087. .DE
  1088. In this example, the following
  1089. characters are declared ``illegal'' to send or receive: all control characters
  1090. (000 - 037), '#' (043), '@' (0100), '\\' (0134), and del (0177).
  1091. If the sending and receiving character sets are the same (as in this example),
  1092. the DBAD tailoring item may be used to set both character sets at once:
  1093. .DS
  1094. .TS
  1095. l l .
  1096. DBAD    0177777,0177777,0000010,0000000,
  1097.     0000001,0010000,0000000,0100000
  1098. .TE
  1099. .DE
  1100. .PP
  1101. When installing the dial protocol package on a Unix system,
  1102. there are a few things that have to be changed to reflect the
  1103. environment
  1104. such as the names, types, and speeds of the various dial-out ports
  1105. and direct connect lines to other hosts.
  1106. Each DPORT entry sets the parameters for a given dial-out port.  A
  1107. dial-out port is a modem with a separate autodialer associated with it.
  1108. Each DPORT entry contains
  1109. five positional arguments and then, optionally, any of three named arguments.
  1110. The positional arguments are:
  1111. .IP 1. 10
  1112. The path name of the port itself.
  1113. .IP 2. 10
  1114. The name of the lock file which is used to insure that no more than
  1115. one process tries to use the same port at a time.
  1116. If the UUCPLOCK feature was turned on in d_lock.h, then the name must
  1117. be of the form "LCK..tty??" where ?? is the number of the
  1118. tty line being used.
  1119. .IP 3. 10
  1120. The path name of the automatic calling unit (acu) that is associated with the
  1121. dial-out port.  The baud rate of the acu is set to 2400.  This baud rate only
  1122. applies, of course, if the acu is driven by a serial port.
  1123. .IP 4. 10
  1124. The speeds that the modem can support.  This is an octal number whose bits
  1125. represent supported speeds.  The relationship is as follows:
  1126. .DS
  1127. .sp
  1128. .TS
  1129. box;
  1130. c c
  1131. l l .
  1132. \fIBit\fR    \fIBaud Rate\fR
  1133. 0    50
  1134. 1    75
  1135. 2    110
  1136. 3    134.5
  1137. 4    150
  1138. 5    200
  1139. 6    300
  1140. 7    600
  1141. 8    1200
  1142. 9    1800
  1143. 10    2400
  1144. 11    4800
  1145. 12    9600
  1146. .TE
  1147. .DE
  1148. For example, 0177 is used for modems that can operate at speeds from 0-300
  1149. baud and 0400 is used for modems that only operate at 1200 baud.
  1150. .IP 5. 10
  1151. The line type of this port.  Line types such as "local", "wats", or "instate"
  1152. are referenced in the dialing script (see script(5)) and allow selection
  1153. of ports based on the capability of the associated phone line.
  1154. .IP pref= 10
  1155. The prefix string to send to the acu before sending the
  1156. phone number contained in the dialing script.  This is typically a command
  1157. string that tells the acu to get ready for a phone number and to select the
  1158. appropriate outgoing modem.
  1159. .IP suff= 10
  1160. The suffix string to send to the acu after sending the
  1161. phone number contained in the dialing script.  This is typically a command
  1162. string that tells the acu to actually start dialing.
  1163. .IP access= 10
  1164. This is a filename which contains a list of usernames (one per line) of the
  1165. people authorized to use the associated dial-out port.  If this argument is 
  1166. omitted, everyone will be given access.  
  1167. .PP
  1168. For example, the following entry
  1169. sets up a dial-out port for a Vadic MACS where the modem is on tty14, 
  1170. the dialer is on dn0, the speed is 1200-only.  The prefix string gives 
  1171. control information to the dialer such as connection-type and modem slot
  1172. address.  The suffix string signals the end of the phone number.
  1173. .DS
  1174. DPORT ``/dev/tty14'', ``LCK..tty14'', ``/dev/dn0'', 0400,
  1175.     pref=08, suff=``<''
  1176. .DE
  1177. .PP
  1178. The DLINE entry does a similar job for directly connected
  1179. lines.  Directly connected lines can be of three types: a hard-wired
  1180. connection between two machines, an autodialing modem, and
  1181. a pseudo-tty.  These three cases are discussed below and the format of the
  1182. DLINE entry for each is presented.
  1183. .PP
  1184. The first type, a
  1185. hard-wired connection between 2 machines, uses a single tty port on each
  1186. system.  In this configuration, one machine is designated the master.  The
  1187. master machine has logins disabled on its tty port.  The other machine, the
  1188. slave, has logins enabled at a known and fixed baud rate.  The master machine's
  1189. port is defined with a DLINE entry which tells the name of the line (this gets
  1190. used in the ``dial'' command in the dialing script (see script(5)), the path
  1191. name of the port itself, the name of a lock file to use to insure
  1192. exclusive access to the port, and the speed to use for the connection.
  1193. Thus, for a 9600 baud hard-wired connection, the following DLINE might be used:
  1194. .DS
  1195. DLINE ``udeleehp'', ``/dev/tty05'', ``LCK..tty05'', 9600
  1196. .DE
  1197. .PP
  1198. The second type, an autodialing modem, uses a single tty port to both
  1199. tell the modem what number to dial and to exchange data with the remote machine.
  1200. The dialing script must contain the necessary commands to tell the modem what
  1201. number to call.  The DLINE entry looks just like that for a hard-wired
  1202. connection.  More than one DLINE entry may be included with the same name;
  1203. the phone channel will try each one in succession until it finds one available.
  1204. .DS
  1205. DLINE ``hayes'', ``/dev/tty05'', ``LCK..tty05'', 1200
  1206. DLINE ``hayes'', ``/dev/tty06'', ``LCK..tty06'', 1200
  1207. .DE
  1208. .PP
  1209. The third type, a pseudo-tty, allows you to enter commands in the dialing 
  1210. script which log back into your own host and which run an auxiliary program
  1211. to connect to the remote machine.  This program might be an X.25 pad-out program
  1212. or it might be ``cu'' or ``tip''.  You must first allocate a pseudo-tty pair 
  1213. (e.g. /dev/ptypf and /dev/ttypf) for this
  1214. application by renaming them (e.g. to /dev/ptymmdf and 
  1215. /dev/ttymmdf, respectively).  Next, enable logins on the latter device (e.g.
  1216. by placing a line such as ``12ttymmdf'' in /etc/ttys).  The DLINE entry that
  1217. may then be used to establish a connection back to your own machine is:
  1218. .DS
  1219. DLINE ``pty'', ``/dev/ptymmdf'', ``LCK..ptymmdf'', 9600
  1220. .DE
  1221. Note that the speed designator must be valid but that it is ignored.
  1222. .TP
  1223. DACCT specifies a file to use for logging phone calls for accounting purposes.  
  1224. Only calls made on a DPORT are logged.  If the specified file does not exist, 
  1225. then logging of calls is disabled.
  1226. .DS
  1227. DACCT ``/usr/mmdf/log/dial_log''
  1228. .DE
  1229. .NH 2
  1230. Some Miscellaneous Bits
  1231. .PP
  1232. MDFLCHAN is used to set the default channel to something
  1233. other than local.
  1234. .PP
  1235. NIQUEDIR is set to a directory used for NIFTP temporary files
  1236. hence is only used on NIFTP channels.
  1237. .NH 2
  1238. Installation
  1239. .PP
  1240. Now that you have a runtime tailor file in place, you are ready to
  1241. create the required directory structure and install the binaries in it.
  1242. Run the program src/tools/xsetup (see \fIsetup\fR(8)) to generate the needed 
  1243. directories.  You will have to create the RCVDIR and BINDIR directories by
  1244. hand if they don't already exist; \fIsetup\fR
  1245. has no notion of these directories (tailored in Makefile.com).
  1246. .XX
  1247. Run src/tools/xsetup (it will ask for confirmation before changing anything).
  1248. .XX
  1249. Create the directories RCVDIR and BINDIR if necessary.
  1250. .PP
  1251. The programs \fIsubmit\fR and \fIdeliver\fR are unable to automatically
  1252. create queue directories (q.xxx).  If you later add new channel definitions
  1253. to your runtime tailoring file, you will need to create the queue directories
  1254. for those channels.
  1255. The program \fIsetup\fR can be used to do this.
  1256. Note that this program will
  1257. sometimes complain unnecessarily about permission problems if
  1258. you have played with the file modes to allow group access to the
  1259. lock directory.
  1260. .PP
  1261. Now that the directories have been created, you are ready to install the
  1262. binaries.  Running `make install' from the top of the \*M source
  1263. tree will install
  1264. everything in the subdirectories \fIsrc\fR and \fIuip\fR (in that order).
  1265. You can also run `make install' in each of these directories alone.
  1266. Note that all \*M programs such as background \fIdeliver\fR's and smtp daemons
  1267. must be killed off before running `make install'.
  1268. .XX
  1269. Run `make install' from the top of the \*M source tree.
  1270. .sp 2
  1271. .ne 10
  1272. .NH 1
  1273. Miscellaneous Tasks
  1274. .PP
  1275. There remain a number of things to be done either now or sometime
  1276. later that are not critical but should eventually be attended to.
  1277. You will need to setup your tables and run dbmbuild if you
  1278. are using the hashed database (DBM library).
  1279. Setting up tables is described in the next section of this
  1280. document.
  1281. .PP
  1282. You should arrange for the \fIcleanque\fR program
  1283. to be called from \fIcron\fR at least twice a day, and perhaps
  1284. more often at your choice.
  1285. .PP
  1286. You will need to install a program called \fIsetlogs\fR in the log directory
  1287. to do periodic cleanup on the logging files.
  1288. Run \fIsetlogs\fR now to pre-create the log files (no logging occurs
  1289. if the files are missing).
  1290. \fISetlogs\fR should also be called from \fIcron\fR at some
  1291. reasonable interval.
  1292. .PP
  1293. The \fIcheckup\fR program will complain if the \fIsetup\fR program
  1294. is missing, but this is not a critical error.
  1295. .PP
  1296. Eventually you will need to edit /etc/rc to have it start up
  1297. at least one background
  1298. .I deliver
  1299. daemon.
  1300. Be sure that there is an ampersand (`&')
  1301. on the end of the line invoking
  1302. .I deliver
  1303. since it does not automatically detach itself.
  1304. In some situations you may wish to have more than one.
  1305. See the section on tuning for more information.
  1306.