allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc) (08/06/89)
Posting-number: Volume 7, Issue 115 Submitted-by: jim@hoptoad.UUCP (Jim Joyce) Archive-name: sendmail.ms [Jetroff 2.x should be able to handle this unchanged; I'll find out soon, as I can use this myself. Other troff postprocessors I don't know. ++bsa] This is troff-able source for the Sendmail Reference Card Please do not use this code after September 15, as I will by then post a new source with gathered suggestions, corrections, etc. My thanks to Eric Allman, Erik Fair and Eliot Lear for their comments. Any errors/undocumented Sun-specific things are mine alone. This file is in two parts: * the shell script I used to print the card * the source for tbl | eroff The finished card takes up a legal sized page. My LaserJetII only prints 8 1/2 x 11, so I printed two pages at a time in landscape mode, 7i page length (-l2:7i); with page number ordering 6, 7, 8, 1, 2, 3, 4, 5 (make a printer's dummy); and the -ms macros. I taped the pages together to make the legal sized card. The order looks weird, but when folded a` la Z-fold it works fine. I realize everyone does not have Elan's eroff, or an equivalent package, and so you may need to print out pages, cut and tape, then copy. If you can't get it to work well enough for you, contact me with a US mail address and I will send you one paper copy you can reproduce. Please do not ask me to send multiple copies. ----end of intro----end of intro---- #! /bin/sh # This file was wrapped with "dummyshar". "sh" this file to extract. # Contents: print.card sendmail.ms echo extracting 'print.card' if test -f 'print.card' -a -z "$1"; then echo Not overwriting 'print.card'; else sed 's/^X//' << \EOF > 'print.card' X: # The shell script: X: # print.card -- print the sendmail ref card Xtrap 'trap 0; exit 0' 3 Xcat contents | tbl | eroff -l2:7i -Oo6,7,8,1,2,3,4,5 -ms $1 EOF chars=`wc -c < 'print.card'` if test $chars != 152; then echo 'print.card' is $chars characters, should be 152 characters!; fi fi echo extracting 'sendmail.ms' if test -f 'sendmail.ms' -a -z "$1"; then echo Not overwriting 'sendmail.ms'; else sed 's/^X//' << \EOF > 'sendmail.ms' X.\"The source for tbl | eroff: X.\"Put the lines below into a file corresponding to ``contents'' in the script X.fp 1 H X.fp 2 HI X.fp 3 HB X.bd HI 3 X.po 0i X.nr PO 0i X.pl 8.4i \" Duplex -- with elan fudge X.ll 3.2i X.lt 3.2i X.nr LL 3.2i X.nr HM .5i X.nr FM .25i X.\".ds CH -\fHPanel %- X.ds CH X.ft H X.de Cb X. ps 12 X. ft CB X.. X.de Ce X. ps 0 X. ft H X.. X.de Nh X. ne 3 X. ft HB X. NH X. ft HB X.. X.LP X.ce X.ft HB X\s14Sendmail Reference Card\s0 X.sp .3i X.ft HI X.ce XJim Joyce X.sp .2i X.ce 99 X.ft H X.nf XThe Gawain Group X139 Noe St XSF, CA 94114 X+1-415/626-7581 X.NH 1 XNotation for this card X.LP X.TS Xl 2 l. X\s12\f(CBstuff\fH\s10 As it should be typed; examples X\f(HIItalics\fH Items you supply XNormal Explanation X.TE X.Nh XCommand Line Arguments X.LP X.TS Xlp12fCB 2 lp10w(2.5i). X-f \s10\f(HIname\fH Sender's name; X ignored unless trusted user X-r \s10\f(HIname\fH Obsolete form of \s12\f(CB-f\fH\s0 X-h 9 Set hop count to \s12\f(CB9\fH\s0 X-F \s10\f(HIname\fH Set full name of sender to \f(HIname\fH X-n Do not allow aliasing or forwarding X-t Send to everyone in \s12\f(CBTo:, X \s12CC:, Bcc\fH\s10 lines; X delete \s12\f(CBBcc:\fH\s10 line before sending X-b\s10\f(HIx\fH Set operation mode to \f(HIx\fH, as in: X-bm Deliver the mail (default) X-ba Run in ARPANET mode X-bs Speak SMTP X-bd Run as a daemon X-bt Run in test mode X-bv Verify recipients X-bi Initialize the alias database X-bp Print the mail queue X-bz Freeze the configuration file X-q\s10\f(HI1h\fH Process queued mail every hour; X if no time specified, run once X-C\s10\f(HIfile\fH Alternative configuration file X.bp X-d \s10\f(HIn\fH Set debug level to \f(HIn\fH X-o \s10\f(HIxvalue\fH Set configuration option \f(HIx\fH to \f(HIvalue\fH X-M \s10\f(HImsg\fH\(dg Runs given message ID X-R \s10\f(HIname\fH\(dg Run only messages for \f(HIname\fH X.TE X.Nh XConfiguration File Definitions X.LP X.ft H X.TS Xlp12fCB 2 l. XD Define a macro X \s12\f(CBDW SUN.COM\fH\s0 X \s12\f(CB$W\fH\s0 has the value \s12\f(CBSUN.COM\fH\s0 XC Classes of tokens to match; no dots in tokens X \s12\f(CBCT arpa com edu\fH\s0 X \s12\f(CBCT us de fr jp\fH\s0 XF Get definition tokens from named file X \s12\f(CBFT filename\fH\s0 X If \s12\f(CBfilename\fH\s0 contains X \s12\f(CBarpa com edu ...\fH\s0 X \s12\f(CB$T\fH\s0 contains \s12\f(CBarpa com edu ...\fH\s0 XO Options to sendmail X [Zillions; see section \f(HBOptions to Sendmail\fH] X \s12\f(CBOQ /var/spool/mqueue\fH\s0 X Directory to use as queue directory XH Header format text to be provided X \s12\f(CBH?F?FROM: $q\fH\s0 X Insert \s12\f(CBFROM: username\fH\s0 for from line X Characters between \s12\f(CB?\fH\s0 are mailer flags; X see \f(HBM \(em Define mailer\fH. XT Trusted users \(em use with caution! X \s12\f(CBT daemon root\fH\s0 XP \s12\f(CBP\fH\s0recedence/priorities for messages X \s12\f(CBPfirst-class=0\fH\s0 X \s12\f(CBPspecial-delivery=100\fH\s0 X \s12\f(CBPjunk=-100\fH\s0 X.TE X.Nh XOptions to Sendmail X.LP X.TS Xlp12fCB 2 lp10fH . XA\s10\f(HIfile\fH Use \f(HIfile\fH as alias file. X.br X Default: \f(HIaliases\fH in current directory Xa\s10\f(HItime\fH Time to wait for \s12\f(CB@:@\fH\s10 entry X before rebuilding the alias database X.bp XB\s10\f(HIvalue\fH Blank substitute; default `` \s14.\s0 '' Xb\s10\f(HIn\fH Disallow empty messages X to more than n recipients XC\s10\f(HIn\fH Remove \f(HIn\fH delivered recipients from queue Xc If outgoing mailer marked as expensive, X do not connect immediately. XD Rebuild alias database if necessary. Xd\s10\f(HIx\fH Deliver in mode \f(HIx\fH: X \s10\f(HIi\fH \(em interactively/synchronously X \s10\f(HIb\fH \(em background/asynchronously X \s10\f(HIq\fH \(em queue to deliver during queue run Xe\s10\f(HIx\fH Resolve errors via \f(HIx\fH: X \s10\f(HIp\fH \(em print error message (default) X \s10\f(HIq\fH \(em No messages, just give exit status X \s10\f(HIm\fH \(em mail errors back to sender X \s10\f(HIw\fH \(em write errors (mail if user not on) X \s10\f(HIe\fH \(em mail errors but give zero exit status XF\s10\f(HIn\fH Temporary queue file mode, in octal Xf Save UNIX-style \f(HBFrom\fH lines at X front of headers Xg\s10\f(HIn\fH Default group id for mailers is \f(HIn\fH XH\s10\f(HIfile\fH Help file for SMTP Xh\s10\f(HIn\fH Maximum hop count is \f(HIn\fH; default 17 Xi Ignore initial dot even if string length is 1 XL\s10\f(HIn\fH Default log level is \f(HIn\fH XM\s10\f(HIxvalue\fH Set macro \f(HIx\fH to \f(HIvalue\fH X (Only for command line use) Xm T{ X.na XSend to me even if I am in an alias expansion XT} Xo T{ X.na XHeaders may be in old format; X.br Xbe adaptive XT} XP\s10\f(HIname\fH T{ X.na XName of local Postmaster. XIf defined, error messages are sent to this name. XT} XQ\s10\f(HIdir\fH T{ X.na XUse \s10\f(HIdir\fH as queue directory XT} Xq\s10\f(HIlimit\fH Size limit of messages to be queued X under heavy load. Default is 10,000 bytes. XR\s10\f(HIserver\fH Deliver through Remote SMTP server Xr\s10\f(HItime\fH Interval for read timeout XS\s10\f(HIfile\fH Statistics file Xs Instantiate the queue file even if X attempting immediate delivery. X.bp XT\s10\f(HItime\fH Set mail queue timeout to \f(HItime\fH Xu\s10\f(HIn\fH T{ X.na XSet default userid to \s10\f(HIn\fH. XSUID mailers will run suid Xno matter what is set here. XT} Xv Verbose mode. XX\s10\f(HIn\fH Set load average value; default 0 Xx\s10\f(HIn\fH T{ X.na XSet load average value for only queueing mail XT} XY\s10\f(HIname\fH T{ X.na XYellow pages map name; Xdefault, \f(HImail.aliases\fH XT} Xy\s10\f(HIn\fH T{ X.na XPenalize messages with \s10\f(HIn\fH bytes-per-recipient XT} XZ\s10\f(HIn\fH T{ X.na XPenalize messages Xwith this many bytes-per-delivery attempts XT} Xz\s10\f(HIn\fH T{ X.na XPenalize messages Xwith this many bytes-per-class XT} X.TE X.Nh XM \(em Define mailer X.LP XOnly first character of field name is checked X.TS Xlp12fCB 2 lp10fH . XP\s10\f(HIath\fH Mailer pathname X \s12\f(CBP=/bin/mail,\fH\s10 XF\s10\f(HIlags\fH Mailer Flags X \s12\f(CBF=rlsDFMmnP,\fH\s10 X See \f(HBMailer Flags\fH, below XS\s10\f(HIender\fH Rewriting ruleset number X \s12\f(CBS=10,\fH\s10 XR\s10\f(HIecipient\fH Rewriting ruleset number X \s12\f(CBR=20,\fH\s10 XA\s10\f(HIrgv\fH Argument vector to pass to mailer X \s12\f(CBA=mail -d $u\fH\s10 XE\s10\f(HIol\fH End of line string for mailer XM\s10\f(HIaxsize\fH Maximum mailer message length XL\s10\f(HIength\fH Argv's maximum length X.TE X.br XExample: X.nf X.Cb XMlocal, P=/bin/mail,F=rlsDFMmnP, X S=10,R=20,A=mail -d $u XMprog, P=/bin/sh,F=lsDFMeuP, X S=10,R=20,A=sh -c $u X.Ce X.fi X.bp X.Nh XMailer Flags X.LP XEach mailer has its own set of mailer flags. X.TS Xlp12fCB 2 lp10fH . XC T{ X.na XNames in the header Xare to have sender's domain added Xif they do not have an @ Xafter being rewritten by ruleset 3 XT} XD Mailer wants a \f(HBDate:\fH header line XE Escape \f(HBFrom:\fH with \f(HB>From:\fH Xe Expensive mailer; queue mail XF Mailer wants a \f(HBFrom:\fH line Xf Mailer wants a \f(HB-f \f(HIfrom\fH flag X (Only if a network forward operation) Xh Preserve uppercase in host names XL Limit line lengths as per RFC821 Xl Mailer is local; final delivery performed XM Mailer wants a \f(HBMessage-Id:\fH line Xm Can send to multiple users on same host X in one transaction. Xn Do not insert UNIX-style \f(HBFrom\fH line XP Mailer wants a \f(HBReturn-Path:\fH line Xp Add local host to SMTP's \f(HBMAIL From:\fH line Xr Same as \f(HBf\fH, but sends a -r flag XS Do not reset userid before calling mailer X (Avoids forged names) Xs Strip quotes off name before calling mailer XU Mailer wants UNIX-style \f(HBFrom\fH lines Xu Preserve uppercase in user names XX T{ X.na XLines beginning with dot will have a dot added XT} Xx Mailer wants a \f(HBFull-Name:\fH line X.TE X.KS X.Nh XRuleset Numbers X.LP X.ft H X.TS Xl 2 l. X3 Puts < > around hostname; X internal form. Always done first X4 Removes < > from hostname; X external form. Always done last X0 Returns (protocol,host,user) triple X1 Handles \s12\f(CBFrom\fH\s0 in header, if anything X2 Handles \s12\f(CBTo\fH\s0 in header, if anything X.TE X.KE X.KS X.Nh XRuleset Sequences X.LP X.ft H X.TS Xl 2 l. X\f(HBEnvelope\fH XRecipient T{ X.na X3 - 0 - 4 (4 applied to user name from ruleset 0) XT} XSender 3 - 1 - 4 X\f(HBHeader\fH XRecipient 3 - 2 - \f(HIxx\fH - 4 X \f(HIxx\fH is ruleset number in R=\f(HIxx\fH XSender 3 - 1 - \f(HIxx\fH - 4 X \f(HIxx\fH is ruleset number in S=\f(HIxx\fH X.TE X.KE X.Nh X\f(HBConditionals and Macros\fH X.LP X.vs -1 X.na XMacros referenced using \s12\f(CB$\s10\f(HIx\fH X.br X\(em \s10\f(HIx\fH is a one-letter variable name X.LP XConditionals: X\s12\f(CB$?\s10\f(HIx text\s12\f(CB $| \s10\f(HIother\s12\f(CB $.\fH\s10 X.TS Xl 2 l. X\s12\f(CB$?\s10\f(HIx\fH if macro \f(HIx\fH is set/supplied X\f(HItext\fH insert \f(HItext\fH X\s12\f(CB$|\fH\s10 else (the else clause is not required) X\s10\f(HIother\fH insert \f(HIother\fH X\s12\f(CB$.\fH\s10 end of conditional X.TE X.Nh XSendmail Macros to Define in .cf X.LP X.ft H XLower-case letters reserved for special meanings X.br XMust be defined for sendmail: X.LP X.TS Xlp12fCB 2 lp10fH . Xe SMTP entry message; printed on SMTP startup X (Must begin with $j) X \s12\f(CBDe$j Sendmail $v ready at $b\fH\s10 Xj T{ X.na XOfficial domain name for this site; X.br X\s12\f(CBDj$H X.br XDj$H.$D XT} Xl T{ X.na XFormat of the UNIX ``From'' line X.br X\s12\f(CBDlFrom $g $d XT} Xn T{ X.na XName of the daemon for error messages X.br X\s12\f(CBDnMAILER-DAEMON XT} Xo T{ X.na XSet of ``separators'' in tokens X.br X\s12\f(CBDo.:%@!^=/ X.br X.ft H X.ps 10 X\(em Beware! Can be dangerous! XT} X.vs +1 X.bp Xq T{ X.na XDefault sender name format; X.br X\f(HIMUST\fH be RFC 822 compliant! X.br X\s12\f(CBDq$g$?x ($x)$.\fH\s10 X.br XInsert \f(HIFull Name\fH in parens if defined XT} X.\".br X.\"See \f(HBConditionals and Macros\fH, above X.TE X.Nh XMacros Supplied by Sendmail X.LP X.ft H X.br X\s10\f(HIReferenced\fH using \f(HI$x\fH X.br X\s10\f(HIMatched\fH if in the Left Hand Side (LHS) X.br X\s10\f(HIInserted\fH if in the Right Hand Side (RHS) X.br XLower-case letters reserved for special meanings X.TS Xlp12fCB 2 lfH . Xa Origination date, in ARPANET format Xb T{ X.na XCurrent date, in ARPANET format XT} Xc T{ X.na XHop count XT} Xd T{ X.na XDate in UNIX (ctime) format XT} Xf T{ X.na XSender (from) name XT} Xg T{ X.na XSender name relative to recipient XT} Xh T{ X.na XRecipient host XT} Xi T{ X.na XQueue ID XT} Xm T{ X.na XDomain name XT} Xp T{ X.na XSendmail's process ID XT} Xr T{ X.na XProtocol used XT} Xs T{ X.na XSender's host name XT} Xt T{ X.na XNumeric representation of current time XT} Xu T{ X.na XRecipient user XT} Xv T{ X.na XVersion number of sendmail XT} Xw T{ X.na XHostname of this site XT} Xx T{ X.na XFull name of the sender XT} Xz T{ X.na XHome directory of the recipient XT} X.TE X.sp X.TS Xbox; Xc Xlw(3i). X\f(HBNOTE\fH XT{ X.na XItems marked with \(dg, XYellow Pages references and Xany ``%''-related items apply Xspecifically to SUN OS-derived systems. XT} XT{ X.na XPortions exerpted from X.HI XSendmail Installation and Operations Guide, X.H Xby Eric P. Allman. XT} X.TE X.KS X.Nh XThe Left Hand Side (LHS) X.br XMetasymbols for Substitutions X.LP X.ft H X.TS Xlp12fCB 2 lp10w(2.8i). X$* Match zero or more tokens X$+ Match one or more tokens X$- Match exactly one token X$=\s10\f(HIx\fH Match any string in class \f(HIx\fH X$~\s10\f(HIx\fH Any token NOT in class \f(HIx\fH X$%\s10\f(HIx\fH Any token in yp map $\f(HIx\fH X$%y Any hostname in \f(HIhosts.byname\fH X or \f(HI/etc/hosts\fH if not running YP X$!\s10\f(HIx\fP Any token NOT in yp map $\f(HIx\fH X$\s10\f(HIx\fP Match macro \f(HIx\fH X.TE X.KE X.Nh X.na XThe Right Hand Side (RHS) X.br XMetasymbols for Substitutions X.LP X.ft H X.\"Match 0 or more tokens; pick off first one and run ruleset 0 on it X.TS Xlp12fCB 2 lp10fH . X$\s10\f(HIx\fH T{ X.na XExpand macro \f(HIx\fH XT} X$\s10\f(HIn\fH T{ X.na XSubstitute token \f(HIn\fH from LHS; X.br XEx: $1 is first thing matched XT} X$>\s10\f(HIn\fH Remainder of line is processed X & passed to ruleset \f(HIn\fH X$@ T{ X.na XReturn result of this action; Xonly at the beginning of the line XT} X$@\s10\f(HIhost\fH T{ X.na XSpecify \s10\f(HIhost\fH* X.br X(+prefix? ruleset return) XT} X$#\s10\f(HImailer\fH T{ X.na XResolve to \s10\f(HImailer\fH* X.br X(Only to be used in ruleset 0) XT} X$: T{ X.na XApply this action exactly once X.br X\(em DON'T iterate X.br XOnly at beginning of the line XT} X$:\s10\f(HIuser\fH T{ X.na XSpecify \s10\f(HIuser\fH* X.br X(+prefix rule limit) XT} X$[\s10\f(HIhost\fP\s12$] T{ X.na XMap to primary hostname XT} X${\s10\f(HIx name\s12\f(CB$} T{ X.na XMap \s10\f(HIname\fP through yp map $\f(HIx\fH XT} X.TE X* Realistically, a 3-tuple: X.br X\s12\f(CB$#\s10\f(HImailer\s12\fP$@\s10\f(HIhost\s12\fP$:\f(HI\s10user\s12\fP\fH\s0 X.LP X.sp X.ps 8 X.vs 10 X.nr PS 8 X.nr VS 10 X.ft H X\(co 1989 by Jim Joyce, all rights reserved X.br XPermission is hereby granted to reproduce this material Xso long as this copyright notice is printed legibly and intact. XThe Gawain Group, 139 Noe St, SF 94114 X+1-415/626-7581 EOF chars=`wc -c < 'sendmail.ms'` if test $chars != 12483; then echo 'sendmail.ms' is $chars characters, should be 12483 characters!; fi fi exit 0