op.me
上传用户:xu_441
上传日期:2007-01-04
资源大小:1640k
文件大小:225k
源码类别:

Email客户端

开发平台:

Unix_Linux

  1. Path The pathname of the mailer
  2. Flags Special flags for this mailer
  3. Sender Rewriting set(s) for sender addresses
  4. Recipient Rewriting set(s) for recipient addresses
  5. Argv An argument vector to pass to this mailer
  6. Eol The end-of-line string for this mailer
  7. Maxsize The maximum message length to this mailer
  8. maxmessages The maximum message deliveries per connection
  9. Linelimit The maximum line length in the message body
  10. Directory The working directory for the mailer
  11. Userid The default user and group id to run as
  12. Nice The nice(2) increment for the mailer
  13. Charset The default character set for 8-bit characters
  14. Type Type information for DSN diagnostics
  15. Wait The maximum time to wait for the mailer
  16. / The root directory for the mailer
  17. .)b
  18. Only the first character of the field name is checked.
  19. .pp
  20. The following flags may be set in the mailer description.
  21. Any other flags may be used freely
  22. to conditionally assign headers to messages
  23. destined for particular mailers.
  24. Flags marked with (dg
  25. are not interpreted by the
  26. .i sendmail
  27. binary;
  28. these are the conventionally used to correlate to the flags portion
  29. of the
  30. .b H
  31. line.
  32. Flags marked with (dd
  33. apply to the mailers for the sender address
  34. rather than the usual recipient mailers.
  35. .nr ii 4n
  36. .ip a
  37. Run Extended SMTP (ESMTP) protocol (defined in RFCs 1869, 1652, and 1870).
  38. This flag defaults on if the SMTP greeting message includes the word
  39. .q ESMTP .
  40. .ip A
  41. Look up the user part of the address in the alias database.
  42. Normally this is only set for local mailers.
  43. .ip b
  44. Force a blank line on the end of a message.
  45. This is intended to work around some stupid versions of
  46. /bin/mail
  47. that require a blank line, but do not provide it themselves.
  48. It would not normally be used on network mail.
  49. .ip c
  50. Do not include comments in addresses.
  51. This should only be used if you have to work around
  52. a remote mailer that gets confused by comments.
  53. This strips addresses of the form
  54. .q "Phrase <address>"
  55. or
  56. .q "address (Comment)"
  57. down to just
  58. .q address .
  59. .ip C(dd
  60. If mail is
  61. .i received
  62. from a mailer with this flag set,
  63. any addresses in the header that do not have an at sign
  64. (c
  65. .q @ )
  66. after being rewritten by ruleset three
  67. will have the
  68. .q @domain
  69. clause from the sender envelope address
  70. tacked on.
  71. This allows mail with headers of the form:
  72. .(b
  73. From: usera@hosta
  74. To: userb@hostb, userc
  75. .)b
  76. to be rewritten as:
  77. .(b
  78. From: usera@hosta
  79. To: userb@hostb, userc@hosta
  80. .)b
  81. automatically.
  82. However, it doesn't really work reliably.
  83. .ip d
  84. Do not include angle brackets around route-address syntax addresses.
  85. This is useful on mailers that are going to pass addresses to a shell
  86. that might interpret angle brackets as I/O redirection.
  87. .ip D(dg
  88. This mailer wants a
  89. .q Date:
  90. header line.
  91. .ip e
  92. This mailer is expensive to connect to,
  93. so try to avoid connecting normally;
  94. any necessary connection will occur during a queue run.
  95. See also option
  96. .b HoldExpensive .
  97. .ip E
  98. Escape lines beginning with
  99. .q From
  100. in the message with a `>' sign.
  101. .ip f
  102. The mailer wants a
  103. .b -f
  104. .i from
  105. flag,
  106. but only if this is a network forward operation
  107. (i.e.,
  108. the mailer will give an error
  109. if the executing user
  110. does not have special permissions).
  111. .ip F(dg
  112. This mailer wants a
  113. .q From:
  114. header line.
  115. .ip g
  116. Normally,
  117. .i sendmail
  118. sends internally generated email (e.g., error messages)
  119. using the null return address
  120. as required by RFC 1123.
  121. However, some mailers don't accept a null return address.
  122. If necessary,
  123. you can set the
  124. .b g
  125. flag to prevent
  126. .i sendmail
  127. from obeying the standards;
  128. error messages will be sent as from the MAILER-DAEMON
  129. (actually, the value of the
  130. .b $n
  131. macro).
  132. .ip h
  133. Upper case should be preserved in host names
  134. for this mailer.
  135. .ip i
  136. Do User Database rewriting on envelope sender address.
  137. .ip I
  138. This mailer will be speaking SMTP
  139. to another
  140. .i sendmail
  141. *-
  142. as such it can use special protocol features.
  143. This option is not required
  144. (i.e.,
  145. if this option is omitted the transmission will still operate successfully,
  146. although perhaps not as efficiently as possible).
  147. .ip j
  148. Do User Database rewriting on recipients as well as senders.
  149. .ip k
  150. Normally when
  151. .i sendmail
  152. connects to a host via SMTP,
  153. it checks to make sure that this isn't accidently the same host name
  154. as might happen if
  155. .i sendmail
  156. is misconfigured or if a long-haul network interface is set in loopback mode.
  157. This flag disables the loopback check.
  158. It should only be used under very unusual circumstances.
  159. .ip K
  160. Currently unimplemented.
  161. Reserved for chunking.
  162. .ip l
  163. This mailer is local
  164. (i.e.,
  165. final delivery will be performed).
  166. .ip L
  167. Limit the line lengths as specified in RFC821.
  168. This deprecated option should be replaced by the
  169. .b L=
  170. mail declaration.
  171. For historic reasons, the
  172. .b L
  173. flag also sets the
  174. .b 7
  175. flag.
  176. .ip m
  177. This mailer can send to multiple users
  178. on the same host
  179. in one transaction.
  180. When a
  181. .b $u
  182. macro occurs in the
  183. .i argv
  184. part of the mailer definition,
  185. that field will be repeated as necessary
  186. for all qualifying users.
  187. .ip M(dg
  188. This mailer wants a
  189. .q Message-Id:
  190. header line.
  191. .ip n
  192. Do not insert a UNIX-style
  193. .q From
  194. line on the front of the message.
  195. .ip o
  196. Always run as the owner of the recipient mailbox.
  197. Normally
  198. .i sendmail
  199. runs as the sender for locally generated mail
  200. or as
  201. .q daemon
  202. (actually, the user specified in the
  203. .b u
  204. option)
  205. when delivering network mail.
  206. The normal behavior is required by most local mailers,
  207. which will not allow the envelope sender address
  208. to be set unless the mailer is running as daemon.
  209. This flag is ignored if the
  210. .b S
  211. flag is set.
  212. .ip p
  213. Use the route-addr style reverse-path in the SMTP
  214. .q "MAIL FROM:"
  215. command
  216. rather than just the return address;
  217. although this is required in RFC821 section 3.1,
  218. many hosts do not process reverse-paths properly.
  219. Reverse-paths are officially discouraged by RFC 1123.
  220. .ip P(dg
  221. This mailer wants a
  222. .q Return-Path:
  223. line.
  224. .ip q
  225. When an address that resolves to this mailer is verified
  226. (SMTP VRFY command),
  227. generate 250 responses instead of 252 responses.
  228. This will imply that the address is local.
  229. .ip r
  230. Same as
  231. .b f ,
  232. but sends a
  233. .b -r
  234. flag.
  235. .ip R
  236. Open SMTP connections from a
  237. .q secure
  238. port.
  239. Secure ports aren't
  240. (secure, that is)
  241. except on UNIX machines,
  242. so it is unclear that this adds anything.
  243. .ip s
  244. Strip quote characters (" and e) off of the address
  245. before calling the mailer.
  246. .ip S
  247. Don't reset the userid
  248. before calling the mailer.
  249. This would be used in a secure environment
  250. where
  251. .i sendmail
  252. ran as root.
  253. This could be used to avoid forged addresses.
  254. If the
  255. .b U=
  256. field is also specified,
  257. this flag causes the effective user id to be set to that user.
  258. .ip u
  259. Upper case should be preserved in user names
  260. for this mailer.
  261. .ip U
  262. This mailer wants UUCP-style
  263. .q From
  264. lines with the ugly
  265. .q "remote from <host>"
  266. on the end.
  267. .ip w
  268. The user must have a valid account on this machine,
  269. i.e.,
  270. getpwnam
  271. must succeed.
  272. If not,
  273. the mail is bounced.
  274. This is required to get
  275. .q &.forward
  276. capability.
  277. .ip x(dg
  278. This mailer wants a
  279. .q Full-Name:
  280. header line.
  281. .ip X
  282. This mailer want to use the hidden dot algorithm
  283. as specified in RFC821;
  284. basically,
  285. any line beginning with a dot
  286. will have an extra dot prepended
  287. (to be stripped at the other end).
  288. This insures that lines in the message containing a dot
  289. will not terminate the message prematurely.
  290. .ip z
  291. Run Local Mail Transfer Protocol (LMTP)
  292. between
  293. .i sendmail
  294. and the local mailer.
  295. This is a variant on SMTP
  296. defined in RFC 2033
  297. that is specifically designed for delivery to a local mailbox.
  298. .ip 0
  299. Don't look up MX records for hosts sent via SMTP.
  300. .ip 3
  301. Extend the list of characters converted to =XX notation
  302. when converting to Quoted-Printable
  303. to include those that don't map cleanly between ASCII and EBCDIC.
  304. Useful if you have IBM mainframes on site.
  305. .ip 5
  306. If no aliases are found for this address,
  307. pass the address through ruleset 5 for possible alternate resolution.
  308. This is intended to forward the mail to an alternate delivery spot.
  309. .ip 6
  310. Strip headers to seven bits.
  311. .ip 7
  312. Strip all output to seven bits.
  313. This is the default if the
  314. .b L
  315. flag is set.
  316. Note that clearing this option is not
  317. sufficient to get full eight bit data passed through
  318. .i sendmail .
  319. If the
  320. .b 7
  321. option is set, this is essentially always set,
  322. since the eighth bit was stripped on input.
  323. Note that this option will only impact messages
  324. that didn't have 8(->7 bit MIME conversions performed.
  325. .ip 8
  326. If set,
  327. it is acceptable to send eight bit data to this mailer;
  328. the usual attempt to do 8(->7 bit MIME conversions will be bypassed.
  329. .ip 9
  330. If set,
  331. do
  332. .i limited
  333. 7(->8 bit MIME conversions.
  334. These conversions are limited to text/plain data.
  335. .ip :
  336. Check addresses to see if they begin
  337. .q :include: ;
  338. if they do, convert them to the
  339. .q *include*
  340. mailer.
  341. .ip |
  342. Check addresses to see if they begin with a `|';
  343. if they do, convert them to the
  344. .q prog
  345. mailer.
  346. .ip /
  347. Check addresses to see if they begin with a `/';
  348. if they do, convert them to the
  349. .q *file*
  350. mailer.
  351. .ip @
  352. Look up addresses in the user database.
  353. .ip %
  354. Do not attempt delivery on initial recipient of a message
  355. or on queue runs
  356. unless the queued message is selected
  357. using one of the -qI/-qR/-qS queue run modifiers
  358. or an ETRN request.
  359. .pp
  360. Configuration files prior to level 6
  361. assume the `A', `w', `5', `:', `|', `/', and `@' options
  362. on the mailer named
  363. .q local .
  364. .pp
  365. The mailer with the special name
  366. .q error
  367. can be used to generate a user error.
  368. The (optional) host field is an exit status to be returned,
  369. and the user field is a message to be printed.
  370. The exit status may be numeric or one of the values
  371. USAGE, NOUSER, NOHOST, UNAVAILABLE, SOFTWARE, TEMPFAIL, PROTOCOL, or CONFIG
  372. to return the corresponding EX_ exit code,
  373. or an enhanced error code as described in RFC 1893,
  374. .ul
  375. Enhanced Mail System Status Codes.
  376. For example, the entry:
  377. .(b
  378. $#error $@ NOHOST $: Host unknown in this domain
  379. .)b
  380. on the RHS of a rule
  381. will cause the specified error to be generated
  382. and the
  383. .q "Host unknown"
  384. exit status to be returned
  385. if the LHS matches.
  386. This mailer is only functional in rulesets 0, 5,
  387. or one of the check_* rulesets.
  388. .pp
  389. The mailer with the special name
  390. .q discard
  391. causes any mail sent to it to be discarded
  392. but otherwise treated as though it were successfully delivered.
  393. .pp
  394. The mailer named
  395. .q local
  396. .i must
  397. be defined in every configuration file.
  398. This is used to deliver local mail,
  399. and is treated specially in several ways.
  400. Additionally, three other mailers named
  401. .q prog ,
  402. .q *file* ,
  403. and
  404. .q *include*
  405. may be defined to tune the delivery of messages to programs,
  406. files,
  407. and :include: lists respectively.
  408. They default to:
  409. .(b
  410. Mprog, P=/bin/sh, F=lsoDq9, T=DNS/RFC822/X-Unix, A=sh -c $u
  411. M*file*, P=[FILE], F=lsDFMPEouq9, T=DNS/RFC822/X-Unix, A=FILE $u
  412. M*include*, P=/dev/null, F=su, A=INCLUDE $u
  413. .)b
  414. .pp
  415. The Sender and Recipient rewriting sets
  416. may either be a simple ruleset id
  417. or may be two ids separated by a slash;
  418. if so, the first rewriting set is applied to envelope
  419. addresses
  420. and the second is applied to headers.
  421. Setting any value zero disables corresponding mailer-specific rewriting.
  422. .pp
  423. The Directory
  424. is actually a colon-separated path of directories to try.
  425. For example, the definition
  426. .q D=$z:/
  427. first tries to execute in the recipient's home directory;
  428. if that is not available,
  429. it tries to execute in the root of the filesystem.
  430. This is intended to be used only on the
  431. .q prog
  432. mailer,
  433. since some shells (such as
  434. .i csh )
  435. refuse to execute if they cannot read the home directory.
  436. Since the queue directory is not normally readable by unprivileged users
  437. .i csh
  438. scripts as recipients can fail.
  439. .pp
  440. The Userid
  441. specifies the default user and group id to run as,
  442. overriding the
  443. .b DefaultUser
  444. option (q.v.).
  445. If the
  446. .b S
  447. mailer flag is also specified,
  448. this user and group will be set as the
  449. effective uid and gid for the process.
  450. This may be given as
  451. .i user:group
  452. to set both the user and group id;
  453. either may be an integer or a symbolic name to be looked up
  454. in the
  455. .i passwd
  456. and
  457. .i group
  458. files respectively.
  459. If only a symbolic user name is specified,
  460. the group id in the
  461. .i passwd
  462. file for that user is used as the group id.
  463. .pp
  464. The Charset field
  465. is used when converting a message to MIME;
  466. this is the character set used in the
  467. Content-Type: header.
  468. If this is not set, the
  469. .b DefaultCharset
  470. option is used,
  471. and if that is not set, the value
  472. .q unknown-8bit
  473. is used.
  474. .b WARNING:
  475. this field applies to the sender's mailer,
  476. not the recipient's mailer.
  477. For example, if the envelope sender address
  478. lists an address on the local network
  479. and the recipient is on an external network,
  480. the character set will be set from the Charset= field
  481. for the local network mailer,
  482. not that of the external network mailer.
  483. .pp
  484. The Type= field
  485. sets the type information
  486. used in MIME error messages
  487. as defined by
  488. RFC 1894.
  489. It is actually three values separated by slashes:
  490. the MTA-type (that is, the description of how hosts are named),
  491. the address type (the description of e-mail addresses),
  492. and the diagnostic type (the description of error diagnostic codes).
  493. Each of these must be a registered value
  494. or begin with
  495. .q X- .
  496. The default is
  497. .q dns/rfc822/smtp .
  498. .pp
  499. The m= field specifies the maximum number of messages to attempt to deliver 
  500. on a single SMTP or LMTP connection.
  501. .pp
  502. The /= field specifies a new root directory for the mailer.  The path is
  503. macro expanded and then passed to the
  504. .q chroot
  505. system call.  The root directory is changed before the Directory field is
  506. consulted or the uid is changed.
  507. .pp
  508. The Wait= field specifies the maximum time to wait for the
  509. mailer to return after sending all data to it.
  510. This applies to mailers that have been forked by
  511. .i sendmail .
  512. .sh 2 "H *- Define Header"
  513. .pp
  514. The format of the header lines that
  515. .i sendmail
  516. inserts into the message
  517. are defined by the
  518. .b H
  519. line.
  520. The syntax of this line is:
  521. .(b F
  522. .b H [c
  523. .b ? c
  524. .i mflags c
  525. .b ? |c
  526. .i ${macro} c
  527. .b ]c
  528. .i hname c
  529. .b :
  530. .i htemplate
  531. .)b
  532. Continuation lines in this spec
  533. are reflected directly into the outgoing message.
  534. The
  535. .i htemplate
  536. is macro-expanded before insertion into the message.
  537. If the
  538. .i mflags
  539. (surrounded by question marks)
  540. are specified,
  541. at least one of the specified flags
  542. must be stated in the mailer definition
  543. for this header to be automatically output.
  544. If a
  545. .i ${macro}
  546. is specified,
  547. the header will be automatically output
  548. if the macro is set.
  549. The macro may be set using any of the normal methods,
  550. including using the
  551. .b macro
  552. storage map in a ruleset.
  553. If one of these headers is in the input
  554. it is reflected to the output
  555. regardless of these flags or macros.
  556. .pp
  557. Some headers have special semantics
  558. that will be described later.
  559. .pp
  560. A secondary syntax allows validation of headers as they are being read.
  561. To enable validation, use:
  562. .(b
  563. .b H c
  564. .i Header c
  565. .b ": $>" c
  566. .i Ruleset
  567. .b H c
  568. .i Header c
  569. .b ": $>+" c
  570. .i Ruleset
  571. .)b
  572. The indicated
  573. .i Ruleset
  574. is called for the specified
  575. .i Header ,
  576. and can return
  577. .b $#error
  578. to reject the message or
  579. .b $#discard
  580. to discard the message
  581. (as with the other
  582. .b check_ *
  583. rulesets).
  584. The header is treated as a structured field,
  585. that is,
  586. comments (in parentheses) are deleted before processing,
  587. unless the second form
  588. .b $>+
  589. is used.
  590. .pp
  591. For example, the configuration lines:
  592. .(b
  593. HMessage-Id: $>CheckMessageId
  594. SCheckMessageId
  595. R< $+ @ $+  > $@ OK
  596. R$* $#error $: Illegal Message-Id header
  597. .)b
  598. would refuse any message that had a Message-Id: header of any of the
  599. following forms:
  600. .(b
  601. Message-Id: <>
  602. Message-Id: some text
  603. Message-Id: <legal text@domain> extra crud
  604. .)b
  605. A default ruleset that is called for headers which don't have a
  606. specific ruleset defined for them can be specified by:
  607. .(b
  608. .b H c
  609. .i * c
  610. .b ": $>" c
  611. .i Ruleset
  612. .)b
  613. or
  614. .(b
  615. .b H c
  616. .i * c
  617. .b ": $>+" c
  618. .i Ruleset
  619. .)b
  620. .sh 2 "O *- Set Option"
  621. .pp
  622. There are a number of
  623. global
  624. options that
  625. can be set from a configuration file.
  626. Options are represented by full words;
  627. some are also representable as single characters
  628. for back compatibility.
  629. The syntax of this line is:
  630. .(b F
  631. .b O 
  632. .i option c
  633. .b = c
  634. .i value
  635. .)b
  636. This sets option
  637. .i option
  638. to be
  639. .i value .
  640. Note that there
  641. .i must
  642. be a space between the letter `O' and the name of the option.
  643. An older version is:
  644. .(b F
  645. .b O c
  646. .i o|value
  647. .)b
  648. where the option
  649. .i o
  650. is a single character.
  651. Depending on the option,
  652. .i value
  653. may be a string, an integer,
  654. a boolean
  655. (with legal values
  656. .q t ,
  657. .q T ,
  658. .q f ,
  659. or
  660. .q F ;
  661. the default is TRUE),
  662. or
  663. a time interval.
  664. .pp
  665. The options supported (with the old, one character names in brackets) are:
  666. .nr ii 1i
  667. .ip "AliasFile=fIspec, spec, ...fP"
  668. [A]
  669. Specify possible alias file(s).
  670. Each
  671. .i spec
  672. should be in the format
  673. ``c
  674. .i class c
  675. .b :
  676. .i file ''
  677. where
  678. .i class c
  679. .b :
  680. is optional and defaults to ``implicit''.
  681. Depending on how
  682. .i sendmail
  683. is compiled, valid classes are
  684. .q implicit
  685. (search through a compiled-in list of alias file types,
  686. for back compatibility),
  687. .q hash
  688. (if
  689. .sm NEWDB
  690. is specified),
  691. .q dbm
  692. (if
  693. .sm NDBM
  694. is specified),
  695. .q stab
  696. (internal symbol table *- not normally used
  697. unless you have no other database lookup),
  698. or
  699. .q nis
  700. (if
  701. .sm NIS
  702. is specified).
  703. If a list of
  704. .i spec s
  705. are provided,
  706. .i sendmail
  707. searches them in order.
  708. .ip AliasWait=fItimeoutfP
  709. [a]
  710. If set,
  711. wait up to
  712. .i timeout
  713. (units default to minutes)
  714. for an
  715. .q @:@
  716. entry to exist in the alias database
  717. before starting up.
  718. If it does not appear in the
  719. .i timeout
  720. interval
  721. rebuild the database
  722. (if the
  723. .b AutoRebuildAliases
  724. option is also set)
  725. or issue a warning.
  726. .ip AllowBogusHELO
  727. [no short name]
  728. If set, allow HELO SMTP commands that don't include a host name.
  729. Setting this violates RFC 1123 section 5.2.5,
  730. but is necessary to interoperate with several SMTP clients.
  731. If there is a value, it is still checked for legitimacy.
  732. .ip AuthMechanisms
  733. [no short name]
  734. List of authentication mechanisms for AUTH (separated by spaces).
  735. The advertised list of authentication mechanisms will be the
  736. intersection of this list and the list of available mechanisms as
  737. determined by the CYRUS SASL library.
  738. .ip AuthOptions
  739. [no short name]
  740. When to use the AUTH= parameter for the MAIL FROM command;
  741. .(b
  742. .ta 1i
  743. T Try when SMTP AUTH available (default).
  744. A Only when authentication succeeded.
  745. .)b
  746. .ip AutoRebuildAliases
  747. [D]
  748. If set,
  749. rebuild the alias database if necessary and possible.
  750. The rebuild will happen the next time an alias is looked up.
  751. If this option is not set,
  752. .i sendmail
  753. will never rebuild the alias database
  754. unless explicitly requested
  755. using
  756. .b -bi .
  757. .b NOTE :
  758. There is a potential for a denial of service attack if this is set.
  759. This option is deprecated and
  760. will be removed from a future version.
  761. .ip BlankSub=fIcfP
  762. [B]
  763. Set the blank substitution character to
  764. .i c .
  765. Unquoted spaces in addresses are replaced by this character.
  766. Defaults to space (i.e., no change is made).
  767. .ip CheckAliases
  768. [n]
  769. Validate the RHS of aliases when rebuilding the alias database.
  770. .ip CheckpointInterval=fINfP
  771. [C]
  772. Checkpoints the queue every
  773. .i N
  774. (default 10)
  775. addresses sent.
  776. If your system crashes during delivery to a large list,
  777. this prevents retransmission to any but the last
  778. .I N
  779. recipients.
  780. .ip ClassFactor=fIfactfP
  781. [z]
  782. The indicated
  783. .i fact or
  784. is multiplied by the message class
  785. (determined by the Precedence: field in the user header
  786. and the
  787. .b P
  788. lines in the configuration file)
  789. and subtracted from the priority.
  790. Thus, messages with a higher Priority: will be favored.
  791. Defaults to 1800.
  792. .ip ClientPortOptions=fIoptionsfP
  793. [O]
  794. Set client SMTP options.
  795. The options are
  796. .i key=value
  797. pairs separated by commas.
  798. Known keys are:
  799. .(b
  800. .ta 1i
  801. Port Name/number of source port for connection (defaults to any free port)
  802. Addr Address mask (defaults INADDR_ANY)
  803. Family Address family (defaults to INET)
  804. SndBufSize Size of TCP send buffer
  805. RcvBufSize Size of TCP receive buffer
  806. Modifier Options (flags) for the daemon
  807. .)b
  808. The
  809. .i Addr ess
  810. mask may be a numeric address in dot notation
  811. or a network name.
  812. .i Modifier
  813. can be the following character:
  814. .(b
  815. .ta 1i
  816. h use name of interface for HELO command
  817. .)b
  818. If ``h'' is set, the name corresponding to the outgoing interface
  819. address (whether chosen via the Connection parameter or
  820. the default) is used for the HELO/EHLO command.
  821. .ip ColonOkInAddr
  822. [no short name]
  823. If set, colons are acceptable in e-mail addresses
  824. (e.g.,
  825. .q host:user ).
  826. If not set, colons indicate the beginning of a RFC 822 group construct
  827. (c
  828. .q "groupname: member1, member2, ... memberN;" ).
  829. Doubled colons are always acceptable
  830. (c
  831. .q nodename::user )
  832. and proper route-addr nesting is understood
  833. (c
  834. .q <@relay:user@host> ).
  835. Furthermore, this option defaults on if the configuration version level
  836. is less than 6 (for back compatibility).
  837. However, it must be off for full compatibility with RFC 822.
  838. .ip ConnectionCacheSize=fINfP
  839. [k]
  840. The maximum number of open connections that will be cached at a time.
  841. The default is one.
  842. This delays closing the current connection until
  843. either this invocation of
  844. .i sendmail
  845. needs to connect to another host
  846. or it terminates.
  847. Setting it to zero defaults to the old behavior,
  848. that is, connections are closed immediately.
  849. Since this consumes file descriptors,
  850. the connection cache should be kept small:
  851. 4 is probably a practical maximum.
  852. .ip ConnectionCacheTimeout=fItimeoutfP
  853. [K]
  854. The maximum amount of time a cached connection will be permitted to idle
  855. without activity.
  856. If this time is exceeded,
  857. the connection is immediately closed.
  858. This value should be small (on the order of ten minutes).
  859. Before
  860. .i sendmail
  861. uses a cached connection,
  862. it always sends a RSET command
  863. to check the connection;
  864. if this fails, it reopens the connection.
  865. This keeps your end from failing if the other end times out.
  866. The point of this option is to be a good network neighbor
  867. and avoid using up excessive resources
  868. on the other end.
  869. The default is five minutes.
  870. .ip ConnectOnlyTo=fIaddressfP
  871. [no short name]
  872. This can be used to
  873. override the connection address (for testing purposes).
  874. .ip ConnectionRateThrottle=fINfP
  875. [no short name]
  876. If set to a positive value,
  877. allow no more than
  878. .i N
  879. incoming daemon connections in a one second period.
  880. This is intended to flatten out peaks
  881. and allow the load average checking to cut in.
  882. Defaults to zero (no limits).
  883. .ip ControlSocketName=fInamefP
  884. [no short name]
  885. Name of the control socket for daemon management.
  886. A running
  887. .i sendmail
  888. daemon can be controlled through this named socket.
  889. Available commands are:
  890. .i help,
  891. .i restart,
  892. .i shutdown,
  893. and
  894. .i status.
  895. The
  896. .i status
  897. command returns the current number of daemon children,
  898. the maximum number of daemon children,
  899. the free disk space (in blocks) of the queue directory,
  900. and the load average of the machine expressed as an integer.
  901. If not set, no control socket will be available.
  902. Solaris and pre-4.4BSD kernel users should see the note in sendmail/README .
  903. .ip DaemonPortOptions=fIoptionsfP
  904. [O]
  905. Set server SMTP options.
  906. The options are
  907. .i key=value
  908. pairs.
  909. Known keys are:
  910. .(b
  911. .ta 1i
  912. Name User-definable name for the daemon (defaults to "Daemon#")
  913. Port Name/number of listening port (defaults to "smtp")
  914. Addr Address mask (defaults INADDR_ANY)
  915. Family Address family (defaults to INET)
  916. Listen Size of listen queue (defaults to 10)
  917. Modifier Options (flags) for the daemon
  918. SndBufSize Size of TCP send buffer
  919. RcvBufSize Size of TCP receive buffer
  920. .)b
  921. The
  922. .i Name
  923. field is used for error messages and logging.
  924. The
  925. .i Addr ess
  926. mask may be a numeric address in dot notation
  927. or a network name.
  928. .i Modifier
  929. can be a sequence (without any delimiters)
  930. of the following characters:
  931. .(b
  932. .ta 1i
  933. a require authentication
  934. b bind to interface through which mail has been received
  935. c perform hostname canonification (.cf)
  936. f require fully qualified hostname (.cf)
  937. u allow unqualified addresses (.cf)
  938. C don't perform hostname canonification
  939. E disallow ETRN (see RFC 2476)
  940. .)b
  941. That is, one way to specify a message submission agent (MSA) that
  942. requires authentication is:
  943. .(b
  944. O DaemonPortOptions=Name=MSA, Port=587, M=Ea
  945. .)b
  946. The modifiers that are marked with "(.cf)" have only
  947. effect in the standard configuration file, in which
  948. they are available via
  949. .b ${daemon_flags} .
  950. The flags ``c'' and ``C'' can change the default for
  951. hostname canonification in the
  952. .i sendmail.cf
  953. file.
  954. See the relevant documentation for
  955. .sm FEATURE(nocanonify) .
  956. The modifier ``f'' disallows addresses of the form
  957. .b user@host
  958. unless they are submitted directly.
  959. The flag ``u'' allows unqualified sender addresses.
  960. ``b'' forces sendmail to bind to the interface
  961. through which the e-mail has been
  962. received for the outgoing connection.
  963. .b WARNING:
  964. Use ``b''
  965. only if outgoing mail can be routed through the incoming connection's
  966. interface to its destination. No attempt is made to catch problems due to a
  967. misconfiguration of this parameter, use it only for virtual hosting
  968. where each virtual interface can connect to every possible location.
  969. This will also override possible settings via
  970. .b ClientPortOptions.
  971. Note,
  972. .i sendmail
  973. will listen on a new socket
  974. for each occurence of the DaemonPortOptions option
  975. in a configuration file.
  976. .ip DefaultAuthInfo
  977. [no short name]
  978. Filename that contains default authentication information for outgoing
  979. connections. This file must contain the user id, the authorization id,
  980. the password (plain text), and the realm to use
  981. on separate lines and must be readable by
  982. root (or the trusted user) only.
  983. If no realm is specified,
  984. .b $j 
  985. is used.
  986. .ip DefaultCharSet=fIcharsetfP
  987. [no short name]
  988. When a message that has 8-bit characters but is not in MIME format
  989. is converted to MIME
  990. (see the EightBitMode option)
  991. a character set must be included in the Content-Type: header.
  992. This character set is normally set from the Charset= field
  993. of the mailer descriptor.
  994. If that is not set, the value of this option is used.
  995. If this option is not set, the value
  996. .q unknown-8bit
  997. is used.
  998. .ip DataFileBufferSize=fIthresholdfP
  999. [no short name]
  1000. Set the
  1001. .i threshold ,
  1002. in bytes,
  1003. before a memory-based
  1004. queue data file
  1005. becomes disk-based.
  1006. The default is 4096 bytes.
  1007. .ip DeadLetterDrop=fIfilefP
  1008. [no short name]
  1009. Defines the location of the system-wide dead.letter file,
  1010. formerly hardcoded to /usr/tmp/dead.letter.
  1011. If this option is not set (the default),
  1012. sendmail will not attempt to save to a system-wide dead.letter file
  1013. in the event
  1014. it can not bounce the mail to the user or postmaster.
  1015. Instead, it will rename the qf file
  1016. as it has in the past
  1017. when the dead.letter file could not be opened.
  1018. .ip DefaultUser=fIuser:groupfP
  1019. [u]
  1020. Set the default userid for mailers to
  1021. .i user:group .
  1022. If
  1023. .i group
  1024. is omitted and
  1025. .i user
  1026. is a user name
  1027. (as opposed to a numeric user id)
  1028. the default group listed in the /etc/passwd file for that user is used
  1029. as the default group.
  1030. Both
  1031. .i user
  1032. and
  1033. .i group
  1034. may be numeric.
  1035. Mailers without the
  1036. .i S
  1037. flag in the mailer definition
  1038. will run as this user.
  1039. Defaults to 1:1.
  1040. The value can also be given as a symbolic user name.**
  1041. .(f
  1042. **The old
  1043. .b g
  1044. option has been combined into the
  1045. .b DefaultUser
  1046. option.
  1047. .)f
  1048. .ip DeliveryMode=fIxfP
  1049. [d]
  1050. Deliver in mode
  1051. .i x .
  1052. Legal modes are:
  1053. .(b
  1054. .ta 4n
  1055. i Deliver interactively (synchronously)
  1056. b Deliver in background (asynchronously)
  1057. q Just queue the message (deliver during queue run)
  1058. d Defer delivery and all map lookups (deliver during queue run)
  1059. .)b
  1060. Defaults to ``b'' if no option is specified,
  1061. ``i'' if it is specified but given no argument
  1062. (i.e., ``Od'' is equivalent to ``Odi'').
  1063. The
  1064. .b -v
  1065. command line flag sets this to
  1066. .b i .
  1067. .ip DialDelay=fIsleeptimefP
  1068. [no short name]
  1069. Dial-on-demand network connections can see timeouts
  1070. if a connection is opened before the call is set up.
  1071. If this is set to an interval and a connection times out
  1072. on the first connection being attempted
  1073. .i sendmail
  1074. will sleep for this amount of time and try again.
  1075. This should give your system time to establish the connection
  1076. to your service provider.
  1077. Units default to seconds, so
  1078. .q DialDelay=5
  1079. uses a five second delay.
  1080. Defaults to zero
  1081. (no retry).
  1082. .ip DontBlameSendmail=fIoption,option,...fP
  1083. [no short name]
  1084. In order to avoid possible cracking attempts
  1085. caused by world- and group-writable files and directories,
  1086. .i sendmail
  1087. does paranoid checking when opening most of its support files.
  1088. If for some reason you absolutely must run with,
  1089. for example,
  1090. a group-writable
  1091. .i /etc
  1092. directory,
  1093. then you will have to turn off this checking
  1094. (at the cost of making your system more vulnerable to attack).
  1095. The arguments are individual options that turn off checking:
  1096. .(b
  1097. Safe
  1098. AssumeSafeChown
  1099. ClassFileInUnsafeDirPath
  1100. DontWarnForwardFileInUnsafeDirPath
  1101. ErrorHeaderInUnsafeDirPath
  1102. FileDeliveryToHardLink
  1103. FileDeliveryToSymLink
  1104. ForwardFileInUnsafeDirPath
  1105. ForwardFileInUnsafeDirPathSafe
  1106. ForwardFileIngroupWritableDirPath
  1107. GroupWritableAliasFile
  1108. GroupWritableDirPathSafe
  1109. GroupWritableForwardFileSafe
  1110. GroupWritableIncludeFileSafe
  1111. HelpFileinUnsafeDirPath
  1112. IncludeFileInUnsafeDirPath
  1113. IncludeFileInUnsafeDirPathSafe
  1114. IncludeFileIngroupWritableDirPath
  1115. LinkedAliasFileInWritableDir
  1116. LinkedClassFileInWritableDir
  1117. LinkedForwardFileInWritableDir
  1118. LinkedIncludeFileInWritableDir
  1119. LinkedMapInWritableDir
  1120. LinkedServiceSwitchFileInWritableDir
  1121. MapInUnsafeDirPath
  1122. NonRootSafeAddr
  1123. RunProgramInUnsafeDirPath
  1124. RunWritableProgram
  1125. TrustStickyBit
  1126. WorldWritableAliasFile
  1127. WriteMapToHardLink
  1128. WriteMapToSymLink
  1129. WriteStatsToHardLink
  1130. WriteStatsToSymLink
  1131. .)b
  1132. .b Safe
  1133. is the default.
  1134. The details of these flags are described above.
  1135. ."XXX should have more here!!!  XXX
  1136. .b "Use of this option is not recommended."
  1137. .ip DontExpandCnames
  1138. [no short name]
  1139. The standards say that all host addresses used in a mail message
  1140. must be fully canonical.
  1141. For example, if your host is named
  1142. .q Cruft.Foo.ORG
  1143. and also has an alias of
  1144. .q FTP.Foo.ORG ,
  1145. the former name must be used at all times.
  1146. This is enforced during host name canonification
  1147. ($[ ... $] lookups).
  1148. If this option is set, the protocols are ignored and the
  1149. .q wrong
  1150. thing is done.
  1151. However, the IETF is moving toward changing this standard,
  1152. so the behavior may become acceptable.
  1153. Please note that hosts downstream may still rewrite the address
  1154. to be the true canonical name however.
  1155. .ip DontInitGroups
  1156. [no short name]
  1157. If set,
  1158. .i sendmail
  1159. will avoid using the initgroups(3) call.
  1160. If you are running NIS,
  1161. this causes a sequential scan of the groups.byname map,
  1162. which can cause your NIS server to be badly overloaded in a large domain.
  1163. The cost of this is that the only group found for users
  1164. will be their primary group (the one in the password file),
  1165. which will make file access permissions somewhat more restrictive.
  1166. Has no effect on systems that don't have group lists.
  1167. .ip DontProbeInterfaces
  1168. [no short name]
  1169. .i Sendmail
  1170. normally finds the names of all interfaces active on your machine
  1171. when it starts up
  1172. and adds their name to the
  1173. .b $=w
  1174. class of known host aliases.
  1175. If you have a large number of virtual interfaces
  1176. or if your DNS inverse lookups are slow
  1177. this can be time consuming.
  1178. This option turns off that probing.
  1179. However, you will need to be certain to include all variant names
  1180. in the
  1181. .b $=w
  1182. class by some other mechanism.
  1183. .ip DontPruneRoutes
  1184. [R]
  1185. Normally,
  1186. .i sendmail
  1187. tries to eliminate any unnecessary explicit routes
  1188. when sending an error message
  1189. (as discussed in RFC 1123 (sc 5.2.6).
  1190. For example,
  1191. when sending an error message to
  1192. .(b
  1193. <@known1,@known2,@known3:user@unknown>
  1194. .)b
  1195. .i sendmail
  1196. will strip off the
  1197. .q @known1,@known2
  1198. in order to make the route as direct as possible.
  1199. However, if the
  1200. .b R
  1201. option is set, this will be disabled,
  1202. and the mail will be sent to the first address in the route,
  1203. even if later addresses are known.
  1204. This may be useful if you are caught behind a firewall.
  1205. .ip DoubleBounceAddress=fIerror-addressfP
  1206. [no short name]
  1207. If an error occurs when sending an error message,
  1208. send the error report
  1209. (termed a
  1210. .q "double bounce"
  1211. because it is an error
  1212. .q bounce
  1213. that occurs when trying to send another error
  1214. .q bounce )
  1215. to the indicated address.
  1216. The address is macro expanded
  1217. at the time of delivery.
  1218. If not set, defaults to
  1219. .q postmaster .
  1220. .ip EightBitMode=fIactionfP
  1221. [8]
  1222. Set handling of eight-bit data.
  1223. There are two kinds of eight-bit data:
  1224. that declared as such using the
  1225. .b BODY=8BITMIME
  1226. ESMTP declaration or the
  1227. .b -B8BITMIME
  1228. command line flag,
  1229. and undeclared 8-bit data, that is,
  1230. input that just happens to be eight bits.
  1231. There are three basic operations that can happen:
  1232. undeclared 8-bit data can be automatically converted to 8BITMIME,
  1233. undeclared 8-bit data can be passed as-is without conversion to MIME
  1234. (``just send 8''),
  1235. and declared 8-bit data can be converted to 7-bits
  1236. for transmission to a non-8BITMIME mailer.
  1237. The possible
  1238. .i action s
  1239. are:
  1240. .(b
  1241. ."  r Reject undeclared 8-bit data;
  1242. ." don't convert 8BITMIME(->7BIT (``reject'')
  1243.   s Reject undeclared 8-bit data (``strict'')
  1244. ." do convert 8BITMIME(->7BIT (``strict'')
  1245. ."  c Convert undeclared 8-bit data to MIME;
  1246. ." don't convert 8BITMIME(->7BIT (``convert'')
  1247.   m Convert undeclared 8-bit data to MIME (``mime'')
  1248. ." do convert 8BITMIME(->7BIT (``mime'')
  1249. ."  j Pass undeclared 8-bit data;
  1250. ." don't convert 8BITMIME(->7BIT (``just send 8'')
  1251.   p Pass undeclared 8-bit data (``pass'')
  1252. ." do convert 8BITMIME(->7BIT (``pass'')
  1253. ."  a Adaptive algorithm: see below
  1254. .)b
  1255. ."The adaptive algorithm is to accept 8-bit data,
  1256. ."converting it to 8BITMIME only if the receiver understands that,
  1257. ."otherwise just passing it as undeclared 8-bit data;
  1258. ."8BITMIME(->7BIT conversions are done.
  1259. In all cases properly declared 8BITMIME data will be converted to 7BIT
  1260. as needed.
  1261. .ip ErrorHeader=fIfile-or-messagefP
  1262. [E]
  1263. Prepend error messages with the indicated message.
  1264. If it begins with a slash,
  1265. it is assumed to be the pathname of a file
  1266. containing a message (this is the recommended setting).
  1267. Otherwise, it is a literal message.
  1268. The error file might contain the name, email address, and/or phone number
  1269. of a local postmaster who could provide assistance
  1270. to end users.
  1271. If the option is missing or null,
  1272. or if it names a file which does not exist or which is not readable,
  1273. no message is printed.
  1274. .ip ErrorMode=fIxfP
  1275. [e]
  1276. Dispose of errors using mode
  1277. .i x .
  1278. The values for
  1279. .i x
  1280. are:
  1281. .(b
  1282. p Print error messages (default)
  1283. q No messages, just give exit status
  1284. m Mail back errors
  1285. w Write back errors (mail if user not logged in)
  1286. e Mail back errors and give zero exit stat always
  1287. .)b
  1288. .ip FallbackMXhost=fIfallbackhostfP
  1289. [V]
  1290. If specified, the
  1291. .i fallbackhost
  1292. acts like a very low priority MX
  1293. on every host.
  1294. This is intended to be used by sites with poor network connectivity.
  1295. Messages which are undeliverable due to temporary address failures
  1296. (e.g., DNS failure)
  1297. also go to the FallBackMX host.
  1298. .ip ForkEachJob
  1299. [Y]
  1300. If set,
  1301. deliver each job that is run from the queue in a separate process.
  1302. Use this option if you are short of memory,
  1303. since the default tends to consume considerable amounts of memory
  1304. while the queue is being processed.
  1305. .ip ForwardPath=fIpathfP
  1306. [J]
  1307. Set the path for searching for users' .forward files.
  1308. The default is
  1309. .q $z/.forward .
  1310. Some sites that use the automounter may prefer to change this to
  1311. .q /var/forward/$u
  1312. to search a file with the same name as the user in a system directory.
  1313. It can also be set to a sequence of paths separated by colons;
  1314. .i sendmail
  1315. stops at the first file it can successfully and safely open.
  1316. For example,
  1317. .q /var/forward/$u:$z/.forward
  1318. will search first in /var/forward/c
  1319. .i username
  1320. and then in
  1321. .i ~username /.forward
  1322. (but only if the first file does not exist).
  1323. .ip HelpFile=fIfilefP
  1324. [H]
  1325. Specify the help file
  1326. for SMTP.
  1327. If no file name is specified, "helpfile" is used.
  1328. .ip HoldExpensive
  1329. [c]
  1330. If an outgoing mailer is marked as being expensive,
  1331. don't connect immediately.
  1332. This requires that queueing be compiled in,
  1333. since it will depend on a queue run process to
  1334. actually send the mail.
  1335. .ip HostsFile=fIpathfP
  1336. [no short name]
  1337. The path to the hosts database,
  1338. normally
  1339. .q /etc/hosts .
  1340. This option is only consulted when sendmail
  1341. is canonifying addresses,
  1342. and then only when
  1343. .q files
  1344. is in the
  1345. .q hosts
  1346. service switch entry.
  1347. In particular, this file is
  1348. .i never
  1349. used when looking up host addresses;
  1350. that is under the control of the system
  1351. .i gethostbyname (3)
  1352. routine.
  1353. .ip HostStatusDirectory=fIpathfP
  1354. [no short name]
  1355. The location of the long term host status information.
  1356. When set,
  1357. information about the status of hosts
  1358. (e.g., host down or not accepting connections)
  1359. will be shared between all
  1360. .i sendmail
  1361. processes;
  1362. normally, this information is only held within a single queue run.
  1363. This option requires a connection cache of at least 1 to function.
  1364. If the option begins with a leading `/',
  1365. it is an absolute pathname;
  1366. otherwise,
  1367. it is relative to the mail queue directory.
  1368. A suggested value for sites desiring persistent host status is
  1369. .q &.hoststat
  1370. (i.e., a subdirectory of the queue directory).
  1371. .ip IgnoreDots
  1372. [i]
  1373. Ignore dots in incoming messages.
  1374. This is always disabled (that is, dots are always accepted)
  1375. when reading SMTP mail.
  1376. .ip LDAPDefaultSpec=fIspecfP
  1377. [no short name]
  1378. Sets a default map specification for LDAP maps.
  1379. The value should only contain LDAP specific settings
  1380. such as
  1381. .q "-h host -p port -d bindDN" .
  1382. The settings will be used for all LDAP maps
  1383. unless the individual map specification overrides a setting.
  1384. This option should be set before any LDAP maps are defined.
  1385. .ip LogLevel=fInfP
  1386. [L]
  1387. Set the log level to
  1388. .i n .
  1389. Defaults to 9.
  1390. .ip MfIx|valuefP
  1391. [no long version]
  1392. Set the macro
  1393. .i x
  1394. to
  1395. .i value .
  1396. This is intended only for use from the command line.
  1397. The
  1398. .b -M
  1399. flag is preferred.
  1400. .ip MatchGECOS
  1401. [G]
  1402. Allow fuzzy matching on the GECOS field.
  1403. If this flag is set,
  1404. and the usual user name lookups fail
  1405. (that is, there is no alias with this name and a
  1406. .i getpwnam
  1407. fails),
  1408. sequentially search the password file
  1409. for a matching entry in the GECOS field.
  1410. This also requires that MATCHGECOS
  1411. be turned on during compilation.
  1412. This option is not recommended.
  1413. .ip MaxAliasRecursion=fINfP
  1414. [no short name]
  1415. The maximum depth of alias recursion (default: 10).
  1416. .ip MaxDaemonChildren=fINfP
  1417. [no short name]
  1418. If set,
  1419. .i sendmail
  1420. will refuse connections when it has more than
  1421. .i N
  1422. children processing incoming mail.
  1423. This does not limit the number of outgoing connections.
  1424. If not set, there is no limit to the number of children --
  1425. that is, the system load averaging controls this.
  1426. .ip MaxHeadersLength=fINfP
  1427. [no short name]
  1428. The maximum length of the sum of all headers.
  1429. This can be used to prevent a denial of service attack.
  1430. The default is no limit.
  1431. .ip MaxHopCount=fINfP
  1432. [h]
  1433. The maximum hop count.
  1434. Messages that have been processed more than
  1435. .i N
  1436. times are assumed to be in a loop and are rejected.
  1437. Defaults to 25.
  1438. .ip MaxHostStatAge=fIagefP
  1439. [no short name]
  1440. Not yet implemented.
  1441. This option specifies how long host status information will be retained.
  1442. For example, if a host is found to be down,
  1443. connections to that host will not be retried for this interval.
  1444. The units default to minutes.
  1445. .ip MaxMessageSize=fINfP
  1446. [no short name]
  1447. Specify the maximum message size
  1448. to be advertised in the ESMTP EHLO response.
  1449. Messages larger than this will be rejected.
  1450. .ip MaxMimeHeaderLength=fIN[/M]fP
  1451. [no short name]
  1452. Sets the maximum length of certain MIME header field values
  1453. to
  1454. .i N
  1455. characters.
  1456. For some of these headers which take parameters,
  1457. the maximum length of each parameter is set to
  1458. .i M
  1459. if specified.  If
  1460. .i /M
  1461. is not specified, one half of
  1462. .i N
  1463. will be used.
  1464. By default,
  1465. these values are 0, meaning no checks are done.
  1466. .ip MaxQueueRunSize=fINfP
  1467. [no short name]
  1468. The maximum number of jobs that will be processed
  1469. in a single queue run.
  1470. If not set, there is no limit on the size.
  1471. If you have very large queues or a very short queue run interval
  1472. this could be unstable.
  1473. However, since the first
  1474. .i N
  1475. jobs in queue directory order are run (rather than the
  1476. .i N
  1477. highest priority jobs)
  1478. this should be set as high as possible to avoid
  1479. .q losing
  1480. jobs that happen to fall late in the queue directory.
  1481. .ip MaxRecipientsPerMessage=fINfP
  1482. [no short name]
  1483. The maximum number of recipients that will be accepted per message
  1484. in an SMTP transaction.
  1485. Note: setting this too low can interfere with sending mail from
  1486. MUAs that use SMTP for initial submission.
  1487. If not set, there is no limit on the number of recipients per envelope.
  1488. .ip MeToo
  1489. [m]
  1490. Send to me too,
  1491. even if I am in an alias expansion.
  1492. .ip MinFreeBlocks=fINfP
  1493. [b]
  1494. Insist on at least
  1495. .i N
  1496. blocks free on the filesystem that holds the queue files
  1497. before accepting email via SMTP.
  1498. If there is insufficient space
  1499. .i sendmail
  1500. gives a 452 response
  1501. to the MAIL command.
  1502. This invites the sender to try again later.
  1503. .ip MinQueueAge=fPagefP
  1504. [no short name]
  1505. Don't process any queued jobs
  1506. that have been in the queue less than the indicated time interval.
  1507. This is intended to allow you to get responsiveness
  1508. by processing the queue fairly frequently
  1509. without thrashing your system by trying jobs too often.
  1510. The default units are minutes.
  1511. .ip MustQuoteChars=fIsfP
  1512. [no short name]
  1513. Sets the list of characters that must be quoted if used in a full name
  1514. that is in the phrase part of a ``phrase <address>'' syntax.
  1515. The default is ``'.''.
  1516. The characters ``@,;:e()[]'' are always added to this list.
  1517. .ip NoRecipientAction
  1518. [no short name]
  1519. The action to take when you receive a message that has no valid
  1520. recipient headers (To:, Cc:, Bcc:, or Apparently-To: (em
  1521. the last included for back compatibility with old
  1522. .i sendmail s).
  1523. It can be
  1524. .b None
  1525. to pass the message on unmodified,
  1526. which violates the protocol,
  1527. .b Add-To
  1528. to add a To: header with any recipients it can find in the envelope
  1529. (which might expose Bcc: recipients),
  1530. .b Add-Apparently-To
  1531. to add an Apparently-To: header
  1532. (this is only for back-compatibility
  1533. and is officially deprecated),
  1534. .b Add-To-Undisclosed
  1535. to add a header
  1536. .q "To: undisclosed-recipients:;"
  1537. to make the header legal without disclosing anything,
  1538. or
  1539. .b Add-Bcc
  1540. to add an empty Bcc: header.
  1541. .ip OldStyleHeaders
  1542. [o]
  1543. Assume that the headers may be in old format,
  1544. i.e.,
  1545. spaces delimit names.
  1546. This actually turns on
  1547. an adaptive algorithm:
  1548. if any recipient address contains a comma, parenthesis,
  1549. or angle bracket,
  1550. it will be assumed that commas already exist.
  1551. If this flag is not on,
  1552. only commas delimit names.
  1553. Headers are always output with commas between the names.
  1554. Defaults to off.
  1555. .ip OperatorChars=fIcharlistfP
  1556. [$o macro]
  1557. The list of characters that are considered to be
  1558. .q operators ,
  1559. that is, characters that delimit tokens.
  1560. All operator characters are tokens by themselves;
  1561. sequences of non-operator characters are also tokens.
  1562. White space characters separate tokens
  1563. but are not tokens themselves (em for example,
  1564. .q AAA.BBB
  1565. has three tokens, but
  1566. .q "AAA BBB"
  1567. has two.
  1568. If not set, OperatorChars defaults to
  1569. .q &.|:|@|[|] ;
  1570. additionally, the characters
  1571. .q (|)|<|>|,|;
  1572. are always operators.
  1573. Note that OperatorChars must be set in the
  1574. configuration file before any rulesets.
  1575. .ip PidFile=fIfilenamefP
  1576. [no short name]
  1577. Filename of the pid file.
  1578. (default is _PATH_SENDMAILPID).
  1579. The
  1580. .i filename
  1581. is macro-expanded before it is opened.
  1582. .ip PostmasterCopy=fIpostmasterfP
  1583. [P]
  1584. If set,
  1585. copies of error messages will be sent to the named
  1586. .i postmaster .
  1587. Only the header of the failed message is sent.
  1588. Since most errors are user problems,
  1589. this is probably not a good idea on large sites,
  1590. and arguably contains all sorts of privacy violations,
  1591. but it seems to be popular with certain operating systems vendors.
  1592. The address is macro expanded
  1593. at the time of delivery.
  1594. Defaults to no postmaster copies.
  1595. .ip PrivacyOptions=fI|opt,opt,...fP
  1596. [p]
  1597. Set the privacy
  1598. .i opt ions.
  1599. ``Privacy'' is really a misnomer;
  1600. many of these are just a way of insisting on stricter adherence
  1601. to the SMTP protocol.
  1602. The
  1603. .i opt ions
  1604. can be selected from:
  1605. .(b
  1606. .ta w'needvrfyhelo'u+3n
  1607. public Allow open access
  1608. needmailhelo Insist on HELO or EHLO command before MAIL
  1609. needexpnhelo Insist on HELO or EHLO command before EXPN
  1610. noexpn Disallow EXPN entirely
  1611. needvrfyhelo Insist on HELO or EHLO command before VRFY
  1612. novrfy Disallow VRFY entirely
  1613. noetrn Disallow ETRN entirely
  1614. noverb Disallow VERB entirely
  1615. restrictmailq Restrict mailq command
  1616. restrictqrun Restrict -q command line flag
  1617. noreceipts Don't return success DSNs**
  1618. nobodyreturn Don't return the body of a message with DSNs
  1619. goaway Disallow essentially all SMTP status queries
  1620. authwarnings Put X-Authentication-Warning: headers in messages
  1621. .)b
  1622. .(f
  1623. **N.B.:
  1624. the
  1625. .b noreceipts
  1626. flag turns off support for RFC 1891
  1627. (Delivery Status Notification).
  1628. .)f
  1629. The
  1630. .q goaway
  1631. pseudo-flag sets all flags except
  1632. .q noreceipts ,
  1633. .q restrictmailq ,
  1634. .q restrictqrun ,
  1635. .q noetrn ,
  1636. and
  1637. .q nobodyreturn .
  1638. If mailq is restricted,
  1639. only people in the same group as the queue directory
  1640. can print the queue.
  1641. If queue runs are restricted,
  1642. only root and the owner of the queue directory
  1643. can run the queue.
  1644. Authentication Warnings add warnings about various conditions
  1645. that may indicate attempts to spoof the mail system,
  1646. such as using an non-standard queue directory.
  1647. .ip ProcessTitlePrefix=fIstringfP
  1648. [no short name]
  1649. Prefix the process title shown on 'ps' listings with
  1650. .i string .
  1651. The
  1652. .i string
  1653. will be macro processed.
  1654. .ip QueueDirectory=fIdirfP
  1655. [Q]
  1656. Use the named
  1657. .i dir
  1658. as the queue directory.
  1659. To use multiple queues, supply a value ending with an asterisk.
  1660. For example,
  1661. .i /var/spool/mqueue/q*
  1662. will use all of the directories or symbolic links to directories
  1663. beginning with
  1664. .i q
  1665. in
  1666. .i /var/spool/mqueue
  1667. as queue directories.
  1668. Do not change the queue directory structure
  1669. while sendmail is running.
  1670. .ip QueueFactor=fIfactorfP
  1671. [q]
  1672. Use
  1673. .i factor
  1674. as the multiplier in the map function
  1675. to decide when to just queue up jobs rather than run them.
  1676. This value is divided by the difference between the current load average
  1677. and the load average limit
  1678. (c
  1679. .b QueueLA
  1680. option)
  1681. to determine the maximum message priority
  1682. that will be sent.
  1683. Defaults to 600000.
  1684. .ip QueueLA=fILAfP
  1685. [x]
  1686. When the system load average exceeds
  1687. .i LA ,
  1688. just queue messages
  1689. (i.e., don't try to send them).
  1690. Defaults to 8 multiplied by
  1691. the number of processors online on the system
  1692. (if that can be determined).
  1693. .ip QueueSortOrder=fIalgorithmfP
  1694. [no short name]
  1695. Sets the
  1696. .i algorithm
  1697. used for sorting the queue.
  1698. Only the first character of the value is used.
  1699. Legal values are
  1700. .q host
  1701. (to order by the name of the first host name of the first recipient),
  1702. .q filename
  1703. (to order by the name of the queue file name),
  1704. .q time
  1705. (to order by the submission time),
  1706. and
  1707. .q priority
  1708. (to order by message priority).
  1709. Host ordering makes better use of the connection cache,
  1710. but may tend to process low priority messages
  1711. that go to a single host
  1712. over high priority messages that go to several hosts;
  1713. it probably shouldn't be used on slow network links.
  1714. Filename ordering saves the overhead of
  1715. reading all of the queued items
  1716. before starting the queue run.
  1717. Time ordering is almost always a bad idea,
  1718. since it allows large, bulk mail to go out
  1719. before smaller, personal mail,
  1720. but may have applicability on some hosts with very fast connections.
  1721. Priority ordering is the default.
  1722. .ip QueueTimeout=fItimeoutfP
  1723. [T]
  1724. A synonym for
  1725. .q Timeout.queuereturn .
  1726. Use that form instead of the
  1727. .q QueueTimeout
  1728. form.
  1729. .ip ResolverOptions=fIoptionsfP
  1730. [I]
  1731. Set resolver options.
  1732. Values can be set using
  1733. .b + c
  1734. .i flag
  1735. and cleared using
  1736. .b - c
  1737. .i flag ;
  1738. the
  1739. .i flag s
  1740. can be
  1741. .q debug ,
  1742. .q aaonly ,
  1743. .q usevc ,
  1744. .q primary ,
  1745. .q igntc ,
  1746. .q recurse ,
  1747. .q defnames ,
  1748. .q stayopen ,
  1749. or
  1750. .q dnsrch .
  1751. The string
  1752. .q HasWildcardMX
  1753. (without a
  1754. .b +
  1755. or
  1756. .b - )
  1757. can be specified to turn off matching against MX records
  1758. when doing name canonifications.
  1759. .b N.B.
  1760. Prior to 8.7,
  1761. this option indicated that the name server be responding
  1762. in order to accept addresses.
  1763. This has been replaced by checking to see
  1764. if the
  1765. .q dns
  1766. method is listed in the service switch entry for the
  1767. .q hosts
  1768. service.
  1769. .ip RrtImpliesDsn
  1770. [R]
  1771. If this option is set, a
  1772. .q Return-Receipt-To:
  1773. header causes the request of a DSN, which is sent to
  1774. the envelope sender as required by RFC1891,
  1775. not to the address given in the header.
  1776. .ip RunAsUser=fIuserfP
  1777. [no short name]
  1778. The
  1779. .i user
  1780. parameter may be a user name
  1781. (looked up in
  1782. .i /etc/passwd )
  1783. or a numeric user id;
  1784. either form can have
  1785. .q ":group"
  1786. attached
  1787. (where group can be numeric or symbolic).
  1788. If set to a non-zero (non-root) value,
  1789. .i sendmail
  1790. will change to this user id shortly after startup**.
  1791. .(f
  1792. **When running as a daemon,
  1793. it changes to this user after accepting a connection
  1794. but before reading any
  1795. .sm SMTP
  1796. commands.
  1797. .)f
  1798. This avoids a certain class of security problems.
  1799. However, this means that all
  1800. .q &.forward
  1801. and
  1802. .q :include:
  1803. files must be readable by the indicated
  1804. .i user ,
  1805. and on systems that don't support the saved uid bit properly,
  1806. all files to be written must be writable by
  1807. .i user
  1808. and all file and program deliveries will be marked unsafe
  1809. unless the option
  1810. .b DontBlameSendmail=NonRootAddrSafe
  1811. is set,
  1812. in which case the delivery will be done as
  1813. .i user .
  1814. It is also incompatible with the
  1815. .b SafeFileEnvironment
  1816. option.
  1817. In other words, it may not actually add much to security on an average system,
  1818. and may in fact detract from security
  1819. (because other file permissions must be loosened).
  1820. However, it should be useful on firewalls and other
  1821. places where users don't have accounts and the aliases file is
  1822. well constrained.
  1823. .ip RecipientFactor=fIfactfP
  1824. [y]
  1825. The indicated
  1826. .i fact or
  1827. is added to the priority (thus
  1828. .i lowering
  1829. the priority of the job)
  1830. for each recipient,
  1831. i.e., this value penalizes jobs with large numbers of recipients.
  1832. Defaults to 30000.
  1833. .ip RefuseLA=fILAfP
  1834. [X]
  1835. When the system load average exceeds
  1836. .i LA ,
  1837. refuse incoming SMTP connections.
  1838. Defaults to 12 multiplied by
  1839. the number of processors online on the system
  1840. (if that can be determined).
  1841. .ip RetryFactor=fIfactfP
  1842. [Z]
  1843. The
  1844. .i fact or
  1845. is added to the priority
  1846. every time a job is processed.
  1847. Thus,
  1848. each time a job is processed,
  1849. its priority will be decreased by the indicated value.
  1850. In most environments this should be positive,
  1851. since hosts that are down are all too often down for a long time.
  1852. Defaults to 90000.
  1853. .ip SafeFileEnvironment=fIdirfP
  1854. [no short name]
  1855. If this option is set,
  1856. .i sendmail
  1857. will do a
  1858. .i chroot (2)
  1859. call into the indicated
  1860. .i dir ectory
  1861. before doing any file writes.
  1862. If the file name specified by the user begins with
  1863. .i dir ,
  1864. that partial path name will be stripped off before writing,
  1865. so (for example)
  1866. if the SafeFileEnvironment variable is set to
  1867. .q /safe
  1868. then aliases of
  1869. .q /safe/logs/file
  1870. and
  1871. .q /logs/file
  1872. actually indicate the same file.
  1873. Additionally, if this option is set,
  1874. .i sendmail
  1875. refuses to deliver to symbolic links.
  1876. .ip SaveFromLine
  1877. [f]
  1878. Save
  1879. Unix-style
  1880. .q From
  1881. lines at the front of headers.
  1882. Normally they are assumed redundant
  1883. and discarded.
  1884. .ip SendMimeErrors
  1885. [j]
  1886. If set, send error messages in MIME format
  1887. (see RFC2045 and RFC1344 for details).
  1888. If disabled,
  1889. .i sendmail
  1890. will not return the DSN keyword in response to an EHLO
  1891. and will not do Delivery Status Notification processing as described in
  1892. RFC1891.
  1893. .ip ServiceSwitchFile=fIfilenamefP
  1894. [no short name]
  1895. If your host operating system has a service switch abstraction
  1896. (e.g., /etc/nsswitch.conf on Solaris
  1897. or /etc/svc.conf on Ultrix and DEC OSF/1)
  1898. that service will be consulted and this option is ignored.
  1899. Otherwise, this is the name of a file
  1900. that provides the list of methods used to implement particular services.
  1901. The syntax is a series of lines,
  1902. each of which is a sequence of words.
  1903. The first word is the service name,
  1904. and following words are service types.
  1905. The services that
  1906. .i sendmail
  1907. consults directly are
  1908. .q aliases
  1909. and
  1910. .q hosts.
  1911. Service types can be
  1912. .q dns ,
  1913. .q nis ,
  1914. .q nisplus ,
  1915. or
  1916. .q files
  1917. (with the caveat that the appropriate support
  1918. must be compiled in
  1919. before the service can be referenced).
  1920. If ServiceSwitchFile is not specified, it defaults to
  1921. /etc/mail/service.switch.
  1922. If that file does not exist, the default switch is:
  1923. .(b
  1924. aliases files
  1925. hosts dns nis files
  1926. .)b
  1927. The default file is
  1928. .q /etc/mail/service.switch .
  1929. .ip SevenBitInput
  1930. [7]
  1931. Strip input to seven bits for compatibility with old systems.
  1932. This shouldn't be necessary.
  1933. .ip SingleLineFromHeader
  1934. [no short name]
  1935. If set, From: lines that have embedded newlines are unwrapped
  1936. onto one line.
  1937. This is to get around a botch in Lotus Notes
  1938. that apparently cannot understand legally wrapped RFC822 headers.
  1939. .ip SingleThreadDelivery
  1940. [no short name]
  1941. If set, a client machine will never try to open two SMTP connections
  1942. to a single server machine at the same time,
  1943. even in different processes.
  1944. That is, if another
  1945. .i sendmail
  1946. is already talking to some host a new
  1947. .i sendmail
  1948. will not open another connection.
  1949. This property is of mixed value;
  1950. although this reduces the load on the other machine,
  1951. it can cause mail to be delayed
  1952. (for example, if one
  1953. .i sendmail
  1954. is delivering a huge message, other
  1955. .i sendmail s
  1956. won't be able to send even small messages).
  1957. Also, it requires another file descriptor
  1958. (for the lock file)
  1959. per connection, so you may have to reduce the
  1960. .b ConnectionCacheSize
  1961. option to avoid running out of per-process file descriptors.
  1962. Requires the
  1963. .b HostStatusDirectory
  1964. option.
  1965. .ip SmtpGreetingMessage=fImessagefP
  1966. [$e macro]
  1967. The message printed when the SMTP server starts up.
  1968. Defaults to
  1969. .q "$j Sendmail $v ready at $b".
  1970. .ip StatusFile=fIfilefP
  1971. [S]
  1972. Log summary statistics in the named
  1973. .i file .
  1974. If no file name is specified, "statistics" is used.
  1975. If not set,
  1976. no summary statistics are saved.
  1977. This file does not grow in size.
  1978. It can be printed using the
  1979. .i mailstats (8)
  1980. program.
  1981. .ip SuperSafe
  1982. [s]
  1983. Be super-safe when running things,
  1984. i.e.,
  1985. always instantiate the queue file,
  1986. even if you are going to attempt immediate delivery.
  1987. .i Sendmail
  1988. always instantiates the queue file
  1989. before returning control to the client
  1990. under any circumstances.
  1991. This should really
  1992. .i always
  1993. be set.
  1994. .ip TempFileMode=fImodefP
  1995. [F]
  1996. The file mode for queue files.
  1997. It is interpreted in octal by default.
  1998. Defaults to 0600.
  1999. .ip Timeout.fItypefP=|fItimeoutfP
  2000. [r; subsumes old T option as well]
  2001. Set timeout values.
  2002. For more information,
  2003. see section
  2004. ." XREF
  2005. 4.1.
  2006. .ip TimeZoneSpec=fItzinfofP
  2007. [t]
  2008. Set the local time zone info to
  2009. .i tzinfo
  2010. *- for example,
  2011. .q PST8PDT .
  2012. Actually, if this is not set,
  2013. the TZ environment variable is cleared (so the system default is used);
  2014. if set but null, the user's TZ variable is used,
  2015. and if set and non-null the TZ variable is set to this value.
  2016. .ip TrustedUser=fIuserfP
  2017. [no short name]
  2018. The
  2019. .i user
  2020. parameter may be a user name
  2021. (looked up in
  2022. .i /etc/passwd )
  2023. or a numeric user id.
  2024. Trusted user for file ownership and starting the daemon.  If set, generated
  2025. alias databases and the control socket (if configured) will automatically
  2026. be owned by this user.
  2027. .ip TryNullMXList
  2028. [w]
  2029. If this system is the
  2030. .q best
  2031. (that is, lowest preference)
  2032. MX for a given host,
  2033. its configuration rules should normally detect this situation
  2034. and treat that condition specially
  2035. by forwarding the mail to a UUCP feed,
  2036. treating it as local,
  2037. or whatever.
  2038. However, in some cases (such as Internet firewalls)
  2039. you may want to try to connect directly to that host
  2040. as though it had no MX records at all.
  2041. Setting this option causes
  2042. .i sendmail
  2043. to try this.
  2044. The downside is that errors in your configuration
  2045. are likely to be diagnosed as
  2046. .q "host unknown"
  2047. or
  2048. .q "message timed out"
  2049. instead of something more meaningful.
  2050. This option is disrecommended.
  2051. .ip UnixFromLine=fIfromlinefP
  2052. [$l macro]
  2053. Defines the format used when
  2054. .i sendmail
  2055. must add a UNIX-style From_ line
  2056. (that is, a line beginning
  2057. .q From<space>user ).
  2058. Defaults to
  2059. .q "From $g  $d" .
  2060. Don't change this unless your system uses a different UNIX mailbox format
  2061. (very unlikely).
  2062. .ip UnsafeGroupWrites
  2063. [no short name]
  2064. If set,
  2065. :include: and .forward files that are group writable are considered
  2066. .q unsafe ,
  2067. that is,
  2068. they cannot reference programs or write directly to files.
  2069. World writable :include: and .forward files
  2070. are always unsafe..
  2071. .ip UseErrorsTo
  2072. [l]
  2073. If there is an
  2074. .q Errors-To:
  2075. header, send error messages to the addresses listed there.
  2076. They normally go to the envelope sender.
  2077. Use of this option causes
  2078. .i sendmail
  2079. to violate RFC 1123.
  2080. This option is disrecommended and deprecated.
  2081. .ip UserDatabaseSpec=fIudbspecfP
  2082. [U]
  2083. The user database specification.
  2084. .ip Verbose
  2085. [v]
  2086. Run in verbose mode.
  2087. If this is set,
  2088. .i sendmail
  2089. adjusts options
  2090. .b HoldExpensive
  2091. (old
  2092. .b c )
  2093. and
  2094. .b DeliveryMode
  2095. (old
  2096. .b d )
  2097. so that all mail is delivered completely
  2098. in a single job
  2099. so that you can see the entire delivery process.
  2100. Option
  2101. .b Verbose
  2102. should
  2103. .i never
  2104. be set in the configuration file;
  2105. it is intended for command line use only.
  2106. .ip XscriptFileBufferSize=fIthresholdfP
  2107. [no short name]
  2108. Set the
  2109. .i threshold ,
  2110. in bytes,
  2111. before a memory-based
  2112. queue transcript file
  2113. becomes disk-based.
  2114. The default is 4096 bytes.
  2115. .lp
  2116. All options can be specified on the command line using the
  2117. -O or -o flag,
  2118. but most will cause
  2119. .i sendmail
  2120. to relinquish its setuid permissions.
  2121. The options that will not cause this are
  2122. SevenBitInput [7],
  2123. EightBitMode [8], 
  2124. MinFreeBlocks [b],
  2125. CheckpointInterval [C],
  2126. DeliveryMode [d],
  2127. ErrorMode [e],
  2128. IgnoreDots [i],
  2129. SendMimeErrors [j],
  2130. LogLevel [L],
  2131. MeToo [m],
  2132. OldStyleHeaders [o],
  2133. PrivacyOptions [p],
  2134. SuperSafe [s],
  2135. Verbose [v],
  2136. QueueSortOrder,
  2137. MinQueueAge,
  2138. DefaultCharSet,
  2139. Dial Delay,
  2140. NoRecipientAction,
  2141. ColonOkInAddr,
  2142. MaxQueueRunSize,
  2143. SingleLineFromHeader,
  2144. and
  2145. AllowBogusHELO.
  2146. Also, M (define macro) when defining the r or s macros
  2147. is also considered
  2148. .q safe .
  2149. .sh 2 "P *- Precedence Definitions"
  2150. .pp
  2151. Values for the
  2152. .q "Precedence:"
  2153. field may be defined using the
  2154. .b P
  2155. control line.
  2156. The syntax of this field is:
  2157. .(b
  2158. fBPfPfInamefPfB=fPfInumfP
  2159. .)b
  2160. When the
  2161. .i name
  2162. is found in a
  2163. .q Precedence:
  2164. field,
  2165. the message class is set to
  2166. .i num .
  2167. Higher numbers mean higher precedence.
  2168. Numbers less than zero
  2169. have the special property
  2170. that if an error occurs during processing
  2171. the body of the message will not be returned;
  2172. this is expected to be used for
  2173. .q "bulk"
  2174. mail such as through mailing lists.
  2175. The default precedence is zero.
  2176. For example,
  2177. our list of precedences is:
  2178. .(b
  2179. Pfirst-class=0
  2180. Pspecial-delivery=100
  2181. Plist=-30
  2182. Pbulk=-60
  2183. Pjunk=-100
  2184. .)b
  2185. People writing mailing list exploders
  2186. are encouraged to use
  2187. .q "Precedence: list" .
  2188. Older versions of
  2189. .i sendmail
  2190. (which discarded all error returns for negative precedences)
  2191. didn't recognize this name, giving it a default precedence of zero.
  2192. This allows list maintainers to see error returns
  2193. on both old and new versions of
  2194. .i sendmail .
  2195. .sh 2 "V *- Configuration Version Level"
  2196. .pp
  2197. To provide compatibility with old configuration files,
  2198. the
  2199. .b V
  2200. line has been added to define some very basic semantics
  2201. of the configuration file.
  2202. These are not intended to be long term supports;
  2203. rather, they describe compatibility features
  2204. which will probably be removed in future releases.
  2205. .pp
  2206. .b N.B.:
  2207. these version
  2208. .i levels
  2209. have nothing
  2210. to do with the version
  2211. .i number
  2212. on the files.
  2213. For example,
  2214. as of this writing
  2215. version 8 config files
  2216. (specifically, 8.10)
  2217. used version level 9 configurations.
  2218. .pp
  2219. .q Old
  2220. configuration files are defined as version level one.
  2221. Version level two files make the following changes:
  2222. .np
  2223. Host name canonification ($[ ... $])
  2224. appends a dot if the name is recognized;
  2225. this gives the config file a way of finding out if anything matched.
  2226. (Actually, this just initializes the
  2227. .q host
  2228. map with the
  2229. .q -a.
  2230. flag *- you can reset it to anything you prefer
  2231. by declaring the map explicitly.)
  2232. .np
  2233. Default host name extension is consistent throughout processing;
  2234. version level one configurations turned off domain extension
  2235. (that is, adding the local domain name)
  2236. during certain points in processing.
  2237. Version level two configurations are expected to include a trailing dot
  2238. to indicate that the name is already canonical.
  2239. .np
  2240. Local names that are not aliases
  2241. are passed through a new distinguished ruleset five;
  2242. this can be used to append a local relay.
  2243. This behavior can be prevented by resolving the local name
  2244. with an initial `@'.
  2245. That is, something that resolves to a local mailer and a user name of
  2246. .q vikki
  2247. will be passed through ruleset five,
  2248. but a user name of
  2249. .q @vikki
  2250. will have the `@' stripped,
  2251. will not be passed through ruleset five,
  2252. but will otherwise be treated the same as the prior example.
  2253. The expectation is that this might be used to implement a policy
  2254. where mail sent to
  2255. .q vikki
  2256. was handled by a central hub,
  2257. but mail sent to
  2258. .q vikki@localhost
  2259. was delivered directly.
  2260. .pp
  2261. Version level three files
  2262. allow # initiated comments on all lines.
  2263. Exceptions are backslash escaped # marks
  2264. and the $# syntax.
  2265. .pp
  2266. Version level four configurations
  2267. are completely equivalent to level three
  2268. for historical reasons.
  2269. .pp
  2270. Version level five configuration files
  2271. change the default definition of
  2272. .b $w
  2273. to be just the first component of the hostname.
  2274. .pp
  2275. Version level six configuration files
  2276. change many of the local processing options
  2277. (such as aliasing and matching the beginning of the address for
  2278. `|' characters)
  2279. to be mailer flags;
  2280. this allows fine-grained control over the special local processing.
  2281. Level six configuration files may also use long option names.
  2282. The
  2283. .b ColonOkInAddr
  2284. option (to allow colons in the local-part of addresses)
  2285. defaults
  2286. .b on
  2287. for lower numbered configuration files;
  2288. the configuration file requires some additional intelligence
  2289. to properly handle the RFC 822 group construct.
  2290. .pp
  2291. Version level seven configuration files
  2292. used new option names to replace old macros
  2293. (c
  2294. .b $e
  2295. became
  2296. .b SmtpGreetingMessage ,
  2297. .b $l
  2298. became
  2299. .b UnixFromLine ,
  2300. and
  2301. .b $o
  2302. became
  2303. .b OperatorChars .
  2304. Also, prior to version seven,
  2305. the
  2306. .b F=q
  2307. flag (use 250 instead of 252 return value for
  2308. .sm "SMTP VRFY"
  2309. commands)
  2310. was assumed.
  2311. .pp
  2312. Version level eight configuration files allow
  2313. .b $#
  2314. on the left hand side of ruleset lines.
  2315. .pp
  2316. Version level nine configuration files allow
  2317. parentheses in rulesets, i.e. they are not treated
  2318. as comments and hence removed.
  2319. .pp
  2320. The
  2321. .b V
  2322. line may have an optional
  2323. .b / c
  2324. .i vendor
  2325. to indicate that this configuration file uses modifications
  2326. specific to a particular vendor**.
  2327. .(f
  2328. **And of course, vendors are encouraged to add themselves
  2329. to the list of recognized vendors by editing the routine
  2330. .i setvendor
  2331. in
  2332. .i conf.c .
  2333. Please send e-mail to sendmail@Sendmail.ORG
  2334. to register your vendor dialect.
  2335. .)f
  2336. You may use
  2337. .q /Berkeley
  2338. to emphasize that this configuration file
  2339. uses the Berkeley dialect of
  2340. .i sendmail .
  2341. .sh 2 "K *- Key File Declaration"
  2342. .pp
  2343. Special maps can be defined using the line:
  2344. .(b
  2345. Kmapname mapclass arguments
  2346. .)b
  2347. The
  2348. .i mapname
  2349. is the handle by which this map is referenced in the rewriting rules.
  2350. The
  2351. .i mapclass
  2352. is the name of a type of map;
  2353. these are compiled in to
  2354. .i sendmail .
  2355. The
  2356. .i arguments
  2357. are interpreted depending on the class;
  2358. typically,
  2359. there would be a single argument naming the file containing the map.
  2360. .pp
  2361. Maps are referenced using the syntax:
  2362. .(b
  2363. $( fImapfP fIkeyfP $@ fIargumentsfP $: fIdefaultfP $)
  2364. .)b
  2365. where either or both of the
  2366. .i arguments
  2367. or
  2368. .i default
  2369. portion may be omitted.
  2370. The
  2371. .i "$@ arguments"
  2372. may appear more than once.
  2373. The indicated
  2374. .i key
  2375. and
  2376. .i arguments
  2377. are passed to the appropriate mapping function.
  2378. If it returns a value, it replaces the input.
  2379. If it does not return a value and the
  2380. .i default
  2381. is specified, the
  2382. .i default
  2383. replaces the input.
  2384. Otherwise, the input is unchanged.
  2385. .pp
  2386. The
  2387. .i arguments
  2388. are passed to the map for arbitrary use.
  2389. Most map classes can interpolate these arguments
  2390. into their values using the syntax
  2391. .q %fInfP
  2392. (where
  2393. .i n
  2394. is a digit)
  2395. to indicate the corresponding
  2396. .i argument .
  2397. Argument
  2398. .q %0
  2399. indicates the database key.
  2400. For example, the rule
  2401. .(b
  2402. .ta 1.5i
  2403. R$- ! $+ $: $(uucp $1 $@ $2 $: %1 @ %0 . UUCP $)
  2404. .)b
  2405. Looks up the UUCP name in a (user defined) UUCP map;
  2406. if not found it turns it into
  2407. .q &.UUCP
  2408. form.
  2409. The database might contain records like:
  2410. .(b
  2411. decvax %1@%0.DEC.COM
  2412. research %1@%0.ATT.COM
  2413. .)b
  2414. Note that
  2415. .i default
  2416. clauses never do this mapping.
  2417. .pp
  2418. The built in map with both name and class
  2419. .q host
  2420. is the host name canonicalization lookup.
  2421. Thus,
  2422. the syntax:
  2423. .(b
  2424. $(host fIhostnamefP$)
  2425. .)b
  2426. is equivalent to:
  2427. .(b
  2428. $[fIhostnamefP$]
  2429. .)b
  2430. .pp
  2431. There are many defined classes.
  2432. .ip dbm
  2433. Database lookups using the ndbm(3) library.
  2434. .i Sendmail
  2435. must be compiled with
  2436. .b NDBM
  2437. defined.
  2438. .ip btree
  2439. Database lookups using the btree interface to the Berkeley DB
  2440. library.
  2441. .i Sendmail
  2442. must be compiled with
  2443. .b NEWDB
  2444. defined.
  2445. .ip hash
  2446. Database lookups using the hash interface to the Berkeley DB
  2447. library.
  2448. .i Sendmail
  2449. must be compiled with
  2450. .b NEWDB
  2451. defined.
  2452. .ip nis
  2453. NIS lookups.
  2454. .i Sendmail
  2455. must be compiled with
  2456. .b NIS
  2457. defined.
  2458. .ip nisplus
  2459. NIS+ lookups.
  2460. .i Sendmail
  2461. must be compiled with
  2462. .b NISPLUS
  2463. defined.
  2464. The argument is the name of the table to use for lookups,
  2465. and the
  2466. .b -k
  2467. and
  2468. .b -v
  2469. flags may be used to set the key and value columns respectively.
  2470. .ip hesiod
  2471. Hesiod lookups.
  2472. .i Sendmail
  2473. must be compiled with
  2474. .b HESIOD
  2475. defined.
  2476. .ip ldap
  2477. LDAP X500 directory lookups.
  2478. .i Sendmail
  2479. must be compiled with
  2480. .b LDAPMAP
  2481. defined.
  2482. The map supports most of the standard arguments
  2483. and most of the command line arguments of the
  2484. .i ldapsearch
  2485. program.
  2486. Note that,
  2487. by default,
  2488. if a single query matches multiple values,
  2489. only the first value will be returned
  2490. unless the 
  2491. .b -z
  2492. (value separator)
  2493. map flag is set.
  2494. Also, the
  2495. .b -1
  2496. map flag will treat a multiple value return
  2497. as if there were no matches.
  2498. .ip netinfo
  2499. NeXT NetInfo lookups.
  2500. .i Sendmail
  2501. must be compiled with
  2502. .b NETINFO
  2503. defined.
  2504. .ip text
  2505. Text file lookups.
  2506. The format of the text file is defined by the
  2507. .b -k
  2508. (key field number),
  2509. .b -v
  2510. (value field number),
  2511. and
  2512. .b -z
  2513. (field delimiter)
  2514. flags.
  2515. .ip ph
  2516. PH query map.
  2517. Contributed and supported by
  2518. Mark Roth, roth@uiuc.edu.
  2519. For more information,
  2520. consult the web site
  2521. .q http://www-wsg.cso.uiuc.edu/sendmail/sendmail-phmap/ .
  2522. .ip nsd
  2523. nsd map for IRIX 6.5 and later.
  2524. Contributed and supported by Bob Mende of SGI,
  2525. mende@sgi.com.
  2526. .ip stab
  2527. Internal symbol table lookups.
  2528. Used internally for aliasing.
  2529. .ip implicit
  2530. Really should be called
  2531. .q alias
  2532. (em this is used to get the default lookups
  2533. for alias files,
  2534. and is the default if no class is specified for alias files.
  2535. .ip user
  2536. Looks up users using
  2537. .i getpwnam (3).
  2538. The
  2539. .b -v
  2540. flag can be used to specify the name of the field to return
  2541. (although this is normally used only to check the existence
  2542. of a user).
  2543. .ip host
  2544. Canonifies host domain names.
  2545. Given a host name it calls the name server
  2546. to find the canonical name for that host.
  2547. .ip bestmx
  2548. Returns the best MX record for a host name given as the key.
  2549. The current machine is always preferred *-
  2550. that is, if the current machine is one of the hosts listed as a
  2551. lowest-preference MX record, then it will be guaranteed to be returned.
  2552. This can be used to find out if this machine is the target for an MX record,
  2553. and mail can be accepted on that basis.
  2554. If the
  2555. .b -z
  2556. flag is given, then all MX names are returned,
  2557. separated by the given delimiter.
  2558. .ip sequence
  2559. The arguments on the `K' line are a list of maps;
  2560. the resulting map searches the argument maps in order
  2561. until it finds a match for the indicated key.
  2562. For example, if the key definition is:
  2563. .(b
  2564. Kmap1 ...
  2565. Kmap2 ...
  2566. Kseqmap sequence map1 map2
  2567. .)b
  2568. then a lookup against
  2569. .q seqmap
  2570. first does a lookup in map1.
  2571. If that is found, it returns immediately.
  2572. Otherwise, the same key is used for map2.
  2573. .ip syslog
  2574. the key is logged via
  2575. .i syslogd |(8).
  2576. The lookup returns the empty string.
  2577. .ip switch
  2578. Much like the
  2579. .q sequence
  2580. map except that the order of maps is determined by the service switch.
  2581. The argument is the name of the service to be looked up;
  2582. the values from the service switch are appended to the map name
  2583. to create new map names.
  2584. For example, consider the key definition:
  2585. .(b
  2586. Kali switch aliases
  2587. .)b
  2588. together with the service switch entry:
  2589. .(b
  2590. aliases nis files
  2591. .)b
  2592. This causes a query against the map
  2593. .q ali
  2594. to search maps named
  2595. .q ali.nis
  2596. and
  2597. .q ali.files
  2598. in that order.
  2599. .ip dequote
  2600. Strip double quotes (") from a name.
  2601. It does not strip backslashes,
  2602. and will not strip quotes if the resulting string
  2603. would contain unscannable syntax
  2604. (that is, basic errors like unbalanced angle brackets;
  2605. more sophisticated errors such as unknown hosts are not checked).
  2606. The intent is for use when trying to accept mail from systems such as
  2607. DECnet
  2608. that routinely quote odd syntax such as
  2609. .(b
  2610. "49ers::ubell"
  2611. .)b
  2612. A typical usage is probably something like:
  2613. .(b
  2614. Kdequote dequote
  2615. &...
  2616. R$- $: $(dequote $1 $)
  2617. R$- $+ $: $>3 $1 $2
  2618. .)b
  2619. Care must be taken to prevent unexpected results;
  2620. for example,
  2621. .(b
  2622. "|someprogram < input > output"
  2623. .)b
  2624. will have quotes stripped,
  2625. but the result is probably not what you had in mind.
  2626. Fortunately these cases are rare.
  2627. .ip regex
  2628. The map definition on the
  2629. .b K
  2630. line contains a regular expression.
  2631. Any key input is compared to that expression using the
  2632. POSIX regular expressions routines regcomp(), regerr(), and regexec().
  2633. Refer to the documentation for those routines for more information
  2634. about the regular expression matching.
  2635. No rewriting of the key is done if the
  2636. .b -m
  2637. flag is used.  Without it, the key is discarded or if
  2638. .b -s
  2639. if used, it is substituted by the substring matches, delimited by
  2640. .b $|
  2641. or the string specified with the the
  2642. .b -d
  2643. flag.  The flags available for the map are
  2644. .(b
  2645. -n not
  2646. -f case sensitive
  2647. -b basic regular expressions
  2648. (default is extended)
  2649. -s substring match
  2650. -d set the delimiter used for -s
  2651. -a append string to key
  2652. -m match only, do not
  2653. replace/discard value
  2654. -D perform no lookup in deferred delivery mode.
  2655. .)b
  2656. The
  2657. .b -s
  2658. flag can include an optional parameter which can be used
  2659. to select the substrings in the result of the lookup.  For example,
  2660. .(b
  2661. -s1,3,4
  2662. .)b
  2663. .ip program
  2664. The arguments on the
  2665. .b K
  2666. line are the pathname to a program and any initial parameters to be passed.
  2667. When the map is called,
  2668. the key is added to the initial parameters
  2669. and the program is invoked
  2670. as the default user/group id.
  2671. The first line of standard output is returned as the value of the lookup.
  2672. This has many potential security problems,
  2673. and has terrible performance;
  2674. it should be used only when absolutely necessary.
  2675. .ip macro
  2676. Set or clear a macro value.
  2677. To set a macro,
  2678. pass the value as the first argument in the map lookup.
  2679. To clear a macro,
  2680. do not pass an argument in the map lookup.
  2681. The map always returns the empty string.
  2682. Example of typical usage include:
  2683. .(b
  2684. Kstorage macro
  2685. &...
  2686. # set macro ${MyMacro} to the ruleset match
  2687. R$+ $: $(storage {MyMacro} $@ $1 $) $1
  2688. # set macro ${MyMacro} to an empty string
  2689. R$* $: $(storage {MyMacro} $@ $) $1
  2690. # clear macro ${MyMacro}
  2691. R$- $: $(storage {MyMacro} $) $1
  2692. .)b
  2693. .ip arith
  2694. Perform simple arithmetic operations.
  2695. The operation is given as key, currently +, -, *, /,
  2696. l (for less than), and = are supported.
  2697. The two operands are given as arguments.
  2698. The lookup returns the result of the computation,
  2699. i.e.
  2700. .sm TRUE
  2701. or
  2702. .sm FALSE
  2703. for comparisons, integer values otherwise.
  2704. All options which are possible for maps are ignored.
  2705. A simple example is:
  2706. .(b
  2707. Kcomp arith
  2708. &...
  2709. Scheck_etrn
  2710. R$* $: $(comp l $@ $&{load_avg} $@ 7 $) $1
  2711. RFALSE $# error &...
  2712. .)b
  2713. .pp
  2714. Most of these accept as arguments the same optional flags
  2715. and a filename
  2716. (or a mapname for NIS;
  2717. the filename is the root of the database path,
  2718. so that
  2719. .q .db
  2720. or some other extension appropriate for the database type
  2721. will be added to get the actual database name).
  2722. Known flags are:
  2723. .ip "-o"
  2724. Indicates that this map is optional *- that is,
  2725. if it cannot be opened,
  2726. no error is produced,
  2727. and
  2728. .i sendmail
  2729. will behave as if the map existed but was empty.
  2730. .ip "-N, -O"
  2731. If neither
  2732. .b -N
  2733. or
  2734. .b -O
  2735. are specified,
  2736. .i sendmail
  2737. uses an adaptive algorithm to decide whether or not to look for null bytes
  2738. on the end of keys.
  2739. It starts by trying both;
  2740. if it finds any key with a null byte it never tries again without a null byte
  2741. and vice versa.
  2742. If
  2743. .b -N
  2744. is specified it never tries without a null byte and
  2745. if
  2746. .b -O
  2747. is specified it never tries with a null byte.
  2748. Setting one of
  2749. these can speed matches but are never necessary.
  2750. If both
  2751. .b -N
  2752. and
  2753. .b -O
  2754. are specified,
  2755. .i sendmail
  2756. will never try any matches at all (em
  2757. that is, everything will appear to fail.
  2758. .ip "-afIxfP"
  2759. Append the string
  2760. .i x
  2761. on successful matches.
  2762. For example, the default
  2763. .i host
  2764. map appends a dot on successful matches.
  2765. .ip "-TfIxfP"
  2766. Append the string
  2767. .i x
  2768. on temporary failures.
  2769. For example,
  2770. .i x
  2771. would be appended if a DNS lookup returned
  2772. .q "server failed"
  2773. or an NIS lookup could not locate a server.
  2774. See also the
  2775. .b -t
  2776. flag.
  2777. .ip "-f"
  2778. Do not fold upper to lower case before looking up the key.
  2779. .ip "-m"
  2780. Match only (without replacing the value).
  2781. If you only care about the existence of a key and not the value
  2782. (as you might when searching the NIS map
  2783. .q hosts.byname
  2784. for example),
  2785. this flag prevents the map from substituting the value.
  2786. However,
  2787. The -a argument is still appended on a match,
  2788. and the default is still taken if the match fails.
  2789. .ip "-kfIkeycolfP"
  2790. The key column name (for NIS+) or number
  2791. (for text lookups).
  2792. For LDAP maps this is an LDAP filter string
  2793. in which %s is replaced with the literal contents of the lookup key
  2794. and %0 is replaced with the LDAP escaped contents of the lookup key
  2795. according to RFC2254.
  2796. .ip "-vfIvalcolfP"
  2797. The value column name (for NIS+) or number
  2798. (for text lookups).
  2799. For LDAP maps this is the name of one or more
  2800. attributes to be returned;
  2801. multiple attributes can be separated by commas.
  2802. If not specified, all attributes found in the match
  2803. will be returned.
  2804. .ip "-zfIdelimfP"
  2805. The column delimiter (for text lookups).
  2806. It can be a single character or one of the special strings
  2807. .q |en
  2808. or
  2809. .q |et
  2810. to indicate newline or tab respectively.
  2811. If omitted entirely,
  2812. the column separator is any sequence of whitespace.
  2813. For LDAP maps this is the separator character
  2814. to combine multiple values
  2815. into a single return string.
  2816. If not set,
  2817. the LDAP lookup will only return the first match found.
  2818. .ip "-t"
  2819. Normally, when a map attempts to do a lookup
  2820. and the server fails
  2821. (e.g.,
  2822. .i sendmail
  2823. couldn't contact any name server;
  2824. this is
  2825. .i not
  2826. the same as an entry not being found in the map),
  2827. the message being processed is queued for future processing.
  2828. The
  2829. .b -t
  2830. flag turns off this behavior,
  2831. letting the temporary failure (server down)
  2832. act as though it were a permanent failure (entry not found).
  2833. It is particularly useful for DNS lookups,
  2834. where someone else's misconfigured name server can cause problems
  2835. on your machine.
  2836. However, care must be taken to ensure that you don't bounce mail
  2837. that would be resolved correctly if you tried again.
  2838. A common strategy is to forward such mail
  2839. to another, possibly better connected, mail server.
  2840. .ip "-D"
  2841. Perform no lookup in deferred delivery mode.
  2842. This flag is set by default for the
  2843. .i host
  2844. map.
  2845. .ip "-SfIspacesubfP
  2846. The character to use to replace space characters
  2847. after a successful map lookup (esp. useful for regex
  2848. and syslog maps).
  2849. .ip "-sfIspacesubfP
  2850. For the dequote map only,
  2851. the character to use to replace space characters
  2852. after a successful dequote.
  2853. .ip "-q"
  2854. Don't dequote the key before lookup.
  2855. .ip "-LfIlevelfP
  2856. For the syslog map only, it specifies the level
  2857. to use for the syslog call.
  2858. .ip "-A"
  2859. When rebuilding an alias file,
  2860. the
  2861. .b -A
  2862. flag causes duplicate entries in the text version
  2863. to be merged.
  2864. For example, two entries:
  2865. .(b
  2866. list: user1, user2
  2867. list: user3
  2868. .)b
  2869. would be treated as though it were the single entry
  2870. .(b
  2871. list: user1, user2, user3
  2872. .)b
  2873. in the presence of the
  2874. .b -A
  2875. flag.
  2876. .pp
  2877. The following additional flags are present in the ldap map only:
  2878. .ip "-R"
  2879. Do not auto chase referrals.  sendmail must be compiled with
  2880. .b -DLDAP_REFERRALS
  2881. to use this flag.
  2882. .ip "-n"
  2883. Retrieve attribute names only.
  2884. .ip "-rfIdereffP"
  2885. Set the alias dereference option to one of never, always, search, or find.
  2886. .ip "-sfIscopefP"
  2887. Set search scope to one of base, one (one level), or sub (subtree).
  2888. .ip "-hfIhostfP"
  2889. LDAP server hostname.
  2890. .ip "-bfIbasefP"
  2891. LDAP search base.
  2892. .ip "-pfIportfP"
  2893. LDAP service port.
  2894. .ip "-lfItimelimitfP"
  2895. Time limit for LDAP queries.
  2896. .ip "-ZfIsizelimitfP"
  2897. Size (number of matches) limit for LDAP queries.
  2898. .ip "-dfIdistinguished_namefP"
  2899. The distinguished name to use to login to the LDAP server.
  2900. .ip "-MfImethodfP"
  2901. The method to authenticate to the LDAP server.
  2902. Should be one of
  2903. .b LDAP_AUTH_NONE ,
  2904. .b LDAP_AUTH_SIMPLE ,
  2905. or
  2906. .b LDAP_AUTH_KRBV4 .
  2907. .ip "-PfIpasswordfilefP"
  2908. The file containing the secret key for the
  2909. .b LDAP_AUTH_SIMPLE
  2910. authentication method
  2911. or the name of the Kerberos ticket file for
  2912. .b LDAP_AUTH_KRBV4 .
  2913. .ip "-1"
  2914. Force LDAP searches to only succeed if a single match is found.
  2915. If multiple values are found,
  2916. the search is treated as if no match was found.
  2917. .pp
  2918. The
  2919. .i dbm
  2920. map appends the strings
  2921. .q &.pag
  2922. and
  2923. .q &.dir
  2924. to the given filename;
  2925. the
  2926. .i hash
  2927. and
  2928. .i btree
  2929. maps append
  2930. .q &.db .
  2931. For example, the map specification
  2932. .(b
  2933. Kuucp dbm -o -N /etc/mail/uucpmap
  2934. .)b
  2935. specifies an optional map named
  2936. .q uucp
  2937. of class
  2938. .q dbm ;
  2939. it always has null bytes at the end of every string,
  2940. and the data is located in
  2941. /etc/mail/uucpmap.{dir,pag}.
  2942. .pp
  2943. The program
  2944. .i makemap (8)
  2945. can be used to build any of the three database-oriented maps.
  2946. It takes the following flags:
  2947. .ip -f
  2948. Do not fold upper to lower case in the map.
  2949. .ip -N
  2950. Include null bytes in keys.
  2951. .ip -o
  2952. Append to an existing (old) file.
  2953. .ip -r
  2954. Allow replacement of existing keys;
  2955. normally, re-inserting an existing key is an error.
  2956. .ip -v
  2957. Print what is happening.
  2958. .lp
  2959. The
  2960. .i sendmail
  2961. daemon does not have to be restarted to read the new maps
  2962. as long as you change them in place;
  2963. file locking is used so that the maps won't be read
  2964. while they are being updated.
  2965. .pp
  2966. New classes can be added in the routine
  2967. .b setupmaps
  2968. in file
  2969. .b conf.c .
  2970. .sh 2 "The User Database"
  2971. .pp
  2972. If you have a version of
  2973. .i sendmail
  2974. with the user database package
  2975. compiled in,
  2976. the handling of sender and recipient addresses
  2977. is modified.
  2978. .pp
  2979. The location of this database is controlled with the
  2980. .b UserDatabaseSpec
  2981. option.
  2982. .sh 3 "Structure of the user database"
  2983. .pp
  2984. The database is a sorted (BTree-based) structure.
  2985. User records are stored with the key:
  2986. .(b
  2987. fIuser-namefPfB:fPfIfield-namefP
  2988. .)b
  2989. The sorted database format ensures that user records are clustered together.
  2990. Meta-information is always stored with a leading colon.
  2991. .pp
  2992. Field names define both the syntax and semantics of the value.
  2993. Defined fields include:
  2994. .nr ii 1i
  2995. .ip maildrop
  2996. The delivery address for this user.
  2997. There may be multiple values of this record.
  2998. In particular,
  2999. mailing lists will have one
  3000. .i maildrop
  3001. record for each user on the list.
  3002. .ip "mailname"
  3003. The outgoing mailname for this user.
  3004. For each outgoing name,
  3005. there should be an appropriate
  3006. .i maildrop
  3007. record for that name to allow return mail.
  3008. See also
  3009. .i :default:mailname .
  3010. .ip mailsender
  3011. Changes any mail sent to this address to have the indicated envelope sender.
  3012. This is intended for mailing lists,
  3013. and will normally be the name of an appropriate -request address.
  3014. It is very similar to the owner-c
  3015. .i list
  3016. syntax in the alias file.
  3017. .ip fullname
  3018. The full name of the user.
  3019. .ip office-address
  3020. The office address for this user.
  3021. .ip office-phone
  3022. The office phone number for this user.
  3023. .ip office-fax
  3024. The office FAX number for this user.
  3025. .ip home-address
  3026. The home address for this user.
  3027. .ip home-phone
  3028. The home phone number for this user.
  3029. .ip home-fax
  3030. The home FAX number for this user.
  3031. .ip project
  3032. A (short) description of the project this person is affiliated with.
  3033. In the University this is often just the name of their graduate advisor.
  3034. .ip plan
  3035. A pointer to a file from which plan information can be gathered.
  3036. .pp
  3037. As of this writing,
  3038. only a few of these fields are actually being used by
  3039. .i sendmail :
  3040. .i maildrop
  3041. and
  3042. .i mailname .
  3043. A
  3044. .i finger
  3045. program that uses the other fields is planned.
  3046. .sh 3 "User database semantics"
  3047. .pp
  3048. When the rewriting rules submit an address to the local mailer,
  3049. the user name is passed through the alias file.
  3050. If no alias is found (or if the alias points back to the same address),
  3051. the name (with
  3052. .q :maildrop
  3053. appended)
  3054. is then used as a key in the user database.
  3055. If no match occurs (or if the maildrop points at the same address),
  3056. forwarding is tried.
  3057. .pp
  3058. If the first token of the user name returned by ruleset 0
  3059. is an
  3060. .q @
  3061. sign, the user database lookup is skipped.
  3062. The intent is that the user database will act as a set of defaults
  3063. for a cluster (in our case, the Computer Science Division);
  3064. mail sent to a specific machine should ignore these defaults.
  3065. .pp
  3066. When mail is sent,
  3067. the name of the sending user is looked up in the database.
  3068. If that user has a
  3069. .q mailname
  3070. record,
  3071. the value of that record is used as their outgoing name.
  3072. For example, I might have a record:
  3073. .(b
  3074. eric:mailname Eric.Allman@CS.Berkeley.EDU
  3075. .)b
  3076. This would cause my outgoing mail to be sent as Eric.Allman.
  3077. .pp
  3078. If a
  3079. .q maildrop
  3080. is found for the user,
  3081. but no corresponding
  3082. .q mailname
  3083. record exists,
  3084. the record
  3085. .q :default:mailname
  3086. is consulted.
  3087. If present, this is the name of a host to override the local host.
  3088. For example, in our case we would set it to
  3089. .q CS.Berkeley.EDU .
  3090. The effect is that anyone known in the database
  3091. gets their outgoing mail stamped as
  3092. .q user@CS.Berkeley.EDU ,
  3093. but people not listed in the database use the local hostname.
  3094. .sh 3 "Creating the database**"
  3095. .(f
  3096. **These instructions are known to be incomplete.
  3097. A future version of the user database is planned
  3098. including things such as finger service *- and good documentation.
  3099. .)f
  3100. .pp
  3101. The user database is built from a text file
  3102. using the
  3103. .i makemap
  3104. utility
  3105. (in the distribution in the makemap subdirectory).
  3106. The text file is a series of lines corresponding to userdb records;
  3107. each line has a key and a value separated by white space.
  3108. The key is always in the format described above *-
  3109. for example:
  3110. .(b
  3111. eric:maildrop
  3112. .)b
  3113. This file is normally installed in a system directory;
  3114. for example, it might be called
  3115. .i /etc/mail/userdb .
  3116. To make the database version of the map, run the program:
  3117. .(b
  3118. makemap btree /etc/mail/userdb < /etc/mail/userdb
  3119. .)b
  3120. Then create a config file that uses this.
  3121. For example, using the V8 M4 configuration, include the
  3122. following line in your .mc file:
  3123. .(b
  3124. define(`confUSERDB_SPEC', /etc/mail/userdb.db)
  3125. .)b
  3126. .sh 1 "OTHER CONFIGURATION"
  3127. .pp
  3128. There are some configuration changes that can be made by
  3129. recompiling
  3130. .i sendmail .
  3131. This section describes what changes can be made
  3132. and what has to be modified to make them.
  3133. In most cases this should be unnecessary
  3134. unless you are porting
  3135. .i sendmail
  3136. to a new environment.
  3137. .sh 2 "Parameters in devtools/OS/$oscf"
  3138. .pp
  3139. These parameters are intended to describe the compilation environment,
  3140. not site policy,
  3141. and should normally be defined in the operating system
  3142. configuration file.
  3143. .b "This section needs a complete rewrite."
  3144. .ip NDBM
  3145. If set,
  3146. the new version of the DBM library
  3147. that allows multiple databases will be used.
  3148. If neither NDBM nor NEWDB are set,
  3149. a much less efficient method of alias lookup is used.
  3150. .ip NEWDB
  3151. If set, use the new database package from Berkeley (from 4.4BSD).
  3152. This package is substantially faster than DBM or NDBM.
  3153. If NEWDB and NDBM are both set,
  3154. .i sendmail
  3155. will read DBM files,
  3156. but will create and use NEWDB files.
  3157. .ip NIS
  3158. Include support for NIS.
  3159. If set together with
  3160. .i both
  3161. NEWDB and NDBM,
  3162. .i sendmail
  3163. will create both DBM and NEWDB files if and only if
  3164. an alias file includes the substring
  3165. .q /yp/
  3166. in the name.
  3167. This is intended for compatibility with Sun Microsystems'
  3168. .i mkalias
  3169. program used on YP masters.
  3170. .ip NISPLUS
  3171. Compile in support for NIS+.
  3172. .ip NETINFO
  3173. Compile in support for NetInfo (NeXT stations).
  3174. .ip LDAPMAP
  3175. Compile in support for LDAP X500 queries.
  3176. Requires libldap and liblber
  3177. from the Umich LDAP 3.2 or 3.3 release
  3178. or equivalent libraries for other LDAP libraries
  3179. such as OpenLDAP.
  3180. .ip HESIOD
  3181. Compile in support for Hesiod.
  3182. .ip MAP_NSD
  3183. Compile in support for IRIX NSD lookups.
  3184. .ip MAP_REGEX
  3185. Compile in support for regular expression matching.
  3186. .ip PH_MAP
  3187. Compile in support for ph lookups.
  3188. .ip SASL
  3189. Compile in support for SASL,
  3190. a required component for SMTP Authentication support.
  3191. .ip TCPWRAPPERS
  3192. Compile in support for TCP Wrappers.
  3193. .ip _PATH_SENDMAILCF
  3194. The pathname of the sendmail.cf file.
  3195. .ip _PATH_SENDMAILPID
  3196. The pathname of the sendmail.pid file.
  3197. .pp
  3198. There are also several compilation flags to indicate the environment
  3199. such as
  3200. .q _AIX3
  3201. and
  3202. .q _SCO_unix_ .
  3203. See the sendmail/README
  3204. file for the latest scoop on these flags.
  3205. .sh 2 "Parameters in sendmail/conf.h"
  3206. .pp
  3207. Parameters and compilation options
  3208. are defined in conf.h.
  3209. Most of these need not normally be tweaked;
  3210. common parameters are all in sendmail.cf.
  3211. However, the sizes of certain primitive vectors, etc.,
  3212. are included in this file.
  3213. The numbers following the parameters
  3214. are their default value.
  3215. .pp
  3216. This document is not the best source of information
  3217. for compilation flags in conf.h (em
  3218. see sendmail/README or sendmail/conf.h itself.
  3219. .nr ii 1.2i
  3220. .ip "MAXLINE [2048]"
  3221. The maximum line length of any input line.
  3222. If message lines exceed this length
  3223. they will still be processed correctly;
  3224. however, header lines,
  3225. configuration file lines,
  3226. alias lines,
  3227. etc.,
  3228. must fit within this limit.
  3229. .ip "MAXNAME [256]"
  3230. The maximum length of any name,
  3231. such as a host or a user name.
  3232. .ip "MAXPV [256]"
  3233. The maximum number of parameters to any mailer.
  3234. This limits the number of recipients that may be passed in one transaction.
  3235. It can be set to any arbitrary number above about 10,
  3236. since
  3237. .i sendmail
  3238. will break up a delivery into smaller batches as needed.
  3239. A higher number may reduce load on your system, however.
  3240. .ip "MAXATOM [1000]"
  3241. The maximum number of atoms
  3242. (tokens)
  3243. in a single address.
  3244. For example,
  3245. the address
  3246. .q "eric@CS.Berkeley.EDU"
  3247. is seven atoms.
  3248. .ip "MAXMAILERS [25]"
  3249. The maximum number of mailers that may be defined
  3250. in the configuration file.
  3251. .ip "MAXRWSETS [200]"
  3252. The maximum number of rewriting sets
  3253. that may be defined.
  3254. The first half of these are reserved for numeric specification
  3255. (e.g., ``S92''),
  3256. while the upper half are reserved for auto-numbering
  3257. (e.g., ``Sfoo'').
  3258. Thus, with a value of 200 an attempt to use ``S99'' will succeed,
  3259. but ``S100'' will fail.
  3260. .ip "MAXPRIORITIES [25]"
  3261. The maximum number of values for the
  3262. .q Precedence:
  3263. field that may be defined
  3264. (using the
  3265. .b P
  3266. line in sendmail.cf).
  3267. .ip "MAXUSERENVIRON [100]"
  3268. The maximum number of items in the user environment
  3269. that will be passed to subordinate mailers.
  3270. .ip "MAXMXHOSTS [100]"
  3271. The maximum number of MX records we will accept for any single host.
  3272. .ip "MAXALIASDB [12]"
  3273. The maximum number of alias databases that can be open at any time.
  3274. Note that there may also be an open file limit.
  3275. .ip "MAXMAPSTACK [12]"
  3276. The maximum number of maps that may be "stacked" in a
  3277. .b sequence
  3278. class map.
  3279. .ip "MAXMIMEARGS [20]"
  3280. The maximum number of arguments in a MIME Content-Type: header;
  3281. additional arguments will be ignored.
  3282. .ip "MAXMIMENESTING [20]"
  3283. The maximum depth to which MIME messages may be nested
  3284. (that is, nested Message or Multipart documents;
  3285. this does not limit the number of components in a single Multipart document).
  3286. .ip "MAXDAEMONS [10]"
  3287. The maximum number of sockets sendmail will open for accepting connections
  3288. on different ports.
  3289. .ip "MAXMACNAMELEN [25]"
  3290. The maximum length of a macro name.
  3291. .lp
  3292. A number of other compilation options exist.
  3293. These specify whether or not specific code should be compiled in.
  3294. Ones marked with (dg
  3295. are 0/1 valued.
  3296. .nr ii 1.2i
  3297. .ip NETINET(dg
  3298. If set,
  3299. support for Internet protocol networking is compiled in.
  3300. Previous versions of
  3301. .i sendmail
  3302. referred to this as
  3303. .sm DAEMON ;
  3304. this old usage is now incorrect.
  3305. Defaults on;
  3306. turn it off in the Makefile
  3307. if your system doesn't support the Internet protocols.
  3308. .ip NETINET6(dg
  3309. If set,
  3310. support for IPv6 networking is compiled in.
  3311. .ip NETISO(dg
  3312. If set,
  3313. support for ISO protocol networking is compiled in
  3314. (it may be appropriate to #define this in the Makefile instead of conf.h).
  3315. .ip NETUNIX(dg
  3316. If set,
  3317. support for UNIX domain sockets is compiled in.
  3318. This is used for control socket support.
  3319. .ip LOG
  3320. If set,
  3321. the
  3322. .i syslog
  3323. routine in use at some sites is used.
  3324. This makes an informational log record
  3325. for each message processed,
  3326. and makes a higher priority log record
  3327. for internal system errors.
  3328. .b "STRONGLY RECOMMENDED"
  3329. (em if you want no logging, turn it off in the configuration file.
  3330. .ip MATCHGECOS(dg
  3331. Compile in the code to do ``fuzzy matching'' on the GECOS field
  3332. in /etc/passwd.
  3333. This also requires that the
  3334. .b MatchGECOS
  3335. option be turned on.
  3336. .ip NAMED_BIND(dg
  3337. Compile in code to use the
  3338. Berkeley Internet Name Domain (BIND) server
  3339. to resolve TCP/IP host names.
  3340. .ip NOTUNIX
  3341. If you are using a non-UNIX mail format,
  3342. you can set this flag to turn off special processing
  3343. of UNIX-style
  3344. .q "From "
  3345. lines.
  3346. .ip QUEUE(dg
  3347. This flag should be set to compile in the queueing code.
  3348. If this is not set,
  3349. mailers must accept the mail immediately
  3350. or it will be returned to the sender.
  3351. .ip SMTP(dg
  3352. If set,
  3353. the code to handle user and server SMTP will be compiled in.
  3354. This is only necessary if your machine has some mailer
  3355. that speaks SMTP
  3356. (this means most machines everywhere).
  3357. .ip USERDB(dg
  3358. Include the
  3359. .b experimental
  3360. Berkeley user information database package.
  3361. This adds a new level of local name expansion
  3362. between aliasing and forwarding.
  3363. It also uses the NEWDB package.
  3364. This may change in future releases.
  3365. .lp
  3366. The following options are normally turned on
  3367. in per-operating-system clauses in conf.h.
  3368. .ip IDENTPROTO(dg
  3369. Compile in the IDENT protocol as defined in RFC 1413.
  3370. This defaults on for all systems except Ultrix,
  3371. which apparently has the interesting
  3372. .q feature
  3373. that when it receives a
  3374. .q "host unreachable"
  3375. message it closes all open connections to that host.
  3376. Since some firewall gateways send this error code
  3377. when you access an unauthorized port (such as 113, used by IDENT),
  3378. Ultrix cannot receive email from such hosts.
  3379. .ip SYSTEM5
  3380. Set all of the compilation parameters appropriate for System V.
  3381. .ip HASFLOCK(dg
  3382. Use Berkeley-style
  3383. .b flock
  3384. instead of System V
  3385. .b lockf
  3386. to do file locking.
  3387. Due to the highly unusual semantics of locks
  3388. across forks in
  3389. .b lockf ,
  3390. this should always be used if at all possible.
  3391. .ip HASINITGROUPS
  3392. Set this if your system has the
  3393. .i initgroups()
  3394. call
  3395. (if you have multiple group support).
  3396. This is the default if SYSTEM5 is
  3397. .i not
  3398. defined or if you are on HPUX.
  3399. .ip HASUNAME
  3400. Set this if you have the
  3401. .i uname (2)
  3402. system call (or corresponding library routine).
  3403. Set by default if
  3404. SYSTEM5
  3405. is set.
  3406. .ip HASGETDTABLESIZE
  3407. Set this if you have the
  3408. .i getdtablesize (2)
  3409. system call.
  3410. .ip HASWAITPID
  3411. Set this if you have the
  3412. .i haswaitpid (2)
  3413. system call.
  3414. .ip FAST_PID_RECYCLE
  3415. Set this if your system can possibly
  3416. reuse the same pid in the same second of time.
  3417. .ip SFS_TYPE
  3418. The mechanism that can be used to get file system capacity information.
  3419. The values can be one of
  3420. SFS_USTAT (use the ustat(2) syscall),
  3421. SFS_4ARGS (use the four argument statfs(2) syscall),
  3422. SFS_VFS (use the two argument statfs(2) syscall including <sys/vfs.h>),
  3423. SFS_MOUNT (use the two argument statfs(2) syscall including <sys/mount.h>),
  3424. SFS_STATFS (use the two argument statfs(2) syscall including <sys/statfs.h>),
  3425. SFS_STATVFS (use the two argument statfs(2) syscall including <sys/statvfs.h>),
  3426. or
  3427. SFS_NONE (no way to get this information).
  3428. .ip LA_TYPE
  3429. The load average type.
  3430. Details are described below.
  3431. .lp
  3432. The are several built-in ways of computing the load average.
  3433. .i Sendmail
  3434. tries to auto-configure them based on imperfect guesses;
  3435. you can select one using the
  3436. .i cc
  3437. option
  3438. .b -DLA_TYPE= c
  3439. .i type ,
  3440. where
  3441. .i type
  3442. is:
  3443. .ip LA_INT
  3444. The kernel stores the load average in the kernel as an array of long integers.
  3445. The actual values are scaled by a factor FSCALE
  3446. (default 256).
  3447. .ip LA_SHORT
  3448. The kernel stores the load average in the kernel as an array of short integers.
  3449. The actual values are scaled by a factor FSCALE
  3450. (default 256).
  3451. .ip LA_FLOAT
  3452. The kernel stores the load average in the kernel as an array of
  3453. double precision floats.
  3454. .ip LA_MACH
  3455. Use MACH-style load averages.
  3456. .ip LA_SUBR
  3457. Call the
  3458. .i getloadavg
  3459. routine to get the load average as an array of doubles.
  3460. .ip LA_ZERO
  3461. Always return zero as the load average.
  3462. This is the fallback case.
  3463. .lp
  3464. If type
  3465. .sm LA_INT ,
  3466. .sm LA_SHORT ,
  3467. or
  3468. .sm LA_FLOAT
  3469. is specified,
  3470. you may also need to specify
  3471. .sm _PATH_UNIX
  3472. (the path to your system binary)
  3473. and
  3474. .sm LA_AVENRUN
  3475. (the name of the variable containing the load average in the kernel;
  3476. usually
  3477. .q _avenrun
  3478. or
  3479. .q avenrun ).
  3480. .sh 2 "Configuration in sendmail/conf.c"
  3481. .pp
  3482. The following changes can be made in conf.c.
  3483. .sh 3 "Built-in Header Semantics"
  3484. .pp
  3485. Not all header semantics are defined in the configuration file.
  3486. Header lines that should only be included by certain mailers
  3487. (as well as other more obscure semantics)
  3488. must be specified in the
  3489. .i HdrInfo
  3490. table in
  3491. .i conf.c .
  3492. This table contains the header name
  3493. (which should be in all lower case)
  3494. and a set of header control flags (described below),
  3495. The flags are:
  3496. .ip H_ACHECK
  3497. Normally when the check is made to see if a header line is compatible
  3498. with a mailer,
  3499. .i sendmail
  3500. will not delete an existing line.
  3501. If this flag is set,
  3502. .i sendmail
  3503. will delete
  3504. even existing header lines.
  3505. That is,
  3506. if this bit is set and the mailer does not have flag bits set
  3507. that intersect with the required mailer flags
  3508. in the header definition in
  3509. sendmail.cf,
  3510. the header line is
  3511. .i always
  3512. deleted.
  3513. .ip H_EOH
  3514. If this header field is set,
  3515. treat it like a blank line,
  3516. i.e.,
  3517. it will signal the end of the header
  3518. and the beginning of the message text.
  3519. .ip H_FORCE
  3520. Add this header entry
  3521. even if one existed in the message before.
  3522. If a header entry does not have this bit set,
  3523. .i sendmail
  3524. will not add another header line if a header line
  3525. of this name already existed.
  3526. This would normally be used to stamp the message
  3527. by everyone who handled it.
  3528. .ip H_TRACE
  3529. If set,
  3530. this is a timestamp
  3531. (trace)
  3532. field.
  3533. If the number of trace fields in a message
  3534. exceeds a preset amount
  3535. the message is returned
  3536. on the assumption that it has an aliasing loop.
  3537. .ip H_RCPT
  3538. If set,
  3539. this field contains recipient addresses.
  3540. This is used by the
  3541. .b -t
  3542. flag to determine who to send to
  3543. when it is collecting recipients from the message.
  3544. .ip H_FROM
  3545. This flag indicates that this field
  3546. specifies a sender.
  3547. The order of these fields in the
  3548. .i HdrInfo
  3549. table specifies
  3550. .i sendmail 's
  3551. preference
  3552. for which field to return error messages to.
  3553. .ip H_ERRORSTO
  3554. Addresses in this header should receive error messages.
  3555. .ip H_CTE
  3556. This header is a Content-Transfer-Encoding header.
  3557. .ip H_CTYPE
  3558. This header is a Content-Type header.
  3559. .ip H_STRIPVAL
  3560. Strip the value from the header (for Bcc:).
  3561. .nr ii 5n
  3562. .lp
  3563. Let's look at a sample
  3564. .i HdrInfo
  3565. specification:
  3566. .(b
  3567. .ta 4n +w'"content-transfer-encoding",  'u
  3568. struct hdrinfo HdrInfo[] =
  3569. &{
  3570.      /* originator fields, most to least significant  */
  3571. "resent-sender", H_FROM,
  3572. "resent-from", H_FROM,
  3573. "sender", H_FROM,
  3574. "from", H_FROM,
  3575. "full-name", H_ACHECK,
  3576. "errors-to", H_FROM^|^H_ERRORSTO,
  3577.      /* destination fields */
  3578. "to", H_RCPT,
  3579. "resent-to", H_RCPT,
  3580. "cc", H_RCPT,
  3581. "bcc", H_RCPT^|^H_STRIPVAL,
  3582.      /* message identification and control */
  3583. "message", H_EOH,
  3584. "text", H_EOH,
  3585.      /* trace fields */
  3586. "received", H_TRACE^|^H_FORCE,
  3587.      /* miscellaneous fields */
  3588. "content-transfer-encoding", H_CTE,
  3589. "content-type", H_CTYPE,
  3590. NULL, 0,
  3591. };
  3592. .)b
  3593. This structure indicates that the
  3594. .q To: ,
  3595. .q Resent-To: ,
  3596. and
  3597. .q Cc:
  3598. fields
  3599. all specify recipient addresses.
  3600. Any
  3601. .q Full-Name:
  3602. field will be deleted unless the required mailer flag
  3603. (indicated in the configuration file)
  3604. is specified.
  3605. The
  3606. .q Message:
  3607. and
  3608. .q Text:
  3609. fields will terminate the header;
  3610. these are used by random dissenters around the network world.
  3611. The
  3612. .q Received:
  3613. field will always be added,
  3614. and can be used to trace messages.
  3615. .pp
  3616. There are a number of important points here.
  3617. First,
  3618. header fields are not added automatically just because they are in the
  3619. .i HdrInfo
  3620. structure;
  3621. they must be specified in the configuration file
  3622. in order to be added to the message.
  3623. Any header fields mentioned in the configuration file but not
  3624. mentioned in the
  3625. .i HdrInfo
  3626. structure have default processing performed;
  3627. that is,
  3628. they are added unless they were in the message already.
  3629. Second,
  3630. the
  3631. .i HdrInfo
  3632. structure only specifies cliched processing;
  3633. certain headers are processed specially by ad hoc code
  3634. regardless of the status specified in
  3635. .i HdrInfo .
  3636. For example,
  3637. the
  3638. .q Sender:
  3639. and
  3640. .q From:
  3641. fields are always scanned on ARPANET mail
  3642. to determine the sender**;
  3643. .(f
  3644. **Actually, this is no longer true in SMTP;
  3645. this information is contained in the envelope.
  3646. The older ARPANET protocols did not completely distinguish
  3647. envelope from header.
  3648. .)f
  3649. this is used to perform the
  3650. .q "return to sender"
  3651. function.
  3652. The
  3653. .q "From:"
  3654. and
  3655. .q "Full-Name:"
  3656. fields are used to determine the full name of the sender
  3657. if possible;
  3658. this is stored in the macro
  3659. .b $x
  3660. and used in a number of ways.
  3661. .sh 3 "Restricting Use of Email"
  3662. .pp
  3663. If it is necessary to restrict mail through a relay,
  3664. the
  3665. .i checkcompat
  3666. routine can be modified.
  3667. This routine is called for every recipient address.
  3668. It returns an exit status
  3669. indicating the status of the message.
  3670. The status
  3671. .sm EX_OK
  3672. accepts the address,
  3673. .sm EX_TEMPFAIL
  3674. queues the message for a later try,
  3675. and other values
  3676. (commonly
  3677. .sm EX_UNAVAILABLE )
  3678. reject the message.
  3679. It is up to
  3680. .i checkcompat
  3681. to print an error message
  3682. (using
  3683. .i usrerr )
  3684. if the message is rejected.
  3685. For example,
  3686. .i checkcompat
  3687. could read:
  3688. .(b
  3689. .re
  3690. .sz -1
  3691. .ta 4n +4n +4n +4n +4n +4n +4n
  3692. int
  3693. checkcompat(to, e)
  3694. register ADDRESS *to;
  3695. register ENVELOPE *e;
  3696. &{
  3697. register STAB *s;
  3698. s = stab("private", ST_MAILER, ST_FIND);
  3699. if (s != NULL && e->e_from.q_mailer != LocalMailer &&
  3700.     to->q_mailer == s->s_mailer)
  3701. {
  3702. usrerr("No private net mail allowed through this machine");
  3703. return (EX_UNAVAILABLE);
  3704. }
  3705. if (MsgSize > 50000 && bitnset(M_LOCALMAILER, to->q_mailer))
  3706. {
  3707. usrerr("Message too large for non-local delivery");
  3708. e->e_flags |= EF_NORETURN;
  3709. return (EX_UNAVAILABLE);
  3710. }
  3711. return (EX_OK);
  3712. }
  3713. .sz
  3714. .)b
  3715. This would reject messages greater than 50000 bytes
  3716. unless they were local.
  3717. The
  3718. .i EF_NORETURN
  3719. flag can be set in
  3720. .i e(->e_flags
  3721. to suppress the return of the actual body
  3722. of the message in the error return.
  3723. The actual use of this routine is highly dependent on the
  3724. implementation,
  3725. and use should be limited.
  3726. .sh 3 "New Database Map Classes"
  3727. .pp
  3728. New key maps can be added by creating a class initialization function
  3729. and a lookup function.
  3730. These are then added to the routine
  3731. .i setupmaps.
  3732. .pp
  3733. The initialization function is called as
  3734. .(b
  3735. fIxxxfP_map_init(MAP *map, char *args)
  3736. .)b
  3737. The
  3738. .i map
  3739. is an internal data structure.
  3740. The
  3741. .i args
  3742. is a pointer to the portion of the configuration file line
  3743. following the map class name;
  3744. flags and filenames can be extracted from this line.
  3745. The initialization function must return
  3746. .sm TRUE
  3747. if it successfully opened the map,
  3748. .sm FALSE
  3749. otherwise.
  3750. .pp
  3751. The lookup function is called as
  3752. .(b
  3753. fIxxxfP_map_lookup(MAP *map, char buf[], char **av, int *statp)
  3754. .)b
  3755. The
  3756. .i map
  3757. defines the map internally.
  3758. The
  3759. .i buf
  3760. has the input key.
  3761. This may be (and often is) used destructively.
  3762. The
  3763. .i av
  3764. is a list of arguments passed in from the rewrite line.
  3765. The lookup function should return a pointer to the new value.
  3766. If the map lookup fails,
  3767. .i *statp
  3768. should be set to an exit status code;
  3769. in particular, it should be set to
  3770. .sm EX_TEMPFAIL
  3771. if recovery is to be attempted by the higher level code.
  3772. .sh 3 "Queueing Function"
  3773. .pp
  3774. The routine
  3775. .i shouldqueue
  3776. is called to decide if a message should be queued
  3777. or processed immediately.
  3778. Typically this compares the message priority to the current load average.
  3779. The default definition is:
  3780. .(b
  3781. bool
  3782. shouldqueue(pri, ctime)
  3783. long pri;
  3784. time_t ctime;
  3785. {
  3786. if (CurrentLA < QueueLA)
  3787. return (FALSE);
  3788. return (pri > (QueueFactor / (CurrentLA - QueueLA + 1)));
  3789. }
  3790. .)b
  3791. If the current load average
  3792. (global variable
  3793. .i CurrentLA ,
  3794. which is set before this function is called)
  3795. is less than the low threshold load average
  3796. (option
  3797. .b x ,
  3798. variable
  3799. .i QueueLA ),
  3800. .i shouldqueue
  3801. returns
  3802. .sm FALSE
  3803. immediately
  3804. (that is, it should
  3805. .i not
  3806. queue).
  3807. If the current load average exceeds the high threshold load average
  3808. (option
  3809. .b X ,
  3810. variable
  3811. .i RefuseLA ),
  3812. .i shouldqueue
  3813. returns
  3814. .sm TRUE
  3815. immediately.
  3816. Otherwise, it computes the function based on the message priority,
  3817. the queue factor
  3818. (option
  3819. .b q ,
  3820. global variable
  3821. .i QueueFactor ),
  3822. and the current and threshold load averages.
  3823. .pp
  3824. An implementation wishing to take the actual age of the message into account
  3825. can also use the
  3826. .i ctime
  3827. parameter,
  3828. which is the time that the message was first submitted to
  3829. .i sendmail .
  3830. Note that the
  3831. .i pri
  3832. parameter is already weighted
  3833. by the number of times the message has been tried
  3834. (although this tends to lower the priority of the message with time);
  3835. the expectation is that the
  3836. .i ctime
  3837. would be used as an
  3838. .q "escape clause"
  3839. to ensure that messages are eventually processed.
  3840. .sh 3 "Refusing Incoming SMTP Connections"
  3841. .pp
  3842. The function
  3843. .i refuseconnections
  3844. returns
  3845. .sm TRUE
  3846. if incoming SMTP connections should be refused.
  3847. The current implementation is based exclusively on the current load average
  3848. and the refuse load average option
  3849. (option
  3850. .b X ,
  3851. global variable
  3852. .i RefuseLA ):
  3853. .(b
  3854. bool
  3855. refuseconnections()
  3856. {
  3857. return (RefuseLA > 0 && CurrentLA >= RefuseLA);
  3858. }
  3859. .)b
  3860. A more clever implementation
  3861. could look at more system resources.
  3862. .sh 3 "Load Average Computation"
  3863. .pp
  3864. The routine
  3865. .i getla
  3866. returns the current load average (as a rounded integer).
  3867. The distribution includes several possible implementations.
  3868. If you are porting to a new environment
  3869. you may need to add some new tweaks.**
  3870. .(f
  3871. **If you do, please send updates to
  3872. sendmail@Sendmail.ORG.
  3873. .)f
  3874. .sh 2 "Configuration in sendmail/daemon.c"
  3875. .pp
  3876. The file
  3877. .i sendmail/daemon.c
  3878. contains a number of routines that are dependent
  3879. on the local networking environment.
  3880. The version supplied assumes you have BSD style sockets.
  3881. .pp
  3882. In previous releases,
  3883. we recommended that you modify the routine
  3884. .i maphostname
  3885. if you wanted to generalize
  3886. .b $[
  3887. &...&
  3888. .b $]
  3889. lookups.
  3890. We now recommend that you create a new keyed map instead.
  3891. .sh 1 "ACKNOWLEDGEMENTS"
  3892. .pp
  3893. I've worked on
  3894. .i sendmail
  3895. for many years,
  3896. and many employers have been remarkably patient
  3897. about letting me work on a large project
  3898. that was not part of my official job.
  3899. This includes time on the INGRES Project at
  3900. the University of California at Berkeley,
  3901. at Britton Lee,
  3902. and again on the Mammoth and Titan Projects at Berkeley.
  3903. .pp
  3904. Much of the second wave of improvements
  3905. resulting in version 8.1
  3906. should be credited to Bryan Costales of the
  3907. International Computer Science Institute.
  3908. As he passed me drafts of his book on
  3909. .i sendmail
  3910. I was inspired to start working on things again.
  3911. Bryan was also available to bounce ideas off of.
  3912. .pp
  3913. Gregory Neil Shapiro
  3914. of Worcester Polytechnic Institute
  3915. has become instrumental in all phases of
  3916. .i sendmail
  3917. support and development,
  3918. and was largely responsible for getting versions 8.8 and 8.9
  3919. out the door.
  3920. .pp
  3921. Many, many people contributed chunks of code and ideas to
  3922. .i sendmail .
  3923. It has proven to be a group network effort.
  3924. Version 8 in particular was a group project.
  3925. The following people and organizations made notable contributions:
  3926. .(l
  3927. John Beck, Hewlett-Packard & Sun Microsystems
  3928. Keith Bostic, CSRG, University of California, Berkeley
  3929. Andrew Cheng, Sun Microsystems
  3930. Michael J. Corrigan, University of California, San Diego
  3931. Bryan Costales, International Computer Science Institute & InfoBeat
  3932. Pa*:r (Pell) Emanuelsson
  3933. Craig Everhart, Transarc Corporation
  3934. Per Hedeland, Ericsson
  3935. Tom Ivar Helbekkmo, Norwegian School of Economics
  3936. Kari Hurtta, Finnish Meteorological Institute
  3937. Allan E. Johannesen, WPI
  3938. Jonathan Kamens, OpenVision Technologies, Inc.
  3939. Takahiro Kanbe, Fuji Xerox Information Systems Co., Ltd.
  3940. Brian Kantor, University of California, San Diego
  3941. John Kennedy, Cal State University, Chico
  3942. Murray S. Kucherawy, HookUp Communication Corp.
  3943. Bruce Lilly, Sony U.S.
  3944. Karl London
  3945. Motonori Nakamura, Ritsumeikan University & Kyoto University
  3946. John Gardiner Myers, Carnegie Mellon University
  3947. Neil Rickert, Northern Illinois University
  3948. Gregory Neil Shapiro, WPI
  3949. Eric Schnoebelen, Convex Computer Corp.
  3950. Eric Wassenaar, National Institute for Nuclear and High Energy Physics, Amsterdam
  3951. Randall Winchester, University of Maryland
  3952. Christophe Wolfhugel, Pasteur Institute & Herve Schauer Consultants (Paris)
  3953. Exactis.com, Inc.
  3954. .)l
  3955. I apologize for anyone I have omitted, misspelled, misattributed, or
  3956. otherwise missed.
  3957. At this point, I suspect that at least a hundred people
  3958. have contributed code,
  3959. and many more have contributed ideas, comments, and encouragement.
  3960. I've tried to list them in the RELEASE_NOTES in the distribution directory.
  3961. I appreciate their contribution as well.
  3962. .pp
  3963. Special thanks are reserved for Michael Corrigan and Christophe Wolfhugel,
  3964. who besides being wonderful guinea pigs and contributors
  3965. have also consented to be added to the ``sendmail@Sendmail.ORG'' list
  3966. and, by answering the bulk of the questions sent to that list,
  3967. have freed me up to do other work.
  3968. .++ A
  3969. .+c "COMMAND LINE FLAGS"
  3970. .ba 0
  3971. .nr ii 1i
  3972. .pp
  3973. Arguments must be presented with flags before addresses.
  3974. The flags are:
  3975. .ip -bfIxfP
  3976. Set operation mode to
  3977. .i x .
  3978. Operation modes are:
  3979. .(b
  3980. .ta 4n
  3981. m Deliver mail (default)
  3982. s Speak SMTP on input side
  3983. a(dg ``Arpanet'' mode (get envelope sender information from header)
  3984. d Run as a daemon in background
  3985. D Run as a daemon in foreground
  3986. t Run in test mode
  3987. v Just verify addresses, don't collect or deliver
  3988. i Initialize the alias database
  3989. p Print the mail queue
  3990. .)b
  3991. .(f
  3992. (dgDeprecated.
  3993. .)f
  3994. .ip -BfItypefP
  3995. Indicate body type.
  3996. .ip -CfIfilefP
  3997. Use a different configuration file.
  3998. .i Sendmail
  3999. runs as the invoking user (rather than root)
  4000. when this flag is specified.
  4001. .ip -dfIlevelfP
  4002. Set debugging level.
  4003. .ip "-f fIaddrfP"
  4004. The sender's machine address is
  4005. .i addr .
  4006. .ip -F fInamefP
  4007. Sets the full name of this user to
  4008. .i name .
  4009. .ip -G
  4010. When accepting messages via the command line,
  4011. indicate that they are for relay (gateway) submission.
  4012. sendmail may complain about syntactically invalid messages,
  4013. e.g., unqualified host names,
  4014. rather than fixing them when this flag is set.
  4015. sendmail will not do any canonicalization in this mode.
  4016. .ip "-h fIcntfP"
  4017. Sets the
  4018. .q "hop count"
  4019. to
  4020. .i cnt .
  4021. This represents the number of times this message has been processed
  4022. by
  4023. .i sendmail
  4024. (to the extent that it is supported by the underlying networks).
  4025. .i Cnt
  4026. is incremented during processing,
  4027. and if it reaches
  4028. MAXHOP
  4029. (currently 30)
  4030. .i sendmail
  4031. throws away the message with an error.
  4032. .ip "-L fItagfP"
  4033. Sets the identifier used for syslog.
  4034. Note that this identifier is set
  4035. as early as possible.
  4036. However, 
  4037. .i sendmail
  4038. may be used
  4039. if problems arise
  4040. before the command line arguments
  4041. are processed.
  4042. .ip -n
  4043. Don't do aliasing or forwarding.
  4044. .ip "-N fInotificationsfP"
  4045. Tag all addresses being sent as wanting the indicated
  4046. .i notifications ,
  4047. which consists of the word
  4048. .q NEVER
  4049. or a comma-separated list of
  4050. .q SUCCESS ,
  4051. .q FAILURE ,
  4052. and
  4053. .q DELAY
  4054. for successful delivery,
  4055. failure,
  4056. and a message that is stuck in a queue somewhere.
  4057. The default is
  4058. .q FAILURE,DELAY .
  4059. .ip "-r fIaddrfP"
  4060. An obsolete form of
  4061. .b -f .
  4062. .ip -ofIx|valuefP
  4063. Set option
  4064. .i x
  4065. to the specified
  4066. .i value .
  4067. These options are described in Section 5.6.
  4068. .ip -OfIoptionfPfB=fPfIvaluefP
  4069. Set
  4070. .i option
  4071. to the specified
  4072. .i value
  4073. (for long form option names).
  4074. These options are described in Section 5.6.
  4075. .ip -MfIx|value
  4076. Set macro
  4077. .i x
  4078. to the specified
  4079. .i value .
  4080. .ip -pfIprotocolfP
  4081. Set the sending protocol.
  4082. Programs are encouraged to set this.
  4083. The protocol field can be in the form
  4084. .i protocol c
  4085. .b : c
  4086. .i host
  4087. to set both the sending protocol and sending host.
  4088. For example,
  4089. .q -pUUCP:uunet
  4090. sets the sending protocol to UUCP
  4091. and the sending host to uunet.
  4092. (Some existing programs use -oM to set the r and s macros;
  4093. this is equivalent to using -p.)
  4094. .ip -qfItimefP
  4095. Try to process the queued up mail.
  4096. If the time is given,
  4097. a
  4098. .i sendmail
  4099. will run through the queue at the specified interval
  4100. to deliver queued mail;
  4101. otherwise, it only runs once.
  4102. .ip -qfIXstringfP
  4103. Run the queue once,
  4104. limiting the jobs to those matching
  4105. .i Xstring .
  4106. The key letter
  4107. .i X
  4108. can be
  4109. .b I
  4110. to limit based on queue identifier,
  4111. .b R
  4112. to limit based on recipient,
  4113. or
  4114. .b S
  4115. to limit based on sender.
  4116. A particular queued job is accepted if one of the corresponding addresses
  4117. contains the indicated
  4118. .i string .
  4119. Multiple
  4120. .i -qfIXfP
  4121. flags are permitted,
  4122. with items with the same key letter
  4123. .q or'ed
  4124. together, and items with different key letters
  4125. .q and'ed
  4126. together.
  4127. .ip "-R ret"
  4128. What information you want returned if the message bounces;
  4129. .i ret
  4130. can be
  4131. .q HDRS
  4132. for headers only or
  4133. .q FULL
  4134. for headers plus body.
  4135. This is a request only;
  4136. the other end is not required to honor the parameter.
  4137. If
  4138. .q HDRS
  4139. is specified local bounces also return only the headers.
  4140. .ip -t
  4141. Read the header for
  4142. .q To: ,
  4143. .q Cc: ,
  4144. and
  4145. .q Bcc:
  4146. lines, and send to everyone listed in those lists.
  4147. The
  4148. .q Bcc:
  4149. line will be deleted before sending.
  4150. Any addresses in the argument vector will be deleted
  4151. from the send list.
  4152. .ip "-U"
  4153. Indicate that this is an initial User Agent submission.
  4154. This flag is deprecated.
  4155. Future releases will ignore this flag and
  4156. assume all submissions from the command line are
  4157. initial submissions.
  4158. .ip "-V envid"
  4159. The indicated
  4160. .i envid
  4161. is passed with the envelope of the message
  4162. and returned if the message bounces.
  4163. .ip "-X fIlogfilefP"
  4164. Log all traffic in and out of
  4165. .i sendmail
  4166. in the indicated
  4167. .i logfile
  4168. for debugging mailer problems.
  4169. This produces a lot of data very quickly and should be used sparingly.
  4170. .pp
  4171. There are a number of options that may be specified as
  4172. primitive flags.
  4173. These are the e, i, m, and v options.
  4174. Also,
  4175. the f option
  4176. may be specified as the
  4177. .b -s
  4178. flag.
  4179. The DSN related options
  4180. .q "-N" ,
  4181. .q "-R" ,
  4182. and
  4183. .q "-V"
  4184. have no effects on
  4185. .i sendmail
  4186. running as daemon.
  4187. .+c "QUEUE FILE FORMATS"
  4188. .pp
  4189. This appendix describes the format of the queue files.
  4190. These files live in the directory defined by the
  4191. .b Q
  4192. option in the
  4193. .i sendmail.cf
  4194. file, usually
  4195. .i /var/spool/mqueue
  4196. or
  4197. .i /usr/spool/mqueue .
  4198. The individual qf, df, and xf files
  4199. may be stored in separate 
  4200. .i qf/ ,
  4201. .i df/ ,
  4202. and
  4203. .i xf/
  4204. subdirectories
  4205. if they are present in the queue directory.
  4206. .pp
  4207. To use multiple queues,
  4208. supply a value ending with an asterisk.
  4209. For example,
  4210. .i /var/spool/mqueue/q*
  4211. will use all of the directories or symbolic links to directories
  4212. beginning with `q' in
  4213. .i /var/spool/mqueue
  4214. as queue directories.
  4215. New messages will be randomly placed
  4216. into one of the queues.
  4217. Do not change the queue directory structure
  4218. while sendmail is running.
  4219. .pp
  4220. All queue files have the name
  4221. fIxfP|fBffPfIYMDhmsNPPPPPfP
  4222. where
  4223. .i YMDhmsNPPPPP
  4224. is the
  4225. .i id
  4226. for this message
  4227. and the
  4228. .i x
  4229. is a type.
  4230. The individual letters in the
  4231. .i id
  4232. are:
  4233. .nr ii 0.5i
  4234. .ip Y
  4235. Encoded year
  4236. .ip M
  4237. Encoded month
  4238. .ip D
  4239. Encoded day
  4240. .ip h
  4241. Encoded hour
  4242. .ip m
  4243. Encoded minute
  4244. .ip s
  4245. Encoded second
  4246. .ip N
  4247. Envelope number
  4248. .ip PPPPP
  4249. First five digits of the process ID
  4250. .pp
  4251. All files with the same id collectively define one message.
  4252. If memory-buffered files are available,
  4253. some of these files may never appear
  4254. on disk.
  4255. .pp
  4256. The types are:
  4257. .nr ii 0.5i
  4258. .ip d
  4259. The data file.
  4260. The message body (excluding the header) is kept in this file.
  4261. .ip q
  4262. The queue control file.
  4263. This file contains the information necessary to process the job.
  4264. .ip t
  4265. A temporary file.
  4266. These are an image of the
  4267. .b qf
  4268. file when it is being rebuilt.
  4269. It should be renamed to a
  4270. .b qf
  4271. file very quickly.
  4272. .ip x
  4273. A transcript file,
  4274. existing during the life of a session
  4275. showing everything that happens
  4276. during that session.
  4277. .pp
  4278. The
  4279. .b qf
  4280. file is structured as a series of lines
  4281. each beginning with a code letter.
  4282. The lines are as follows:
  4283. .ip V
  4284. The version number of the queue file format,
  4285. used to allow new
  4286. .i sendmail
  4287. binaries to read queue files created by older versions.
  4288. Defaults to version zero.
  4289. Must be the first line of the file if present.
  4290. For 8.10 the version number is 3.
  4291. .ip H
  4292. A header definition.
  4293. There may be any number of these lines.
  4294. The order is important:
  4295. they represent the order in the final message.
  4296. These use the same syntax
  4297. as header definitions in the configuration file.
  4298. .ip C
  4299. The controlling address.
  4300. The syntax is
  4301. .q localuser:aliasname .
  4302. Recipient addresses following this line
  4303. will be flagged so that deliveries will be run as the
  4304. .i localuser
  4305. (a user name from the /etc/passwd file);
  4306. .i aliasname
  4307. is the name of the alias that expanded to this address
  4308. (used for printing messages).
  4309. .ip Q
  4310. The ``original recipient'',
  4311. specified by the ORCPT= field in an ESMTP transaction.
  4312. Used exclusively for Delivery Status Notifications.
  4313. It applies only to the immediately following `R' line.
  4314. .ip R
  4315. A recipient address.
  4316. This will normally be completely aliased,
  4317. but is actually realiased when the job is processed.
  4318. There will be one line
  4319. for each recipient.
  4320. Version 1 qf files
  4321. also include a leading colon-terminated list of flags,
  4322. which can be
  4323. `S' to return a message on successful final delivery,
  4324. `F' to return a message on failure,
  4325. `D' to return a message if the message is delayed,
  4326. `B' to indicate that the body should be returned,
  4327. `N' to suppress returning the body,
  4328. and
  4329. `P' to declare this as a ``primary'' (command line or SMTP-session) address.
  4330. .ip S
  4331. The sender address.
  4332. There may only be one of these lines.
  4333. .ip T
  4334. The job creation time.
  4335. This is used to compute when to time out the job.
  4336. .ip P
  4337. The current message priority.
  4338. This is used to order the queue.
  4339. Higher numbers mean lower priorities.
  4340. The priority changes
  4341. as the message sits in the queue.
  4342. The initial priority depends on the message class
  4343. and the size of the message.
  4344. .ip M
  4345. A message.
  4346. This line is printed by the
  4347. .i mailq
  4348. command,
  4349. and is generally used to store status information.
  4350. It can contain any text.
  4351. .ip F
  4352. Flag bits, represented as one letter per flag.
  4353. Defined flag bits are
  4354. .b r
  4355. indicating that this is a response message
  4356. and
  4357. .b w
  4358. indicating that a warning message has been sent
  4359. announcing that the mail has been delayed.
  4360. .ip N
  4361. The total number of delivery attempts.
  4362. .ip K
  4363. The time (as seconds since January 1, 1970)
  4364. of the last delivery attempt.
  4365. .ip I
  4366. The i-number of the data file;
  4367. this can be used to recover your mail queue
  4368. after a disastrous disk crash.
  4369. .ip $
  4370. A macro definition.
  4371. The values of certain macros
  4372. (as of this writing, only
  4373. .b $r
  4374. and
  4375. .b $s )
  4376. are passed through to the queue run phase.
  4377. .ip B
  4378. The body type.
  4379. The remainder of the line is a text string defining the body type.
  4380. If this field is missing,
  4381. the body type is assumed to be
  4382. .q "undefined"
  4383. and no special processing is attempted.
  4384. Legal values are
  4385. .q 7BIT
  4386. and
  4387. .q 8BITMIME .
  4388. .ip Z
  4389. The original envelope id (from the ESMTP transaction).
  4390. For Deliver Status Notifications only.
  4391. .pp
  4392. As an example,
  4393. the following is a queue file sent to
  4394. .q eric@mammoth.Berkeley.EDU
  4395. and
  4396. .q bostic@okeeffe.CS.Berkeley.EDU **:
  4397. .(f
  4398. **This example is contrived and probably inaccurate for your environment.
  4399. Glance over it to get an idea;
  4400. nothing can replace looking at what your own system generates.
  4401. .)f
  4402. .(b
  4403. P835771
  4404. T404261372
  4405. Seric
  4406. Ceric:sendmail@vangogh.CS.Berkeley.EDU
  4407. Reric@mammoth.Berkeley.EDU
  4408. Rbostic@okeeffe.CS.Berkeley.EDU
  4409. H?P?Return-path: <owner-sendmail@vangogh.CS.Berkeley.EDU>
  4410. HReceived: by vangogh.CS.Berkeley.EDU (5.108/2.7) id AAA06703;
  4411. Fri, 17 Jul 1992 00:28:55 -0700
  4412. HReceived: from mail.CS.Berkeley.EDU by vangogh.CS.Berkeley.EDU (5.108/2.7)
  4413. id AAA06698; Fri, 17 Jul 1992 00:28:54 -0700
  4414. HReceived: from [128.32.31.21] by mail.CS.Berkeley.EDU (5.96/2.5)
  4415. id AA22777; Fri, 17 Jul 1992 03:29:14 -0400
  4416. HReceived: by foo.bar.baz.de (5.57/Ultrix3.0-C)
  4417. id AA22757; Fri, 17 Jul 1992 09:31:25 GMT
  4418. H?F?From: eric@foo.bar.baz.de (Eric Allman)
  4419. H?x?Full-name: Eric Allman
  4420. HMessage-id: <9207170931.AA22757@foo.bar.baz.de>
  4421. HTo: sendmail@vangogh.CS.Berkeley.EDU
  4422. HSubject: this is an example message
  4423. .)b
  4424. This shows
  4425. the person who sent the message,
  4426. the submission time
  4427. (in seconds since January 1, 1970),
  4428. the message priority,
  4429. the message class,
  4430. the recipients,
  4431. and the headers for the message.
  4432. .+c "SUMMARY OF SUPPORT FILES"
  4433. .pp
  4434. This is a summary of the support files
  4435. that
  4436. .i sendmail
  4437. creates or generates.
  4438. Many of these can be changed by editing the sendmail.cf file;
  4439. check there to find the actual pathnames.
  4440. .nr ii 1i
  4441. .ip "/usr/*(SD/sendmail"
  4442. The binary of
  4443. .i sendmail .
  4444. .ip /usr/*(SB/newaliases
  4445. A link to /usr/*(SD/sendmail;
  4446. causes the alias database to be rebuilt.
  4447. Running this program is completely equivalent to giving
  4448. .i sendmail
  4449. the
  4450. .b -bi
  4451. flag.
  4452. .ip /usr/*(SB/mailq
  4453. Prints a listing of the mail queue.
  4454. This program is equivalent to using the
  4455. .b -bp
  4456. flag to
  4457. .i sendmail .
  4458. .ip /etc/mail/sendmail.cf
  4459. The configuration file,
  4460. in textual form.
  4461. .ip /etc/mail/helpfile
  4462. The SMTP help file.
  4463. .ip /etc/mail/statistics
  4464. A statistics file; need not be present.
  4465. .ip /etc/mail/sendmail.pid
  4466. Created in daemon mode;
  4467. it contains the process id of the current SMTP daemon.
  4468. If you use this in scripts;
  4469. use ``head -1'' to get just the first line;
  4470. the second line contains the command line used to invoke the daemon,
  4471. and later versions of
  4472. .i sendmail
  4473. may add more information to subsequent lines.
  4474. .ip /etc/mail/aliases
  4475. The textual version of the alias file.
  4476. .ip /etc/mail/aliases.db
  4477. The alias file in
  4478. .i hash |(3)
  4479. format.
  4480. .ip /etc/mail/aliases.{pag,dir}
  4481. The alias file in
  4482. .i ndbm |(3)
  4483. format.
  4484. .ip /var/spool/mqueue
  4485. The directory in which the mail queue(s)
  4486. and temporary files reside.
  4487. .ip /var/spool/mqueue/qf*
  4488. Control (queue) files for messages.
  4489. .ip /var/spool/mqueue/df*
  4490. Data files.
  4491. .ip /var/spool/mqueue/tf*
  4492. Temporary versions of the qf files,
  4493. used during queue file rebuild.
  4494. .ip /var/spool/mqueue/xf*
  4495. A transcript of the current session.
  4496. .if o 
  4497. {
  4498. . bp
  4499. . rs
  4500. . sp |4i
  4501. . ce 2
  4502. This page intentionally left blank;
  4503. replace it with a blank sheet for double-sided output.
  4504. .}
  4505. .".ro
  4506. .".ls 1
  4507. .".tp
  4508. .".sp 2i
  4509. .".in 0
  4510. .".ce 100
  4511. .".sz 24
  4512. .".b SENDMAIL
  4513. .".sz 14
  4514. .".sp
  4515. ."INSTALLATION AND OPERATION GUIDE
  4516. .".sp
  4517. .".sz 10
  4518. ."Eric Allman
  4519. .".sp
  4520. ."Version $Revision: 8.293 $
  4521. .".ce 0
  4522. .bp 3
  4523. .ce
  4524. .sz 12
  4525. TABLE OF CONTENTS
  4526. .sz 10
  4527. .sp
  4528. ." remove some things to avoid "out of temp file space" problem
  4529. .rm sh
  4530. .rm (x
  4531. .rm )x
  4532. .rm ip
  4533. .rm pp
  4534. .rm lp
  4535. .rm he
  4536. .rm fo
  4537. .rm eh
  4538. .rm oh
  4539. .rm ef
  4540. .rm of
  4541. .xp
  4542. .if o 
  4543. {
  4544. . bp
  4545. . rs
  4546. . sp |4i
  4547. . ce 2
  4548. This page intentionally left blank;
  4549. replace it with a blank sheet for double-sided output.
  4550. .}