This is sendmail version 8.6.3.
[unix-history] / usr.sbin / sendmail / cf / README
CommitLineData
15637ed4 1
15637ed4 2
6f14531a
RG
3 NEW SENDMAIL CONFIGURATION FILES
4
5 Eric Allman <eric@CS.Berkeley.EDU>
6
d747e748 7 @(#)README 8.14 (Berkeley) 9/19/93
6f14531a
RG
8
9
10This document describes the sendmail configuration files being used
d747e748 11at Berkeley. These use features in the new (R8) sendmail, and although
6f14531a
RG
12there is an ``OLDSENDMAIL'' mode, they haven't really been tested on
13old versions of sendmail and cannot be expected to work well.
14
15These configuration files are probably not as general as previous
16versions, and don't handle as many of the wierd cases automagically.
17I was able to simplify by them for two reasons. First, the network
18has become more consistent -- for example, at this point, everyone
19on the internet is supposed to be running a name server, so hacks to
20handle NIC-registered hosts can go away. Second, I assumed that a
21subdomain would be running SMTP internally -- UUCP is presumed to be
22a long-haul protocol. I realize that this is not universal, but it
23does describe the vast majority of sites with which I am familiar,
24including those outside the US.
25
26Of course, the downside of this is that if you do live in a wierd
27world, things are going to get wierder for you. I'm sorry about that,
28but at the time we at Berkeley had a problem, and it seemed like the
29right thing to do.
30
31This package requires a post-V7 version of m4; if you are running the
324.2bsd, SysV.2, or 7th Edition version, I suggest finding a friend with
33a newer version. You can m4-expand on their system, then run locally.
34SunOS's /usr/5bin/m4 or BSD-Net/2's m4 both work. GNU m4 (which is a
35language unto itself) also works, but I don't intend to work so hard
36to keep this up in the future. [Note to GNU folks: the construct
37"define(`FOO')" should work without my having to add a null value.]
38
39IF YOU DON'T HAVE A BERKELEY MAKE, don't despair! Just run
d747e748
JH
40"m4 foo.mc > foo.cf" -- that should be all you need. There is also
41a fairly crude (but functional) Makefile.dist that works on the
42old version of make.
6f14531a
RG
43
44To get started, you may want to look at tcpproto.mc (for TCP-only
d747e748
JH
45sites), uucpproto.mc (for UUCP-only sites), and clientproto.mc (for
46clusters of clients using a single mail host). Others are versions
6f14531a
RG
47that we use at Berkeley, although not all are in current use. For
48example, ucbarpa has gone away, but I've left ucbarpa.mc in because
49it demonstrates some interesting techniques.
50
51I'm not pretending that this README describes everything that these
52configuration files can do; clever people can probably tweak them
53to great effect. But it should get you started.
54
55
56+--------------------------+
57| INTRODUCTION AND EXAMPLE |
58+--------------------------+
59
60Configuration files are contained in the subdirectory "cf", with a
61suffix ".mc". They must be run through "m4" to produce a ".cf" file.
62
63Let's examine a typical .mc file (cf/cs-exposed.mc):
64
65 divert(-1)
66 #
67 # Copyright (c) 1983 Eric P. Allman
68 # Copyright (c) 1988 The Regents of the University of California.
69 # All rights reserved.
70 #
71 # Redistribution and use in source and binary forms are permitted
72 # provided that the above copyright notice and this paragraph are
73 # duplicated in all such forms and that any documentation,
74 # advertising materials, and other materials related to such
75 # distribution and use acknowledge that the software was developed
76 # by the University of California, Berkeley. The name of the
77 # University may not be used to endorse or promote products derived
78 # from this software without specific prior written permission.
79 # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
80 # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
81 # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
82 #
83
84The divert(-1) will delete the crud in the resulting output file.
85The copyright notice is what your lawyers require. Our lawyers require
86the one that I've included in my files. A copyleft is a copyright by
87another name.
88
89The next line MUST be
90
91 include(`../m4/cf.m4')
92
93This will pull in the M4 macros you will need to make sense of
94everything else. As the saying goes, don't think about it, just
95do it. If you don't do it, don't bother reading the rest of this
96file.
97
98 VERSIONID(`<SCCS or RCS version id>')
99
100VERSIONID is a macro that stuffs the version information into the
101resulting file. We use SCCS; you could use RCS, something else, or
102omit it completely. This is not the same as the version id included
103in SMTP greeting messages -- this is defined in m4/version.m4.
104
105 DOMAIN(cs.exposed)
106
107This example exposes the host inside of the CS subdomain -- that is,
108it doesn't try to hide the name of the workstation to the outside
109world. Changing this to DOMAIN(cs.hidden) would have made outgoing
110messages refer to "<username>@CS.Berkeley.EDU" instead of using the
d747e748 111local hostname. Internally this is effected by using
6f14531a
RG
112"MASQUERADE_AS(CS.Berkeley.EDU)".
113
114 MAILER(smtp)
115
116These describe the mailers used at the default CS site site. The
117local mailer is always included automatically.
118
119
120+--------+
121| OSTYPE |
122+--------+
123
124Note that cf/cs-exposed.mc omits an OSTYPE macro -- this assumes
125default Computer Science Division environment. There are several
126explicit environments available: bsd4.3, bsd4.4, hpux, irix, osf1,
127riscos4.5, sunos3.5, sunos4.1, and ultrix4.1. These change things
128like the location of the alias file and queue directory. Some of
129these files are identical to one another.
130
131Operating system definitions are easy to write. They may define
132the following variables (everything defaults, so an ostype file
133may be empty).
134
135ALIAS_FILE [/etc/aliases] The location of the text version
136 of the alias file(s). It can be a comma-separated
137 list of names.
138HELP_FILE [/usr/lib/sendmail.hf] The name of the file
139 containing information printed in response to
140 the SMTP HELP command.
141QUEUE_DIR [/var/spool/mqueue] The directory containing
142 queue files.
143STATUS_FILE [/etc/sendmail.st] The file containing status
144 information.
d747e748
JH
145LOCAL_MAILER_PATH [/bin/mail] The program used to deliver local mail.
146LOCAL_MAILER_FLAGS [rmn] The flags used by the local mailer. The
147 flags lsDFM are always included.
3a363396
NW
148LOCAL_MAILER_ARGS [mail -d $u] The arguments passed to deliver local
149 mail.
6f14531a 150LOCAL_SHELL_PATH [/bin/sh] The shell used to deliver piped email.
3a363396
NW
151LOCAL_SHELL_FLAGS [eu] The flags used by the shell mailer. The
152 flags lsDFM are always included.
153LOCAL_SHELL_ARGS [sh -c $u] The arguments passed to deliver "prog"
154 mail.
6f14531a
RG
155USENET_MAILER_PATH [/usr/lib/news/inews] The name of the program
156 used to submit news.
157USENET_MAILER_FLAGS [rlsDFMmn] The mailer flags for the usenet mailer.
158USENET_MAILER_ARGS [-m -h -n] The command line arguments for the
159 usenet mailer.
d747e748
JH
160SMTP_MAILER_FLAGS [undefined] Flags added to SMTP mailer. Default
161 flags are `mDFMUX' (and `a' for esmtp mailer).
162UUCP_MAILER_FLAGS [undefined] Flags added to UUCP mailer. Default
163 flags are `DFMhuU' (and `m' for suucp mailer, minus
164 `U' for uucp-dom mailer).
3a363396
NW
165UUCP_MAILER_ARGS [uux - -r -z -a$f -gC $h!rmail ($u)] The arguments
166 passed to the UUCP mailer.
167UUCP_MAX_SIZE [100000] The maximum size message accepted for
168 transmission by the UUCP mailers.
6f14531a
RG
169HOSTMAP_SPEC [dbm -o /etc/hostmap] The value for the builtin
170 hostmap key definition. You can redefine this
171 to change the class, flags, and filename of
172 the hostmap. The default flag (-o) makes this
173 map optional.
174
6f14531a
RG
175+---------+
176| DOMAINS |
177+---------+
178
179You will probably want to collect domain-dependent defines into one
180file, referenced by the DOMAIN macro. For example, our Berkeley
181domain file includes definitions for several internal distinguished
182hosts:
183
184UUCP_RELAY The host that will forward UUCP-addressed email.
185 If not defined, all UUCP sites must be directly
186 connected.
187BITNET_RELAY The host that will forward BITNET-addressed email.
188 If not defined, the .BITNET pseudo-domain won't work.
189CSNET_RELAY The host that will forward CSNET-addressed email.
190 If not defined, the .CSNET pseudo-domain won't work.
191LOCAL_RELAY The site that will handle unqualified names -- that
192 is, names with out an @domain extension. If not set,
193 they are assumed to belong on this machine. This
194 allows you to have a central site to store a
195 company- or department-wide alias database. This
196 only works at small sites, and there are better
197 methods.
198
d747e748
JH
199Each of these can be either ``mailer:hostname'' (in which case the
200mailer is the internal mailer name, such as ``suucp'' and the hostname
201is the name of the host as appropriate for that mailer) or just a
202``hostname'', in which case a default mailer type (usually ``relay'',
203a variant on SMTP) is used. WARNING: if you have a wildcard MX
204record matching your domain, you probably want to define these to
205have a trailing dot so that you won't get the mail diverted back
206to yourself.
207
6f14531a
RG
208The domain file can also be used to define a domain name, if needed
209(using "DD<domain>") and set certain site-wide features. If all hosts
210at your site masquerade behind one email name, you could also use
211MASQUERADE_AS here.
212
213You do not have to define a domain -- in particular, if you are a
214single machine sitting off somewhere, it is probably more work than
215it's worth. This is just a mechanism for combining "domain dependent
216knowledge" into one place.
217
218+---------+
219| MAILERS |
220+---------+
221
222There are fewer mailers supported in this version than the previous
223version, owing mostly to a simpler world.
224
225local The local and prog mailers. You will almost always
226 need these; the only exception is if you relay ALL
227 your mail to another site. This mailer is included
228 automatically.
229
230smtp The Simple Mail Transport Protocol mailer. This does
231 not hide hosts behind a gateway or another other
232 such hack; it assumes a world where everyone is
3a363396
NW
233 running the name server. This file actually defines
234 three mailers: "smtp" for regular (old-style) SMTP to
235 other servers, "esmtp" for extended SMTP to other
236 servers, and "relay" for transmission to our
237 RELAY_HOST or MAILER_HUB.
6f14531a
RG
238
239uucp The Unix-to-Unix Copy Program mailer. Actually, this
240 defines two mailers, "uucp" and "suucp". The latter
241 is for when you know that the UUCP mailer at the other
242 end can handle multiple recipients in one transfer.
243 When you invoke this, sendmail looks for all names in
244 the $=U class and sends them to the uucp mailer; all
245 names in the $=Y class are sent to suucp. Note that
246 this is a function of what version of rmail runs on
247 the receiving end, and hence may be out of your control.
d747e748
JH
248 If smtp is defined, it also defines a "uucp-dom" mailer
249 that uses domain-style rewriting.
6f14531a
RG
250
251usenet Usenet (network news) delivery. If this is specified,
252 an extra rule is added to ruleset 0 that forwards all
253 local email for users named ``group.usenet'' to the
254 ``inews'' program. Note that this works for all groups,
255 and may be considered a security problem.
256
257fax Facsimile transmission. This is experimental and based
258 on Sam Leffler's FlexFAX software. For more information,
259 see below.
260
261
262+----------+
263| FEATURES |
264+----------+
265
266Special features can be requested using the "FEATURE" macro. For
267example, the .mc line:
268
269 FEATURE(use_cw_file)
270
271tells sendmail that you want to have it read an /etc/sendmail.cw
272file to get values for class $=w. The FEATURE may contain a single
273optional parameter -- for example:
274
275 FEATURE(mailertable, dbm /usr/lib/mailertable)
276
277Available features are:
278
279use_cw_file Read the file /etc/sendmail.cw file to get alternate
280 names for this host. This might be used if you were
281 on a host that MXed for a dynamic set of other
282 hosts. If the set is static, just including the line
283 "Cw<name1> <name2> ..." is probably superior.
284 The actual filename can be overridden by redefining
285 confCW_FILE.
d747e748 286
6f14531a
RG
287redirect Reject all mail addressed to "address.REDIRECT" with
288 a ``551 User not local; please try <address>'' message.
289 If this is set, you can alias people who have left
290 to their new address with ".REDIRECT" appended.
d747e748 291
6f14531a 292nouucp Don't do anything special with UUCP addresses at all.
d747e748 293
6f14531a
RG
294nocanonify Don't pass addresses to $[ ... $] for canonification.
295 This would generally only be used by sites that only
296 act as mail gateways or which have user agents that do
d747e748
JH
297 full canonification themselves. You may also want to
298 use "define(`confBIND_OPTS',`-DNSRCH -DEFNAMES')" to
299 turn off the usual resolver options that do a similar
300 thing.
301
6f14531a
RG
302notsticky By default, email sent to "user@local.host" are marked
303 as "sticky" -- that is, the local addresses aren't
304 matched against UDB and don't go through ruleset 5.
305 This features disables this treatment. It would
306 normally be used on network gateway machines.
d747e748 307
6f14531a
RG
308mailertable Include a "mailer table" which can be used to override
309 routing for particular domains. The argument of the
310 FEATURE may be the key definition. If none is specified,
311 the definition used is:
d747e748 312 hash -o /etc/mailertable
3a363396
NW
313 Keys in this database are fully qualified domain names
314 or partial domains preceded by a dot -- for example,
315 "vangogh.CS.Berkeley.EDU" or ".CS.Berkeley.EDU".
316 Values must be of the form:
6f14531a 317 mailer:domain
3a363396
NW
318 where "mailer" is the internal mailer name, and "domain"
319 is where to send the message. These maps are not
320 reflected into the message header.
d747e748 321
3a363396
NW
322domaintable Include a "domain table" which can be used to provide
323 full domains on unqualified (single word) hosts. The
324 argument of the FEATURE may be the key definition. If
325 none is specified, the definition used is:
d747e748 326 hash -o /etc/domaintable
3a363396
NW
327 The key in this table is the unqualified host name; the
328 value is the fully qualified domain. Anything in the
329 domaintable is reflected into headers; that is, this
330 is done in ruleset 3.
d747e748 331
6f14531a
RG
332bitdomain Look up bitnet hosts in a table to try to turn them into
333 internet addresses. The table can be built using the
d747e748 334 bitdomain program contributed by John Gardiner Myers.
6f14531a
RG
335 The argument of the FEATURE may be the key definition; if
336 none is specified, the definition used is:
d747e748 337 hash -o /etc/bitdomain.db
6f14531a
RG
338 Keys are the bitnet hostname; values are the corresponding
339 internet hostname.
d747e748 340
6f14531a
RG
341uucpdomain Similar feature for UUCP hosts. The default map definition
342 is:
d747e748 343 hash -o /etc/uudomain.db
6f14531a
RG
344 At the moment there is no automagic tool to build this
345 database.
d747e748 346
6f14531a
RG
347always_add_domain
348 Include the local host domain even on locally delivered
349 mail. Normally it is not added unless it is already
350 present.
d747e748 351
3a363396
NW
352allmasquerade If masquerading is enabled (using MASQUERADE_AS), this
353 feature will cause recipient addresses to also masquerade
354 as being from the masquerade host. Normally they get
355 the local hostname. Although this may be right for
356 ordinary users, it can break local aliases. For example,
357 if you send to "localalias", the originating sendmail will
358 find that alias and send to all members, but send the
359 message with "To: localalias@masqueradehost". Since that
360 alias likely does not exist, replies will fail. Use this
361 feature ONLY if you can guarantee that the ENTIRE
362 namespace on your masquerade host supersets all the
363 local entries.
6f14531a 364
d747e748
JH
365nodns We aren't running DNS at our site (for example,
366 we are UUCP-only connected). It's hard to consider
367 this a "feature", but hey, it had to go somewhere.
368
369nullclient This is a special case -- it creates a stripped down
370 configuration file containing nothing but support for
371 forwarding all mail to a central hub via a local
372 SMTP-based network. The argument is the name of that
373 hub.
374
375 The only other feature that should be used in conjunction
376 with this one is "nocanonify" (this causes addresses to
377 be sent unqualified via the SMTP connection; normally
378 they are qualifed with the masquerade name, which
379 defaults to the name of the hub machine). No mailers
380 should be defined. No aliasing or forwarding is done.
6f14531a
RG
381
382
383+-------+
384| HACKS |
385+-------+
386
387Some things just can't be called features. To make this clear,
388they go in the hack subdirectory and are referenced using the HACK
389macro. These will tend to be site-dependent. The release
390includes the Berkeley-dependent "cssubdomain" hack (that makes
391sendmail accept local names in either Berkeley.EDU or CS.Berkeley.EDU;
392this is intended as a short-term aid while we move hosts into
393subdomains.
394
395
396+--------------------+
397| SITE CONFIGURATION |
398+--------------------+
399
400Complex sites will need more local configuration information, such as
401lists of UUCP hosts they speak with directly. This can get a bit more
402tricky. For an example of a "complex" site, see cf/ucbvax.mc.
403
404The SITECONFIG macro allows you to indirectly reference site-dependent
405configuration information stored in the siteconfig subdirectory. For
406example, the line
407
408 SITECONFIG(uucp.ucbvax, ucbvax, U)
409
410reads the file uucp.ucbvax for local connection information. The
411second parameter is the local name (in this case just "ucbvax" since
412it is locally connected, and hence a UUCP hostname) and the name of
413the class in which to store the host information. Another SITECONFIG
414line reads
415
416 SITECONFIG(uucp.ucbarpa, ucbarpa.Berkeley.EDU, W)
417
418This says that the file uucp.ucbarpa contains the list of UUCP sites
419connected to ucbarpa.Berkeley.EDU. The $=W class will be used to
420store this list. [The machine ucbarpa is gone now, but I've left
421this out-of-date configuration file around to demonstrate how you
422might do this.]
423
424The siteconfig file (e.g., siteconfig/uucp.ucbvax.m4) contains nothing
425more than a sequence of SITE macros describing connectivity. For
426example:
427
428 SITE(cnmat)
429 SITE(sgi olympus)
15637ed4 430
6f14531a
RG
431The second example demonstrates that you can use two names on the
432same line; these are usually aliases for the same host (or are at
433least in the same company).
434
435
436+-------------------+
437| TWEAKING RULESETS |
438+-------------------+
15637ed4 439
6f14531a
RG
440For more complex configurations, you can define special rules.
441The macro LOCAL_RULE_3 introduces rules that are used in canonicalizing
442the names. Any modifications made here are reflected in the header.
15637ed4 443
6f14531a
RG
444A common use is to convert old UUCP addreses to SMTP addresses using
445the UUCPSMTP macro. For example:
15637ed4 446
6f14531a
RG
447 LOCAL_RULE_3
448 UUCPSMTP(decvax, decvax.dec.com)
449 UUCPSMTP(research, research.att.com)
15637ed4 450
6f14531a
RG
451will cause addresses of the form "decvax!user" and "research!user"
452to be converted to "user@decvax.dec.com" and "user@research.att.com"
453respectively.
15637ed4 454
6f14531a 455This could also be used to look hosts in a database map:
15637ed4 456
6f14531a
RG
457 LOCAL_RULE_3
458 R$* < @ $+ > $* $: $1 < @ $(hostmap $2 $) > $3
15637ed4 459
6f14531a 460This map would be defined in the LOCAL_CONFIG portion, as shown below.
15637ed4 461
6f14531a
RG
462Similarly, LOCAL_RULE_0 can be used to introduce new parsing rules.
463For example, new rules are needed to parse hostnames that you accept
464via MX records. For example, you might have:
15637ed4 465
6f14531a
RG
466 LOCAL_RULE_0
467 R$+ < @ cnmat.Berkeley.EDU > $#uucp $@ cnmat $: $1
15637ed4 468
6f14531a
RG
469You would use this if you had installed an MX record for cnmat.Berkeley.EDU
470pointing at this host; this rule catches the message and forwards it on
471using UUCP.
15637ed4 472
6f14531a
RG
473You can also tweak rulesets 1 and 2 using LOCAL_RULE_1 and LOCAL_RULE_2.
474These rulesets are normally empty.
15637ed4 475
6f14531a
RG
476A similar macro is LOCAL_CONFIG. This introduces lines added after the
477boilerplate option setting but before rulesets, and can be used to
478declare local database maps or whatever. For example:
15637ed4 479
6f14531a
RG
480 LOCAL_CONFIG
481 Khostmap hash /etc/hostmap.db
482 Kyplocal nis -m hosts.byname
15637ed4 483
15637ed4 484
6f14531a
RG
485+---------------------------+
486| MASQUERADING AND RELAYING |
487+---------------------------+
15637ed4 488
6f14531a 489You can have your host masquerade as another using
15637ed4 490
6f14531a 491 MASQUERADE_AS(host.domain)
15637ed4 492
6f14531a
RG
493This causes outgoing SMTP mail to be labelled as coming from the
494indicated domain, rather than $j. One normally masquerades as one
495of your own subdomains (for example, it's unlikely that I would
496choose to masquerade as an MIT site).
15637ed4 497
d747e748
JH
498The masquerade name is not normally canonified, so it is important
499that it be your One True Name, that is, fully qualified and not a
500CNAME.
501
6f14531a
RG
502there are always users that need to be "exposed" -- that is, their
503internal site name should be displayed instead of the masquerade name.
504Root is an example. You can add users to this list using
15637ed4 505
6f14531a 506 EXPOSED_USER(usernames)
15637ed4 507
6f14531a 508This adds users to class E; you could also use something like
15637ed4 509
6f14531a 510 FE/etc/sendmail.cE
15637ed4 511
6f14531a
RG
512You can also arrange to relay all unqualified names (that is, names
513without @host) to a relay host. For example, if you have a central
514email server, you might relay to that host so that users don't have
515to have .forward files or aliases. You can do this using
15637ed4 516
6f14531a 517 define(`LOCAL_RELAY', mailer:hostname)
15637ed4 518
6f14531a
RG
519The ``mailer:'' can be omitted, in which case the mailer defaults to
520"smtp". There are some user names that you don't want relayed, perhaps
521because of local aliases. A common example is root, which may be
522locally aliased. You can add entries to this list using
15637ed4 523
6f14531a 524 LOCAL_USER(usernames)
15637ed4 525
6f14531a 526This adds users to class L; you could also use something like
15637ed4 527
6f14531a 528 FL/etc/sendmail.cL
15637ed4 529
d747e748
JH
530If you want all incoming mail sent to a centralized hub, as for a
531shared /var/spool/mail scheme, use
15637ed4 532
6f14531a 533 define(`MAIL_HUB', mailer:hostname)
15637ed4 534
6f14531a
RG
535Again, ``mailer:'' defaults to "smtp". If you define both LOCAL_RELAY
536and MAIL_HUB, unqualified names and names in class L will be sent to
537the LOCAL_RELAY and other local names will be sent to MAIL_HUB. For
538example, if are on machine mastodon.CS.Berkeley.EDU, the following
539combinations of settings will have the indicated effects:
15637ed4 540
6f14531a 541email sent to.... eric eric@mastodon.CS.Berkeley.EDU
15637ed4 542
6f14531a
RG
543LOCAL_RELAY set to mail.CS.Berkeley.EDU (delivered locally)
544mail.CS.Berkeley.EDU
15637ed4 545
6f14531a
RG
546MAIL_HUB set to mammoth.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU
547mammoth.CS.Berkeley.EDU
15637ed4 548
6f14531a
RG
549Both LOCAL_RELAY and mail.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU
550MAIL_HUB set as above
15637ed4 551
d747e748
JH
552If you want all outgoing mail to go to a central relay site, define
553SMART_HOST as well. Briefly:
554
555 LOCAL_RELAY applies to unqualifed names (e.g., "eric").
556 MAIL_HUB applies to names qualified with the name of the
557 local host (e.g., "eric@mastodon.CS.Berkeley.EDU").
558 SMART_HOST applies to names qualified with other hosts.
559
560However, beware that other relays (e.g., UUCP_RELAY, BITNET_RELAY, and
561FAX_RELAY) take precedence over SMART_HOST, so if you really want
562absolutely everything to go to a single central site you will need to
563unset all the other relays -- or better yet, find or build a minimal
564config file that does this.
565
15637ed4 566
6f14531a
RG
567+-------------------------------+
568| NON-SMTP BASED CONFIGURATIONS |
569+-------------------------------+
15637ed4 570
6f14531a
RG
571These configuration files are designed primarily for use by SMTP-based
572sites. I don't pretend that they are well tuned for UUCP-only or
573UUCP-primarily nodes (the latter is defined as a small local net
574connected to the rest of the world via UUCP). However, there is one
575hook to handle some special cases.
15637ed4 576
6f14531a
RG
577You can define a ``smart host'' that understands a richer address syntax
578using:
15637ed4 579
6f14531a 580 define(`SMART_HOST', mailer:hostname)
15637ed4 581
d747e748 582In this case, the ``mailer:'' defaults to "relay". Any messages that
6f14531a 583can't be handled using the usual UUCP rules are passed to this host.
15637ed4 584
6f14531a
RG
585If you are on a local SMTP-based net that connects to the outside
586world via UUCP, you can use LOCAL_NET_CONFIG to add appropriate rules.
587For example:
15637ed4 588
6f14531a
RG
589 define(`SMART_HOST', suucp:uunet)
590 LOCAL_NET_CONFIG
3a363396 591 R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3
15637ed4 592
6f14531a
RG
593This will cause all names that end in your domain name ($m) via
594SMTP; anything else will be sent via suucp (smart UUCP) to uunet.
3a363396
NW
595If you have FEATURE(nocanonify), you may need to omit the dots after
596the $m. If you are running a local DNS inside your domain which is
597not otherwise connected to the outside world, you probably want to
598use:
599
600 define(`SMART_HOST', smtp:fire.wall.com)
601 LOCAL_NET_CONFIG
602 R$* < @ $* . > $* $#smtp $@ $2. $: $1 < @ $2. > $3
603
604That is, send directly only to things you found in your DNS lookup;
605anything else goes through SMART_HOST.
15637ed4 606
d747e748
JH
607If you are not running DNS at all, it is important to use
608FEATURE(nodns) to avoid having sendmail queue everything waiting
609for the name server to come up.
610
611
612+-----------+
613| WHO AM I? |
614+-----------+
615
616Normally, the $j macro is automatically defined to be your fully
617qualified domain name (FQDN). Sendmail does this by getting your
618host name using gethostname and then calling gethostbyname on the
619result. For example, in some environments gethostname returns
620only the root of the host name (such as "foo"); gethostbyname is
621supposed to return the FQDN ("foo.bar.com"). In some (fairly rare)
622cases, gethostbyname may fail to return the FQDN. In this case
623you MUST define confDOMAIN_NAME to be your fully qualified domain
624name. This is usually done using:
625
626 Dmbar.com
627 define(`confDOMAIN_NAME', `$w.$m')dnl
628
629
630+--------------------+
631| USING MAILERTABLES |
632+--------------------+
633
634To use FEATURE(mailertable), you will have to create an external
635database containing the routing information for various domains.
636For example, a mailertable file in text format might be:
637
638 .my.domain xnet:%1.my.domain
639 uuhost1.my.domain suucp:uuhost1
640 .bitnet smtp:relay.bit.net
641
642This should normally be stored in /etc/mailertable. The actual
643database version of the mailertable is built using:
644
645 makemap hash /etc/mailertable.db < /etc/mailertable
646
647The semantics are simple. Any LHS entry that does not begin with
648a dot matches the full host name indicated. LHS entries beginning
649with a dot match anything ending with that domain name -- that is,
650they can be thought of as having a leading "*" wildcard. Matching
651is done in order of most-to-least qualified -- for example, even
652though ".my.domain" is listed first in the above example, an entry
653of "uuhost1.my.domain" will match the second entry since it is
654more explicit.
655
656The RHS should always be a "mailer:host" pair. The mailer is the
657configuration name of a mailer (that is, an `M' line in the
658sendmail.cf file). The "host" will be the hostname passed to
659that mailer. In domain-based matches (that is, those with leading
660dots) the "%1" may be used to interpolate the wildcarded part of
661the host name. For example, the first line above sends everything
662addressed to "anything.my.domain" to that same host name, but using
663the (presumably experimental) xnet mailer.
664
665
666+--------------------------------+
667| USING USERDB TO MAP FULL NAMES |
668+--------------------------------+
669
670The user database was not originally intended for mapping full names
671to login names (e.g., Eric.Allman => eric), but some people are using
672it that way. (I would recommend that you set up aliases for this
673purpose instead -- since you can specify multiple alias files, this
674is fairly easy.) The intent was to locate the default maildrop at
675a site, but allow you to override this by sending to a specific host.
676
677If you decide to set up the user database in this fashion, it is
678imperative that you also specify FEATURE(notsticky) -- otherwise,
679e-mail sent to Full.Name@local.host.name will be rejected.
680
681To build the internal form of the user databae, use:
682
683 makemap btree /usr/data/base.db < /usr/data/base.txt
684
15637ed4 685
6f14531a
RG
686+------------------+
687| FlexFAX SOFTWARE |
688+------------------+
15637ed4 689
6f14531a
RG
690Sam Leffler's FlexFAX software is still in beta test -- but he expects a
691public version out "later this week" [as of 3/1/93]. The following
692blurb is direct from Sam:
15637ed4 693
d747e748 694 $Header: /usr/people/sam/fax/RCS/HOWTO,v 1.14 93/05/24 11:42:16 sam Exp $
15637ed4 695
6f14531a 696 How To Obtain This Software (in case all you get is this file)
d747e748 697 --------------------------------------------------------------
6f14531a 698 The source code is available for public ftp on
d747e748 699 sgi.com sgi/fax/v2.1.src.tar.Z
6f14531a 700 (192.48.153.1)
15637ed4 701
6f14531a 702 You can also obtain inst'able images for Silicon Graphics machines from
d747e748 703 sgi.com sgi/fax/v2.1.inst.tar
6f14531a 704 (192.48.153.1)
15637ed4 705
6f14531a
RG
706 For example,
707 % ftp -n sgi.com
708 ....
709 ftp> user anonymous
710 ... <type in password>
711 ftp> cd sgi/fax
712 ftp> binary
d747e748
JH
713 ftp> get v2.1.src.tar.Z
714
715 In general, the latest version of the 2.1 release of the software is
716 always available as "v2.1.src.tar.Z" or "v2.1.inst.tar" in the ftp
717 directory. This file is a link to the appropriate released version (so
718 don't waste your time retrieving the linked file as well!) Any files of
719 the form v2.1.*.patch are shell scripts that can be used to patch older
720 versions of the source code. For example, the file v2.1.0.patch would
721 contain patches to update v2.1.0.tar.Z. (Note to beta testers: this is
722 different than the naming conventions used during beta testing.) Patch
723 files only work to go between consecutive versions, so if you are
724 multiple versions behind the latest release, you will need to apply
725 each patch file between your current version and the latest.
726
727
728 Obtaining the Software by Electronic Mail
729 -----------------------------------------
730 Do not send me requests for the software; they will be ignored (without
731 response). If you cannot use FTP at all, there is a service called
732 "ftpmail" available from gatekeeper.dec.com: you can send e-mail to
733 this machine and it will use FTP to retrieve files for you and send you
734 the files back again via e-mail. To find out more about the ftpmail
6f14531a
RG
735 service, send a message to "ftpmail@gatekeeper.dec.com" whose body
736 consists of the single line "help".
15637ed4 737
d747e748
JH
738
739 Obtaining the Software Within Silicon Graphics
740 ----------------------------------------------
6f14531a 741 Internal to Silicon Graphics there are inst'able images on the host
d747e748 742 flake.asd in the directory /usr/dist. Thus you can do something like:
6f14531a 743
d747e748 744 % inst -f flake.asd.sgi.com:/usr/dist/flexfax
6f14531a 745
d747e748 746 to install the latest version of the software on your machine.
6f14531a 747
d747e748
JH
748
749 What to do Once You've Retrieved Stuff
750 --------------------------------------
6f14531a
RG
751 The external distributions come in a compressed or uncompressed tar
752 file. To extract the source distribution:
753
d747e748 754 % zcat v2.1.src.tar.Z | tar xf -
6f14531a
RG
755
756 (uncompress and extract individual files in current directory). To
757 unpack and install the client portion of the inst'able distribution:
758
759 % mkdir dist
d747e748 760 % cd dist; tar xf ../v2.1.inst.tar; cd ..
6f14531a
RG
761 % inst -f dist/flexfax
762 ...
763 inst> go
764
765 (Note, the dist subdirectory is because some versions of inst fail if
d747e748
JH
766 the files are in the current directory.) Server binaries are also
767 included in the inst'able images as flexfax.server.*. They are not
768 installed by default, so to get them also you need to do:
6f14531a
RG
769
770 % inst -f flexfax
771 ...
772 inst> install flexfax.server.*
773 inst> go
774
d747e748 775 The SGI binaries were built for Version 4.0.5H of the IRIX operating
6f14531a
RG
776 system. They should work w/o problem on earlier versions of the
777 system, but I have not fully tested this. Also, note that to install a
778 server on an SGI machine, you need to have installed the Display
779 PostScript execution environment product (dps_eoe). Otherwise, the fax
780 server will not be able to convert PostScript to facsimile for
781 transmission.
782
d747e748
JH
783 If you are working from the source distribution, look at the file
784 README in the top of the source tree. If you are working from the inst
785 images, the subsystem flexfax.man.readme contains the README file and
786 other useful pieces of information--the installed files are placed in
787 the directory /usr/local/doc/flexfax). Basically you will need to run
788 the faxaddmodem script to setup and configure your fax modem. Consult
789 the README file and the manual page for faxaddmodem for information.
6f14531a 790
6f14531a 791
d747e748
JH
792 FlexFAX Mail List
793 -----------------
6f14531a
RG
794 A mailing list for users of this software is located on sgi.com.
795 If you want to join this mailing list or have a list-related request
796 such as getting your name removed from it, send a request to
797
d747e748
JH
798 majordomo@whizzer.wpd.sgi.com
799
800 For example, to subscribe, send the line "subscribe flexfax" in
801 the body of your message. The line "help" will return a list of
802 the commands understood by the mailing list management software.
6f14531a
RG
803
804 Submissions (including bug reports) should be directed to:
805
806 flexfax@sgi.com
807
d747e748
JH
808 When corresponding about this software please always specify what
809 version you have, what system you're running on, and, if the problem is
810 specific to your modem, identify the modem and firmware revision.
811
6f14531a
RG
812
813+--------------------------------+
814| TWEAKING CONFIGURATION OPTIONS |
815+--------------------------------+
816
817There are a large number of configuration options that don't normally
818need to be changed. However, if you feel you need to tweak them, you
819can define the following M4 variables. This list is shown in four
820columns: the name you define, the default value for that definition,
821the option or macro that is affected (either Ox for an option or Dx
822for a macro), and a brief description. Greater detail of the semantics
823can be found in the Installation and Operations Guide.
824
825Some options are likely to be deprecated in future versions -- that is,
826the option is only included to provide back-compatibility. These are
827marked with "*".
828
829M4 Variable Name Default Mac/Opt Description
830confMAILER_NAME MAILER-DAEMON Dn The sender name used for
831 internally generated
832 outgoing messages.
833confFROM_LINE From $g $d Dl The From_ line used when
834 sending to files or programs.
835confFROM_HEADER $?x$x <$g>$|$g$. The format of an internally
836 Dq generated From: address.
837confOPERATORS .:%@!^/[] Do Address operator characters.
d747e748 838confSMTP_LOGIN_MSG $j Sendmail $v/$Z ready at $b
6f14531a
RG
839 De The initial (spontaneous)
840 SMTP greeting message.
841confSEVEN_BIT_INPUT False O7 Force input to seven bits?
842confALIAS_WAIT 10 Oa Wait (in minutes) for alias
843 file rebuild.
844confMIN_FREE_BLOCKS 4 Ob Minimum number of free blocks
845 on queue filesystem to accept
846 SMTP mail.
847confBLANK_SUB . OB Blank (space) substitution
848 character.
849confCON_EXPENSIVE False Oc Connect immediately to
850 mailers marked expensive?
851confCHECKPOINT_INTERVAL 10 OC Checkpoint queue files
852 every N recipients.
853confDELIVERY_MODE background Od Default delivery mode.
854confAUTO_REBUILD False OD Automatically rebuild
855 alias file if needed.
856confERROR_MODE (undefined) Oe Error message mode.
857confERROR_MESSAGE (undefined) OE Error message header/file.
858confSAVE_FROM_LINES False Of Save extra leading
859 From_ lines.
860confTEMP_FILE_MODE 0600 OF Temporary file mode.
861confDEF_GROUP_ID 1 Og Default group id.
862confMATCH_GECOS False OG Match GECOS field.
863confMAX_HOP 17 Oh Maximum hop count.
864confIGNORE_DOTS False Oi * Ignore dot as terminator
865 for incoming messages?
866confBIND_OPTS (empty) OI Default options for BIND.
867confMIME_FORMAT_ERRORS True Oj * Send error messages as MIME-
868 encapsulated messages per
869 RFC 1344.
d747e748
JH
870confFORWARD_PATH (undefined) OJ The colon-separated list of
871 places to search for .forward
872 files.
6f14531a
RG
873confMCI_CACHE_SIZE 2 Ok Size of open connection cache.
874confMCI_CACHE_TIMEOUT 5m OK Open connection cache timeout.
875confUSE_ERRORS_TO False Ol * Use the Errors-To: header to
876 deliver error messages. This
877 should not be necessary because
878 of general acceptance of the
879 envelope/header distinction.
880confLOG_LEVEL 9 OL Log level.
881confME_TOO False Om Include sender in group
882 expansions.
883confCHECK_ALIASES True On Check RHS of aliases when
884 running newaliases.
885confOLD_STYLE_HEADERS True Oo * Assume that headers without
886 special chars are old style.
887confDAEMON_OPTIONS (undefined) OO SMTP daemon options.
888confPRIVACY_FLAGS authwarnings Op Privacy flags.
889confCOPY_ERRORS_TO (undefined) OP Address for additional copies
890 of all error messages.
891confQUEUE_FACTOR (undefined) Oq Slope of queue-only function
892confREAD_TIMEOUT (undefined) Or SMTP read timeouts.
893confSAFE_QUEUE True Os * Commit all messages to disk
894 before forking.
895confMESSAGE_TIMEOUT 5d/4h OT Timeout for messages before
896 sending error/warning message.
897confTIME_ZONE USE_SYSTEM Ot Time zone info -- can be
898 USE_SYSTEM to use the system's
899 idea, USE_TZ to use the user's
900 TZ envariable, or something
901 else to force that value.
902confDEF_USER_ID 1 Ou Default user id.
903confUSERDB_SPEC (undefined) OU User database specification.
904confFALLBACK_MX (undefined) OV Fallback MX host.
d747e748
JH
905confTRY_NULL_MX_LIST False Ow If we are the best MX for a
906 host and haven't made other
907 arrangements, try connecting
908 to the host directly; normally
909 this would be a config error.
6f14531a
RG
910confQUEUE_LA 8 Ox Load average at which queue-only
911 function kicks in.
912confREFUSE_LA 12 OX Load average at which incoming
913 SMTP connections are refused.
914confWORK_RECIPIENT_FACTOR
915 (undefined) Oy Cost of each recipient.
916confSEPARATE_PROC False OY Run all deliveries in a
917 separate process.
918confWORK_CLASS_FACTOR (undefined) Oz Priority multiplier for class.
919confWORK_TIME_FACTOR (undefined) OZ Cost of each delivery attempt.
920confCW_FILE /etc/sendmail.cw Name of file used to get the
921 Fw local additions to the $=w
922 class.
d747e748
JH
923confSMTP_MAILER smtp - The mailer name used when
924 SMTP connectivity is required.
925 Either "smtp" or "esmtp".
926confLOCAL_MAILER local - The mailer name used when
927 local connectivity is required.
928 Almost always "local".
929confRELAY_MAILER relay - The default mailer name used
930 for relaying any mail (e.g.,
931 to a BITNET_RELAY, a
932 SMART_HOST, or whatever).
933 This can reasonably be "suucp"
934 if you are on a UUCP-connected
935 site.
936confDOMAIN_NAME (undefined) Dj If defined, sets $j.
6f14531a
RG
937
938
939+-----------+
940| HIERARCHY |
941+-----------+
942
943Within this directory are several subdirectories, to wit:
944
945m4 General support routines. These are typically
946 very important and should not be changed without
947 very careful consideration.
948
949cf The configuration files themselves. They have
950 ".mc" suffixes, and must be run through m4 to
951 become complete. The resulting output should
952 have a ".cf" suffix.
953
954ostype Definitions describing a particular operating
955 system type. These should always be referenced
956 using the OSTYPE macro in the .mc file. Examples
957 include "bsd4.3", "bsd4.4", "sunos3.5", and
958 "sunos4.1".
959
960domain Definitions describing a particular domain, referenced
961 using the DOMAIN macro in the .mc file. These are
962 site dependent; for example, we contribute "cs.exposed.m4"
963 and "cs.hidden.m4" which both describe hosts in the
964 CS.Berkeley.EDU subdomain; the former displays the local
965 hostname (e.g., mammoth.CS.Berkeley.EDU), whereas the
966 latter does its best to hide the identity of the local
967 workstation inside the CS subdomain.
968
969mailer Descriptions of mailers. These are referenced using
970 the MAILER macro in the .mc file.
971
972sh Shell files used when building the .cf file from the
973 .mc file in the cf subdirectory.
974
975feature These hold special orthogonal features that you might
976 want to include. They should be referenced using
977 the FEATURE macro.
978
979hack Local hacks. These can be referenced using the HACK
980 macro. They shouldn't be of more than voyeuristic
981 interest outside the .Berkeley.EDU domain, but who knows?
982 We've all got our own peccadilloes.
983
984siteconfig Site configuration -- e.g., tables of locally connected
985 UUCP sites.
986
987
988+------------------------+
989| ADMINISTRATIVE DETAILS |
990+------------------------+
991
992The following sections detail usage of certain internal parts of the
993sendmail.cf file. Read them carefully if you are trying to modify
994the current model. If you find the above descriptions adequate, these
995should be {boring, confusing, tedious, ridiculous} (pick one or more).
996
997RULESETS (* means built in to sendmail)
998
999 0 * Parsing
1000 1 * Sender rewriting
1001 2 * Recipient rewriting
1002 3 * Canonicalization
1003 4 * Post cleanup
1004 5 * Local address rewrite (after aliasing)
1005 1x mailer rules (sender qualification)
1006 2x mailer rules (recipient qualification)
1007 90 Mailertable host stripping
1008 96 Bottom half of Ruleset 3 (ruleset 6 in old sendmail)
1009 97 Hook for recursive ruleset 0 call (ruleset 7 in old sendmail)
d747e748 1010 98 Local part of ruleset 0 (ruleset 8 in old sendmail)
6f14531a
RG
1011
1012
1013MAILERS
1014
1015 0 local, prog local and program mailers
1016 1 smtp SMTP channel
1017 2 uucp UNIX-to-UNIX Copy Program
1018 3 netnews Network News delivery
1019 4 fax Sam Leffler's FlexFAX software
1020
1021
1022MACROS
1023
1024 A
1025 B Bitnet Relay
1026 C CSNET Relay
1027 D The local domain -- usually not needed
1028 E
1029 F FAX Relay
1030 G
1031 H mail Hub (for mail clusters)
1032 I
1033 J
1034 K
1035 L
1036 M Masquerade (who I claim to be)
1037 N
1038 O
1039 P
1040 Q
1041 R Relay (for unqualified names)
1042 S Smart Host
1043 T
1044 U my UUCP name (if I have a UUCP connection)
1045 V UUCP Relay (class V hosts)
1046 W UUCP Relay (class W hosts)
1047 X UUCP Relay (class X hosts)
1048 Y UUCP Relay (all other hosts)
1049 Z Version number
1050
1051
1052CLASSES
1053
1054 A
1055 B
1056 C
1057 D
1058 E addresses that should not seem to come from $M
1059 F hosts we forward for
1060 G
1061 H
1062 I
1063 J
1064 K
1065 L addresses that should not be forwarded to $R
1066 M
1067 N
1068 O operators that indicate network operations (cannot be in local names)
1069 P top level pseudo-domains: BITNET, FAX, UUCP, etc.
1070 Q
1071 R
1072 S
1073 T
1074 U locally connected UUCP hosts
1075 V UUCP hosts connected to relay $V
1076 W UUCP hosts connected to relay $W
1077 X UUCP hosts connected to relay $X
1078 Y locally connected smart UUCP hosts
d747e748 1079 Z locally connected domain-ized UUCP hosts
6f14531a
RG
1080 . the class containing only a dot
1081
1082
1083M4 DIVERSIONS
1084
1085 1 Local host detection and resolution
1086 2 Local Ruleset 3 additions
1087 3 Local Ruleset 0 additions
1088 4 UUCP Ruleset 0 additions
1089 5 locally interpreted names (overrides $R)
1090 6 local configuration (at top of file)
1091 7 mailer definitions
1092 8 special local name recognition (late in ruleset 3)
1093 9 special local rulesets (1 and 2)