portability issues
[unix-history] / usr / src / usr.sbin / sendmail / cf / README
CommitLineData
7ace9d88 1
7ace9d88 2
4a51b074 3 NEW SENDMAIL CONFIGURATION FILES
7ace9d88 4
4a51b074 5 Eric Allman <eric@CS.Berkeley.EDU>
7ace9d88 6
0409c6a2 7 @(#)README 8.15 (Berkeley) %G%
7ace9d88 8
7ace9d88 9
4a51b074 10This document describes the sendmail configuration files being used
5dd53c38 11at Berkeley. These use features in the new (R8) sendmail, and although
4a51b074 12there is an ``OLDSENDMAIL'' mode, they haven't really been tested on
fd82c288 13old versions of sendmail and cannot be expected to work well.
4a51b074
EA
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
fd82c288
EA
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
4a51b074 37"define(`FOO')" should work without my having to add a null value.]
7ace9d88 38
a33031f5 39IF YOU DON'T HAVE A BERKELEY MAKE, don't despair! Just run
445bdec1
EA
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.
a33031f5
EA
43
44To get started, you may want to look at tcpproto.mc (for TCP-only
f51c9ac8
EA
45sites), uucpproto.mc (for UUCP-only sites), and clientproto.mc (for
46clusters of clients using a single mail host). Others are versions
a33031f5
EA
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
4a51b074
EA
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
bee9d799 55
4a51b074
EA
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
7ace9d88
EA
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
4a51b074 84The divert(-1) will delete the crud in the resulting output file.
fd82c288 85The copyright notice is what your lawyers require. Our lawyers require
4a51b074
EA
86the one that I've included in my files. A copyleft is a copyright by
87another name.
88
89The next line MUST be
7ace9d88
EA
90
91 include(`../m4/cf.m4')
92
4a51b074
EA
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.
7ace9d88 97
8897fcb1 98 VERSIONID(`<SCCS or RCS version id>')
7ace9d88
EA
99
100VERSIONID is a macro that stuffs the version information into the
101resulting file. We use SCCS; you could use RCS, something else, or
4a51b074
EA
102omit it completely. This is not the same as the version id included
103in SMTP greeting messages -- this is defined in m4/version.m4.
7ace9d88 104
9df1b56b 105 DOMAIN(cs.exposed)
7ace9d88
EA
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
5dd53c38 111local hostname. Internally this is effected by using
4a51b074 112"MASQUERADE_AS(CS.Berkeley.EDU)".
7ace9d88 113
9df1b56b 114 MAILER(smtp)
7ace9d88 115
c573210d
EA
116These describe the mailers used at the default CS site site. The
117local mailer is always included automatically.
7ace9d88 118
bee9d799 119
4a51b074
EA
120+--------+
121| OSTYPE |
122+--------+
123
7ace9d88
EA
124Note that cf/cs-exposed.mc omits an OSTYPE macro -- this assumes
125default Computer Science Division environment. There are several
fd82c288
EA
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.
4a51b074
EA
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
00d0b5bf
EA
136 of the alias file(s). It can be a comma-separated
137 list of names.
4a51b074
EA
138HELP_FILE [/usr/lib/sendmail.hf] The name of the file
139 containing information printed in response to
140 the SMTP HELP command.
4a51b074
EA
141QUEUE_DIR [/var/spool/mqueue] The directory containing
142 queue files.
143STATUS_FILE [/etc/sendmail.st] The file containing status
144 information.
bee9d799 145LOCAL_MAILER_PATH [/bin/mail] The program used to deliver local mail.
2e9b6f6e
EA
146LOCAL_MAILER_FLAGS [rmn] The flags used by the local mailer. The
147 flags lsDFM are always included.
d8b2ad36
EA
148LOCAL_MAILER_ARGS [mail -d $u] The arguments passed to deliver local
149 mail.
bee9d799 150LOCAL_SHELL_PATH [/bin/sh] The shell used to deliver piped email.
1c61e291
EA
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.
bee9d799
EA
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.
5dd53c38
EA
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).
d8b2ad36
EA
165UUCP_MAILER_ARGS [uux - -r -z -a$f -gC $h!rmail ($u)] The arguments
166 passed to the UUCP mailer.
1c61e291
EA
167UUCP_MAX_SIZE [100000] The maximum size message accepted for
168 transmission by the UUCP mailers.
4a51b074
EA
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
4a51b074
EA
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
bb3c21c3 186 connected.
4a51b074
EA
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
bb3c21c3
EA
197 methods.
198
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'',
2e9b6f6e
EA
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.
4a51b074
EA
207
208The domain file can also be used to define a domain name, if needed
6f02ae2f
EA
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.
4a51b074 212
dec2b686
EA
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
4a51b074
EA
218+---------+
219| MAILERS |
220+---------+
7ace9d88
EA
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
fd82c288
EA
227 your mail to another site. This mailer is included
228 automatically.
7ace9d88
EA
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
d8b2ad36
EA
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.
7ace9d88
EA
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.
4a51b074
EA
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.
5dd53c38
EA
248 If smtp is defined, it also defines a "uucp-dom" mailer
249 that uses domain-style rewriting.
4a51b074 250
bee9d799
EA
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
63013ec3
EA
257fax Facsimile transmission. This is experimental and based
258 on Sam Leffler's FlexFAX software. For more information,
259 see below.
260
bee9d799 261
4a51b074
EA
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
3ad658d7
EA
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:
4a51b074
EA
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.
dec2b686
EA
284 The actual filename can be overridden by redefining
285 confCW_FILE.
f51c9ac8 286
bee9d799
EA
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.
f51c9ac8 291
a33031f5 292nouucp Don't do anything special with UUCP addresses at all.
f51c9ac8 293
928fba03
EA
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
bb3c21c3
EA
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.
f51c9ac8 301
da99e870
EA
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.
f51c9ac8 307
3ad658d7
EA
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:
6e8cccfc 312 hash -o /etc/mailertable
d8b2ad36
EA
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:
3ad658d7 317 mailer:domain
d8b2ad36
EA
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.
f51c9ac8 321
d8b2ad36
EA
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:
6e8cccfc 326 hash -o /etc/domaintable
d8b2ad36
EA
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.
f51c9ac8 331
d1593b1a
EA
332bitdomain Look up bitnet hosts in a table to try to turn them into
333 internet addresses. The table can be built using the
2e9b6f6e 334 bitdomain program contributed by John Gardiner Myers.
d1593b1a
EA
335 The argument of the FEATURE may be the key definition; if
336 none is specified, the definition used is:
6e8cccfc 337 hash -o /etc/bitdomain.db
d1593b1a
EA
338 Keys are the bitnet hostname; values are the corresponding
339 internet hostname.
f51c9ac8 340
4f1c78c0
EA
341uucpdomain Similar feature for UUCP hosts. The default map definition
342 is:
6e8cccfc 343 hash -o /etc/uudomain.db
4f1c78c0
EA
344 At the moment there is no automagic tool to build this
345 database.
f51c9ac8 346
c62d746c
EA
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.
f51c9ac8 351
d8b2ad36
EA
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.
f51c9ac8 364
2e9b6f6e
EA
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.
4a51b074 368
f51c9ac8
EA
369nullclient This is a special case -- it creates a stripped down
370 configuration file containing nothing but support for
de0c51e7
EA
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.
f51c9ac8 381
bee9d799 382
4a51b074
EA
383+-------+
384| HACKS |
385+-------+
386
387Some things just can't be called features. To make this clear,
fd82c288 388they go in the hack subdirectory and are referenced using the HACK
4a51b074
EA
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
bee9d799 395
4a51b074
EA
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)
430
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
bee9d799 435
4a51b074
EA
436+-------------------+
437| TWEAKING RULESETS |
438+-------------------+
9df1b56b
EA
439
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.
443
444A common use is to convert old UUCP addreses to SMTP addresses using
445the UUCPSMTP macro. For example:
446
447 LOCAL_RULE_3
448 UUCPSMTP(decvax, decvax.dec.com)
449 UUCPSMTP(research, research.att.com)
450
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.
454
4a51b074
EA
455This could also be used to look hosts in a database map:
456
457 LOCAL_RULE_3
458 R$* < @ $+ > $* $: $1 < @ $(hostmap $2 $) > $3
459
460This map would be defined in the LOCAL_CONFIG portion, as shown below.
461
9df1b56b
EA
462Similarly, LOCAL_RULE_0 can be used to introduce new parsing rules.
463For example, new rules are needed to parse hostnames that you accept
c573210d
EA
464via MX records. For example, you might have:
465
466 LOCAL_RULE_0
467 R$+ < @ cnmat.Berkeley.EDU > $#uucp $@ cnmat $: $1
468
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.
9df1b56b 472
06630be3
EA
473You can also tweak rulesets 1 and 2 using LOCAL_RULE_1 and LOCAL_RULE_2.
474These rulesets are normally empty.
475
4a51b074
EA
476A similar macro is LOCAL_CONFIG. This introduces lines added after the
477boilerplate option setting but before rulesets, and can be used to
a151c868 478declare local database maps or whatever. For example:
4a51b074
EA
479
480 LOCAL_CONFIG
481 Khostmap hash /etc/hostmap.db
482 Kyplocal nis -m hosts.byname
4a51b074 483
bee9d799 484
4a51b074
EA
485+---------------------------+
486| MASQUERADING AND RELAYING |
487+---------------------------+
488
489You can have your host masquerade as another using
490
491 MASQUERADE_AS(host.domain)
9df1b56b 492
4a51b074
EA
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).
497
2e9b6f6e
EA
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
4a51b074
EA
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
505
506 EXPOSED_USER(usernames)
507
508This adds users to class E; you could also use something like
509
510 FE/etc/sendmail.cE
511
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
516
28b51619 517 define(`LOCAL_RELAY', mailer:hostname)
4a51b074 518
28b51619
EA
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
4a51b074
EA
523
524 LOCAL_USER(usernames)
525
526This adds users to class L; you could also use something like
527
528 FL/etc/sendmail.cL
529
2e9b6f6e
EA
530If you want all incoming mail sent to a centralized hub, as for a
531shared /var/spool/mail scheme, use
34e49bd3 532
28b51619 533 define(`MAIL_HUB', mailer:hostname)
34e49bd3 534
28b51619
EA
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:
34e49bd3
EA
540
541email sent to.... eric eric@mastodon.CS.Berkeley.EDU
542
543LOCAL_RELAY set to mail.CS.Berkeley.EDU (delivered locally)
544mail.CS.Berkeley.EDU
545
546MAIL_HUB set to mammoth.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU
547mammoth.CS.Berkeley.EDU
548
549Both LOCAL_RELAY and mail.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU
550MAIL_HUB set as above
551
2e9b6f6e
EA
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
28b51619
EA
566
567+-------------------------------+
568| NON-SMTP BASED CONFIGURATIONS |
569+-------------------------------+
570
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.
576
577You can define a ``smart host'' that understands a richer address syntax
578using:
579
580 define(`SMART_HOST', mailer:hostname)
581
bb3c21c3 582In this case, the ``mailer:'' defaults to "relay". Any messages that
28b51619
EA
583can't be handled using the usual UUCP rules are passed to this host.
584
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:
588
589 define(`SMART_HOST', suucp:uunet)
590 LOCAL_NET_CONFIG
d8b2ad36 591 R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3
28b51619
EA
592
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.
d8b2ad36
EA
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.
28b51619 606
2e9b6f6e
EA
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
28b51619 611
f7e8be31
EA
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
bb3c21c3
EA
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
2e9b6f6e
EA
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
f7e8be31
EA
681To build the internal form of the user databae, use:
682
683 makemap btree /usr/data/base.db < /usr/data/base.txt
684
2e9b6f6e 685
63013ec3
EA
686+------------------+
687| FlexFAX SOFTWARE |
688+------------------+
689
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:
693
d1ad6cf3 694 $Header: /usr/people/sam/fax/RCS/HOWTO,v 1.14 93/05/24 11:42:16 sam Exp $
63013ec3
EA
695
696 How To Obtain This Software (in case all you get is this file)
d1ad6cf3 697 --------------------------------------------------------------
63013ec3 698 The source code is available for public ftp on
d1ad6cf3 699 sgi.com sgi/fax/v2.1.src.tar.Z
63013ec3
EA
700 (192.48.153.1)
701
702 You can also obtain inst'able images for Silicon Graphics machines from
d1ad6cf3 703 sgi.com sgi/fax/v2.1.inst.tar
63013ec3
EA
704 (192.48.153.1)
705
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
d1ad6cf3
EA
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
63013ec3
EA
735 service, send a message to "ftpmail@gatekeeper.dec.com" whose body
736 consists of the single line "help".
737
d1ad6cf3
EA
738
739 Obtaining the Software Within Silicon Graphics
740 ----------------------------------------------
63013ec3 741 Internal to Silicon Graphics there are inst'able images on the host
d1ad6cf3 742 flake.asd in the directory /usr/dist. Thus you can do something like:
63013ec3 743
d1ad6cf3 744 % inst -f flake.asd.sgi.com:/usr/dist/flexfax
63013ec3 745
d1ad6cf3 746 to install the latest version of the software on your machine.
63013ec3 747
d1ad6cf3
EA
748
749 What to do Once You've Retrieved Stuff
750 --------------------------------------
63013ec3
EA
751 The external distributions come in a compressed or uncompressed tar
752 file. To extract the source distribution:
753
d1ad6cf3 754 % zcat v2.1.src.tar.Z | tar xf -
63013ec3
EA
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
d1ad6cf3 760 % cd dist; tar xf ../v2.1.inst.tar; cd ..
63013ec3
EA
761 % inst -f dist/flexfax
762 ...
763 inst> go
764
765 (Note, the dist subdirectory is because some versions of inst fail if
d1ad6cf3
EA
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:
63013ec3
EA
769
770 % inst -f flexfax
771 ...
772 inst> install flexfax.server.*
773 inst> go
774
d1ad6cf3 775 The SGI binaries were built for Version 4.0.5H of the IRIX operating
63013ec3
EA
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
d1ad6cf3
EA
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.
63013ec3 790
63013ec3 791
d1ad6cf3
EA
792 FlexFAX Mail List
793 -----------------
63013ec3
EA
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
d1ad6cf3
EA
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.
63013ec3
EA
803
804 Submissions (including bug reports) should be directed to:
805
806 flexfax@sgi.com
807
d1ad6cf3
EA
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
63013ec3 812
a151c868
EA
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
fb32c2a1
EA
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
a151c868
EA
829M4 Variable Name Default Mac/Opt Description
830confMAILER_NAME MAILER-DAEMON Dn The sender name used for
831 internally generated
832 outgoing messages.
06630be3
EA
833confFROM_LINE From $g $d Dl The From_ line used when
834 sending to files or programs.
a151c868
EA
835confFROM_HEADER $?x$x <$g>$|$g$. The format of an internally
836 Dq generated From: address.
837confOPERATORS .:%@!^/[] Do Address operator characters.
2e9b6f6e 838confSMTP_LOGIN_MSG $j Sendmail $v/$Z ready at $b
a151c868
EA
839 De The initial (spontaneous)
840 SMTP greeting message.
f6232b5e 841confSEVEN_BIT_INPUT False O7 Force input to seven bits?
a151c868
EA
842confALIAS_WAIT 10 Oa Wait (in minutes) for alias
843 file rebuild.
bee9d799
EA
844confMIN_FREE_BLOCKS 4 Ob Minimum number of free blocks
845 on queue filesystem to accept
846 SMTP mail.
a151c868
EA
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.
fb32c2a1 864confIGNORE_DOTS False Oi * Ignore dot as terminator
a151c868
EA
865 for incoming messages?
866confBIND_OPTS (empty) OI Default options for BIND.
fb32c2a1 867confMIME_FORMAT_ERRORS True Oj * Send error messages as MIME-
f6232b5e
EA
868 encapsulated messages per
869 RFC 1344.
2e9b6f6e
EA
870confFORWARD_PATH (undefined) OJ The colon-separated list of
871 places to search for .forward
872 files.
a151c868
EA
873confMCI_CACHE_SIZE 2 Ok Size of open connection cache.
874confMCI_CACHE_TIMEOUT 5m OK Open connection cache timeout.
fb32c2a1
EA
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.
a151c868
EA
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.
fb32c2a1 885confOLD_STYLE_HEADERS True Oo * Assume that headers without
a151c868 886 special chars are old style.
4c230f32 887confDAEMON_OPTIONS (undefined) OO SMTP daemon options.
88ce9b1c 888confPRIVACY_FLAGS authwarnings Op Privacy flags.
a151c868
EA
889confCOPY_ERRORS_TO (undefined) OP Address for additional copies
890 of all error messages.
891confQUEUE_FACTOR (undefined) Oq Slope of queue-only function
33f90dbe 892confREAD_TIMEOUT (undefined) Or SMTP read timeouts.
fb32c2a1 893confSAFE_QUEUE True Os * Commit all messages to disk
a151c868 894 before forking.
88ce9b1c
EA
895confMESSAGE_TIMEOUT 5d/4h OT Timeout for messages before
896 sending error/warning message.
386fe59f 897confTIME_ZONE USE_SYSTEM Ot Time zone info -- can be
a151c868
EA
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.
39ed20b0 903confUSERDB_SPEC (undefined) OU User database specification.
4c230f32 904confFALLBACK_MX (undefined) OV Fallback MX host.
5dd53c38
EA
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.
a151c868
EA
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.
a151c868 914confWORK_RECIPIENT_FACTOR
fb32c2a1
EA
915 (undefined) Oy Cost of each recipient.
916confSEPARATE_PROC False OY Run all deliveries in a
917 separate process.
a151c868
EA
918confWORK_CLASS_FACTOR (undefined) Oz Priority multiplier for class.
919confWORK_TIME_FACTOR (undefined) OZ Cost of each delivery attempt.
dec2b686
EA
920confCW_FILE /etc/sendmail.cw Name of file used to get the
921 Fw local additions to the $=w
922 class.
2e9b6f6e 923confSMTP_MAILER smtp - The mailer name used when
cf36aa8d
EA
924 SMTP connectivity is required.
925 Either "smtp" or "esmtp".
2c840221
EA
926confLOCAL_MAILER local - The mailer name used when
927 local connectivity is required.
928 Almost always "local".
bb3c21c3
EA
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.
f7e8be31 936confDOMAIN_NAME (undefined) Dj If defined, sets $j.
a151c868 937
bee9d799 938
4a51b074
EA
939+-----------+
940| HIERARCHY |
941+-----------+
7ace9d88
EA
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
fd82c288 947 very careful consideration.
7ace9d88
EA
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
9df1b56b
EA
984siteconfig Site configuration -- e.g., tables of locally connected
985 UUCP sites.
986
7ace9d88 987
4a51b074
EA
988+------------------------+
989| ADMINISTRATIVE DETAILS |
990+------------------------+
7ace9d88
EA
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
f5baef19 1004 5 * Local address rewrite (after aliasing)
b197efaa
EA
1005 1x mailer rules (sender qualification)
1006 2x mailer rules (recipient qualification)
0409c6a2
EA
1007 3x mailer rules (sender header qualification)
1008 4x mailer rules (recipient header qualification)
1009 5x mailer subroutines (general)
1010 6x mailer subroutines (general)
1011 7x mailer subroutines (general)
1012 8x reserved
b197efaa 1013 90 Mailertable host stripping
f7ffd8e3
EA
1014 96 Bottom half of Ruleset 3 (ruleset 6 in old sendmail)
1015 97 Hook for recursive ruleset 0 call (ruleset 7 in old sendmail)
5dd53c38 1016 98 Local part of ruleset 0 (ruleset 8 in old sendmail)
7ace9d88
EA
1017
1018
1019MAILERS
1020
1021 0 local, prog local and program mailers
1022 1 smtp SMTP channel
bee9d799
EA
1023 2 uucp UNIX-to-UNIX Copy Program
1024 3 netnews Network News delivery
63013ec3 1025 4 fax Sam Leffler's FlexFAX software
7ace9d88
EA
1026
1027
1028MACROS
1029
1030 A
1031 B Bitnet Relay
1032 C CSNET Relay
f5baef19 1033 D The local domain -- usually not needed
7ace9d88 1034 E
63013ec3 1035 F FAX Relay
7ace9d88 1036 G
34e49bd3 1037 H mail Hub (for mail clusters)
7ace9d88
EA
1038 I
1039 J
1040 K
1041 L
1042 M Masquerade (who I claim to be)
1043 N
1044 O
1045 P
1046 Q
1047 R Relay (for unqualified names)
28b51619 1048 S Smart Host
7ace9d88 1049 T
c573210d
EA
1050 U my UUCP name (if I have a UUCP connection)
1051 V UUCP Relay (class V hosts)
7ace9d88
EA
1052 W UUCP Relay (class W hosts)
1053 X UUCP Relay (class X hosts)
c573210d 1054 Y UUCP Relay (all other hosts)
7ace9d88
EA
1055 Z Version number
1056
1057
1058CLASSES
1059
1060 A
1061 B
1062 C
1063 D
4a51b074 1064 E addresses that should not seem to come from $M
f5baef19 1065 F hosts we forward for
7ace9d88
EA
1066 G
1067 H
1068 I
1069 J
1070 K
1071 L addresses that should not be forwarded to $R
1072 M
1073 N
1074 O operators that indicate network operations (cannot be in local names)
91626fee 1075 P top level pseudo-domains: BITNET, FAX, UUCP, etc.
7ace9d88
EA
1076 Q
1077 R
1078 S
1079 T
1080 U locally connected UUCP hosts
c573210d
EA
1081 V UUCP hosts connected to relay $V
1082 W UUCP hosts connected to relay $W
1083 X UUCP hosts connected to relay $X
1084 Y locally connected smart UUCP hosts
2e9b6f6e 1085 Z locally connected domain-ized UUCP hosts
f5baef19 1086 . the class containing only a dot
7ace9d88
EA
1087
1088
1089M4 DIVERSIONS
1090
28b51619
EA
1091 1 Local host detection and resolution
1092 2 Local Ruleset 3 additions
1093 3 Local Ruleset 0 additions
9df1b56b 1094 4 UUCP Ruleset 0 additions
c573210d 1095 5 locally interpreted names (overrides $R)
f5baef19 1096 6 local configuration (at top of file)
7ace9d88 1097 7 mailer definitions
f5baef19 1098 8 special local name recognition (late in ruleset 3)
06630be3 1099 9 special local rulesets (1 and 2)