aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/sendmail/BuildTools/M4/depend/BSD.m48
-rw-r--r--contrib/sendmail/BuildTools/M4/depend/CC-M.m48
-rw-r--r--contrib/sendmail/BuildTools/M4/depend/NCR.m48
-rw-r--r--contrib/sendmail/BuildTools/M4/depend/Solaris.m48
-rw-r--r--contrib/sendmail/BuildTools/M4/depend/X11.m45
-rw-r--r--contrib/sendmail/BuildTools/M4/depend/generic.m48
-rw-r--r--contrib/sendmail/BuildTools/M4/header.m432
-rw-r--r--contrib/sendmail/BuildTools/OS/386BSD7
-rw-r--r--contrib/sendmail/BuildTools/OS/A-UX11
-rw-r--r--contrib/sendmail/BuildTools/OS/AIX10
-rw-r--r--contrib/sendmail/BuildTools/OS/AIX.218
-rw-r--r--contrib/sendmail/BuildTools/OS/AIX.4.211
-rw-r--r--contrib/sendmail/BuildTools/OS/AIX.4.312
-rw-r--r--contrib/sendmail/BuildTools/OS/AIX.4.x10
-rw-r--r--contrib/sendmail/BuildTools/OS/Altos12
-rw-r--r--contrib/sendmail/BuildTools/OS/BSD-OS8
-rw-r--r--contrib/sendmail/BuildTools/OS/BSD4321
-rw-r--r--contrib/sendmail/BuildTools/OS/CLIX14
-rw-r--r--contrib/sendmail/BuildTools/OS/CRAYT3E.2.0.x11
-rw-r--r--contrib/sendmail/BuildTools/OS/CSOS9
-rw-r--r--contrib/sendmail/BuildTools/OS/ConvexOS11
-rw-r--r--contrib/sendmail/BuildTools/OS/Dell15
-rw-r--r--contrib/sendmail/BuildTools/OS/DomainOS18
-rw-r--r--contrib/sendmail/BuildTools/OS/DomainOS.10.415
-rw-r--r--contrib/sendmail/BuildTools/OS/Dynix13
-rw-r--r--contrib/sendmail/BuildTools/OS/EWS-UX_V29
-rw-r--r--contrib/sendmail/BuildTools/OS/FreeBSD3
-rw-r--r--contrib/sendmail/BuildTools/OS/HP-UX12
-rw-r--r--contrib/sendmail/BuildTools/OS/HP-UX.10.x11
-rw-r--r--contrib/sendmail/BuildTools/OS/HP-UX.11.x11
-rw-r--r--contrib/sendmail/BuildTools/OS/IRIX13
-rw-r--r--contrib/sendmail/BuildTools/OS/IRIX.5.x13
-rw-r--r--contrib/sendmail/BuildTools/OS/IRIX.6.535
-rw-r--r--contrib/sendmail/BuildTools/OS/IRIX.6.x35
-rw-r--r--contrib/sendmail/BuildTools/OS/IRIX64.6.034
-rw-r--r--contrib/sendmail/BuildTools/OS/IRIX64.6.134
-rw-r--r--contrib/sendmail/BuildTools/OS/IRIX64.6.x35
-rw-r--r--contrib/sendmail/BuildTools/OS/ISC10
-rw-r--r--contrib/sendmail/BuildTools/OS/KSR7
-rw-r--r--contrib/sendmail/BuildTools/OS/LUNA46
-rw-r--r--contrib/sendmail/BuildTools/OS/Linux5
-rw-r--r--contrib/sendmail/BuildTools/OS/Linux.ppc3
-rw-r--r--contrib/sendmail/BuildTools/OS/Mach38611
-rw-r--r--contrib/sendmail/BuildTools/OS/NCR.MP-RAS.2.x15
-rw-r--r--contrib/sendmail/BuildTools/OS/NCR.MP-RAS.3.x15
-rw-r--r--contrib/sendmail/BuildTools/OS/NEWS-OS.4.x14
-rw-r--r--contrib/sendmail/BuildTools/OS/NEWS-OS.6.x28
-rw-r--r--contrib/sendmail/BuildTools/OS/NEXTSTEP.4.x28
-rw-r--r--contrib/sendmail/BuildTools/OS/NeXT.2.x20
-rw-r--r--contrib/sendmail/BuildTools/OS/NeXT.3.x28
-rw-r--r--contrib/sendmail/BuildTools/OS/NeXT.4.x29
-rw-r--r--contrib/sendmail/BuildTools/OS/NetBSD4
-rw-r--r--contrib/sendmail/BuildTools/OS/NetBSD.8.33
-rw-r--r--contrib/sendmail/BuildTools/OS/NonStop-UX16
-rw-r--r--contrib/sendmail/BuildTools/OS/OSF19
-rw-r--r--contrib/sendmail/BuildTools/OS/OpenBSD3
-rw-r--r--contrib/sendmail/BuildTools/OS/PTX10
-rw-r--r--contrib/sendmail/BuildTools/OS/Paragon8
-rw-r--r--contrib/sendmail/BuildTools/OS/PowerUX9
-rw-r--r--contrib/sendmail/BuildTools/OS/QNX15
-rw-r--r--contrib/sendmail/BuildTools/OS/RISCos25
-rw-r--r--contrib/sendmail/BuildTools/OS/RISCos.4_025
-rw-r--r--contrib/sendmail/BuildTools/OS/SCO9
-rw-r--r--contrib/sendmail/BuildTools/OS/SCO.4.211
-rw-r--r--contrib/sendmail/BuildTools/OS/SCO.5.x10
-rw-r--r--contrib/sendmail/BuildTools/OS/SINIX12
-rw-r--r--contrib/sendmail/BuildTools/OS/SVR414
-rw-r--r--contrib/sendmail/BuildTools/OS/SunOS10
-rw-r--r--contrib/sendmail/BuildTools/OS/SunOS.4.015
-rw-r--r--contrib/sendmail/BuildTools/OS/SunOS.5.122
-rw-r--r--contrib/sendmail/BuildTools/OS/SunOS.5.222
-rw-r--r--contrib/sendmail/BuildTools/OS/SunOS.5.320
-rw-r--r--contrib/sendmail/BuildTools/OS/SunOS.5.420
-rw-r--r--contrib/sendmail/BuildTools/OS/SunOS.5.520
-rw-r--r--contrib/sendmail/BuildTools/OS/SunOS.5.620
-rw-r--r--contrib/sendmail/BuildTools/OS/SunOS.5.720
-rw-r--r--contrib/sendmail/BuildTools/OS/Titan13
-rw-r--r--contrib/sendmail/BuildTools/OS/ULTRIX10
-rw-r--r--contrib/sendmail/BuildTools/OS/UMAX15
-rw-r--r--contrib/sendmail/BuildTools/OS/UNICOS9
-rw-r--r--contrib/sendmail/BuildTools/OS/UNIX_SV.4.x.i38614
-rw-r--r--contrib/sendmail/BuildTools/OS/UX480024
-rw-r--r--contrib/sendmail/BuildTools/OS/UXPDS.V1015
-rw-r--r--contrib/sendmail/BuildTools/OS/UXPDS.V2022
-rw-r--r--contrib/sendmail/BuildTools/OS/dcosx.1.x.NILE6
-rw-r--r--contrib/sendmail/BuildTools/OS/dgux10
-rw-r--r--contrib/sendmail/BuildTools/OS/maxion14
-rw-r--r--contrib/sendmail/BuildTools/OS/uts.systemV26
-rw-r--r--contrib/sendmail/BuildTools/README110
-rw-r--r--contrib/sendmail/BuildTools/Site/README16
-rwxr-xr-xcontrib/sendmail/BuildTools/bin/Build513
-rw-r--r--contrib/sendmail/BuildTools/bin/configure.sh163
-rwxr-xr-xcontrib/sendmail/BuildTools/bin/find_m4.sh82
-rwxr-xr-xcontrib/sendmail/BuildTools/bin/install.sh128
-rw-r--r--contrib/sendmail/FAQ6
-rw-r--r--contrib/sendmail/KNOWNBUGS (renamed from usr.sbin/sendmail/KNOWNBUGS)50
-rw-r--r--contrib/sendmail/LICENSE89
-rw-r--r--contrib/sendmail/Makefile26
-rw-r--r--contrib/sendmail/README (renamed from usr.sbin/sendmail/READ_ME)220
-rw-r--r--contrib/sendmail/RELEASE_NOTES (renamed from usr.sbin/sendmail/RELEASE_NOTES)663
-rw-r--r--contrib/sendmail/cf/README (renamed from usr.sbin/sendmail/cf/README)493
-rwxr-xr-xcontrib/sendmail/cf/cf/Build28
-rw-r--r--contrib/sendmail/cf/cf/Makefile (renamed from usr.sbin/sendmail/cf/cf/Makefile)48
-rw-r--r--contrib/sendmail/cf/cf/chez.cs.mc33
-rw-r--r--contrib/sendmail/cf/cf/clientproto.mc33
-rw-r--r--contrib/sendmail/cf/cf/cs-hpux10.mc30
-rw-r--r--contrib/sendmail/cf/cf/cs-hpux9.mc30
-rw-r--r--contrib/sendmail/cf/cf/cs-osf1.mc29
-rw-r--r--contrib/sendmail/cf/cf/cs-solaris2.mc29
-rw-r--r--contrib/sendmail/cf/cf/cs-sunos4.1.mc29
-rw-r--r--contrib/sendmail/cf/cf/cs-ultrix4.mc29
-rw-r--r--contrib/sendmail/cf/cf/cyrusproto.mc (renamed from usr.sbin/sendmail/cf/cf/cyrusproto.mc)0
-rw-r--r--contrib/sendmail/cf/cf/generic-bsd4.4.mc27
-rw-r--r--contrib/sendmail/cf/cf/generic-hpux10.mc26
-rw-r--r--contrib/sendmail/cf/cf/generic-hpux9.mc26
-rw-r--r--contrib/sendmail/cf/cf/generic-nextstep3.3.mc26
-rw-r--r--contrib/sendmail/cf/cf/generic-osf1.mc26
-rw-r--r--contrib/sendmail/cf/cf/generic-solaris2.mc26
-rw-r--r--contrib/sendmail/cf/cf/generic-sunos4.1.mc26
-rw-r--r--contrib/sendmail/cf/cf/generic-ultrix4.mc26
-rw-r--r--contrib/sendmail/cf/cf/huginn.cs.mc42
-rw-r--r--contrib/sendmail/cf/cf/knecht.mc71
-rw-r--r--contrib/sendmail/cf/cf/mail.cs.mc43
-rw-r--r--contrib/sendmail/cf/cf/mail.eecs.mc43
-rw-r--r--contrib/sendmail/cf/cf/mailspool.cs.mc36
-rw-r--r--contrib/sendmail/cf/cf/python.cs.mc41
-rw-r--r--contrib/sendmail/cf/cf/s2k-osf1.mc29
-rw-r--r--contrib/sendmail/cf/cf/s2k-ultrix4.mc29
-rw-r--r--contrib/sendmail/cf/cf/tcpproto.mc32
-rw-r--r--contrib/sendmail/cf/cf/ucbarpa.mc29
-rw-r--r--contrib/sendmail/cf/cf/ucbvax.mc (renamed from usr.sbin/sendmail/cf/cf/ucbvax.mc)34
-rw-r--r--contrib/sendmail/cf/cf/uucpproto.mc33
-rw-r--r--contrib/sendmail/cf/cf/vangogh.cs.mc32
-rw-r--r--contrib/sendmail/cf/domain/Berkeley.EDU.m423
-rw-r--r--contrib/sendmail/cf/domain/CS.Berkeley.EDU.m418
-rw-r--r--contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m416
-rw-r--r--contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m416
-rw-r--r--contrib/sendmail/cf/domain/berkeley-only.m418
-rw-r--r--contrib/sendmail/cf/domain/generic.m425
-rw-r--r--contrib/sendmail/cf/feature/accept_unqualified_senders.m415
-rw-r--r--contrib/sendmail/cf/feature/accept_unresolvable_domains.m415
-rw-r--r--contrib/sendmail/cf/feature/access_db.m418
-rw-r--r--contrib/sendmail/cf/feature/allmasquerade.m419
-rw-r--r--contrib/sendmail/cf/feature/always_add_domain.m418
-rw-r--r--contrib/sendmail/cf/feature/bestmx_is_local.m446
-rw-r--r--contrib/sendmail/cf/feature/bitdomain.m418
-rw-r--r--contrib/sendmail/cf/feature/blacklist_recipients.m418
-rw-r--r--contrib/sendmail/cf/feature/domaintable.m418
-rw-r--r--contrib/sendmail/cf/feature/genericstable.m418
-rw-r--r--contrib/sendmail/cf/feature/limited_masquerade.m418
-rw-r--r--contrib/sendmail/cf/feature/local_lmtp.m420
-rw-r--r--contrib/sendmail/cf/feature/local_procmail.m425
-rw-r--r--contrib/sendmail/cf/feature/loose_relay_check.m415
-rw-r--r--contrib/sendmail/cf/feature/mailertable.m418
-rw-r--r--contrib/sendmail/cf/feature/masquerade_entire_domain.m418
-rw-r--r--contrib/sendmail/cf/feature/masquerade_envelope.m418
-rw-r--r--contrib/sendmail/cf/feature/nocanonify.m418
-rw-r--r--contrib/sendmail/cf/feature/nodns.m421
-rw-r--r--contrib/sendmail/cf/feature/notsticky.m420
-rw-r--r--contrib/sendmail/cf/feature/nouucp.m418
-rw-r--r--contrib/sendmail/cf/feature/nullclient.m450
-rw-r--r--contrib/sendmail/cf/feature/promiscuous_relay.m415
-rw-r--r--contrib/sendmail/cf/feature/rbl.m415
-rw-r--r--contrib/sendmail/cf/feature/redirect.m428
-rw-r--r--contrib/sendmail/cf/feature/relay_based_on_MX.m415
-rw-r--r--contrib/sendmail/cf/feature/relay_entire_domain.m415
-rw-r--r--contrib/sendmail/cf/feature/relay_hosts_only.m415
-rw-r--r--contrib/sendmail/cf/feature/relay_local_from.m415
-rw-r--r--contrib/sendmail/cf/feature/smrsh.m423
-rw-r--r--contrib/sendmail/cf/feature/stickyhost.m418
-rw-r--r--contrib/sendmail/cf/feature/use_ct_file.m424
-rw-r--r--contrib/sendmail/cf/feature/use_cw_file.m424
-rw-r--r--contrib/sendmail/cf/feature/uucpdomain.m418
-rw-r--r--contrib/sendmail/cf/feature/virtusertable.m418
-rw-r--r--contrib/sendmail/cf/hack/cssubdomain.m422
-rw-r--r--contrib/sendmail/cf/m4/cf.m428
-rw-r--r--contrib/sendmail/cf/m4/cfhead.m4 (renamed from usr.sbin/sendmail/cf/m4/cfhead.m4)40
-rw-r--r--contrib/sendmail/cf/m4/nullrelay.m4 (renamed from usr.sbin/sendmail/cf/m4/nullrelay.m4)36
-rw-r--r--contrib/sendmail/cf/m4/proto.m4 (renamed from usr.sbin/sendmail/cf/m4/proto.m4)594
-rw-r--r--contrib/sendmail/cf/m4/version.m417
-rw-r--r--contrib/sendmail/cf/mailer/cyrus.m4 (renamed from usr.sbin/sendmail/cf/mailer/cyrus.m4)15
-rw-r--r--contrib/sendmail/cf/mailer/fax.m435
-rw-r--r--contrib/sendmail/cf/mailer/local.m474
-rw-r--r--contrib/sendmail/cf/mailer/mail11.m4 (renamed from usr.sbin/sendmail/cf/mailer/mail11.m4)9
-rw-r--r--contrib/sendmail/cf/mailer/phquery.m429
-rw-r--r--contrib/sendmail/cf/mailer/pop.m431
-rw-r--r--contrib/sendmail/cf/mailer/procmail.m432
-rw-r--r--contrib/sendmail/cf/mailer/smtp.m4 (renamed from usr.sbin/sendmail/cf/mailer/smtp.m4)36
-rw-r--r--contrib/sendmail/cf/mailer/usenet.m426
-rw-r--r--contrib/sendmail/cf/mailer/uucp.m4 (renamed from usr.sbin/sendmail/cf/mailer/uucp.m4)34
-rw-r--r--contrib/sendmail/cf/ostype/aix2.m420
-rw-r--r--contrib/sendmail/cf/ostype/aix3.m420
-rw-r--r--contrib/sendmail/cf/ostype/aix4.m420
-rw-r--r--contrib/sendmail/cf/ostype/altos.m428
-rw-r--r--contrib/sendmail/cf/ostype/amdahl-uts.m423
-rw-r--r--contrib/sendmail/cf/ostype/aux.m422
-rw-r--r--contrib/sendmail/cf/ostype/bsd4.3.m417
-rw-r--r--contrib/sendmail/cf/ostype/bsd4.4.m420
-rw-r--r--contrib/sendmail/cf/ostype/bsdi1.0.m416
-rw-r--r--contrib/sendmail/cf/ostype/bsdi2.0.m416
-rw-r--r--contrib/sendmail/cf/ostype/dgux.m420
-rw-r--r--contrib/sendmail/cf/ostype/domainos.m421
-rw-r--r--contrib/sendmail/cf/ostype/dynix3.2.m418
-rw-r--r--contrib/sendmail/cf/ostype/gnuhurd.m420
-rw-r--r--contrib/sendmail/cf/ostype/hpux10.m429
-rw-r--r--contrib/sendmail/cf/ostype/hpux9.m428
-rw-r--r--contrib/sendmail/cf/ostype/irix4.m420
-rw-r--r--contrib/sendmail/cf/ostype/irix5.m440
-rw-r--r--contrib/sendmail/cf/ostype/irix6.m440
-rw-r--r--contrib/sendmail/cf/ostype/isc4.1.m427
-rw-r--r--contrib/sendmail/cf/ostype/linux.m416
-rw-r--r--contrib/sendmail/cf/ostype/maxion.m430
-rw-r--r--contrib/sendmail/cf/ostype/mklinux.m422
-rw-r--r--contrib/sendmail/cf/ostype/nextstep.m424
-rw-r--r--contrib/sendmail/cf/ostype/osf1.m419
-rw-r--r--contrib/sendmail/cf/ostype/powerux.m425
-rw-r--r--contrib/sendmail/cf/ostype/ptx2.m425
-rw-r--r--contrib/sendmail/cf/ostype/qnx.m421
-rw-r--r--contrib/sendmail/cf/ostype/riscos4.5.m421
-rw-r--r--contrib/sendmail/cf/ostype/sco-uw-2.1.m4 (renamed from usr.sbin/sendmail/cf/ostype/sco-uw-2.1.m4)11
-rw-r--r--contrib/sendmail/cf/ostype/sco3.2.m424
-rw-r--r--contrib/sendmail/cf/ostype/sinix.m421
-rw-r--r--contrib/sendmail/cf/ostype/solaris2.m425
-rw-r--r--contrib/sendmail/cf/ostype/solaris2.ml.m430
-rw-r--r--contrib/sendmail/cf/ostype/sunos3.5.m417
-rw-r--r--contrib/sendmail/cf/ostype/sunos4.1.m417
-rw-r--r--contrib/sendmail/cf/ostype/svr4.m424
-rw-r--r--contrib/sendmail/cf/ostype/ultrix4.m417
-rw-r--r--contrib/sendmail/cf/ostype/unknown.m419
-rw-r--r--contrib/sendmail/cf/ostype/uxpds.m428
-rw-r--r--contrib/sendmail/cf/sh/makeinfo.sh57
-rw-r--r--contrib/sendmail/cf/siteconfig/uucp.cogsci.m46
-rw-r--r--contrib/sendmail/cf/siteconfig/uucp.old.arpa.m44
-rw-r--r--contrib/sendmail/cf/siteconfig/uucp.ucbarpa.m41
-rw-r--r--contrib/sendmail/cf/siteconfig/uucp.ucbvax.m473
-rw-r--r--contrib/sendmail/contrib/README10
-rw-r--r--contrib/sendmail/contrib/bitdomain.c (renamed from usr.sbin/sendmail/contrib/bitdomain.c)0
-rw-r--r--contrib/sendmail/contrib/bsdi.mc (renamed from usr.sbin/sendmail/contrib/bsdi.mc)0
-rw-r--r--contrib/sendmail/contrib/converting.sun.configs446
-rw-r--r--contrib/sendmail/contrib/doublebounce.pl232
-rwxr-xr-xcontrib/sendmail/contrib/etrn.pl (renamed from usr.sbin/sendmail/contrib/etrn.pl)0
-rwxr-xr-xcontrib/sendmail/contrib/expn.pl (renamed from usr.sbin/sendmail/contrib/expn.pl)0
-rw-r--r--contrib/sendmail/contrib/mail.local.linux205
-rw-r--r--contrib/sendmail/contrib/mailprio (renamed from usr.sbin/sendmail/contrib/mailprio)0
-rw-r--r--contrib/sendmail/contrib/mh.patch193
-rw-r--r--contrib/sendmail/contrib/mmuegel2079
-rw-r--r--contrib/sendmail/contrib/oldbind.compat.c79
-rwxr-xr-x[-rw-r--r--]contrib/sendmail/contrib/passwd-to-alias.pl (renamed from usr.sbin/sendmail/contrib/passwd-to-alias.pl)0
-rw-r--r--contrib/sendmail/contrib/re-mqueue.pl (renamed from usr.sbin/sendmail/contrib/re-mqueue.pl)0
-rw-r--r--contrib/sendmail/contrib/rmail.oldsys.patch (renamed from usr.sbin/sendmail/contrib/rmail.oldsys.patch)0
-rw-r--r--contrib/sendmail/doc/changes/Makefile13
-rw-r--r--contrib/sendmail/doc/changes/changes.me (renamed from usr.sbin/sendmail/doc/changes/changes.me)34
-rw-r--r--contrib/sendmail/doc/intro/Makefile13
-rw-r--r--contrib/sendmail/doc/intro/intro.me1456
-rw-r--r--contrib/sendmail/doc/op/Makefile13
-rw-r--r--contrib/sendmail/doc/op/op.me (renamed from usr.sbin/sendmail/doc/op/op.me)1505
-rw-r--r--contrib/sendmail/doc/usenix/Makefile12
-rw-r--r--contrib/sendmail/doc/usenix/usenix.me1076
-rwxr-xr-xcontrib/sendmail/mail.local/Build513
-rw-r--r--contrib/sendmail/mail.local/Makefile.m4106
-rw-r--r--contrib/sendmail/mail.local/README12
-rw-r--r--contrib/sendmail/mail.local/mail.local.892
-rw-r--r--contrib/sendmail/mail.local/mail.local.c (renamed from usr.sbin/sendmail/mail.local/mail.local.c)611
-rw-r--r--contrib/sendmail/mail.local/pathnames.h15
-rwxr-xr-xcontrib/sendmail/mailstats/Build513
-rw-r--r--contrib/sendmail/mailstats/Makefile.m497
-rw-r--r--contrib/sendmail/mailstats/mailstats.8 (renamed from usr.sbin/sendmail/mailstats/mailstats.8)10
-rw-r--r--contrib/sendmail/mailstats/mailstats.c (renamed from usr.sbin/sendmail/mailstats/mailstats.c)103
-rwxr-xr-xcontrib/sendmail/makemap/Build513
-rw-r--r--contrib/sendmail/makemap/Makefile.m4110
-rw-r--r--contrib/sendmail/makemap/makemap.8 (renamed from usr.sbin/sendmail/makemap/makemap.8)43
-rw-r--r--contrib/sendmail/makemap/makemap.c (renamed from usr.sbin/sendmail/makemap/makemap.c)362
-rwxr-xr-xcontrib/sendmail/praliases/Build513
-rw-r--r--contrib/sendmail/praliases/Makefile.m4104
-rw-r--r--contrib/sendmail/praliases/praliases.8 (renamed from usr.sbin/sendmail/praliases/praliases.8)10
-rw-r--r--contrib/sendmail/praliases/praliases.c209
-rwxr-xr-xcontrib/sendmail/rmail/Build513
-rw-r--r--contrib/sendmail/rmail/Makefile.m4105
-rw-r--r--contrib/sendmail/rmail/rmail.849
-rw-r--r--contrib/sendmail/rmail/rmail.c (renamed from usr.sbin/sendmail/rmail/rmail.c)143
-rwxr-xr-xcontrib/sendmail/smrsh/Build513
-rw-r--r--contrib/sendmail/smrsh/Makefile.m496
-rw-r--r--contrib/sendmail/smrsh/README (renamed from usr.sbin/sendmail/smrsh/README)0
-rw-r--r--contrib/sendmail/smrsh/smrsh.8 (renamed from usr.sbin/sendmail/smrsh/smrsh.8)34
-rw-r--r--contrib/sendmail/smrsh/smrsh.c (renamed from usr.sbin/sendmail/smrsh/smrsh.c)35
-rwxr-xr-xcontrib/sendmail/src/Build513
-rw-r--r--contrib/sendmail/src/Makefile.m4149
-rw-r--r--contrib/sendmail/src/README (renamed from usr.sbin/sendmail/src/READ_ME)523
-rw-r--r--contrib/sendmail/src/TRACEFLAGS (renamed from usr.sbin/sendmail/src/TRACEFLAGS)2
-rw-r--r--contrib/sendmail/src/alias.c (renamed from usr.sbin/sendmail/src/alias.c)109
-rw-r--r--contrib/sendmail/src/aliases53
-rw-r--r--contrib/sendmail/src/aliases.585
-rw-r--r--contrib/sendmail/src/arpadate.c (renamed from usr.sbin/sendmail/src/arpadate.c)34
-rw-r--r--contrib/sendmail/src/cdefs.h123
-rw-r--r--contrib/sendmail/src/clock.c (renamed from usr.sbin/sendmail/src/clock.c)46
-rw-r--r--contrib/sendmail/src/collect.c (renamed from usr.sbin/sendmail/src/collect.c)97
-rw-r--r--contrib/sendmail/src/conf.c (renamed from usr.sbin/sendmail/src/conf.c)823
-rw-r--r--contrib/sendmail/src/conf.h (renamed from usr.sbin/sendmail/src/conf.h)219
-rw-r--r--contrib/sendmail/src/convtime.c (renamed from usr.sbin/sendmail/src/convtime.c)34
-rw-r--r--contrib/sendmail/src/daemon.c (renamed from usr.sbin/sendmail/src/daemon.c)155
-rw-r--r--contrib/sendmail/src/deliver.c (renamed from usr.sbin/sendmail/src/deliver.c)460
-rw-r--r--contrib/sendmail/src/domain.c (renamed from usr.sbin/sendmail/src/domain.c)76
-rw-r--r--contrib/sendmail/src/envelope.c (renamed from usr.sbin/sendmail/src/envelope.c)49
-rw-r--r--contrib/sendmail/src/err.c (renamed from usr.sbin/sendmail/src/err.c)59
-rw-r--r--contrib/sendmail/src/headers.c (renamed from usr.sbin/sendmail/src/headers.c)75
-rw-r--r--contrib/sendmail/src/ldap_map.h (renamed from usr.sbin/sendmail/src/ldap_map.h)13
-rw-r--r--contrib/sendmail/src/macro.c (renamed from usr.sbin/sendmail/src/macro.c)38
-rw-r--r--contrib/sendmail/src/mailq.167
-rw-r--r--contrib/sendmail/src/mailstats.h34
-rw-r--r--contrib/sendmail/src/main.c (renamed from usr.sbin/sendmail/src/main.c)299
-rwxr-xr-xcontrib/sendmail/src/makesendmail513
-rw-r--r--contrib/sendmail/src/map.c (renamed from usr.sbin/sendmail/src/map.c)940
-rw-r--r--contrib/sendmail/src/mci.c (renamed from usr.sbin/sendmail/src/mci.c)111
-rw-r--r--contrib/sendmail/src/mime.c (renamed from usr.sbin/sendmail/src/mime.c)56
-rw-r--r--contrib/sendmail/src/newaliases.147
-rw-r--r--contrib/sendmail/src/parseaddr.c (renamed from usr.sbin/sendmail/src/parseaddr.c)197
-rw-r--r--contrib/sendmail/src/pathnames.h32
-rw-r--r--contrib/sendmail/src/queue.c (renamed from usr.sbin/sendmail/src/queue.c)216
-rw-r--r--contrib/sendmail/src/readcf.c (renamed from usr.sbin/sendmail/src/readcf.c)277
-rw-r--r--contrib/sendmail/src/recipient.c (renamed from usr.sbin/sendmail/src/recipient.c)158
-rw-r--r--contrib/sendmail/src/safefile.c (renamed from usr.sbin/sendmail/src/safefile.c)173
-rw-r--r--contrib/sendmail/src/savemail.c (renamed from usr.sbin/sendmail/src/savemail.c)73
-rw-r--r--contrib/sendmail/src/sendmail.8 (renamed from usr.sbin/sendmail/src/sendmail.8)45
-rw-r--r--contrib/sendmail/src/sendmail.h (renamed from usr.sbin/sendmail/src/sendmail.h)176
-rw-r--r--contrib/sendmail/src/sendmail.hf (renamed from usr.sbin/sendmail/src/sendmail.hf)10
-rw-r--r--contrib/sendmail/src/snprintf.c428
-rw-r--r--contrib/sendmail/src/srvrsmtp.c (renamed from usr.sbin/sendmail/src/srvrsmtp.c)116
-rw-r--r--contrib/sendmail/src/stab.c (renamed from usr.sbin/sendmail/src/stab.c)36
-rw-r--r--contrib/sendmail/src/stats.c135
-rw-r--r--contrib/sendmail/src/sysexits.c (renamed from usr.sbin/sendmail/src/sysexits.c)36
-rw-r--r--contrib/sendmail/src/trace.c111
-rw-r--r--contrib/sendmail/src/udb.c (renamed from usr.sbin/sendmail/src/udb.c)196
-rw-r--r--contrib/sendmail/src/useful.h58
-rw-r--r--contrib/sendmail/src/usersmtp.c (renamed from usr.sbin/sendmail/src/usersmtp.c)103
-rw-r--r--contrib/sendmail/src/util.c (renamed from usr.sbin/sendmail/src/util.c)273
-rw-r--r--contrib/sendmail/src/version.c17
-rw-r--r--contrib/sendmail/test/Results (renamed from usr.sbin/sendmail/test/Results)0
-rw-r--r--contrib/sendmail/test/t_exclopen.c (renamed from usr.sbin/sendmail/test/t_exclopen.c)0
-rw-r--r--contrib/sendmail/test/t_pathconf.c (renamed from usr.sbin/sendmail/test/t_pathconf.c)0
-rw-r--r--contrib/sendmail/test/t_seteuid.c (renamed from usr.sbin/sendmail/test/t_seteuid.c)0
-rw-r--r--contrib/sendmail/test/t_setreuid.c (renamed from usr.sbin/sendmail/test/t_setreuid.c)0
-rw-r--r--usr.sbin/sendmail/FAQ11
-rw-r--r--usr.sbin/sendmail/Makefile55
-rw-r--r--usr.sbin/sendmail/cf/cf/Makefile.dist108
-rw-r--r--usr.sbin/sendmail/cf/cf/chez.cs.mc55
-rw-r--r--usr.sbin/sendmail/cf/cf/clientproto.mc55
-rw-r--r--usr.sbin/sendmail/cf/cf/cs-hpux10.mc52
-rw-r--r--usr.sbin/sendmail/cf/cf/cs-hpux9.mc52
-rw-r--r--usr.sbin/sendmail/cf/cf/cs-osf1.mc51
-rw-r--r--usr.sbin/sendmail/cf/cf/cs-solaris2.mc51
-rw-r--r--usr.sbin/sendmail/cf/cf/cs-sunos4.1.mc51
-rw-r--r--usr.sbin/sendmail/cf/cf/cs-ultrix4.mc51
-rw-r--r--usr.sbin/sendmail/cf/cf/generic-bsd4.4.mc49
-rw-r--r--usr.sbin/sendmail/cf/cf/generic-hpux10.mc48
-rw-r--r--usr.sbin/sendmail/cf/cf/generic-hpux9.mc48
-rw-r--r--usr.sbin/sendmail/cf/cf/generic-nextstep3.3.mc48
-rw-r--r--usr.sbin/sendmail/cf/cf/generic-osf1.mc48
-rw-r--r--usr.sbin/sendmail/cf/cf/generic-solaris2.mc48
-rw-r--r--usr.sbin/sendmail/cf/cf/generic-sunos4.1.mc48
-rw-r--r--usr.sbin/sendmail/cf/cf/generic-ultrix4.mc48
-rw-r--r--usr.sbin/sendmail/cf/cf/huginn.cs.mc64
-rw-r--r--usr.sbin/sendmail/cf/cf/knecht.mc144
-rw-r--r--usr.sbin/sendmail/cf/cf/mail.cs.mc65
-rw-r--r--usr.sbin/sendmail/cf/cf/mail.eecs.mc65
-rw-r--r--usr.sbin/sendmail/cf/cf/mailspool.cs.mc58
-rw-r--r--usr.sbin/sendmail/cf/cf/python.cs.mc63
-rw-r--r--usr.sbin/sendmail/cf/cf/s2k-osf1.mc51
-rw-r--r--usr.sbin/sendmail/cf/cf/s2k-ultrix4.mc51
-rw-r--r--usr.sbin/sendmail/cf/cf/tcpproto.mc54
-rw-r--r--usr.sbin/sendmail/cf/cf/ucbarpa.mc51
-rw-r--r--usr.sbin/sendmail/cf/cf/uucpproto.mc54
-rw-r--r--usr.sbin/sendmail/cf/cf/vangogh.cs.mc54
-rw-r--r--usr.sbin/sendmail/cf/domain/Berkeley.EDU.m445
-rw-r--r--usr.sbin/sendmail/cf/domain/CS.Berkeley.EDU.m440
-rw-r--r--usr.sbin/sendmail/cf/domain/EECS.Berkeley.EDU.m438
-rw-r--r--usr.sbin/sendmail/cf/domain/S2K.Berkeley.EDU.m438
-rw-r--r--usr.sbin/sendmail/cf/domain/berkeley-only.m440
-rw-r--r--usr.sbin/sendmail/cf/domain/generic.m447
-rw-r--r--usr.sbin/sendmail/cf/feature/bestmx_is_local.m466
-rw-r--r--usr.sbin/sendmail/cf/feature/genericstable.m440
-rw-r--r--usr.sbin/sendmail/cf/feature/limited_masquerade.m440
-rw-r--r--usr.sbin/sendmail/cf/feature/local_procmail.m447
-rw-r--r--usr.sbin/sendmail/cf/feature/masquerade_entire_domain.m440
-rw-r--r--usr.sbin/sendmail/cf/feature/masquerade_envelope.m440
-rw-r--r--usr.sbin/sendmail/cf/feature/notsticky.m442
-rw-r--r--usr.sbin/sendmail/cf/feature/nullclient.m472
-rw-r--r--usr.sbin/sendmail/cf/feature/redirect.m450
-rw-r--r--usr.sbin/sendmail/cf/feature/smrsh.m442
-rw-r--r--usr.sbin/sendmail/cf/feature/stickyhost.m440
-rw-r--r--usr.sbin/sendmail/cf/feature/use_ct_file.m446
-rw-r--r--usr.sbin/sendmail/cf/feature/virtusertable.m440
-rw-r--r--usr.sbin/sendmail/cf/m4/cf.m450
-rw-r--r--usr.sbin/sendmail/cf/m4/version.m439
-rw-r--r--usr.sbin/sendmail/cf/mailer/fax.m457
-rw-r--r--usr.sbin/sendmail/cf/mailer/local.m494
-rw-r--r--usr.sbin/sendmail/cf/mailer/phquery.m451
-rw-r--r--usr.sbin/sendmail/cf/mailer/pop.m453
-rw-r--r--usr.sbin/sendmail/cf/mailer/procmail.m454
-rw-r--r--usr.sbin/sendmail/cf/mailer/usenet.m448
-rw-r--r--usr.sbin/sendmail/cf/ostype/aix2.m441
-rw-r--r--usr.sbin/sendmail/cf/ostype/aix3.m441
-rw-r--r--usr.sbin/sendmail/cf/ostype/aix4.m441
-rw-r--r--usr.sbin/sendmail/cf/ostype/altos.m449
-rw-r--r--usr.sbin/sendmail/cf/ostype/amdahl-uts.m444
-rw-r--r--usr.sbin/sendmail/cf/ostype/aux.m443
-rw-r--r--usr.sbin/sendmail/cf/ostype/bsd4.3.m439
-rw-r--r--usr.sbin/sendmail/cf/ostype/bsd4.4.m442
-rw-r--r--usr.sbin/sendmail/cf/ostype/bsdi1.0.m438
-rw-r--r--usr.sbin/sendmail/cf/ostype/bsdi2.0.m438
-rw-r--r--usr.sbin/sendmail/cf/ostype/dgux.m441
-rw-r--r--usr.sbin/sendmail/cf/ostype/domainos.m442
-rw-r--r--usr.sbin/sendmail/cf/ostype/dynix3.2.m439
-rw-r--r--usr.sbin/sendmail/cf/ostype/gnuhurd.m441
-rw-r--r--usr.sbin/sendmail/cf/ostype/hpux10.m451
-rw-r--r--usr.sbin/sendmail/cf/ostype/hpux9.m449
-rw-r--r--usr.sbin/sendmail/cf/ostype/irix4.m441
-rw-r--r--usr.sbin/sendmail/cf/ostype/irix5.m461
-rw-r--r--usr.sbin/sendmail/cf/ostype/irix6.m461
-rw-r--r--usr.sbin/sendmail/cf/ostype/isc4.1.m448
-rw-r--r--usr.sbin/sendmail/cf/ostype/maxion.m450
-rw-r--r--usr.sbin/sendmail/cf/ostype/mklinux.m444
-rw-r--r--usr.sbin/sendmail/cf/ostype/nextstep.m445
-rw-r--r--usr.sbin/sendmail/cf/ostype/osf1.m440
-rw-r--r--usr.sbin/sendmail/cf/ostype/powerux.m446
-rw-r--r--usr.sbin/sendmail/cf/ostype/ptx2.m446
-rw-r--r--usr.sbin/sendmail/cf/ostype/riscos4.5.m442
-rw-r--r--usr.sbin/sendmail/cf/ostype/sco3.2.m445
-rw-r--r--usr.sbin/sendmail/cf/ostype/sinix.m442
-rw-r--r--usr.sbin/sendmail/cf/ostype/solaris2.m446
-rw-r--r--usr.sbin/sendmail/cf/ostype/solaris2.ml.m451
-rw-r--r--usr.sbin/sendmail/cf/ostype/svr4.m445
-rw-r--r--usr.sbin/sendmail/cf/ostype/ultrix4.m437
-rw-r--r--usr.sbin/sendmail/cf/ostype/unknown.m441
-rw-r--r--usr.sbin/sendmail/cf/ostype/uxpds.m449
-rw-r--r--usr.sbin/sendmail/cf/sh/makeinfo.sh79
-rw-r--r--usr.sbin/sendmail/doc/changes/changes.ps1092
-rw-r--r--usr.sbin/sendmail/doc/op/op.ps5944
-rw-r--r--usr.sbin/sendmail/mail.local/Makefile9
-rw-r--r--usr.sbin/sendmail/mail.local/mail.local.8105
-rw-r--r--usr.sbin/sendmail/mail.local/pathnames.h37
-rw-r--r--usr.sbin/sendmail/mailstats/Makefile8
-rw-r--r--usr.sbin/sendmail/makemap/Makefile13
-rw-r--r--usr.sbin/sendmail/praliases/Makefile9
-rw-r--r--usr.sbin/sendmail/praliases/praliases.c138
-rw-r--r--usr.sbin/sendmail/rmail/Makefile6
-rw-r--r--usr.sbin/sendmail/rmail/rmail.871
-rw-r--r--usr.sbin/sendmail/smrsh/Makefile8
-rw-r--r--usr.sbin/sendmail/src/Makefile47
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.386BSD43
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.A-UX113
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.AIX116
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.Altos109
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.BSD-OS37
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.BSD43128
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.CLIX119
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.CSOS114
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.ConvexOS110
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.Dell117
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.DomainOS128
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.Dynix118
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.EWS-UX_V132
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.FreeBSD50
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.HP-UX114
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.HP-UX.10.x114
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.IRIX113
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.IRIX.5.x115
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.IRIX64114
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.ISC108
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.KSR112
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.LUNA147
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.Linux134
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.Mach386112
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.NCR3000113
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.NEWS-OS.4.x110
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.NEWS-OS.6.x133
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.NEXTSTEP128
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.NeXT122
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.NetBSD47
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.NonStop-UX116
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.OSF1118
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.PTX117
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.Paragon114
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.RISCos122
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.SCO109
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.SCO.3.2v4.2109
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.SVR4117
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.Solaris124
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.SunOS116
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.4.0118
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.1124
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.2124
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.3122
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.4122
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.5122
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.Titan119
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.ULTRIX117
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.UMAX119
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.UNICOS117
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.UNIX_SV.4.x.i386118
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.UX4800129
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.UXPDS130
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.Utah41
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.dgux108
-rw-r--r--usr.sbin/sendmail/src/Makefiles/Makefile.uts.systemV189
-rw-r--r--usr.sbin/sendmail/src/aliases.5107
-rw-r--r--usr.sbin/sendmail/src/mailq.189
-rw-r--r--usr.sbin/sendmail/src/makesendmail331
-rw-r--r--usr.sbin/sendmail/src/newaliases.169
-rw-r--r--usr.sbin/sendmail/src/pathnames.h54
-rw-r--r--usr.sbin/sendmail/src/stats.c131
-rw-r--r--usr.sbin/sendmail/src/sysexits.h118
-rw-r--r--usr.sbin/sendmail/src/trace.c133
-rw-r--r--usr.sbin/sendmail/src/useful.h80
-rw-r--r--usr.sbin/sendmail/src/version.c39
514 files changed, 25139 insertions, 23854 deletions
diff --git a/contrib/sendmail/BuildTools/M4/depend/BSD.m4 b/contrib/sendmail/BuildTools/M4/depend/BSD.m4
new file mode 100644
index 000000000000..661f69ec12ec
--- /dev/null
+++ b/contrib/sendmail/BuildTools/M4/depend/BSD.m4
@@ -0,0 +1,8 @@
+# @(#)BSD.m4 8.3 (Berkeley) 2/9/98
+depend: ${BEFORE}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ mkdep -a -f Makefile ${COPTS} *.c
+
+# End of BSD.m4
diff --git a/contrib/sendmail/BuildTools/M4/depend/CC-M.m4 b/contrib/sendmail/BuildTools/M4/depend/CC-M.m4
new file mode 100644
index 000000000000..01d82662b1bc
--- /dev/null
+++ b/contrib/sendmail/BuildTools/M4/depend/CC-M.m4
@@ -0,0 +1,8 @@
+# @(#)CC-M.m4 8.2 (Berkeley) 2/19/98
+depend: ${BEFORE}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ ${CC} -M ${COPTS} *.c >> Makefile
+
+# End of CC-M.m4
diff --git a/contrib/sendmail/BuildTools/M4/depend/NCR.m4 b/contrib/sendmail/BuildTools/M4/depend/NCR.m4
new file mode 100644
index 000000000000..03e0c10dd387
--- /dev/null
+++ b/contrib/sendmail/BuildTools/M4/depend/NCR.m4
@@ -0,0 +1,8 @@
+# @(#)NCR.m4 8.3 (Berkeley) 2/19/98
+depend: ${BEFORE}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ ${CC} -w0 -Hmake ${COPTS} *.c >> Makefile
+
+# End of NCR.m4
diff --git a/contrib/sendmail/BuildTools/M4/depend/Solaris.m4 b/contrib/sendmail/BuildTools/M4/depend/Solaris.m4
new file mode 100644
index 000000000000..cbdc618abfc8
--- /dev/null
+++ b/contrib/sendmail/BuildTools/M4/depend/Solaris.m4
@@ -0,0 +1,8 @@
+# @(#)Solaris.m4 8.1 (Berkeley) 3/5/98
+depend: ${BEFORE}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ ${CC} -xM ${COPTS} *.c >> Makefile
+
+# End of Solaris.m4
diff --git a/contrib/sendmail/BuildTools/M4/depend/X11.m4 b/contrib/sendmail/BuildTools/M4/depend/X11.m4
new file mode 100644
index 000000000000..27f90361f4c3
--- /dev/null
+++ b/contrib/sendmail/BuildTools/M4/depend/X11.m4
@@ -0,0 +1,5 @@
+# @(#)X11.m4 8.1 (Berkeley) 4/8/98
+depend: ${BEFORE}
+ makedepend -- ${COPTS} -- *.c
+
+# End of X11.m4
diff --git a/contrib/sendmail/BuildTools/M4/depend/generic.m4 b/contrib/sendmail/BuildTools/M4/depend/generic.m4
new file mode 100644
index 000000000000..e7452d9e3297
--- /dev/null
+++ b/contrib/sendmail/BuildTools/M4/depend/generic.m4
@@ -0,0 +1,8 @@
+# @(#)generic.m4 8.2 (Berkeley) 2/9/98
+# dependencies
+# gross overkill, and yet still not quite enough....
+${OBJS}: ${SRCDIR}/sendmail.h ${SRCDIR}/conf.h
+
+# give a null "depend" list so that the startup script will work
+depend:
+# End of generic.m4
diff --git a/contrib/sendmail/BuildTools/M4/header.m4 b/contrib/sendmail/BuildTools/M4/header.m4
new file mode 100644
index 000000000000..df216bb96714
--- /dev/null
+++ b/contrib/sendmail/BuildTools/M4/header.m4
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# @(#)header.m4 8.14 (Berkeley) 5/19/98
+#
+changecom(^A)
+undefine(`format')
+undefine(`hpux')
+ifdef(`pushdef', `',
+ `errprint(`You need a newer version of M4, at least as new as
+System V or GNU')
+ include(NoSuchFile)')
+define(`confABI', `')
+define(`confCC', `cc')
+define(`confSHELL', `/bin/sh')
+define(`confBEFORE', `')
+define(`confLIBDIRS', `')
+define(`confINCDIRS', `')
+define(`confLIBSEARCH', `db bind resolv 44bsd')
+define(`confSITECONFIG', `site.config')
+define(`confBUILDBIN', `../../BuildTools/bin')
+define(`PUSHDIVERT', `pushdef(`__D__', divnum)divert($1)')
+define(`POPDIVERT', `divert(__D__)popdef(`__D__')')
+define(`APPENDDEF', `define(`$1', ifdef(`$1', `$1 $2', `$2'))')
+define(`PREPENDDEF', `define(`$1', ifdef(`$1', `$2 $1', `$2'))')
diff --git a/contrib/sendmail/BuildTools/OS/386BSD b/contrib/sendmail/BuildTools/OS/386BSD
new file mode 100644
index 000000000000..34af745c8a57
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/386BSD
@@ -0,0 +1,7 @@
+# @(#)386BSD 8.1 (Berkeley) 1/30/98
+define(`confENVDEF', ` -DMIME')
+define(`confLIBS', `-lutil')
+define(`confLINKS', `/usr/sbin/sendmail /usr/bin/newaliases \
+ /usr/sbin/sendmail /usr/bin/mailq \
+ /usr/sbin/sendmail /usr/bin/hoststat \
+ /usr/sbin/sendmail /usr/bin/purgestat')
diff --git a/contrib/sendmail/BuildTools/OS/A-UX b/contrib/sendmail/BuildTools/OS/A-UX
new file mode 100644
index 000000000000..782106d7e155
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/A-UX
@@ -0,0 +1,11 @@
+# @(#)A-UX 8.4 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-D_POSIX_SOURCE ')
+define(`confLIBS', `-ldbm -lposix -lUTIL')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
diff --git a/contrib/sendmail/BuildTools/OS/AIX b/contrib/sendmail/BuildTools/OS/AIX
new file mode 100644
index 000000000000..ebf1f123262a
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/AIX
@@ -0,0 +1,10 @@
+# @(#)AIX 8.6 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-D_AIX3 ')
+define(`confOPTIMIZE', `-g')
+define(`confLIBS', `-ldbm')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/contrib/sendmail/BuildTools/OS/AIX.2 b/contrib/sendmail/BuildTools/OS/AIX.2
new file mode 100644
index 000000000000..3838e893631a
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/AIX.2
@@ -0,0 +1,18 @@
+# @(#)AIX.2 8.8 (Berkeley) 3/12/98
+PUSHDIVERT(1)
+SMROOT= /usr/local/newmail
+POPDIVERT
+define(`confMAPDEF', `-DNIS')
+define(`confENVDEF', `-DBSD -DBSD_INCLUDES -DBSD_REMAP_SIGNAL_TO_SIGVEC \
+ -D_PATH_SENDMAILCF=\"${SMROOT}/sendmail.cf\"\
+ -D_PATH_SENDMAILPID=\"${SMROOT}/sendmail.pid\"')
+define(`confOPTIMIZE', `-g')
+define(`confINCDIRS', `-I/u/markw/src/db.1.85/PORT/aixrt/include -I/u/markw/src/db.1.85/PORT/aixrt -I/fs/work/src/bind/include')
+define(`confLIBS', `-lbsd /u/markw/src/db.1.85/PORT/aixrt/libdb.a /usr/local/lib/libgldavg.a /fs/work/src/bind/res/libresolv.a')
+define(`confMBINDIR', `${SMROOT}/bin')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confSTDIR', `${SMROOT}')
+define(`confHFDIR', `${SMROOT}')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/contrib/sendmail/BuildTools/OS/AIX.4.2 b/contrib/sendmail/BuildTools/OS/AIX.4.2
new file mode 100644
index 000000000000..e302f5a11369
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/AIX.4.2
@@ -0,0 +1,11 @@
+# @(#)AIX.4.2 8.5 (Berkeley) 3/14/98
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX4=40200 ')
+define(`confOPTIMIZE', `-O3')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/AIX.4.3 b/contrib/sendmail/BuildTools/OS/AIX.4.3
new file mode 100644
index 000000000000..75a4272f04b0
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/AIX.4.3
@@ -0,0 +1,12 @@
+# @(#)AIX.4.3 8.4 (Berkeley) 3/14/98
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX4=40300 ')
+define(`confOPTIMIZE', `-O3')
+define(`confCC', `/usr/bin/xlc')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/AIX.4.x b/contrib/sendmail/BuildTools/OS/AIX.4.x
new file mode 100644
index 000000000000..f08bfcb4a357
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/AIX.4.x
@@ -0,0 +1,10 @@
+# @(#)AIX.4.x 8.7 (Berkeley) 3/14/98
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX4 ')
+define(`confOPTIMIZE', `-O3')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
diff --git a/contrib/sendmail/BuildTools/OS/Altos b/contrib/sendmail/BuildTools/OS/Altos
new file mode 100644
index 000000000000..9c1f301d18d0
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/Altos
@@ -0,0 +1,12 @@
+# @(#)Altos 8.6 (Berkeley) 2/19/98
+define(`confCC', `gcc')
+define(`confENVDEF', `-DALTOS_SYSTEM_V ')
+define(`confLIBS', `-lsocket -lrpc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/BSD-OS b/contrib/sendmail/BuildTools/OS/BSD-OS
new file mode 100644
index 000000000000..58586dd596f3
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/BSD-OS
@@ -0,0 +1,8 @@
+# @(#)BSD-OS 8.8 (Berkeley) 6/3/98
+define(`confMAPDEF', `-DNEWDB -DMAP_REGEX')
+define(`confENVDEF', `-DNETISO')
+define(`confLIBS', `-lutil -lkvm')
+define(`confOPTIMIZE', `-O2')
+define(`confMAN1EXT', `0')
+define(`confMAN5EXT', `0')
+define(`confMAN8EXT', `0')
diff --git a/contrib/sendmail/BuildTools/OS/BSD43 b/contrib/sendmail/BuildTools/OS/BSD43
new file mode 100644
index 000000000000..1bbccea2c7fa
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/BSD43
@@ -0,0 +1,21 @@
+# @(#)BSD43 8.5 (Berkeley) 3/12/98
+define(`confBEFORE', `unistd.h stddef.h stdlib.h dirent.h sys/time.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DoldBSD43 ')
+define(`confLIBS', `-ldbm -ll')
+define(`confUBINDIR', `/usr/ucb')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+unistd.h stddef.h stdlib.h sys/time.h:
+ cp /dev/null $@
+
+sys/time.h: sys
+
+sys:
+ mkdir sys
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/CLIX b/contrib/sendmail/BuildTools/OS/CLIX
new file mode 100644
index 000000000000..69f422965bbd
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/CLIX
@@ -0,0 +1,14 @@
+# @(#)CLIX 8.8 (Berkeley) 3/12/98
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DCLIX ')
+define(`confINCDIRS', `-I/usr/include')
+define(`confLIBS', `-lnsl -lbsd')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `cp')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/CRAYT3E.2.0.x b/contrib/sendmail/BuildTools/OS/CRAYT3E.2.0.x
new file mode 100644
index 000000000000..6f5abb5de390
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/CRAYT3E.2.0.x
@@ -0,0 +1,11 @@
+# @(#)CRAYT3E.2.0.x 8.1 (Berkeley) 4/21/98
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DUNICOS ')
+define(`confOPTIMIZE', `-O')
+define(`confINSTALL', `cpset')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bin')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', ` //usr/spool/mqueue')
+define(`confHFDIR', ` /usr/lib')
diff --git a/contrib/sendmail/BuildTools/OS/CSOS b/contrib/sendmail/BuildTools/OS/CSOS
new file mode 100644
index 000000000000..3a995c9496f2
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/CSOS
@@ -0,0 +1,9 @@
+# @(#)CSOS 8.5 (Berkeley) 2/8/98
+define(`confLIBS', `-lnet')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/ucb')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/contrib/sendmail/BuildTools/OS/ConvexOS b/contrib/sendmail/BuildTools/OS/ConvexOS
new file mode 100644
index 000000000000..8ea990c6e664
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/ConvexOS
@@ -0,0 +1,11 @@
+# @(#)ConvexOS 8.6 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DYPCOMPAT -DNIS')
+define(`confENVDEF', `-D__STDC__ -d non_int_bit_field')
+define(`confOPTIMIZE', `-g')
+define(`confLIBS', `-lshare')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
diff --git a/contrib/sendmail/BuildTools/OS/Dell b/contrib/sendmail/BuildTools/OS/Dell
new file mode 100644
index 000000000000..2b9c1ea44a1f
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/Dell
@@ -0,0 +1,15 @@
+# @(#)Dell 8.8 (Berkeley) 3/12/98
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-D__svr4__ ')
+define(`confOPTIMIZE', `-O2')
+define(`confLIBS', `-ldbm -lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucblib')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/DomainOS b/contrib/sendmail/BuildTools/OS/DomainOS
new file mode 100644
index 000000000000..ee6be2726b81
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/DomainOS
@@ -0,0 +1,18 @@
+# @(#)DomainOS 8.6 (Berkeley) 6/24/98
+define(`confCC', `cc -A nansi -A,systype,any -A,runtype,bsd4.3')
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confSBINDIR', `/usr/etc')
+define(`confMBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/DomainOS.10.4 b/contrib/sendmail/BuildTools/OS/DomainOS.10.4
new file mode 100644
index 000000000000..a92051b6befd
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/DomainOS.10.4
@@ -0,0 +1,15 @@
+# @(#)DomainOS.10.4 8.1 (Berkeley) 6/24/98
+define(`confCC', `cc -A nansi -A,systype,any -A,runtype,bsd4.3')
+define(`confBEFORE', `dirent.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confSBINDIR', `/usr/etc')
+define(`confMBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/Dynix b/contrib/sendmail/BuildTools/OS/Dynix
new file mode 100644
index 000000000000..2781e49d1c1e
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/Dynix
@@ -0,0 +1,13 @@
+# @(#)Dynix 8.7 (Berkeley) 2/26/98
+define(`confCC', `gcc')
+define(`confOPTIMIZE', `-O -g')
+define(`confLIBS', `-lseq')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `staff # no kmem group,')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confOBJADD', `strtol.o')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/EWS-UX_V b/contrib/sendmail/BuildTools/OS/EWS-UX_V
new file mode 100644
index 000000000000..bf11275a2cd1
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/EWS-UX_V
@@ -0,0 +1,29 @@
+# @(#)EWS-UX_V 8.6 (Berkeley) 3/12/98
+define(`confCC', `/usr/abiccs/bin/cc -KOlimit=900')
+define(`confBEFORE', `sysexits.h ndbm.h ndbm.o')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-Dnec_ews_svr4 ')
+define(`confLIBS', `ndbm.o -lsocket -lnsl -lelf # # with NDBM')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var/ucblib')
+define(`confHFDIR', `/var/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+PUSHDIVERT(3)
+sysexits.h:
+ echo '#ifndef _LOCAL_SYSEXITS_H_' > sysexits.h;
+ echo '#define _LOCAL_SYSEXITS_H_' >> sysexits.h;
+ cat /usr/abiccs/ucbinclude/sysexits.h >> sysexits.h;
+ echo '#endif /* _LOCAL_SYSEXITS_H_ */' >> sysexits.h;
+# ln -s /usr/abiccs/ucbinclude/sysexits.h .
+
+ndbm.h:
+ ln -s /usr/abiccs/ucbinclude/ndbm.h .
+
+ndbm.o:
+ ar x /usr/abiccs/ucblib/libucb.a ndbm.o
+# ar x /usr/ucblib/libucb.a ndbm.o
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/FreeBSD b/contrib/sendmail/BuildTools/OS/FreeBSD
new file mode 100644
index 000000000000..bec2c599060b
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/FreeBSD
@@ -0,0 +1,3 @@
+# @(#)FreeBSD 8.5 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confLIBS', `-lutil')
diff --git a/contrib/sendmail/BuildTools/OS/HP-UX b/contrib/sendmail/BuildTools/OS/HP-UX
new file mode 100644
index 000000000000..66d71a45eed0
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/HP-UX
@@ -0,0 +1,12 @@
+# @(#)HP-UX 8.9 (Berkeley) 3/14/98
+define(`confCC', `cc -Aa -D_HPUX_SOURCE')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confOPTIMIZE', `+O1')
+define(`confLIBS', `-lndbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/contrib/sendmail/BuildTools/OS/HP-UX.10.x b/contrib/sendmail/BuildTools/OS/HP-UX.10.x
new file mode 100644
index 000000000000..a4b3a816048f
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/HP-UX.10.x
@@ -0,0 +1,11 @@
+# @(#)HP-UX.10.x 8.10 (Berkeley) 3/21/98
+define(`confCC', `cc -Aa -D_HPUX_SOURCE')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DV4FS ')
+define(`confOPTIMIZE', `+O3')
+define(`confLIBS', `-lndbm')
+define(`confSHELL', `/usr/bin/sh')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/usr/share/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confSBINGRP', `mail')
diff --git a/contrib/sendmail/BuildTools/OS/HP-UX.11.x b/contrib/sendmail/BuildTools/OS/HP-UX.11.x
new file mode 100644
index 000000000000..9e13c58e979a
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/HP-UX.11.x
@@ -0,0 +1,11 @@
+# @(#)HP-UX.11.x 8.7 (Berkeley) 3/30/98
+define(`confCC', `cc -Ae')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DV4FS -DHPUX11 ')
+define(`confOPTIMIZE', `+O3')
+define(`confLIBS', `-ldbm -lnsl')
+define(`confSHELL', `/usr/bin/sh')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/usr/share/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confSBINGRP', `mail')
diff --git a/contrib/sendmail/BuildTools/OS/IRIX b/contrib/sendmail/BuildTools/OS/IRIX
new file mode 100644
index 000000000000..dafbda6a5fb6
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/IRIX
@@ -0,0 +1,13 @@
+# @(#)IRIX 8.7 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DIRIX ')
+define(`confLIBS', `-lmld -lmalloc -lsun')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/IRIX.5.x b/contrib/sendmail/BuildTools/OS/IRIX.5.x
new file mode 100644
index 000000000000..4ac44c29aea1
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/IRIX.5.x
@@ -0,0 +1,13 @@
+# @(#)IRIX.5.x 8.7 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DIRIX5 ')
+define(`confLIBS', `-lmld -lmalloc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confHFDIR', `/etc')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/IRIX.6.5 b/contrib/sendmail/BuildTools/OS/IRIX.6.5
new file mode 100644
index 000000000000..3056ff449128
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/IRIX.6.5
@@ -0,0 +1,35 @@
+# @(#)IRIX.6.5 8.2 (Berkeley) 4/24/98
+PUSHDIVERT(1)
+# Select what ABI we are using -- see abi(5) for details
+# -32 ~ IRIX 5.3 (default: -mips2)
+# - long and pointer are 32 bit
+# -n32 New to IRIX 6.2 (default: -mips3)
+# - long and pointer are 32 bit
+# -64 ~ IRIX 6.1 (default: -mips4)
+# - long and pointer are 64 bit
+# We force ABI here, so then it does not depend on CPU
+#
+# With IDO 6.2 (IRIX 6.2) you need subsystem compiler_dev.sw32.lib
+# for compilation with ABI=-n32 -- alternatively you can set ABI=-32
+# ABI=-64 requires subsystem compiler_dev.sw64.lib, but this runs
+# only with IRIX64 (ie. 64 bit kernels)
+#
+# NOTE: Do not set `confABI' in a site configuration file! The ABI MUST
+# be given on the Build command line using the -E parameter, e.g.:
+#
+# Build -E ABI=-n32
+#
+ABI= confABI
+POPDIVERT
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DIRIX6 -DHASSNPRINTF=1 ${ABI} ')
+define(`confLDOPTS', `${ABI}')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confHFDIR', `/etc')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/IRIX.6.x b/contrib/sendmail/BuildTools/OS/IRIX.6.x
new file mode 100644
index 000000000000..c52fd4ea41dc
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/IRIX.6.x
@@ -0,0 +1,35 @@
+# @(#)IRIX.6.x 8.11 (Berkeley) 4/24/98
+PUSHDIVERT(1)
+# Select what ABI we are using -- see abi(5) for details
+# -32 ~ IRIX 5.3 (default: -mips2)
+# - long and pointer are 32 bit
+# -n32 New to IRIX 6.2 (default: -mips3)
+# - long and pointer are 32 bit
+# -64 ~ IRIX 6.1 (default: -mips4)
+# - long and pointer are 64 bit
+# We force ABI here, so then it does not depend on CPU
+#
+# With IDO 6.2 (IRIX 6.2) you need subsystem compiler_dev.sw32.lib
+# for compilation with ABI=-n32 -- alternatively you can set ABI=-32
+# ABI=-64 requires subsystem compiler_dev.sw64.lib, but this runs
+# only with IRIX64 (ie. 64 bit kernels)
+#
+# NOTE: Do not set `confABI' in a site configuration file! The ABI MUST
+# be given on the Build command line using the -E parameter, e.g.:
+#
+# Build -E ABI=-n32
+#
+ABI= confABI
+POPDIVERT
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DIRIX6 ${ABI} ')
+define(`confLDOPTS', `${ABI}')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confHFDIR', `/etc')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/IRIX64.6.0 b/contrib/sendmail/BuildTools/OS/IRIX64.6.0
new file mode 100644
index 000000000000..5226bb535c52
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/IRIX64.6.0
@@ -0,0 +1,34 @@
+# @(#)IRIX64.6.0 8.10 (Berkeley) 3/12/98
+PUSHDIVERT(1)
+# Select what ABI we are using -- see abi(5) for details
+# -32 ~ IRIX 5.3 (default: -mips2)
+# - long and pointer are 32 bit
+# -64 ~ IRIX 6.1 (default: -mips4)
+# - long and pointer are 64 bit
+# We force ABI here, so then it does not depend on CPU
+#
+# With IDO 6.2 (IRIX 6.2) you need subsystem compiler_dev.sw32.lib
+# for compilation with ABI=-n32 -- alternatively you can set ABI=-32
+# ABI=-64 requires subsystem compiler_dev.sw64.lib, but this runs
+# only with IRIX64 (ie. 64 bit kernels)
+#
+# NOTE: Do not set `confABI' in a site configuration file! The ABI MUST
+# be given on the Build command line using the -E parameter, e.g.:
+#
+# Build -E ABI=-32
+#
+ABI= confABI
+POPDIVERT
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DIRIX64 ${ABI} ')
+define(`confLDOPTS', `${ABI}')
+define(`confLIBS', `-lelf -lmalloc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/IRIX64.6.1 b/contrib/sendmail/BuildTools/OS/IRIX64.6.1
new file mode 100644
index 000000000000..4876a8807a47
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/IRIX64.6.1
@@ -0,0 +1,34 @@
+# @(#)IRIX64.6.1 8.10 (Berkeley) 3/12/98
+PUSHDIVERT(1)
+# Select what ABI we are using -- see abi(5) for details
+# -32 ~ IRIX 5.3 (default: -mips2)
+# - long and pointer are 32 bit
+# -64 ~ IRIX 6.1 (default: -mips4)
+# - long and pointer are 64 bit
+# We force ABI here, so then it does not depend on CPU
+#
+# With IDO 6.2 (IRIX 6.2) you need subsystem compiler_dev.sw32.lib
+# for compilation with ABI=-n32 -- alternatively you can set ABI=-32
+# ABI=-64 requires subsystem compiler_dev.sw64.lib, but this runs
+# only with IRIX64 (ie. 64 bit kernels)
+#
+# NOTE: Do not set `confABI' in a site configuration file! The ABI MUST
+# be given on the Build command line using the -E parameter, e.g.:
+#
+# Build -E ABI=-32
+#
+ABI= confABI
+POPDIVERT
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DIRIX64 ${ABI} ')
+define(`confLDOPTS', `${ABI}')
+define(`confLIBS', `-lelf -lmalloc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/IRIX64.6.x b/contrib/sendmail/BuildTools/OS/IRIX64.6.x
new file mode 100644
index 000000000000..503df04b42c6
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/IRIX64.6.x
@@ -0,0 +1,35 @@
+# @(#)IRIX64.6.x 8.11 (Berkeley) 4/24/98
+PUSHDIVERT(1)
+# Select what ABI we are using -- see abi(5) for details
+# -32 ~ IRIX 5.3 (default: -mips2)
+# - long and pointer are 32 bit
+# -n32 New to IRIX 6.2 (default: -mips3)
+# - long and pointer are 32 bit
+# -64 ~ IRIX 6.1 (default: -mips4)
+# - long and pointer are 64 bit
+# We force ABI here, so then it does not depend on CPU
+#
+# With IDO 6.2 (IRIX 6.2) you need subsystem compiler_dev.sw32.lib
+# for compilation with ABI=-n32 -- alternatively you can set ABI=-32
+# ABI=-64 requires subsystem compiler_dev.sw64.lib, but this runs
+# only with IRIX64 (ie. 64 bit kernels)
+#
+# NOTE: Do not set `confABI' in a site configuration file! The ABI MUST
+# be given on the Build command line using the -E parameter, e.g.:
+#
+# Build -E ABI=-n32
+#
+ABI= confABI
+POPDIVERT
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DIRIX6 ${ABI} ')
+define(`confLDOPTS', `${ABI}')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confHFDIR', `/etc')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/ISC b/contrib/sendmail/BuildTools/OS/ISC
new file mode 100644
index 000000000000..f07093f660b0
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/ISC
@@ -0,0 +1,10 @@
+# @(#)ISC 8.5 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DISC_UNIX -D_POSIX_SOURCE -D_SYSV3 ')
+define(`confLIBS', `-lyp -lrpc -lndbm -linet -lcposix')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/spool/log')
+define(`confHFDIR', `/usr/lib')
diff --git a/contrib/sendmail/BuildTools/OS/KSR b/contrib/sendmail/BuildTools/OS/KSR
new file mode 100644
index 000000000000..d3931a464051
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/KSR
@@ -0,0 +1,7 @@
+# @(#)KSR 8.4 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLIBDIRS', `-L/usr/shlib -L/usr/lib')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/var/adm/sendmail')
+define(`confHFDIR', `/usr/share/lib')
+define(`confINSTALL', `installbsd')
diff --git a/contrib/sendmail/BuildTools/OS/LUNA b/contrib/sendmail/BuildTools/OS/LUNA
new file mode 100644
index 000000000000..2a0fe1d78c22
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/LUNA
@@ -0,0 +1,46 @@
+# @(#)LUNA 8.8 (Berkeley) 3/12/98
+define(`confBEFORE', `dirent.h stddef.h stdlib.h unistd.h limits.h time.h sys/time.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+
+stddef.h unistd.h limits.h:
+ if [ -f /usr/include/$@ ]; then \
+ ln -s /usr/include/$@ .; \
+ else \
+ cp /dev/null $@; \
+ fi
+
+stdlib.h:
+ if [ -f /usr/include/stdlib.h ]; then \
+ ln -s /usr/include/stdlib.h .; \
+ else \
+ if [ -f /usr/include/libc.h ]; then \
+ ln -s /usr/include/libc.h stdlib.h; \
+ else \
+ cp /dev/null stdlib.h; \
+ fi; \
+ fi
+
+# just for UNIOS-B
+time.h:
+ echo "#ifndef _LOCAL_TIME_H_" > time.h
+ echo "#define _LOCAL_TIME_H_" >> time.h
+ cat /usr/include/time.h >> time.h
+ echo "#endif" >> time.h
+
+sys/time.h:
+ -mkdir sys
+ echo "#ifndef _LOCAL_SYS_TIME_H_" > sys/time.h
+ echo "#define _LOCAL_SYS_TIME_H_" >> sys/time.h
+ cat /usr/include/sys/time.h >> sys/time.h
+ echo "#endif" >> sys/time.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/Linux b/contrib/sendmail/BuildTools/OS/Linux
new file mode 100644
index 000000000000..e908c478a944
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/Linux
@@ -0,0 +1,5 @@
+# @(#)Linux 8.4 (Berkeley) 3/22/98
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confMANROOT', `/usr/man/man')
diff --git a/contrib/sendmail/BuildTools/OS/Linux.ppc b/contrib/sendmail/BuildTools/OS/Linux.ppc
new file mode 100644
index 000000000000..d2c3cafa7ca7
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/Linux.ppc
@@ -0,0 +1,3 @@
+# @(#)Linux.ppc 8.3 (Berkeley) 2/12/98
+define(`confHFDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
diff --git a/contrib/sendmail/BuildTools/OS/Mach386 b/contrib/sendmail/BuildTools/OS/Mach386
new file mode 100644
index 000000000000..981478120463
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/Mach386
@@ -0,0 +1,11 @@
+# @(#)Mach386 8.6 (Berkeley) 3/12/98
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/NCR.MP-RAS.2.x b/contrib/sendmail/BuildTools/OS/NCR.MP-RAS.2.x
new file mode 100644
index 000000000000..74d733401675
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/NCR.MP-RAS.2.x
@@ -0,0 +1,15 @@
+# @(#)NCR.MP-RAS.2.x 8.9 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DNCR_MP_RAS2 ')
+define(`confOPTIMIZE', `-O2')
+define(`confINCDIRS', `-I/usr/include -I/usr/ucbinclude')
+define(`confLIBDIRS', `-L/usr/ucblib')
+define(`confLIBS', `-lnsl -lnet -lsocket -lelf -lc -lucb')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSTDIR', `/var/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `NCR')
diff --git a/contrib/sendmail/BuildTools/OS/NCR.MP-RAS.3.x b/contrib/sendmail/BuildTools/OS/NCR.MP-RAS.3.x
new file mode 100644
index 000000000000..14e02e3ab05c
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/NCR.MP-RAS.3.x
@@ -0,0 +1,15 @@
+# @(#)NCR.MP-RAS.3.x 8.9 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DNCR_MP_RAS3 ')
+define(`confOPTIMIZE', `-O2')
+define(`confINCDIRS', `-I/usr/include -I/usr/ucbinclude')
+define(`confLIBDIRS', `-L/usr/ucblib')
+define(`confLIBS', `-lsocket -lnsl -lelf -lc -lucb')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSTDIR', `/var/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `NCR')
diff --git a/contrib/sendmail/BuildTools/OS/NEWS-OS.4.x b/contrib/sendmail/BuildTools/OS/NEWS-OS.4.x
new file mode 100644
index 000000000000..4fa83bbb7c45
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/NEWS-OS.4.x
@@ -0,0 +1,14 @@
+# @(#)NEWS-OS.4.x 8.6 (Berkeley) 3/12/98
+define(`confBEFORE', `limits.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confLIBS', `-lmld')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+limits.h:
+ touch limits.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/NEWS-OS.6.x b/contrib/sendmail/BuildTools/OS/NEWS-OS.6.x
new file mode 100644
index 000000000000..dec79b5e9ec2
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/NEWS-OS.6.x
@@ -0,0 +1,28 @@
+# @(#)NEWS-OS.6.x 8.8 (Berkeley) 3/12/98
+define(`confCC', `/bin/cc')
+define(`confBEFORE', `sysexits.h ndbm.o')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DSYSLOG_BUFSIZE=256 # -DSPT_TYPE=SPT_NONE ')
+define(`confLIBS', `ndbm.o -lelf -lsocket -lnsl # # with NDBM')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `/usr/ucb/install')
+PUSHDIVERT(3)
+sysexits.h:
+ ln -s /usr/ucbinclude/sysexits.h .
+
+ndbm.o:
+ if [ ! -f /usr/include/ndbm.h ]; then \
+ ln -s /usr/ucbinclude/ndbm.h .; \
+ fi; \
+ if [ -f /usr/lib/libndbm.a ]; then \
+ ar x /usr/lib/libndbm.a ndbm.o; \
+ else \
+ ar x /usr/ucblib/libucb.a ndbm.o; \
+ fi;
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/NEXTSTEP.4.x b/contrib/sendmail/BuildTools/OS/NEXTSTEP.4.x
new file mode 100644
index 000000000000..4fd6b0386089
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/NEXTSTEP.4.x
@@ -0,0 +1,28 @@
+# @(#)NEXTSTEP.4.x 8.1 (Berkeley) 3/21/98
+PUSHDIVERT(1)
+# NEXTSTEP 3.1 and 3.2 only support m68k and i386
+#ARCH= -arch m68k -arch i386 -arch hppa -arch sparc
+#ARCH= -arch m68k -arch i386
+#ARCH= ${RC_CFLAGS}
+# For new sendmail Makefile structure, this must go in the ENVDEF and LDOPTS
+POPDIVERT
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
+define(`confENVDEF', `-DNeXT -Wno-precomp -pipe ${RC_CFLAGS}')
+define(`confLDOPTS', `${RC_CFLAGS}')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/etc/sendmail')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/NeXT.2.x b/contrib/sendmail/BuildTools/OS/NeXT.2.x
new file mode 100644
index 000000000000..d8f469495045
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/NeXT.2.x
@@ -0,0 +1,20 @@
+# @(#)NeXT.2.x 8.7 (Berkeley) 3/12/98
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
+define(`confENVDEF', `-DNeXT ')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/etc/sendmail')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/NeXT.3.x b/contrib/sendmail/BuildTools/OS/NeXT.3.x
new file mode 100644
index 000000000000..05aad6f85a51
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/NeXT.3.x
@@ -0,0 +1,28 @@
+# @(#)NeXT.3.x 8.7 (Berkeley) 3/12/98
+PUSHDIVERT(1)
+# NEXTSTEP 3.1 and 3.2 only support m68k and i386
+#ARCH= -arch m68k -arch i386 -arch hppa -arch sparc
+#ARCH= -arch m68k -arch i386
+#ARCH= ${RC_CFLAGS}
+# For new sendmail Makefile structure, this must go in the ENVDEF and LDOPTS
+POPDIVERT
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
+define(`confENVDEF', `-DNeXT -Wno-precomp -pipe ${RC_CFLAGS}')
+define(`confLDOPTS', `${RC_CFLAGS}')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/etc/sendmail')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/NeXT.4.x b/contrib/sendmail/BuildTools/OS/NeXT.4.x
new file mode 100644
index 000000000000..35f3bdb35e51
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/NeXT.4.x
@@ -0,0 +1,29 @@
+# @(#)NeXT.4.x 8.8 (Berkeley) 5/25/98
+PUSHDIVERT(1)
+# NEXTSTEP 3.1 and 3.2 only support m68k and i386
+#ARCH= -arch m68k -arch i386 -arch hppa -arch sparc
+#ARCH= -arch m68k -arch i386
+#ARCH= ${RC_CFLAGS}
+# For new sendmail Makefile structure, this must go in the ENVDEF and LDOPTS
+POPDIVERT
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
+define(`confENVDEF', `-DNeXT -Wno-precomp -pipe ${RC_CFLAGS}')
+define(`confLDOPTS', `${RC_CFLAGS}')
+define(`confLIBS', `-ldbm')
+define(`confMANROOT', `/usr/lib/man/cat')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/etc/sendmail')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/NetBSD b/contrib/sendmail/BuildTools/OS/NetBSD
new file mode 100644
index 000000000000..595fd2df289d
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/NetBSD
@@ -0,0 +1,4 @@
+# @(#)NetBSD 8.6 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', ` -DNETISO')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/NetBSD.8.3 b/contrib/sendmail/BuildTools/OS/NetBSD.8.3
new file mode 100644
index 000000000000..6576660f44e8
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/NetBSD.8.3
@@ -0,0 +1,3 @@
+# @(#)NetBSD.8.3 8.6 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', ` # -DNETISO')
diff --git a/contrib/sendmail/BuildTools/OS/NonStop-UX b/contrib/sendmail/BuildTools/OS/NonStop-UX
new file mode 100644
index 000000000000..02bdb7801d4d
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/NonStop-UX
@@ -0,0 +1,16 @@
+# @(#)NonStop-UX 8.8 (Berkeley) 3/12/98
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DNonStop_UX_BXX -D_SVID ')
+define(`confINCDIRS', `-I/usr/include -I/usr/ucbinclude')
+define(`confLIBDIRS', `-L/usr/ucblib')
+define(`confLIBS', `-lsocket -lnsl -lelf -lucb')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/OSF1 b/contrib/sendmail/BuildTools/OS/OSF1
new file mode 100644
index 000000000000..cc65dbc7844d
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/OSF1
@@ -0,0 +1,9 @@
+# @(#)OSF1 8.7 (Berkeley) 3/14/98
+define(`confCC', `cc -Olimit 1000')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/var/adm/sendmail')
+define(`confHFDIR', `/usr/share/lib')
+define(`confINSTALL', `installbsd')
+define(`confUBINDIR', `${BINDIR}')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/OpenBSD b/contrib/sendmail/BuildTools/OS/OpenBSD
new file mode 100644
index 000000000000..fb7bc8f42c36
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/OpenBSD
@@ -0,0 +1,3 @@
+# @(#)OpenBSD 8.5 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', ` -DNETISO')
diff --git a/contrib/sendmail/BuildTools/OS/PTX b/contrib/sendmail/BuildTools/OS/PTX
new file mode 100644
index 000000000000..9af372792a8a
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/PTX
@@ -0,0 +1,10 @@
+# @(#)PTX 8.6 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM')
+define(`confOPTIMIZE', `-g')
+define(`confLIBS', `-lsocket -linet -lelf -lnsl -lseq')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
diff --git a/contrib/sendmail/BuildTools/OS/Paragon b/contrib/sendmail/BuildTools/OS/Paragon
new file mode 100644
index 000000000000..e16e051f734a
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/Paragon
@@ -0,0 +1,8 @@
+# @(#)Paragon 8.3 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM')
+define(`confLIBDIRS', `-L/usr/shlib -L/usr/lib')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/var/adm/sendmail')
+define(`confHFDIR', `/usr/share/lib')
+define(`confINSTALL', `installbsd')
+define(`confUBINDIR', `${BINDIR}')
diff --git a/contrib/sendmail/BuildTools/OS/PowerUX b/contrib/sendmail/BuildTools/OS/PowerUX
new file mode 100644
index 000000000000..b0f133d0a8c7
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/PowerUX
@@ -0,0 +1,9 @@
+# @(#)PowerUX 8.5 (Berkeley) 2/12/98
+define(`confENVDEF', `-D__svr4__ ')
+define(`confLIBS', `-Bstatic -lsocket -lnsl -lelf -lgen')
+define(`confMBINDIR', `/usr/local/etc')
+define(`confSBINDIR', `/usr/local/etc')
+define(`confUBINDIR', `/usr/local/bin')
+define(`confEBINDIR', `/usr/local/lib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/contrib/sendmail/BuildTools/OS/QNX b/contrib/sendmail/BuildTools/OS/QNX
new file mode 100644
index 000000000000..3cc01821afc8
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/QNX
@@ -0,0 +1,15 @@
+# @(#)QNX 8.4 (Berkeley) 2/19/98
+PUSHDIVERT(1)
+#
+# For this Makefile to work you must compile and install the libdb package
+# and then change DBMINC and DBMLIB as appropriate.
+#
+DBMINC= /usr/local/include
+DBMLIB= /usr/local/lib
+POPDIVERT
+define(`confENVDEF', `-Osax -w4 -zc -fr= -D__BIT_TYPES_DEFINED__')
+define(`confINCDIRS', `${DBMINC}')
+define(`confLIBDIRS', `${DBMLIB}')
+define(`confLIBS', `-lsocket')
+define(`confLDOPTS', `-M -N256k')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/contrib/sendmail/BuildTools/OS/RISCos b/contrib/sendmail/BuildTools/OS/RISCos
new file mode 100644
index 000000000000..1888ae691616
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/RISCos
@@ -0,0 +1,25 @@
+# @(#)RISCos 8.5 (Berkeley) 3/12/98
+define(`confCC', `cc -systype bsd43 -Olimit 900')
+define(`confBEFORE', `stdlib.h dirent.h unistd.h stddef.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DRISCOS ')
+define(`confLIBS', `-lmld')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `/usr/bsd43/bin/install')
+PUSHDIVERT(3)
+stdlib.h stddef.h:
+ cp /dev/null $@
+
+unistd.h:
+ echo "typedef unsigned short mode_t;" > unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/RISCos.4_0 b/contrib/sendmail/BuildTools/OS/RISCos.4_0
new file mode 100644
index 000000000000..e057fb433cfe
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/RISCos.4_0
@@ -0,0 +1,25 @@
+# @(#)RISCos.4_0 8.6 (Berkeley) 3/12/98
+define(`confCC', `cc -systype bsd43 -Olimit 900')
+define(`confBEFORE', `stdlib.h dirent.h unistd.h stddef.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DRISCOS -DRISCOS_4_0 ')
+define(`confLIBS', `-lmld')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+stdlib.h stddef.h:
+ cp /dev/null $@
+
+unistd.h:
+ echo "typedef unsigned short mode_t;" > unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/SCO b/contrib/sendmail/BuildTools/OS/SCO
new file mode 100644
index 000000000000..a72ba53eebe4
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SCO
@@ -0,0 +1,9 @@
+# @(#)SCO 8.3 (Berkeley) 2/8/98
+define(`confENVDEF', `-D_SCO_unix_ ')
+define(`confLIBS', `-lsocket -lprot_s -lx -lc_s')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
diff --git a/contrib/sendmail/BuildTools/OS/SCO.4.2 b/contrib/sendmail/BuildTools/OS/SCO.4.2
new file mode 100644
index 000000000000..027f7300667a
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SCO.4.2
@@ -0,0 +1,11 @@
+# @(#)SCO.4.2 8.5 (Berkeley) 6/30/98
+define(`confENVDEF', `-D_SCO_unix_4_2 ')
+define(`confLIBS', `-lsocket -lndbm -lprot_s -lx -lc_s')
+define(`confMAPDEF', `-DNDBM')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `bin')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/contrib/sendmail/BuildTools/OS/SCO.5.x b/contrib/sendmail/BuildTools/OS/SCO.5.x
new file mode 100644
index 000000000000..8f095ac5aed3
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SCO.5.x
@@ -0,0 +1,10 @@
+# @(#)SCO.5.x 8.10 (Berkeley) 6/30/98
+define(`confCC', `cc -b elf')
+define(`confLIBS', `-lsocket -lndbm -lprot -lcurses -lm -lx -lgen')
+define(`confMAPDEF', `-DMAP_REGEX -DNDBM')
+define(`confSBINGRP', `bin')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bin')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
diff --git a/contrib/sendmail/BuildTools/OS/SINIX b/contrib/sendmail/BuildTools/OS/SINIX
new file mode 100644
index 000000000000..93cc78135012
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SINIX
@@ -0,0 +1,12 @@
+# @(#)SINIX 8.5 (Berkeley) 2/12/98
+define(`confCC', `/usr/bin/cc')
+define(`confENVDEF', `-D__svr4__ ')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/contrib/sendmail/BuildTools/OS/SVR4 b/contrib/sendmail/BuildTools/OS/SVR4
new file mode 100644
index 000000000000..f342c3feeb3e
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SVR4
@@ -0,0 +1,14 @@
+# @(#)SVR4 8.6 (Berkeley) 3/12/98
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-D__svr4__ ')
+define(`confLIBS', `-ldbm -lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/SunOS b/contrib/sendmail/BuildTools/OS/SunOS
new file mode 100644
index 000000000000..2a8897825acf
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SunOS
@@ -0,0 +1,10 @@
+# @(#)SunOS 8.6 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLDOPTS', `-Bstatic')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/SunOS.4.0 b/contrib/sendmail/BuildTools/OS/SunOS.4.0
new file mode 100644
index 000000000000..05bbc57d5049
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SunOS.4.0
@@ -0,0 +1,15 @@
+# @(#)SunOS.4.0 8.6 (Berkeley) 3/12/98
+define(`confBEFORE', `stdlib.h stddef.h limits.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DSUNOS403 ')
+define(`confLDOPTS', `-Bstatic')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+stddef.h stdlib.h limits.h:
+ cp /dev/null $@
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/SunOS.5.1 b/contrib/sendmail/BuildTools/OS/SunOS.5.1
new file mode 100644
index 000000000000..2383609ef14a
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SunOS.5.1
@@ -0,0 +1,22 @@
+# @(#)SunOS.5.1 8.8 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DSOLARIS=20100 ')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/ucbinclude/sysexits.h ]; \
+ then \
+ ln -s /usr/ucbinclude/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/SunOS.5.2 b/contrib/sendmail/BuildTools/OS/SunOS.5.2
new file mode 100644
index 000000000000..5e635db694e2
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SunOS.5.2
@@ -0,0 +1,22 @@
+# @(#)SunOS.5.2 8.8 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DSOLARIS=20100 ')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/ucbinclude/sysexits.h ]; \
+ then \
+ ln -s /usr/ucbinclude/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/SunOS.5.3 b/contrib/sendmail/BuildTools/OS/SunOS.5.3
new file mode 100644
index 000000000000..8f64d219b7be
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SunOS.5.3
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.3 8.8 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS')
+define(`confENVDEF', `-DSOLARIS=20300 ')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/ucbinclude/sysexits.h ]; \
+ then \
+ ln -s /usr/ucbinclude/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/SunOS.5.4 b/contrib/sendmail/BuildTools/OS/SunOS.5.4
new file mode 100644
index 000000000000..65e84002c7b7
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SunOS.5.4
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.4 8.10 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS')
+define(`confENVDEF', `-DSOLARIS=20400 ')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/SunOS.5.5 b/contrib/sendmail/BuildTools/OS/SunOS.5.5
new file mode 100644
index 000000000000..267f16d22a1b
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SunOS.5.5
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.5 8.11 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=20500 ')
+define(`confLIBS', `-lsocket -lnsl -lkstat')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/SunOS.5.6 b/contrib/sendmail/BuildTools/OS/SunOS.5.6
new file mode 100644
index 000000000000..0537007008d1
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SunOS.5.6
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.6 8.10 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=20600 ')
+define(`confLIBS', `-lsocket -lnsl -lkstat')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/SunOS.5.7 b/contrib/sendmail/BuildTools/OS/SunOS.5.7
new file mode 100644
index 000000000000..b030e77c6506
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/SunOS.5.7
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.7 8.11 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=20700 ')
+define(`confLIBS', `-lsocket -lnsl')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/Titan b/contrib/sendmail/BuildTools/OS/Titan
new file mode 100644
index 000000000000..b66820089fd1
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/Titan
@@ -0,0 +1,13 @@
+# @(#)Titan 8.5 (Berkeley) 3/12/98
+define(`confCC', `cc -43')
+define(`confBEFORE', `stddef.h stdlib.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+PUSHDIVERT(3)
+stddef.h stdlib.h:
+ cp /dev/null $@
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/ULTRIX b/contrib/sendmail/BuildTools/OS/ULTRIX
new file mode 100644
index 000000000000..f5df633e52ef
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/ULTRIX
@@ -0,0 +1,10 @@
+# @(#)ULTRIX 8.7 (Berkeley) 3/12/98
+define(`confCC', `cc -Olimit 950')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DIDENTPROTO=0 ')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/UMAX b/contrib/sendmail/BuildTools/OS/UMAX
new file mode 100644
index 000000000000..450c91da7500
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/UMAX
@@ -0,0 +1,15 @@
+# @(#)UMAX 8.5 (Berkeley) 3/12/98
+define(`confBEFORE', `stddef.h')
+define(`confMAPDEF', `-DNIS')
+define(`confENVDEF', `-DUMAXV ')
+define(`confLIBS', `-lyp -lrpc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+stddef.h:
+ echo "#define _STDDEF_H" > stddef.h
+ chmod 444 stddef.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/UNICOS b/contrib/sendmail/BuildTools/OS/UNICOS
new file mode 100644
index 000000000000..7984fa927c95
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/UNICOS
@@ -0,0 +1,9 @@
+# @(#)UNICOS 8.7 (Berkeley) 2/26/98
+define(`confENVDEF', `-DUNICOS ')
+define(`confOPTIMIZE', `-O')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', ` /etc/mail')
+define(`confHFDIR', ` /etc/mail')
diff --git a/contrib/sendmail/BuildTools/OS/UNIX_SV.4.x.i386 b/contrib/sendmail/BuildTools/OS/UNIX_SV.4.x.i386
new file mode 100644
index 000000000000..a6865e786aed
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/UNIX_SV.4.x.i386
@@ -0,0 +1,14 @@
+# @(#)UNIX_SV.4.x.i386 8.6 (Berkeley) 3/12/98
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-D__svr4__ -DUNIXWARE ')
+define(`confLIBS', `-lc -ldbm -lsocket -lnsl -lgen -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/contrib/sendmail/BuildTools/OS/UX4800 b/contrib/sendmail/BuildTools/OS/UX4800
new file mode 100644
index 000000000000..207b370baa0c
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/UX4800
@@ -0,0 +1,24 @@
+# @(#)UX4800 8.8 (Berkeley) 3/12/98
+define(`confCC', `/usr/abiccs/bin/cc -KOlimit=900')
+define(`confBEFORE', `sysexits.h ndbm.h')
+define(`confMAPDEF', `-DNDBM -DNIS # without NEWDB')
+define(`confENVDEF', `-DHASSNPRINTF=1 ')
+define(`confLIBS', `-lsocket -lnsl -lelf # # without NEWDB')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var/ucblib')
+define(`confHFDIR', `/var/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+PUSHDIVERT(3)
+sysexits.h:
+ echo '#ifndef _LOCAL_SYSEXITS_H_' > sysexits.h;
+ echo '#define _LOCAL_SYSEXITS_H_' >> sysexits.h;
+ cat /usr/abiccs/ucbinclude/sysexits.h >> sysexits.h;
+ echo '#endif /* _LOCAL_SYSEXITS_H_ */' >> sysexits.h;
+
+ndbm.h:
+ sed 's/void/char/' /usr/abiccs/include/ndbm.h > ndbm.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/UXPDS.V10 b/contrib/sendmail/BuildTools/OS/UXPDS.V10
new file mode 100644
index 000000000000..bf3014034378
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/UXPDS.V10
@@ -0,0 +1,15 @@
+# @(#)UXPDS.V10 8.9 (Berkeley) 3/12/98
+define(`confCC', `/usr/ccs/bin/cc')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DUXPDS=10 ')
+define(`confINCDIRS', `-I/usr/include -I/usr/ucbinclude')
+define(`confLIBS', `/usr/ucblib/libdbm.a /usr/ucblib/libucb.a -lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confMANROOT', `/usr/local/man/man')
diff --git a/contrib/sendmail/BuildTools/OS/UXPDS.V20 b/contrib/sendmail/BuildTools/OS/UXPDS.V20
new file mode 100644
index 000000000000..cacdb4af68b3
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/UXPDS.V20
@@ -0,0 +1,22 @@
+# @(#)UXPDS.V20 8.8 (Berkeley) 3/12/98
+define(`confCC', `/usr/ccs/bin/cc')
+define(`confBEFORE', `netinet/ip_var.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DUXPDS=20 ')
+define(`confLIBS', `/usr/ucblib/libdbm.a -lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confMANROOT', `/usr/local/man/man')
+PUSHDIVERT(3)
+netinet/ip_var.h: netinet /usr/include/netinet/ip_var.h
+ sed '/ip_var_f.h/d' /usr/include/netinet/ip_var.h > netinet/ip_var.h
+
+netinet:
+ mkdir netinet
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/OS/dcosx.1.x.NILE b/contrib/sendmail/BuildTools/OS/dcosx.1.x.NILE
new file mode 100644
index 000000000000..900afcd632b9
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/dcosx.1.x.NILE
@@ -0,0 +1,6 @@
+# @(#)dcosx.1.x.NILE 8.3 (Berkeley) 2/8/98
+define(`confENVDEF', `-D__svr4__ -DDCOSx ')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confHFDIR', `/usr/share/lib/mail')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confSBINGRP', `sys')
diff --git a/contrib/sendmail/BuildTools/OS/dgux b/contrib/sendmail/BuildTools/OS/dgux
new file mode 100644
index 000000000000..7d6d867b1ec1
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/dgux
@@ -0,0 +1,10 @@
+# @(#)dgux 8.5 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/bin')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `bin')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/etc')
diff --git a/contrib/sendmail/BuildTools/OS/maxion b/contrib/sendmail/BuildTools/OS/maxion
new file mode 100644
index 000000000000..3bb6e0e2e2cd
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/maxion
@@ -0,0 +1,14 @@
+# @(#)maxion 8.6 (Berkeley) 3/12/98
+define(`confCC', `/usr/ucb/cc')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLIBDIRS', `-L/usr/ucblib')
+define(`confLIBS', `-ldbm -lgen -lucb')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINOWN', `smtp')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/var/adm/log')
+define(`confHFDIR', `/etc/ucbmail')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/contrib/sendmail/BuildTools/OS/uts.systemV b/contrib/sendmail/BuildTools/OS/uts.systemV
new file mode 100644
index 000000000000..c5f841fb5ab0
--- /dev/null
+++ b/contrib/sendmail/BuildTools/OS/uts.systemV
@@ -0,0 +1,26 @@
+# @(#)uts.systemV 8.10 (Berkeley) 3/12/98
+PUSHDIVERT(1)
+# Sendmail 8 on UTS requires BIND 4.9's include files and lib44bsd and
+# libresolv libraries. The BIND version on UTS is much too old.
+#
+BINDPATH=../../../bind
+POPDIVERT
+define(`confBEFORE', `stddef.h')
+define(`confMAPDEF', `-DNIS -DNDBM')
+define(`confENVDEF', `-D_UTS ')
+define(`confOPTIMIZE', `-g')
+define(`confINCDIRS', `-I${BINDPATH}/include -I${BINDPATH}/compat/include')
+define(`confLIBDIRS', `-L${BINDPATH}/res -L${BINDPATH}/compat/lib')
+define(`confLIBS', `-lyp -lrpc -lbsd -lsocket -la')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+stddef.h:
+ echo "#include <sys/types.h>" > stddef.h
+POPDIVERT
diff --git a/contrib/sendmail/BuildTools/README b/contrib/sendmail/BuildTools/README
new file mode 100644
index 000000000000..0efc1548b391
--- /dev/null
+++ b/contrib/sendmail/BuildTools/README
@@ -0,0 +1,110 @@
+This directory contains tools. Do not attempt to actually build
+anything in this directory.
+
+The Build script allows you to specify a site configuration file by using
+the -f flag:
+
+ Build -f siteconfig.m4
+
+You can put such site configuration files in the Site sub-directory;
+see Site/README for details.
+
+While building a site configuration file, you can add to a definition
+using the APPENDDEF() and PREPENDDEF() macros. For example:
+
+ APPENDDEF(`confINCDIRS', `-I/usr/local/bind/include')
+
+will add -I/usr/local/bind/include to the already existing confINCDIRS.
+Note: There must be no trailing spaces after the last quote mark and
+before the closing parenthesis. Also you may need to properly quote
+m4 reserved words as specified by your vendor's m4 command.
+
+By default, sendmail will search your system for include and library
+directories as well as certain libraries (libdb.* for Berkeley DB and
+libbind.a or libresolv.* for name resolution). You can turn off this
+configuration step by specifying the -S flag with the Build command.
+
+The OS subtree contains definitions for variations on a standard
+model for system installation. The M4 variables that can be defined
+and their defaults before referencing the appropriate OS definitons
+are:
+
+confBEFORE [empty] Files to create before sendmail is
+ compiled. The methods must be defined
+ in the Makefile using PUSHDIVERT(3).
+confBUILDBIN ../../BuildTools/bin
+ The location of the build support
+ binaries, relative to the obj.*
+ directory.
+confCC cc The C compiler to use.
+confOPTIMIZE -O Flags passed to CC as ${O}.
+confDEPEND_TYPE generic How to build dependencies. This should
+ be the name of a file in
+ BuildTools/M4/depend
+confEBINDIR /usr/libexec The location for binaries executed
+ from other binaries, e.g., mail.local
+ or smrsh.
+confENVDEF [empty] -D flags passed to cc.
+confHFDIR /usr/share/misc Location of the sendmail help file.
+confINCDIRS [empty] -I flags passed to cc.
+confINSTALL install The BSD-compatible install program.
+ Use ${BUILDBIN}/install.sh if none
+ is available on your system.
+confLDOPTS [empty] Linker options passed to ld.
+confLIBDIRS [empty] -L flags passed to ld.
+confLIBS [varies] -l flags passed to ld.
+confLIBSEARCH db bind resolv 44bsd
+ Search for these libraries for
+ linking with programs.
+confLINKS ${UBINDIR}/newaliases ${UBINDIR}/mailq \
+ ${UBINDIR}/hoststat ${UBINDIR}/purgestat
+ Names of links to sendmail.
+confMANROOT /usr/share/man/cat The root of the man subtree.
+confMAN1 confMANROOT 1 The location of man1 files.
+confMAN1EXT 1 The extension on files in confMAN1.
+confMAN1SRC 0 The source for man pages installed
+ in confMAN1.
+confMAN5 confMANROOT 5 The location of man5 files.
+confMAN5EXT 5 The extension on files in confMAN5.
+confMAN5SRC 0 The source for man pages installed
+ in confMAN5.
+confMAN8 confMANROOT 8 The location of man8 files.
+confMAN8EXT 8 The extension on files in confMAN8.
+confMAN8SRC 0 The source for man pages installed
+ in confMAN8.
+confMANDOC -mandoc The macros used to format man pages.
+confMANOWN bin The owner of installed man pages.
+confMANGRP bin The group of installed man pages.
+confMANMODE 444 The mode of installed man pages.
+confMAPDEF [varies] The map definitions, e.g.,
+ -DNDBM -DNEWDB. -DNEWDB is always
+ added if a libdb.a can be found.
+confNO_MAN_INSTALL [undefined] If defined, don't install the man
+ pages by default.
+confMBINDIR /usr/sbin The location of the MTA (sendmail)
+ binary.
+confNROFF groff -Tascii The command to format man pages.
+confOBJADD [empty] Objects that should be included in
+ when linking sendmail and the
+ associated utilities.
+confSBINDIR /usr/sbin The location of root-oriented
+ commands, such as makemap.
+confSBINOWN root The owner for setuid binaries.
+confSBINGRP kmem The group for setuid binaries.
+confSBINMODE 4555 The mode for setuid binaries.
+confSHELL /bin/sh The shell to use inside make.
+confSMOBJADD [empty] Objects that should be included in
+ when linking sendmail.
+confSRCDIR ../../src The sendmail source directory
+ relative to support program obj.*
+ directories.
+confSTDIR /var/log The directory in which to store the
+ sendmail status file.
+confUBINDIR /usr/bin The directory for user-executable
+ binaries.
+confUBINOWN bin The owner for user-executable binaries.
+confUBINGRP bin The group for user-executable binaries.
+confUBINMODE 555 The mode for user-executable binaries.
+
+
+@(#)README 8.22 (Berkeley) 6/30/98
diff --git a/contrib/sendmail/BuildTools/Site/README b/contrib/sendmail/BuildTools/Site/README
new file mode 100644
index 000000000000..d5ecb96001dc
--- /dev/null
+++ b/contrib/sendmail/BuildTools/Site/README
@@ -0,0 +1,16 @@
+The Build script will look for the default site configuration files in
+this directory. Build will include the following files if they are
+present in this directory:
+
+ site.OS.$SENDMAIL_SUFFIX.m4
+ site.OS.m4
+ site.config.m4
+
+OS is the name of the operating system file selected from the BuildTools/OS
+directory. SENDMAIL_SUFFIX is a user environment variable which can be
+used to further distinguish between site configuration files in this
+directory.
+
+See the README in the BuildTools directory for more information.
+
+@(#)README 8.3 (Berkeley) 3/27/98
diff --git a/contrib/sendmail/BuildTools/bin/Build b/contrib/sendmail/BuildTools/bin/Build
new file mode 100755
index 000000000000..ab8a49d78cac
--- /dev/null
+++ b/contrib/sendmail/BuildTools/bin/Build
@@ -0,0 +1,513 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1993, 1996-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)Build 8.93 (Berkeley) 6/24/98
+#
+
+#
+# A quick-and-dirty script to compile sendmail and related programs
+# in the presence of multiple architectures. To use, just use
+# "sh Build".
+#
+
+trap "rm -f $obj/.settings$$; exit" 1 2 3 15
+
+cflag=""
+mflag=""
+sflag=""
+makeargs=""
+libdirs=""
+incdirs=""
+libsrch=""
+siteconfig=""
+EX_USAGE=64
+EX_NOINPUT=66
+EX_UNAVAILABLE=69
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -c) # clean out existing $obj tree
+ cflag=1
+ shift
+ ;;
+
+ -m) # show Makefile name only
+ mflag=1
+ shift
+ ;;
+
+ -E*) # environment variables to pass into Build
+ arg=`echo $1 | sed 's/^-E//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ -z "$arg" ]
+ then
+ echo "Empty -E flag" >&2
+ exit $EX_USAGE
+ else
+ case $arg
+ in
+ *=*) # check format
+ eval $arg
+ export `echo $arg | sed 's;=.*;;'`
+ ;;
+ *) # bad format
+ echo "Bad format for -E argument ($arg)" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ shift
+ fi
+ ;;
+
+ -L*) # set up LIBDIRS
+ libdirs="$libdirs $1"
+ shift
+ ;;
+
+ -I*) # set up INCDIRS
+ incdirs="$incdirs $1"
+ shift
+ ;;
+
+ -f*) # select site config file
+ arg=`echo $1 | sed 's/^-f//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ "$siteconfig" ]
+ then
+ echo "Only one -f flag allowed" >&2
+ exit $EX_USAGE
+ else
+ siteconfig=$arg
+ if [ -z "$siteconfig" ]
+ then
+ echo "Missing argument for -f flag" >&2
+ exit $EX_USAGE
+ elif [ ! -f "$siteconfig" ]
+ then
+ echo "${siteconfig}: File not found"
+ exit $EX_NOINPUT
+ else
+ shift # move past argument
+ fi
+ fi
+ ;;
+
+ -S) # skip auto-configure
+ sflag="-s"
+ shift
+ ;;
+
+ *) # pass argument to make
+ makeargs="$makeargs \"$1\""
+ shift
+ ;;
+ esac
+done
+
+#
+# Do heuristic guesses !ONLY! for machines that do not have uname
+#
+if [ -d /NextApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
+then
+ # probably a NeXT box
+ arch=`hostinfo | sed -n 's/.*Processor type: \([^ ]*\).*/\1/p'`
+ os=NeXT
+ rel=`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`
+elif [ -f /usr/sony/bin/machine -a -f /etc/osversion ]
+then
+ # probably a Sony NEWS 4.x
+ os=NEWS-OS
+ rel=`awk '{ print $3}' /etc/osversion`
+ arch=`/usr/sony/bin/machine`
+elif [ -d /usr/omron -a -f /bin/luna ]
+then
+ # probably a Omron LUNA
+ os=LUNA
+ if [ -f /bin/luna1 ] && /bin/luna1
+ then
+ rel=unios-b
+ arch=luna1
+ elif [ -f /bin/luna2 ] && /bin/luna2
+ then
+ rel=Mach
+ arch=luna2
+ elif [ -f /bin/luna88k ] && /bin/luna88k
+ then
+ rel=Mach
+ arch=luna88k
+ fi
+elif [ -d /usr/apollo -a -d \`node_data ]
+then
+ # probably a Apollo/DOMAIN
+ os=DomainOS
+ arch=$ISP
+ rel=`/usr/apollo/bin/bldt | grep Domain | awk '{ print $4 }' | sed -e 's/,//g'`
+fi
+
+if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
+then
+ arch=`uname -m | sed -e 's/ //g'`
+ os=`uname -s | sed -e 's/\//-/g' -e 's/ //g'`
+ rel=`uname -r | sed -e 's/(/-/g' -e 's/)//g'`
+fi
+
+#
+# Tweak the values we have already got. PLEASE LIMIT THESE to
+# tweaks that are absolutely necessary because your system uname
+# routine doesn't return something sufficiently unique. Don't do
+# it just because you don't like the name that is returned. You
+# can combine the architecture name with the os name to create a
+# unique Makefile name.
+#
+
+# tweak machine architecture
+case $arch
+in
+ sun4*) arch=sun4;;
+
+ 9000/*) arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
+
+ DS/907000) arch=ds90;;
+
+ NILE*) arch=NILE
+ os=`uname -v`;;
+esac
+
+# tweak operating system type and release
+node=`uname -n | sed -e 's/\//-/g' -e 's/ //g'`
+if [ "$os" = "$node" -a "$arch" = "i386" -a "$rel" = 3.2 -a "`uname -v`" = 2 ]
+then
+ # old versions of SCO UNIX set uname -s the same as uname -n
+ os=SCO_SV
+fi
+if [ "$rel" = 4.0 ]
+then
+ case $arch in
+ 3[34]??|3[34]??,*)
+ if [ -d /usr/sadm/sysadm/add-ons/WIN-TCP ]
+ then
+ os=NCR.MP-RAS.2.x
+ elif [ -d /usr/sadm/sysadm/add-ons/inet ]
+ then
+ os=NCR.MP-RAS.3.x
+ fi
+ ;;
+ esac
+fi
+
+case $os
+in
+ DYNIX-ptx) os=PTX;;
+ Paragon*) os=Paragon;;
+ HP-UX) rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
+ AIX) rela=$rel
+ rel=`uname -v`
+ case $rel in
+ 2) arch=""
+ ;;
+ 4) if [ "$rela" = "3" ]
+ then
+ arch=$rela
+ fi
+ ;;
+ esac
+ rel=$rel.$rela
+ ;;
+ BSD-386) os=BSD-OS;;
+ SCO_SV) os=SCO; rel=`uname -X | sed -n 's/Release = 3.2v//p'`;;
+ UNIX_System_V) if [ "$arch" = "ds90" ]
+ then
+ os="UXPDS"
+ rel=`uname -v | sed -e 's/\(V.*\)L.*/\1/'`
+ fi;;
+ SINIX-?) os=SINIX;;
+ DomainOS) case $rel in
+ 10.4*) rel=10.4;;
+ esac
+ ;;
+esac
+
+# get "base part" of operating system release
+rroot=`echo $rel | sed -e 's/\.[^.]*$//'`
+rbase=`echo $rel | sed -e 's/\..*//'`
+if [ "$rroot" = "$rbase" ]
+then
+ rroot=$rel
+fi
+
+# heuristic tweaks to clean up names -- PLEASE LIMIT THESE!
+if [ "$os" = "unix" ]
+then
+ # might be Altos System V
+ case $rel
+ in
+ 5.3*) os=Altos;;
+ esac
+elif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
+then
+ # might be a DYNIX/ptx 2.x system, which has a broken uname
+ if strings /lib/cpp | grep _SEQUENT_ > /dev/null
+ then
+ os=PTX
+ fi
+elif [ -d /usr/nec ]
+then
+ # NEC machine -- what is it running?
+ if [ "$os" = "UNIX_System_V" ]
+ then
+ os=EWS-UX_V
+ elif [ "$os" = "UNIX_SV" ]
+ then
+ os=UX4800
+ fi
+elif [ "$arch" = "mips" ]
+then
+ case $rel
+ in
+ 4_*)
+ if [ `uname -v` = "UMIPS" ]
+ then
+ os=RISCos
+ fi;;
+ esac
+fi
+
+# see if there is a "user suffix" specified
+if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
+then
+ sfx=""
+else
+ sfx=".${SENDMAIL_SUFFIX}"
+fi
+
+echo "Configuration: os=$os, rel=$rel, rbase=$rbase, rroot=$rroot, arch=$arch, sfx=$sfx"
+
+
+SMROOT=${SMROOT-..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+export SMROOT BUILDTOOLS
+
+# see if we are in a Build-able directory
+if [ ! -f Makefile.m4 ]; then
+ echo "Makefile.m4 not found. Build can only be run from a source directory."
+ exit $EX_UNAVAILABLE
+fi
+
+# now try to find a reasonable object directory
+if [ -r obj.$os.$rel.$arch$sfx ]; then
+ obj=obj.$os.$rel.$arch$sfx
+elif [ -r obj.$os.$rroot.$arch$sfx ]; then
+ obj=obj.$os.$rroot.$arch$sfx
+elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
+ obj=obj.$os.$rbase.x.$arch$sfx
+elif [ -r obj.$os.$rel$sfx ]; then
+ obj=obj.$os.$rel$sfx
+elif [ -r obj.$os.$rbase.x$sfx ]; then
+ obj=obj.$os.$rbase.x$sfx
+elif [ -r obj.$os.$arch$sfx ]; then
+ obj=obj.$os.$arch$sfx
+elif [ -r obj.$rel.$arch$sfx ]; then
+ obj=obj.$rel.$arch$sfx
+elif [ -r obj.$rbase.x.$arch$sfx ]; then
+ obj=obj.$rbase.x.$arch$sfx
+elif [ -r obj.$os$sfx ]; then
+ obj=obj.$os$sfx
+elif [ -r obj.$arch$sfx ]; then
+ obj=obj.$arch$sfx
+elif [ -r obj.$rel$sfx ]; then
+ obj=obj.$rel$sfx
+elif [ -r obj$sfx ]; then
+ obj=obj$sfx
+fi
+if [ -z "$obj" -o "$cflag" ]
+then
+ if [ -n "$obj" ]
+ then
+ echo "Clearing out existing $obj tree"
+ rm -rf $obj
+ else
+ # no existing obj directory -- try to create one if Makefile found
+ obj=obj.$os.$rel.$arch$sfx
+ fi
+ if [ -r $BUILDTOOLS/OS/$os.$rel.$arch$sfx ]; then
+ oscf=$os.$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel.$arch ]; then
+ oscf=$os.$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch$sfx ]; then
+ oscf=$os.$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch ]; then
+ oscf=$os.$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch$sfx ]; then
+ oscf=$os.$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch ]; then
+ oscf=$os.$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rel$sfx ]; then
+ oscf=$os.$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel ]; then
+ oscf=$os.$rel
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot$sfx ]; then
+ oscf=$os.$rroot$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot ]; then
+ oscf=$os.$rroot
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x$sfx ]; then
+ oscf=$os.$rbase.x$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x ]; then
+ oscf=$os.$rbase.x
+ elif [ -r $BUILDTOOLS/OS/$os.$arch$sfx ]; then
+ oscf=$os.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$arch ]; then
+ oscf=$os.$arch
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch$sfx ]; then
+ oscf=$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch ]; then
+ oscf=$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch$sfx ]; then
+ oscf=$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch ]; then
+ oscf=$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch$sfx ]; then
+ oscf=$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch ]; then
+ oscf=$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os$sfx ]; then
+ oscf=$os$sfx
+ elif [ -r $BUILDTOOLS/OS/$os ]; then
+ oscf=$os
+ elif [ -r $BUILDTOOLS/OS/$arch$sfx ]; then
+ oscf=$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$arch ]; then
+ oscf=$arch
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel ]; then
+ oscf=$rel
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ else
+ echo "Cannot determine how to support $arch.$os.$rel" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ ret=$?
+ if [ $ret -ne 0 ]
+ then
+ exit $ret
+ fi
+ echo "Using M4=$M4"
+ export M4
+ if [ "$mflag" ]
+ then
+ echo "Will run in virgin $obj using $BUILDTOOLS/OS/$oscf"
+ exit 0
+ fi
+ if [ "$ABI" ]
+ then
+ echo "Using ABI $ABI"
+ fi
+ echo "Creating $obj using $BUILDTOOLS/OS/$oscf"
+ mkdir $obj
+ (cd $obj; ln -s ../*.[ch158] .)
+ if [ -f sendmail.hf ]
+ then
+ (cd $obj; ln -s ../sendmail.hf .)
+ fi
+
+ rm -f $obj/.settings$$
+ echo 'divert(-1)' > $obj/.settings$$
+ cat $BUILDTOOLS/M4/header.m4 >> $obj/.settings$$
+ if [ "$ABI" ]
+ then
+ echo "define(\`confABI', \`$ABI')" >> $obj/.settings$$
+ fi
+ cat $BUILDTOOLS/OS/$oscf >> $obj/.settings$$
+
+ if [ -z "$siteconfig" ]
+ then
+ # none specified, use defaults
+ if [ -f $BUILDTOOLS/Site/site.$oscf$sfx.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf$sfx.m4
+ elif [ -f $BUILDTOOLS/Site/site.$oscf.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf.m4
+ fi
+ if [ -f $BUILDTOOLS/Site/site.config.m4 ]
+ then
+ siteconfig="$BUILDTOOLS/Site/site.config.m4 $siteconfig"
+ fi
+ fi
+ if [ ! -z "$siteconfig" ]
+ then
+ echo "Including $siteconfig"
+ cat $siteconfig >> $obj/.settings$$
+ fi
+ if [ "$libdirs" ]
+ then
+ echo "define(\`confLIBDIRS', confLIBDIRS \`\`$libdirs'')" >> $obj/.settings$$
+ fi
+ if [ "$incdirs" ]
+ then
+ echo "define(\`confINCDIRS', confINCDIRS \`\`$incdirs'')" >> $obj/.settings$$
+ fi
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ libdirs=`(cat $obj/.settings$$; echo "_SRIDBIL_= confLIBDIRS" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_SRIDBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_SRIDBIL_=//"`
+ libsrch=`(cat $obj/.settings$$; echo "_HCRSBIL_= confLIBSEARCH" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_HCRSBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_HCRSBIL_=//"`
+ echo 'divert(-1)' >> $obj/.settings$$
+ LIBDIRS="$libdirs" LIBSRCH="$libsrch" SITECONFIG="$siteconfig" sh $BUILDTOOLS/bin/configure.sh $sflag $oscf >> $obj/.settings$$
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' $obj/.settings$$ | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - Makefile.m4 | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' > $obj/Makefile
+ if [ $? -ne 0 -o ! -s $obj/Makefile ]
+ then
+ echo "ERROR: ${M4} failed; You may need a newer version of M4, at least as new as System V or GNU" 1>&2
+ rm -rf $obj
+ exit $EX_UNAVAILABLE
+ fi
+ rm -f $obj/.settings$$
+ echo "Making dependencies in $obj"
+ (cd $obj; ${MAKE-make} depend)
+fi
+
+if [ "$mflag" ]
+then
+ makefile=`ls -l $obj/Makefile | sed 's/.* //'`
+ if [ -z "$makefile" ]
+ then
+ echo "ERROR: $obj exists but has no Makefile" >&2
+ exit $EX_NOINPUT
+ fi
+ echo "Will run in existing $obj using $makefile"
+ exit 0
+fi
+
+echo "Making in $obj"
+cd $obj
+eval exec ${MAKE-make} $makeargs
diff --git a/contrib/sendmail/BuildTools/bin/configure.sh b/contrib/sendmail/BuildTools/bin/configure.sh
new file mode 100644
index 000000000000..eb149b2cdd46
--- /dev/null
+++ b/contrib/sendmail/BuildTools/bin/configure.sh
@@ -0,0 +1,163 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)configure.sh 8.27 (Berkeley) 5/19/98
+
+#
+# Special script to autoconfigure for M4 generation of Makefile
+#
+
+os=""
+resolver=""
+sflag=""
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -s) # skip auto-configure
+ sflag=1
+ shift
+ ;;
+
+ *) # OS definition
+ os=$1
+ shift
+ ;;
+ esac
+done
+
+usewhoami=0
+usehostname=0
+for p in `echo $PATH | sed 's/:/ /g'`
+do
+ if [ "x$p" = "x" ]
+ then
+ p="."
+ fi
+ if [ -f $p/whoami ]
+ then
+ usewhoami=1
+ if [ $usehostname -ne 0 ]
+ then
+ break;
+ fi
+ fi
+ if [ -f $p/hostname ]
+ then
+ usehostname=1
+ if [ $usewhoami -ne 0 ]
+ then
+ break;
+ fi
+ fi
+done
+if [ $usewhoami -ne 0 ]
+then
+ user=`whoami`
+else
+ user=$LOGNAME
+fi
+
+if [ $usehostname -ne 0 ]
+then
+ host=`hostname`
+else
+ host=`uname -n`
+fi
+echo "PUSHDIVERT(0)"
+echo "####################################################################"
+echo "##### This file is automatically generated -- edit at your own risk"
+echo '#####' Built by $user@$host
+echo '#####' on `date` using template OS/$os
+if [ ! -z "$SITECONFIG" ]
+then
+ echo '#####' including $SITECONFIG
+fi
+echo '#####' in `pwd` | sed 's/\/tmp_mnt//'
+echo "####################################################################"
+echo ""
+echo "POPDIVERT"
+echo "define(\`__HOST__', \`$host')dnl"
+echo "ifdef(\`confMAPDEF',, \`define(\`confMAPDEF', \`')')dnl"
+echo "ifdef(\`confLIBS',, \`define(\`confLIBS', \`')')dnl"
+
+# If user did not supply ABI for Build, use SGI_ABI
+# so the proper libraries are checked below.
+if [ -z "$ABI" ]
+then
+ ABI="$SGI_ABI"
+fi
+
+case $ABI
+in
+ -n32) LIBDIRS="$LIBDIRS /lib32 /usr/lib32"
+ ;;
+ -64) LIBDIRS="$LIBDIRS /lib64 /usr/lib64"
+ ;;
+ *) LIBDIRS="$LIBDIRS /lib /usr/lib /usr/shlib"
+ ;;
+esac
+
+libs=""
+mapdef=""
+for l in $LIBSRCH
+do
+ for p in `echo $LIBDIRS | sed -e 's/:/ /g' -e 's/^-L//g' -e 's/ -L/ /g'`
+ do
+ if [ "x$p" = "x" ]
+ then
+ p = "."
+ fi
+ if [ -f $p/lib$l.a -o -f $p/lib$l.so ]
+ then
+ case $l
+ in
+ db)
+ mapdef="$mapdef -DNEWDB"
+ ;;
+ bind|resolv)
+ if [ -n "$resolver" ]
+ then
+ continue
+ else
+ resolver=$l
+ fi
+ ;;
+ 44bsd)
+ if [ "x$resolver" != "xresolv" ]
+ then
+ continue
+ fi
+ ;;
+ esac
+ libs="$libs -l$l"
+ break
+ fi
+ done
+done
+
+for p in `echo $PATH | sed 's/:/ /g'`
+do
+ pbase=`echo $p | sed -e 's,/bin,,'`
+ if [ "x$p" = "x" ]
+ then
+ p="."
+ fi
+ if [ -f $p/mkdep ]
+ then
+ echo "ifdef(\`confDEPEND_TYPE',, \`define(\`confDEPEND_TYPE', \`BSD')')dnl"
+ fi
+done
+
+if [ -z "$sflag" ]
+then
+ echo "define(\`confMAPDEF', \`$mapdef' confMAPDEF)dnl"
+ echo "define(\`confLIBS', \`$libs' confLIBS)dnl"
+fi
diff --git a/contrib/sendmail/BuildTools/bin/find_m4.sh b/contrib/sendmail/BuildTools/bin/find_m4.sh
new file mode 100755
index 000000000000..d2cf66556d82
--- /dev/null
+++ b/contrib/sendmail/BuildTools/bin/find_m4.sh
@@ -0,0 +1,82 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)find_m4.sh 8.4 (Berkeley) 5/19/98
+#
+
+# Try to find a working M4 program.
+# If $M4 is already set, we use it, otherwise we prefer GNU m4.
+
+EX_UNAVAILABLE=69
+
+test="ifdef(\`pushdef', \`',
+\`errprint(\`You need a newer version of M4, at least as new as System V or GNU')
+include(NoSuchFile)')
+define(\`BadNumber', \`10')
+ifdef(\`BadNumber', \`', \`errprint(\`This version of m4 is broken')')"
+
+if [ "$M4" ]
+then
+ err=`(echo "$test" | $M4) 2>&1 >/dev/null`
+ code=$?
+else
+ firstfound=
+ ifs="$IFS"; IFS="${IFS}:"
+ for m4 in gm4 gnum4 pdm4 m4
+ do
+ for dir in $PATH /usr/5bin /usr/ccs/bin
+ do
+ [ -z "$dir" ] && dir=.
+ if [ -f $dir/$m4 ]
+ then
+ err=`(echo "$test" | $dir/$m4) 2>&1 >/dev/null`
+ ret=$?
+ if [ $ret -eq 0 -a "X$err" = "X" ]
+ then
+ M4=$dir/$m4
+ code=0
+ break
+ else
+ case "$firstfound:$err" in
+ :*version\ of*)
+ firstfound=$dir/$m4
+ firsterr="$err"
+ firstcode=$ret
+ ;;
+ esac
+ fi
+ fi
+ done
+ [ "$M4" ] && break
+ done
+ IFS="$ifs"
+ if [ ! "$M4" ]
+ then
+ if [ "$firstfound" ]
+ then
+ M4=$firstfound
+ err="$firsterr"
+ code=$firstcode
+ else
+ echo "ERROR: Can not locate an M4 program" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ fi
+fi
+if [ $code -ne 0 ]
+then
+ echo "ERROR: Using M4=$M4: $err" | grep -v NoSuchFile >&2
+ exit $EX_UNAVAILABLE
+elif [ "X$err" != "X" ]
+then
+ echo "WARNING: $err" >&2
+fi
+echo $M4
+exit 0
+
diff --git a/contrib/sendmail/BuildTools/bin/install.sh b/contrib/sendmail/BuildTools/bin/install.sh
new file mode 100755
index 000000000000..58f7623a1475
--- /dev/null
+++ b/contrib/sendmail/BuildTools/bin/install.sh
@@ -0,0 +1,128 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)install.sh 8.9 (Berkeley) 5/19/98
+
+# Set default program
+program=mv
+
+# chown program -- ultrix keeps it in /etc/chown and /usr/etc/chown
+if [ -f /etc/chown ]
+then
+ chown=/etc/chown
+elif [ -f /usr/etc/chown ]
+then
+ chown=/usr/etc/chown
+else
+ chown=chown
+fi
+
+# Check arguments
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -o) owner=$2
+ shift; shift
+ ;;
+
+ -g) group=$2
+ shift; shift
+ ;;
+
+ -m) mode=$2
+ shift; shift
+ ;;
+
+ -c) program=cp
+ shift
+ ;;
+
+ -s) strip="strip"
+ shift
+ ;;
+
+ -*) echo $0: Unknown option $1
+ exit 1
+ ;;
+
+ *) break
+ ;;
+ esac
+done
+
+# Check source file
+if [ -z "$1" ]
+then
+ echo "Source file required" >&2
+ exit 1
+elif [ -f $1 -o $1 = /dev/null ]
+then
+ src=$1
+else
+ echo "Source file must be a regular file or /dev/null" >&2
+ exit 1
+fi
+
+# Check destination
+if [ -z "$2" ]
+then
+ echo "Destination required" >&2
+ exit 1
+elif [ -d $2 ]
+then
+ dst=$2/$src
+else
+ dst=$2
+fi
+
+# Do install operation
+$program $src $dst
+if [ $? != 0 ]
+then
+ exit 1
+fi
+
+# Strip if requested
+if [ ! -z "$strip" ]
+then
+ $strip $dst
+fi
+
+# Change owner if requested
+if [ ! -z "$owner" ]
+then
+ $chown $owner $dst
+ if [ $? != 0 ]
+ then
+ exit 1
+ fi
+fi
+
+# Change group if requested
+if [ ! -z "$group" ]
+then
+ chgrp $group $dst
+ if [ $? != 0 ]
+ then
+ exit 1
+ fi
+fi
+
+# Change mode if requested
+if [ ! -z "$mode" ]
+then
+ chmod $mode $dst
+ if [ $? != 0 ]
+ then
+ exit 1
+ fi
+fi
+
+exit 0
diff --git a/contrib/sendmail/FAQ b/contrib/sendmail/FAQ
new file mode 100644
index 000000000000..b4cb2e6d1773
--- /dev/null
+++ b/contrib/sendmail/FAQ
@@ -0,0 +1,6 @@
+The FAQ is no longer maintained with the sendmail release. It is
+available at http://www.sendmail.org/faq/ .
+
+A plain-text version of the questions only, with URLs referring to
+the answers, is posted to comp.mail.sendmail on the 10th and 25th
+of each month.
diff --git a/usr.sbin/sendmail/KNOWNBUGS b/contrib/sendmail/KNOWNBUGS
index c334fa4bd0c8..cd62b20eb12e 100644
--- a/usr.sbin/sendmail/KNOWNBUGS
+++ b/contrib/sendmail/KNOWNBUGS
@@ -1,7 +1,7 @@
K N O W N B U G S I N S E N D M A I L
- (for 8.8.6)
+ (for 8.9.0)
The following are bugs or deficiencies in sendmail that I am aware of
@@ -37,7 +37,7 @@ This list is not guaranteed to be complete.
* If you EXPN a list or user that has a program mailer, the output of
EXPN will include ``@local.host.name''. You can't actually mail to
- this address. It's not clear what the right behaviour is in this
+ this address. It's not clear what the right behavior is in this
circumstance.
* \231 considered harmful.
@@ -48,7 +48,7 @@ This list is not guaranteed to be complete.
* accept() problem on SVR4.
Apparently, the sendmail daemon loop (doing accept()s on the network)
- can get into a wierd state on SVR4; it starts logging ``SYSERR:
+ can get into a weird state on SVR4; it starts logging ``SYSERR:
getrequests: accept: Protocol Error''. The workaround is to kill
and restart the sendmail daemon. We don't have an SVR4 system at
Berkeley that carries more than token mail load, so I can't validate
@@ -73,7 +73,11 @@ This list is not guaranteed to be complete.
getrequests: accept: Connection timed out
"Connection timed out" is not documented as a valid return from
- accept(2) and this is believed to be a bug in the Linux kernel.
+ accept(2) and this was believed to be a bug in the Linux kernel.
+ Later information from the Linux kernel group states that Linux
+ 2.0 kernels follow RFC1122 while sendmail follows the original BSD
+ (now POSIX 1003.1g draft) specification. The 2.1.X and later kernels
+ will follow the POSIX draft.
* Excessive mailing list nesting can run out of file descriptors.
@@ -103,5 +107,41 @@ This list is not guaranteed to be complete.
account for the SMTP on-the-wire \r\n expansion. It probably doesn't
allow for 8->7 bit MIME conversions either.
+* Paths to programs being executed and the mode of program files are
+ not checked. Essentially, the RunProgramInUnsafeDirPath and
+ RunWritableProgram bits in the DontBlameSendmail option are always
+ set. This is not a problem if your system is well managed (that is,
+ if binaries and system directories are mode 755 instead of something
+ foolish like 777).
-(Version 8.25, last updated 6/13/97)
+* 8-bit data in GECOS field
+
+ If the GECOS (personal name) information in the passwd file contains
+ 8-bit characters, those characters can be included in the message
+ header, which can cause problems when sending SMTP to hosts that
+ only accept 7-bit characters.
+
+* 8->7 bit MIME conversion
+
+ When sendmail is doing 8->7 bit MIME conversions, and the message
+ contains certain MIME body types that cannot be converted to 7-bit,
+ sendmail will strip the message to 7-bit.
+
+* 7->8 bit MIME conversion
+
+ If a message that is encoded as 7-bit MIME is converted to 8-bit and
+ that message when decoded is illegal (e.g., because of long lines or
+ illegal characters), sendmail can produce an illegal message.
+
+* MIME encoded full name phrases in the From: header
+
+ If a full name phrase includes characters from MustQuoteChars, sendmail
+ will quote the entire full name phrase. If MustQuoteChars includes
+ characters which are not special characters according to STD 11 (RFC
+ 822), this quotation can interfere with MIME encoded full name phrases.
+ By default, sendmail includes the single quote character (') in
+ MustQuoteChars even though it is not listed as a special character in
+ STD 11.
+
+
+(Version 8.32, last updated 6/30/98)
diff --git a/contrib/sendmail/LICENSE b/contrib/sendmail/LICENSE
new file mode 100644
index 000000000000..bb1c3a79c7f0
--- /dev/null
+++ b/contrib/sendmail/LICENSE
@@ -0,0 +1,89 @@
+ SENDMAIL LICENSE
+
+The following license terms and conditions apply, unless a different
+license is obtained from Sendmail, Inc., 1401 Park Avenue, Emeryville, CA
+94608, or by electronic mail at license@sendmail.com.
+
+License Terms:
+
+Use, Modification and Redistribution (including distribution of any
+modified or derived work) in source and binary forms is permitted only if
+each of the following conditions is met:
+
+1. Redistributions qualify as "freeware" or "Open Source Software" under
+ one of the following terms:
+
+ (a) Redistributions are made at no charge beyond the reasonable cost of
+ materials and delivery.
+
+ (b) Redistributions are accompanied by a copy of the Source Code or by an
+ irrevocable offer to provide a copy of the Source Code for up to three
+ years at the cost of materials and delivery. Such redistributions
+ must allow further use, modification, and redistribution of the Source
+ Code under substantially the same terms as this license. For the
+ purposes of redistribution "Source Code" means the complete source
+ code of sendmail including all modifications.
+
+ Other forms of redistribution are allowed only under a separate royalty-
+ free agreement permitting such redistribution subject to standard
+ commercial terms and conditions. A copy of such agreement may be
+ obtained from Sendmail, Inc. at the above address.
+
+2. Redistributions of source code must retain the copyright notices as they
+ appear in each source code file, these license terms, and the
+ disclaimer/limitation of liability set forth as paragraph 6 below.
+
+3. Redistributions in binary form must reproduce the Copyright Notice,
+ these license terms, and the disclaimer/limitation of liability set
+ forth as paragraph 6 below, in the documentation and/or other materials
+ provided with the distribution. For the purposes of binary distribution
+ the "Copyright Notice" refers to the following language:
+ "Copyright (c) 1998 Sendmail, Inc. All rights reserved."
+
+4. Neither the name of Sendmail, Inc. nor the University of California nor
+ the names of their contributors may be used to endorse or promote
+ products derived from this software without specific prior written
+ permission. The name "sendmail" is a trademark of Sendmail, Inc.
+
+5. All redistributions must comply with the conditions imposed by the
+ University of California on certain embedded code, whose copyright
+ notice and conditions for redistribution are as follows:
+
+ (a) Copyright (c) 1988, 1993 The Regents of the University of
+ California. All rights reserved.
+
+ (b) Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ (i) Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ (ii) Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ (iii) All advertising materials mentioning features or use of this
+ software must display the following acknowledgement: "This
+ product includes software developed by the University of
+ California, Berkeley and its contributors."
+
+ (iv) Neither the name of the University nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+6. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY
+ SENDMAIL, INC. AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ NO EVENT SHALL SENDMAIL, INC., THE REGENTS OF THE UNIVERSITY OF
+ CALIFORNIA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+(Version 8.6, last updated 6/24/98)
diff --git a/contrib/sendmail/Makefile b/contrib/sendmail/Makefile
new file mode 100644
index 000000000000..0b44c4203190
--- /dev/null
+++ b/contrib/sendmail/Makefile
@@ -0,0 +1,26 @@
+# @(#)Makefile.dist 8.2 (Berkeley) 2/17/98
+
+SHELL= /bin/sh
+SUBDIRS= src mail.local mailstats makemap praliases rmail smrsh
+BUILD= ./Build
+OPTIONS= $(CONFIG) $(FLAGS)
+
+all clean install:: FRC
+ @for x in $(SUBDIRS); \
+ do \
+ (cd $$x; echo Making $@ in:; pwd; \
+ $(SHELL) $(BUILD) $(OPTIONS) $@); \
+ done
+
+fresh:: FRC
+ @for x in $(SUBDIRS); \
+ do \
+ (cd $$x; echo Making $@ in:; pwd; \
+ $(SHELL) $(BUILD) $(OPTIONS) -c); \
+ done
+
+$(SUBDIRS):: FRC
+ @cd $@; pwd; \
+ $(SHELL) $(BUILD) $(OPTIONS)
+
+FRC:
diff --git a/usr.sbin/sendmail/READ_ME b/contrib/sendmail/README
index 08b5affb04f9..5de10764212e 100644
--- a/usr.sbin/sendmail/READ_ME
+++ b/contrib/sendmail/README
@@ -1,11 +1,11 @@
/*-
- * @(#)READ_ME 8.32 (Berkeley) 7/6/97
+ * @(#)README 8.48 (Berkeley) 5/19/98
*/
SENDMAIL RELEASE 8
-This directory has the latest sendmail software from Berkeley. See
-doc/changes/changes.me for a summary of changes since 5.67.
+This directory has the latest sendmail(TM) software from Sendmail, Inc.
+See doc/changes/changes.me for a summary of changes since 5.67.
Report any bugs to sendmail-bugs@sendmail.ORG
@@ -14,12 +14,82 @@ the latest updates.
******************************************************************
** DO NOT USE MAKE to compile sendmail. Instead, cd src and **
-** use the "makesendmail" shell script. On many environments **
-** this will do everything for you, no fuss, no muss. See **
-** src/READ_ME for more details of compilation. See cf/README **
+** use the "Build" shell script. On many environments this **
+** will do everything for you, no fuss, no muss. See **
+** src/README for more details of compilation. See cf/README **
** for details about building a runtime configuration file. **
******************************************************************
+Sendmail is a trademark of Sendmail, Inc.
+
++-----------------------+
+| DIRECTORY PERMISSIONS |
++-----------------------+
+
+Sendmail often gets blamed for many problems that are actually the
+result of other problems, such as overly permissive modes on directories.
+For this reason, sendmail checks the modes on system directories and
+files to determine if can have been trusted. For sendmail to run
+without complaining, you MUST execute the following command:
+
+ chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
+ chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
+
+You will probably have to tweak this for your environment (for example,
+some systems put the spool directory into /usr/spool instead of
+/var/spool and use /etc/mail for aliases file instead of /etc). If you
+set the RunAsUser option in your sendmail.cf, the /var/spool/mqueue
+directory will have to be owned by the RunAsUser user. As a general rule,
+after you have compiled sendmail, run the command
+
+ sendmail -v -bi
+
+to initialize the alias database. If it gives messages such as
+
+ WARNING: writable directory /etc
+ WARNING: writable directory /usr/spool/mqueue
+
+then the directories listed have inappropriate write permissions and
+should be secured to avoid various possible security attacks.
+
+Beginning with sendmail 8.9, these checks have become more strict to
+prevent users from being able to access files they would normally not
+be able to read. In particular, .forward and :include: files in unsafe
+directory paths (directory paths which are group or world writable) will
+no longer be allowed. This would mean that if user joe's home directory
+was writable by group staff, sendmail would not use his .forward file.
+This behavior can be altered, at the expense of system security, by
+setting the DontBlameSendmail option. For example, to allow .forward
+files in group writable directories:
+
+ O DontBlameSendmail=forwardfileingroupwritabledirpath
+
+Or to allow them in both group and world writable directories:
+
+ O DontBlameSendmail=forwardfileinunsafedirpath
+
+Items from these unsafe .forward and :include: files will be marked
+as unsafe addresses -- the items can not be deliveries to files or
+programs. This behavior can also be altered via DontBlameSendmail:
+
+ O DontBlameSendmail=forwardfileinunsafedirpath,
+ forwardfileinunsafedirpathsafe
+
+The first flag allows the .forward file to be read, the second allows
+the items in the file to be marked as safe for file and program
+delivery.
+
+Other files affected by this strengthened security include class
+files (i.e. Fw /etc/sendmail.cw), persistent host status files, and
+the files specified by the ErrorHeader and HelpFile options. Similar
+DontBlameSendmail flags are available for the class, ErrorHeader, and
+HelpFile files.
+
+If you have an unsafe configuration of .forward and :include:
+files, you can make it safe by finding all such files, and doing
+a "chmod go-w $FILE" on each. Also, do a "chmod go-w $DIR" for
+each directory in the file's path.
+
+--------------+
| MANUAL PAGES |
@@ -28,7 +98,6 @@ the latest updates.
The sendmail manual pages use contemporary Berkeley troff macros. If
your system does not process these manual pages, you can pick up the
new macros in a BSD Net/2 FTP site (e.g. on FTP.UU.NET, the files
-/systems/unix/bsd-sources/share/tmac/me/strip.sed and
/systems/unix/bsd-sources/share/tmac/*).
The strip.sed file is only used in installation.
@@ -74,7 +143,7 @@ macro set that is compatible with these macros.
There are other files you should read. Rooted in this directory are:
- CHANGES-R5-R8
+ doc/changes/changes.ps
Describes changes between Release 5 and Release 8 of sendmail.
There are some things that may behave somewhat differently.
For example, the rules governing when :include: files will
@@ -83,12 +152,12 @@ There are other files you should read. Rooted in this directory are:
Answers to Frequently Asked Questions.
KNOWNBUGS
Known bugs in the current release. I try to keep this up
- to date -- get the latest version from FTP.CS.Berkeley.EDU
+ to date -- get the latest version from FTP.Sendmail.ORG
in /ucb/sendmail/KNOWNBUGS.
RELEASE_NOTES
A detailed description of the changes in each version. This
is quite long, but informative.
- src/READ_ME
+ src/README
Details on compiling and installing sendmail.
cf/README
Details on configuring sendmail.
@@ -110,10 +179,23 @@ There are other files you should read. Rooted in this directory are:
+--------------+
There are several related RFCs that you may wish to read -- they are
-available via anonymous FTP to several sites, including nic.ddn.mil
-(directory rfc), ftp.nisc.sri.com (rfc), nis.nsf.net (RFC),
-nisc.jvnc.net (rfc), venera.isi.edu (in-notes), and wuarchive.wustl.edu
-(info/rfc). They can also be retrieved via electronic mail by sending
+available via anonymous FTP to several sites, including:
+
+ ftp://nic.ddn.mil/rfc/
+ ftp://nis.nsf.net/documents/rfc/
+ ftp://nisc.jvnc.net/rfc/
+ ftp://venera.isi.edu/in-notes/
+ ftp://wuarchive.wustl.edu/doc/rfc/
+
+For a list of the primary repositories see:
+
+ http://www.isi.edu/in-notes/rfc-retrieval.txt
+
+They are also online at:
+
+ http://www.ietf.org/
+
+They can also be retrieved via electronic mail by sending
email to one of:
mail-server@nisc.sri.com
@@ -123,6 +205,10 @@ email to one of:
sendrfc@jvnc.net
Put "RFCnnn" as Subject: line
+For further instructions see:
+
+ http://www.isi.edu/in-notes/rfc-editor/rfc-info
+
Important RFCs for electronic mail are:
RFC821 SMTP protocol
@@ -134,7 +220,8 @@ Important RFCs for electronic mail are:
RFC1869 SMTP Service Extensions (ESMTP spec)
RFC1652 SMTP Service Extension for 8bit-MIMEtransport
RFC1870 SMTP Service Extension for Message Size Declaration
- RFC1521 MIME: Multipurpose Internet Mail Extensions
+ RFC2045 Multipurpose Internet Mail Extensions (MIME) Part One:
+ Format of Internet Message Bodies
RFC1344 Implications of MIME for Internet Mail Gateways
RFC1428 Transition of Internet Mail from Just-Send-8 to
8-bit SMTP/MIME
@@ -165,15 +252,41 @@ IF YOU WANT TO RUN THE NEW BERKELEY DB SOFTWARE: **** DO NOT ****
use the version that was on the Net2 tape -- it has a number of
nefarious bugs that were bad enough when I got them; you shouldn't have
to go through the same thing. Instead, get a new version via the web at
-http://www.sleepycat.com/packages/db.1.85.tar.gz. This software is
-highly recommended; it gets rid of several stupid limits, it's much
-faster, and the interface is nicer to animals and plants. You will
-also probably find that you have to add -I/where/you/put/db/include
-to the sendmail makefile to get db.h to work properly.
-
-Be sure you remove ndbm.h and ndbm.o from the db distribution. These
-will cause problems with sendmail because sendmail already understands
-about NEWDB and NDBM coexisting.
+http://www.sleepycat.com/. This software is highly recommended; it gets
+rid of several stupid limits, it's much faster, and the interface is
+nicer to animals and plants. If the Berkeley DB include files
+are installed in a location other than those which your compiler searches,
+you will need to provide that directory when building:
+
+ Build -I/path/to/include/directory
+
+If you are using Berkeley DB versions 1.85 or 1.86, you are *strongly*
+urged to upgrade to DB version 2, available from http://www.sleepycat.com/.
+Berkeley DB versions 1.85 and 1.86 are known to be broken in various nasty
+ways (see http://www.sleepycat.com/db.185.html), and can cause sendmail
+to dump core. In addition, the newest versions of gcc and the Solaris
+compilers perform optimizations in those versions that may cause fairly
+random core dumps.
+
+If you have no choice but to use Berkeley DB 1.85 or 1.86, and you are
+using both Berkeley DB and files in the UNIX ndbm format, remove ndbm.h
+and ndbm.o from the DB library after building it. You should also apply
+all of the patches for DB 1.85 and 1.86 found at the Sleepycat web site
+(see http://www.sleepycat.com/db.185.html), as they fix some of the known
+problems.
+
+If you are using a version of Berkeley DB 2 previous to 2.3.15, and you
+are using both Berkeley DB and files in the UNIX ndbm format, remove dbm.o
+from the DB library after building it. No other changes are necessary.
+
+If you are using Berkeley DB version 2.3.15 or greater, no changes are
+necessary.
+
+The underlying database file formats changed between Berkeley DB versions
+1.85 and 1.86, and again between DB 1.86 and version 2.0. If you are
+upgrading from one of those versions, you must recreate your database
+file(s). Do this by rebuilding all maps with makemap and rebuilding the
+alias file with newaliases.
+--------------------+
@@ -228,71 +341,18 @@ one of those sites. Versions are available for several different
systems, including Apollo, BSD, NeXT, AIX, TOPS20, and VMS.
-+-----------+
-| MAKEFILES |
-+-----------+
-
-The Makefiles in this release use the new Berkeley "make" that is
-available in BSD Net/2 and 4.4BSD. If you are using this version
-of make, you may notice one or two places where the Makefile includes
-"../../Makefile.inc". This file is not included with the sendmail
-distribution because it's not part of sendmail. However, it is,
-in toto:
-
- # @(#)Makefile.inc 8.1 (Berkeley) 6/6/93
-
- BINDIR?= /usr/sbin
-
-The other directories should all have Makefile.dist files that work
-on the old make, albeit without all the niceties included.
-
-You can also get a new Berkeley make from the Net2 release (available
-on many public FTP archives). This version should also interpret old
-Makefiles, so you could drop it in as your default make.
-
-For more details, see src/READ_ME.
-
-
-+-----------------------+
-| DIRECTORY PERMISSIONS |
-+-----------------------+
-
-Sendmail often gets blamed for many problems that are actually the
-result of other problems, such as overly permissive modes on directories.
-For this reason, sendmail checks the modes on system directories and
-files to determine if they have been trusted. For sendmail to run
-without complaining, you MUST execute the following command:
-
- chmod go-w / /etc /usr /var /var/spool /var/spool/mqueue
-
-You will probably have to tweak this for your environment (for example,
-some systems put the spool directory into /usr/spool instead of
-/var/spool). As a general rule, after you have compiled sendmail,
-run the command
-
- sendmail -v -bi
-
-to initialize the alias database. If it gives messages such as
-
- WARNING: writable directory /etc
- WARNING: writable directory /usr/spool/mqueue
-
-then the directories listed have inappropriate write permissions and
-should be secured to avoid various possible security attacks.
-
-
+---------------------+
| DIRECTORY STRUCTURE |
+---------------------+
The structure of this directory tree is:
-cf Source for Berkeley configuration files. These are
+cf Source for sendmail configuration files. These are
different than what you've seen before. They are a
fairly dramatic rewrite, requiring the new sendmail
(since they use new features).
contrib Some contributed tools to help with sendmail. THESE
- ARE NOT SUPPORTED by Berkeley -- contact the original
+ ARE NOT SUPPORTED by sendmail -- contact the original
authors if you have problems. (This directory is not
on the 4.4BSD tape.)
doc Documentation. If you are getting source, read
@@ -303,7 +363,7 @@ mail.local The source for the local delivery agent used for 4.4BSD.
it does mailbox locking differently than other systems.
mailstats Statistics printing program. It has the pathname of
sendmail.st compiled in, so if you've changed that,
- beware. This isn't all that useful.
+ beware.
makemap A program that creates the keyed maps used by the $( ... $)
construct in sendmail. It is primitive but effective.
It takes a very simple input format, so you will probably
diff --git a/usr.sbin/sendmail/RELEASE_NOTES b/contrib/sendmail/RELEASE_NOTES
index b3e1a8b33d32..2b3475ffbcc6 100644
--- a/usr.sbin/sendmail/RELEASE_NOTES
+++ b/contrib/sendmail/RELEASE_NOTES
@@ -1,11 +1,616 @@
SENDMAIL RELEASE NOTES
- @(#)RELEASE_NOTES 8.8.8.4 (Berkeley) 10/24/97
+ @(#)RELEASE_NOTES 8.9.1.1 (Berkeley) 7/2/98
This listing shows the version of the sendmail binary, the version
of the sendmail configuration files, the date of release, and a
summary of the changes in that release.
+8.9.1/8.9.1 98/07/02
+ If both an OS specific site configuration file and a generic
+ site.config.m4 file existed, only the latter was used
+ instead of both. Problem noted by Geir Johannessen of
+ the Norwegian University of Science and Technology.
+ Fix segmentation fault while converting 8 bit to 7 bit MIME
+ multipart messages by trying to write to an unopened
+ file descriptor. Fix from Kari Hurtta of the Finnish
+ Meteorological Institute.
+ Do not assume Message: and Text: headers indicate the end of
+ the header area when parsing MIME headers. Problem noted
+ by Kari Hurtta of the Finnish Meteorological Institute.
+ Setting the confMAN#SRC Build variable would only effect the
+ installation commands. The man pages would still be
+ built with .0 extensions. Problem noted by Bryan
+ Costales of InfoBeat, Inc.
+ Installation of manual pages didn't honor the DESTDIR environment
+ variable. Problem noted by Bryan Costales of InfoBeat, Inc.
+ If the check_relay ruleset resolved to the discard mailer, messages
+ were still delivered. Problem noted by Mirek Luc of NASK.
+ Mail delivery to files would fail with an Operating System Error
+ if sendmail was not running as root, i.e. RunAsUser was set.
+ Problem noted by Leonard N. Zubkoff of Dandelion Digital.
+ Prevent MinQueueAge from interfering from queued items created
+ in the future, i.e. if the system clock was set ahead
+ and then back. Problem noted by Michael Miller of the
+ University of Natal, Pietermaritzburg.
+ Do not advertise ETRN support in ESTMP EHLO reply if noetrn is
+ set in the PrivacyFlags option. Fix from Ted Rule of
+ Flextech TV.
+ Log invalid persistent host status file lines instead of
+ bouncing the message. Problem noted by David Lindes of
+ DaveLtd Enterprises.
+ Move creation of empty sendmail.st file from installation to
+ compilation. Installation may be done from a read-only
+ mount. Fix from Bryan Costales of InfoBeat, Inc. and Ric
+ Anderson of the Oasis Research Center, Inc.
+ Enforce the maximum number of User Database entries limit. Problem
+ noted by Gary Buchanan of Credence Systems Inc.
+ Allow dead.letter files in root's home directory. Problem noted
+ by Anna Ullman of Sun Microsystems.
+ Program deliveries in forward files could be marked unsafe if
+ any directory listed in the ForwardPath option did not
+ exist. Problem noted by Jorg Bielak of Coastal Web Online.
+ Do not trust the length of the address structure returned by
+ gethostbyname(). Problem noted by Chris Evans of Oxford
+ University.
+ If the SIZE= MAIL From: ESMTP parameter is too large, use the
+ 5.3.4 DSN status code instead of 5.2.2. Similarly, for
+ non-local deliveries, if the message is larger than the
+ mailer maximum message size, use 5.3.4 instead of 5.2.3.
+ Suggested by Antony Bowesman of
+ Fujitsu/TeaWARE Mail/MIME System.
+ Portability:
+ Fix the check for an IP address reverse lookup for
+ use in $&{client_name} on 64 bit platforms.
+ From Gilles Gallot of Institut for Development
+ and Resources in Intensive Scientific computing.
+ BSD-OS uses .0 for man page extensions. From Jeff Polk
+ of BSDI.
+ DomainOS detection for Build. Also, version 10.4 and later
+ ship a unistd.h. Fixes from Takanobu Ishimura of
+ PICT Inc.
+ NeXT 4.x uses /usr/lib/man/cat for its man pages. From
+ J. P. McCann of E I A.
+ SCO 4.X and 5.X include NDBM support. From Vlado Potisk
+ of TEMPEST, Ltd.
+ CONFIG: Do not pass spoofed PTR results through resolver for
+ qualification. Problem noted by Michiel Boland of
+ Digital Valley Internet Professionals; fix from
+ Kari Hurtta of the Finnish Meteorological Institute.
+ CONFIG: Do not try to resolve non-DNS hostnames such as UUCP,
+ BITNET, and DECNET addresses for resolvable senders.
+ Problem noted by Alexander Litvin of Lucky Net Ltd.
+ CONFIG: Work around Sun's broken configuration which sends bounce
+ messages as coming from @@hostname instead of <>. LMTP
+ would not accept @@hostname.
+ OP.ME: Corrections to complex sendmail startup script from Rick
+ Troxel of the National Institutes of Health.
+ RMAIL: Do not install rmail by default, require 'make force-install'
+ as this rmail isn't the same as others. Suggested by
+ Kari Hurtta of the Finnish Meteorological Institute.
+
+8.9.0/8.9.0 98/05/19
+ SECURITY: To prevent users from reading files not normally
+ readable, sendmail will no longer open forward, :include:,
+ class, ErrorHeader, or HelpFile files located in unsafe
+ (i.e. group or world writable) directory paths. Sites
+ which need the ability to override security can use the
+ DontBlameSendmail option. See the README file for more
+ information.
+ SECURITY: Problems can occur on poorly managed systems, specifically,
+ if maps or alias files are in world writable directories.
+ This fixes the change added to 8.8.6 to prevent links in these
+ world writable directories.
+ SECURITY: Make sure ServiceSwitchFile option file is not a link if
+ it is in a world writable directory.
+ SECURITY: Never pass a tty to a mailer -- if a mailer can get at the
+ tty it may be able to push bytes back to the senders input.
+ Unfortunately this breaks -v mode. Problem noted by
+ Wietse Venema of the Global Security Analysis Lab at
+ IBM T.J. Watson Research.
+ SECURITY: Empty group list if DontInitGroups is set to true to
+ prevent program deliveries from picking up extra group
+ privileges. Problem reported by Wolfgang Ley of DFN-CERT.
+ SECURITY: The default value for DefaultUser is now set to the uid and
+ gid of the first existing user mailnull, sendmail, or daemon
+ that has a non-zero uid. If none of these exist, sendmail
+ reverts back to the old behavior of using uid 1 and gid 1.
+ This is a security problem for Linux which has chosen that
+ uid and gid for user bin instead of daemon. If DefaultUser
+ is set in the configuration file, that value overrides this
+ default.
+ SECURITY: Since 8.8.7, the check for non-setuid binaries
+ interfered with setting an alternate group id for the
+ RunAsUser option. Problem noted by Randall Winchester of
+ the University of Maryland.
+ Add support for Berkeley DB 2.X. Based on patch from John Kennedy
+ of Cal State University, Chico.
+ Remove support for OLD_NEWDB (pre-1.5 version of Berkeley DB). Users
+ which previously defined OLD_NEWDB=1 must now upgrade to the
+ current version of Berkeley DB.
+ Added support for regular expressions using the new map class regex.
+ From Jan Krueger of Unix-AG of University of Hannover.
+ Support for BIND 8.1.1's hesiod for hesiod maps and hesiod
+ UserDatabases from Randall Winchester of the University
+ of Maryland.
+ Allow any shell for user shell on program deliveries on V1
+ configurations for backwards compatibility on machines which
+ do not have getusershell(). Fix from John Beck of Sun
+ Microsystems.
+ On operating systems which change the process title by reusing the
+ argument vector memory, sendmail could corrupt memory if the
+ last argument was either "-q" or "-d". Problem noted by
+ Frank Langbein of the University of Stuttgart.
+ Support Local Mail Transfer Protocol (LMTP) between sendmail and
+ mail.local on the F=z flag.
+ Macro-expand the contents of the ErrMsgFile. Previously this was
+ only done if you had magic characters (0x81) to indicate
+ macro expansion. Now $x will be expanded. This means that
+ real dollar signs have to be backslash escaped.
+ TCP Wrappers expects "unknown" in the hostname argument if the
+ reverse DNS lookup for the incoming connection fails.
+ Problem noted by Randy Grimshaw of Syracuse University and
+ Wietse Venema of the Global Security Analysis Lab at
+ IBM T.J. Watson Research.
+ DSN success bounces generated from an invocation of sendmail -t
+ would be sent to both the sender and MAILER-DAEMON.
+ Problem noted by Claus Assmann of
+ Christian-Albrechts-University of Kiel.
+ Avoid "Error 0" messages on delivery mailers which exit with a
+ valid exit value such as EX_NOPERM. Fix from Andreas Luik
+ of ISA Informationssysteme GmbH.
+ Tokenize $&x expansions on right hand side of rules. This eliminates
+ the need to use tricks like $(dequote "" $&{client_name} $)
+ to cause the ${client_name} macro to be properly tokenized.
+ Add the MaxRecipientsPerMessage option: this limits the number of
+ recipients that will be accepted in a single SMTP
+ transaction. After this number is reached, sendmail
+ starts returning "452 Too many recipients" to all RCPT
+ commands. This can be used to limit the number of recipients
+ per envelope (in particular, to discourage use of the server
+ for spamming). Note: a better approach is to restrict
+ relaying entirely.
+ Fixed pointer initialization for LDAP lmap struct, fixed -s option
+ to ldapx map and added timeout for ldap_open call to
+ avoid hanging sendmail in the event of hung LDAP servers.
+ Patch from Booker Bense of Stanford University.
+ Allow multiple -qI, -qR, or -qS queue run limiters. For example,
+ '-qRfoo -qRbar' would deliver mail to recipients with foo or
+ bar in their address. Patch from Allan E Johannesen of
+ Worcester Polytechnic Institute.
+ The bestmx map will now return a list of the MX servers for a host if
+ passed a column delimiter via the -z map flag. This can be
+ used to check if the server is an MX server for the recipient
+ of a message. This can be used to help prevent relaying.
+ Patch from Mitchell Blank Jr of Exec-PC.
+ Mark failures for the *file* mailer and return bounce messages to the
+ sender for those failures.
+ Prevent bogus syslog timestamps on errors in sendmail.cf by
+ preserving the TZ environment variable until TimeZoneSpec
+ has been determined. Problem noted by Ralf Hildebrandt of
+ Technical University of Braunschweig. Patch from Per Hedeland
+ of Ericsson.
+ Print test input in address test mode when input is not from the tty
+ when the -v flag is given (i.e. sendmail -bt -v) to make
+ output easier to decipher. Problem noted by Aidan Nichol
+ of Procter & Gamble.
+ The LDAP map -s flag was not properly parsed and the error message
+ given included the remainder of the arguments instead of
+ solely the argument in error. Problem noted by Aidan Nichol
+ of Procter & Gamble.
+ New DontBlameSendmail option. This option allows administrators to
+ bypass some of sendmail's file security checks at the expense
+ of system security. This should only be used if you are
+ absolutely sure you know the consequences. The available
+ DontBlameSendmail options are:
+ Safe
+ AssumeSafeChown
+ ClassFileInUnsafeDirPath
+ ErrorHeaderInUnsafeDirPath
+ GroupWritableDirPathSafe
+ GroupWritableForwardFileSafe
+ GroupWritableIncludeFileSafe
+ GroupWritableAliasFile
+ HelpFileinUnsafeDirPath
+ WorldWritableAliasFile
+ ForwardFileInGroupWritableDirPath
+ IncludeFileInGroupWritableDirPath
+ ForwardFileInUnsafeDirPath
+ IncludeFileInUnsafeDirPath
+ ForwardFileInUnsafeDirPathSafe
+ IncludeFileInUnsafeDirPathSafe
+ MapInUnsafeDirPath
+ LinkedAliasFileInWritableDir
+ LinkedClassFileInWritableDir
+ LinkedForwardFileInWritableDir
+ LinkedIncludeFileInWritableDir
+ LinkedMapInWritableDir
+ LinkedServiceSwitchFileInWritableDir
+ FileDeliveryToHardLink
+ FileDeliveryToSymLink
+ WriteMapToHardLink
+ WriteMapToSymLink
+ WriteStatsToHardLink
+ WriteStatsToSymLink
+ RunProgramInUnsafeDirPath
+ RunWritableProgram
+ New DontProbeInterfaces option to turn off the inclusion of all the
+ interface names in $=w on startup. In particular, if you
+ have lots of virtual interfaces, this option will speed up
+ startup. However, unless you make other arrangements, mail
+ sent to those addresses will be bounced.
+ Automatically create alias databases if they don't exist and
+ AutoRebuildAliases is set.
+ Add PrivacyOptions=noetrn flag to disable the SMTP ETRN command.
+ Suggested by Christophe Wolfhugel of the Institut Pasteur.
+ Add PrivacyOptions=noverb flag to disable the SMTP VERB command.
+ When determining the client host name ($&{client_name} macro), do
+ a forward (A) DNS lookup on the result of the PTR lookup
+ and compare results. If they differ or if the PTR lookup
+ fails, &{client_name} will contain the IP address
+ surrounded by square brackets (e.g. [127.0.0.1]).
+ New map flag: -Tx appends "x" to lookups that return temporary failure
+ (i.e, it is like -ax for the temporary failure case, in
+ contrast to the success case).
+ New syntax to do limited checking of header syntax. A config line
+ of the form:
+ HHeader: $>Ruleset
+ causes the indicated Ruleset to be invoked on the Header
+ when read. This ruleset works like the check_* rulesets --
+ that is, it can reject mail on the basis of the contents.
+ Limit the size of the HELO/EHLO parameter to prevent spammers
+ from hiding their connection information in Received:
+ headers.
+ When SingleThreadDelivery is active, deliveries to locked hosts
+ are skipped. This will cause the delivering process to
+ try the next MX host or queue the message if no other MX
+ hosts are available. Suggested by Alexander Litvin.
+ The [FILE] mailer type now delivers to the file specified in the
+ A= equate of the mailer definition instead of $u. It also
+ obeys all of the F= mailer flags such as the MIME
+ 7/8 bit conversion flags. This is useful for defining
+ a mailer which delivers to the same file regardless of the
+ recipient (e.g. 'A=FILE /dev/null' to discard unwanted mail).
+ Do not assume the identity of a remote connection is root@localhost
+ if the remote connection closes the socket before the
+ remote identity can be queried.
+ Change semantics of the F=S mailer flag back to 8.7.5 behavior.
+ Some mailers, including procmail, require that the real
+ uid is left unchanged by sendmail. Problem noted by Per
+ Hedeland of Ericsson.
+ No longer is the src/obj*/Makefile selected from a large list -- it
+ is now generated using the information in BuildTools/OS/ --
+ some of the details are determined dynamically via
+ BuildTools/bin/configure.sh.
+ The other programs in the sendmail distribution -- mail.local,
+ mailstats, makemap, praliases, rmail, and smrsh -- now use
+ the new Build method which creates an operating system
+ specific Makefile using the information in BuildTools.
+ Make 4xx reply codes to the SMTP MAIL command be non-sticky (i.e.,
+ a failure on one message won't affect future messages to the
+ same host). This is necessary if the remote host sends
+ a 451 error if the domain of the sender does not resolve
+ as is common in anti-spam configurations. Problem noted
+ by Mitchell Blank Jr of Exec-PC.
+ New "discard" mailer for check_* rulesets and header checking
+ rulesets. If one of the above rulesets resolves to the
+ $#discard mailer, the commands will be accepted but the
+ message will be completely discarded after it is accepting.
+ This means that even if only one of the recipients
+ resolves to the $#discard mailer, none of the recipients
+ will receive the mail. Suggested by Brian Kantor.
+ All but the last cloned envelope of a split envelope were queued
+ instead of being delivered. Problem noted by John Caruso
+ of CNET: The Computer Network.
+ Fix deadlock situation in persistent host status file locking.
+ Syslog an error if a user forward file could not be read due to
+ an error. Patch from John Beck of Sun Microsystems.
+ Use the first name returned on machine lookups when canonifying a
+ hostname via NetInfo. Patch from Timm Wetzel of GWDG.
+ Clear the $&{client_addr}, $&{client_name}, and $&{client_port}
+ macros when delivering a bounce message to prevent
+ rejection by a check_compat ruleset which uses these macros.
+ Problem noted by Jens Hamisch of AgiX Internetservices GmbH.
+ If the check_relay ruleset resolves to the the error mailer, the
+ error in the $: portion of the resolved triplet is used
+ in the rejection message given to the remote machine.
+ Suggested by Scott Gifford of The Internet Ramp.
+ Set the $&{client_addr}, $&{client_name}, and $&{client_port} macros
+ before calling the check_relay ruleset. Suggested by Scott
+ Gifford of The Internet Ramp.
+ Sendmail would get a segmentation fault if a mailer exited with an
+ exit code of 79. Problem noted by Aaron Schrab of ExecPC
+ Internet. Fix from Christophe Wolfhugel of the Pasteur
+ Institute.
+ Separate snprintf/vsnprintf routines into separate file for use by
+ mail.local.
+ Allow multiple map lookups on right hand side, e.g.,
+ R$* $( host $1 $) $| $( passwd $1 $). Patch from
+ Christophe Wolfhugel of the Pasteur Institute.
+ Properly generate success DSN messages if requested for aliases
+ which have owner- aliases. Problem noted by Kari Hurtta
+ of the Finnish Meteorological Institute.
+ Properly display delayed-expansion macros ($&{macroname}) in
+ address test mode (-bt). Problem noted by Bryan Costales
+ of InfoBeat, Inc.
+ -qR could sometimes match names incorrectly. Problem noted by
+ Lutz Euler of Lavielle EDV Systemberatung GmbH & Co.
+ Include a magic number and version in the StatusFile for the
+ mailstats command.
+ Record the number of rejected and discarded messages in the
+ StatusFile for display by the mailstats command. Patch
+ from Randall Winchester of the University of Maryland.
+ IDENT returns where the OSTYPE field equals "OTHER" now list the
+ user portion as IDENT:username@site instead of
+ username@site to differentiate the two. Suggested by
+ Kari Hurtta of the Finnish Meteorological Institute.
+ Enforce timeout for LDAP queries. Patch from Per Hedeland of
+ Ericsson.
+ Change persistent host status filename substitution so '/' is
+ replaced by ':' instead of '|' to avoid clashes. Also
+ avoid clashes with hostnames with leading dots. Fix from
+ Mitchell Blank Jr. of Exec-PC.
+ If the system lock table is full, only attempt to create a new
+ queue entry five times before giving up. Previously, it
+ was attempted indefinitely which could cause the partition
+ to run out of inodes. Problem noted by Suzie Weigand of
+ Stratus Computer, Inc.
+ In verbose mode, warn if the sendmail.cf version is less than the
+ currently supported version.
+ Sorting for QueueSortOrder=host is now case insensitive. Patch
+ from Randall S. Winchester of the University of Maryland.
+ Properly quote a full name passed via the -F command line option,
+ the Full-Name: header, or the NAME environment variable if
+ it contains characters which must be quoted. Problem noted
+ by Kari Hurtta of the Finnish Meteorological Institute.
+ Avoid possible race condition that unlocked a mail job before
+ releasing the transcript file on systems that use flock(2).
+ In some cases, this might result in a "Transcript Unavailable"
+ message in error bounces.
+ Accept SMTP replies which contain only a reply code and no
+ accompanying text. Problem noted by Fernando Fraticelli of
+ Digital Equipment Corporation.
+ Portability:
+ AIX 4.1 uses int for SOCKADDR_LEN_T from Motonori Nakamura
+ of Kyoto University.
+ AIX 4.2 requires <userpw.h> before <usersec.h>. Patch from
+ Randall S. Winchester of the University of
+ Maryland.
+ AIX 4.3 from Valdis Kletnieks of Virginia Tech CNS.
+ CRAY T3E from Manu Mahonen of Center for Scientific Computing
+ in Finland.
+ Digital UNIX now uses statvfs for determining free
+ disk space. Patch from Randall S. Winchester of
+ the University of Maryland.
+ HP-UX 11.x from Richard Allen of Opin Kerfi HF and
+ Regis McEwen of Progress Software Corporation.
+ IRIX 64 bit fixes from Kari Hurtta of the Finnish
+ Meteorological Institute.
+ IRIX 6.2 configuration fix for mail.local from Michael Kyle
+ of CIC/Advanced Computing Laboratory.
+ IRIX 6.5 from Thomas H Jones II of SGI.
+ IRIX 6.X load average code from Bob Mende of SGI.
+ QNX from Glen McCready <glen@qnx.com>.
+ SCO 4.2 and 5.x use /usr/bin instead of /usr/ucb for links
+ to sendmail. Install with group bin instead of kmem
+ as kmem does not exist. From Guillermo Freige of
+ Gobernacion de la Pcia de Buenos Aires and Paul
+ Fischer of BTG, Inc.
+ SunOS 4.X does not include memmove(). Patch from
+ Per Hedeland of Ericsson.
+ SunOS 5.7 includes getloadavg() function for determining
+ load average. Patch from John Beck of Sun
+ Microsystems.
+ CONFIG: Increment version number of config file.
+ CONFIG: add DATABASE_MAP_TYPE to set the default type of database
+ map for the various maps. The default is hash. Patch from
+ Robert Harker of Harker Systems.
+ CONFIG: new confEBINDIR m4 variable for defining the executable
+ directory for certain programs.
+ CONFIG: new FEATURE(local_lmtp) to use the new LMTP support for
+ local mail delivery. By the default, /usr/libexec/mail.local
+ is used. This is expected to be the mail.local shipped
+ with 8.9 which is LMTP capable. The path is based on the
+ new confEBINDIR m4 variable.
+ CONFIG: Use confEBINDIR in determining path to smrsh for
+ FEATURE(smrsh). Note that this changes the default from
+ /usr/local/etc/smrsh to /usr/libexec/smrsh. To obtain the
+ old path for smrsh, use FEATURE(smrsh, /usr/local/etc/smrsh).
+ CONFIG: DOMAIN(generic) changes the default confFORWARD_PATH to
+ include $z/.forward.$w+$h and $z/.forward+$h which allow
+ the user to setup different .forward files for
+ user+detail addressing.
+ CONFIG: add confMAX_RCPTS_PER_MESSAGE, confDONT_PROBE_INTERFACES,
+ and confDONT_BLAME_SENDMAIL to set MaxRecipientsPerMessage,
+ DontProbeInterfaces, and DontBlameSendmail options.
+ CONFIG: by default do not allow relaying (that is, accepting mail
+ from outside your domain and sending it to another host
+ outside your domain).
+ CONFIG: new FEATURE(promiscuous_relay) to allow mail relaying from
+ any site to any site.
+ CONFIG: new FEATURE(relay_entire_domain) allows any host in your
+ domain as defined by the 'm' class ($=m) to relay.
+ CONFIG: new FEATURE(relay_based_on_MX) to allow relaying based on
+ the MX records of the host portion of an incoming recipient.
+ CONFIG: new FEATURE(access_db) which turns on the access database
+ feature. This database give you the ability to allow
+ or refuse to accept mail from specified domains for
+ administrative reasons. By default, names that are listed
+ as "OK" in the access db are domain names, not host names.
+ CONFIG: new confCR_FILE m4 variable for defining the name of the file
+ used for class 'R'. Defaults to /etc/mail/relay-domains.
+ CONFIG: new command RELAY_DOMAIN(domain) and RELAY_DOMAIN_FILE(file)
+ to add items to class 'R' ($=R) for hosts allowed to relay.
+ CONFIG: new FEATURE(relay_hosts_only) to change the behavior
+ of FEATURE(access_db) and class 'R' to lookup individual
+ host names only.
+ CONFIG: new FEATURE(loose_relay_check). Normally, if a recipient
+ using % addressing is used, e.g. user%site@othersite,
+ and othersite is in class 'R', the check_rcpt ruleset
+ will strip @othersite and recheck user@site for relaying.
+ This feature changes that behavior. It should not be
+ needed for most installations.
+ CONFIG: new FEATURE(relay_local_from) to allow relaying if the
+ domain portion of the mail sender is a local host. This
+ should only be used if absolutely necessary as it opens
+ a window for spammers. Patch from Randall S. Winchester of
+ the University of Maryland.
+ CONFIG: new FEATURE(blacklist_recipients) turns on the ability to
+ block incoming mail destined for certain recipient
+ usernames, hostnames, or addresses.
+ CONFIG: By default, MAIL FROM: commands in the SMTP session will be
+ refused if the host part of the argument to MAIL FROM: cannot
+ be located in the host name service (e.g., DNS).
+ CONFIG: new FEATURE(accept_unresolvable_domains) accepts
+ unresolvable hostnames in MAIL FROM: SMTP commands.
+ CONFIG: new FEATURE(accept_unqualified_senders) accepts
+ MAIL FROM: senders which do not include a domain.
+ CONFIG: new FEATURE(rbl) Turns on rejection of hosts found in the
+ Realtime Blackhole List. You can specify the RBL name
+ server to contact by specifying it as an optional argument.
+ The default is rbl.maps.vix.com. For details, see
+ http://maps.vix.com/rbl/.
+ CONFIG: Call Local_check_relay, Local_check_mail, and
+ Local_check_rcpt from check_relay, check_mail, and
+ check_rcpt. Users with local rulesets should place the
+ rules using LOCAL_RULESETS. If a Local_check_* ruleset
+ returns $#OK, the message is accepted. If the ruleset
+ returns a mailer, the appropriate action is taken, else
+ the return of the ruleset is ignored.
+ CONFIG: CYRUS_MAILER_FLAGS now includes the /:| mailer flags by
+ default to support file, :include:, and program deliveries.
+ CONFIG: Remove the default for confDEF_USER_ID so the binary can
+ pick the proper default value. See the SECURITY note
+ above for more information.
+ CONFIG: FEATURE(nodns) now warns the user that the feature is a
+ no-op. Patch from Kari Hurtta of the Finnish
+ Meteorological Institute.
+ CONFIG: OSTYPE(osf1) now sets DefaultUserID (confDEF_USER_ID) to
+ daemon since DEC's /bin/mail will drop the envelope
+ sender if run as mailnull. See the Digital UNIX section
+ of src/README for more information. Problem noted by
+ Kari Hurtta of the Finnish Meteorological Institute.
+ CONFIG: .cf files are now stored in the same directory with the
+ .mc files instead of in the obj directory.
+ CONFIG: New options confSINGLE_LINE_FROM_HEADER,
+ confALLOW_BOGUS_HELO, and confMUST_QUOTE_CHARS for
+ setting SingleLineFromHeader, AllowBogusHELO, and
+ MustQuoteChars respectively.
+ MAIL.LOCAL: support -l flag to run LMTP on stdin/stdout. This
+ SMTP-like protocol allows detailed reporting of delivery
+ status on a per-user basis. Code donated by John Myers of
+ CMU (now of Netscape).
+ MAIL.LOCAL: HP-UX support from Randall S. Winchester of the
+ University of Maryland. NOTE: mail.local is not
+ compatible with the stock HP-UX mail format. Be sure to
+ read mail.local/README.
+ MAIL.LOCAL: Prevent other mail delivery agents from stealing a
+ mailbox lock. Patch from Randall S. Winchester of the
+ University of Maryland.
+ MAIL.LOCAL: glibc portability from John Kennedy of Cal State
+ University, Chico.
+ MAIL.LOCAL: IRIX portability from Kari Hurtta of the Finnish
+ Meteorological Institute.
+ MAILSTATS: Display the number of rejected and discarded messages
+ in the StatusFile. Patch from Randall Winchester of the
+ University of Maryland.
+ MAKEMAP: New -s flag to ignore safety checks on database map files
+ such as linked files in world writable directories.
+ MAKEMAP: Add support for Berkeley DB 2.X. Remove OLD_NEWDB support.
+ PRALIASES: Add support for Berkeley DB 2.X.
+ PRALIASES: Do not automatically include NDBM support. Problem
+ noted by Ralf Hildebrandt of the Technical University of
+ Braunschweig.
+ RMAIL: Improve portability for other platforms. Patches from
+ Randall S. Winchester of the University of Maryland and
+ Kari Hurtta of the Finnish Meteorological Institute.
+ Changed Files:
+ src/Makefiles/Makefile.* files have been modified to use
+ the new build mechanism and are now BuildTools/OS/*.
+ src/makesendmail changed to symbolic link to src/Build.
+ New Files:
+ BuildTools/M4/header.m4
+ BuildTools/M4/depend/BSD.m4
+ BuildTools/M4/depend/CC-M.m4
+ BuildTools/M4/depend/NCR.m4
+ BuildTools/M4/depend/Solaris.m4
+ BuildTools/M4/depend/X11.m4
+ BuildTools/M4/depend/generic.m4
+ BuildTools/OS/AIX.4.2
+ BuildTools/OS/AIX.4.x
+ BuildTools/OS/CRAYT3E.2.0.x
+ BuildTools/OS/HP-UX.11.x
+ BuildTools/OS/IRIX.6.5
+ BuildTools/OS/NEXTSTEP.4.x
+ BuildTools/OS/NeXT.4.x
+ BuildTools/OS/NetBSD.8.3
+ BuildTools/OS/QNX
+ BuildTools/OS/SunOS.5.7
+ BuildTools/OS/dcosx.1.x.NILE
+ BuildTools/README
+ BuildTools/Site/README
+ BuildTools/bin/Build
+ BuildTools/bin/configure.sh
+ BuildTools/bin/find_m4.sh
+ BuildTools/bin/install.sh
+ Makefile
+ cf/cf/Build
+ cf/cf/generic-hpux10.cf
+ cf/feature/accept_unqualified_senders.m4
+ cf/feature/accept_unresolvable_domains.m4
+ cf/feature/access_db.m4
+ cf/feature/blacklist_recipients.m4
+ cf/feature/loose_relay_check.m4
+ cf/feature/local_lmtp.m4
+ cf/feature/promiscuous_relay.m4
+ cf/feature/rbl.m4
+ cf/feature/relay_based_on_MX.m4
+ cf/feature/relay_entire_domain.m4
+ cf/feature/relay_hosts_only.m4
+ cf/feature/relay_local_from.m4
+ cf/ostype/qnx.m4
+ contrib/doublebounce.pl
+ mail.local/Build
+ mail.local/Makefile.m4
+ mail.local/README
+ mailstats/Build
+ mailstats/Makefile.m4
+ makemap/Build
+ makemap/Makefile.m4
+ praliases/Build
+ praliases/Makefile.m4
+ rmail/Build
+ rmail/Makefile.m4
+ rmail/rmail.0
+ smrsh/Build
+ smrsh/Makefile.m4
+ src/Build
+ src/Makefile.m4
+ src/snprintf.c
+ Deleted Files:
+ cf/cf/Makefile (replaced by Makefile.dist)
+ mail.local/Makefile
+ mail.local/Makefile.dist
+ mailstats/Makefile
+ mailstats/Makefile.dist
+ makemap/Makefile
+ makemap/Makefile.dist
+ praliases/Makefile
+ praliases/Makefile.dist
+ rmail/Makefile
+ smrsh/Makefile
+ smrsh/Makefile.dist
+ src/Makefile
+ src/Makefiles/Makefile.AIX.4 (split into AIX.4.x and AIX.4.2)
+ src/Makefiles/Makefile.SMP_DC.OSx.NILE
+ (renamed BuildTools/OS/dcosx.1.x.NILE)
+ src/Makefiles/Makefile.Utah (obsolete platform)
+ Renamed Files:
+ READ_ME => README
+ cf/cf/Makefile.dist => Makefile
+ cf/cf/obj/* => cf/cf/*
+ src/READ_ME => src/README
+
8.8.8/8.8.8 97/10/24
If the check_relay ruleset failed, the relay= field was logged
incorrectly. Problem noted by Kari Hurtta of the Finnish
@@ -903,7 +1508,7 @@ summary of the changes in that release.
If the F=l flag was set on an SMTP mailer to indicate that it is
actually local delivery, and NOTIFY=SUCCESS is specified in
the envelope, and the receiving SMTP server speaks DSN, then
- the DSN would be both generated locally and propogated to the
+ the DSN would be both generated locally and propagated to the
other end.
The U= mailer field didn't correctly extract the group id if the
user id was numeric. Problem noted by Kenneth Herron of
@@ -913,7 +1518,7 @@ summary of the changes in that release.
not occur if it exceeded the maximum _output_ size. Problem
reported by Kyle Jones of UUNET.
PORTABILITY FIXES:
- AIX4: 4.1 does't have a working setreuid(2); change the
+ AIX4: 4.1 doesn't have a working setreuid(2); change the
AIX4 defines to use seteuid(2) instead, which
works on 4.1 as well as 4.2. Problem noted by
Håkan Lindholm of interAF, Sweden.
@@ -963,7 +1568,7 @@ summary of the changes in that release.
Solaris: Don't use the system getusershell(3); it can
apparently corrupt the heap in some circumstances.
Problem found by Ken Pizzini of Spry, Inc.
- OP.ME: document several mailer flags that were accidently omitted
+ OP.ME: document several mailer flags that were accidentally omitted
from this document. These flags were F=d, F=j, F=R, and F=9.
CONFIG: no changes.
@@ -1060,7 +1665,7 @@ summary of the changes in that release.
Log open file descriptors for the "cannot dup" messages in deliver();
this is an attempt to track down a bug that one person seems
to be having (it may be a Solaris bug!).
- DSN NOTIFY parameters were not properly propogated across queue runs;
+ DSN NOTIFY parameters were not properly propagated across queue runs;
this caused the NOTIFY info to sometimes be lost. Problem
pointed out by Claus Assmann of the
Christian-Albrechts-University of Kiel.
@@ -1201,7 +1806,7 @@ summary of the changes in that release.
This could cause mail to addresses such as [foo.com] to bounce
or get dropped. Problem noted by Christophe Wolfhugel of the
Pasteur Institute.
- DSNs were inconsistent if a failure occured during the DATA phase
+ DSNs were inconsistent if a failure occurred during the DATA phase
rather than the RCPT phase: the Action: would be correct, but
the detailed status information would be wrong. Problem noted
by Bob Snyder of General Electric Company.
@@ -1441,7 +2046,7 @@ summary of the changes in that release.
be set to be lower than Timeout.connect on the principle that
the mail should go through quickly to responsive hosts; less
responsive hosts get to wait for the next queue run.
- Fix a problem on Solaris that occassionally causes programs
+ Fix a problem on Solaris that occasionally causes programs
(such as vacation) to hang with their standard input connected
to a UDP port. It also created some signal handling problems.
The problems turned out to be an interaction between vfork(2)
@@ -1713,12 +2318,12 @@ summary of the changes in that release.
Completely delete the Bcc: header if and only if there are other
valid recipient headers (To:, Cc: or Apparently-To:, the
last being a historic botch, of course). If Bcc: is the
- only recipient header in the message, it's value is tossed,
+ only recipient header in the message, its value is tossed,
but the header name is kept. The old behaviour (always keep
the header name and toss the value) allowed primary recipients
to see that a Bcc: went to _someone_.
Include queue id on ``Authentication-Warning: <host>: <user> set
- sender to <addresss> using -f'' syslog messages. Suggested
+ sender to <address> using -f'' syslog messages. Suggested
by Kari Hurtta.
If a sequence or switch map lookup entry gets a tempfail but then
continues on to another map type, but the name is not found,
@@ -1752,7 +2357,7 @@ summary of the changes in that release.
is not set, since this is required to get the actual DSNs
created. Problem pointed out by John Gardiner Myers of CMU.
Log permission problems that cause .forward and :include: files to
- be untrusted or ignored on log level 12 and higher. Suggestted
+ be untrusted or ignored on log level 12 and higher. Suggested
by Randy Martin of Clemson University.
Allow user ids in U= clauses of M lines to have hyphens and
underscores.
@@ -1779,7 +2384,7 @@ summary of the changes in that release.
Technological University.
When converting a message to Quoted-Printable, prevent any lines with
dots alone on a line by themselves. This is because of the
- preponderence of broken mailers that still get this wrong.
+ preponderance of broken mailers that still get this wrong.
Code contributed by Per Hedeland of Ericsson.
Fix F{macro}/file construct -- it previously did nothing. Pointed
out by Bjart Kvarme of USIT/UiO (Norway).
@@ -1813,7 +2418,7 @@ summary of the changes in that release.
Extensive cleanups to map open code to handle a locking race condition
in ndbm, hash, and btree format database files on some (most
non-4.4-BSD based) OS architectures. This should solve the
- occassional "user unknown" problem during alias rebuilds that
+ occasional "user unknown" problem during alias rebuilds that
has plagued me for quite some time. Based on a patch from
Thomas Dwyer III of Michigan Technological University.
PORTABILITY FIXES:
@@ -1957,7 +2562,7 @@ summary of the changes in that release.
If you have a name with a trailing dot, and you try looking it
up using gethostbyname without the dot (for /etc/hosts
compatibility), be sure to turn off RES_DEFNAMES and
- RES_DNSRCH to avoid finding the wrong name accidently.
+ RES_DNSRCH to avoid finding the wrong name accidentally.
Problem noted by Charles Amos of the University of
Maryland.
Don't do timeouts in collect if you are not running SMTP.
@@ -2224,7 +2829,7 @@ summary of the changes in that release.
contributed by Roy Mongiovi of Georgia Tech (my main
contribution was to make it configurable).
Save i-number of df file in qf file to simplify rebuilding of queue
- after disasterous disk crash. Suggested by Kyle Jones of
+ after disastrous disk crash. Suggested by Kyle Jones of
UUNET; closely based on code from KJS DECWRL code written
by Paul Vixie. NOTA BENE: The qf files produced by 8.7
are NOT back compatible with 8.6 -- that is, you can convert
@@ -2658,8 +3263,8 @@ summary of the changes in that release.
Probe the network interfaces to find alternate names for this
host. Requires the SIOCGIFCONF ioctl call. Code
contributed by SunSoft.
- Add "E" configuration line to set or propogate environment
- variables into children. "E<envar>" will propogate
+ Add "E" configuration line to set or propagate environment
+ variables into children. "E<envar>" will propagate
the named variable from the environment when sendmail
was invoked into any children it calls; "E<envar>=<value>"
sets the named variable to the indicated value. Any
@@ -2837,12 +3442,12 @@ summary of the changes in that release.
Rochester Medical Center.
Altos System V (``the first UNIX/XENIX merge the Altos
did for their Series 1000 & Series 2000 line;
- their merged code was licenced back to AT&T and
+ their merged code was licensed back to AT&T and
Microsoft and became System V release 3.2'') from
Tim Rice <timr@crl.com>.
OSF/1 running on Intel Paragon from Jeff A. Earickson
<jeff@ssd.intel.com> of Intel Scalable Systems
- Divison.
+ Division.
Amdahl UTS System V 2.1.5 (SVr3-based) from Janet Jackson
<janet@dialix.oz.au>.
System V Release 4 (statvfs semantic fix) from Alain
@@ -2995,7 +3600,7 @@ summary of the changes in that release.
properly deal with ``group: addr1, ... addrN;'' syntax.
CONFIG: Require OSTYPE macro (the defaults really don't apply to
any real systems any more) and tweak the DOMAIN macro
- so that it is less likely that users will accidently use
+ so that it is less likely that users will accidentally use
the Berkeley defaults. Also, create some generic files
that really can be used in the real world.
CONFIG: Add new configuration macros to set character sets for
@@ -3210,7 +3815,7 @@ summary of the changes in that release.
because it was passed as a printf-style format string.
In some cases this could cause core dumps.
Avoid possible buffer overrun in returntosender() if error
- message is quite ling. From Fletcher Mattox of the
+ message is quite long. From Fletcher Mattox of the
University of Texas.
Fix a problem that would silently drop "too many hops" error
messages if and only if you were sending to an alias.
@@ -3585,7 +4190,7 @@ summary of the changes in that release.
DOC: Clarify $@ and $: in the Install & Op Guide. From Kimmo
Suominen.
Portability fixes:
- Unicos from David L. Kensiski of Sterling Sofware.
+ Unicos from David L. Kensiski of Sterling Software.
DomainOS from Don Lewis of Silicon Systems.
GNU m4 1.0.3 from Karst Koymans of Utrecht University.
Convex from Kimmo Suominen <kim@tac.nyc.ny.us>.
@@ -3636,8 +4241,8 @@ summary of the changes in that release.
the assumption that the alias file is well controlled.
Security fix: root was not treated suspiciously enough when
looking into subdirectories. This would potentially
- allow a cracker to examine files that were publically
- readable but in a non-publically searchable directory.
+ allow a cracker to examine files that were publicly
+ readable but in a non-publicly searchable directory.
Fix a problem that causes an error on QUIT on a cached
connection to create problems on the current job.
These are typically unrelated, so errors occur in
@@ -3992,7 +4597,7 @@ summary of the changes in that release.
Portability fixes for A/UX and Encore UMAX V.
Fix error message handling -- if you had a name server down
causing an error during parsing, that message was never
- propogated to the queue file.
+ propagated to the queue file.
8.6/8.6 93/10/05
Configuration cleanup: make it easier to undo IDENTPROTO in
@@ -4485,13 +5090,13 @@ summary of the changes in that release.
If the name server timed out over several days, no "timed out"
message would ever be sent back. The timeout code
has been moved from markfailure() to dropenvelope()
- so that all such failures should be diagnosted. Pointed
+ so that all such failures should be diagnosed. Pointed
out by Christophe Wolfhugel and others.
Relax safefile() constraints: directories in an include or
forward path must be readable by self if the controlling
user owns the entry, readable by all otherwise (e.g.,
when reading your .forward file, you have to own and
- have X permssion in it; everyone needs X permission in
+ have X permission in it; everyone needs X permission in
the root and directories leading up to your home);
include files must be readable by anyone, but need not
be owned by you.
@@ -4525,7 +5130,7 @@ summary of the changes in that release.
log. For example, if you lost a connection, don't
bother reporting that fact on the connection you lost.
Add some "extended debugging" flags to try to track down
- why we get occassional problems with file descriptor
+ why we get occasional problems with file descriptor
one being closed when execing a mailer; it seems to
only happen when there has been another error in the
same transaction. This requires XDEBUG, defined
@@ -4644,7 +5249,7 @@ summary of the changes in that release.
the first database listed.
Rearrange doc subdirectory for 4.4BSD release tape.
CONFIG: put $r into the Received line. This was an oversight.
- CONFIG: fix typo (call to ruleset 99 should have been rulset 90).
+ CONFIG: fix typo (call to ruleset 99 should have been ruleset 90).
CONFIG: move "auxiliary" subroutines to be in ruleset 90-99
range -- in the long run, single digit rulesets may
become reserved for builtin use by sendmail.
@@ -5053,7 +5658,7 @@ summary of the changes in that release.
Eric Wassenaar.
Always respond "quickly" to RCPT command; do alias expansion and
the like later. This also means that mail for lists that
- have errors will be acccepted, and an error sent back
+ have errors will be accepted, and an error sent back
later. This is done by instantiating the queue file
and then immediately running and requeueing it.
diff --git a/usr.sbin/sendmail/cf/README b/contrib/sendmail/cf/README
index 184a3532559e..df50c9da1d03 100644
--- a/usr.sbin/sendmail/cf/README
+++ b/contrib/sendmail/cf/README
@@ -2,9 +2,9 @@
NEW SENDMAIL CONFIGURATION FILES
- Eric Allman <eric@CS.Berkeley.EDU>
+ Eric Allman <eric@Sendmail.ORG>
- @(#)README 8.124 (Berkeley) 9/23/97
+ @(#)README 8.174 (Berkeley) 6/30/98
This document describes the sendmail configuration files being used
@@ -33,7 +33,7 @@ a newer version. You can m4-expand on their system, then run locally.
SunOS's /usr/5bin/m4 or BSD-Net/2's m4 both work. GNU m4 version 1.1
or later also works. Unfortunately, I'm told that the M4 on BSDI 1.0
doesn't work -- you'll have to use a Net/2 or GNU version. GNU m4 is
-available from ftp://prep.ai.mit.edu/pub/gnu/m4-1.4.tar.gz (check for
+available from ftp://ftp.gnu.org/pub/gnu/m4-1.4.tar.gz (check for
the latest version). EXCEPTIONS: DEC's m4 on Digital UNIX 4.x is broken
(3.x is fine). Use GNU m4 on this platform.
@@ -46,7 +46,7 @@ To get started, you may want to look at tcpproto.mc (for TCP-only
sites), uucpproto.mc (for UUCP-only sites), and clientproto.mc (for
clusters of clients using a single mail host). Others are versions
that we use at Berkeley, although not all are in current use. For
-example, ucbarpa has gone away, but I've left ucbarpa.mc in because
+example, ucbvax has gone away, but I've left ucbvax.mc in because
it demonstrates some interesting techniques.
I'm not pretending that this README describes everything that these
@@ -57,7 +57,8 @@ to great effect. But it should get you started.
*** BE SURE YOU CUSTOMIZE THESE FILES! They have some ***
*** Berkeley-specific assumptions built in, such as the name ***
*** of our UUCP-relay. You'll want to create your own domain ***
-*** description, and use that in place of domain/Berkeley.m4. ***
+*** description, and use that in place of ***
+*** domain/Berkeley.EDU.m4. ***
*******************************************************************
@@ -85,38 +86,14 @@ Let's examine a typical .mc file:
divert(-1)
#
- # Copyright (c) 1983 Eric P. Allman
+ # Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ # Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions
- # are met:
- # 1. Redistributions of source code must retain the above copyright
- # notice, this list of conditions and the following disclaimer.
- # 2. Redistributions in binary form must reproduce the above copyright
- # notice, this list of conditions and the following disclaimer in
- # the documentation and/or other materials provided with the
- # distribution.
- # 3. All advertising materials mentioning features or use of this
- # software # must display the following acknowledgement:
- # This product includes software developed by the University of
- # California, Berkeley and its contributors.
- # 4. Neither the name of the University nor the names of its
- # contributors may be used to endorse or promote products derived
- # from this software without specific prior written permission.
- #
- # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS''
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
- # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- # OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
- # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ # By using this file, you agree to the terms and conditions set
+ # forth in the LICENSE file which can be found at the top level of
+ # the sendmail distribution.
#
#
@@ -182,7 +159,7 @@ rules are that the order should be:
Sendmail uses the M4 macro processor to ``compile'' the configuration
files. The most important thing to know is that M4 is stream-based,
that is, it doesn't understand about lines. For this reason, in some
-places you may see the word ``dnl'', which standards for ``delete
+places you may see the word ``dnl'', which stands for ``delete
through newline''; essentially, it deletes all characters starting
at the ``dnl'' up to and including the next newline character. In
most cases sendmail uses this only to avoid lots of unnecessary
@@ -207,6 +184,16 @@ expanded. This also applies to
because ``define'' is an M4 keyword. If you want to use them, surround
them with directed quotes, `like this'.
++----------------+
+| FILE LOCATIONS |
++----------------+
+
+sendmail 8.9 has introduced a new configuration directory for sendmail
+related files, /etc/mail. The new files available for sendmail 8.9 --
+the class 'R' /etc/mail/relay-domains and the access database
+/etc/mail/access -- take advantage of this new directory. 8.9 will
+serve as a transition release. Beginning with 8.10, all of the files
+will use this directory by default.
+--------+
| OSTYPE |
@@ -243,7 +230,7 @@ QUEUE_DIR [/var/spool/mqueue] The directory containing
STATUS_FILE [/etc/sendmail.st] The file containing status
information.
LOCAL_MAILER_PATH [/bin/mail] The program used to deliver local mail.
-LOCAL_MAILER_FLAGS [rmn] The flags used by the local mailer. The
+LOCAL_MAILER_FLAGS [rmn9] The flags used by the local mailer. The
flags lsDFM are always included.
LOCAL_MAILER_ARGS [mail -d $u] The arguments passed to deliver local
mail.
@@ -252,9 +239,9 @@ LOCAL_MAILER_MAX [undefined] If defined, the maximum size of local
LOCAL_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data
that ARRIVE from an address that resolves to the
local mailer and which are converted to MIME will be
- labelled with this character set.
+ labeled with this character set.
LOCAL_SHELL_PATH [/bin/sh] The shell used to deliver piped email.
-LOCAL_SHELL_FLAGS [eu] The flags used by the shell mailer. The
+LOCAL_SHELL_FLAGS [eu9] The flags used by the shell mailer. The
flags lsDFM are always included.
LOCAL_SHELL_ARGS [sh -c $u] The arguments passed to deliver "prog"
mail.
@@ -282,7 +269,7 @@ RELAY_MAILER_ARGS [IPC $h] The arguments passed to the relay mailer.
SMTP_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data
that ARRIVE from an address that resolves to one of
the SMTP mailers and which are converted to MIME will
- be labelled with this character set.
+ be labeled with this character set.
UUCP_MAILER_PATH [/usr/bin/uux] The program used to send UUCP mail.
UUCP_MAILER_FLAGS [undefined] Flags added to UUCP mailer. Default
flags are `DFMhuU' (and `m' for uucp-new mailer,
@@ -294,7 +281,7 @@ UUCP_MAILER_MAX [100000] The maximum size message accepted for
UUCP_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data
that ARRIVE from an address that resolves to one of
the UUCP mailers and which are converted to MIME will
- be labelled with this character set.
+ be labeled with this character set.
FAX_MAILER_PATH [/usr/local/lib/fax/mailfax] The program used to
submit FAX messages.
FAX_MAILER_ARGS [mailfax $u $h $f] The arguments passed to the FAX
@@ -325,9 +312,9 @@ PH_MAILER_PATH [/usr/local/etc/phquery] The path to the phquery
program.
PH_MAILER_FLAGS [ehmu] Flags for the phquery mailer.
PH_MAILER_ARGS [phquery -- $u] -- arguments to the phquery mailer.
-CYRUS_MAILER_FLAGS [A5@] The flags used by the cyrus mailer. The
- flags lsDFMnP are always included.
-CYRUS_MAILER_PATH [/usr/cyrus/bin/deliver] The progam used to deliver
+CYRUS_MAILER_FLAGS [A5@/:|] The flags used by the cyrus mailer. The
+ flags lsDFMnPq are always included.
+CYRUS_MAILER_PATH [/usr/cyrus/bin/deliver] The program used to deliver
cyrus mail.
CYRUS_MAILER_ARGS [deliver -e -m $h -- $u] The arguments passed
to deliver cyrus mail.
@@ -339,6 +326,9 @@ CYRUS_BB_MAILER_FLAGS [undefined] The flags used by the cyrusbb
mailer. The flags lsDFMnP are always included.
CYRUS_BB_MAILER_ARGS [deliver -e -m $u] The arguments passed
to deliver cyrusbb mail.
+confEBINDIR [/usr/libexec] The directory for executables.
+ Currently used for FEATURE(local_lmtp) and
+ FEATURE(smrsh).
@@ -509,13 +499,23 @@ optional parameter -- for example:
FEATURE(mailertable, dbm /usr/lib/mailertable)
+The default database map type for the table features can be set with
+
+ define(`DATABASE_MAP_TYPE', `dbm')
+
+which would set it to use ndbm databases. The default is the Berkeley DB
+hash database format. Note that you must still declare a database map type
+if you specify an argument to a FEATURE. DATABASE_MAP_TYPE is only used
+if no argument is given for the FEATURE.
+
Available features are:
use_cw_file Read the file /etc/sendmail.cw file to get alternate
names for this host. This might be used if you were
on a host that MXed for a dynamic set of other
hosts. If the set is static, just including the line
- "Cw<name1> <name2> ..." is probably superior.
+ "Cw<name1> <name2> ..." (where the names are fully
+ qualified domain names) is probably superior.
The actual filename can be overridden by redefining
confCW_FILE.
@@ -562,7 +562,16 @@ mailertable Include a "mailer table" which can be used to override
mailer:domain
where "mailer" is the internal mailer name, and "domain"
is where to send the message. These maps are not
- reflected into the message header.
+ reflected into the message header. As a special case,
+ the forms:
+ local:user
+ will forward to the indicated user using the local mailer,
+ local:
+ will forward to the original user in the e-mail address
+ using the local mailer, and
+ error:code message
+ will give an error message with the indicated code and
+ message.
domaintable Include a "domain table" which can be used to provide
domain name mapping. Use of this should really be
@@ -637,30 +646,32 @@ masquerade_entire_domain
NOTE: only domains within your jurisdiction and
current hierarchy should be masqueraded using this.
-genericstable This feature will cause certain addresses originating in the
- local domain or a domain listed in $=G to be looked up in a
- map and turned into another ("generic") form, which can change
- both the domain name and the user name. This is similar to
- the userdb functionality. The same types of addresses as for
- masquerading are looked up, i.e. only header sender addresses
- unless the allmasquerade and/or masquerade_envelope features
- are given. The addresses must be in the list of names given
+genericstable This feature will cause certain addresses originating locally
+ (i.e. that are unqualified) or a domain listed in $=G to be
+ looked up in a map and turned into another ("generic") form,
+ which can change both the domain name and the user name. This
+ is similar to the userdb functionality. The same types of
+ addresses as for masquerading are looked up, i.e. only header
+ sender addresses unless the allmasquerade and/or
+ masquerade_envelope features are given. Qualified addresses
+ must have the domain part in the list of names given by the
by the macros GENERICS_DOMAIN or GENERICS_DOMAIN_FILE
(analogously to MASQUERADE_DOMAIN and MASQUERADE_DOMAIN_FILE,
see below).
The argument of FEATURE(genericstable) may be the map
- defintion; the default map definition is:
+ definition; the default map definition is:
hash -o /etc/genericstable
The key for this table is either the full address or the
unqualified username (the former is tried first); the
value is the new user address. If the new user address does
- not include a domain, $j is used. Note that the address
- being looked up must be fully qualified. For local mail, it
- is necessary to use FEATURE(always_add_domain) for the
- addresses to be qualified.
+ not include a domain, it will be qualified in the standard
+ manner, i.e. using $j or the masquerade name. Note that the
+ address being looked up must be fully qualified. For local
+ mail, it is necessary to use FEATURE(always_add_domain) for
+ the addresses to be qualified.
virtusertable A domain-specific form of aliasing, allowing multiple
virtual domains to be hosted on one machine. For example,
@@ -705,10 +716,18 @@ nullclient This is a special case -- it creates a stripped down
The only other feature that should be used in conjunction
with this one is "nocanonify" (this causes addresses to
be sent unqualified via the SMTP connection; normally
- they are qualifed with the masquerade name, which
+ they are qualified with the masquerade name, which
defaults to the name of the hub machine). No mailers
should be defined. No aliasing or forwarding is done.
+local_lmtp Use an LMTP capable local mailer. The argument to this
+ feature is the pathname of an LMTP capable mailer. By
+ default, mail.local is used. This is expected to be the
+ mail.local which came with the 8.9 distribution which is
+ LMTP capable. The path to mail.local is set by the
+ confEBINDIR m4 variable -- making the default
+ LOCAL_MAILER_PATH /usr/libexec/mail.local.
+
local_procmail Use procmail as the local mailer. This mailer can
make use of the "user+indicator@local.host" syntax;
normally the +indicator is just tossed, but by default
@@ -722,18 +741,101 @@ local_procmail Use procmail as the local mailer. This mailer can
bestmx_is_local Accept mail as though locally addressed for any host that
lists us as the best possible MX record. This generates
additional DNS traffic, but should be OK for low to
- medium traffic hosts. THIS FEATURE IS FUNDAMENTALLY
- INCOMPATIBLE WITH WILDCARD MX RECORDS!!! If you have
- a wildcard MX record that matches your domain, you
- cannot use this feature.
+ medium traffic hosts. The argument may be a set of
+ domains, which will limit the feature to only apply to
+ these domains -- this will reduce unnecessary DNS
+ traffic. THIS FEATURE IS FUNDAMENTALLY INCOMPATIBLE WITH
+ WILDCARD MX RECORDS!!! If you have a wildcard MX record
+ that matches your domain, you cannot use this feature.
smrsh Use the SendMail Restricted SHell (smrsh) provided
with the distribution instead of /bin/sh for mailing
to programs. This improves the ability of the local
system administrator to control what gets run via
e-mail. If an argument is provided it is used as the
- pathname to smrsh; otherwise, /usr/local/etc/smrsh is
- assumed.
+ pathname to smrsh; otherwise, the path defined by
+ confEBINDIR is used for the smrsh binary -- by default,
+ /usr/libexec/smrsh is assumed.
+
+promiscuous_relay
+ By default, the sendmail configuration files do not permit
+ mail relaying (that is, accepting mail from outside your
+ domain and sending it to another host outside your domain).
+ This option sets your site to allow mail relaying from any
+ site to any site. In general, it is better to control the
+ relaying more carefully with the access db and the 'R'
+ class ($=R). Domains can be added to class 'R' by the
+ macros RELAY_DOMAIN or RELAY_DOMAIN_FILE (analogously to
+ MASQUERADE_DOMAIN and MASQUERADE_DOMAIN_FILE, see below).
+
+relay_entire_domain
+ By default, only hosts listed as RELAY in the access db
+ will be allowed to relay. This option also allows any
+ host in your domain as defined by the 'm' class ($=m).
+
+relay_hosts_only
+ By default, names that are listed as RELAY in the access
+ db and class 'R' ($=R) are domain names, not host names.
+ For example, if you specify ``foo.com'', then mail to or
+ from foo.com, abc.foo.com, or a.very.deep.domain.foo.com
+ will all be accepted for relaying. This feature changes
+ the behaviour to lookup individual host names only.
+
+relay_based_on_MX
+ Turns on the ability to allow relaying based on the MX
+ records of the host portion of an incoming recipient. See
+ description below for more information before using this
+ feature.
+
+relay_local_from
+ Allows relaying if the domain portion of the mail sender
+ is a local host. This should only be used if absolutely
+ necessary as it opens a window for spammers.
+
+accept_unqualified_senders
+ Normally, MAIL FROM: commands in the SMTP session will be
+ refused if the connection is a network connection and the
+ sender address does not include a domain name. If your
+ setup sends local mail unqualified (i.e. MAIL FROM: <joe>),
+ you will need to use this feature to accept unqualified
+ sender addresses.
+
+accept_unresolvable_domains
+ Normally, MAIL FROM: commands in the SMTP session will be
+ refused if the host part of the argument to MAIL FROM: cannot
+ be located in the host name service (e.g., DNS). If you are
+ inside a firewall that has only a limited view of the
+ Internet host name space, this could cause problems. In this
+ case you probably want to use this feature to accept all
+ domains on input, even if they are unresolvable.
+
+access_db Turns on the access database feature. The access db gives
+ you the ability to allow or refuse to accept mail from
+ specified domains for administrative reasons. By default,
+ the access database specification is
+ ``hash -o /etc/mail/access''. The format of the
+ database is described below.
+
+blacklist_recipients
+ Turns on the ability to block incoming mail for certain
+ recipient usernames, hostnames, or addresses. For
+ example, you can block incoming mail to user nobody,
+ host foo.mydomain.com, or guest@bar.mydomain.com.
+ These specifications are put in the access db as
+ described below.
+
+rbl Turns on rejection of hosts found in the Realtime Blackhole
+ List. If an argument is provided it is used as the
+ name sever to contact; otherwise, the main RBL server at
+ rbl.maps.vix.com is used. For details, see
+ http://maps.vix.com/rbl/.
+
+loose_relay_check
+ Normally, if a recipient using % addressing is used, e.g.
+ user%site@othersite, and othersite is in class 'R', the
+ check_rcpt ruleset will strip @othersite and recheck
+ user@site for relaying. This feature changes that
+ behavior. It should not be needed for most installations.
+-------+
@@ -915,7 +1017,7 @@ For more complex configurations, you can define special rules.
The macro LOCAL_RULE_3 introduces rules that are used in canonicalizing
the names. Any modifications made here are reflected in the header.
-A common use is to convert old UUCP addreses to SMTP addresses using
+A common use is to convert old UUCP addresses to SMTP addresses using
the UUCPSMTP macro. For example:
LOCAL_RULE_3
@@ -1058,7 +1160,7 @@ MAIL_HUB act identically, with MAIL_HUB taking precedence.
If you want all outgoing mail to go to a central relay site, define
SMART_HOST as well. Briefly:
- LOCAL_RELAY applies to unqualifed names (e.g., "eric").
+ LOCAL_RELAY applies to unqualified names (e.g., "eric").
MAIL_HUB applies to names qualified with the name of the
local host (e.g., "eric@mastodon.CS.Berkeley.EDU").
SMART_HOST applies to names qualified with other hosts.
@@ -1076,6 +1178,211 @@ specified with a terminal dot:
note the trailing dot ---^
++---------------------------------+
+| ANTI-SPAM CONFIGURATION CONTROL |
++---------------------------------+
+
+The primary anti-spam features available in sendmail are:
+
+* Relaying is denied by default.
+* Better checking on sender information.
+* Access database.
+* Header checks.
+
+Relaying (transmission of messages from a site outside your domain to
+another site outside your domain) is denied by default. Note that
+this changed in sendmail 8.9; previous versions allowed relaying by
+default. If you want to revert to the old behaviour, you will need
+to use FEATURE(promiscuous_relay). You can allow certain domains to
+relay through your server by adding their domain name or IP address to
+class 'R' ($=R) using RELAY_DOMAIN() and RELAY_DOMAIN_FILE() or via the
+access database (described below).
+
+If you use
+
+ FEATURE(relay_entire_domain)
+
+then any host in any of your local domains (that is, the $=m class)
+will be relayed.
+
+You can also allow relaying based on the MX records of the host
+portion of an incoming recipient address by using
+
+ FEATURE(relay_based_on_MX)
+
+For example, if your server receives a recipient of user@domain.com
+and domain.com lists your server in its MX records, the mail will be
+accepted. Note that this will stop spammers from using your host to
+relay spam but it will not stop outsiders from using your server as a
+relay for their site. Along the same lines,
+
+ FEATURE(relay_local_from)
+
+will allow relaying if the sender specifies a return path (i.e.
+MAIL FROM: <user@domain>) domain which is a local domain. This a
+dangerous feature as it will allow spammers to spam using your mail
+server by simply specifying a return address of user@your.domain.com.
+It should not be used unless absolutely necessary.
+
+If source routing is used in the recipient address (i.e.
+RCPT TO: <user%site.com@othersite.com>), sendmail will check
+user@site.com for relaying if othersite.com is an allowed relay host
+in either class 'R', class 'm' if FEATURE(relay_entire_domain) is used,
+or the access database if FEATURE(access_db) is used. To prevent
+the address from being stripped down, use:
+
+ FEATURE(loose_relay_check)
+
+If you think you need to use this feature, you probably do not. This
+should only be used for sites which have no control over the addresses
+that they provide a gateway for. Use this FEATURE with caution as it
+can allow spammers to relay through your server if not setup properly.
+
+As of 8.9, sendmail will refuse mail if the MAIL FROM: parameter has
+an unresolvable domain (i.e., one that DNS, your local name service,
+or special case rules in ruleset 3 cannot locate). If you want to
+continue to accept such domains, e.g. because you are inside a
+firewall that has only a limited view of the Internet host name space
+(note that you will not be able to return mail to them unless you have
+some "smart host" forwarder), use
+
+ FEATURE(accept_unresolvable_domains)
+
+sendmail will also refuse mail if the MAIL FROM: parameter is not
+fully qualified (i.e., contains a domain as well as a user). If you
+want to continue to accept such senders, use
+
+ FEATURE(accept_unqualified_senders)
+
+An ``access'' database can be created to accept or reject mail from
+selected domains. For example, you may choose to reject all mail
+originating from known spammers. To enable such a database, use
+
+ FEATURE(access_db)
+
+The FEATURE macro can accept a second parameter giving the key file
+definition for the database; for example
+
+ FEATURE(access_db, hash -o /etc/mail/access)
+
+The table itself uses e-mail addresses, domain names, and network
+numbers as keys. For example,
+
+ spammer@aol.com REJECT
+ cyberspammer.com REJECT
+ 206.117.147 REJECT
+
+would refuse mail from spammer@aol.com, any user from cyberspammer.com
+(or any host within the cyberspammer.com domain), and any host on the
+206.117.147.* network.
+
+The value part of the map can contain:
+
+ OK accept mail even if other rules in the
+ running ruleset would reject it.
+ RELAY Allow domain to relay through your SMTP
+ server. RELAY also serves an implicit
+ OK for the other checks.
+ REJECT reject the sender/recipient with a general
+ purpose message.
+ DISCARD discard the message completely using
+ the $#discard mailer
+ ### any text where ### is an RFC 821 compliant error code
+ and "any text" is a message to return for
+ the command.
+
+For example:
+
+ cyberspammer.com 550 We don't accept mail from spammers
+ okay.cyberspammer.com OK
+ sendmail.org OK
+ 128.32 RELAY
+
+would accept mail from okay.cyberspammer.com, but would reject mail
+from all other hosts at cyberspammer.com with the indicated message.
+It would allow accept mail from any hosts in the sendmail.org domain,
+and allow relaying for the 128.32.*.* network. Note, UUCP users may
+need to add hostname.UUCP to the access database or class 'R' ($=R).
+If you also use:
+
+ FEATURE(relay_hosts_only)
+
+then the above example will allow relaying for sendmail.org, but not
+hosts within the sendmail.org domain. Note that this will also require
+hosts listed in class 'R' ($=R) to be fully qualified host names.
+
+You can also use the access database to block sender addresses based on
+the username portion of the address. For example:
+
+ FREE.STEALTH.MAILER@ 550 Spam not accepted
+
+Note that you must include the @ after the username to signify that
+this database entry is for checking only the username portion of the
+sender address.
+
+If you use:
+
+ FEATURE(blacklist_recipients)
+
+then you can add entries to the map for local users, hosts in your
+domains, or addresses in your domain which should not receive mail:
+
+ badlocaluser 550 Mailbox disabled for this username
+ host.mydomain.com 550 That host does not accept mail
+ user@otherhost.mydomain.com 550 Mailbox disabled for this recipient
+
+This would prevent a recipient of badlocaluser@mydomain.com, any
+user at host.mydomain.com, and the single address
+user@otherhost.mydomain.com from receiving mail.
+
+There is also a ``Realtime Blackhole List'' run by the MAPS project
+at http://maps.vix.com/. This is a database maintained in DNS of
+spammers. To use this database, use
+
+ FEATURE(rbl)
+
+This will cause sendmail to reject mail from any site in the
+Realtime Blackhole List database. You can specify an alternative
+RBL name server to contact by specifying an argument to the FEATURE.
+
+The features described above make use of the check_relay, check_mail,
+and check_rcpt rulesets. If you wish to include your own checks,
+you can put your checks in the rulesets Local_check_relay,
+Local_check_mail, and Local_check_rcpt. For example if you wanted to
+block senders with all numeric usernames (i.e. 2312343@bigisp.com),
+you would use Local_check_mail and the new regex map:
+
+ LOCAL_CONFIG
+ Kallnumbers regex -a@MATCH ^[0-9]+$
+
+ LOCAL_RULESETS
+ SLocal_check_mail
+ # check address against various regex checks
+ R$* $: $>Parse0 $>3 $1
+ R$+ < @ bigisp.com. > $* $: $(allnumbers $1 $)
+ R@MATCH $#error $: 553 Header Error
+
+These rules are called with the original arguments of the corresponding
+check_* ruleset. If the local ruleset returns $#OK, no further checking
+is done by the features described above and the mail is accepted. If the
+local ruleset resolves to a mailer (such as $#error or $#discard), the
+appropriate action is taken. Otherwise, the results of the local
+rewriting are ignored.
+
+
+You can also reject mail on the basis of the contents of headers.
+This is done by adding a ruleset call to the 'H' header definition command
+in sendmail.cf. For example, this can be used to check the validity of
+a Message-ID: header:
+
+ LOCAL_RULESETS
+ HMessage-Id: $>CheckMessageId
+
+ SCheckMessageId
+ R< $+ @ $+ > $@ OK
+ R$* $#error $: 553 Header Error
+
+
+--------------------------------+
| ADDING NEW MAILERS OR RULESETS |
+--------------------------------+
@@ -1089,7 +1396,7 @@ LOCAL_RULESETS respectively. For example:
...
LOCAL_RULESETS
- Scheck_relay
+ Smyruleset
...
@@ -1133,6 +1440,10 @@ use:
That is, send directly only to things you found in your DNS lookup;
anything else goes through SMART_HOST.
+You may need to turn off the anti-spam rules in order to accept
+UUCP mail with FEATURE(promiscuous_relay) and
+FEATURE(accept_unresolvable_domains).
+
+-----------+
| WHO AM I? |
@@ -1257,7 +1568,7 @@ Plussed users
LDAP
For notes on use LDAP in sendmail, see
- http://www-leland.stanford.edu/~bbense/Inst.html
+ http://www.stanford.edu/~bbense/Inst.html
@@ -1348,6 +1659,10 @@ confCW_FILE Fw class [/etc/sendmail.cw] Name of file used
confCT_FILE Ft class [/etc/sendmail.ct] Name of file used
to get the local additions to the $=t
(trusted users) class.
+confCR_FILE FR class [/etc/mail/relay-domains] Name of
+ file used to get the local additions
+ to the $=R (hosts allowed to relay)
+ class.
confTRUSTED_USERS Ct class [no default] Names of users to add to
the list of trusted users. This list
always includes root, uucp, and daemon.
@@ -1399,7 +1714,7 @@ confERROR_MODE ErrorMode [print] Error message mode.
confERROR_MESSAGE ErrorHeader [undefined] Error message header/file.
confSAVE_FROM_LINES SafeFromLine Save extra leading From_ lines.
confTEMP_FILE_MODE TempFileMode [0600] Temporary file mode.
-confMATCH_GECOS MatchGECOS [True] Match GECOS field.
+confMATCH_GECOS MatchGECOS [False] Match GECOS field.
confMAX_HOP MaxHopCount [25] Maximum hop count.
confIGNORE_DOTS* IgnoreDots [False; always False in -bs or -bd mode]
Ignore dot as terminator for incoming
@@ -1582,10 +1897,10 @@ confMIN_QUEUE_AGE MinQueueAge [0] The minimum amount of time a job
must sit in the queue between queue
runs. This allows you to set the
queue run interval low for better
- resposiveness without trying all
+ responsiveness without trying all
jobs in each run.
confDEF_CHAR_SET DefaultCharSet [unknown-8bit] When converting
- unlabelled 8 bit input to MIME, the
+ unlabeled 8 bit input to MIME, the
character set to use by default.
confSERVICE_SWITCH_FILE ServiceSwitchFile
[/etc/service.switch] The file to use
@@ -1649,6 +1964,14 @@ confDONT_EXPAND_CNAMES DontExpandCnames
lookups as well.
confFROM_LINE UnixFromLine [From $g $d] The From_ line used
when sending to files or programs.
+confSINGLE_LINE_FROM_HEADER SingleLineFromHeader
+ [False] From: lines that have
+ embedded newlines are unwrapped
+ onto one line.
+confALLOW_BOGUS_HELO AllowBogusHELO [False] Allow HELO SMTP command that
+ does not include a host name.
+confMUST_QUOTE_CHARS MustQuoteChars [.'] Characters to be quoted in a full
+ name phrase (@,;:\()[] are automatic).
confOPERATORS OperatorChars [.:%@!^/[]+] Address operator
characters.
confSMTP_LOGIN_MSG SmtpGreetingMessage
@@ -1690,6 +2013,32 @@ confRUN_AS_USER RunAsUser [undefined] If set, become this user
files will be written as this user.
Intended for use only on firewalls
where users do not have accounts.
+confMAX_RCPTS_PER_MESSAGE MaxRecipientsPerMessage
+ [infinite] If set, allow no more than
+ the specified number of recipients in
+ an SMTP envelope. Further recipients
+ receive a 452 error code (i.e., they
+ are deferred for the next delivery
+ attempt).
+confDONT_PROBE_INTERFACES DontProbeInterfaces
+ [False] If set, sendmail will _not_
+ insert the names and addresses of any
+ local interfaces into the $=w class
+ (list of known "equivalent" addresses).
+ If you set this, you must also include
+ some support for these addresses (e.g.,
+ in a mailertable entry) -- otherwise,
+ mail to addresses in this list will
+ bounce with a configuration error.
+confDONT_BLAME_SENDMAIL DontBlameSendmail
+ [safe] Override sendmail's file
+ safety checks. This will definitely
+ compromise system security and should
+ not be used unless absolutely
+ necessary.
+confREJECT_MSG - [550 Access denied] The message
+ given if the access database contains
+ REJECT in the value portion.
See also the description of OSTYPE for some parameters that can be
tweaked (generally pathnames to mailers).
diff --git a/contrib/sendmail/cf/cf/Build b/contrib/sendmail/cf/cf/Build
new file mode 100755
index 000000000000..3efaffdcdba8
--- /dev/null
+++ b/contrib/sendmail/cf/cf/Build
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)Build 8.3 (Berkeley) 5/19/98
+#
+
+#
+# A quick-and-dirty script to create cf files.
+#
+
+SMROOT=${SMROOT-../..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+
+M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ret=$?
+if [ $ret -ne 0 ]
+then
+ exit $ret
+fi
+echo "Using M4=$M4"
+
+eval exec ${MAKE-make} M4=$M4 $*
diff --git a/usr.sbin/sendmail/cf/cf/Makefile b/contrib/sendmail/cf/cf/Makefile
index 7450b2a70008..8b6fb4d64e96 100644
--- a/usr.sbin/sendmail/cf/cf/Makefile
+++ b/contrib/sendmail/cf/cf/Makefile
@@ -1,8 +1,9 @@
-# @(#)Makefile 8.19 (Berkeley) 1/14/97
-
#
-# This Makefile uses the new Berkeley "make" program. See Makefile.dist
-# for a more vanilla version.
+# Makefile for configuration files.
+#
+# @(#)Makefile 8.17 (Berkeley) 4/2/98
+#
+
#
# Create configuration files using "m4 ../m4/cf.m4 file.mc > file.cf";
# this may be easier than tweaking the Makefile. You do need to
@@ -11,7 +12,6 @@
#
M4= m4
-#M4= /usr/src/usr.bin/m4/obj/m4
CFDIR= ..
CHMOD= chmod
ROMODE= 444
@@ -21,7 +21,7 @@ RM= rm -f
.mc.cf:
$(RM) $@
- (cd ${.CURDIR} && $(M4) ${CFDIR}/m4/cf.m4 ${@:R}.mc > obj/$@)
+ $(M4) ${CFDIR}/m4/cf.m4 $*.mc > $@ || ( $(RM) $@ && exit 1 )
$(CHMOD) $(ROMODE) $@
ALL= generic-bsd4.4.cf generic-hpux9.cf generic-hpux10.cf \
@@ -46,23 +46,43 @@ M4FILES=\
${CFDIR}/domain/CS.Berkeley.EDU.m4 \
${CFDIR}/domain/EECS.Berkeley.EDU.m4 \
${CFDIR}/domain/S2K.Berkeley.EDU.m4 \
+ ${CFDIR}/domain/berkeley-only.m4 \
+ ${CFDIR}/domain/generic.m4 \
+ ${CFDIR}/feature/accept_unqualified_senders.m4 \
+ ${CFDIR}/feature/accept_unresolvable_domains.m4 \
+ ${CFDIR}/feature/access_db.m4 \
${CFDIR}/feature/allmasquerade.m4 \
${CFDIR}/feature/always_add_domain.m4 \
${CFDIR}/feature/bestmx_is_local.m4 \
${CFDIR}/feature/bitdomain.m4 \
+ ${CFDIR}/feature/blacklist_recipients.m4 \
+ ${CFDIR}/feature/loose_relay_check.m4 \
${CFDIR}/feature/domaintable.m4 \
+ ${CFDIR}/feature/genericstable.m4 \
+ ${CFDIR}/feature/limited_masquerade.m4 \
+ ${CFDIR}/feature/local_lmtp.m4 \
${CFDIR}/feature/local_procmail.m4 \
${CFDIR}/feature/mailertable.m4 \
+ ${CFDIR}/feature/masquerade_entire_domain.m4 \
+ ${CFDIR}/feature/masquerade_envelope.m4 \
${CFDIR}/feature/nocanonify.m4 \
${CFDIR}/feature/nodns.m4 \
${CFDIR}/feature/notsticky.m4 \
${CFDIR}/feature/nouucp.m4 \
${CFDIR}/feature/nullclient.m4 \
+ ${CFDIR}/feature/promiscuous_relay.m4 \
+ ${CFDIR}/feature/rbl.m4 \
${CFDIR}/feature/redirect.m4 \
+ ${CFDIR}/feature/relay_based_on_MX.m4 \
+ ${CFDIR}/feature/relay_entire_domain.m4 \
+ ${CFDIR}/feature/relay_hosts_only.m4 \
+ ${CFDIR}/feature/relay_local_from.m4 \
${CFDIR}/feature/smrsh.m4 \
${CFDIR}/feature/stickyhost.m4 \
+ ${CFDIR}/feature/use_ct_file.m4 \
${CFDIR}/feature/use_cw_file.m4 \
${CFDIR}/feature/uucpdomain.m4 \
+ ${CFDIR}/feature/virtusertable.m4 \
${CFDIR}/hack/cssubdomain.m4 \
${CFDIR}/m4/cf.m4 \
${CFDIR}/m4/cfhead.m4 \
@@ -78,34 +98,46 @@ M4FILES=\
${CFDIR}/mailer/smtp.m4 \
${CFDIR}/mailer/usenet.m4 \
${CFDIR}/mailer/uucp.m4 \
+ ${CFDIR}/ostype/aix2.m4 \
${CFDIR}/ostype/aix3.m4 \
+ ${CFDIR}/ostype/altos.m4 \
${CFDIR}/ostype/amdahl-uts.m4 \
${CFDIR}/ostype/aux.m4 \
${CFDIR}/ostype/bsd4.3.m4 \
${CFDIR}/ostype/bsd4.4.m4 \
${CFDIR}/ostype/bsdi1.0.m4 \
+ ${CFDIR}/ostype/bsdi2.0.m4 \
${CFDIR}/ostype/dgux.m4 \
${CFDIR}/ostype/domainos.m4 \
${CFDIR}/ostype/dynix3.2.m4 \
+ ${CFDIR}/ostype/gnuhurd.m4 \
+ ${CFDIR}/ostype/hpux10.m4 \
${CFDIR}/ostype/hpux9.m4 \
${CFDIR}/ostype/irix4.m4 \
${CFDIR}/ostype/irix5.m4 \
+ ${CFDIR}/ostype/irix6.m4 \
${CFDIR}/ostype/linux.m4 \
+ ${CFDIR}/ostype/maxion.m4 \
+ ${CFDIR}/ostype/mklinux.m4 \
${CFDIR}/ostype/nextstep.m4 \
${CFDIR}/ostype/osf1.m4 \
+ ${CFDIR}/ostype/powerux.m4 \
${CFDIR}/ostype/ptx2.m4 \
+ ${CFDIR}/ostype/qnx.m4 \
${CFDIR}/ostype/riscos4.5.m4 \
+ ${CFDIR}/ostype/sco-uw-2.1.m4 \
${CFDIR}/ostype/sco3.2.m4 \
${CFDIR}/ostype/solaris2.m4 \
+ ${CFDIR}/ostype/solaris2.ml.m4 \
${CFDIR}/ostype/sunos3.5.m4 \
${CFDIR}/ostype/sunos4.1.m4 \
${CFDIR}/ostype/svr4.m4 \
${CFDIR}/ostype/ultrix4.m4 \
+ ${CFDIR}/ostype/unknown.m4 \
+ ${CFDIR}/ostype/uxpds.m4 \
${CFDIR}/siteconfig/uucp.cogsci.m4 \
${CFDIR}/siteconfig/uucp.old.arpa.m4 \
${CFDIR}/siteconfig/uucp.ucbarpa.m4 \
${CFDIR}/siteconfig/uucp.ucbvax.m4 \
$(ALL): $(M4FILES)
-
-.include <bsd.prog.mk>
diff --git a/contrib/sendmail/cf/cf/chez.cs.mc b/contrib/sendmail/cf/cf/chez.cs.mc
new file mode 100644
index 000000000000..9858330bd407
--- /dev/null
+++ b/contrib/sendmail/cf/cf/chez.cs.mc
@@ -0,0 +1,33 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for a specific
+# machine in the Computer Science Division at Berkeley, and should
+# not be used elsewhere. It is provided on the sendmail distribution
+# as a sample only.
+#
+# This file is for a home machine that wants to masquerade as an
+# on-campus machine. Additionally, all addresses without a hostname
+# will be forwarded to that machine.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)chez.cs.mc 8.11 (Berkeley) 5/19/98')
+OSTYPE(bsd4.4)dnl
+DOMAIN(CS.Berkeley.EDU)dnl
+define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl
+MASQUERADE_AS(vangogh.CS.Berkeley.EDU)dnl
+FEATURE(use_cw_file)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/clientproto.mc b/contrib/sendmail/cf/cf/clientproto.mc
new file mode 100644
index 000000000000..f0a6ae7d6b23
--- /dev/null
+++ b/contrib/sendmail/cf/cf/clientproto.mc
@@ -0,0 +1,33 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This the prototype for a "null client" -- that is, a client that
+# does nothing except forward all mail to a mail hub. IT IS NOT
+# USABLE AS IS!!!
+#
+# To use this, you MUST use the nullclient feature with the name of
+# the mail hub as its argument. You MUST also define an `OSTYPE' to
+# define the location of the queue directories and the like.
+# In addition, you MAY select the nocanonify feature. This causes
+# addresses to be sent unqualified via the SMTP connection; normally
+# they are qualifed with the masquerade name, which defaults to the
+# name of the hub machine.
+# Other than these, it should never contain any other lines.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)clientproto.mc 8.12 (Berkeley) 5/19/98')
+
+OSTYPE(unknown)
+FEATURE(nullclient, mailhost.$m)
diff --git a/contrib/sendmail/cf/cf/cs-hpux10.mc b/contrib/sendmail/cf/cf/cs-hpux10.mc
new file mode 100644
index 000000000000..527f9308b990
--- /dev/null
+++ b/contrib/sendmail/cf/cf/cs-hpux10.mc
@@ -0,0 +1,30 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for HP-UX 9.x.
+# It applies only to the Computer Science Division at Berkeley,
+# and should not be used elsewhere. It is provided on the sendmail
+# distribution as a sample only. To create your own configuration
+# file, create an appropriate domain file in ../domain, change the
+# `DOMAIN' macro below to reference that file, and copy the result
+# to a name of your own choosing.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)cs-hpux10.mc 8.10 (Berkeley) 5/19/98')
+OSTYPE(hpux10)dnl
+DOMAIN(CS.Berkeley.EDU)dnl
+define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/cs-hpux9.mc b/contrib/sendmail/cf/cf/cs-hpux9.mc
new file mode 100644
index 000000000000..f65505296fec
--- /dev/null
+++ b/contrib/sendmail/cf/cf/cs-hpux9.mc
@@ -0,0 +1,30 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for HP-UX 9.x.
+# It applies only to the Computer Science Division at Berkeley,
+# and should not be used elsewhere. It is provided on the sendmail
+# distribution as a sample only. To create your own configuration
+# file, create an appropriate domain file in ../domain, change the
+# `DOMAIN' macro below to reference that file, and copy the result
+# to a name of your own choosing.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)cs-hpux9.mc 8.11 (Berkeley) 5/19/98')
+OSTYPE(hpux9)dnl
+DOMAIN(CS.Berkeley.EDU)dnl
+define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/cs-osf1.mc b/contrib/sendmail/cf/cf/cs-osf1.mc
new file mode 100644
index 000000000000..ba35c04ac687
--- /dev/null
+++ b/contrib/sendmail/cf/cf/cs-osf1.mc
@@ -0,0 +1,29 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for OSF/1.
+# It applies only to the Computer Science Division at Berkeley,
+# and should not be used elsewhere. It is provided on the sendmail
+# distribution as a sample only. To create your own configuration
+# file, create an appropriate domain file in ../domain, change the
+# `DOMAIN' macro below to reference that file, and copy the result
+# to a name of your own choosing.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)cs-osf1.mc 8.10 (Berkeley) 5/19/98')
+OSTYPE(osf1)dnl
+DOMAIN(CS.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/cs-solaris2.mc b/contrib/sendmail/cf/cf/cs-solaris2.mc
new file mode 100644
index 000000000000..395d19fc7aa5
--- /dev/null
+++ b/contrib/sendmail/cf/cf/cs-solaris2.mc
@@ -0,0 +1,29 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for Solaris 2.x.
+# It applies only to the Computer Science Division at Berkeley,
+# and should not be used elsewhere. It is provided on the sendmail
+# distribution as a sample only. To create your own configuration
+# file, create an appropriate domain file in ../domain, change the
+# `DOMAIN' macro below to reference that file, and copy the result
+# to a name of your own choosing.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)cs-solaris2.mc 8.9 (Berkeley) 5/19/98')
+OSTYPE(solaris2)dnl
+DOMAIN(CS.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/cs-sunos4.1.mc b/contrib/sendmail/cf/cf/cs-sunos4.1.mc
new file mode 100644
index 000000000000..45dcd124d99f
--- /dev/null
+++ b/contrib/sendmail/cf/cf/cs-sunos4.1.mc
@@ -0,0 +1,29 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for SunOS 4.1.x.
+# It applies only to the Computer Science Division at Berkeley,
+# and should not be used elsewhere. It is provided on the sendmail
+# distribution as a sample only. To create your own configuration
+# file, create an appropriate domain file in ../domain, change the
+# `DOMAIN' macro below to reference that file, and copy the result
+# to a name of your own choosing.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)cs-sunos4.1.mc 8.10 (Berkeley) 5/19/98')
+OSTYPE(sunos4.1)dnl
+DOMAIN(CS.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/cs-ultrix4.mc b/contrib/sendmail/cf/cf/cs-ultrix4.mc
new file mode 100644
index 000000000000..f2a4b423b907
--- /dev/null
+++ b/contrib/sendmail/cf/cf/cs-ultrix4.mc
@@ -0,0 +1,29 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for Ultrix 4.x.
+# It applies only to the Computer Science Division at Berkeley,
+# and should not be used elsewhere. It is provided on the sendmail
+# distribution as a sample only. To create your own configuration
+# file, create an appropriate domain file in ../domain, change the
+# `DOMAIN' macro below to reference that file, and copy the result
+# to a name of your own choosing.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)cs-ultrix4.mc 8.10 (Berkeley) 5/19/98')
+OSTYPE(ultrix4)dnl
+DOMAIN(CS.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/cyrusproto.mc b/contrib/sendmail/cf/cf/cyrusproto.mc
index c660898b738f..c660898b738f 100644
--- a/usr.sbin/sendmail/cf/cf/cyrusproto.mc
+++ b/contrib/sendmail/cf/cf/cyrusproto.mc
diff --git a/contrib/sendmail/cf/cf/generic-bsd4.4.mc b/contrib/sendmail/cf/cf/generic-bsd4.4.mc
new file mode 100644
index 000000000000..106fa31c44dd
--- /dev/null
+++ b/contrib/sendmail/cf/cf/generic-bsd4.4.mc
@@ -0,0 +1,27 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a generic configuration file for 4.4 BSD-based systems,
+# including 4.4-Lite, BSDi, NetBSD, and FreeBSD.
+# It has support for local and SMTP mail only. If you want to
+# customize it, copy it to a name appropriate for your environment
+# and do the modifications there.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)generic-bsd4.4.mc 8.7 (Berkeley) 5/19/98')
+OSTYPE(bsd4.4)dnl
+DOMAIN(generic)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-hpux10.mc b/contrib/sendmail/cf/cf/generic-hpux10.mc
new file mode 100644
index 000000000000..1a7eda909423
--- /dev/null
+++ b/contrib/sendmail/cf/cf/generic-hpux10.mc
@@ -0,0 +1,26 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a generic configuration file for HP-UX 9.x.
+# It has support for local and SMTP mail only. If you want to
+# customize it, copy it to a name appropriate for your environment
+# and do the modifications there.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)generic-hpux10.mc 8.8 (Berkeley) 5/19/98')
+OSTYPE(hpux10)dnl
+DOMAIN(generic)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-hpux9.mc b/contrib/sendmail/cf/cf/generic-hpux9.mc
new file mode 100644
index 000000000000..6aaf3b65e3de
--- /dev/null
+++ b/contrib/sendmail/cf/cf/generic-hpux9.mc
@@ -0,0 +1,26 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a generic configuration file for HP-UX 9.x.
+# It has support for local and SMTP mail only. If you want to
+# customize it, copy it to a name appropriate for your environment
+# and do the modifications there.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)generic-hpux9.mc 8.8 (Berkeley) 5/19/98')
+OSTYPE(hpux9)dnl
+DOMAIN(generic)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-nextstep3.3.mc b/contrib/sendmail/cf/cf/generic-nextstep3.3.mc
new file mode 100644
index 000000000000..5c81faaf6e7a
--- /dev/null
+++ b/contrib/sendmail/cf/cf/generic-nextstep3.3.mc
@@ -0,0 +1,26 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a generic configuration file for NEXTSTEP 3.3 systems.
+# It has support for local and SMTP mail only. If you want to
+# customize it, copy it to a name appropriate for your environment
+# and do the modifications there.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)generic-nextstep3.3.mc 8.7 (Berkeley) 5/19/98')
+OSTYPE(nextstep)dnl
+DOMAIN(generic)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-osf1.mc b/contrib/sendmail/cf/cf/generic-osf1.mc
new file mode 100644
index 000000000000..2113b927223f
--- /dev/null
+++ b/contrib/sendmail/cf/cf/generic-osf1.mc
@@ -0,0 +1,26 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a generic configuration file for OSF/1.
+# It has support for local and SMTP mail only. If you want to
+# customize it, copy it to a name appropriate for your environment
+# and do the modifications there.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)generic-osf1.mc 8.8 (Berkeley) 5/19/98')
+OSTYPE(osf1)dnl
+DOMAIN(generic)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-solaris2.mc b/contrib/sendmail/cf/cf/generic-solaris2.mc
new file mode 100644
index 000000000000..1e1aa96a6c43
--- /dev/null
+++ b/contrib/sendmail/cf/cf/generic-solaris2.mc
@@ -0,0 +1,26 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a generic configuration file for SunOS 5.x (a.k.a. Solaris 2.x)
+# It has support for local and SMTP mail only. If you want to
+# customize it, copy it to a name appropriate for your environment
+# and do the modifications there.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)generic-solaris2.mc 8.8 (Berkeley) 5/19/98')
+OSTYPE(solaris2)dnl
+DOMAIN(generic)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-sunos4.1.mc b/contrib/sendmail/cf/cf/generic-sunos4.1.mc
new file mode 100644
index 000000000000..7e916c15ea88
--- /dev/null
+++ b/contrib/sendmail/cf/cf/generic-sunos4.1.mc
@@ -0,0 +1,26 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a generic configuration file for SunOS 4.1.x.
+# It has support for local and SMTP mail only. If you want to
+# customize it, copy it to a name appropriate for your environment
+# and do the modifications there.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)generic-sunos4.1.mc 8.8 (Berkeley) 5/19/98')
+OSTYPE(sunos4.1)dnl
+DOMAIN(generic)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-ultrix4.mc b/contrib/sendmail/cf/cf/generic-ultrix4.mc
new file mode 100644
index 000000000000..8c900b86e713
--- /dev/null
+++ b/contrib/sendmail/cf/cf/generic-ultrix4.mc
@@ -0,0 +1,26 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a generic configuration file for Ultrix 4.x.
+# It has support for local and SMTP mail only. If you want to
+# customize it, copy it to a name appropriate for your environment
+# and do the modifications there.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)generic-ultrix4.mc 8.8 (Berkeley) 5/19/98')
+OSTYPE(ultrix4)dnl
+DOMAIN(generic)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/huginn.cs.mc b/contrib/sendmail/cf/cf/huginn.cs.mc
new file mode 100644
index 000000000000..949e917882d5
--- /dev/null
+++ b/contrib/sendmail/cf/cf/huginn.cs.mc
@@ -0,0 +1,42 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for a specific
+# machine in the Computer Science Division at Berkeley, and should
+# not be used elsewhere. It is provided on the sendmail distribution
+# as a sample only.
+#
+# This file is for the backup CS Division mail server.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)huginn.cs.mc 8.12 (Berkeley) 5/19/98')
+OSTYPE(hpux9)dnl
+DOMAIN(CS.Berkeley.EDU)dnl
+MASQUERADE_AS(CS.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
+
+LOCAL_CONFIG
+DDBerkeley.EDU
+
+# hosts for which we accept and forward mail (must be in .Berkeley.EDU)
+CF CS
+FF/etc/sendmail.cw
+
+LOCAL_RULE_0
+R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ...
+R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ...
+
+R$* < @ $=F . $D . > $#local $: $1 use UDB
diff --git a/contrib/sendmail/cf/cf/knecht.mc b/contrib/sendmail/cf/cf/knecht.mc
new file mode 100644
index 000000000000..97e5e43eb36a
--- /dev/null
+++ b/contrib/sendmail/cf/cf/knecht.mc
@@ -0,0 +1,71 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is specific to Eric's home machine.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)knecht.mc 8.30 (Berkeley) 6/11/98')
+OSTYPE(bsd4.4)dnl
+DOMAIN(generic)dnl
+define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward+$h:$z/.forward')dnl
+define(`confDEF_USER_ID', `mailnull')dnl
+define(`confHOST_STATUS_DIRECTORY', `.hoststat')dnl
+define(`confTO_ICONNECT', `10s')dnl
+define(`confCOPY_ERRORS_TO', `Postmaster')dnl
+define(`confTO_QUEUEWARN', `8h')dnl
+define(`confTRUSTED_USERS', `www')dnl
+define(`confPRIVACY_FLAGS', ``authwarnings,noexpn,novrfy'')dnl
+FEATURE(virtusertable)dnl
+FEATURE(access_db)dnl
+FEATURE(local_lmtp)dnl
+define(`LOCAL_MAILER_FLAGS', LOCAL_MAILER_FLAGS`'P)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
+
+LOCAL_CONFIG
+#
+# Regular expression to reject:
+# * numeric-only localparts from aol.com and msn.com
+# * localparts starting with a digit from juno.com
+# * localparts longer than 10 characters from aol.com
+#
+Kcheckaddress regex -a@MATCH
+ ^([0-9]+<@(aol|msn)\.com|[0-9][^<]*<@juno\.com|.{10}[^<]+<@aol\.com)\.?>
+
+#
+# Names that won't be allowed in a To: line (local-part and domains)
+#
+C{RejectToLocalparts} friend you
+C{RejectToDomains} public.com
+
+LOCAL_RULESETS
+HTo: $>CheckTo
+
+SCheckTo
+R$={RejectToLocalparts}@$* $#error $: "553 Header error"
+R$*@$={RejectToDomains} $#error $: "553 Header error"
+
+HMessage-Id: $>CheckMessageId
+
+SCheckMessageId
+R< $+ @ $+ > $@ OK
+R$* $#error $: "553 Header error"
+
+LOCAL_RULESETS
+SLocal_check_mail
+# check address against various regex checks
+R$* $: $>Parse0 $>3 $1
+R$+ $: $(checkaddress $1 $)
+R@MATCH $#error $: "553 Header error"
diff --git a/contrib/sendmail/cf/cf/mail.cs.mc b/contrib/sendmail/cf/cf/mail.cs.mc
new file mode 100644
index 000000000000..1ecf34e2a910
--- /dev/null
+++ b/contrib/sendmail/cf/cf/mail.cs.mc
@@ -0,0 +1,43 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for a specific
+# machine in the Computer Science Division at Berkeley, and should
+# not be used elsewhere. It is provided on the sendmail distribution
+# as a sample only.
+#
+# This file is for the primary CS Division mail server.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)mail.cs.mc 8.15 (Berkeley) 5/19/98')
+OSTYPE(ultrix4)dnl
+DOMAIN(Berkeley.EDU)dnl
+MASQUERADE_AS(CS.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
+define(`confUSERDB_SPEC', ``/usr/local/lib/users.cs.db,/usr/local/lib/users.eecs.db'')dnl
+
+LOCAL_CONFIG
+DDBerkeley.EDU
+
+# hosts for which we accept and forward mail (must be in .Berkeley.EDU)
+CF CS
+FF/etc/sendmail.cw
+
+LOCAL_RULE_0
+R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ...
+R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ...
+
+R$* < @ $=F . $D . > $#local $: $1 use UDB
diff --git a/contrib/sendmail/cf/cf/mail.eecs.mc b/contrib/sendmail/cf/cf/mail.eecs.mc
new file mode 100644
index 000000000000..42d053d70ee1
--- /dev/null
+++ b/contrib/sendmail/cf/cf/mail.eecs.mc
@@ -0,0 +1,43 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for a specific
+# machine in Electrical Engineering and Computer Sciences at Berkeley,
+# and should not be used elsewhere. It is provided on the sendmail
+# distribution as a sample only.
+#
+# This file is for the primary EECS mail server.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)mail.eecs.mc 8.15 (Berkeley) 5/19/98')
+OSTYPE(ultrix4)dnl
+DOMAIN(EECS.Berkeley.EDU)dnl
+MASQUERADE_AS(EECS.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
+define(`confUSERDB_SPEC', `/usr/local/lib/users.eecs.db,/usr/local/lib/users.cs.db,/usr/local/lib/users.coe.db')dnl
+
+LOCAL_CONFIG
+DDBerkeley.EDU
+
+# hosts for which we accept and forward mail (must be in .Berkeley.EDU)
+CF EECS
+FF/etc/sendmail.cw
+
+LOCAL_RULE_0
+R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ...
+R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ...
+
+R$* < @ $=F . $D . > $#local $: $1 use UDB
diff --git a/contrib/sendmail/cf/cf/mailspool.cs.mc b/contrib/sendmail/cf/cf/mailspool.cs.mc
new file mode 100644
index 000000000000..7ae62b24d607
--- /dev/null
+++ b/contrib/sendmail/cf/cf/mailspool.cs.mc
@@ -0,0 +1,36 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for a specific
+# machine in the Computer Science Division at Berkeley, and should
+# not be used elsewhere. It is provided on the sendmail distribution
+# as a sample only.
+#
+# This file is for our mail spool machine. For a while we were using
+# "root.machinename" instead of "root+machinename", so this is included
+# for back compatibility.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)mailspool.cs.mc 8.9 (Berkeley) 5/19/98')
+OSTYPE(sunos4.1)dnl
+DOMAIN(CS.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
+
+LOCAL_CONFIG
+CDroot sys-custodian
+
+LOCAL_RULE_3
+R$=D . $+ $1 + $2
diff --git a/contrib/sendmail/cf/cf/python.cs.mc b/contrib/sendmail/cf/cf/python.cs.mc
new file mode 100644
index 000000000000..2cb111d0b655
--- /dev/null
+++ b/contrib/sendmail/cf/cf/python.cs.mc
@@ -0,0 +1,41 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for a specific
+# machine in the Computer Science Division at Berkeley, and should
+# not be used elsewhere. It is provided on the sendmail distribution
+# as a sample only.
+#
+# This file is for a home machine that wants to masquerade as an
+# on-campus machine. Additionally, all addresses without a hostname
+# will be forwarded to that machine.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)python.cs.mc 8.9 (Berkeley) 5/19/98')
+OSTYPE(bsd4.4)dnl
+DOMAIN(CS.Berkeley.EDU)dnl
+define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl
+MASQUERADE_AS(vangogh.CS.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
+
+# accept mail sent to the domain head
+DDBostic.COM
+
+LOCAL_RULE_0
+# accept mail sent to the domain head
+R< @ $D . > : $* $@ $>7 $1 @here:... -> ...
+R$* $=O $* < @ $D . > $@ $>7 $1 $2 $3 ...@here -> ...
+R$* < @ $D . > $#local $: $1 user@here -> user
diff --git a/contrib/sendmail/cf/cf/s2k-osf1.mc b/contrib/sendmail/cf/cf/s2k-osf1.mc
new file mode 100644
index 000000000000..1c7b1ccd1d74
--- /dev/null
+++ b/contrib/sendmail/cf/cf/s2k-osf1.mc
@@ -0,0 +1,29 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for OSF/1.
+# It applies only to the Sequoia 2000 Project at Berkeley,
+# and should not be used elsewhere. It is provided on the sendmail
+# distribution as a sample only. To create your own configuration
+# file, create an appropriate domain file in ../domain, change the
+# `DOMAIN' macro below to reference that file, and copy the result
+# to a name of your own choosing.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)s2k-osf1.mc 8.10 (Berkeley) 5/19/98')
+OSTYPE(osf1)dnl
+DOMAIN(S2K.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/s2k-ultrix4.mc b/contrib/sendmail/cf/cf/s2k-ultrix4.mc
new file mode 100644
index 000000000000..06c70d45be63
--- /dev/null
+++ b/contrib/sendmail/cf/cf/s2k-ultrix4.mc
@@ -0,0 +1,29 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for Ultrix 4.x.
+# It applies only to the Sequoia 2000 Project at Berkeley,
+# and should not be used elsewhere. It is provided on the sendmail
+# distribution as a sample only. To create your own configuration
+# file, create an appropriate domain file in ../domain, change the
+# `DOMAIN' macro below to reference that file, and copy the result
+# to a name of your own choosing.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)s2k-ultrix4.mc 8.10 (Berkeley) 5/19/98')
+OSTYPE(ultrix4)dnl
+DOMAIN(S2K.Berkeley.EDU)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/tcpproto.mc b/contrib/sendmail/cf/cf/tcpproto.mc
new file mode 100644
index 000000000000..eb6eadecb656
--- /dev/null
+++ b/contrib/sendmail/cf/cf/tcpproto.mc
@@ -0,0 +1,32 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is the prototype file for a configuration that supports nothing
+# but basic SMTP connections via TCP.
+#
+# You MUST change the `OSTYPE' macro to specify the operating system
+# on which this will run; this will set the location of various
+# support files for your operating system environment. You MAY
+# create a domain file in ../domain and reference it by adding a
+# `DOMAIN' macro after the `OSTYPE' macro. I recommend that you
+# first copy this to another file name so that new sendmail releases
+# will not trash your changes.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)tcpproto.mc 8.10 (Berkeley) 5/19/98')
+OSTYPE(unknown)
+FEATURE(nouucp)
+MAILER(local)
+MAILER(smtp)
diff --git a/contrib/sendmail/cf/cf/ucbarpa.mc b/contrib/sendmail/cf/cf/ucbarpa.mc
new file mode 100644
index 000000000000..925d47fefb74
--- /dev/null
+++ b/contrib/sendmail/cf/cf/ucbarpa.mc
@@ -0,0 +1,29 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This machine has been decommissioned at Berkeley, and hence should
+# not be considered to be tested. This file is provided as an example
+# only, of how you might set up a joint SMTP/UUCP configuration. At
+# this point I recommend using `FEATURE(mailertable)' instead of
+# `SITECONFIG'. See also ucbvax.mc.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)ucbarpa.mc 8.9 (Berkeley) 5/19/98')
+DOMAIN(CS.Berkeley.EDU)dnl
+OSTYPE(bsd4.4)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
+MAILER(uucp)dnl
+SITECONFIG(uucp.ucbarpa, ucbarpa, U)
diff --git a/usr.sbin/sendmail/cf/cf/ucbvax.mc b/contrib/sendmail/cf/cf/ucbvax.mc
index 89a0f1014cd6..76027fb951e4 100644
--- a/usr.sbin/sendmail/cf/cf/ucbvax.mc
+++ b/contrib/sendmail/cf/cf/ucbvax.mc
@@ -1,36 +1,14 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
#
@@ -43,7 +21,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)ucbvax.mc 8.6 (Berkeley) 3/23/96')
+VERSIONID(`@(#)ucbvax.mc 8.11 (Berkeley) 5/19/98')
OSTYPE(bsd4.3)
DOMAIN(CS.Berkeley.EDU)
MASQUERADE_AS(CS.Berkeley.EDU)
diff --git a/contrib/sendmail/cf/cf/uucpproto.mc b/contrib/sendmail/cf/cf/uucpproto.mc
new file mode 100644
index 000000000000..4f1c54a332e2
--- /dev/null
+++ b/contrib/sendmail/cf/cf/uucpproto.mc
@@ -0,0 +1,33 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is the prototype for a configuration that only supports UUCP
+# and does not have DNS support at all.
+#
+# You MUST change the `OSTYPE' macro to specify the operating system
+# on which this will run; this will set the location of various
+# support files for your operating system environment. You MAY
+# create a domain file in ../domain and reference it by adding a
+# `DOMAIN' macro after the `OSTYPE' macro. I recommend that you
+# first copy this to another file name so that new sendmail releases
+# will not trash your changes.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)uucpproto.mc 8.12 (Berkeley) 5/19/98')
+OSTYPE(unknown)
+FEATURE(promiscuous_relay)dnl
+FEATURE(accept_unresolvable_domains)dnl
+MAILER(local)dnl
+MAILER(uucp)dnl
diff --git a/contrib/sendmail/cf/cf/vangogh.cs.mc b/contrib/sendmail/cf/cf/vangogh.cs.mc
new file mode 100644
index 000000000000..deefc29febde
--- /dev/null
+++ b/contrib/sendmail/cf/cf/vangogh.cs.mc
@@ -0,0 +1,32 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This is a Berkeley-specific configuration file for a specific
+# machine in the Computer Science Division at Berkeley, and should
+# not be used elsewhere. It is provided on the sendmail distribution
+# as a sample only.
+#
+# This file is for the BSD development machine; it has some parameters
+# set up (to stress sendmail) and accepts mail for some other machines.
+#
+
+divert(0)dnl
+VERSIONID(`@(#)vangogh.cs.mc 8.10 (Berkeley) 5/19/98')
+DOMAIN(CS.Berkeley.EDU)dnl
+OSTYPE(bsd4.4)dnl
+MAILER(local)dnl
+MAILER(smtp)dnl
+define(`MCI_CACHE_SIZE', 5)
+Cw okeeffe.CS.Berkeley.EDU
+Cw python.CS.Berkeley.EDU
diff --git a/contrib/sendmail/cf/domain/Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/Berkeley.EDU.m4
new file mode 100644
index 000000000000..48e151b7b285
--- /dev/null
+++ b/contrib/sendmail/cf/domain/Berkeley.EDU.m4
@@ -0,0 +1,23 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+divert(0)
+VERSIONID(`@(#)Berkeley.EDU.m4 8.14 (Berkeley) 5/19/98')
+DOMAIN(berkeley-only)dnl
+define(`BITNET_RELAY', `bitnet-relay.Berkeley.EDU')dnl
+define(`UUCP_RELAY', `uucp-relay.Berkeley.EDU')dnl
+define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')dnl
+define(`confCW_FILE', `-o /etc/sendmail.cw')dnl
+define(`confDONT_INIT_GROUPS', True)dnl
+FEATURE(redirect)dnl
+FEATURE(use_cw_file)dnl
+FEATURE(stickyhost)dnl
diff --git a/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4
new file mode 100644
index 000000000000..20309210b8c6
--- /dev/null
+++ b/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+divert(0)
+VERSIONID(`@(#)CS.Berkeley.EDU.m4 8.7 (Berkeley) 5/19/98')
+DOMAIN(Berkeley.EDU)dnl
+HACK(cssubdomain)dnl
+define(`confUSERDB_SPEC',
+ `/usr/sww/share/lib/users.cs.db,/usr/sww/share/lib/users.eecs.db')dnl
diff --git a/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4
new file mode 100644
index 000000000000..022dddd13a57
--- /dev/null
+++ b/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4
@@ -0,0 +1,16 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+divert(0)
+VERSIONID(`@(#)EECS.Berkeley.EDU.m4 8.7 (Berkeley) 5/19/98')
+DOMAIN(Berkeley.EDU)dnl
+MASQUERADE_AS(EECS.Berkeley.EDU)dnl
diff --git a/contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m4
new file mode 100644
index 000000000000..14965a6bff0e
--- /dev/null
+++ b/contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m4
@@ -0,0 +1,16 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+divert(0)
+VERSIONID(`@(#)S2K.Berkeley.EDU.m4 8.7 (Berkeley) 5/19/98')
+DOMAIN(CS.Berkeley.EDU)dnl
+MASQUERADE_AS(postgres.Berkeley.EDU)dnl
diff --git a/contrib/sendmail/cf/domain/berkeley-only.m4 b/contrib/sendmail/cf/domain/berkeley-only.m4
new file mode 100644
index 000000000000..d3d770811c68
--- /dev/null
+++ b/contrib/sendmail/cf/domain/berkeley-only.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+divert(0)
+VERSIONID(`@(#)unspecified-domain.m4 8.7 (Berkeley) 5/19/98')
+errprint(`*** ERROR: You are trying to use the Berkeley sample configuration')
+errprint(` files outside of the Computer Science Division at Berkeley.')
+errprint(` The configuration (.mc) files must be customized to reference')
+errprint(` domain files appropriate for your environment.')
diff --git a/contrib/sendmail/cf/domain/generic.m4 b/contrib/sendmail/cf/domain/generic.m4
new file mode 100644
index 000000000000..1329e4499b81
--- /dev/null
+++ b/contrib/sendmail/cf/domain/generic.m4
@@ -0,0 +1,25 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# The following is a generic domain file. You should be able to
+# use it anywhere. If you want to customize it, copy it to a file
+# named with your domain and make the edits; then, copy the appropriate
+# .mc files and change `DOMAIN(generic)' to reference your updated domain
+# files.
+#
+divert(0)
+VERSIONID(`@(#)generic.m4 8.9 (Berkeley) 5/19/98')
+define(`confFORWARD_PATH', `$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward')dnl
+FEATURE(redirect)dnl
+FEATURE(use_cw_file)dnl
diff --git a/contrib/sendmail/cf/feature/accept_unqualified_senders.m4 b/contrib/sendmail/cf/feature/accept_unqualified_senders.m4
new file mode 100644
index 000000000000..16bef7825394
--- /dev/null
+++ b/contrib/sendmail/cf/feature/accept_unqualified_senders.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)accept_unqualified_senders.m4 8.3 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_ACCEPT_UNQUALIFIED_SENDERS_', 1)
diff --git a/contrib/sendmail/cf/feature/accept_unresolvable_domains.m4 b/contrib/sendmail/cf/feature/accept_unresolvable_domains.m4
new file mode 100644
index 000000000000..5b7241a314e5
--- /dev/null
+++ b/contrib/sendmail/cf/feature/accept_unresolvable_domains.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)accept_unresolvable_domains.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_ACCEPT_UNRESOLVABLE_DOMAINS_', 1)
diff --git a/contrib/sendmail/cf/feature/access_db.m4 b/contrib/sendmail/cf/feature/access_db.m4
new file mode 100644
index 000000000000..85820723deee
--- /dev/null
+++ b/contrib/sendmail/cf/feature/access_db.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)access_db.m4 8.8 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`ACCESS_TABLE',
+ ifelse(_ARG_, `',
+ DATABASE_MAP_TYPE` -o /etc/mail/access',
+ `_ARG_'))dnl
diff --git a/contrib/sendmail/cf/feature/allmasquerade.m4 b/contrib/sendmail/cf/feature/allmasquerade.m4
new file mode 100644
index 000000000000..42121e5cc488
--- /dev/null
+++ b/contrib/sendmail/cf/feature/allmasquerade.m4
@@ -0,0 +1,19 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)allmasquerade.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+
+define(`_ALL_MASQUERADE_', 1)
diff --git a/contrib/sendmail/cf/feature/always_add_domain.m4 b/contrib/sendmail/cf/feature/always_add_domain.m4
new file mode 100644
index 000000000000..e609bf000277
--- /dev/null
+++ b/contrib/sendmail/cf/feature/always_add_domain.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)always_add_domain.m4 8.6 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_ALWAYS_ADD_DOMAIN_', 1)
diff --git a/contrib/sendmail/cf/feature/bestmx_is_local.m4 b/contrib/sendmail/cf/feature/bestmx_is_local.m4
new file mode 100644
index 000000000000..2d3048809ecc
--- /dev/null
+++ b/contrib/sendmail/cf/feature/bestmx_is_local.m4
@@ -0,0 +1,46 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)bestmx_is_local.m4 8.12 (Berkeley) 5/19/98')
+divert(-1)
+
+LOCAL_CONFIG
+# turn on bestMX lookup table
+Kbestmx bestmx
+ifelse(_ARG_, `', `dnl',`
+# limit bestmx to these domains
+CB`'_ARG_')
+
+LOCAL_NET_CONFIG
+
+# If we are the best MX for a site, then we want to accept
+# its mail as local. We assume we've already weeded out mail to
+# UUCP sites which are connected to us, which should also have
+# listed us as their best MX.
+#
+# Warning: this may generate a lot of extra DNS traffic -- a
+# lower cost method is to list all the expected best MX hosts
+# in $=w. This should be fine (and easier to administer) for
+# low to medium traffic hosts. If you use the limited bestmx
+# by passing in a set of possible domains it will improve things.
+
+ifelse(_ARG_, `', `dnl
+# unlimited bestmx
+R$* < @ $* > $* $: $1 < @ $2 @@ $(bestmx $2 $) > $3',
+`dnl
+# limit bestmx to $=B
+R$* < @ $* $=B . > $* $: $1 < @ $2 $3 . @@ $(bestmx $2 $3 . $) > $4')
+R$* $=O $* < @ $* @@ $=w . > $* $@ $>97 $1 $2 $3
+R$* < @ $* @@ $=w . > $* $#local $: $1
+R$* < @ $* @@ $* > $* $: $1 < @ $2 > $4
diff --git a/contrib/sendmail/cf/feature/bitdomain.m4 b/contrib/sendmail/cf/feature/bitdomain.m4
new file mode 100644
index 000000000000..be5155bd3242
--- /dev/null
+++ b/contrib/sendmail/cf/feature/bitdomain.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)bitdomain.m4 8.13 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`BITDOMAIN_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/bitdomain', `_ARG_'))dnl
diff --git a/contrib/sendmail/cf/feature/blacklist_recipients.m4 b/contrib/sendmail/cf/feature/blacklist_recipients.m4
new file mode 100644
index 000000000000..4417fe093695
--- /dev/null
+++ b/contrib/sendmail/cf/feature/blacklist_recipients.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)blacklist_recipients.m4 8.9 (Berkeley) 5/19/98')
+divert(-1)
+
+ifdef(`ACCESS_TABLE',
+ `define(`_BLACKLIST_RCPT_', 1)',
+ `errprint(`*** ERROR: FEATURE(blacklist_recipients) requires FEATURE(access_db)
+')')
diff --git a/contrib/sendmail/cf/feature/domaintable.m4 b/contrib/sendmail/cf/feature/domaintable.m4
new file mode 100644
index 000000000000..0bf9f05fb340
--- /dev/null
+++ b/contrib/sendmail/cf/feature/domaintable.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)domaintable.m4 8.8 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`DOMAIN_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/domaintable', `_ARG_'))dnl
diff --git a/contrib/sendmail/cf/feature/genericstable.m4 b/contrib/sendmail/cf/feature/genericstable.m4
new file mode 100644
index 000000000000..ec7a4d3f7d51
--- /dev/null
+++ b/contrib/sendmail/cf/feature/genericstable.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)genericstable.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`GENERICS_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/genericstable', `_ARG_'))dnl
diff --git a/contrib/sendmail/cf/feature/limited_masquerade.m4 b/contrib/sendmail/cf/feature/limited_masquerade.m4
new file mode 100644
index 000000000000..ae5e868ed966
--- /dev/null
+++ b/contrib/sendmail/cf/feature/limited_masquerade.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)limited_masquerade.m4 8.6 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_LIMITED_MASQUERADE_', 1)
diff --git a/contrib/sendmail/cf/feature/local_lmtp.m4 b/contrib/sendmail/cf/feature/local_lmtp.m4
new file mode 100644
index 000000000000..f323b5b1908e
--- /dev/null
+++ b/contrib/sendmail/cf/feature/local_lmtp.m4
@@ -0,0 +1,20 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)local_lmtp.m4 8.5 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`LOCAL_MAILER_PATH',
+ ifelse(_ARG_, `',
+ ifdef(`confEBINDIR', confEBINDIR, `/usr/libexec')`/mail.local',
+ _ARG_))
+define(`LOCAL_MAILER_FLAGS', `SXfmnz9')
+define(`LOCAL_MAILER_ARGS', `mail.local -l')
diff --git a/contrib/sendmail/cf/feature/local_procmail.m4 b/contrib/sendmail/cf/feature/local_procmail.m4
new file mode 100644
index 000000000000..adf1237b3987
--- /dev/null
+++ b/contrib/sendmail/cf/feature/local_procmail.m4
@@ -0,0 +1,25 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1994 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)local_procmail.m4 8.11 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`LOCAL_MAILER_PATH',
+ ifelse(_ARG_, `',
+ ifdef(`PROCMAIL_MAILER_PATH',
+ PROCMAIL_MAILER_PATH,
+ `/usr/local/bin/procmail'),
+ _ARG_))
+define(`LOCAL_MAILER_FLAGS', `SPfhn9')
+define(`LOCAL_MAILER_ARGS', `procmail -Y -a $h -d $u')
diff --git a/contrib/sendmail/cf/feature/loose_relay_check.m4 b/contrib/sendmail/cf/feature/loose_relay_check.m4
new file mode 100644
index 000000000000..6e3584b02ed8
--- /dev/null
+++ b/contrib/sendmail/cf/feature/loose_relay_check.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)loose_relay_check.m4 8.3 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_LOOSE_RELAY_CHECK_', 1)
diff --git a/contrib/sendmail/cf/feature/mailertable.m4 b/contrib/sendmail/cf/feature/mailertable.m4
new file mode 100644
index 000000000000..3078261a452c
--- /dev/null
+++ b/contrib/sendmail/cf/feature/mailertable.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)mailertable.m4 8.9 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`MAILER_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/mailertable', `_ARG_'))dnl
diff --git a/contrib/sendmail/cf/feature/masquerade_entire_domain.m4 b/contrib/sendmail/cf/feature/masquerade_entire_domain.m4
new file mode 100644
index 000000000000..9766ae4499a0
--- /dev/null
+++ b/contrib/sendmail/cf/feature/masquerade_entire_domain.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)masquerade_entire_domain.m4 8.6 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_MASQUERADE_ENTIRE_DOMAIN_', 1)
diff --git a/contrib/sendmail/cf/feature/masquerade_envelope.m4 b/contrib/sendmail/cf/feature/masquerade_envelope.m4
new file mode 100644
index 000000000000..75d257e64f5d
--- /dev/null
+++ b/contrib/sendmail/cf/feature/masquerade_envelope.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)masquerade_envelope.m4 8.6 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_MASQUERADE_ENVELOPE_', 1)
diff --git a/contrib/sendmail/cf/feature/nocanonify.m4 b/contrib/sendmail/cf/feature/nocanonify.m4
new file mode 100644
index 000000000000..6211a8ebec55
--- /dev/null
+++ b/contrib/sendmail/cf/feature/nocanonify.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)nocanonify.m4 8.6 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_NO_CANONIFY_', 1)
diff --git a/contrib/sendmail/cf/feature/nodns.m4 b/contrib/sendmail/cf/feature/nodns.m4
new file mode 100644
index 000000000000..26458fc3af89
--- /dev/null
+++ b/contrib/sendmail/cf/feature/nodns.m4
@@ -0,0 +1,21 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)nodns.m4 8.8 (Berkeley) 5/19/98')
+divert(-1)
+
+undefine(`confBIND_OPTS')dnl
+errprint(`FEATURE(nodns) is no-op.
+Use ServiceSwitchFile ('ifdef(`confSERVICE_SWITCH_FILE',confSERVICE_SWITCH_FILE,`/etc/service.switch' if your OS does not provide its own)`) instead.
+')
diff --git a/contrib/sendmail/cf/feature/notsticky.m4 b/contrib/sendmail/cf/feature/notsticky.m4
new file mode 100644
index 000000000000..4fa344d70696
--- /dev/null
+++ b/contrib/sendmail/cf/feature/notsticky.m4
@@ -0,0 +1,20 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)notsticky.m4 8.8 (Berkeley) 5/19/98')
+#
+# This is now the default. Use ``FEATURE(stickyhost)'' if you want
+# the old default behaviour.
+#
+divert(-1)
diff --git a/contrib/sendmail/cf/feature/nouucp.m4 b/contrib/sendmail/cf/feature/nouucp.m4
new file mode 100644
index 000000000000..3c1098cac4e6
--- /dev/null
+++ b/contrib/sendmail/cf/feature/nouucp.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)nouucp.m4 8.6 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_NO_UUCP_', 1)
diff --git a/contrib/sendmail/cf/feature/nullclient.m4 b/contrib/sendmail/cf/feature/nullclient.m4
new file mode 100644
index 000000000000..1df782e24dea
--- /dev/null
+++ b/contrib/sendmail/cf/feature/nullclient.m4
@@ -0,0 +1,50 @@
+PUSHDIVERT(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+ifdef(`SMTP_MAILER_FLAGS',, `define(`SMTP_MAILER_FLAGS', `')')
+define(_NULL_CLIENT_ONLY_, `1')
+ifelse(_ARG_, `', `errprint(`Feature "nullclient" requires argument')',
+ `define(`MAIL_HUB', _ARG_)')
+POPDIVERT
+
+#
+# This is used only for relaying mail from a client to a hub when
+# that client does absolutely nothing else -- i.e., it is a "null
+# mailer". In this sense, it acts like the "R" option in Sun
+# sendmail.
+#
+
+VERSIONID(`@(#)nullclient.m4 8.12 (Berkeley) 5/19/98')
+
+PUSHDIVERT(6)
+# hub host (to which all mail is sent)
+DH`'ifdef(`MAIL_HUB', MAIL_HUB,
+ `errprint(`MAIL_HUB not defined for nullclient feature')')
+ifdef(`MASQUERADE_NAME',, `define(`MASQUERADE_NAME', MAIL_HUB)')dnl
+
+# route-addr separators
+C: : ,
+POPDIVERT
+PUSHDIVERT(7)
+############################################
+### Null Client Mailer specification ###
+############################################
+
+ifdef(`confRELAY_MAILER',,
+ `define(`confRELAY_MAILER', `nullclient')')dnl
+ifdef(`confFROM_HEADER',,
+ `define(`confFROM_HEADER', <$g>)')dnl
+ifdef(`SMTP_MAILER_ARGS',, `define(`SMTP_MAILER_ARGS', `IPC $h')')dnl
+
+Mnullclient, P=[IPC], F=CONCAT(mDFMuXa, SMTP_MAILER_FLAGS),ifdef(`SMTP_MAILER_MAX', ` M=SMTP_MAILER_MAX,')
+ A=SMTP_MAILER_ARGS
+POPDIVERT
diff --git a/contrib/sendmail/cf/feature/promiscuous_relay.m4 b/contrib/sendmail/cf/feature/promiscuous_relay.m4
new file mode 100644
index 000000000000..975afab752d6
--- /dev/null
+++ b/contrib/sendmail/cf/feature/promiscuous_relay.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)promiscuous_relay.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_PROMISCUOUS_RELAY_', 1)
diff --git a/contrib/sendmail/cf/feature/rbl.m4 b/contrib/sendmail/cf/feature/rbl.m4
new file mode 100644
index 000000000000..a9251e049782
--- /dev/null
+++ b/contrib/sendmail/cf/feature/rbl.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)rbl.m4 8.8 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_RBL_', ifelse(_ARG_, `', `rbl.maps.vix.com', `_ARG_'))dnl
diff --git a/contrib/sendmail/cf/feature/redirect.m4 b/contrib/sendmail/cf/feature/redirect.m4
new file mode 100644
index 000000000000..721d2260c284
--- /dev/null
+++ b/contrib/sendmail/cf/feature/redirect.m4
@@ -0,0 +1,28 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)redirect.m4 8.10 (Berkeley) 5/19/98')
+divert(-1)
+
+
+PUSHDIVERT(3)
+# addresses sent to foo@host.REDIRECT will give a 551 error code
+R$* < @ $+ .REDIRECT. > $: $1 < @ $2 . REDIRECT . > < ${opMode} >
+R$* < @ $+ .REDIRECT. > <i> $: $1 < @ $2 . REDIRECT. >
+R$* < @ $+ .REDIRECT. > < $- > $# error $@ 5.1.1 $: "551 User has moved; please try " <$1@$2>
+POPDIVERT
+
+PUSHDIVERT(6)
+CPREDIRECT
+POPDIVERT
diff --git a/contrib/sendmail/cf/feature/relay_based_on_MX.m4 b/contrib/sendmail/cf/feature/relay_based_on_MX.m4
new file mode 100644
index 000000000000..44d07116ceb0
--- /dev/null
+++ b/contrib/sendmail/cf/feature/relay_based_on_MX.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)relay_based_on_MX.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_RELAY_MX_SERVED_', 1)
diff --git a/contrib/sendmail/cf/feature/relay_entire_domain.m4 b/contrib/sendmail/cf/feature/relay_entire_domain.m4
new file mode 100644
index 000000000000..823da1e50ff1
--- /dev/null
+++ b/contrib/sendmail/cf/feature/relay_entire_domain.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)relay_entire_domain.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_RELAY_ENTIRE_DOMAIN_', 1)
diff --git a/contrib/sendmail/cf/feature/relay_hosts_only.m4 b/contrib/sendmail/cf/feature/relay_hosts_only.m4
new file mode 100644
index 000000000000..98f72c8f82d8
--- /dev/null
+++ b/contrib/sendmail/cf/feature/relay_hosts_only.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)relay_hosts_only.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_RELAY_HOSTS_ONLY_', 1)
diff --git a/contrib/sendmail/cf/feature/relay_local_from.m4 b/contrib/sendmail/cf/feature/relay_local_from.m4
new file mode 100644
index 000000000000..549bc9c74232
--- /dev/null
+++ b/contrib/sendmail/cf/feature/relay_local_from.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)relay_local_from.m4 8.2 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_RELAY_LOCAL_FROM_', 1)
diff --git a/contrib/sendmail/cf/feature/smrsh.m4 b/contrib/sendmail/cf/feature/smrsh.m4
new file mode 100644
index 000000000000..2c47632649b3
--- /dev/null
+++ b/contrib/sendmail/cf/feature/smrsh.m4
@@ -0,0 +1,23 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)smrsh.m4 8.8 (Berkeley) 5/19/98')
+divert(-1)
+
+ifdef(`_MAILER_local_',
+ `errprint(`*** FEATURE(smrsh) must occur before MAILER(local)')')dnl
+define(`LOCAL_SHELL_PATH',
+ ifelse(_ARG_, `',
+ ifdef(`confEBINDIR', confEBINDIR, `/usr/libexec')`/smrsh',
+ _ARG_))
diff --git a/contrib/sendmail/cf/feature/stickyhost.m4 b/contrib/sendmail/cf/feature/stickyhost.m4
new file mode 100644
index 000000000000..8bbeb49cac62
--- /dev/null
+++ b/contrib/sendmail/cf/feature/stickyhost.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)stickyhost.m4 8.6 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_STICKY_LOCAL_DOMAIN_', 1)
diff --git a/contrib/sendmail/cf/feature/use_ct_file.m4 b/contrib/sendmail/cf/feature/use_ct_file.m4
new file mode 100644
index 000000000000..344d178504d1
--- /dev/null
+++ b/contrib/sendmail/cf/feature/use_ct_file.m4
@@ -0,0 +1,24 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)use_ct_file.m4 8.6 (Berkeley) 5/19/98')
+divert(-1)
+
+# if defined, the sendmail.cf will read the /etc/sendmail.ct file
+# to find the names of trusted users. There should only be a few
+# of these, and normally this is done directly in the .cf file.
+
+define(`_USE_CT_FILE_', `')
+
+divert(0)
diff --git a/contrib/sendmail/cf/feature/use_cw_file.m4 b/contrib/sendmail/cf/feature/use_cw_file.m4
new file mode 100644
index 000000000000..9abf2c1b4992
--- /dev/null
+++ b/contrib/sendmail/cf/feature/use_cw_file.m4
@@ -0,0 +1,24 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)use_cw_file.m4 8.6 (Berkeley) 5/19/98')
+divert(-1)
+
+# if defined, the sendmail.cf will read the /etc/sendmail.cw file
+# to find alternate names for this host. Typically only used when
+# several hosts have been squashed into one another at high speed.
+
+define(`USE_CW_FILE', `')
+
+divert(0)
diff --git a/contrib/sendmail/cf/feature/uucpdomain.m4 b/contrib/sendmail/cf/feature/uucpdomain.m4
new file mode 100644
index 000000000000..1c6a33a81fa7
--- /dev/null
+++ b/contrib/sendmail/cf/feature/uucpdomain.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)uucpdomain.m4 8.13 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`UUDOMAIN_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/uudomain', `_ARG_'))dnl
diff --git a/contrib/sendmail/cf/feature/virtusertable.m4 b/contrib/sendmail/cf/feature/virtusertable.m4
new file mode 100644
index 000000000000..337f635766c0
--- /dev/null
+++ b/contrib/sendmail/cf/feature/virtusertable.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)virtusertable.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`VIRTUSER_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/virtusertable', `_ARG_'))dnl
diff --git a/contrib/sendmail/cf/hack/cssubdomain.m4 b/contrib/sendmail/cf/hack/cssubdomain.m4
new file mode 100644
index 000000000000..b79b69b5b119
--- /dev/null
+++ b/contrib/sendmail/cf/hack/cssubdomain.m4
@@ -0,0 +1,22 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+divert(0)
+VERSIONID(`@(#)cssubdomain.m4 8.6 (Berkeley) 5/19/98')
+
+divert(2)
+# find possible (old & new) versions of our name via short circuit hack
+# (this code should exist ONLY during the transition from .Berkeley.EDU
+# names to .CS.Berkeley.EDU names -- probably not more than a few months)
+R$* < @ $=w .CS.Berkeley.EDU > $* $: $1 < @ $j > $3
+R$* < @ $=w .Berkeley.EDU> $* $: $1 < @ $j > $3
+divert(0)
diff --git a/contrib/sendmail/cf/m4/cf.m4 b/contrib/sendmail/cf/m4/cf.m4
new file mode 100644
index 000000000000..21655822b226
--- /dev/null
+++ b/contrib/sendmail/cf/m4/cf.m4
@@ -0,0 +1,28 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+#
+# This file is included so that multiple includes of cf.m4 will work
+#
+
+# figure out where the CF files live
+ifdef(`_CF_DIR_', `',
+ `ifelse(__file__, `__file__',
+ `define(`_CF_DIR_', `../')',
+ `define(`_CF_DIR_',
+ substr(__file__, 0, eval(len(__file__) - 8)))')')
+
+divert(0)dnl
+ifdef(`OSTYPE', `dnl',
+`include(_CF_DIR_`'m4/cfhead.m4)dnl
+VERSIONID(`@(#)cf.m4 8.29 (Berkeley) 5/19/98')')
diff --git a/usr.sbin/sendmail/cf/m4/cfhead.m4 b/contrib/sendmail/cf/m4/cfhead.m4
index 6bef4c685a3a..a7a109856d4e 100644
--- a/usr.sbin/sendmail/cf/m4/cfhead.m4
+++ b/contrib/sendmail/cf/m4/cfhead.m4
@@ -1,35 +1,13 @@
#
-# Copyright (c) 1983, 1995 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
######################################################################
@@ -118,6 +96,10 @@ define(`GENERICS_DOMAIN', `PUSHDIVERT(5)CG$1
POPDIVERT`'dnl`'')
define(`GENERICS_DOMAIN_FILE', `PUSHDIVERT(5)FG$1
POPDIVERT`'dnl`'')
+define(`RELAY_DOMAIN', `PUSHDIVERT(5)CR$1
+POPDIVERT`'dnl`'')
+define(`RELAY_DOMAIN_FILE', `PUSHDIVERT(5)FR$1
+POPDIVERT`'dnl`'')
define(`_OPTINS', `ifdef(`$1', `$2$1$3')')
m4wrap(`include(_CF_DIR_`m4/proto.m4')')
@@ -151,10 +133,10 @@ define(`confSAFE_QUEUE', `True')
define(`confTO_QUEUERETURN', `5d')
define(`confTO_QUEUEWARN', `4h')
define(`confTIME_ZONE', `USE_SYSTEM')
-define(`confDEF_USER_ID', `1:1')
define(`confCW_FILE', `/etc/sendmail.cw')
define(`confMIME_FORMAT_ERRORS', `True')
define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')
+define(`confCR_FILE', `-o /etc/mail/relay-domains')
divert(0)dnl
-VERSIONID(`@(#)cfhead.m4 8.9 (Berkeley) 1/18/97')
+VERSIONID(`@(#)cfhead.m4 8.22 (Berkeley) 5/19/98')
diff --git a/usr.sbin/sendmail/cf/m4/nullrelay.m4 b/contrib/sendmail/cf/m4/nullrelay.m4
index e8f967726601..02020697a862 100644
--- a/usr.sbin/sendmail/cf/m4/nullrelay.m4
+++ b/contrib/sendmail/cf/m4/nullrelay.m4
@@ -1,40 +1,18 @@
divert(-1)
#
-# Copyright (c) 1983, 1995 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)nullrelay.m4 8.13 (Berkeley) 4/30/97')
+VERSIONID(`@(#)nullrelay.m4 8.19 (Berkeley) 5/19/98')
#
# This configuration applies only to relay-only hosts. They send
@@ -108,7 +86,7 @@ R$+ $@ $1 @ $M unadorned user')
S0
-R$*:;<@> $#error $@ USAGE $: "list:; syntax illegal for recipient addresses"
+R$*:;<@> $#error $@ USAGE $: "List:; syntax illegal for recipient addresses"
# pass everything else to a relay host
R$* $#_RELAY_ $@ $H $: $1
diff --git a/usr.sbin/sendmail/cf/m4/proto.m4 b/contrib/sendmail/cf/m4/proto.m4
index 78fa195ef2ac..d8842bfff1f5 100644
--- a/usr.sbin/sendmail/cf/m4/proto.m4
+++ b/contrib/sendmail/cf/m4/proto.m4
@@ -1,45 +1,23 @@
divert(-1)
#
-# Copyright (c) 1983, 1995 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)proto.m4 8.151 (Berkeley) 7/31/97')
+VERSIONID(`@(#)proto.m4 8.223 (Berkeley) 6/30/98')
MAILER(local)dnl
-# level 7 config file format
-V7/Berkeley
+# level 8 config file format
+V8/Berkeley
divert(-1)
# do some sanity checking
@@ -59,6 +37,9 @@ define(`_LOCAL_', `confLOCAL_MAILER')dnl for readability only
define(`_RELAY_', `confRELAY_MAILER')dnl for readability only
define(`_UUCP_', `confUUCP_MAILER')dnl for readability only
+# set our default hashed database type
+ifdef(`DATABASE_MAP_TYPE',, `define(`DATABASE_MAP_TYPE', `hash')')
+
# back compatibility with old config files
ifdef(`confDEF_GROUP_ID',
`errprint(`*** confDEF_GROUP_ID is obsolete.')
@@ -83,6 +64,10 @@ define(`_OPTION', `ifdef(`$2', `O $1=$2', `#O $1`'ifelse($3, `',, `=$3')')')dnl
divert(0)dnl
+# override file safeties - setting this option compromises system security
+# need to set this now for the sake of class files
+_OPTION(DontBlameSendmail, `confDONT_BLAME_SENDMAIL', safe)
+
##################
# local info #
##################
@@ -129,12 +114,11 @@ CPFAX
# "Smart" relay host (may be null)
DS`'ifdef(`SMART_HOST', SMART_HOST)
+ifdef(`LUSER_RELAY', `dnl
# place to which unknown users should be forwarded
-ifdef(`LUSER_RELAY', `', `#')dnl
Kuser user -m -a<>
-ifdef(`LUSER_RELAY',
- `DL`'LUSER_RELAY',
- `#DLname_of_luser_relay')
+DL`'LUSER_RELAY',
+`dnl')
# operators that cannot be in local usernames (i.e., network indicators)
CO @ % ifdef(`_NO_UUCP_', `', `!')
@@ -145,25 +129,54 @@ C..
# a class with just a left bracket (for identifying domain literals)
C[[
+ifdef(`MAILER_TABLE', `dnl
# Mailer table (overriding domains)
-ifdef(`MAILER_TABLE',
- `Kmailertable MAILER_TABLE',
- `#Kmailertable dbm /etc/mailertable')
+Kmailertable MAILER_TABLE',
+`dnl')
+ifdef(`DOMAIN_TABLE', `dnl
# Domain table (adding domains)
-ifdef(`DOMAIN_TABLE',
- `Kdomaintable DOMAIN_TABLE',
- `#Kdomaintable dbm /etc/domaintable')
+Kdomaintable DOMAIN_TABLE',
+`dnl')
+ifdef(`GENERICS_TABLE', `dnl
# Generics table (mapping outgoing addresses)
-ifdef(`GENERICS_TABLE',
- `Kgenerics GENERICS_TABLE',
- `#Kgenerics dbm /etc/genericstable')
+Kgenerics GENERICS_TABLE',
+`dnl')
+
+ifdef(`UUDOMAIN_TABLE', `dnl
+# UUCP domain table
+Kuudomain UUDOMAIN_TABLE',
+`dnl')
+
+ifdef(`BITDOMAIN_TABLE', `dnl
+# BITNET mapping table
+Kbitdomain BITDOMAIN_TABLE',
+`dnl')
+ifdef(`VIRTUSER_TABLE', `dnl
# Virtual user table (maps incoming users)
-ifdef(`VIRTUSER_TABLE',
- `Kvirtuser VIRTUSER_TABLE',
- `#Kvirtuser dbm /etc/virtusertable')
+Kvirtuser VIRTUSER_TABLE',
+`dnl')
+
+ifdef(`ACCESS_TABLE', `dnl
+# Access list database (for spam stomping)
+Kaccess ACCESS_TABLE',
+`dnl')
+
+ifdef(`_RELAY_MX_SERVED_', `dnl
+# MX map (to allow relaying to hosts that we MX for)
+Kmxserved bestmx -z: -T<TEMP>',
+`dnl')
+
+ifdef(`_ACCEPT_UNRESOLVABLE_DOMAINS_',`dnl',`dnl
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OK> -T<TEMP>')
+
+ifdef(`confCR_FILE', `dnl
+# Hosts that will permit relaying ($=R)
+FR`'confCR_FILE',
+`dnl')
# who I send unqualified names to (null means deliver locally)
DR`'ifdef(`LOCAL_RELAY', LOCAL_RELAY)
@@ -349,7 +362,7 @@ ifelse(confTIME_ZONE, `USE_SYSTEM', `#O TimeZoneSpec=',
`O TimeZoneSpec=confTIME_ZONE')
# default UID (can be username or userid:groupid)
-_OPTION(DefaultUser, `confDEF_USER_ID', nobody)
+_OPTION(DefaultUser, `confDEF_USER_ID', mailnull)
# list of locations of user database file (null means no lookup)
_OPTION(UserDatabaseSpec, `confUSERDB_SPEC', /etc/userdb)
@@ -423,6 +436,15 @@ _OPTION(SmtpGreetingMessage, `confSMTP_LOGIN_MSG')
# UNIX initial From header format (old $l macro)
_OPTION(UnixFromLine, `confFROM_LINE')
+# From: lines that have embedded newlines are unwrapped onto one line
+_OPTION(SingleLineFromHeader, `confSINGLE_LINE_FROM_HEADER', False)
+
+# Allow HELO SMTP command that does not `include' a host name
+_OPTION(AllowBogusHELO, `confALLOW_BOGUS_HELO', False)
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+_OPTION(MustQuoteChars, `confMUST_QUOTE_CHARS', .)
+
# delimiter (operator) characters (old $o macro)
_OPTION(OperatorChars, `confOPERATORS')
@@ -433,11 +455,17 @@ _OPTION(DontInitGroups, `confDONT_INIT_GROUPS')
_OPTION(UnsafeGroupWrites, `confUNSAFE_GROUP_WRITES')
# where do errors that occur when sending errors get sent?
-_OPTION(DoubleBounceAddress, `confDOUBLE_BOUNCE_ADDRESS')
+_OPTION(DoubleBounceAddress, `confDOUBLE_BOUNCE_ADDRESS', postmaster)
# what user id do we assume for the majority of the processing?
_OPTION(RunAsUser, `confRUN_AS_USER', sendmail)
+# maximum number of recipients per SMTP envelope
+_OPTION(MaxRecipientsPerMessage, `confMAX_RCPTS_PER_MESSAGE', 100)
+
+# shall we get local names from our installed interfaces?
+_OPTION(DontProbeInterfaces, `confDONT_PROBE_INTERFACES')
+
###########################
# Message precedences #
###########################
@@ -572,12 +600,20 @@ R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [a.b.c.d]
R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
+ifdef(`DOMAIN_TABLE', `dnl
# look up domains in the domain table
-ifdef(`DOMAIN_TABLE', `', `#')dnl
-R$* < @ $+ > $* $: $1 < @ $(domaintable $2 $) > $3
+R$* < @ $+ > $* $: $1 < @ $(domaintable $2 $) > $3', `dnl')
undivert(2)dnl
+ifdef(`BITDOMAIN_TABLE', `dnl
+# handle BITNET mapping
+R$* < @ $+ .BITNET > $* $: $1 < @ $(bitdomain $2 $: $2.BITNET $) > $3', `dnl')
+
+ifdef(`UUDOMAIN_TABLE', `dnl
+# handle UUCP mapping
+R$* < @ $+ .UUCP > $* $: $1 < @ $(uudomain $2 $: $2.UUCP $) > $3', `dnl')
+
ifdef(`_NO_UUCP_', `dnl',
`ifdef(`UUCP_RELAY',
`# pass UUCP addresses straight through
@@ -594,15 +630,14 @@ ifdef(`_CLASS_X_',
ifdef(`_CLASS_Y_',
`R$* < @ $=Y . UUCP > $* $@ $1 < @ $2 . UUCP . > $3', `dnl')
-define(`X', ifdef(`_NO_CANONIFY_', `#', `'))dnl
+ifdef(`_NO_CANONIFY_', `dnl', `dnl
# try UUCP traffic as a local address
-X`'R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
-X`'R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3')
-undefine(`X')dnl
-')
+R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3')
+')')
+ifdef(`_NO_CANONIFY_', `dnl', `dnl
# pass to name server to make hostname canonical
-ifdef(`_NO_CANONIFY_', `#')dnl
-R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4
+R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4')
# local host aliases and pseudo-domains are always canonical
R$* < @ $=w > $* $: $1 < @ $2 . > $3
@@ -662,50 +697,68 @@ R$* $@ $>0 $1
S0
R$* $: $>Parse0 $1 initial parsing
+R<@> $#_LOCAL_ $: <@> special case error msgs
R$* $: $>98 $1 handle local hacks
R$* $: $>Parse1 $1 final parsing
+#
+# Parse0 -- do initial syntax checking and eliminate local addresses.
+# This should either return with the (possibly modified) input
+# or return with a #error mailer. It should not return with a
+# #mailer other than the #error mailer.
+#
+
SParse0
-R<@> $#_LOCAL_ $: <@> special case error msgs
-R$* : $* ; <@> $#error $@ 5.1.3 $: "list:; syntax illegal for recipient addresses"
-R<@ $+> $#error $@ 5.1.1 $: "user address required"
+R<@> $@ <@> special case error msgs
+R$* : $* ; <@> $#error $@ 5.1.3 $: "List:; syntax illegal for recipient addresses"
+#R@ <@ $* > < @ $1 > catch "@@host" bogosity
+R<@ $+> $#error $@ 5.1.3 $: "User address required"
R$* $: <> $1
R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
-R<> $* <$* : $* > $* $#error $@ 5.1.1 $: "colon illegal in host name part"
+R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "Colon illegal in host name part"
R<> $* $1
-R$* < @ . $* > $* $#error $@ 5.1.2 $: "invalid host name"
-R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "invalid host name"
-
-ifdef(`_MAILER_smtp_',
-`# handle numeric address spec
-R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
-R$* < @ [ $+ ] > $* $#_SMTP_ $@ [$2] $: $1 < @ [$2] > $3 still numeric: send',
- `dnl')
+R$* < @ . $* > $* $#error $@ 5.1.2 $: "Invalid host name"
+R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "Invalid host name"
# now delete the local info -- note $=O to find characters that cause forwarding
R$* < @ > $* $@ $>Parse0 $>3 $1 user@ => user
R< @ $=w . > : $* $@ $>Parse0 $>3 $2 @here:... -> ...
R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
-R< @ $+ > $#error $@ 5.1.1 $: "user address required"
+R< @ $+ > $#error $@ 5.1.3 $: "User address required"
R$* $=O $* < @ $=w . > $@ $>Parse0 $>3 $1 $2 $3 ...@here -> ...
+R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
+R< @ *LOCAL* > $#error $@ 5.1.3 $: "User address required"
+R$* $=O $* < @ *LOCAL* >
+ $@ $>Parse0 $>3 $1 $2 $3 ...@*LOCAL* -> ...
+R$* < @ *LOCAL* > $: $1
+
+#
+# Parse1 -- the bottom half of ruleset 0.
+#
SParse1
+ifdef(`_MAILER_smtp_',
+`# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $#_SMTP_ $@ [$2] $: $1 < @ [$2] > $3 still numeric: send',
+ `dnl')
+
+ifdef(`VIRTUSER_TABLE', `dnl
# handle virtual users
-define(`X', ifdef(`VIRTUSER_TABLE', `', `#'))dnl
-X`'R$+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-X`'R<@> $+ + $* < @ $* . >
+R$+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
+R<@> $+ + $* < @ $* . >
$: < $(virtuser $1 + * @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-X`'R<@> $+ + $* < @ $* . >
+R<@> $+ + $* < @ $* . >
$: < $(virtuser $1 @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-X`'R<@> $+ < @ $+ . > $: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-X`'R<@> $+ $: $1
-X`'R< error : $- $+ > $* $#error $@ $( dequote $1 $) $: $2
-X`'R< $+ > $+ < @ $+ > $: $>97 $1
-undefine(`X')dnl
+R<@> $+ < @ $+ . > $: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
+R<@> $+ $: $1
+R< error : $- $+ > $* $#error $@ $(dequote $1 $) $: $2
+R< $+ > $+ < @ $+ > $: $>97 $1',
+`dnl')
# short circuit local delivery so forwarded email works
-ifdef(`_MAILER_usenet_', `', `#')dnl
-R$+ . USENET < @ $=w . > $#usenet $: $1 handle usenet specially
+ifdef(`_MAILER_usenet_', `dnl
+R$+ . USENET < @ $=w . > $#usenet $: $1 handle usenet specially', `dnl')
ifdef(`_STICKY_LOCAL_DOMAIN_',
`R$+ < @ $=w . > $: < $H > $1 < @ $2 . > first try hub
R< $+ > $+ < $+ > $>95 < $1 > $2 < $3 > yep ....
@@ -714,14 +767,14 @@ R< > $+ < $+ > $#_LOCAL_ $: @ $1 nope, local address',
`R$=L < @ $=w . > $#_LOCAL_ $: @ $1 special local names
R$+ < @ $=w . > $#_LOCAL_ $: $1 regular local name')
-define(`X', ifdef(`MAILER_TABLE', `', `#'))dnl
+ifdef(`MAILER_TABLE', `dnl
# not local -- try mailer table lookup
-X`'R$* <@ $+ > $* $: < $2 > $1 < @ $2 > $3 extract host name
-X`'R< $+ . > $* $: < $1 > $2 strip trailing dot
-X`'R< $+ > $* $: < $(mailertable $1 $) > $2 lookup
-X`'R< $~[ : $+ > $* $>95 < $1 : $2 > $3 check -- resolved?
-X`'R< $+ > $* $: $>90 <$1> $2 try domain
-undefine(`X')dnl
+R$* <@ $+ > $* $: < $2 > $1 < @ $2 > $3 extract host name
+R< $+ . > $* $: < $1 > $2 strip trailing dot
+R< $+ > $* $: < $(mailertable $1 $) > $2 lookup
+R< $~[ : $+ > $* $>95 < $1 : $2 > $3 check -- resolved?
+R< $+ > $* $: $>90 <$1> $2 try domain',
+`dnl')
undivert(4)dnl
ifdef(`_NO_UUCP_', `dnl',
@@ -774,11 +827,7 @@ R$* < @ $* > $* $: $>95 < $S > $1 < @ $2 > $3 glue on smarthost name
# deal with other remote names
ifdef(`_MAILER_smtp_',
`R$* < @$* > $* $#_SMTP_ $@ $2 $: $1 < @ $2 > $3 user@host.domain',
-`R$* < @$* > $* $#error $@ 5.1.2 $: Unrecognized host name $2')
-
-# if this is quoted, strip the quotes and try again
-R$+ $: $(dequote $1 $) strip quotes
-R$+ $=O $+ $@ $>97 $1 $2 $3 try again
+`R$* < @$* > $* $#error $@ 5.1.2 $: "Unrecognized host name" $2')
# handle locally delivered names
R$=L $#_LOCAL_ $: @ $1 special local names
@@ -797,39 +846,39 @@ R$+ + $* $#_LOCAL_ $@ + $2 $: $1 + *
# prepend an empty "forward host" on the front
R$+ $: <> $1
-define(`X', ifdef(`LUSER_RELAY', `', `#'))dnl
+ifdef(`LUSER_RELAY', `dnl
# send unrecognized local users to a relay host
-X`'R< > $+ $: < $L . > $( user $1 $) look up user
-X`'R< $* > $+ <> $* $: < > $2 $3 found; strip $L
-X`'R< $* . > $+ $: < $1 > $2 strip extra dot
-undefine(`X')dnl
+R< > $+ $: < $L . > $(user $1 $) look up user
+R< $* > $+ <> $* $: < > $2 $3 found; strip $L
+R< $* . > $+ $: < $1 > $2 strip extra dot',
+`dnl')
# see if we have a relay or a hub
R< > $+ $: < $H > $1 try hub
R< > $+ $: < $R > $1 try relay
-R< > $+ $: < > < $1 $(dequote "" $&h $) > nope, restore +detail
+R< > $+ $: < > < $1 $&h > nope, restore +detail
R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
R< > < $+ > + $* $#_LOCAL_ $@ $2 $: @ $1 strip the extra +
R< > < $+ > $@ $1 no +detail
-R$+ $: $1 $(dequote "" $&h $) add +detail back in
+R$+ $: $1 $&h add +detail back in
R< local : $* > $* $: $>95 < local : $1 > $2 no host extension
R< error : $* > $* $: $>95 < error : $1 > $2 no host extension
R< $- : $+ > $+ $: $>95 < $1 : $2 > $3 < @ $2 >
R< $+ > $+ $@ $>95 < $1 > $2 < @ $1 >
+ifdef(`MAILER_TABLE', `dnl
###################################################################
### Ruleset 90 -- try domain part of mailertable entry ###
###################################################################
-define(`X', ifdef(`MAILER_TABLE', `', `#'))dnl
S90
-X`'R$* <$- . $+ > $* $: $1$2 < $(mailertable .$3 $@ $1$2 $@ $2 $) > $4
-X`'R$* <$~[ : $+ > $* $>95 < $2 : $3 > $4 check -- resolved?
-X`'R$* < . $+ > $* $@ $>90 $1 . <$2> $3 no -- strip & try again
-X`'R$* < $* > $* $: < $(mailertable . $@ $1$2 $) > $3 try "."
-X`'R< $~[ : $+ > $* $>95 < $1 : $2 > $3 "." found?
-X`'R< $* > $* $@ $2 no mailertable match
-undefine(`X')dnl
+R$* <$- . $+ > $* $: $1$2 < $(mailertable .$3 $@ $1$2 $@ $2 $) > $4
+R$* <$~[ : $+ > $* $>95 < $2 : $3 > $4 check -- resolved?
+R$* < . $+ > $* $@ $>90 $1 . <$2> $3 no -- strip & try again
+R$* < $* > $* $: < $(mailertable . $@ $1$2 $) > $3 try "."
+R< $~[ : $+ > $* $>95 < $1 : $2 > $3 "." found?
+R< $* > $* $@ $2 no mailertable match',
+`dnl')
###################################################################
### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
@@ -837,7 +886,7 @@ undefine(`X')dnl
S95
R< > $* $@ $1 strip off null relay
-R< error : $- $+ > $* $#error $@ $( dequote $1 $) $: $2
+R< error : $- $+ > $* $#error $@ $(dequote $1 $) $: $2
R< local : $* > $* $>CanonLocal < $1 > $2
R< $- : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
R< $- : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
@@ -869,33 +918,33 @@ R< $+ > $* $#_LOCAL_ $@ $2 $: $1
S93
+ifdef(`GENERICS_TABLE', `dnl
# handle generics database
-define(`X', ifdef(`GENERICS_TABLE', `', `#'))dnl
ifdef(`_GENERICS_ENTIRE_DOMAIN_',
-`X`'R$+ < @ $* $=G . > $: < $1@$2$3 > $1 < @ $2$3 . > @ mark',
-`X`'R$+ < @ $=G . > $: < $1@$2 > $1 < @ $2 . > @ mark')
-X`'R$+ < @ *LOCAL* > $: < $1@$j > $1 < @ *LOCAL* > @ mark
-X`'R< $+ > $+ < $* > @ $: < $(generics $1 $: $) > $2 < $3 >
-X`'R< > $+ < @ $+ > $: < $(generics $1 $: $) > $1 < @ $2 >
-X`'R< $* @ $* > $* < $* > $@ $>3 $1 @ $2 found qualified
-X`'R< $+ > $* < $* > $: $>3 $1 @ *LOCAL* found unqualified
-X`'R< > $* $: $1 not found
-undefine(`X')dnl
+`R$+ < @ $* $=G . > $: < $1@$2$3 > $1 < @ $2$3 . > @ mark',
+`R$+ < @ $=G . > $: < $1@$2 > $1 < @ $2 . > @ mark')
+R$+ < @ *LOCAL* > $: < $1@$j > $1 < @ *LOCAL* > @ mark
+R< $+ > $+ < $* > @ $: < $(generics $1 $: $) > $2 < $3 >
+R< > $+ < @ $+ > $: < $(generics $1 $: $) > $1 < @ $2 >
+R< $* @ $* > $* < $* > $@ $>3 $1 @ $2 found qualified
+R< $+ > $* < $* > $: $>3 $1 @ *LOCAL* found unqualified
+R< > $* $: $1 not found',
+`dnl')
# special case the users that should be exposed
R$=E < @ *LOCAL* > $@ $1 < @ $j . > leave exposed
ifdef(`_MASQUERADE_ENTIRE_DOMAIN_',
`R$=E < @ $* $=M . > $@ $1 < @ $2 $3 . >',
`R$=E < @ $=M . > $@ $1 < @ $2 . >')
-ifdef(`_LIMITED_MASQUERADE_', `#')dnl
-R$=E < @ $=w . > $@ $1 < @ $2 . >
+ifdef(`_LIMITED_MASQUERADE_', `dnl',
+`R$=E < @ $=w . > $@ $1 < @ $2 . >')
# handle domain-specific masquerading
ifdef(`_MASQUERADE_ENTIRE_DOMAIN_',
`R$* < @ $* $=M . > $* $: $1 < @ $2 $3 . @ $M > $4 convert masqueraded doms',
`R$* < @ $=M . > $* $: $1 < @ $2 . @ $M > $3 convert masqueraded doms')
-ifdef(`_LIMITED_MASQUERADE_', `#')dnl
-R$* < @ $=w . > $* $: $1 < @ $2 . @ $M > $3
+ifdef(`_LIMITED_MASQUERADE_', `dnl',
+`R$* < @ $=w . > $* $: $1 < @ $2 . @ $M > $3')
R$* < @ *LOCAL* > $* $: $1 < @ $j . @ $M > $2
R$* < @ $+ @ > $* $: $1 < @ $2 > $3 $M is null
R$* < @ $+ @ $+ > $* $: $1 < @ $3 . > $4 $M is not null
@@ -905,10 +954,9 @@ R$* < @ $+ @ $+ > $* $: $1 < @ $3 . > $4 $M is not null
###################################################################
S94
-ifdef(`_MASQUERADE_ENVELOPE_', `', `#')dnl
-R$+ $@ $>93 $1
-ifdef(`_MASQUERADE_ENVELOPE_', `#', `')dnl
-R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+ifdef(`_MASQUERADE_ENVELOPE_',
+`R$+ $@ $>93 $1',
+`R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2')
###################################################################
### Ruleset 98 -- local part of ruleset zero (can be null) ###
@@ -916,6 +964,298 @@ R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
S98
undivert(3)dnl
+
+ifelse(confDELIVERY_MODE, defer, `errprint(`WARNING: Antispam rules not available in deferred delivery mode.')')
+ifdef(`ACCESS_TABLE', `dnl
+######################################################################
+### LookUpDomain -- search for domain in access database
+###
+### Parameters:
+### <$1> -- key (domain name)
+### <$2> -- default (what to return if not found in db)
+### <$3> -- passthru (additional data passed unchanged through)
+######################################################################
+
+SLookUpDomain
+R<$+> <$+> <$*> $: < $(access $1 $: ? $) > <$1> <$2> <$3>
+R<?> <$+.$+> <$+> <$*> $@ $>LookUpDomain <$2> <$3> <$4>
+R<?> <$+> <$+> <$*> $@ <$2> <$3>
+R<$*> <$+> <$+> <$*> $@ <$1> <$4>
+
+######################################################################
+### LookUpAddress -- search for host address in access database
+###
+### Parameters:
+### <$1> -- key (dot quadded host address)
+### <$2> -- default (what to return if not found in db)
+### <$3> -- passthru (additional data passed through)
+######################################################################
+
+SLookUpAddress
+R<$+> <$+> <$*> $: < $(access $1 $: ? $) > <$1> <$2> <$3>
+R<?> <$+.$-> <$+> <$*> $@ $>LookUpAddress <$1> <$3> <$4>
+R<?> <$+> <$+> <$*> $@ <$2> <$3>
+R<$*> <$+> <$+> <$*> $@ <$1> <$4>',
+`dnl')
+
+######################################################################
+### ParseRecipient -- Strip off hosts in $=R as well as possibly
+### $* $=m or the access database.
+### Check user portion for host separators.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed, non-local-relaying address
+######################################################################
+
+SParseRecipient
+R$* $: <?> $>Parse0 $>3 $1
+R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
+R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
+
+# if no $=O character, no host in the user portion, we are done
+R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
+R<?> $* $@ $1
+
+ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl
+# if we relay, check username portion for user%host so host can be checked also
+R<NO> $* < @ $* $=m > $: <RELAY> $1 < @ $2 $3 >', `dnl')
+ifdef(`_RELAY_HOSTS_ONLY_',
+`R<NO> $* < @ $=R > $: <RELAY> $1 < @ $2 >
+ifdef(`ACCESS_TABLE', `dnl
+R<NO> $* < @ $* > $: <$(access $2 $: NO $)> $1 < @ $2 >',`dnl')',
+`R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+ifdef(`ACCESS_TABLE', `dnl
+R<NO> $* < @ $* > $: $>LookUpDomain <$2> <NO> <$1 < @ $2 >>
+R<$+> <$+> $: <$1> $2',`dnl')')
+R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
+R<$-> $* $@ $2
+
+######################################################################
+### check_relay -- check hostname/address on SMTP startup
+######################################################################
+
+SLocal_check_relay
+Scheck_relay
+R$* $: $1 $| $>"Local_check_relay" $1
+R$* $| $* $| $#$* $#$3
+R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
+
+SBasic_check_relay
+# check for deferred delivery mode
+R$* $: < ${deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+ifdef(`ACCESS_TABLE', `dnl
+R$+ $| $+ $: $>LookUpDomain < $1 > <?> < $2 >
+R<?> < $+ > $: $>LookUpAddress < $1 > <OK> < $1 >
+R<OK> < $* > $: $1
+R<RELAY> < $* > $: $1
+R<REJECT> $* $#error $@ 5.7.1 $: "ifdef(`confREJECT_MSG', `confREJECT_MSG', `550 Access denied')"
+R<DISCARD> $* $#discard $: discard
+R<$+> $* $#error $@ 5.7.1 $: $1', `dnl')
+
+ifdef(`_RBL_', `dnl
+# MAPS project checks -- http://maps.vix.com/
+R$* $: $&{client_addr}
+R$-.$-.$-.$- $: $(host $4.$3.$2.$1._RBL_. $: OK $)
+ROK $@ OK
+R$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused; see http://maps.vix.com/rbl/"',
+`dnl')
+
+######################################################################
+### check_mail -- check SMTP ``MAIL FROM:'' command argument
+######################################################################
+
+SLocal_check_mail
+Scheck_mail
+R$* $: $1 $| $>"Local_check_mail" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_mail" $1
+
+SBasic_check_mail
+# check for deferred delivery mode
+R$* $: < ${deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+R<> $@ <OK>
+R$* $: <?> $>Parse0 $>3 $1 make domain canonical
+R<?> $* < @ $+ . > $* <?> $1 < @ $2 > $3 strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < $* $=P > $* $: <OK> $1 < @ $2 $3 > $4
+ifdef(`_ACCEPT_UNRESOLVABLE_DOMAINS_',
+`R<?> $* < @ $+ > $* $: <OK> $1 < @ $2 > $3 ... unresolvable OK',
+`R<?> $* < @ $+ > $* $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > $3
+R<? $* <$->> $* < @ $+ > $*
+ $: <$2> $3 < @ $4 > $5')
+
+ifdef(`_ACCEPT_UNQUALIFIED_SENDERS_',`dnl',`dnl
+# handle case of @localhost on address
+R<$+> $* < @localhost > $: < ? $&{client_name} > <$1> $2 < @localhost >
+R<$+> $* < @localhost.$m >
+ $: < ? $&{client_name} > <$1> $2 < @localhost.$m >
+ifdef(`_NO_UUCP_', `dnl',
+`R<$+> $* < @localhost.UUCP >
+ $: < ? $&{client_name} > <$1> $2 < @localhost.UUCP >')
+R<? $=w> <$+> $* <?> <$2> $3
+R<? $+> <$+> $* $#error $@ 5.5.4 $: "553 Real domain name required"
+R<?> <$+> $* $: <$1> $2')
+
+ifdef(`ACCESS_TABLE', `dnl
+# lookup localpart (user@)
+R<$+> $* < @ $+ > $* $: <USER $(access $2@ $: ? $) > <$1> $2 < @ $3 > $4
+# no match, try full address (user@domain rest)
+R<USER ?> <$+> $* < @ $* > $*
+ $: <USER $(access $2@$3$4 $: ? $) > <$1> $2 < @ $3 > $4
+# no match, try address (user@domain)
+R<USER ?> <$+> $+ < @ $+ > $*
+ $: <USER $(access $2@$3 $: ? $) > <$1> $2 < @ $3 > $4
+# no match, try (sub)domain (domain)
+R<USER ?> <$+> $* < @ $+ > $*
+ $: $>LookUpDomain <$3> <$1> <>
+# check unqualified user in access database
+R<?> $* $: <USER $(access $1@ $: ? $) > <?> $1
+# retransform for further use
+R<USER $+> <$+> $* $: <$1> $3',
+`dnl')
+
+ifdef(`_ACCEPT_UNQUALIFIED_SENDERS_',`dnl',`dnl
+# handle case of no @domain on address
+R<?> $* $: < ? $&{client_name} > $1
+R<?> $* $@ <OK> ...local unqualed ok
+R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required"
+ ...remote is not')
+# check results
+R<?> $* $@ <OK>
+R<OK> $* $@ <OK>
+R<TEMP> $* $#error $@ 4.1.8 $: "451 Sender domain must resolve"
+R<PERM> $* $#error $@ 5.1.8 $: "501 Sender domain must exist"
+ifdef(`ACCESS_TABLE', `dnl
+R<RELAY> $* $@ <RELAY>
+R<DISCARD> $* $#discard $: discard
+R<REJECT> $* $#error $@ 5.7.1 $: "ifdef(`confREJECT_MSG', `confREJECT_MSG', `550 Access denied')"
+R<$+> $* $#error $@ 5.7.1 $: $1 error from access db',
+`dnl')
+
+######################################################################
+### check_rcpt -- check SMTP ``RCPT TO:'' command argument
+######################################################################
+
+SLocal_check_rcpt
+Scheck_rcpt
+R$* $: $1 $| $>"Local_check_rcpt" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_rcpt" $1
+
+SBasic_check_rcpt
+# check for deferred delivery mode
+R$* $: < ${deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+ifdef(`_LOOSE_RELAY_CHECK_',`dnl
+R$* $: $>Parse0 $>3 $1
+R$* < @ $* . > $1 < @ $2 > strip trailing dots',
+`R$* $: $>ParseRecipient $1 strip relayable hosts')
+
+ifdef(`_BLACKLIST_RCPT_',`dnl
+ifdef(`ACCESS_TABLE', `dnl
+# blacklist local users or any host from receiving mail
+R$* $: <?> $1
+R<?> $+ < @ $=w > $: <> <USER $1> <FULL $1@$2> <HOST $2> <$1 < @ $2 >>
+R<?> $+ < @ $* > $: <> <FULL $1@$2> <HOST $2> <$1 < @ $2 >>
+R<?> $+ $: <> <USER $1> <$1>
+R<> <USER $+> $* $: <$(access $1 $: $)> $2
+R<> <FULL $+> $* $: <$(access $1 $: $)> $2
+R<OK> <FULL $+> $* $: <$(access $1 $: $)> $2
+R<> <HOST $+> $* $: <$(access $1 $: $)> $2
+R<OK> <HOST $+> $* $: <$(access $1 $: $)> $2
+R<> <$*> $: $1
+R<OK> <$*> $: $1
+R<RELAY> <$*> $: $1
+R<REJECT> $* $#error $@ 5.2.1 $: "550 Mailbox disabled for this recipient"
+R<$+> $* $#error $@ 5.2.1 $: $1 error from access db', `dnl')', `dnl')
+
+ifdef(`_PROMISCUOUS_RELAY_', `dnl', `dnl
+# anything terminating locally is ok
+ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl
+R$+ < @ $* $=m > $@ OK', `dnl')
+R$+ < @ $=w > $@ OK
+ifdef(`_RELAY_HOSTS_ONLY_',
+`R$+ < @ $=R > $@ OK
+ifdef(`ACCESS_TABLE', `dnl
+R$+ < @ $* > $: <$(access $2 $: ? $)> <$1 < @ $2 >>',`dnl')',
+`R$+ < @ $* $=R > $@ OK
+ifdef(`ACCESS_TABLE', `dnl
+R$+ < @ $* > $: $>LookUpDomain <$2> <?> <$1 < @ $2 >>',`dnl')')
+ifdef(`ACCESS_TABLE', `dnl
+R<RELAY> $* $@ RELAY
+R<$*> <$*> $: $2',`dnl')
+
+ifdef(`_RELAY_MX_SERVED_', `dnl
+# allow relaying for hosts which we MX serve
+R$+ < @ $* > $: < : $(mxserved $2 $) : > $1 < @ $2 >
+R< : $* <TEMP> : > $* $#error $@ 4.7.1 $: "450 Can not check MX records for recipient host " $1
+R<$* : $=w . : $*> $* $@ OK
+R<$*> $* $: $2',
+`dnl')
+
+# check for local user (i.e. unqualified address)
+R$* $: <?> $1
+R<?> $+ < @ $+ > $: <REMOTE> $1 < @ $2 >
+# local user is ok
+R<?> $+ $@ OK
+R<$+> $* $: $2
+
+# anything originating locally is ok
+R$* $: <?> $&{client_name}
+# check if bracketed IP address (forward lookup != reverse lookup)
+R<?> [$+] $: <BAD> [$1]
+# pass to name server to make hostname canonical
+R<?> $* $~P $: <?> $[ $1 $2 $]
+R<$-> $* $: $2
+R$* . $1 strip trailing dots
+R$@ $@ OK
+ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl
+R$* $=m $@ OK', `dnl')
+R$=w $@ OK
+ifdef(`_RELAY_HOSTS_ONLY_',
+`R$=R $@ OK
+ifdef(`ACCESS_TABLE', `dnl
+R$* $: <$(access $1 $: ? $)> <$1>',`dnl')',
+`R$* $=R $@ OK
+ifdef(`ACCESS_TABLE', `dnl
+R$* $: $>LookUpDomain <$1> <?> <$1>',`dnl')')
+ifdef(`ACCESS_TABLE', `dnl
+R<RELAY> $* $@ RELAY
+R<$*> <$*> $: $2',`dnl')
+
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ OK originated locally
+R0 $@ OK originated locally
+R$=R $* $@ OK relayable IP address
+ifdef(`ACCESS_TABLE', `dnl
+R$* $: $>LookUpAddress <$1> <?> <$1>
+R<RELAY> $* $@ RELAY relayable IP address
+R<$*> <$*> $: $2', `dnl')
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ OK ... and see if it is local
+
+ifdef(`_RELAY_LOCAL_FROM_', `dnl
+# anything with a local FROM is ok
+R$* $: $1 $| $>Parse0 $>3 $&f
+R$* $| $+ < @ $=w . > $@ OK FROM local
+R$* $| $* $: $1
+', `dnl')
+
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"')
+
undivert(9)dnl
#
######################################################################
diff --git a/contrib/sendmail/cf/m4/version.m4 b/contrib/sendmail/cf/m4/version.m4
new file mode 100644
index 000000000000..2db220271ad5
--- /dev/null
+++ b/contrib/sendmail/cf/m4/version.m4
@@ -0,0 +1,17 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+VERSIONID(`@(#)version.m4 8.9.1.1 (Berkeley) 7/2/98')
+#
+divert(0)
+# Configuration version number
+DZ8.9.1`'ifdef(`confCF_VERSION', `/confCF_VERSION')
diff --git a/usr.sbin/sendmail/cf/mailer/cyrus.m4 b/contrib/sendmail/cf/mailer/cyrus.m4
index 47a4a5afd6a8..6e4badcce29b 100644
--- a/usr.sbin/sendmail/cf/mailer/cyrus.m4
+++ b/contrib/sendmail/cf/mailer/cyrus.m4
@@ -1,5 +1,16 @@
PUSHDIVERT(-1)
#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# This code incorporates code from Carnegie Mellon University, whose
+# copyright notice and conditions of redistribution are as follows:
+#
+#***************************************************************************
# (C) Copyright 1995 by Carnegie Mellon University
#
# All Rights Reserved
@@ -23,7 +34,7 @@ PUSHDIVERT(-1)
# Contributed to Berkeley by John Gardiner Myers <jgm+@CMU.EDU>.
#
-ifdef(`CYRUS_MAILER_FLAGS',, `define(`CYRUS_MAILER_FLAGS', `A5@')')
+ifdef(`CYRUS_MAILER_FLAGS',, `define(`CYRUS_MAILER_FLAGS', `A5@/:|')')
ifdef(`CYRUS_MAILER_PATH',, `define(`CYRUS_MAILER_PATH', /usr/cyrus/bin/deliver)')
ifdef(`CYRUS_MAILER_ARGS',, `define(`CYRUS_MAILER_ARGS', `deliver -e -m $h -- $u')')
ifdef(`CYRUS_MAILER_USER',, `define(`CYRUS_MAILER_USER', `cyrus:mail')')
@@ -36,7 +47,7 @@ POPDIVERT
### Cyrus Mailer specification ###
##################################################
-VERSIONID(`@(#)cyrus.m4 8.4 (Carnegie Mellon) 9/2/96')
+VERSIONID(`@(#)cyrus.m4 8.9 (Carnegie Mellon) 5/19/98')
Mcyrus, P=CYRUS_MAILER_PATH, F=CONCAT(`lsDFMnPq', CYRUS_MAILER_FLAGS), S=10, R=20/40, T=X-Unix,
ifdef(`CYRUS_MAILER_MAX', `M=CYRUS_MAILER_MAX, ')U=CYRUS_MAILER_USER,
diff --git a/contrib/sendmail/cf/mailer/fax.m4 b/contrib/sendmail/cf/mailer/fax.m4
new file mode 100644
index 000000000000..581cfed088c3
--- /dev/null
+++ b/contrib/sendmail/cf/mailer/fax.m4
@@ -0,0 +1,35 @@
+PUSHDIVERT(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# This assumes you already have Sam Leffler's HylaFAX software.
+#
+# Tested with HylaFAX 4.0pl1
+#
+
+ifdef(`FAX_MAILER_ARGS',,
+ `define(`FAX_MAILER_ARGS', faxmail -d $u@$h $f)')
+ifdef(`FAX_MAILER_PATH',,
+ `define(`FAX_MAILER_PATH', /usr/local/bin/faxmail)')
+ifdef(`FAX_MAILER_MAX',,
+ `define(`FAX_MAILER_MAX', 100000)')
+POPDIVERT
+####################################
+### FAX Mailer specification ###
+####################################
+
+VERSIONID(`@(#)fax.m4 8.11 (Berkeley) 5/19/98')
+
+Mfax, P=FAX_MAILER_PATH, F=DFMhu, S=14, R=24, M=FAX_MAILER_MAX, T=X-Phone/X-FAX/X-Unix,
+ A=FAX_MAILER_ARGS
+
+LOCAL_CONFIG
+CPFAX
diff --git a/contrib/sendmail/cf/mailer/local.m4 b/contrib/sendmail/cf/mailer/local.m4
new file mode 100644
index 000000000000..705e723c6ca4
--- /dev/null
+++ b/contrib/sendmail/cf/mailer/local.m4
@@ -0,0 +1,74 @@
+PUSHDIVERT(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `rmn9')')
+ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/mail)')
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -d $u')')
+ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', `eu9')')
+ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', /bin/sh)')
+ifdef(`LOCAL_SHELL_ARGS',, `define(`LOCAL_SHELL_ARGS', `sh -c $u')')
+ifdef(`LOCAL_SHELL_DIR',, `define(`LOCAL_SHELL_DIR', `$z:/')')
+POPDIVERT
+
+##################################################
+### Local and Program Mailer specification ###
+##################################################
+
+VERSIONID(`@(#)local.m4 8.30 (Berkeley) 6/30/98')
+
+Mlocal, P=LOCAL_MAILER_PATH, F=CONCAT(`lsDFMAw5:/|@q', LOCAL_MAILER_FLAGS), S=10/30, R=20/40,
+ _OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')_OPTINS(`LOCAL_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/X-Unix,
+ A=LOCAL_MAILER_ARGS
+Mprog, P=LOCAL_SHELL_PATH, F=CONCAT(`lsDFMoq', LOCAL_SHELL_FLAGS), S=10/30, R=20/40, D=LOCAL_SHELL_DIR,
+ _OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')T=X-Unix,
+ A=LOCAL_SHELL_ARGS
+
+#
+# Envelope sender rewriting
+#
+S10
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>50 $1 add local domain if needed
+R$* $: $>94 $1 do masquerading
+
+#
+# Envelope recipient rewriting
+#
+S20
+R$+ < @ $* > $: $1 strip host part
+
+#
+# Header sender rewriting
+#
+S30
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>50 $1 add local domain if needed
+R$* $: $>93 $1 do masquerading
+
+#
+# Header recipient rewriting
+#
+S40
+R$+ $: $>50 $1 add local domain if needed
+ifdef(`_ALL_MASQUERADE_', `dnl
+R$* $: $>93 $1 do all-masquerading', `dnl')
+
+#
+# Common code to add local domain name (only if always-add-domain)
+#
+S50
+ifdef(`_ALWAYS_ADD_DOMAIN_', `dnl
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification',
+`dnl')
diff --git a/usr.sbin/sendmail/cf/mailer/mail11.m4 b/contrib/sendmail/cf/mailer/mail11.m4
index a8781cf86861..5c9d94810c6b 100644
--- a/usr.sbin/sendmail/cf/mailer/mail11.m4
+++ b/contrib/sendmail/cf/mailer/mail11.m4
@@ -1,5 +1,12 @@
PUSHDIVERT(-1)
#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
# Not exciting enough to bother with copyrights and most of the
# rulesets are based from those provided by DEC.
# Barb Dijker, Labyrinth Computer Services, barb@labyrinth.com
@@ -33,7 +40,7 @@ POPDIVERT
### UTK-MAIL11 Mailer specification ###
###########################################
-VERSIONID(`@(#)mail11.m4 8.4 (Berkeley) 3/18/97')
+VERSIONID(`@(#)mail11.m4 8.8 (Berkeley) 5/19/98')
Mmail11, P=MAIL11_MAILER_PATH, F=MAIL11_MAILER_FLAGS, S=15, R=25,
A=MAIL11_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/phquery.m4 b/contrib/sendmail/cf/mailer/phquery.m4
new file mode 100644
index 000000000000..5f1b6b41ce86
--- /dev/null
+++ b/contrib/sendmail/cf/mailer/phquery.m4
@@ -0,0 +1,29 @@
+PUSHDIVERT(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Contributed by Kimmo Suominen <kim@tac.nyc.ny.us>.
+#
+
+ifdef(`PH_MAILER_PATH',, `define(`PH_MAILER_PATH', /usr/local/etc/phquery)')
+ifdef(`PH_MAILER_FLAGS',, `define(`PH_MAILER_FLAGS', `ehmu')')
+ifdef(`PH_MAILER_ARGS',, `define(`PH_MAILER_ARGS', `phquery -- $u')')
+
+POPDIVERT
+
+####################################
+### PH Mailer specification ###
+####################################
+
+VERSIONID(`@(#)phquery.m4 8.6 (Berkeley) 5/19/98')
+
+Mph, P=PH_MAILER_PATH, F=CONCAT(`nrDFM', PH_MAILER_FLAGS), S=10, R=20/40,
+ A=PH_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/pop.m4 b/contrib/sendmail/cf/mailer/pop.m4
new file mode 100644
index 000000000000..a4f3128f19fd
--- /dev/null
+++ b/contrib/sendmail/cf/mailer/pop.m4
@@ -0,0 +1,31 @@
+PUSHDIVERT(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+ifdef(`POP_MAILER_PATH',, `define(`POP_MAILER_PATH', /usr/lib/mh/spop)')
+ifdef(`POP_MAILER_FLAGS',, `define(`POP_MAILER_FLAGS', `Penu')')
+ifdef(`POP_MAILER_ARGS',, `define(`POP_MAILER_ARGS', `pop $u')')
+
+POPDIVERT
+
+####################################
+### POP Mailer specification ###
+####################################
+
+VERSIONID(`@(#)pop.m4 8.11 (Berkeley) 5/19/98')
+
+Mpop, P=POP_MAILER_PATH, F=CONCAT(`lsDFMq', POP_MAILER_FLAGS), S=10, R=20/40, T=DNS/RFC822/X-Unix,
+ A=POP_MAILER_ARGS
+
+LOCAL_CONFIG
+# POP mailer is a pseudo-domain
+CPPOP
diff --git a/contrib/sendmail/cf/mailer/procmail.m4 b/contrib/sendmail/cf/mailer/procmail.m4
new file mode 100644
index 000000000000..b6131c06678d
--- /dev/null
+++ b/contrib/sendmail/cf/mailer/procmail.m4
@@ -0,0 +1,32 @@
+PUSHDIVERT(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+ifdef(`PROCMAIL_MAILER_PATH',,
+ `ifdef(`PROCMAIL_PATH',
+ `define(`PROCMAIL_MAILER_PATH', PROCMAIL_PATH)',
+ `define(`PROCMAIL_MAILER_PATH', /usr/local/bin/procmail)')')
+ifdef(`PROCMAIL_MAILER_FLAGS',,
+ `define(`PROCMAIL_MAILER_FLAGS', `SPhnu9')')
+ifdef(`PROCMAIL_MAILER_ARGS',,
+ `define(`PROCMAIL_MAILER_ARGS', `procmail -Y -m $h $f $u')')
+
+POPDIVERT
+
+######################*****##############
+### PROCMAIL Mailer specification ###
+##################*****##################
+
+VERSIONID(`@(#)procmail.m4 8.11 (Berkeley) 5/19/98')
+
+Mprocmail, P=PROCMAIL_MAILER_PATH, F=CONCAT(`DFM', PROCMAIL_MAILER_FLAGS), S=11/31, R=21/31, T=DNS/RFC822/X-Unix,
+ ifdef(`PROCMAIL_MAILER_MAX', `M=PROCMAIL_MAILER_MAX, ')A=PROCMAIL_MAILER_ARGS
diff --git a/usr.sbin/sendmail/cf/mailer/smtp.m4 b/contrib/sendmail/cf/mailer/smtp.m4
index c816c736001b..d70195e70669 100644
--- a/usr.sbin/sendmail/cf/mailer/smtp.m4
+++ b/contrib/sendmail/cf/mailer/smtp.m4
@@ -1,36 +1,14 @@
PUSHDIVERT(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
#
ifdef(`SMTP_MAILER_FLAGS',, `define(`SMTP_MAILER_FLAGS', `')')
ifdef(`SMTP_MAILER_ARGS',, `define(`SMTP_MAILER_ARGS', `IPC $h')')
@@ -44,7 +22,7 @@ POPDIVERT
### SMTP Mailer specification ###
#####################################
-VERSIONID(`@(#)smtp.m4 8.33 (Berkeley) 7/9/96')
+VERSIONID(`@(#)smtp.m4 8.38 (Berkeley) 5/19/98')
Msmtp, P=[IPC], F=CONCAT(mDFMuX, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `21/31', `21'), E=\r\n, L=990,
_OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
diff --git a/contrib/sendmail/cf/mailer/usenet.m4 b/contrib/sendmail/cf/mailer/usenet.m4
new file mode 100644
index 000000000000..6c92f5f8dadf
--- /dev/null
+++ b/contrib/sendmail/cf/mailer/usenet.m4
@@ -0,0 +1,26 @@
+PUSHDIVERT(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+ifdef(`USENET_MAILER_PATH',, `define(`USENET_MAILER_PATH', /usr/lib/news/inews)')
+ifdef(`USENET_MAILER_FLAGS',, `define(`USENET_MAILER_FLAGS', `rlsDFMmn')')
+ifdef(`USENET_MAILER_ARGS',, `define(`USENET_MAILER_ARGS', `inews -m -h -n')')
+POPDIVERT
+####################################
+### USENET Mailer specification ###
+####################################
+
+VERSIONID(`@(#)usenet.m4 8.10 (Berkeley) 5/19/98')
+
+Musenet, P=USENET_MAILER_PATH, F=USENET_MAILER_FLAGS, S=10, R=20,
+ _OPTINS(`USENET_MAILER_MAX', `M=', `, ')T=X-Usenet/X-Usenet/X-Unix,
+ A=USENET_MAILER_ARGS $u
diff --git a/usr.sbin/sendmail/cf/mailer/uucp.m4 b/contrib/sendmail/cf/mailer/uucp.m4
index 023982f9b936..cd2619db47ec 100644
--- a/usr.sbin/sendmail/cf/mailer/uucp.m4
+++ b/contrib/sendmail/cf/mailer/uucp.m4
@@ -1,36 +1,14 @@
PUSHDIVERT(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')
@@ -44,7 +22,7 @@ POPDIVERT
### UUCP Mailer specification ###
#####################################
-VERSIONID(`@(#)uucp.m4 8.25 (Berkeley) 3/16/97')
+VERSIONID(`@(#)uucp.m4 8.30 (Berkeley) 5/19/98')
#
# There are innumerable variations on the UUCP mailer. It really
diff --git a/contrib/sendmail/cf/ostype/aix2.m4 b/contrib/sendmail/cf/ostype/aix2.m4
new file mode 100644
index 000000000000..1e77c1cd1e39
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/aix2.m4
@@ -0,0 +1,20 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)aix2.m4 8.8 (Berkeley) 5/19/98')
+define(`LOCAL_MAILER_PATH', /bin/bellmail)dnl
+define(`LOCAL_MAILER_ARGS', mail $u)dnl
+define(`LOCAL_MAILER_FLAGS', `mn9')dnl
+define(`confEBINDIR', `/usr/lib')dnl
+define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/contrib/sendmail/cf/ostype/aix3.m4 b/contrib/sendmail/cf/ostype/aix3.m4
new file mode 100644
index 000000000000..2cfc8c58220a
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/aix3.m4
@@ -0,0 +1,20 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)aix3.m4 8.12 (Berkeley) 5/19/98')
+ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail $u)')dnl
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `mn9')')dnl
+define(`confEBINDIR', `/usr/lib')dnl
+define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/contrib/sendmail/cf/ostype/aix4.m4 b/contrib/sendmail/cf/ostype/aix4.m4
new file mode 100644
index 000000000000..06c7d1aba15e
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/aix4.m4
@@ -0,0 +1,20 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1996 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)aix4.m4 8.7 (Berkeley) 5/19/98')
+ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail -F $g $u)')dnl
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `mn9')')dnl
+define(`confEBINDIR', `/usr/lib')dnl
+define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/contrib/sendmail/cf/ostype/altos.m4 b/contrib/sendmail/cf/ostype/altos.m4
new file mode 100644
index 000000000000..38a07a0a3199
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/altos.m4
@@ -0,0 +1,28 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1996 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Contributed by Tim Rice <tim@trr.metro.NET>.
+#
+
+divert(0)
+VERSIONID(`@(#)altos.m4 8.9 (Berkeley) 5/19/98')
+
+define(`ALIAS_FILE', /usr/lib/mail/aliases)dnl
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
+ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
+ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/lmail)')dnl
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', mPuhCE9)')dnl
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail $u')')dnl
+ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', Peu)')dnl
+ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/amdahl-uts.m4 b/contrib/sendmail/cf/ostype/amdahl-uts.m4
new file mode 100644
index 000000000000..022b50741371
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/amdahl-uts.m4
@@ -0,0 +1,23 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)amdahl-uts.m4 8.10 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`ALIAS_FILE', /etc/mail/aliases)
+ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/mail/sendmail.hf)')
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `fSn9')')
+define(`confCW_FILE', /etc/mail/sendmail.cw)
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/aux.m4 b/contrib/sendmail/cf/ostype/aux.m4
new file mode 100644
index 000000000000..2adbfe4d221a
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/aux.m4
@@ -0,0 +1,22 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)aux.m4 8.10 (Berkeley) 5/19/98')
+define(`ALIAS_FILE', /usr/lib/aliases)dnl
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
+ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', mn9)')dnl
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -d -r $f $u')')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/bsd4.3.m4 b/contrib/sendmail/cf/ostype/bsd4.3.m4
new file mode 100644
index 000000000000..47c02cc764ae
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/bsd4.3.m4
@@ -0,0 +1,17 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)bsd4.3.m4 8.9 (Berkeley) 5/19/98')
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
+ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff --git a/contrib/sendmail/cf/ostype/bsd4.4.m4 b/contrib/sendmail/cf/ostype/bsd4.4.m4
new file mode 100644
index 000000000000..c023de544011
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/bsd4.4.m4
@@ -0,0 +1,20 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+#
+
+divert(0)
+VERSIONID(`@(#)bsd4.4.m4 8.9 (Berkeley) 5/19/98')
+ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/share/misc/sendmail.hf)')dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/log/sendmail.st)')dnl
+ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl
+ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff --git a/contrib/sendmail/cf/ostype/bsdi1.0.m4 b/contrib/sendmail/cf/ostype/bsdi1.0.m4
new file mode 100644
index 000000000000..48d60b333808
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/bsdi1.0.m4
@@ -0,0 +1,16 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)bsdi1.0.m4 8.7 (Berkeley) 5/19/98')dnl
+include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
diff --git a/contrib/sendmail/cf/ostype/bsdi2.0.m4 b/contrib/sendmail/cf/ostype/bsdi2.0.m4
new file mode 100644
index 000000000000..73b0447ec369
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/bsdi2.0.m4
@@ -0,0 +1,16 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)bsdi2.0.m4 8.6 (Berkeley) 5/19/98')dnl
+include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
diff --git a/contrib/sendmail/cf/ostype/dgux.m4 b/contrib/sendmail/cf/ostype/dgux.m4
new file mode 100644
index 000000000000..eeb8c4de3a2d
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/dgux.m4
@@ -0,0 +1,20 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)dgux.m4 8.10 (Berkeley) 5/19/98')
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', m9)')dnl
+define(`confTIME_ZONE', `USE_TZ')dnl
+define(`confEBINDIR', `/usr/lib')dnl
+LOCAL_CONFIG
+E_FORCE_MAIL_LOCAL_=yes
diff --git a/contrib/sendmail/cf/ostype/domainos.m4 b/contrib/sendmail/cf/ostype/domainos.m4
new file mode 100644
index 000000000000..c03dee5fc94f
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/domainos.m4
@@ -0,0 +1,21 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)domainos.m4 8.9 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`ALIAS_FILE', /usr/lib/aliases)
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/dynix3.2.m4 b/contrib/sendmail/cf/ostype/dynix3.2.m4
new file mode 100644
index 000000000000..94d59b5f3712
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/dynix3.2.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)dynix3.2.m4 8.9 (Berkeley) 5/19/98')
+define(`ALIAS_FILE', /usr/lib/aliases)dnl
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/gnuhurd.m4 b/contrib/sendmail/cf/ostype/gnuhurd.m4
new file mode 100644
index 000000000000..d7127f6b7eb8
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/gnuhurd.m4
@@ -0,0 +1,20 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+#
+
+divert(0)
+VERSIONID(`@(#)gnuhurd.m4 8.7 (Berkeley) 5/19/98')
+ifdef(`HELP_FILE',, `define(`HELP_FILE', /share/misc/sendmail.hf)')dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/log/sendmail.st)')dnl
+ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /libexec/mail.local)')dnl
+define(`confEBINDIR', `/libexec')dnl
diff --git a/contrib/sendmail/cf/ostype/hpux10.m4 b/contrib/sendmail/cf/ostype/hpux10.m4
new file mode 100644
index 000000000000..9499474de74b
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/hpux10.m4
@@ -0,0 +1,29 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)hpux10.m4 8.13 (Berkeley) 5/19/98')
+
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
+define(`ALIAS_FILE', /etc/mail/aliases)dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /etc/mail/sendmail.st)')dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/share/lib/sendmail.hf)')dnl
+ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/rmail)')dnl
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `m9')')dnl
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
+ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', /usr/bin/sh)')dnl
+ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')')dnl
+define(`confTIME_ZONE', `USE_TZ')dnl
+dnl
+dnl For maximum compability with HP-UX, use:
+dnl define(`confME_TOO', True)dnl
diff --git a/contrib/sendmail/cf/ostype/hpux9.m4 b/contrib/sendmail/cf/ostype/hpux9.m4
new file mode 100644
index 000000000000..19579caef067
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/hpux9.m4
@@ -0,0 +1,28 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)hpux9.m4 8.18 (Berkeley) 5/19/98')
+
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
+define(`ALIAS_FILE', /usr/lib/aliases)dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
+ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/bin/rmail')')dnl
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `m9')')dnl
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
+ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')')dnl
+define(`confTIME_ZONE', `USE_TZ')dnl
+define(`confEBINDIR', `/usr/lib')dnl
+dnl
+dnl For maximum compability with HP-UX, use:
+dnl define(`confME_TOO', True)dnl
diff --git a/contrib/sendmail/cf/ostype/irix4.m4 b/contrib/sendmail/cf/ostype/irix4.m4
new file mode 100644
index 000000000000..69890e6acbce
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/irix4.m4
@@ -0,0 +1,20 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)irix4.m4 8.13 (Berkeley) 5/19/98')
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehm9)')dnl
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
+define(`ALIAS_FILE', /usr/lib/aliases)dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/irix5.m4 b/contrib/sendmail/cf/ostype/irix5.m4
new file mode 100644
index 000000000000..32f23756e005
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/irix5.m4
@@ -0,0 +1,40 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Contributed by Kari E. Hurtta <Kari.Hurtta@dionysos.fmi.fi>
+#
+
+#
+# Notes:
+# - SGI's /etc/sendmail.cf defines also 'u' for local mailer flags -- you
+# perhaps don't want it.
+# - Perhaps is should also add define(`LOCAL_MAILER_CHARSET', iso-8859-1)
+# put some Asian sites may prefer otherwise -- or perhaps not.
+# - SGI's /etc/sendmail.cf seems use: A=mail -s -d $u
+# It seems work without that -s however.
+# - SGI's /etc/sendmail.cf set's default uid and gid to 998 (guest)
+# - In SGI seems that TZ variable is needed that correct time is marked to
+# syslog
+# - helpfile is in /etc/sendmail.hf in SGI's /etc/sendmail.cf
+#
+
+divert(0)
+VERSIONID(`@(#)irix5.m4 8.10 (Berkeley) 5/19/98')
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehmu9)')dnl
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
+define(`ALIAS_FILE', /etc/aliases)dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/sendmail.st)')dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/sendmail.hf)')dnl
+define(`confDEF_USER_ID', `998:998')dnl
+define(`confTIME_ZONE', USE_TZ)dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/irix6.m4 b/contrib/sendmail/cf/ostype/irix6.m4
new file mode 100644
index 000000000000..f046dbf0e8fb
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/irix6.m4
@@ -0,0 +1,40 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Contributed by Kari E. Hurtta <Kari.Hurtta@dionysos.fmi.fi>
+#
+
+#
+# Notes:
+# - SGI's /etc/sendmail.cf defines also 'u' for local mailer flags -- you
+# perhaps don't want it.
+# - Perhaps is should also add define(`LOCAL_MAILER_CHARSET', iso-8859-1)
+# put some Asian sites may prefer otherwise -- or perhaps not.
+# - SGI's /etc/sendmail.cf seems use: A=mail -s -d $u
+# It seems work without that -s however.
+# - SGI's /etc/sendmail.cf set's default uid and gid to 998 (guest)
+# - In SGI seems that TZ variable is needed that correct time is marked to
+# syslog
+# - helpfile is in /etc/sendmail.hf in SGI's /etc/sendmail.cf
+#
+
+divert(0)
+VERSIONID(`@(#)irix6.m4 8.7 (Berkeley) 5/19/98')
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehmu9)')dnl
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
+define(`ALIAS_FILE', /etc/aliases)dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/sendmail.st)')dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/sendmail.hf)')dnl
+define(`confDEF_USER_ID', `998:998')dnl
+define(`confTIME_ZONE', USE_TZ)dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/isc4.1.m4 b/contrib/sendmail/cf/ostype/isc4.1.m4
new file mode 100644
index 000000000000..1869eecfc636
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/isc4.1.m4
@@ -0,0 +1,27 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+#
+
+divert(0)
+VERSIONID(`@(#)isc4.1.m4 8.10 (Berkeley) 5/19/98')
+define(`ALIAS_FILE', /usr/lib/aliases)dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/lib/sendmail.hf)')dnl
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail -s $u')')dnl
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `humS9')')dnl
+ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/lmail)')dnl
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
+ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -gC $h!rmail ($u)')')dnl
+ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
+define(`confTIME_ZONE', `USE_TZ')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/linux.m4 b/contrib/sendmail/cf/ostype/linux.m4
new file mode 100644
index 000000000000..d7c3b190b47a
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/linux.m4
@@ -0,0 +1,16 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)linux.m4 8.7 (Berkeley) 5/19/98')
+define(`LOCAL_MAILER_PATH', /bin/mail.local)dnl
diff --git a/contrib/sendmail/cf/ostype/maxion.m4 b/contrib/sendmail/cf/ostype/maxion.m4
new file mode 100644
index 000000000000..c07ce876e300
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/maxion.m4
@@ -0,0 +1,30 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1996 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Concurrent Computer Corporation Maxion system support contributed
+# by Donald R. Laster Jr. <Laster@access.digex.com>.
+#
+
+divert(0)
+VERSIONID(`@(#)maxion.m4 8.10 (Berkeley) 5/19/98')
+
+define(`ALIAS_FILE', `/etc/ucbmail/aliases')dnl
+define(`HELP_FILE', `/etc/ucbmail/sendmail.hf')dnl
+define(`QUEUE_DIR', `/var/spool/mqueue')dnl
+define(`STATUS_FILE', `/var/adm/log/sendmail.st')dnl
+define(`LOCAL_MAILER_PATH', `/usr/bin/mail')dnl
+define(`LOCAL_MAILER_FLAGS',`rmn9')dnl
+define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
+define(`LOCAL_MAILER_ARGS', `mail $u')dnl
+define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl
+define(`confEBINDIR', `/usr/ucblib')dnl
+divert(-1)
diff --git a/contrib/sendmail/cf/ostype/mklinux.m4 b/contrib/sendmail/cf/ostype/mklinux.m4
new file mode 100644
index 000000000000..2f40c72d8e2c
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/mklinux.m4
@@ -0,0 +1,22 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# MkLinux support contributed by Paul DuBois <dubois@primate.wisc.edu>
+#
+
+divert(0)
+VERSIONID(`@(#)mklinux.m4 8.7 (Berkeley) 5/19/98')
+ifdef(`STATUS_FILE',,
+ `define(`STATUS_FILE', /var/log/sendmail.st)')
+ifdef(`PROCMAIL_MAILER_PATH',,
+ define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail'))
+FEATURE(local_procmail)
diff --git a/contrib/sendmail/cf/ostype/nextstep.m4 b/contrib/sendmail/cf/ostype/nextstep.m4
new file mode 100644
index 000000000000..73c995fb983c
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/nextstep.m4
@@ -0,0 +1,24 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)nextstep.m4 8.14 (Berkeley) 5/19/98')
+define(`ALIAS_FILE', /etc/sendmail/aliases)dnl
+define(`confCW_FILE', /etc/sendmail/sendmail.cw)dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/lib/sendmail.hf)')dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /etc/sendmail/sendmail.st)')dnl
+ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `rmnP9')')dnl
+ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', `euP')')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/osf1.m4 b/contrib/sendmail/cf/ostype/osf1.m4
new file mode 100644
index 000000000000..fe17b35ee6c9
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/osf1.m4
@@ -0,0 +1,19 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)osf1.m4 8.10 (Berkeley) 5/19/98')
+define(`ALIAS_FILE', /usr/adm/sendmail/aliases)dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/adm/sendmail/sendmail.st)')dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/share/lib/sendmail.hf)')dnl
+define(`confDEF_USER_ID', `daemon')
diff --git a/contrib/sendmail/cf/ostype/powerux.m4 b/contrib/sendmail/cf/ostype/powerux.m4
new file mode 100644
index 000000000000..dc23c7ed2956
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/powerux.m4
@@ -0,0 +1,25 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)powerux.m4 8.7 (Berkeley) 5/19/98')
+
+define(`ALIAS_FILE', /etc/mail/aliases)dnl
+ifdef(`HELP_FILE',,`define(`HELP_FILE', /etc/mail/sendmail.hf)')dnl
+ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /etc/mail/sendmail.st)')dnl
+define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl
+define(`LOCAL_MAILER_FLAGS', `mn9')dnl
+define(`LOCAL_MAILER_ARGS', `rmail $u')dnl
+define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
+define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl
+define(`confEBINDIR', `/usr/local/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/ptx2.m4 b/contrib/sendmail/cf/ostype/ptx2.m4
new file mode 100644
index 000000000000..83a05580b14a
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/ptx2.m4
@@ -0,0 +1,25 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1994 Eric P. Allman. All rights reserved.
+# Copyright (c) 1994
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+# Support for DYNIX/ptx 2.x.
+
+divert(0)
+VERSIONID(`@(#)ptx2.m4 8.11 (Berkeley) 5/19/98')
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
+define(`ALIAS_FILE', /usr/lib/aliases)dnl
+ifdef(`HELP_FILE',,`define(`HELP_FILE', /usr/lib/sendmail.hf)')dnl
+ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
+define(`LOCAL_MAILER_PATH', `/bin/mail')dnl
+define(`LOCAL_MAILER_FLAGS', `fmn9')dnl
+define(`LOCAL_SHELL_FLAGS', `eu')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/qnx.m4 b/contrib/sendmail/cf/ostype/qnx.m4
new file mode 100644
index 000000000000..10624dde39f1
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/qnx.m4
@@ -0,0 +1,21 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1997 Eric P. Allman. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Contributed by Glen McCready <glen@qnx.com>
+#
+
+divert(0)
+VERSIONID(`@(#)qnx.m4 8.7 (Berkeley) 5/19/98')
+define(`QUEUE_DIR', /usr/spool/mqueue)dnl
+define(`HELP_FILE', /etc/sendmail.hf)dnl
+define(`LOCAL_MAILER_ARGS', `mail $u')dnl
+define(`LOCAL_MAILER_FLAGS', `Sh')dnl
+define(`LOCAL_MAILER_PATH', /usr/bin/mailx)dnl
+define(`UUCP_MAILER_ARGS', `uux - -r -z -a$f $h!rmail ($u)')dnl
diff --git a/contrib/sendmail/cf/ostype/riscos4.5.m4 b/contrib/sendmail/cf/ostype/riscos4.5.m4
new file mode 100644
index 000000000000..02db750c023b
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/riscos4.5.m4
@@ -0,0 +1,21 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)riscos4.5.m4 8.10 (Berkeley) 5/19/98')
+
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
+define(`ALIAS_FILE', `/usr/lib/aliases')dnl
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', `/usr/spool/mqueue')')dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', `/usr/lib/sendmail.hf')')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/sco-uw-2.1.m4 b/contrib/sendmail/cf/ostype/sco-uw-2.1.m4
index ebce4991def7..356c984fa422 100644
--- a/usr.sbin/sendmail/cf/ostype/sco-uw-2.1.m4
+++ b/contrib/sendmail/cf/ostype/sco-uw-2.1.m4
@@ -1,10 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
#
# SCO UnixWare 2.1.2 ostype file
#
# Contributed by Christopher Durham <chrisdu@SCO.COM> of SCO.
#
divert(0)
-VERSIONID(`@(#)sco-uw-2.1.m4 8.1 (Berkeley) 7/6/97')
+VERSIONID(`@(#)sco-uw-2.1.m4 8.6 (Berkeley) 5/19/98')
define(`ALIAS_FILE', /usr/lib/mail/aliases)dnl
ifdef(`HELP_FILE',,`define(`HELP_FILE', /usr/ucblib/sendmail.hf)')dnl
@@ -14,3 +22,4 @@ define(`LOCAL_MAILER_FLAGS', `fhCEn9')dnl
define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl
define(`LOCAL_MAILER_ARGS',`rmail $u')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/sco3.2.m4 b/contrib/sendmail/cf/ostype/sco3.2.m4
new file mode 100644
index 000000000000..1c58585035be
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/sco3.2.m4
@@ -0,0 +1,24 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)sco3.2.m4 8.10 (Berkeley) 5/19/98')
+define(`ALIAS_FILE', /usr/lib/mail/aliases)dnl
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
+ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
+ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/lmail)')dnl
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', PuhCE9)')dnl
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail $u')')dnl
+ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', Peu)')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/sinix.m4 b/contrib/sendmail/cf/ostype/sinix.m4
new file mode 100644
index 000000000000..51c469d8d741
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/sinix.m4
@@ -0,0 +1,21 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1996 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)sinix.m4 8.8 (Berkeley) 5/19/98')
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
+define(`ALIAS_FILE', /etc/aliases)dnl
+define(`LOCAL_MAILER_PATH', `/bin/mail.local')dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/sendmail.st)')dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/sendmail.hf)')dnl
+define(`confEBINDIR', `/usr/ucblib')dnl
diff --git a/contrib/sendmail/cf/ostype/solaris2.m4 b/contrib/sendmail/cf/ostype/solaris2.m4
new file mode 100644
index 000000000000..5a90175bd363
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/solaris2.m4
@@ -0,0 +1,25 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)solaris2.m4 8.15 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`ALIAS_FILE', /etc/mail/aliases)
+ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/mail/sendmail.hf)')
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /etc/mail/sendmail.st)')
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `SnE9')')
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -f $g -d $u')')
+ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')
+define(`confCW_FILE', /etc/mail/sendmail.cw)
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/solaris2.ml.m4 b/contrib/sendmail/cf/ostype/solaris2.ml.m4
new file mode 100644
index 000000000000..0995d50ff18e
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/solaris2.ml.m4
@@ -0,0 +1,30 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# This ostype file is suitable for use on Solaris 2.x systems that
+# have mail.local installed. It is my understanding that this is
+# standard as of Solaris 2.5.
+#
+
+divert(0)
+VERSIONID(`@(#)solaris2.ml.m4 8.8 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`ALIAS_FILE', /etc/mail/aliases)
+ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/mail/sendmail.hf)')
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /etc/mail/sendmail.st)')
+ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/usr/lib/mail.local')')
+ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `fSmn9')')
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail.local -d $u')')
+ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')
+define(`confCW_FILE', /etc/mail/sendmail.cw)
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/sunos3.5.m4 b/contrib/sendmail/cf/ostype/sunos3.5.m4
new file mode 100644
index 000000000000..540d36e60756
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/sunos3.5.m4
@@ -0,0 +1,17 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)sunos3.5.m4 8.7 (Berkeley) 5/19/98')
+
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/sunos4.1.m4 b/contrib/sendmail/cf/ostype/sunos4.1.m4
new file mode 100644
index 000000000000..aec96d2fdc9c
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/sunos4.1.m4
@@ -0,0 +1,17 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)sunos4.1.m4 8.7 (Berkeley) 5/19/98')
+
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/svr4.m4 b/contrib/sendmail/cf/ostype/svr4.m4
new file mode 100644
index 000000000000..1451414797fe
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/svr4.m4
@@ -0,0 +1,24 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)svr4.m4 8.10 (Berkeley) 5/19/98')
+
+define(`ALIAS_FILE', /usr/ucblib/aliases)dnl
+ifdef(`HELP_FILE',,`define(`HELP_FILE', /usr/ucblib/sendmail.hf)')dnl
+ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /usr/ucblib/sendmail.st)')dnl
+define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl
+define(`LOCAL_MAILER_FLAGS', `rmn9')dnl
+define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
+define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl
+define(`confEBINDIR', `/usr/ucblib')dnl
diff --git a/contrib/sendmail/cf/ostype/ultrix4.m4 b/contrib/sendmail/cf/ostype/ultrix4.m4
new file mode 100644
index 000000000000..874fa8b89d6b
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/ultrix4.m4
@@ -0,0 +1,17 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)ultrix4.m4 8.8 (Berkeley) 5/19/98')
+
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/unknown.m4 b/contrib/sendmail/cf/ostype/unknown.m4
new file mode 100644
index 000000000000..bb85604efa13
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/unknown.m4
@@ -0,0 +1,19 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)unknown.m4 8.6 (Berkeley) 5/19/98')
+errprint(`*** ERROR: You have not specified a valid operating system type.')
+errprint(` Use the OSTYPE macro to select a valid system type. This')
+errprint(` is necessary in order to get the proper pathnames and flags')
+errprint(` appropriate for your environment.')
diff --git a/contrib/sendmail/cf/ostype/uxpds.m4 b/contrib/sendmail/cf/ostype/uxpds.m4
new file mode 100644
index 000000000000..2fb147eb5223
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/uxpds.m4
@@ -0,0 +1,28 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Definitions for UXP/DS (Fujitsu/ICL DS/90 series)
+# Diego R. Lopez, CICA (Seville). 1995
+#
+
+divert(0)
+VERSIONID(`@(#)uxpds.m4 8.9 (Berkeley) 5/19/98')
+
+define(`confDEF_GROUP_ID', `6')
+define(`ALIAS_FILE', /usr/ucblib/aliases)dnl
+ifdef(`HELP_FILE',,`define(`HELP_FILE', /usr/ucblib/sendmail.hf)')dnl
+ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /usr/ucblib/sendmail.st)')dnl
+define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl
+define(`LOCAL_MAILER_FLAGS', `rmn9')dnl
+define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
+define(`UUCP_MAILER_ARGS', `uux - -r -a$f -gmedium $h!rmail ($u)')dnl
+define(`confEBINDIR', `/usr/ucblib')dnl
diff --git a/contrib/sendmail/cf/sh/makeinfo.sh b/contrib/sendmail/cf/sh/makeinfo.sh
new file mode 100644
index 000000000000..424c699d649f
--- /dev/null
+++ b/contrib/sendmail/cf/sh/makeinfo.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)makeinfo.sh 8.11 (Berkeley) 5/19/98
+#
+
+usewhoami=0
+usehostname=0
+for p in `echo $PATH | sed 's/:/ /g'`
+do
+ if [ "x$p" = "x" ]
+ then
+ p="."
+ fi
+ if [ -f $p/whoami ]
+ then
+ usewhoami=1
+ if [ $usehostname -ne 0 ]
+ then
+ break;
+ fi
+ fi
+ if [ -f $p/hostname ]
+ then
+ usehostname=1
+ if [ $usewhoami -ne 0 ]
+ then
+ break;
+ fi
+ fi
+done
+if [ $usewhoami -ne 0 ]
+then
+ user=`whoami`
+else
+ user=$LOGNAME
+fi
+
+if [ $usehostname -ne 0 ]
+then
+ host=`hostname`
+else
+ host=`uname -n`
+fi
+echo '#####' built by $user@$host on `date`
+echo '#####' in `pwd` | sed 's/\/tmp_mnt//'
+echo '#####' using $1 as configuration include directory | sed 's/\/tmp_mnt//'
+echo "define(\`__HOST__', $host)dnl"
diff --git a/contrib/sendmail/cf/siteconfig/uucp.cogsci.m4 b/contrib/sendmail/cf/siteconfig/uucp.cogsci.m4
new file mode 100644
index 000000000000..33c71511781c
--- /dev/null
+++ b/contrib/sendmail/cf/siteconfig/uucp.cogsci.m4
@@ -0,0 +1,6 @@
+SITE(contessa)
+SITE(emind)
+SITE(hoptoad)
+SITE(nkainc)
+SITE(well)
+SITE(ferdy)
diff --git a/contrib/sendmail/cf/siteconfig/uucp.old.arpa.m4 b/contrib/sendmail/cf/siteconfig/uucp.old.arpa.m4
new file mode 100644
index 000000000000..81d5e9443d99
--- /dev/null
+++ b/contrib/sendmail/cf/siteconfig/uucp.old.arpa.m4
@@ -0,0 +1,4 @@
+SITE(endotsew)
+SITE(fateman)
+SITE(interlan)
+SITE(metron)
diff --git a/contrib/sendmail/cf/siteconfig/uucp.ucbarpa.m4 b/contrib/sendmail/cf/siteconfig/uucp.ucbarpa.m4
new file mode 100644
index 000000000000..8b137891791f
--- /dev/null
+++ b/contrib/sendmail/cf/siteconfig/uucp.ucbarpa.m4
@@ -0,0 +1 @@
+
diff --git a/contrib/sendmail/cf/siteconfig/uucp.ucbvax.m4 b/contrib/sendmail/cf/siteconfig/uucp.ucbvax.m4
new file mode 100644
index 000000000000..ee2c34f60d96
--- /dev/null
+++ b/contrib/sendmail/cf/siteconfig/uucp.ucbvax.m4
@@ -0,0 +1,73 @@
+SITE(Padova)
+SITE(Shasta)
+SITE(alice)
+SITE(allegra)
+SITE(amdcad)
+SITE(att)
+SITE(attunix)
+SITE(avsd)
+SITE(bellcore bellcor)
+SITE(calma)
+SITE(cithep)
+SITE(cnmat)
+SITE(craig)
+SITE(craylab)
+SITE(decusj)
+SITE(decvax, S)
+SITE(decwrl)
+SITE(dssovax)
+SITE(eagle)
+SITE(ecovax)
+SITE(floyd)
+SITE(franz)
+SITE(geoff)
+SITE(harpo)
+SITE(ho3e2)
+SITE(hpda)
+SITE(hplabs)
+SITE(ibmsupt ibmuupa ibmpa)
+SITE(iiasa70)
+SITE(imagen)
+SITE(isunix menlo70)
+SITE(kentmth)
+SITE(lbl-csam lbl-csa)
+SITE(lime)
+SITE(mothra)
+SITE(mseonyx)
+SITE(mtxinu)
+SITE(pixar)
+SITE(pur-ee)
+SITE(purdue)
+SITE(pwbd)
+SITE(sdcarl)
+SITE(sftig)
+SITE(sgi olympus)
+SITE(sii)
+SITE(srivisi)
+SITE(ssyx)
+SITE(sun)
+SITE(trwrb)
+SITE(twg)
+SITE(ucivax)
+SITE(ucla-se)
+SITE(ucla-cs)
+SITE(ucsbcsl ucsbhub)
+SITE(ucscc)
+SITE(ucsd)
+SITE(ucsfcgl)
+SITE(ucsfmis)
+SITE(ulysses)
+SITE(unisoft)
+SITE(unmvax)
+SITE(usenix)
+SITE(uw)
+SITE(uwvax)
+SITE(vax135)
+SITE(voder)
+SITE(wheps)
+SITE(whuxle)
+SITE(whuxlj)
+SITE(xicomp)
+SITE(xprin)
+SITE(zehntel)
+SITE(zilog)
diff --git a/contrib/sendmail/contrib/README b/contrib/sendmail/contrib/README
new file mode 100644
index 000000000000..dcf5c8fe7e0d
--- /dev/null
+++ b/contrib/sendmail/contrib/README
@@ -0,0 +1,10 @@
+Everything in this directory (except this file) has been contributed.
+We will not fix bugs in these programs. Contact the original author
+for assistance.
+
+Some of these are patches to sendmail itself. You may need to take
+care -- some of the patches may be out of date with the latest release
+of sendmail. Also, the previous comment applies -- patches belong to
+the original author, not to me.
+
+Eric Allman, 26 May 1993
diff --git a/usr.sbin/sendmail/contrib/bitdomain.c b/contrib/sendmail/contrib/bitdomain.c
index 52d6d2187c3f..52d6d2187c3f 100644
--- a/usr.sbin/sendmail/contrib/bitdomain.c
+++ b/contrib/sendmail/contrib/bitdomain.c
diff --git a/usr.sbin/sendmail/contrib/bsdi.mc b/contrib/sendmail/contrib/bsdi.mc
index 231a7bc77ac6..231a7bc77ac6 100644
--- a/usr.sbin/sendmail/contrib/bsdi.mc
+++ b/contrib/sendmail/contrib/bsdi.mc
diff --git a/contrib/sendmail/contrib/converting.sun.configs b/contrib/sendmail/contrib/converting.sun.configs
new file mode 100644
index 000000000000..e6a3a9e8bd91
--- /dev/null
+++ b/contrib/sendmail/contrib/converting.sun.configs
@@ -0,0 +1,446 @@
+
+ Converting Standard Sun Config
+ Files to Sendmail Version 8
+
+ Rick McCarty
+ Texas Instruments Inc.
+ Latest Update: 08/25/93 - RJMc
+
+This document details the changes necessary to continue using your
+current SunOS sendmail.cf with sendmail version 8. In the longer term,
+it is recommended that one move to using an m4 based configuration such
+as those shipped with sendmail, but if you're like me and have made
+enough modifications to your .cf file that you'd rather put that task
+off until later, here's the sum total of my experience to get you to
+version 8 with minimal pain. I'll cover .cf as well as build issues.
+
+Some background - as many are surely aware, Sun has some "special"
+features in the sendmail they ship ($%x, %y LHS lookup, NIS alias DB
+search, etc.). (Some of those features can be had in alternative forms
+in IDA sendmail, but v8 has picked up some IDA capabilities as well as
+new ones, making it IMHO a most desirable version to go to.) What I
+will explain below includes v8 functional "equivalences" to these Sun
+sendmail features.
+
+So with that out of the way, let's begin.
+
+First, some assumptions:
+
+ 1) I'm going to assume you've got sendmail version 8.6 or
+ later in hand - if not, grab it from ftp.cs.berkeley.edu
+ in the ucb/sendmail directory. There are bugs in earlier
+ versions which affect some of the needed functionality.
+
+ 2) Second, I'm going to detail this based upon the
+ "sendmail.main.cf" configuration. (BTW, if you attempt
+ to move to using an m4 generated config in the future,
+ MAIL_HUB is the feature which should provide similar
+ functionality).
+
+ In general, the changes will be similar for a subsidiary
+ file, but since we (my TI group) funnel all non-local mail
+ through our mailhost, we're not as interested in getting v8
+ to run on such systems and I haven't tried it.
+
+ 3) You're using DNS and sendmail.mx. If you're not, you ought
+ to be, even if you're also running it along with NIS (which
+ we do - except for gethostbyxxx() lookups, which I'll be
+ talking about later). I would imagine you could get things
+ running OK without DNS support, but I haven't tried it myself.
+
+ 4) You're not mounting /var/spool/mail from other systems.
+ I haven't found a v8 feature to guarantee this will work
+ correctly. Anyway, in the past, we've tried doing that
+ here and found it to be a rather "ugly" feature, though
+ Sun ostensibly supports it ("R" option). Perhaps v8
+ will one day have a similar feature, but for now, bottom
+ line, I would recommend against it.
+
+ 5) You're not on Solaris or using NIS+. I'm on 4.1.3. I've
+ looked at Solaris briefly and have noted that things are
+ pretty much similar there except that they've moved some
+ things into the /etc/mail directory. I'd guess the
+ executables aren't functionally all that different from
+ what they had before - the configs are roughly the same.
+ So I'd bet most of what I say in here will apply to
+ Solaris.
+
+OK, let's configure our sendmail.cf! I'll just go from the top down...
+
+ VARIOUS DECLARATIONS
+
+1) For v8, you need to define your .cf as AT LEAST a version level 4
+ configuration. Add the following line:
+
+ V4
+
+ There are some issues regarding certain predefined macros - $w, $j, and
+ $m. With a V4 configuration:
+
+ $w is defined to be the hostname, which will usually be fully
+ qualified (i.e. "firefly.add.itg.ti.com").
+
+ $j should have the same value as $w.
+
+ $m will be predefined as the domain portion of $w
+ (ex. "add.itg.ti.com").
+
+ One note about this - if your configuration relies on the "w" macro to
+ be the "simple" hostname (as mine does)...
+
+ If the configuration version is 5 or larger:
+
+ $w is supposed to be the "simple" name (ex. "firefly")
+
+ $j should be the fully qualified name (i.e. "firefly.add.itg.ti.com")
+
+ $m will be predefined as the domain portion of $j
+ (ex. "add.itg.ti.com").
+
+ I have not experimented with the various combinations, so I cannot
+ guarantee you that the above definitions will always come out as
+ expected. Bottom line: if your sendmail.cf depends on $w being the
+ simple hostname, test it carefully or define the name explicitly,
+ for example:
+
+ Dwfirefly
+
+2) To replace the Sun's "%y" feature, we must use a hostname mapping
+ feature in v8. If you want to do similar lookups with v8, you need
+ to define the following map (we'll go over the rules that use this
+ map later):
+
+ Khostlookup host -f -m -a.
+
+ This will define a "lookup only" map that is otherwise the same as
+ sendmail version 8's built-in "host" map (see the "Sendmail
+ Installation and Operation Guide" for details on this map.).
+
+ An important note: Whether or not these lookups will be done via
+ NIS is a function of what gethostbyxxx() functions you link into
+ your sendmail. DO NOT redefine your host mapping to use NIS
+ explicitly within sendmail - there can be unexpected behaviour if
+ you do so (if you do any canonicalization in your .cf, you can get
+ incorrect results, for one thing).
+
+ For example, DO NOT TRY:
+
+ Khost nis -f -a. hosts.byname
+
+3) If you're doing reverse alias mapping as done in ruleset 22, instead of:
+
+ DZmail.byaddr
+
+ you'll need to declare the following:
+
+ Kaliasrev nis -f -N mail.byaddr
+
+4) If you are doing any other NIS map lookups, you'll need to define the
+ map as done in the below example. I have a "mailhosts" map, which I
+ use to distinguish between local and non-local hosts. Look at the
+ sendmail doc for details on this stuff.
+
+ Kmailhosts nis -f -m -a. mailhosts
+
+5) You might wish to add the following line to support Errors-To: headers.
+ I don't.
+
+ Ol
+
+6) Comment out/remove the following line:
+
+ OR
+
+ The R option means something different under v8 - check the documentation
+ if you're interested in using it.
+
+7) If you're running NIS and have a separate alias map, BELOW the
+ following line where the alias file is declared:
+
+ OA/etc/aliases
+
+ ADD the following:
+
+ OAnis:mail.aliases
+
+ This will set things up so v8 will look at the local alias DB first,
+ then the NIS map, just as Sun sendmail does.
+
+8) Though you don't have to, I'd suggest changing:
+
+ OT3d
+
+ to use v8's warning feature, which allows a warning message to be
+ sent if a message cannot be delivered within a specified period.
+ I use:
+
+ OT5d/4h
+
+ which says - bounce after 5 days, warn after 4 hours.
+
+9) I set the following option to be explicit about how I want DNS
+ handled:
+
+ OI +DNSRCH +DEFNAMES
+
+10) The following line:
+
+ T root daemon uucp
+
+ may be deleted, though it will be ignored if you leave it around.
+
+11) It would probably be good to change the version macro value (which
+ shows up in "Received:" headers) so no one debugging mail problems
+ gets the wrong idea about what config you're running under. Look
+ for something like:
+
+ DVSMI-4.1
+
+ Mine, for example is:
+
+ DVADD-HUB-2.1
+
+ RULESETS
+
+1) In ruleset 3, BELOW this rule:
+
+ # basic textual canonicalization
+ R$*<$+>$* $2 basic RFC822 parsing
+
+
+I add the following rule to remove a trailing dot in the domain spec so
+it won't interfere with v8 mapping features, etc. (Having a trailing dot is
+not RFC-compliant anyway.):
+
+ R$+. $1
+
+2) Because ruleset 5 is special in v8, I rename it to S95 and also change
+ all RHS expressions containing ">5" to use ">95" instead. In v8,
+ 5 is executed against addresses which resolve to the local mailer and
+ are not an alias. If you don't change S5 to something else, you might
+ get a surprise!
+
+3) If you're doing any lookups via the generalized NIS "$%x/$!x"
+ mechanisms (such as with the mailhost map I referred to earlier) it's
+ done differently under v8. For example:
+
+ DMmailhosts
+ ...
+ R$*<@$%M.uucp>$* $#ether $@$2 $:$1<@$2>$3
+
+ takes a different map definition and two rules under version 8:
+
+ Kmailhosts nis -f -m -a. mailhosts
+ ...
+ R$*<@$+.uucp>$* $: $1<@$(mailhosts $2 $).uucp>$3
+ R$*<@$+..uucp>$* $#ether $@$2 $:$1<@$2>$3
+
+4) Sun has a special case of the "$%x" feature for host lookups - "%y" is
+ automagically defined to do an NIS "hosts.byname" search with no other
+ definition, as done in the below example:
+
+ R$*<@$%y.LOCAL>$* $#ether $@$2 $:$1<@$2>$3
+
+ (Sun does this in more than one place. But the above syntax is almost
+ identical in each - mostly a case of changing names to protect the
+ innocent.)
+
+ In version 8, the predefined "host" map can be used to do essentially
+ the same thing. (However, whether or not it does an NIS lookup is
+ a function of what gethostbyxxx() functions are linked in.)
+
+ Recall the map definition I mentioned earlier in the DECLARATIONS
+ section:
+
+ Khostlookup host -f -m -a.
+
+ Here's where we will use it. It will take two rules:
+
+ R$*<@$+.LOCAL>$* $: $1<@$(hostlookup $2 $).LOCAL>$3
+ R$*<@$+..LOCAL>$* $#ether $@$2 $:$1<@$2>$3
+
+ Note that this is almost verbatim the same change as was used in the
+ previous "mailhosts" example.
+
+5) Although Sun's default configs don't do this, because I mentioned
+ canonicalization earlier, it deserves an example, as it's illustrative
+ of the functional difference in the map definitions I discussed before.
+ This stuff is also convered in the "Sendmail Installation and Operation
+ Guide".
+
+ Remember the built-in "host" map definition? As you'll recall, unlike
+ the "hostlookup" map we defined, "host" will actually CHANGE the
+ hostname in addition to appending a dot. "hostlookup" only appends a
+ dot if the name is found and doesn't change it otherwise. Anyway,
+ here's the example:
+
+ R$*<@$+>$* $: $1<@$(host $2 $)>$3 canonicalize
+ R$*<@$+.>$* $1<@$2>$3 remove trailing dot
+
+ Using the above, say you had input of:
+
+ joe<@tilde>
+
+ OR
+
+ joe<@[128.247.160.56]>
+
+ Assuming "tilde" or the IP address is found, it might be
+ canonicalized as:
+
+ joe<@tilde.csc.ti.com>
+
+6) As another instance of the NIS lookup feature, with a slightly
+ different twist, Sun implements reverse alias mapping in ruleset 22
+ with the below:
+
+ DZmail.byaddr
+ ...
+ R$-<@$-> $:$>3${Z$1@$2$} invert aliases
+
+ To use this feature under v8, change the above rule a (remember to
+ define the alias map as I showed earlier):
+
+ R$-<@$-> $:$>3$(aliasrev $1@$2 $) invert aliases
+
+
+ MAILER DEFINITIONS
+
+1) Where "TCP" is defined in the "P=" and "A=" parameters of mailers, I
+ changed it to "IPC". Version 8 will accept "TCP", but "IPC" is
+ preferred.
+
+2) On all IPC mailers, I also defined "E=\r\n" and added an "L=1000" as
+ in the below example:
+
+ Mether, P=[IPC], F=mDFMuCX, S=11, R=21, L=1000, E=\r\n, A=IPC $h
+
+ The "E=\r\n" will save you headaches interoperating with such things as
+ VMS TCP products.
+
+ The "L=1000" is for RFC821 compatibility. Not strictly necessary.
+
+ I also removed the "s" (strip quotes) mailer flag Sun puts in for
+ these mailers. Stripping quotes violates protocols, which say
+ clearly that you can't touch the local-part (left hand side of
+ the @) until you are on the delivering host.
+
+NOW. If I haven't left anything out, you should be able to run through
+your Sun sendmail.cf file and convert it to run under v8.
+
+ BUILD ISSUES
+
+Some important notes on building v8 on SunOS:
+
+Makefile
+
+The default makefile in the version 8 source (src) directory assumes the
+new Berkeley make. Unless you want to go to the trouble of building it,
+you can use your regular make, but you need to use a different makefile.
+You can use "Makefile.dist" or "Makefile.SunOS" in the src directory. I
+made changes to get it to build so it is as compatible as possible with
+the file/directory locations Sun uses. Here are some relevant sections
+out of my makefile:
+
+ CC=gcc
+
+ # use O=-O (usual) or O=-g (debugging)
+ O= -O
+
+ # define the database mechanisms available for map & alias lookups:
+ # -DNDBM -- use new DBM
+ # -DNEWDB -- use new Berkeley DB
+ # -DNDBM -DNEWDB -DYPCOMPAT -- use both plus YP compatility
+ # -DNIS -- include client NIS support
+ # The really old (V7) DBM library is no longer supported.
+ # See README for a description of how these flags interact.
+ #DBMDEF= -DNDBM -DNEWDB
+ DBMDEF= -DNDBM -DNIS
+
+ # environment definitions (e.g., -D_AIX3)
+ ENVDEF=
+
+ # see also conf.h for additional compilation flags
+
+ # library directories
+ LIBDIRS=-L/usr/local/lib
+
+ # libraries required on your system
+ #LIBS= -ldb -ldbm
+ LIBS= -ldbm -lresolv
+
+ # location of sendmail binary (usually /usr/sbin or /usr/lib)
+ BINDIR= ${DESTDIR}/usr/lib
+
+ # location of sendmail.st file (usually /var/log or /usr/lib)
+ STDIR= ${DESTDIR}/etc
+
+ # location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
+ HFDIR= ${DESTDIR}/usr/lib
+
+For the resolver library, you can use the one shipped with Sun if you
+want. But I'd recommend using another version of the resolver library
+(such as the one with Bind 4.8.3 or 4.9). Sun's resolver stuff (at
+least with 4.1.x) is quite old - I believe it is of 4.3.1 vintage. (Do
+you get the impression I don't TRUST what Sun ships with their systems?)
+
+If you want NIS host lookup while maintaining DNS capability, you might
+take a look at resolv+, which has NIS capable gethostbyxxx() functions
+in it. My recommendation, however, is to avoid doing NIS host lookups
+in sendmail altogether, and to use a "pure" version of the resolver
+library.
+
+There are probably no situations (at least I think so) where it makes
+any sense to link in Sun's NIS gethostbyxxx() functions from libc.
+You could, I guess do it (I haven't tried it) and wind up with a
+sendmail equivalent to the non-mx version Sun ships. You'd need to
+insure that NAMED_BIND is not defined in the build. (If you do
+this and have the "-b" DNS passthru option set in NIS, remember that
+while you have some DNS functionality you'll not have any MX support.
+(This, IMO, is what makes this a non-optimal choice.)
+
+ INSTALLATION/TESTING ISSUES
+
+The sendmail.hf file in the src directory should replace the one currently
+in /usr/lib. You also might choose to edit it a bit to "localize" what it
+says.
+
+The sendmail executable goes, of course, in /usr/lib in place of the current
+one. What I did was create a subdirectory in /usr/lib and put all of the
+Sun sendmail stuff in there. I named the v8 sendmail executable to be
+sendmail.v8.mx and then symbolically linked it to sendmail.
+
+One other thing. If you use address test mode, keep in mind that
+Version 8 is like IDA in that it does not automatically execute ruleset
+3 first. So say you're playing around with things testing addresses and
+you're used to things like:
+
+ 0 jimbob@good.old.boy.com
+
+under v8 you need to say instead:
+
+ 3,0 jimbob@good.old.boy.com
+
+ INTEROPERABILITY ISSUES YOU MIGHT ENCOUNTER
+
+Be aware that sendmail v8 issues a multi-line SMTP welcome (220)
+response upon a client connection. Most systems in your network should
+handle it OK, but there are some that choke on it, because whoever wrote
+the clients assumed only a single line. THIS IS NOT SENDMAIL's FAULT.
+A multi-line 220 response is perfectly valid. A likely place you'll
+encounter this problem is with non-Un*x SMTP clients. If you do run
+into it, you should report it to the vendor.
+
+A final note about version 8 - if you follow the above configuration
+scenario, you'll notice it doesn't like to get envelope sender
+addresses it doesn't know how to get back to. Sun sendmail would take
+anything, even though it might not be able to bounce the message back
+should something happen downstream. So if another sendmail on a host
+that's not locally known is trying to pump mail through your v8 host,
+the ENVELOPE sender it gives had better be fully qualified. This is
+a GREAT thing, because it helps clear up problems we've had with not
+being able to get things back to the sender, resulting in an
+overburdened postmaster.
+
+I hope this helps those running Sun sendmail feel more at ease with moving
+on to v8. It's really worth going to.
diff --git a/contrib/sendmail/contrib/doublebounce.pl b/contrib/sendmail/contrib/doublebounce.pl
new file mode 100644
index 000000000000..a853ec14f37f
--- /dev/null
+++ b/contrib/sendmail/contrib/doublebounce.pl
@@ -0,0 +1,232 @@
+#!/usr/bin/perl
+# doublebounce.pl
+# attempt to return a doubly-bounced email to a postmaster
+# jr@terra.net, 12/4/97
+#
+# invoke by creating an mail alias such as:
+# doublebounce: "|/usr/local/sbin/doublebounce"
+# then adding this line to your sendmail.cf:
+# O DoubleBounceAddress=doublebounce
+#
+# optionally, add a "-d" flag in the aliases file, to send a
+# debug trace to your own postmaster showing what is going on
+#
+# this allows the "postmaster" address to still go to a human being,
+# while bounce messages can go to this script, which will bounce them
+# back to the postmaster at the sending site.
+#
+# the algorithm is to scan the double-bounce error report generated
+# by sendmail on stdin, for the original message (it starts after the
+# second "Orignal message follows" marker), look for From, Sender, and
+# Received headers from the point closest to the sender back to the point
+# closest to us, and try to deliver a double-bounce report back to a
+# postmaster at one of these sites in the hope that they can
+# return the message to the original sender, or do something about
+# the fact that that sender's return address is not valid.
+
+
+use Socket;
+
+# look for debug flag
+#
+$dflag = 0;
+$dflag = 1 if ($ARGV[0] eq "-d");
+
+# get local host name
+# you may need to edit these two lines for however your system does this
+#
+$host = `hostname`; chop($host);
+$domain = `dnsdomainname`; chop($domain);
+
+# get temp file name
+$tmp = "/tmp/doubb$$";
+
+# save message from STDIN to a file
+# I thought about reading it into a buffer here, but some messages
+# are 10+Mb so a buffer may not be a good idea
+#
+if (! open(MSG, "+> $tmp")) {
+ # can't open temp file -- send message to local postmaster
+ # open(MAIL, "| /usr/sbin/sendmail -oeq postmaster");
+ print MAIL <STDIN>;
+ close(MAIL);
+ exit(1);
+}
+print MSG <STDIN>;
+
+# scan message for list of possible sender sites
+# note that original message appears after the second
+# "Original message follows" marker
+# look for From, Sender, and Reply-To and try them, too
+#
+$inhdr = 0;
+$hdrs = 0;
+$skip = 0;
+seek(MSG, 0, 0);
+while (<MSG>) {
+ chop;
+ if (/^ ----- Original message follows -----$/
+ || /^ ----Unsent message follows----$/) {
+ $i = 0;
+ $inhdr = 1;
+ $hdrs++;
+ $skip = 1;
+ next;
+ }
+ if ($skip) {
+ $skip--;
+ next;
+ }
+ if (/^$/) {
+ last if ($hdrs >= 2);
+ $inhdr = 0;
+ next;
+ }
+ if (! $inhdr) {
+ next;
+ }
+ if (! /^[ \t]/) { $hdr[$i++] = $_ }
+ else {
+ $i--;
+ $hdr[$i++] .= $_;
+ }
+}
+$rcvd = 0;
+for ($j = 0; $j < $i; $j++) {
+ print STDERR "DEBUG hdr[$j] = $hdr[$j]\n";
+ if ($hdr[$j] =~ /^received:/i) {
+ ($addr[$rcvd++]) = $hdr[$j] =~ m/.*\sby\s([^\s]+)\s.*/;
+ }
+ if ($hdr[$j] =~ /^reply-to:/i) {
+ ($addr1{"reply-to"} = $hdr[$j]) =~ s/^reply-to: *//i;
+ }
+ if ($hdr[$j] =~ /^sender:/i) {
+ ($addr1{"sender"} = $hdr[$j]) =~ s/^sender: *//i;
+ }
+ if ($hdr[$j] =~ /^from:/i) {
+ ($addr1{"from"} = $hdr[$j]) =~ s/^from: *//i;
+ }
+}
+
+# %addr and %addr1 arrays now contain lists of possible sites (or From headers).
+# Go through them parsing for the site name, and attempting to send
+# to the named person or postmaster@ each site in turn until successful
+#
+if ($dflag) {
+ open(DEBUG, "|/usr/sbin/sendmail postmaster");
+ print DEBUG "Subject: double bounce dialog\n";
+}
+$sent = 0;
+# foreach $x ("from", "sender", "reply-to") {
+foreach $x ("from", "sender") {
+ $y = &parseaddr($addr1{$x});
+ if ($y) {
+ print DEBUG "Trying $y\n" if ($dflag);
+ if (&sendbounce("$y")) {
+ $sent++;
+ last;
+ }
+ $y =~ s/.*@//;
+ print DEBUG "Trying postmaster\@$y\n" if ($dflag);
+ if (&sendbounce("postmaster\@$y")) {
+ $sent++;
+ last;
+ }
+ }
+}
+if (! $sent) {
+ $rcvd--;
+ for ($i = $rcvd; $i >= 0; $i--) {
+ $y = &parseaddr($addr[$i]);
+ $y =~ s/.*@//;
+ if ($y) {
+ print DEBUG "Trying postmaster\@$y\n" if ($dflag);
+ if (&sendbounce("postmaster\@$y")) {
+ $sent++;
+ last;
+ }
+ }
+ }
+}
+if (! $sent) {
+ # queer things are happening to me
+ # $addr[0] should be own domain, so we should have just
+ # tried postmaster@our.domain. theoretically, we should
+ # not get here...
+ if ($dflag) {
+ print DEBUG "queer things are happening to me\n";
+ print DEBUG "Trying postmaster\n";
+ }
+ &sendbounce("postmaster");
+}
+
+# clean up and get out
+#
+if ($dflag) {
+ seek(MSG, 0, 0);
+ print DEBUG "\n---\n"; print DEBUG <MSG>;
+ close(DEBUG);
+}
+close(MSG);
+unlink("$tmp");
+exit(0);
+
+
+
+
+
+# parseaddr()
+# parse hostname from From: header
+#
+sub parseaddr {
+ local($hdr) = @_;
+ local($addr);
+
+ if ($hdr =~ /<.*>/) {
+ ($addr) = $hdr =~ m/<(.*)>/;
+ return $addr;
+ }
+ if ($addr =~ /\s*\(/) {
+ ($addr) = $hdr =~ m/\s*(.*)\s*\(/;
+ return $addr;
+ }
+ ($addr) = $hdr =~ m/\s*(.*)\s*/;
+ return $addr;
+}
+
+
+# sendbounce()
+# send bounce to postmaster
+#
+# this re-invokes sendmail in immediate and quiet mode to try
+# to deliver to a postmaster. sendmail's exit status tells us
+# wether the delivery attempt really was successful.
+#
+sub sendbounce {
+ local($dest) = @_;
+ local($st);
+
+ open(MAIL, "| /usr/sbin/sendmail -ocn -odi -oeq $dest");
+ print MAIL <<EOT;
+From: Mail Delivery Subsystem <mail-router\@$domain>
+Subject: Postmaster notify: double bounce
+Reply-To: nobody\@$domain
+Errors-To: nobody\@$domain
+Precedence: junk
+Auto-Submitted: auto-generated (postmaster notification)
+
+The following message was received at $host.$domain for an invalid
+recipient. The sender's address was also invalid. Since the message
+originated at or transited through your mailer, this notification is being
+sent to you in the hope that you will determine the real originator and
+have them correct their From or Sender address.
+
+The invalid sender address was: $addr1{"from"}.
+
+ ----- The following is a double bounce at $host.$domain -----
+
+EOT
+ seek(MSG, 0, 0);
+ print MAIL <MSG>;
+ return close(MAIL);
+}
diff --git a/usr.sbin/sendmail/contrib/etrn.pl b/contrib/sendmail/contrib/etrn.pl
index 1e2cba9177ce..1e2cba9177ce 100755
--- a/usr.sbin/sendmail/contrib/etrn.pl
+++ b/contrib/sendmail/contrib/etrn.pl
diff --git a/usr.sbin/sendmail/contrib/expn.pl b/contrib/sendmail/contrib/expn.pl
index 57f851560bcd..57f851560bcd 100755
--- a/usr.sbin/sendmail/contrib/expn.pl
+++ b/contrib/sendmail/contrib/expn.pl
diff --git a/contrib/sendmail/contrib/mail.local.linux b/contrib/sendmail/contrib/mail.local.linux
new file mode 100644
index 000000000000..42d2c3c3d9ce
--- /dev/null
+++ b/contrib/sendmail/contrib/mail.local.linux
@@ -0,0 +1,205 @@
+From: Karl London <karl@borg.demon.co.uk>
+Message-Id: <199308111712.SAA05454@borg.demon.co.uk>
+Subject: Final port of mail.local to Linux
+To: eric@cs.berkeley.edu
+Date: Wed, 11 Aug 1993 18:12:27 +0100 (BST)
+X-Mailer: ELM [version 2.4 PL21]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+Content-Transfer-Encoding: 7bit
+Content-Length: 11415
+
+Hi,
+ Sorry about this.. This is a final version of mail.local for
+linux..
+
+This is what I would like to see distributed with 8.6 if poss...
+
+Karl
+
+--------------
+
+begin 600 mail.local.linux.tar.Z
+M'YV0;<*D8>."S9LQ8=B\`,"PH<.'$"-*G$BQHL6*(&C`N`$#!@@`($#$N%'#
+M(TB1)$V&7,D2A$<0-6C,D$%3QHT8+V/HI$$#9(V+0(,*'4HT8ITY=,+("0E@
+MC5(V12<ZE0,UJM6K6+-JW<KU:L"!!0\F?`$G#!TT;L*T*3/'!9JN<*WBA*%1
+M)<J2'T..Q'NRY0P;,6:$+`DC!@V:,VK(T#MCQDV0,.)*GFP4J5*F4ZMNS4RY
+ML^?/H#^_4-%"`0@5((:\@9-'3IHS:.B`0#$FA<@<.3Q205,&A)0R9\JXH3,'
+MQ!LS(,[VKN(FC9TR<N:DH9/'./(A"=.8>2.G>1@7IE$'8<,&A&O8Q,VSA?Z<
+M#/C3X7V7(9,&J6LQ=>BD>>,&1!@W9(!P5&]I]#?'&W7(,49O_P4H1H%*5;>=
+M'&W,P0((=TR'AG%+97@6@G3$U\8;])F1!D+Z\7>A4KW!`5T;T]$Q'PAPR/&&
+M'6F0,>-99B7'&PC;D?=&AFZ<`<(8_-&7HAMSQ,<B"&O1H4-\,;@@'WWVI8'?
+MDL4=!\*!"2YX)(F]M7&4;'*4D52!/C(HQHV](<G:>;'%MY(;;^BWX(5GU0<"
+M&_7)YB62`$ZW'Y/^`=@FD&\(2:216([!AD!KR?$>:C)8^1N6=-R7WZ'%L?E@
+M6G)(R%T;4)ZI7HTDUB&F<OZ]^=R8<[Y6YVDLX:EG&7RBX2>@2%DW9J%<)AH@
+MK$$:]"@(D4Z:1J4@L*F<G2&1<5`=:PUGUJ'&OL"=<<HM%9",KB54'*LXZAB@
+MAQO"RJFG2UX*P@Q6CE=>&&0\)X=^TA4)I5G0I6$NE,(M6:"19I1A5H)L<2C@
+M'+UYV6=Q!YI!QQTL4IMJL%C",6EUR#:J[,'^C;$&GG>P,5]PV4H97@*[^<DJ
+M&:[*5J"D=>A(\7$7/ZGC<P:YZ"#(/S+G''3246?=R]@!.J%W%PH!W1IEJ%Q=
+M@]&F1VBG6N;'75OQT6"E$V5H"-VB::TE+*Q&ZYMT=7@N!6O:#7LY77%;P_NU
+MQ@%5)T9O`Q[[!@C"61M=Q$NQ.J*,--I(\QCIZ>A:>T#:B.K$7_*,<9H:LPOB
+MERZ.H=V)C>_7H6MTR-B?BQ36)QU_E\9'!1))3`'"%$\80<4504A1!`BU@P"%
+M%$]8D00111`!@A!9@##[[[X?48035-@>A!/*#_$$]5(D(4055#PAA>U@@!&$
+M[;6?<`((UQ,1W_7-%X'%\$5,8;OXP#<!!1-))`\"[U*0PO6HT+\I7"@)3A@"
+M$ZI`!`0>(6K@`X$3GD`%$/"O"4F@@O_"=Z'GQ2<)^N.?_P`H0.H5$`2Y`T$3
+MBB"%(2!A@$$00A+X1X7FM0\$1LB@$^IG.R/@+PC"ZQT!AU`%)O1.>%60`A2>
+M,(4BO,]W(&C@%!08!!`FSTK`<X($GP""(EAA>A6<P@N9P`3G(0%Z19`>]>XG
+MA=1LCPK=^U[XQK>\W_$OADQP(JY\V$;X13$)OAL"%0Z(/4`609"$',+QP!@$
+M)EQH"E`X9!(:>2'Y%2&$O<O"A?"G/2<T,0I5`.,DF1`?(@2A"4&0GNU0@$`%
+M,M"!$*S@!"MXP0QN\`D7&MX3B.B[%5(/A4:X716$,`4"4@%\OSO"$YY`A"G$
+M!W]-E(+QAE"_'5B0B?<+9A6:>"%34B$(FVRC+G-8/6OB[WM30"`/LZC!`%8!
+M"@3<7@KB@X0G7,&++$Q-$+;IOQMNCWU.:-[SQ->\%-Y1AC34Y/_.^+PV(M"-
+MW`L"(F\'QR0(,CX'G6$&%8J_.5:0E0E<8`.=<`0)II%_:J0F"MM(P3-*X0JU
+M*X)M>E<[!V81H,WC71:>&<$4/@\$_`2F&8.'.]T!L`B5_*(6DQ#,(!#!>$U4
+MGD_/*#QL>D^C-01F?*90!1=&\92I+$+L3I,`(*!@!"DHRUGHUA8T)*`&+A`,
+M"J0F!ZI9S38Q>,%(7I"#&(3G!0H8P<W8D+/>\$"M:&BK#Q006!V9R`V]^0(4
+M@C"[+S!AEU307P)$\`(ZM`$.+S`(0@B"A=*:5@0*"(UJ5_L5@HAV+*T-RVA=
+M,(;5@F8N=<G+7>RR%[NP9"0PJ$$-!B.3FMBD(XSAR0T@8]OF#N5,E_D(9[@R
+M7>=:][K8E<QH2H,KU=0*/;.IS6URX[P?_28XP^D2<MC6'+=-ISI>:IIVN.,=
+M>=G+/+9*3YH@)H?VC!4UFPH4O+B%M0%%RT`(4A"#%#6J"#&*0A;"D(8<YKG\
+MB(A$HT/1H5:4)AJ]*$8S0E>.=H2&'H7,420CE))`Y:0.1VE*N*K2E03<M6)Y
+M"4P*'I..-H8F-0FD/[`*@ZSBM)K6Y%=CNCH1KWSTJT`)2\6&XD]QL';BD?FK
+M692"CKPR->,L;0E4!P9!@TOU8%29*5AIFIFK>A/D(=/*R.A!<IZ4W*LF!VM0
+M28HRHJC\HV0-B618?M;9I,4;C5EK#-@JV+;XTZUOY8DWX@)8N=AP+ANE:T;L
+M6M2[:GPH>=&+?>3Q3[Z@PR^2C2M@`VO9H4B6L(7MUV$&EIBO=F:QS96!;ZKJ
+MV,<6Y>=EA<%D*%,9&5A6,!BK`&:S;ERK('=@G.DL<[7V61F`MIH9B8%HRVDO
+MTMZ[-++*]VD"B]K4JE:&JRGJ;L/BVI:^)B^Q2;!LX4*;6B*VWJ)I.SK<CIN\
+MUZ+>K.&-/^KV6G3X%@:_`0YB@B,<@+Z&.&4OKD6.JUEQ)'>T`)G!<DRF=<\X
+MAZN55%@V<PA=ADOWK3N@3G4>;MT<7N>&_P[5=D7=7>]^%SQ=&@]YRF.>&=&H
+MQNH!-'MOC"/XQ$<^\Z%O"NK[^?L"VL7Y^<Y^*\W?_OJG/!(.L(")%"DLEQ?!
+M65H0A+94'@=W_L$04OU_O2LA`>LGU!6V\(74BR%6;8@]'.IPG7QD7Q"E,,0B
+M'A$*25QB$Y_X.RE2T8I$P.)#)]A%I89QC&7\:?3`R$:(5E2.1*_CU_&H1]3D
+MW8\-#.0@LQCZ0XZ^E8N,NR-O%TE%4K+IE]Q?)L,)T4^&TH2-+"5853F;5FJ=
+MI+'<(BW!KD&QXU)XQ./E)<$H5*X2TYC(!($RF>E,7$&3A=.LYC6AGD)^=I.R
+MX(SZ.#,X!7.V$9WJA#H"VRF%=\;3"?/$53WO^<4V#F&?4?TY"K7HQX%*H:#!
+ME%$)=2%7P%`N=5.=!$<2-7K%U#T7A2L"N%&TYU&]%U*O1%(F=00H-3TJA3\M
+MQ4(PU40SU3WIA($/Y4<ZQ5,5-%6_$U13152Y(W.^DU33`SQ-]50Q)57!]%."
+METX(M5%:A2M<Y56FA$K2<RF`%5C:`2!E@!R`,AP*,`8EMA1R`F>QL05=``(]
+MH``B8%9HE1I%1B>R01MXA1NZ85[`43#]QEY'@V]*$U_9`6[?P05NP`6F<5]B
+M6!S[Q1[SX0)T*`([$%B%HQT@,!H@H"M_4B"RH0))*%AFP(1.J(@*8!EZ<B13
+M^"5C,`;20098J(4@T(5GE0*Q]5H$,09OY0(V,!MT95?E9ALVH%<YP%<Q`(B"
+M6"C(88B(^(2+V(B#55@@P`-SD`=S0!9*H19NL5B"Y0;.9EC!.(R4>(Q*J(R$
+MM6/`*(PO<"`FHR;0F(S+^(O-^`(FHC+;V(O4"%GZ88XO4"#C*(V^6(US8!!G
+ML([=R`-F,`;#01!H@(SD:%CF2`9B((_3:%AP<`?ND8_1.(_ZL18`V8YUT!Q(
+M49#ZR([4"!W=\08+28T/N1\7R8QT0`:`\H\&R8T!Z8U<4R0;^8F(Q59N@5J-
+MU80%4@8)8`3@QP0)D`!^-0*.]9(),$LR^4TT"0.,I8@)H".`HB\@\`62A0(H
+MH(@7(H67H0(ID`*!:`=OD",)0)%'F91+.1Q-*66RX91+H0(7X@)D&953695D
+MD`!)9@9Y\"!F@!Q("05*"9:G898*()1(P1V1I95T"952J0!4:95'$0;!D95R
+MB0*!209VJ0!?X08HH!1G,`8<=@9V,$\)H(C^(0>1&8@)T)<J`)EV$(A[H`!7
+MB0?DTA^8N1KG2`:<60:F"1W]T9>J"9F<:1\U0R-AL'($>1H#R9F8*8478@9D
+M<"'3EA"<60<Y\@6R@9RL29I]>7%OT`:!2)K5Y@;PB`(B,(IBP08B<"&7=022
+MQ4+$(P7>^03@B4HS])>D"9VHT@,25$1,P)EWX"LJ,QNTL2'N&1QTH)J/J9F2
+MF9F4>2$B0`9FH`-RH`,B$)4@$`+N602Y8YD),`<>(H7W:1NC69,(`3$@<`)D
+M<`(Z4).&*`:_M@:;$R!(\EG;(@;UR8BD69-BD"9AL`:<V9FYV1LG8`8>VJ(9
+M:J-RX*$@BAHB:C(E.B8HJA\JVALL6I.7B1PHP)X0F@`L09$HT).OEYUUP`;Z
+MX3&]T0+(H9J@DJ`SF@#LZ8FSJ9EA^J(*(Z,Z6J,;^@,Y6I..%097ZC)*.IC!
+M@0)_69-]0)J0.08@T`+NZ:4`PIF@"0(K$*APL)K3N:2S$0*?J9F5V:)V6@9X
+MNJBC09JXD@3(,::(&')E(#HF,A\78F!S,V^5$YT@H)_P6"!X&BWU=FM0BAK,
+M^2]T((5L<2&/!AT9`C&CJJ&EJC9C"BMEH9O<87$#`:NX@B1RL%]PD&?^LI^+
+MPIS@$:N`E0"SFI]JPIR52IJ$B`(A,*8F8`*-VJ08AZUTL*J.J:!\P`>8NA(A
+M@`(#Z8GZ.9!I0Z[1J:Y\0"-WT`(^,)!?,*L,*B`Y$I4M.J;N":]W(*]J,I#:
+MRIP*^@/ZRJ_^2C<@H`.?^`,82XOK&2#NF9=I8J]MD*<3,AO%61[N"0/6]*B4
+M:4TKL`*@":$E"P)\X)Y$V89-.IRG\;*MB0?3@0(E^Y=[.HG[^;%.ZIR7J`+L
+M*9JDF4-Y=!IF``><F9!EH)S)80?&R:W#`20X6S4OR9E]20=N<"%/6`9;(`-T
+M@0-=L*A@ZXGV03-P@`*215E(8%F8I3]YVJTWZXEML`9(40:?A0)@JZ`]X)XM
+M$`,RFZ_O^K2>*)S5>;,">@<KD*`$6Y-22J6K)P(-*63U":W5F1Q^VZQRX&#A
+M6`9@2IJ(B98IT)!/N`:`ZP8BFR:4&KB+>KH#*[4H8`)T8+5LD*>TJYA/ZQK#
+M809-"@<":@085P+%@;S=>:IMT)2VB[NZNY@),+9;``-9Z)XGP`4P<`*<.;(^
+M.[:>&`/69`;Z.0<H,+87(AUZ4`;'<;XOF0+IVY$%(I46VJ+=2KW6JX782X<G
+M\*1<"UGA.Z-5HZ$76I/=^K^]$:Z)"%G5>[W8:P3KH\`A(`9C\+?H^XG&BZK+
+M6P.3JZ2]FU;Y,08H<`(^<`+!"0=Y2KG@>[(SNJ<U^<&_JXC"^[0"JKQB^[XS
+MVJT)LZS<,;P=G`!H&J.<&;0)8(B:2C`K1YB]@8B0E3(OZ;FMDQ8R@K.0-2/_
+M03BF&;I6DJ3=&@(%HB-XX+Z0=2'9ZP;]"Z$?#`<A/,+\>\)Y:HA/D!]J+!MA
+M<(AEX,2094VZLF2?JS3\-@=*/&4=EA#*TH>G4:UIO,9E;,)`@L*SFY@I\):$
+M-0=HX,.^R:0[;"-RX,,PNZQ3.I,"*B.?Q1VB>ZP8@CJ]09'<4;H)D"9TD"".
+M*9Q`RU@UJR^.>XCS9IF8*9Q>>[1TH[01VBFW28E?(@:U*<S,-JP2&B`JT)M8
+M^Y4P.L47T@9B()P7X@9R<,UW@*MO>2']=;6=>8EN:085<@9;,!==<"'X809;
+M@`,J@!,R0`/IC)MGL06H-#]RFT=.D+;4^994BV@VTLU_`C%EP+KJ6<0J@*FH
+M003U0<A#PBQ<JR\@,S@->3)#TA]L]:<M`#J?*C#ET5IO@@<-@Q#]\3<*#0(E
+M!B#"%F:P`C$`TEK^`2@U6ARC.ZV'S*U,^J[Q:J[TJA8H0#=16;^4Z\D\"<J?
+M6-$H@]'S9K$VC,MKD<*N#,LH$`-Y2L0?''+`2P?"BU@U/(Q-';>5A9Y,$'K7
+MG,N+VL6T$<TSXIZ4EA1T`*]F@0878@)S(`8*&J[M&A(H4-<N@!1?8)T%L@8+
+MZIZ&NZZW\P6UPP1.L`1[_8]^/2(Z$M0@4,!26M0^V=46N[HS,KK+BUA0G:W=
+M,=55S5@(?=*[`1UE<`)39AZ_UAN0MJ4;?3&#PRH+LG(-TR=N(-C*X3>/=B1J
+M308GC2S'BD4Q4QQK\1_%(=SU2=*(^#<"`MBYW8<*7:UX2\W"J85Y;1PNXIA<
+MC4)?$`10$$G8PP=/\`5#X#N41=Y?<`7$XP1,H%!3@-CM-P52P`?QG017L$U2
+MH*`\X!)"?95$34&6B]D@T-3=;1^JO,D4B2=V69-1'=I4/<2D_<TFZQ*<:8BF
+M9;%/L-U?@@8(P@8!XM`):P:BM08G0#+*70;61-`9X0(T0$R)=].,VJ0EC@+6
+MC;.7-01+\`7RHZ"4'>!4,."?B+Q,/0>='=?QFR8\K.#+RN!0K;L!W*)GD">#
+M(Z+-F0!$#-#'@1QL3="L>^,7`@.KUT1%L./30P2\"\E8+<,H,,[EW-5`4`(@
+M_H=EO19-F2!;?K=,2FEE4-"W+.:/5`1E_@5-1`6V,;BSL>7*F0*%^]^5:]0B
+M(,J@6\HJ4^3+B^!+[K--_@8-WLI03M@S.N70:N423IKS:<I*B<V>"*-D<,OK
+MG+YIL+[MN\Z2[0/^7;#?@@);[HDH:QW(T=_8K,=+`:B'N,V^;JCNZ09W\*1X
+MJ^R>:'+30:E@+F9U@!PKX.O7+`?\[=^3W:)#O<F67:5$7N!&?B$'WBD)KND5
+MV>DU*>J#(\S*&*8NW*VJWM\PX.B>+.21_KFD3&:C:^E)GNX+SNE_">]C\*$)
+M`,,&#S`V7LTXJ^5O^>0)$>583MJ7&JNWHR:+<M%G@S5G8"-U``=8A`2!PATG
+M0LAYH,X%`M-IIC!3G''^$2(8KS!2^"\#`=%%"1UY@$57L,2#8Q!%<C;6DG$K
+MLG+8@N(E9C.O>M(<'QV^`@<.PSHPLG)@=@>H;8G_$1S'\MH8DIO^H1ZYR6@C
+M:RT'<]('8M,L:N4?VJUC\-NVT:(P+(47W?#6'+']>@?_FB/FOJ]W_P5G,+"/
+MC+IF$(S*2/>*N0,_&D7\<0*R@3'3\6`"`@=D`#!;C,B0+"EO`#&&+Y6)GP2?
+M!2BBLYS6>1!K4/FDW<44#J%KV9;:(;QN/@=GD*</[IBI'XA!FY@*L/KC;..P
+M;YE]6<[`3(FD8YO,AHU.009D(`=?P";XDOS'O"U^NLN>6+C'+`>WZ>%]F[4J
+M@`902YK$#W)\J/TAYYM9JS)N<-8YW?R6TB]?8`9J,1!Y\-^&*#5?<JQ92XCC
+M_"7LH62'F"?^8;4#07.5`=-GP'+:7H-ZYHJ_V(%K0S>PTSA;7IB+#,`!R?6D
+M9E\.,X#<3V%]"*3``.<-=B)%V(\.4,!NIZ0JFX"#="`P\TD)<G?IT%VF&WCL
+MS@*V*!>6`-1?7RL0[>_]L8'JX)ZX'[]"`U]`_5$'%S&C*%B100$^T`<`0?4W
+MUVP@^V."*`T._,`O8/[.P%E(84X0!X(NV="QI*`/F`-?8`M*N!GWZUP""%!@
+M38IMD3XU@0*"@!%`;#N$`>V2'4<$CH``:0)A3G`1+JI&`@$<N#N!E^T3&3\U
+M`?"^A`O49.K.R<TH&5CQII=P8%N=POSQOMAGJ$3")9L-+HT,[*<F-<U@G]@2
+M#F'N0NPU9`9R2)_ZJTLF``JJ+_8EO-3?Y&()`<O\=;(_&.0@728<=:VO$&(Z
+M1`@#9QE@0DL*8%+A*05PH1Y=(,1<@"PX6"SM-%I`P!;@4LPK"PV(I4"67$#I
+M"EJ.*"L5$R(P!)#201I)P*@C0:9M-,!NC4AJ1U8K=&DFQ5*+2@1CP7W9$"EM
+MPV[X!12`E,),]<'])04VT)68Q%<Z6N2,#HRELB2(^)P]]&3YT"PDA.#4!NB`
+M+KM_<T`?@K/GU!`YD]7Z`F1`4K1#[4`,2=-%!!9TK/O%0T)'!;BA-TP`%]$R
+M[(O'1+R`1$/\2R.@''K$,/`%5.);"P..;".:`8_8C*[3=^)Q`80A"D3_D!-1
+M(DTL'"Q1S\V&A+@/81;/>FL13@'LJ>Q"%:NB5;R*6#$K:L6M*!&8X5AH`C'*
+M):D,KJ@5<`MR.0F]1;>DQ;[0$F2`3B`N,Z$F<(2<(`-L@&)@+F2QN4"7I2!=
+MGD)7J"YY,3`*1LDP`LI**`*+5&-TG2*YLHK(3?P3"7KE!L@BQJ)+CD`/2`!>
+MD0TH`%3B!'#`9<R,+@`HR9`)<@6<P&6T$7E"`8S&)L!,BD`/H`'"I0:H1@02
+M>GK`"Q@5C,4%[*-?)`;F@'M@%?%H;RV6P4@<BZ-Q/(Z",3.^`-"(`Y!C13"+
+MO"4EJ$7IR!97@@VP`3>`!@R&CF`#8*,,4`RI2"0TAL?@$IPC9=B+F,$O4A?U
+M:![;HWMD"'Y(!("A[Q(;PDL9(B^G33Z@E_0@:[)-&WH;PN+;T!>!`1[B(Z@I
+M#WE(/2A`Z18?%8"!##!>YE,PF@*CH=@$CA$36&/,F`H(<R$R3<G1$"#"07(!
+M^0C9,LRB"5N9J45\F-018BS-B-EZ)J;/B(P_XR^@#)<0D?+Q2;P8'"D2-,5\
+MH#%?1LH(BPM)9';,F>DQ:P+(_`@A`R?>C!CBD7=BSNP)F`<2GTR>*19\IC?T
+M&D!3'R1%EK$4/)++0,B`4RQ$!83P=Z>"QZR*B/,JEJ2;J4)/TD!&R5U19XI#
+ME<0SQ`+,9$E&@6*N3)=T%M""T-P:.5DMKD7+.)&-9BGDJDA#+CQ:I;D1+U+"
+MG`5-`R0E9,OAD9_FON`+?5%J_,6IF33&K6"L&G_1:E[9J_D6L:;>^(F*L7$&
+MY8AD"4>26=0'CU%P>,V,]#7`9D@(&V(S'*9$?$0V,H--V@R)U#!8I:V!:-1&
+M:(@9;`-4[@V`/`XX,@$(R.X0;I;'N+$:QL+?I!N]$1T*Y*MT-V3#;,B-'T&Q
+M^F.S_(_YYEO\JKJ!'-!-WJ@Q>X-0_@N#\S!VQ.`H'`PGZEF./`%QEDWD"!B4
+M(U@E&V.9,>3EQ^%HH(ITU`C3<<I`S.KX,%0/=N!('CD[8)!1F3G`PW;8G$62
+M<P0*59D\:T3_)""A,T>*SOG(F$FG??!(/R(_Z`?W<2AF9X2DG:M3/[+.!7H@
+M7$>64)"O@T&*C_,X/A[$0(*0J2,S`PC-S"8JA(6X$!CR@[+*#2$G.P3J?)Z]
+MTW>,B#@)/$S$B1A(C&EXC`CB43Q:A/'@DU\B1AI)Y/F8:83R1)V1Z3V&#AT1
+M`G9DD@B!/,(C/P_3*3T3A38:DKR90%)/((0DDN3U6!),\G]H3R>Q/:(D]QC(
+M(A165HGON9G!Q^O4$I\Y=G2)\O$E*RB8.)]BDD&BS_1I)CSR^D@3BZ)]+@OW
+MT2;<Y*M\$]HS?LI)U$$_41-]4`_QY'Z2@#SAD?,'G]@?_--/ZLX_Z3]GA*`(
+ME0A40PB0`<HG#V5D+J!'4E$NBH$DGAREC5`@D.)*1DI)V2$:*`FDE-_A@1I*
+M")(I[(,$V903Q'12D(%\`CUE!U$5%Z0^+:8,0BJ-IP8Q%?:!@_(/"ZHJ]N.J
+M)!2M8B"'$!+X*D9(K$S,7^F%1)%`<"W;R07@@`1@`Q2H*KJ6K2@CO`";,!D;
+MI`L@`@$B""S,\F`3+D0,P`U^Y8+*!K'F`G)<(P$!.,!!/H$FX0*FP(9P`J=$
+M:SH!,W-`94M"<)!.($!XK#)Q0,-,'0-I;P`/.$@7>CNRP`2!`NG$F;B`&6KS
+M$.AH4:%0SPB4!^00!)8">W*05;1>4D.R-$0W!/*8(MT#GMA.)X!#4058!`ND
+M2`&PNN3V(RP#@%`*`:)`S+'(EQP&QQ4K'"W@.'`I4X8U<.)V(P.A0C9`*YJ'
+M!K#H4IB&&XJ%0H$?>D`50$U3`*?-D&I1QJ0JG%L=TUTY0HLZM0'H(*$`'("D
+M/\)+"<DGX?5ZS1SPE4*@/+2`I&`D6D"&T(0;`@_(TBOJ`I*`;)"B0()]6%'+
+MH0"F@,AA2XLB$T('U;9)"V01T(PNP),J@"10*-)%'9AX,.V/!3*6]B.`*!Y(
+MD3CO642[H9$H",=GH0X*`'SU&FMS-198;_@;?\\--`=_D6E:6DDR$N4C@Z$*
+M]0$>@`CXVAH_!NGUABSA+^(IQE$?O6*?%HYA6APH5A]-#H+&$*J%3QHLR\`?
+MM9>$X]=LB%J&V@)$-&4+R9"3`A$5]1\$&_CR$WYTH"8<0HK$,FH]355J30ZL
+MTI2&]4(7Y#@;**!\E+#^%2TJC4,5J74T452'CZHDRP1&56(*X-35/"1QI1Q$
+MF0@48;$_C*PZYD]15=*I63""7)C3`JE,\R-,&UV"+)7A`9PA'8#&3EV#ZV+"
+M.$@L8$5+'`B0`4&5/O'0FP=2X<!#=0^=]),>,5A1/L99TE&`_,]/S#YR.E:7
+M0OEB#QU0;0@&%J``8$7^6Y!+P4^LI30P([P$14T3%K6&QE50.BB9:&8,AOH!
+M4"@-UX1N/`*CF0.NHK9%&*SA`SP"(;JC2\XX9*($`39:Z(:8'L:CO6%.!YE*
+M_Q0K_5.O=%)^L8+A(&UI%[$#SD,+*(`J@'!R*L00I$O2K=J(A0DP$*K:T`/\
+M(6+T5.?*%I+"9S&FR)2(,JWZ05M5Z6UUI3EB4G:6SQ):$JAI,2U_ZD25!<C1
+M6V7#(BU$G@6TD"(7<%Y+2V'E=^I00APK%NI;W^L+2(?+\8"^@&D8#/D+,;6F
+MLC)-0`[ND`<<Y#'MHK=#T+$/)H`[^FH3%0D@@+#2UZ6`!S(AAM6P9!5(F-7%
+M`&+]JII0@(&U-PQ6"WNB`)ELP`$9UL)F0IB60ETK"*`=Q82@*``@`EI9QW%=
+M&DN4AJ+1[:0`D&"#>$)&`L&R.I+A]:Q>J/%Z,.VQQC\%$%)91!QU`UA4-MB!
+M&P`"P(/7$U8VXN.IA3)Z8<'#>SRS:#;-JMDURV;;K)M]LW`VSLK9.4MGZZR=
+HO;-X-L_JV3W+9_NLG_VS@#;0"MI!2V@+K:$]M(@VT2K:1<MH&^UD`$MG
+`
+end
diff --git a/usr.sbin/sendmail/contrib/mailprio b/contrib/sendmail/contrib/mailprio
index 58feba7c22e4..58feba7c22e4 100644
--- a/usr.sbin/sendmail/contrib/mailprio
+++ b/contrib/sendmail/contrib/mailprio
diff --git a/contrib/sendmail/contrib/mh.patch b/contrib/sendmail/contrib/mh.patch
new file mode 100644
index 000000000000..7b23a5b71dd4
--- /dev/null
+++ b/contrib/sendmail/contrib/mh.patch
@@ -0,0 +1,193 @@
+Message-Id: <199309031900.OAA19417@ignatz.acs.depaul.edu>
+To: bug-mh@ics.uci.edu
+cc: mh-users@ics.uci.edu, eric@cs.berkeley.edu
+Subject: MH-6.8.1/Sendmail 8.X (MH patch) updated
+Date: Fri, 03 Sep 1993 14:00:46 -0500
+From: Dave Nelson <dcn@ignatz.acs.depaul.edu>
+
+
+ This patch will fix the "X-auth..." warnings from the newer
+Sendmails (8.X) while continuing to work with the old sendmails.
+
+ I think the following patch will make everyone happy.
+
+ 1) Anybody with MH-6.8.1 can install this. It doesn't matter
+ what version of sendmail you're running. It doesn't matter
+ if you're not running sendmail (but it won't fix anything
+ for you).
+
+ 2) No configuration file hacks. If the -client switch is
+ absent (the default), the new sendmails will get an EHLO
+ using what LocalName() returns as the hostname. On my systems,
+ this returns the FQDN. If the EHLO fails with a result between
+ 500 and 599 and the -client switch is not set, we give up on
+ sending EHLO/HELO and just go deliver the mail.
+
+ 3) No new configuration options.
+
+ 4) Retains the undocumented -client switch. One warning: it
+ is possible using the -client switch to cause the old sendmails
+ to return "I refuse to talk to myself". You could do this under
+ the old code as well. This will happen if you claim to be the
+ same system as the sendmail you're sending to is running on.
+ That's pointless, but possible. If you do this, just like under
+ the old code, you will get an error.
+
+ 5) If you're running a site with both old and new sendmails, you only
+ have to build MH once. The code's the same; works with them
+ both.
+
+ If you decide to install this, make sure that you look the patch
+over and that you agree with what it is doing. It works for me, but I
+can't test it on every possible combination. Make sure that it works
+before you really install it for your users, if any. No promises.
+
+ To install this, save this to a file in the mts/sendmail directory.
+Feed it to patch. Patch will ignore the non-patch stuff. You should have
+"mts sendmail/smtp" in your configuration file. This works with old and
+new sendmails. Using "mts sendmail" will cause the new sendmails to
+print an "X-auth..." warning about who owns the process piping the mail
+message. I don't know of anyway of getting rid of these.
+
+ mh-config (if necessary), make, make inst-all.
+
+
+I hope this helps people.
+
+/dcn
+
+Dave Nelson
+Academic Computer Services
+DePaul University, Chicago
+
+*** smail.c Fri Sep 3 11:58:05 1993
+--- smail.c Fri Sep 3 11:57:27 1993
+***************
+*** 239,261 ****
+ return RP_RPLY;
+ }
+
+! if (client && *client) {
+! doingEHLO = 1;
+! result = smtalk (SM_HELO, "EHLO %s", client);
+! doingEHLO = 0;
+
+! if (500 <= result && result <= 599)
+ result = smtalk (SM_HELO, "HELO %s", client);
+!
+! switch (result) {
+ case 250:
+! break;
+
+ default:
+ (void) sm_end (NOTOK);
+ return RP_RPLY;
+ }
+ }
+
+ #ifndef ZMAILER
+ if (onex)
+--- 239,276 ----
+ return RP_RPLY;
+ }
+
+! doingEHLO = 1;
+! result = smtalk (SM_HELO, "EHLO %s",
+! (client && *client) ? client : LocalName());
+! doingEHLO = 0;
+!
+! switch (result)
+! {
+! case 250:
+! break;
+
+! default:
+! if (!(500 <= result && result <= 599))
+! {
+! (void) sm_end (NOTOK);
+! return RP_RPLY;
+! }
+!
+! if (client && *client)
+! {
+ result = smtalk (SM_HELO, "HELO %s", client);
+! switch (result)
+! {
+ case 250:
+! break;
+
+ default:
+ (void) sm_end (NOTOK);
+ return RP_RPLY;
++ }
+ }
+ }
++
+
+ #ifndef ZMAILER
+ if (onex)
+***************
+*** 357,380 ****
+ return RP_RPLY;
+ }
+
+! if (client && *client) {
+! doingEHLO = 1;
+! result = smtalk (SM_HELO, "EHLO %s", client);
+! doingEHLO = 0;
+
+! if (500 <= result && result <= 599)
+ result = smtalk (SM_HELO, "HELO %s", client);
+!
+! switch (result) {
+! case 250:
+ break;
+
+! default:
+ (void) sm_end (NOTOK);
+ return RP_RPLY;
+ }
+ }
+!
+ send_options: ;
+ if (watch && EHLOset ("XVRB"))
+ (void) smtalk (SM_HELO, "VERB on");
+--- 372,409 ----
+ return RP_RPLY;
+ }
+
+! doingEHLO = 1;
+! result = smtalk (SM_HELO, "EHLO %s",
+! (client && *client) ? client : LocalName());
+! doingEHLO = 0;
+!
+! switch (result)
+! {
+! case 250:
+! break;
+!
+! default:
+! if (!(500 <= result && result <= 599))
+! {
+! (void) sm_end (NOTOK);
+! return RP_RPLY;
+! }
+
+! if (client && *client)
+! {
+ result = smtalk (SM_HELO, "HELO %s", client);
+! switch (result)
+! {
+! case 250:
+ break;
+
+! default:
+ (void) sm_end (NOTOK);
+ return RP_RPLY;
++ }
+ }
+ }
+!
+ send_options: ;
+ if (watch && EHLOset ("XVRB"))
+ (void) smtalk (SM_HELO, "VERB on");
diff --git a/contrib/sendmail/contrib/mmuegel b/contrib/sendmail/contrib/mmuegel
new file mode 100644
index 000000000000..6db4a45189c1
--- /dev/null
+++ b/contrib/sendmail/contrib/mmuegel
@@ -0,0 +1,2079 @@
+From: "Michael S. Muegel" <mmuegel@cssun6.corp.mot.com>
+Message-Id: <199307280818.AA08111@cssun6.corp.mot.com>
+Subject: Re: contributed software
+To: eric@cs.berkeley.edu (Eric Allman)
+Date: Wed, 28 Jul 1993 03:18:02 -0500 (CDT)
+In-Reply-To: <199307221853.LAA04266@mastodon.CS.Berkeley.EDU> from "Eric Allman" at Jul 22, 93 11:53:47 am
+X-Mailer: ELM [version 2.4 PL22]
+Mime-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+Content-Transfer-Encoding: 7bit
+Content-Length: 69132
+
+OK. Here is a new shell archive.
+
+Cheers,
+-Mike
+
+---- Cut Here and feed the following to sh ----
+#!/bin/sh
+# This is a shell archive (produced by shar 3.49)
+# To extract the files from this archive, save it to a file, remove
+# everything above the "!/bin/sh" line above, and type "sh file_name".
+#
+# made 07/28/1993 08:13 UTC by mmuegel@mot.com (Michael S. Muegel)
+# Source directory /home/ustart/NeXT/src/mail-tools/dist/foo
+#
+# existing files will NOT be overwritten unless -c is specified
+#
+# This shar contains:
+# length mode name
+# ------ ---------- ------------------------------------------
+# 4308 -r--r--r-- README
+# 12339 -r--r--r-- libs/date.pl
+# 3198 -r--r--r-- libs/elapsed.pl
+# 4356 -r--r--r-- libs/mail.pl
+# 6908 -r--r--r-- libs/mqueue.pl
+# 7024 -r--r--r-- libs/newgetopts.pl
+# 4687 -r--r--r-- libs/strings1.pl
+# 1609 -r--r--r-- libs/timespec.pl
+# 5212 -r--r--r-- man/cqueue.1
+# 2078 -r--r--r-- man/postclip.1
+# 6647 -r-xr-xr-x src/cqueue
+# 1836 -r-xr-xr-x src/postclip
+#
+# ============= README ==============
+if test -f 'README' -a X"$1" != X"-c"; then
+ echo 'x - skipping README (File already exists)'
+else
+echo 'x - extracting README (Text)'
+sed 's/^X//' << 'SHAR_EOF' > 'README' &&
+-------------------------------------------------------------------------------
+Document Revision Control Information:
+X mmuegel
+X /usr/local/ustart/src/mail-tools/dist/foo/README,v
+X 1.1 of 1993/07/28 08:12:53
+-------------------------------------------------------------------------------
+X
+1. Introduction
+---------------
+X
+These tools may be of use to those sites using sendmail. Both are written in
+Perl. Our site, Mot.COM, receives a ton of mail being a top-level domain
+gateway. We have over 24 domains under us. Needless to say, we must have
+a robust mail system or my head, and others, would be on the chopping block.
+X
+2. Description
+--------------
+X
+The first tool, cqueue, checks the sendmail queue for problems. We use
+it to flag problems with subdomain mail servers (and even our own servers
+once in a while ;-). We run it via a cron job every hour during the day.
+You may find this too frequent, however.
+X
+The other program, postclip, is used to "filter" non-deliverable NDNs that
+get sent to our Postmaster account now and then. This ensures privacy of
+e-mail and helps avoid disk problems from huge NDNs. It is different than
+a brute force "just keep the header" approach because it tries hard to keep
+other parts of the message that look like non-delivery information.
+X
+Both have been used for some time at our site with no problems. Everything
+you need should be in this distribution: source, manual pages, and support
+libs. See the manual pages for a complete description of each tool.
+X
+3. Installation
+---------------
+X
+No fancy Makefile simply because these tools are all under a large
+hierarchy at my site. Installation should be a snap, however. Install
+the nroff(1) man(5) manual pages from the man subdirectory to the
+appropriate directory on your system. This might be something like
+/usr/local/man/man1.
+X
+Next, install all of the Perl libraries located in the lib subdirectory
+to your Perl library area. /usr/local/lib/perl is a good bet. The person
+who installed Perl at your site will be able to tell you for sure.
+X
+Finally, you need to install the programs. Note that cqueue wants to
+run setuid root by default. This is because the sendmail queue is normally
+only readable by root or some special group. In order to let any user
+run this suidperl is used. suidperl allows a Perl program to run with the
+privileges of another user.
+X
+You will have to edit both the cqueue and postclip programs to change
+the #! line at the top of each. Just change the pathname to whatever is
+appropriate on your system. Note that Larry Wall's fixin program from
+the Camel book can also be used to do this. It is very handy. It changes
+#! lines by looking at your PATH.
+X
+If you do not have suidperl on your system change the #! line in cqueue
+to reference perl instead of suidperl.
+X
+You may also wish to change some constants in cqueue. $DEF_QUEUE should be
+changed to your queue directory if it is not /usr/spool/mqueue. $DEF_TIME
+could be changed easy enough also. It is the time spec for the time duration
+after which a mail message will be reported on if the -a option has not been
+specified. See the manual page for more information and the format of this
+constant (same as the -t argument). Then again, neither of these has to
+be changed. Command line options are there to override their default
+values.
+X
+After you have edited the programs as necessary, all that remains is to
+install them to some executable directory. Install postclip mode 555
+and cqueue mode 4555 with owner root (if using suidperl) or mode 555
+(if not using suidperl).
+X
+4. Gripes, Comments, Etc
+------------------------
+X
+If you start using either of these let me know. I have other mail tools I
+will likely post in the future if these prove useful. Also, if you think
+something is just plain dumb/wrong/stupid let me know!
+X
+Cheers,
+-Mike
+X
+--
++----------------------------------------------------------------------------+
+| Michael S. Muegel | Internet E-Mail: mmuegel@mot.com |
+| UNIX Applications Startup Group | Moto Dist E-Mail: X10090 |
+| Corporate Information Office | Voice: (708) 576-0507 |
+| Motorola | Fax: (708) 576-4153 |
++----------------------------------------------------------------------------+
+SHAR_EOF
+chmod 0444 README ||
+echo 'restore of README failed'
+Wc_c="`wc -c < 'README'`"
+test 4308 -eq "$Wc_c" ||
+ echo 'README: original size 4308, current size' "$Wc_c"
+fi
+# ============= libs/date.pl ==============
+if test ! -d 'libs'; then
+ echo 'x - creating directory libs'
+ mkdir 'libs'
+fi
+if test -f 'libs/date.pl' -a X"$1" != X"-c"; then
+ echo 'x - skipping libs/date.pl (File already exists)'
+else
+echo 'x - extracting libs/date.pl (Text)'
+sed 's/^X//' << 'SHAR_EOF' > 'libs/date.pl' &&
+;#
+;# Name
+;# date.pl - Perl emulation of (the output side of) date(1)
+;#
+;# Synopsis
+;# require "date.pl";
+;# $Date = &date(time);
+;# $Date = &date(time, $format);
+;#
+;# Description
+;# This package implements the output formatting functions of date(1) in
+;# Perl. The format options are based on those supported by Ultrix 4.0
+;# plus a couple of additions from SunOS 4.1.1 and elsewhere:
+;#
+;# %a abbreviated weekday name - Sun to Sat
+;# %A full weekday name - Sunday to Saturday
+;# %b abbreviated month name - Jan to Dec
+;# %B full month name - January to December
+;# %c date and time in local format [+]
+;# %C date and time in long local format [+]
+;# %d day of month - 01 to 31
+;# %D date as mm/dd/yy
+;# %e day of month (space padded) - ` 1' to `31'
+;# %E day of month (with suffix: 1st, 2nd, 3rd...)
+;# %f month of year (space padded) - ` 1' to `12'
+;# %h abbreviated month name - Jan to Dec
+;# %H hour - 00 to 23
+;# %i hour (space padded) - ` 1' to `12'
+;# %I hour - 01 to 12
+;# %j day of the year (Julian date) - 001 to 366
+;# %k hour (space padded) - ` 0' to `23'
+;# %l date in ls(1) format
+;# %m month of year - 01 to 12
+;# %M minute - 00 to 59
+;# %n insert a newline character
+;# %p ante-meridiem or post-meridiem indicator (AM or PM)
+;# %r time in AM/PM notation
+;# %R time as HH:MM
+;# %S second - 00 to 59
+;# %t insert a tab character
+;# %T time as HH:MM:SS
+;# %u date/time in date(1) required format
+;# %U week number, Sunday as first day of week - 00 to 53
+;# %V date-time in SysV touch format (mmddHHMMyy)
+;# %w day of week - 0 (Sunday) to 6
+;# %W week number, Monday as first day of week - 00 to 53
+;# %x date in local format [+]
+;# %X time in local format [+]
+;# %y last 2 digits of year - 00 to 99
+;# %Y all 4 digits of year ~ 1700 to 2000 odd ?
+;# %z time zone from TZ environment variable w/ a trailing space
+;# %Z time zone from TZ environment variable
+;# %% insert a `%' character
+;# %+ insert a `+' character
+;#
+;# [+]: These may need adjustment to fit local conventions, see below.
+;#
+;# For the sake of compatibility, a leading `+' in the format
+;# specificaiton is removed if present.
+;#
+;# Remarks
+;# This is version 3.4 of date.pl
+;#
+;# An extension of `ctime.pl' by Waldemar Kebsch (kebsch.pad@nixpbe.UUCP),
+;# as modified by Marion Hakanson (hakanson@ogicse.ogi.edu).
+;#
+;# Unlike date(1), unknown format tags are silently replaced by "".
+;#
+;# defaultTZ is a blatant hack, but I wanted to be able to get date(1)
+;# like behaviour by default and there does'nt seem to be an easy (read
+;# portable) way to get the local TZ name back...
+;#
+;# For a cheap date, try...
+;#
+;# #!/usr/local/bin/perl
+;# require "date.pl";
+;# exit print (&date(time, shift @ARGV) . "\n") ? 0 : 1;
+;#
+;# This package is redistributable under the same terms as apply to
+;# the Perl 4.0 release. See the COPYING file in your Perl kit for
+;# more information.
+;#
+;# Please send any bug reports or comments to tmcgonigal@gallium.com
+;#
+;# Modification History
+;# Nmemonic Version Date Who
+;#
+;# NONE 1.0 02feb91 Terry McGonigal (tmcgonigal@gallium.com)
+;# Created from ctime.pl
+;#
+;# NONE 2.0 07feb91 tmcgonigal
+;# Added some of Marion Hakanson (hakanson@ogicse.ogi.edu)'s ctime.pl
+;# TZ handling changes.
+;#
+;# NONE 2.1 09feb91 tmcgonigal
+;# Corrected week number calculations.
+;#
+;# NONE 2.2 21oct91 tmcgonigal
+;# Added ls(1) date format, `%l'.
+;#
+;# NONE 2.3 06nov91 tmcgonigal
+;# Added SysV touch(1) date-time format, `%V' (pretty thin as
+;# mnemonics go, I know, but `t' and `T' were both gone already!)
+;#
+;# NONE 2.4 05jan92 tmcgonigal
+;# Corrected slight (cosmetic) problem with %V replacment string
+;#
+;# NONE 3.0 09jul92 tmcgonigal
+;# Fixed a couple of problems with &ls as pointed out by
+;# Thomas Richter (richter@ki1.chemie.fu-berlin.de), thanks Thomas!
+;# Also added a couple of SunOS 4.1.1 strftime-ish formats, %i and %k
+;# for space padded hours (` 1' to `12' and ` 0' to `23' respectivly),
+;# and %C for locale long date/time format. Changed &ampmH to take a
+;# pad char parameter to make to evaled code for %i and %k simpler.
+;# Added %E for suffixed day-of-month (ie 1st, 3rd, 4th etc).
+;#
+;# NONE 3.1 16jul92 tmcgonigal
+;# Added `%u' format to generate date/time in date(1) required
+;# format (ie '%y%m%d%H%M.%S').
+;#
+;# NONE 3.2 23jan93 tmcgonigal
+;# Added `%f' format to generate space padded month numbers, added
+;# `%E' to the header comments, it seems to have been left out (and
+;# I'm sure I wanted to use it at some point in the past...).
+;#
+;# NONE 3.3 03feb93 tmcgonigal
+;# Corrected some problems with AM/PM handling pointed out by
+;# Michael S. Muegel (mmuegel@mot.com). Thanks Michael, I hope
+;# this is the behaviour you were looking for, it seems more
+;# correct to me...
+;#
+;# NONE 3.4 26jul93 tmcgonigal
+;# Incorporated some fixes provided by DaviD W. Sanderson
+;# (dws@ssec.wisc.edu): February was spelled incorrectly and
+;# &wkno() was always using the current year while calculating
+;# week numbers, regardless of year implied by the time value
+;# passed to &date(). DaviD also contributed an improved &date()
+;# test script, thanks DaviD, I appreciate the effort. Finally,
+;# changed my mailling address from @gvc.com to @gallium.com
+;# to reflect, well, my new address!
+;#
+;# SccsId = "%W% %E%"
+;#
+require 'timelocal.pl';
+package date;
+X
+# Months of the year
+@MoY = ('January', 'February', 'March', 'April', 'May', 'June',
+X 'July', 'August', 'September','October', 'November', 'December');
+X
+# days of the week
+@DoW = ('Sunday', 'Monday', 'Tuesday', 'Wednesday',
+X 'Thursday', 'Friday', 'Saturday');
+X
+# CUSTOMIZE - defaults
+$defaultTZ = 'CST'; # time zone (hack!)
+$defaultFMT = '%a %h %e %T %z%Y'; # format (ala date(1))
+X
+# CUSTOMIZE - `local' formats
+$locTF = '%T'; # time (as HH:MM:SS)
+$locDF = '%D'; # date (as mm/dd/yy)
+$locDTF = '%a %b %d %T %Y'; # date/time (as dow mon dd HH:MM:SS yyyy)
+$locLDTF = '%i:%M:%S %p %A %B %E %Y'; # long date/time (as HH:MM:SS a/p day month dom yyyy)
+X
+# Time zone info
+$TZ; # wkno needs this info too
+X
+# define the known format tags as associative keys with their associated
+# replacement strings as values. Each replacement string should be
+# an eval-able expresion assigning a value to $rep. These expressions are
+# eval-ed, then the value of $rep is substituted into the supplied
+# format (if any).
+%Tags = ( '%a', q|($rep = $DoW[$wday])=~ s/^(...).*/\1/|, # abbr. weekday name - Sun to Sat
+X '%A', q|$rep = $DoW[$wday]|, # full weekday name - Sunday to Saturday
+X '%b', q|($rep = $MoY[$mon]) =~ s/^(...).*/\1/|, # abbr. month name - Jan to Dec
+X '%B', q|$rep = $MoY[$mon]|, # full month name - January to December
+X '%c', q|$rep = $locDTF; 1|, # date/time in local format
+X '%C', q|$rep = $locLDTF; 1|, # date/time in local long format
+X '%d', q|$rep = &date'pad($mday, 2, "0")|, # day of month - 01 to 31
+X '%D', q|$rep = '%m/%d/%y'|, # date as mm/dd/yy
+X '%e', q|$rep = &date'pad($mday, 2, " ")|, # day of month (space padded) ` 1' to `31'
+X '%E', q|$rep = &date'dsuf($mday)|, # day of month (w/suffix) `1st' to `31st'
+X '%f', q|$rep = &date'pad($mon+1, 2, " ")|, # month of year (space padded) ` 1' to `12'
+X '%h', q|$rep = '%b'|, # abbr. month name (same as %b)
+X '%H', q|$rep = &date'pad($hour, 2, "0")|, # hour - 00 to 23
+X '%i', q|$rep = &date'ampmH($hour, " ")|, # hour (space padded ` 1' to `12'
+X '%I', q|$rep = &date'ampmH($hour, "0")|, # hour - 01 to 12
+X '%j', q|$rep = &date'pad($yday+1, 3, "0")|, # Julian date 001 - 366
+X '%k', q|$rep = &date'pad($hour, 2, " ")|, # hour (space padded) ` 0' to `23'
+X '%l', q|$rep = '%b %d ' . &date'ls($year)|, # ls(1) style date
+X '%m', q|$rep = &date'pad($mon+1, 2, "0")|, # month of year - 01 to 12
+X '%M', q|$rep = &date'pad($min, 2, "0")|, # minute - 00 to 59
+X '%n', q|$rep = "\n"|, # insert a newline
+X '%p', q|$rep = &date'ampmD($hour)|, # insert `AM' or `PM'
+X '%r', q|$rep = '%I:%M:%S %p'|, # time in AM/PM notation
+X '%R', q|$rep = '%H:%M'|, # time as HH:MM
+X '%S', q|$rep = &date'pad($sec, 2, "0")|, # second - 00 to 59
+X '%t', q|$rep = "\t"|, # insert a tab
+X '%T', q|$rep = '%H:%M:%S'|, # time as HH:MM:SS
+X '%u', q|$rep = '%y%m%d%H%M.%S'|, # daaate/time in date(1) required format
+X '%U', q|$rep = &date'wkno($year, $yday, 0)|, # week number (weeks start on Sun) - 00 to 53
+X '%V', q|$rep = '%m%d%H%M%y'|, # SysV touch(1) date-time format (mmddHHMMyy)
+X '%w', q|$rep = $wday; 1|, # day of week - Sunday = 0
+X '%W', q|$rep = &date'wkno($year, $yday, 1)|, # week number (weeks start on Mon) - 00 to 53
+X '%x', q|$rep = $locDF; 1|, # date in local format
+X '%X', q|$rep = $locTF; 1|, # time in local format
+X '%y', q|($rep = $year) =~ s/..(..)/\1/|, # last 2 digits of year - 00 to 99
+X '%Y', q|$rep = "$year"; 1|, # full year ~ 1700 to 2000 odd
+X '%z', q|$rep = $TZ eq "" ? "" : "$TZ "|, # time zone from TZ env var (w/trail. space)
+X '%Z', q|$rep = $TZ; 1|, # time zone from TZ env. var.
+X '%%', q|$rep = '%'; $adv=1|, # insert a `%'
+X '%+', q|$rep = '+'| # insert a `+'
+);
+X
+sub main'date {
+X local($time, $format) = @_;
+X local($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
+X local($pos, $tag, $rep, $adv) = (0, "", "", 0);
+X
+X # default to date/ctime format or strip leading `+'...
+X if ($format eq "") {
+X $format = $defaultFMT;
+X } elsif ($format =~ /^\+/) {
+X $format = $';
+X }
+X
+X # Use local time if can't find a TZ in the environment
+X $TZ = defined($ENV{'TZ'}) ? $ENV{'TZ'} : $defaultTZ;
+X ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
+X &gettime ($TZ, $time);
+X
+X # Hack to deal with 'PST8PDT' format of TZ
+X # Note that this can't deal with all the esoteric forms, but it
+X # does recognize the most common: [:]STDoff[DST[off][,rule]]
+X if ($TZ =~ /^([^:\d+\-,]{3,})([+-]?\d{1,2}(:\d{1,2}){0,2})([^\d+\-,]{3,})?/) {
+X $TZ = $isdst ? $4 : $1;
+X }
+X
+X # watch out in 2070...
+X $year += ($year < 70) ? 2000 : 1900;
+X
+X # now loop throught the supplied format looking for tags...
+X while (($pos = index ($format, '%')) != -1) {
+X
+X # grab the format tag
+X $tag = substr($format, $pos, 2);
+X $adv = 0; # for `%%' processing
+X
+X # do we have a replacement string?
+X if (defined $Tags{$tag}) {
+X
+X # trap dead evals...
+X if (! eval $Tags{$tag}) {
+X print STDERR "date.pl: internal error: eval for $tag failed: $@\n";
+X return "";
+X }
+X } else {
+X $rep = "";
+X }
+X
+X # do the substitution
+X substr ($format, $pos, 2) =~ s/$tag/$rep/;
+X $pos++ if ($adv);
+X }
+X
+X $format;
+}
+X
+# dsuf - add `st', `nd', `rd', `th' to a date (ie 1st, 22nd, 29th)
+sub dsuf {
+X local ($mday) = @_;
+X
+X return $mday . 'st' if ($mday =~ m/.*1$/);
+X return $mday . 'nd' if ($mday =~ m/.*2$/);
+X return $mday . 'rd' if ($mday =~ m/.*3$/);
+X return $mday . 'th';
+}
+X
+# weekno - figure out week number
+sub wkno {
+X local ($year, $yday, $firstweekday) = @_;
+X local ($jan1, @jan1, $wks);
+X
+X # figure out the `time' value for January 1 of the given year
+X $jan1 = &maketime ($TZ, 0, 0, 0, 1, 0, $year-1900);
+X
+X # figure out what day of the week January 1 was
+X @jan1= &gettime ($TZ, $jan1);
+X
+X # and calculate the week number
+X $wks = (($yday + ($jan1[6] - $firstweekday)) + 1)/ 7;
+X $wks += (($wks - int($wks) > 0.0) ? 1 : 0);
+X
+X # supply zero padding
+X &pad (int($wks), 2, "0");
+}
+X
+# ampmH - figure out am/pm (1 - 12) mode hour value, padded with $p (0 or ' ')
+sub ampmH { local ($h, $p) = @_; &pad($h>12 ? $h-12 : ($h ? $h : 12), 2, $p); }
+X
+# ampmD - figure out am/pm designator
+sub ampmD { shift @_ >= 12 ? "PM" : "AM"; }
+X
+# gettime - get the time via {local,gmt}time
+sub gettime { ((shift @_) eq 'GMT') ? gmtime(shift @_) : localtime(shift @_); }
+X
+# maketime - make a time via time{local,gmt}
+sub maketime { ((shift @_) eq 'GMT') ? &main'timegm(@_) : &main'timelocal(@_); }
+X
+# ls - generate the time/year portion of an ls(1) style date
+sub ls {
+X return ((&gettime ($TZ, time))[5] == @_[0]) ? "%R" : " %Y";
+}
+X
+# pad - pad $in with leading $pad until lenght $len
+sub pad {
+X local ($in, $len, $pad) = @_;
+X local ($out) = "$in";
+X
+X $out = $pad . $out until (length ($out) == $len);
+X return $out;
+}
+X
+1;
+SHAR_EOF
+chmod 0444 libs/date.pl ||
+echo 'restore of libs/date.pl failed'
+Wc_c="`wc -c < 'libs/date.pl'`"
+test 12339 -eq "$Wc_c" ||
+ echo 'libs/date.pl: original size 12339, current size' "$Wc_c"
+fi
+# ============= libs/elapsed.pl ==============
+if test -f 'libs/elapsed.pl' -a X"$1" != X"-c"; then
+ echo 'x - skipping libs/elapsed.pl (File already exists)'
+else
+echo 'x - extracting libs/elapsed.pl (Text)'
+sed 's/^X//' << 'SHAR_EOF' > 'libs/elapsed.pl' &&
+;# NAME
+;# elapsed.pl - convert seconds to elapsed time format
+;#
+;# AUTHOR
+;# Michael S. Muegel <mmuegel@mot.com>
+;#
+;# RCS INFORMATION
+;# mmuegel
+;# /usr/local/ustart/src/mail-tools/dist/foo/libs/elapsed.pl,v
+;# 1.1 of 1993/07/28 08:07:19
+X
+package elapsed;
+X
+# Time field types
+$DAYS = 1;
+$HOURS = 2;
+$MINUTES = 3;
+$SECONDS = 4;
+X
+# The array contains four records each with four fields. The fields are,
+# in order:
+#
+# Type Specifies what kind of time field this is. Once of
+# $DAYS, $HOURS, $MINUTES, or $SECONDS.
+#
+# Multiplier Specifies what time field this is via the minimum
+# number of seconds this time field may specify. For
+# example, the minutes field would be non-zero
+# when there are 60 or more seconds.
+#
+# Separator How to separate this time field from the next
+# *greater* field.
+#
+# Format sprintf() format specifier on how to print this
+# time field.
+@MULT_AND_SEPS = ($DAYS, 60 * 60 * 24, "+", "%d",
+X $HOURS, 60 * 60, ":", "%d",
+X $MINUTES, 60, ":", "%02d",
+X $SECONDS, 1, "", "%02d"
+X );
+X
+;###############################################################################
+;# Seconds_To_Elapsed
+;#
+;# Coverts a seconds count to form [d+]h:mm:ss. If $Collapse
+;# is true then the result is compacted somewhat. The string returned
+;# will be of the form [d+][[h:]mm]:ss.
+;#
+;# Arguments:
+;# $Seconds, $Collapse
+;#
+;# Examples:
+;# &Seconds_To_Elapsed (0, 0) -> 0:00:00
+;# &Seconds_To_Elapsed (0, 1) -> :00
+;#
+;# &Seconds_To_Elapsed (119, 0) -> 0:01:59
+;# &Seconds_To_Elapsed (119, 1) -> 01:59
+;#
+;# &Seconds_To_Elapsed (3601, 0) -> 1:00:01
+;# &Seconds_To_Elapsed (3601, 1) -> 1:00:01
+;#
+;# &Seconds_To_Elapsed (86401, 0) -> 1+0:00:01
+;# &Seconds_To_Elapsed (86401, 1) -> 1+:01
+;#
+;# Returns:
+;# $Elapsed
+;###############################################################################
+sub main'Seconds_To_Elapsed
+{
+X local ($Seconds, $Collapse) = @_;
+X local ($Type, $Multiplier, @Multipliers, $Separator, $DHMS_Used,
+X $Elapsed, @Mult_And_Seps, $Print_Field);
+X
+X $Multiplier = 1;
+X @Mult_And_Seps = @MULT_AND_SEPS;
+X
+X # Keep subtracting the number of seconds corresponding to a time field
+X # from the number of seconds passed to the function.
+X while (1)
+X {
+X ($Type, $Multiplier, $Separator, $Format) = splice (@Mult_And_Seps, 0, 4);
+X last if (! $Multiplier);
+X $Seconds -= $DHMS_Used * $Multiplier
+X if ($DHMS_Used = int ($Seconds / $Multiplier));
+X
+X # Figure out if we should print this field
+X if ($Type == $DAYS)
+X {
+X $Print_Field = $DHMS_Used;
+X }
+X
+X elsif ($Collapse)
+X {
+X if ($Type == $HOURS)
+X {
+X $Print_Field = $DHMS_Used;
+X }
+X elsif ($Type == $MINUTES)
+X {
+X $Print_Field = $DHMS_Used || $Printed_Field {$HOURS};
+X }
+X else
+X {
+X $Format = ":%02d"
+X if (! $Printed_Field {$MINUTES});
+X $Print_Field = 1;
+X };
+X }
+X
+X else
+X {
+X $Print_Field = 1;
+X };
+X
+X $Printed_Field {$Type} = $Print_Field;
+X $Elapsed .= sprintf ("$Format%s", $DHMS_Used, $Separator)
+X if ($Print_Field);
+X };
+X
+X return ($Elapsed);
+};
+X
+1;
+SHAR_EOF
+chmod 0444 libs/elapsed.pl ||
+echo 'restore of libs/elapsed.pl failed'
+Wc_c="`wc -c < 'libs/elapsed.pl'`"
+test 3198 -eq "$Wc_c" ||
+ echo 'libs/elapsed.pl: original size 3198, current size' "$Wc_c"
+fi
+# ============= libs/mail.pl ==============
+if test -f 'libs/mail.pl' -a X"$1" != X"-c"; then
+ echo 'x - skipping libs/mail.pl (File already exists)'
+else
+echo 'x - extracting libs/mail.pl (Text)'
+sed 's/^X//' << 'SHAR_EOF' > 'libs/mail.pl' &&
+;# NAME
+;# mail.pl - perl function(s) to handle mail processing
+;#
+;# AUTHOR
+;# Michael S. Muegel (mmuegel@mot.com)
+;#
+;# RCS INFORMATION
+;# mmuegel
+;# /usr/local/ustart/src/mail-tools/dist/foo/libs/mail.pl,v 1.1 1993/07/28 08:07:19 mmuegel Exp
+X
+package mail;
+X
+# Mailer statement to eval. $Users, $Subject, and $Verbose are substituted
+# via eval
+$BIN_MAILER = "/usr/ucb/mail \$Verbose -s '\$Subject' \$Users";
+X
+# Sendmail command to use when $Use_Sendmail is true.
+$SENDMAIL = '/usr/lib/sendmail $Verbose $Users';
+X
+;###############################################################################
+;# Send_Mail
+;#
+;# Sends $Message to $Users with a subject of $Subject. If $Message_Is_File
+;# is true then $Message is assumed to be a filename pointing to the mail
+;# message. This is a new option and thus the backwards-compatible hack.
+;# $Users should be a space separated list of mail-ids.
+;#
+;# If everything went OK $Status will be 1 and $Error_Msg can be ignored;
+;# otherwise, $Status will be 0 and $Error_Msg will contain an error message.
+;#
+;# If $Use_Sendmail is 1 then sendmail is used to send the message. Normally
+;# a mailer such as Mail is used. By specifiying this you can include
+;# headers in addition to text in either $Message or $Message_Is_File.
+;# If either $Message or $Message_Is_File contain a Subject: header then
+;# $Subject is ignored; otherwise, a Subject: header is automatically created.
+;# Similar to the Subject: header, if a To: header does not exist one
+;# is automatically created from the $Users argument. The mail is still
+;# sent, however, to the recipients listed in $Users. This is keeping with
+;# normal sendmail usage (header vs. envelope).
+;#
+;# In both bin mailer and sendmail modes $Verbose will turn on verbose mode
+;# (normally just sendmail verbose mode output).
+;#
+;# Arguments:
+;# $Users, $Subject, $Message, $Message_Is_File, $Verbose, $Use_Sendmail
+;#
+;# Returns:
+;# $Status, $Error_Msg
+;###############################################################################
+sub main'Send_Mail
+{
+X local ($Users, $Subject, $Message, $Message_Is_File, $Verbose,
+X $Use_Sendmail) = @_;
+X local ($BIN_MAILER_HANDLE, $Mailer_Command, $Header_Found, %Header_Map,
+X $Header_Extra, $Mailer);
+X
+X # If the message is contained in a file read it in so we can have one
+X # consistent interface
+X if ($Message_Is_File)
+X {
+X undef $/;
+X $Message_Is_File = 0;
+X open (Message) || return (0, "error reading $Message: $!");
+X $Message = <Message>;
+X close (Message);
+X };
+X
+X # If sendmail mode see if we need to add some headers
+X if ($Use_Sendmail)
+X {
+X # Determine if a header block is included in the message and what headers
+X # are there
+X foreach (split (/\n/, $Message))
+X {
+X last if ($_ eq "");
+X $Header_Found = $Header_Map {$1} = 1 if (/^([A-Z]\S*): /);
+X };
+X
+X # Add some headers?
+X if (! $Header_Map {"To"})
+X {
+X $Header_Extra .= "To: " . join (", ", $Users) . "\n";
+X };
+X if (($Subject ne "") && (! $Header_Map {"Subject"}))
+X {
+X $Header_Extra .= "Subject: $Subject\n";
+X };
+X
+X # Add the required blank line between header/body if there where no
+X # headers to begin with
+X if ($Header_Found)
+X {
+X $Message = "$Header_Extra$Message";
+X }
+X else
+X {
+X $Message = "$Header_Extra\n$Message";
+X };
+X };
+X
+X # Get a string that is the mail command
+X $Verbose = ($Verbose) ? "-v" : "";
+X $Mailer = ($Use_Sendmail) ? $SENDMAIL : $BIN_MAILER;
+X eval "\$Mailer = \"$Mailer\"";
+X return (0, "error setting \$Mailer: $@") if ($@);
+X
+X # need to catch SIGPIPE in case the $Mailer call fails
+X $SIG {'PIPE'} = "mail'Cleanup";
+X
+X # Open mailer
+X return (0, "can not open mail program: $Mailer") if (! open (MAILER, "| $Mailer"));
+X
+X # Send off the mail!
+X print MAILER $Message;
+X close (MAILER);
+X return (0, "error running mail program: $Mailer") if ($?);
+X
+X # Everything must have went AOK
+X return (1);
+};
+X
+;###############################################################################
+;# Cleanup
+;#
+;# Simply here so we can catch SIGPIPE and not exit.
+;#
+;# Globals:
+;# None
+;#
+;# Arguments:
+;# None
+;#
+;# Returns:
+;# Nothing exciting
+;###############################################################################
+sub Cleanup
+{
+};
+X
+1;
+SHAR_EOF
+chmod 0444 libs/mail.pl ||
+echo 'restore of libs/mail.pl failed'
+Wc_c="`wc -c < 'libs/mail.pl'`"
+test 4356 -eq "$Wc_c" ||
+ echo 'libs/mail.pl: original size 4356, current size' "$Wc_c"
+fi
+# ============= libs/mqueue.pl ==============
+if test -f 'libs/mqueue.pl' -a X"$1" != X"-c"; then
+ echo 'x - skipping libs/mqueue.pl (File already exists)'
+else
+echo 'x - extracting libs/mqueue.pl (Text)'
+sed 's/^X//' << 'SHAR_EOF' > 'libs/mqueue.pl' &&
+;# NAME
+;# mqueue.pl - functions to work with the sendmail queue
+;#
+;# DESCRIPTION
+;# Both Get_Queue_IDs and Parse_Control_File are available to get
+;# information about the sendmail queue. The cqueue program is a good
+;# example of how these functions work.
+;#
+;# AUTHOR
+;# Michael S. Muegel (mmuegel@mot.com)
+;#
+;# RCS INFORMATION
+;# mmuegel
+;# /usr/local/ustart/src/mail-tools/dist/foo/libs/mqueue.pl,v
+;# 1.1 of 1993/07/28 08:07:19
+X
+package mqueue;
+X
+;###############################################################################
+;# Get_Queue_IDs
+;#
+;# Will figure out the queue IDs in $Queue that have both control and data
+;# files. They are returned in @Valid_IDs. Those IDs that have a
+;# control file and no data file are saved to the array globbed by
+;# *Missing_Control_IDs. Likewise, those IDs that have a data file and no
+;# control file are saved to the array globbed by *Missing_Data_IDs.
+;#
+;# If $Skip_Locked is true they a message that has a lock file is skipped
+;# and will not show up in any of the arrays.
+;#
+;# If everything went AOK then $Status is 1; otherwise, $Status is 0 and
+;# $Msg tells what went wrong.
+;#
+;# Globals:
+;# None
+;#
+;# Arguments:
+;# $Queue, $Skip_Locked, *Missing_Control_IDs, *Missing_Data_IDs
+;#
+;# Returns:
+;# $Status, $Msg, @Valid_IDs
+;###############################################################################
+sub main'Get_Queue_IDs
+{
+X local ($Queue, $Skip_Locked, *Missing_Control_IDs,
+X *Missing_Data_IDs) = @_;
+X local (*QUEUE, @Files, %Lock_IDs, %Data_IDs, %Control_IDs, $_);
+X
+X # Make sure that the * argument @arrays ar empty
+X @Missing_Control_IDs = @Missing_Data_IDs = ();
+X
+X # Save each data, lock, and queue file in @Files
+X opendir (QUEUE, $Queue) || return (0, "error getting directory listing of $Queue");
+X @Files = grep (/^(df|lf|qf)/, readdir (QUEUE));
+X closedir (QUEUE);
+X
+X # Create indexed list of data and control files. IF $Skip_Locked is true
+X # then skip either if there is a lock file present.
+X if ($Skip_Locked)
+X {
+X grep ((s/^lf//) && ($Lock_IDs {$_} = 1), @Files);
+X grep ((s/^df//) && (! $Lock_IDs {$_}) && ($Data_IDs {$_} = 1), @Files);
+X grep ((s/^qf//) && (! $Lock_IDs {$_}) && ($Control_IDs {$_} = 1), @Files);
+X }
+X else
+X {
+X grep ((s/^df//) && ($Data_IDs {$_} = 1), @Files);
+X grep ((s/^qf//) && ($Control_IDs {$_} = 1), @Files);
+X };
+X
+X # Find missing control and data files and remove them from the lists of each
+X @Missing_Control_IDs = sort (grep ((! $Control_IDs {$_}) && (delete $Data_IDs {$_}), keys (%Data_IDs)));
+X @Missing_Data_IDs = sort (grep ((! $Data_IDs {$_} && (delete $Control_IDs {$_})), keys (%Control_IDs)));
+X
+X
+X # Return the IDs in an appartently random order
+X return (1, "", keys (%Control_IDs));
+};
+X
+X
+;###############################################################################
+;# Parse_Control_File
+;#
+;# Will pase a sendmail queue control file for useful information. See the
+;# Sendmail Installtion and Operation Guide (SMM:07) for a complete
+;# explanation of each field.
+;#
+;# The following globbed variables are set (or cleared) by this function:
+;#
+;# $Sender The sender's address.
+;#
+;# @Recipients One or more addresses for the recipient of the mail.
+;#
+;# @Errors_To One or more addresses for addresses to which mail
+;# delivery errors should be sent.
+;#
+;# $Creation_Time The job creation time in time(3) format. That is,
+;# seconds since 00:00:00 GMT 1/1/70.
+;#
+;# $Priority An integer representing the current message priority.
+;# This is used to order the queue. Higher numbers mean
+;# lower priorities.
+;#
+;# $Status_Message The status of the mail message. It can contain any
+;# text.
+;#
+;# @Headers Message headers unparsed but in their original order.
+;# Headers that span multiple lines are not mucked with,
+;# embedded \ns will be evident.
+;#
+;# In all e-mail addresses bounding <> pairs are stripped.
+;#
+;# If everything went AOK then $Status is 1. If the message with queue ID
+;# $Queue_ID just does not exist anymore -1 is returned. This is very
+;# possible and should be allowed for. Otherwise, $Status is 0 and $Msg
+;# tells what went wrong.
+;#
+;# Globals:
+;# None
+;#
+;# Arguments:
+;# $Queue, $Queue_ID, *Sender, *Recipients, *Errors_To, *Creation_Time,
+;# *Priority, *Status_Message, *Headers
+;#
+;# Returns:
+;# $Status, $Msg
+;###############################################################################
+sub main'Parse_Control_File
+{
+X local ($Queue, $Queue_ID, *Sender, *Recipients, *Errors_To, *Creation_Time,
+X *Priority, *Status_Message, *Headers) = @_;
+X local (*Control, $_, $Not_Empty);
+X
+X # Required variables and the associated control. If empty at the end of
+X # parsing we return a bad status.
+X @REQUIRED_INFO = ('$Creation_Time', 'T', '$Sender', 'S', '@Recipients', 'R',
+X '$Priority', 'P');
+X
+X # Open up the control file for read
+X $Control = "$Queue/qf$Queue_ID";
+X if (! open (Control))
+X {
+X return (-1) if ((-x $Queue) && (! -f "$Queue/qf$Queue_ID") &&
+X (! -f "$Queue/df$Queue_ID"));
+X return (0, "error opening $Control for read: $!");
+X };
+X
+X # Reset the globbed variables just in case
+X $Sender = $Creation_Time = $Priority = $Status_Message = "";
+X @Recipients = @Errors_To = @Headers = ();
+X
+X # Look for a few things in the control file
+X READ: while (<Control>)
+X {
+X $Not_Empty = 1;
+X chop;
+X
+X PARSE:
+X {
+X if (/^T(\d+)$/)
+X {
+X $Creation_Time = $1;
+X }
+X elsif (/^S(<)?([^>]+)/)
+X {
+X $Sender = $2;
+X }
+X elsif (/^R(<)?([^>]+)/)
+X {
+X push (@Recipients, $2);
+X }
+X elsif (/^E(<)?([^>]+)/)
+X {
+X push (@Errors_To, $2);
+X }
+X elsif (/^M(.*)/)
+X {
+X $Status_Message = $1;
+X }
+X elsif (/^P(\d+)$/)
+X {
+X $Priority = $1;
+X }
+X elsif (/^H(.*)/)
+X {
+X $Header = $1;
+X while (<Control>)
+X {
+X chop;
+X last if (/^[A-Z]/);
+X $Header .= "\n$_";
+X };
+X push (@Headers, $Header);
+X redo PARSE if ($_);
+X last if (eof);
+X };
+X };
+X };
+X
+X # If the file was empty scream bloody murder
+X return (0, "empty control file") if (! $Not_Empty);
+X
+X # Yell if we could not find a required field
+X while (($Var, $Control) = splice (@REQUIRED_INFO, 0, 2))
+X {
+X eval "return (0, 'required control field $Control not found')
+X if (! $Var)";
+X return (0, "error checking \$Var: $@") if ($@);
+X };
+X
+X # Everything went AOK
+X return (1);
+};
+X
+1;
+SHAR_EOF
+chmod 0444 libs/mqueue.pl ||
+echo 'restore of libs/mqueue.pl failed'
+Wc_c="`wc -c < 'libs/mqueue.pl'`"
+test 6908 -eq "$Wc_c" ||
+ echo 'libs/mqueue.pl: original size 6908, current size' "$Wc_c"
+fi
+# ============= libs/newgetopts.pl ==============
+if test -f 'libs/newgetopts.pl' -a X"$1" != X"-c"; then
+ echo 'x - skipping libs/newgetopts.pl (File already exists)'
+else
+echo 'x - extracting libs/newgetopts.pl (Text)'
+sed 's/^X//' << 'SHAR_EOF' > 'libs/newgetopts.pl' &&
+;# NAME
+;# newgetopts.pl - a better newgetopt (which is a better getopts which is
+;# a better getopt ;-)
+;#
+;# AUTHOR
+;# Mike Muegel (mmuegel@mot.com)
+;#
+;# mmuegel
+;# /usr/local/ustart/src/mail-tools/dist/foo/libs/newgetopts.pl,v 1.1 1993/07/28 08:07:19 mmuegel Exp
+X
+;###############################################################################
+;# New_Getopts
+;#
+;# Does not care about order of switches, options, and arguments like
+;# getopts.pl. Thus all non-switches/options will be kept in ARGV even if they
+;# are not at the end. If $Pass_Invalid is set all unkown options will be
+;# passed back to the caller by keeping them in @ARGV. This is useful when
+;# parsing a command line for your script while ignoring options that you
+;# may pass to another script. If this is set New_Getopts tries to maintain
+;# the switch clustering on the unkown switches.
+;#
+;# Accepts the special argument -usage to print the Usage string. Also accepts
+;# the special option -version which prints the contents of the string
+;# $VERSION. $VERSION may or may not have an embeded \n in it. If -usage
+;# or -version are specified a status of -1 is returned. Note that the usage
+;# option is only accepted if the usage string is not null.
+;#
+;# $Switches is just like the formal arguemnt of getopts.pl. $Usage is a usage
+;# string with or without a trailing \n. *Switch_To_Order is an optional
+;# pointer to the name of an associative array which will contain a mapping of
+;# switch names to the order in which (if at all) the argument was entered.
+;#
+;# For example, if @ARGV contains -v, -x, test:
+;#
+;# $Switch_To_Order {"v"} = 1;
+;# $Switch_To_Order {"x"} = 2;
+;#
+;# Note that in the case of multiple occurances of an option $Switch_To_Order
+;# will store each occurance of the argument via a string that emulates
+;# an array. This is done by using join ($;, ...). You can retrieve the
+;# array by using split (/$;/, ...).
+;#
+;# *Split_ARGV is an optional pointer to an array which will conatin the
+;# original switches along with their values. For the example used above
+;# Split_ARGV would contain:
+;#
+;# @Split_ARGV = ("v", "", "x", "test");
+;#
+;# Another exciting ;-) feature that newgetopts has. Along with creating the
+;# normal $opt_ scalars for the last value of an argument the list @opt_ is
+;# created. It is an array which contains all the values of arguments to the
+;# basename of the variable. They are stored in the order which they occured
+;# on the command line starting with $[. Note that blank arguments are stored
+;# as "". Along with providing support for multiple options on the command
+;# line this also provides a method of counting the number of times an option
+;# was specified via $#opt_.
+;#
+;# Automatically resets all $opt_, @opt_, %Switch_To_Order, and @Split_ARGV
+;# variables so that New_Getopts may be called more than once from within
+;# the same program. Thus, if $opt_v is set upon entry to New_Getopts and
+;# -v is not in @ARGV $opt_v will not be set upon exit.
+;#
+;# Arguments:
+;# $Switches, $Usage, $Pass_Invalid, *Switch_To_Order, *Split_ARGV
+;#
+;# Returns:
+;# -1, 0, or 1 depending on status (printed Usage/Version, OK, not OK)
+;###############################################################################
+sub New_Getopts
+{
+X local($taint_argumentative, $Usage, $Pass_Invalid, *Switch_To_Order,
+X *Split_ARGV) = @_;
+X local(@args,$_,$first,$rest,$errs, @leftovers, @current_leftovers,
+X %Switch_Found);
+X local($[, $*, $Script_Name, $argumentative);
+X
+X # Untaint the argument cluster so that we can use this with taintperl
+X $taint_argumentative =~ /^(.*)$/;
+X $argumentative = $1;
+X
+X # Clear anything that might still be set from a previous New_Getopts
+X # call.
+X @Split_ARGV = ();
+X
+X # Get the basename of the calling script
+X ($Script_Name = $0) =~ s/.*\///;
+X
+X # Make Usage have a trailing \n
+X $Usage .= "\n" if ($Usage !~ /\n$/);
+X
+X @args = split( / */, $argumentative );
+X
+X # Clear anything that might still be set from a previous New_Getopts call.
+X foreach $first (@args)
+X {
+X next if ($first eq ":");
+X delete $Switch_Found {$first};
+X delete $Switch_To_Order {$first};
+X eval "undef \@opt_$first; undef \$opt_$first;";
+X };
+X
+X while (@ARGV)
+X {
+X # Let usage through
+X if (($ARGV[0] eq "-usage") && ($Usage ne "\n"))
+X {
+X print $Usage;
+X exit (-1);
+X }
+X
+X elsif ($ARGV[0] eq "-version")
+X {
+X if ($VERSION)
+X {
+X print $VERSION;
+X print "\n" if ($VERSION !~ /\n$/);
+X }
+X else
+X {
+X warn "${Script_Name}: no version information available, sorry\n";
+X }
+X exit (-1);
+X }
+X
+X elsif (($_ = $ARGV[0]) =~ /^-(.)(.*)/)
+X {
+X ($first,$rest) = ($1,$2);
+X $pos = index($argumentative,$first);
+X
+X $Switch_To_Order {$first} = join ($;, split (/$;/, $Switch_To_Order {$first}), ++$Order);
+X
+X if($pos >= $[)
+X {
+X if($args[$pos+1] eq ':')
+X {
+X shift(@ARGV);
+X if($rest eq '')
+X {
+X $rest = shift(@ARGV);
+X }
+X
+X eval "\$opt_$first = \$rest;";
+X eval "push (\@opt_$first, \$rest);";
+X push (@Split_ARGV, $first, $rest);
+X }
+X else
+X {
+X eval "\$opt_$first = 1";
+X eval "push (\@opt_$first, '');";
+X push (@Split_ARGV, $first, "");
+X
+X if($rest eq '')
+X {
+X shift(@ARGV);
+X }
+X else
+X {
+X $ARGV[0] = "-$rest";
+X }
+X }
+X }
+X
+X else
+X {
+X # Save any other switches if $Pass_Valid
+X if ($Pass_Invalid)
+X {
+X push (@current_leftovers, $first);
+X }
+X else
+X {
+X warn "${Script_Name}: unknown option: $first\n";
+X ++$errs;
+X };
+X if($rest ne '')
+X {
+X $ARGV[0] = "-$rest";
+X }
+X else
+X {
+X shift(@ARGV);
+X }
+X }
+X }
+X
+X else
+X {
+X push (@leftovers, shift (@ARGV));
+X };
+X
+X # Save any other switches if $Pass_Valid
+X if ((@current_leftovers) && ($rest eq ''))
+X {
+X push (@leftovers, "-" . join ("", @current_leftovers));
+X @current_leftovers = ();
+X };
+X };
+X
+X # Automatically print Usage if a warning was given
+X @ARGV = @leftovers;
+X if ($errs != 0)
+X {
+X warn $Usage;
+X return (0);
+X }
+X else
+X {
+X return (1);
+X }
+X
+}
+X
+1;
+SHAR_EOF
+chmod 0444 libs/newgetopts.pl ||
+echo 'restore of libs/newgetopts.pl failed'
+Wc_c="`wc -c < 'libs/newgetopts.pl'`"
+test 7024 -eq "$Wc_c" ||
+ echo 'libs/newgetopts.pl: original size 7024, current size' "$Wc_c"
+fi
+# ============= libs/strings1.pl ==============
+if test -f 'libs/strings1.pl' -a X"$1" != X"-c"; then
+ echo 'x - skipping libs/strings1.pl (File already exists)'
+else
+echo 'x - extracting libs/strings1.pl (Text)'
+sed 's/^X//' << 'SHAR_EOF' > 'libs/strings1.pl' &&
+;# NAME
+;# strings1.pl - FUN with strings #1
+;#
+;# NOTES
+;# I wrote Format_Text_Block when I just started programming Perl so
+;# it is probably not very Perlish code. Center is more like it :-).
+;#
+;# AUTHOR
+;# Michael S. Muegel (mmuegel@mot.com)
+;#
+;# RCS INFORMATION
+;# mmuegel
+;# /usr/local/ustart/src/mail-tools/dist/foo/libs/strings1.pl,v 1.1 1993/07/28 08:07:19 mmuegel Exp
+X
+package strings1;
+X
+;###############################################################################;# Center
+;#
+;# Center $Text assuming the output should be $Columns wide. $Text can span
+;# multiple lines, of course :-). Lines within $Text that contain only
+;# whitespace are not centered and are instead collapsed. This may save time
+;# when printing them later.
+;#
+;# Arguments:
+;# $Text, $Columns
+;#
+;# Returns:
+;# $Centered_Text
+;###############################################################################
+sub main'Center
+{
+X local ($_, $Columns) = @_;
+X local ($*) = 1;
+X
+X s@^(.*)$@" " x (($Columns - length ($1)) / 2) . $1@eg;
+X s/^[\t ]*$//g;
+X return ($_);
+};
+X
+;###############################################################################
+;# Format_Text_Block
+;#
+;# Formats a text string to be printed to the display or other similar device.
+;# Text in $String will be fomratted such that the following hold:
+;#
+;# + $String contains the (possibly) multi-line text to print. It is
+;# automatically word-wrapped to fit in $Columns.
+;#
+;# + \n'd are maintained and are not folded.
+;#
+;# + $Offset is pre-pended before each separate line of text.
+;#
+;# + If $Offset_Once is $TRUE $Offset will only appear on the first line.
+;# All other lines will be indented to match the amount of whitespace of
+;# $Offset.
+;#
+;# + If $Bullet_Indent is $TRUE $Offset will only be applied to the begining
+;# of lines as they occured in the original $String. Lines that are created
+;# by this routine will always be indented by blank spaces.
+;#
+;# + If $Columns is 0 no word-wrap is done. This might be useful to still
+;# to offset each line in a buffer.
+;#
+;# + If $Split_Expr is supplied the string is split on it. If not supplied
+;# the string is split on " \t\/\-\,\." by default.
+;#
+;# + If $Offset_Blank is $TRUE then empty lines will have $Offset pre-pended
+;# to them. Otherwise, they will still empty.
+;#
+;# This is a realy workhorse routine that I use in many places because of its
+;# veratility.
+;#
+;# Arguments:
+;# $String, $Offset, $Offset_Once, $Bullet_Indent, $Columns, $Split_Expr,
+;# $Offset_Blank
+;#
+;# Returns:
+;# $Buffer
+;###############################################################################
+sub main'Format_Text_Block
+{
+X local ($String, $Real_Offset, $Offset_Once, $Bullet_Indent, $Columns,
+X $Split_Expr, $Offset_Blank) = @_;
+X
+X local ($New_Line, $Line, $Chars_Per_Line, $Space_Offset, $Buffer,
+X $Next_New_Line, $Num_Lines, $Num_Offsets, $Offset);
+X local ($*) = 0;
+X local ($BLANK_TAG) = "__FORMAT_BLANK__";
+X local ($Blank_Offset) = $Real_Offset if ($Offset_Blank);
+X
+X # What should we split on?
+X $Split_Expr = " \\t\\/\\-\\,\\." if (! $Split_Expr);
+X
+X # Pre-process the string - convert blank lines to __FORMAT_BLANK__ sequence
+X $String =~ s/\n\n/\n$BLANK_TAG\n/g;
+X $String =~ s/^\n/$BLANK_TAG\n/g;
+X $String =~ s/\n$/\n$BLANK_TAG/g;
+X
+X # If bad $Columns/$Offset combo or no $Columns make a VERRRYYY wide $Column
+X $Offset = $Real_Offset;
+X $Chars_Per_Line = 16000 if (($Chars_Per_Line = $Columns - length ($Offset)) <= 0);
+X $Space_Offset = " " x length ($Offset);
+X
+X # Get a buffer
+X foreach $Line (split ("\n", $String))
+X {
+X $Offset = $Real_Offset if ($Bullet_Indent);
+X
+X # Find where to split the line
+X if ($Line ne $BLANK_TAG)
+X {
+X $New_Line = "";
+X while ($Line =~ /^([$Split_Expr]*)([^$Split_Expr]+)/)
+X {
+X if (length ("$New_Line$&") >= $Chars_Per_Line)
+X {
+X $Next_New_Line = $+;
+X $New_Line = "$Offset$New_Line$1";
+X $Buffer .= "\n" if ($Num_Lines++);
+X $Buffer .= $New_Line;
+X $Offset = $Space_Offset if (($Offset) && ($Offset_Once));
+X $New_Line = $Next_New_Line;
+X ++$Num_Lines;
+X }
+X else
+X {
+X $New_Line .= $&;
+X };
+X $Line = $';
+X };
+X
+X $Buffer .= "\n" if ($Num_Lines++);
+X $Buffer .= "$Offset$New_Line$Line";
+X $Offset = $Space_Offset if (($Offset) && ($Offset_Once));
+X }
+X
+X else
+X {
+X $Buffer .= "\n$Blank_Offset";
+X };
+X };
+X
+X return ($Buffer);
+X
+};
+X
+1;
+SHAR_EOF
+chmod 0444 libs/strings1.pl ||
+echo 'restore of libs/strings1.pl failed'
+Wc_c="`wc -c < 'libs/strings1.pl'`"
+test 4687 -eq "$Wc_c" ||
+ echo 'libs/strings1.pl: original size 4687, current size' "$Wc_c"
+fi
+# ============= libs/timespec.pl ==============
+if test -f 'libs/timespec.pl' -a X"$1" != X"-c"; then
+ echo 'x - skipping libs/timespec.pl (File already exists)'
+else
+echo 'x - extracting libs/timespec.pl (Text)'
+sed 's/^X//' << 'SHAR_EOF' > 'libs/timespec.pl' &&
+;# NAME
+;# timespec.pl - convert a pre-defined time specifyer to seconds
+;#
+;# AUTHOR
+;# Michael S. Muegel (mmuegel@mot.com)
+;#
+;# RCS INFORMATION
+;# mmuegel
+;# /usr/local/ustart/src/mail-tools/dist/foo/libs/timespec.pl,v 1.1 1993/07/28 08:07:19 mmuegel Exp
+X
+package timespec;
+X
+%TIME_SPEC_TO_SECONDS = ("s", 1,
+X "m", 60,
+X "h", 60 * 60,
+X "d", 60 * 60 * 24
+X );
+X
+$VALID_TIME_SPEC_EXPR = "[" . join ("", keys (%TIME_SPEC_TO_SECONDS)) . "]";
+X
+;###############################################################################
+;# Time_Spec_To_Seconds
+;#
+;# Converts a string of the form:
+;#
+;# (<number>(s|m|h|d))+
+;#
+;# to seconds. The second part of the time spec specifies seconds, minutes,
+;# hours, or days, respectfully. The first part is the number of those untis.
+;# There can be any number of such specifiers. As an example, 1h30m means 1
+;# hour and 30 minutes.
+;#
+;# If the parsing went OK then $Status is 1, $Msg is undefined, and $Seconds
+;# is $Time_Spec converted to seconds. If something went wrong then $Status
+;# is 0 and $Msg explains what went wrong.
+;#
+;# Arguments:
+;# $Time_Spec
+;#
+;# Returns:
+;# $Status, $Msg, $Seconds
+;###############################################################################
+sub main'Time_Spec_To_Seconds
+{
+X $Time_Spec = $_[0];
+X
+X $Seconds = 0;
+X while ($Time_Spec =~ /^(\d+)($VALID_TIME_SPEC_EXPR)/)
+X {
+X $Seconds += $1 * $TIME_SPEC_TO_SECONDS {$2};
+X $Time_Spec = $';
+X };
+X
+X return (0, "error parsing time spec: $Time_Spec") if ($Time_Spec ne "");
+X return (1, "", $Seconds);
+X
+};
+X
+X
+1;
+SHAR_EOF
+chmod 0444 libs/timespec.pl ||
+echo 'restore of libs/timespec.pl failed'
+Wc_c="`wc -c < 'libs/timespec.pl'`"
+test 1609 -eq "$Wc_c" ||
+ echo 'libs/timespec.pl: original size 1609, current size' "$Wc_c"
+fi
+# ============= man/cqueue.1 ==============
+if test ! -d 'man'; then
+ echo 'x - creating directory man'
+ mkdir 'man'
+fi
+if test -f 'man/cqueue.1' -a X"$1" != X"-c"; then
+ echo 'x - skipping man/cqueue.1 (File already exists)'
+else
+echo 'x - extracting man/cqueue.1 (Text)'
+sed 's/^X//' << 'SHAR_EOF' > 'man/cqueue.1' &&
+.TH CQUEUE 1L
+\"
+\" mmuegel
+\" /usr/local/ustart/src/mail-tools/dist/foo/man/cqueue.1,v 1.1 1993/07/28 08:08:25 mmuegel Exp
+\"
+.ds mp \fBcqueue\fR
+.de IB
+.IP \(bu 2
+..
+.SH NAME
+\*(mp - check sendmail queue for problems
+.SH SYNOPSIS
+.IP \*(mp 7
+[ \fB-abdms\fR ] [ \fB-q\fR \fIqueue-dir\fI ] [ \fB-t\fR \fItime\fR ]
+[ \fB-u\fR \fIusers\fR ] [ \fB-w\fR \fIwidth\fR ]
+.SH DESCRIPTION
+Reports on problems in the sendmail queue. With no options this simply
+means listing messages that have been in the queue longer than a default
+period along with a summary of queue mail by host and status message.
+.SH OPTIONS
+.IP \fB-a\fR 14
+Report on all messages in the queue. This is equivalent to saying \fB-t\fR 0s.
+You may like this command so much that you use it as a replacement for
+\fBmqueue\fR. For example:
+.sp 1
+.RS
+.RS
+\fBalias mqueue cqueue -a\fR
+.RE
+.RE
+.IP \fB-b\fR 14
+Also report on bogus queue files. Those are files that
+have data files and no control files or vice versa.
+.IP \fB-d\fR
+Print a detailed report of mail messages that have been queued longer than
+the specified or default time. Information that is presented includes:
+.RS
+.RS
+.IB
+Sendmail queue identifier.
+.IB
+Date the message was first queued.
+.IB
+Sender of the message.
+.IB
+One or more recipients of the message.
+.IB
+An optional status of the message. This usually indicates why the message
+has not been delivered.
+.RE
+.RE
+.IP \fB-m\fR 14
+Mail off the results if any problems were found.
+Normaly results are printed to stdout. If this option
+is specified they are mailed to one or more users. Results
+are not printed to stdout in this case. Results are \fBonly\fR
+mailed if \*(mp found something wrong.
+.IP "\fB-q\fR \fIqueue-dir\fI"
+The sendmail mail queue directory. Default is \fB/usr/spool/mqueue\fR or
+some other site configured value.
+.IP "\fB-t\fR \fItime\fR"
+List messages that have been in the queue longer than
+\fItime\fR. Time should of the form:
+.sp 1
+.RS
+.RS
+(<number>(s|m|h|d))+
+.sp 1
+.RE
+.RE
+.RS 14
+The second portion of the above definition
+specifies seconds, minutes, hours, or
+days, respectfully. The first portion is the number of
+those units. There can be any number of such specifiers.
+As an example, 1h30m means 1 hour and 30 minutes.
+.sp 1
+The default is 2 hours.
+.RE
+.IP \fB-s\fR 14
+Print a summary of messages that have been queued longer than
+the specified or default time. Two separate types of summaries are printed.
+The first summarizes the queue messages by destination host. The host name
+is gleaned from the recipient addresses for each message.
+Thus the actual host names for this summary should be taken with a grain
+of salt since ruleset 0 has not been applied to the address the host was
+taken from nor were MX records consulted. It would be possible to add
+this; however, the execution time of the script would increase
+dramatically. The second summary is by status message.
+.IP "\fB-u\fR \fIusers\fR"
+Specify list of users to send a mail report to other than
+the invoker. This option is only valid when \fB-m\fR has been
+specified. Multiple recipients may be separated by spaces.
+.IP "\fB-w\fR \fIwidth\fR"
+Specify the page width to which the output should tailored. \fIwidth\fR
+should be an integer representing some character position. The default is
+80 or some other site configured value. Output is folded neatly to match
+\fIwidth\fR.
+.SH EXAMPLES
+.nf
+% \fBdate\fR
+Tue Jan 19 12:07:20 CST 1993
+X
+% \fBcqueue -t 21h45m -w 70\fR
+X
+Summary of messages in queue longer than 21:45:00 by destination
+host:
+X
+X Number of
+X Messages Destination Host
+X --------- ----------------
+X 2 cigseg.rtsg.mot.com
+X 1 mnesouth.corp.mot.com
+X ---------
+X 3
+X
+Summary of messages in queue longer than 21:45:00 by status message:
+X
+X Number of
+X Messages Status Message
+X --------- --------------
+X 1 Deferred: Connection refused by mnesouth.corp.mot.com
+X 2 Deferred: Host Name Lookup Failure
+X ---------
+X 3
+X
+Detail of messages in queue longer than 21:45:00 sorted by creation
+date:
+X
+X ID: AA20573
+X Date: 02:09:27 PM 01/18/93
+X Sender: melrose-place-owner@ferkel.ucsb.edu
+X Recipient: pbaker@cigseg.rtsg.mot.com
+X Status: Deferred: Host Name Lookup Failure
+X
+X ID: AA20757
+X Date: 02:11:30 PM 01/18/93
+X Sender: 90210-owner@ferkel.ucsb.edu
+X Recipient: pbaker@cigseg.rtsg.mot.com
+X Status: Deferred: Host Name Lookup Failure
+X
+X ID: AA21110
+X Date: 02:17:01 PM 01/18/93
+X Sender: rd_lap_wg@mdd.comm.mot.com
+X Recipient: jim_mathis@mnesouth.corp.mot.com
+X Status: Deferred: Connection refused by mnesouth.corp.mot.com
+.fi
+.SH AUTHOR
+.nf
+Michael S. Muegel (mmuegel@mot.com)
+UNIX Applications Startup Group
+Corporate Information Office, Schaumburg, IL
+Motorola, Inc.
+.fi
+.SH COPYRIGHT NOTICE
+Copyright 1993, Motorola, Inc.
+.sp 1
+Permission to use, copy, modify and distribute without charge this
+software, documentation, etc. is granted, provided that this
+comment and the author's name is retained. The author nor Motorola assume any
+responsibility for problems resulting from the use of this software.
+.SH SEE ALSO
+.nf
+\fBsendmail(8)\fR
+\fISendmail Installation and Operation Guide\fR.
+.fi
+SHAR_EOF
+chmod 0444 man/cqueue.1 ||
+echo 'restore of man/cqueue.1 failed'
+Wc_c="`wc -c < 'man/cqueue.1'`"
+test 5212 -eq "$Wc_c" ||
+ echo 'man/cqueue.1: original size 5212, current size' "$Wc_c"
+fi
+# ============= man/postclip.1 ==============
+if test -f 'man/postclip.1' -a X"$1" != X"-c"; then
+ echo 'x - skipping man/postclip.1 (File already exists)'
+else
+echo 'x - extracting man/postclip.1 (Text)'
+sed 's/^X//' << 'SHAR_EOF' > 'man/postclip.1' &&
+.TH POSTCLIP 1L
+\"
+\" mmuegel
+\" /usr/local/ustart/src/mail-tools/dist/foo/man/postclip.1,v 1.1 1993/07/28 08:08:25 mmuegel Exp
+\"
+.ds mp \fBpostclip\fR
+.SH NAME
+\*(mp - send only the headers to Postmaster
+.SH SYNOPSIS
+\*(mp [ \fB-v\fR ] [ \fIto\fR ... ]
+.SH DESCRIPTION
+\*(mp will forward non-delivery reports to a postmaster after deleting the body
+of the message. This keeps bounced mail private and helps to avoid disk space problems. \*(mp tries its best to keep as much of the header trail as possible.
+Hopefully only the original body of the message will be filtered. Only messages
+that have a subject that begins with 'Returned mail:' are filtered. This
+ensures that other mail is not accidently mucked with. Finally, note that
+\fBsendmail\fR is used to deliver the message after it has been (possibly)
+filtered. All of the original headers will remain intact.
+.sp 1
+You can use this with any \fBsendmail\fR by modifying the Postmaster alias.
+If you use IDA \fBsendmail\fR you could add the following to <machine>.m4:
+.sp 1
+.RS
+define(POSTMASTERBOUNCE, mailer-errors)
+.RE
+.sp 1
+In the aliases file, add a line similar to the following:
+.sp 1
+.RS
+mailer-errors: "|/usr/local/bin/postclip postmaster"
+.RE
+.SH OPTIONS
+.IP \fB-v\fR
+Be verbose about delivery. Probably only useful when debugging \*(mp.
+.IP \fIto\fR
+A list of one or more e-mail ids to send the modified
+Postmaster messages to. If none are specified postmaster
+is used.
+.SH AUTHOR
+.nf
+Michael S. Muegel (mmuegel@mot.com)
+UNIX Applications Startup Group
+Corporate Information Office, Schaumburg, IL
+Motorola, Inc.
+.fi
+.SH CREDITS
+The original idea to filter Postmaster mail was taken from a script by
+Christopher Davis <ckd@eff.org>.
+.SH COPYRIGHT NOTICE
+Copyright 1992, Motorola, Inc.
+.sp 1
+Permission to use, copy, modify and distribute without charge this
+software, documentation, etc. is granted, provided that this
+comment and the author's name is retained. The author nor Motorola assume any
+responsibility for problems resulting from the use of this software.
+.SH SEE ALSO
+.nf
+\fBsendmail(8)\fR
+.fi
+SHAR_EOF
+chmod 0444 man/postclip.1 ||
+echo 'restore of man/postclip.1 failed'
+Wc_c="`wc -c < 'man/postclip.1'`"
+test 2078 -eq "$Wc_c" ||
+ echo 'man/postclip.1: original size 2078, current size' "$Wc_c"
+fi
+# ============= src/cqueue ==============
+if test ! -d 'src'; then
+ echo 'x - creating directory src'
+ mkdir 'src'
+fi
+if test -f 'src/cqueue' -a X"$1" != X"-c"; then
+ echo 'x - skipping src/cqueue (File already exists)'
+else
+echo 'x - extracting src/cqueue (Text)'
+sed 's/^X//' << 'SHAR_EOF' > 'src/cqueue' &&
+#!/usr/local/ustart/bin/suidperl
+X
+# NAME
+# cqueue - check sendmail queue for problems
+#
+# SYNOPSIS
+# Type cqueue -usage
+#
+# AUTHOR
+# Michael S. Muegel <mmuegel@mot.com>
+#
+# RCS INFORMATION
+# mmuegel
+# /usr/local/ustart/src/mail-tools/dist/foo/src/cqueue,v 1.1 1993/07/28 08:09:02 mmuegel Exp
+X
+# So that date.pl does not yell (Domain/OS version does a ``)
+$ENV{'PATH'} = "";
+X
+# A better getopts routine
+require "newgetopts.pl";
+require "timespec.pl";
+require "mail.pl";
+require "date.pl";
+require "mqueue.pl";
+require "strings1.pl";
+require "elapsed.pl";
+X
+($Script_Name = $0) =~ s/.*\///;
+X
+# Some defaults you may want to change
+$DEF_TIME = "2h";
+$DEF_QUEUE = "/usr/spool/mqueue";
+$DEF_COLUMNS = 80;
+$DATE_FORMAT = "%r %D";
+X
+# Constants that probably should not be changed
+$USAGE = "Usage: $Script_Name [ -abdms ] [ -q queue-dir ] [ -t time ] [ -u user ] [ -w width ]\n";
+$VERSION = "${Script_Name} by mmuegel; 1.1 of 1993/07/28 08:09:02";
+$SWITCHES = "abdmst:u:q:w:";
+$SPLIT_EXPR = '\s,\.@!%:';
+$ADDR_PART_EXPR = '[^!@%]+';
+X
+# Let getopts parse for switches
+$Status = &New_Getopts ($SWITCHES, $USAGE);
+exit (0) if ($Status == -1);
+exit (1) if (! $Status);
+X
+# Check args
+die "${Script_Name}: -u only valid with -m\n" if (($opt_u) && (! $opt_m));
+die "${Script_Name}: -a not valid with -t option\n" if ($opt_a && $opt_t);
+$opt_u = getlogin || (getpwuid ($<))[0] || $ENV{"USER"} || die "${Script_Name}: can not determine who you are!\n" if (! $opt_u);
+X
+# Set defaults
+$opt_t = "0s" if ($opt_a);
+$opt_t = $DEF_TIME if ($opt_t eq "");
+$opt_w = $DEF_COLUMNS if ($opt_w eq "");
+$opt_q = $DEF_QUEUE if ($opt_q eq "");
+$opt_s = $opt_d = 1 if (! ($opt_s || $opt_d));
+X
+# Untaint the users to mail to
+$opt_u =~ /^(.*)$/;
+$Users = $1;
+X
+# Convert time option to seconds and seconds to elapsed form
+die "${Script_Name}: $Msg\n" if (! (($Status, $Msg, $Seconds) = &Time_Spec_To_Seconds ($opt_t))[0]);
+$Elapsed = &Seconds_To_Elapsed ($Seconds, 1);
+$Time_Info = " longer than $Elapsed" if ($Seconds);
+X
+# Get the current time
+$Current_Time = time;
+$Current_Date = &date ($Current_Time, $DATE_FORMAT);
+X
+($Status, $Msg, @Queue_IDs) = &Get_Queue_IDs ($opt_q, 1, @Missing_Control_IDs,
+X @Missing_Data_IDs);
+die "$Script_Name: $Msg\n" if (! $Status);
+X
+# Yell about missing data/control files?
+if ($opt_b)
+{
+X
+X $Report = "\nMessages missing control files:\n\n " .
+X join ("\n ", @Missing_Control_IDs) .
+X "\n"
+X if (@Missing_Control_IDs);
+X
+X $Report .= "\nMessages missing data files:\n\n " .
+X join ("\n ", @Missing_Data_IDs) .
+X "\n"
+X if (@Missing_Data_IDs);
+};
+X
+# See if any mail messages are older than $Seconds
+foreach $Queue_ID (@Queue_IDs)
+{
+X # Get lots of info about this sendmail message via the control file
+X ($Status, $Msg) = &Parse_Control_File ($opt_q, $Queue_ID, *Sender,
+X *Recipients, *Errors_To, *Creation_Time, *Priority, *Status_Message,
+X *Headers);
+X next if ($Status == -1);
+X if (! $Status)
+X {
+X warn "$Script_Name: $Queue_ID: $Msg\n";
+X next;
+X };
+X
+X # Report on message if it is older than $Seconds
+X if ($Current_Time - $Creation_Time >= $Seconds)
+X {
+X # Build summary by host information. Keep track of each host destination
+X # encountered.
+X if ($opt_s)
+X {
+X %Host_Map = ();
+X foreach (@Recipients)
+X {
+X if ((/@($ADDR_PART_EXPR)$/) || (/($ADDR_PART_EXPR)!$ADDR_PART_EXPR$/))
+X {
+X ($Host = $1) =~ tr/A-Z/a-z/;
+X $Host_Map {$Host} = 1;
+X }
+X else
+X {
+X warn "$Script_Name: could not find host part from $_; contact author\n";
+X };
+X };
+X
+X # For each unique target host add to its stats
+X grep ($Host_Queued {$_}++, keys (%Host_Map));
+X
+X # Build summary by message information.
+X $Message_Queued {$Status_Message}++ if ($Status_Message);
+X };
+X
+X # Build long report information for this creation time (there may be
+X # more than one message created at the same time)
+X if ($opt_d)
+X {
+X $Creation_Date = &date ($Creation_Time, $DATE_FORMAT);
+X $Recipient_Info = &Format_Text_Block (join (", ", @Recipients),
+X " Recipient: ", 1, 0, $opt_w, $SPLIT_EXPR);
+X $Time_To_Report {$Creation_Time} .= <<"EOS";
+X
+X ID: $Queue_ID
+X Date: $Creation_Date
+X Sender: $Sender
+$Recipient_Info
+EOS
+X
+X # Add the status message if available to long report
+X if ($Status_Message)
+X {
+X $Time_To_Report {$Creation_Time} .= &Format_Text_Block ($Status_Message,
+X " Status: ", 1, 0, $opt_w, $SPLIT_EXPR) . "\n";
+X };
+X };
+X };
+X
+};
+X
+# Add the summary report by target host?
+if ($opt_s)
+{
+X foreach $Host (sort (keys (%Host_Queued)))
+X {
+X $Host_Report .= &Format_Text_Block ($Host,
+X sprintf (" %-9d ", $Host_Queued{$Host}), 1, 0, $opt_w,
+X $SPLIT_EXPR) . "\n";
+X $Num_Hosts += $Host_Queued{$Host};
+X };
+X if ($Host_Report)
+X {
+X chop ($Host_Report);
+X $Report .= &Format_Text_Block("\nSummary of messages in queue$Time_Info by destination host:\n", "", 0, 0, $opt_w);
+X
+X $Report .= <<"EOS";
+X
+X Number of
+X Messages Destination Host
+X --------- ----------------
+$Host_Report
+X ---------
+X $Num_Hosts
+EOS
+X };
+};
+X
+# Add the summary by message report?
+if ($opt_s)
+{
+X foreach $Message (sort (keys (%Message_Queued)))
+X {
+X $Message_Report .= &Format_Text_Block ($Message,
+X sprintf (" %-9d ", $Message_Queued{$Message}), 1, 0, $opt_w,
+X $SPLIT_EXPR) . "\n";
+X $Num_Messages += $Message_Queued{$Message};
+X };
+X if ($Message_Report)
+X {
+X chop ($Message_Report);
+X $Report .= &Format_Text_Block ("\nSummary of messages in queue$Time_Info by status message:\n", "", 0, 0, $opt_w);
+X
+X $Report .= <<"EOS";
+X
+X Number of
+X Messages Status Message
+X --------- --------------
+$Message_Report
+X ---------
+X $Num_Messages
+EOS
+X };
+};
+X
+# Add the detailed message reports?
+if ($opt_d)
+{
+X foreach $Time (sort { $a <=> $b} (keys (%Time_To_Report)))
+X {
+X $Report .= &Format_Text_Block ("\nDetail of messages in queue$Time_Info sorted by creation date:\n","", 0, 0, $opt_w) if (! $Detailed_Header++);
+X $Report .= $Time_To_Report {$Time};
+X };
+};
+X
+# Now mail or print the report
+if ($Report)
+{
+X $Report .= "\n";
+X if ($opt_m)
+X {
+X ($Status, $Msg) = &Send_Mail ($Users, "sendmail queue report for $Current_Date", $Report, 0);
+X die "${Script_Name}: $Msg" if (! $Status);
+X }
+X
+X else
+X {
+X print $Report;
+X };
+X
+};
+X
+# I am outta here...
+exit (0);
+SHAR_EOF
+chmod 0555 src/cqueue ||
+echo 'restore of src/cqueue failed'
+Wc_c="`wc -c < 'src/cqueue'`"
+test 6647 -eq "$Wc_c" ||
+ echo 'src/cqueue: original size 6647, current size' "$Wc_c"
+fi
+# ============= src/postclip ==============
+if test -f 'src/postclip' -a X"$1" != X"-c"; then
+ echo 'x - skipping src/postclip (File already exists)'
+else
+echo 'x - extracting src/postclip (Text)'
+sed 's/^X//' << 'SHAR_EOF' > 'src/postclip' &&
+#!/usr/local/bin/perl
+X
+# NAME
+# postclip - send only the headers to Postmaster
+#
+# SYNOPSIS
+# postclip [ -v ] [ to ... ]
+#
+# AUTHOR
+# Michael S. Muegel <mmuegel@mot.com>
+#
+# RCS INFORMATION
+# /usr/local/ustart/src/mail-tools/dist/foo/src/postclip,v
+# 1.1 of 1993/07/28 08:09:02
+X
+# We use this to send off the mail
+require "newgetopts.pl";
+require "mail.pl";
+X
+# Get the basename of the script
+($Script_Name = $0) =~ s/.*\///;
+X
+# Some famous constants
+$USAGE = "Usage: $Script_Name [ -v ] [ to ... ]\n";
+$VERSION = "${Script_Name} by mmuegel; 1.1 of 1993/07/28 08:09:02";
+$SWITCHES = "v";
+X
+# Let getopts parse for switches
+$Status = &New_Getopts ($SWITCHES, $USAGE);
+exit (0) if ($Status == -1);
+exit (1) if (! $Status);
+X
+# Who should we send the modified mail to?
+@ARGV = ("postmaster") if (! @ARGV);
+$Users = join (" ", @ARGV);
+@ARGV = ();
+X
+# Suck in the original header and save a few interesting lines
+while (<>)
+{
+X $Buffer .= $_ if (! /^From /);
+X $Subject = $1 if (/^Subject:\s+(.*)$/);
+X $From = $1 if (/^From:\s+(.*)$/);
+X last if (/^$/);
+};
+X
+# Do not filter the message unless it has a subject and the subject indicates
+# it is an NDN
+if ($Subject && ($Subject =~ /^returned mail/i))
+{
+X # Slurp input by paragraph. Keep track of the last time we saw what
+X # appeared to be NDN text. We keep this.
+X $/ = "\n\n";
+X $* = 1;
+X while (<>)
+X {
+X push (@Paragraphs, $_);
+X $Last_Error_Para = $#Paragraphs
+X if (/unsent message follows/i || /was not delivered because/);
+X };
+X
+X # Now save the NDN text into $Buffer
+X $Buffer .= join ("", @Paragraphs [0..$Last_Error_Para]);
+}
+X
+else
+{
+X undef $/;
+X $Buffer .= <>;
+};
+X
+# Send off the (possibly) modified mail
+($Status, $Msg) = &Send_Mail ($Users, "", $Buffer, 0, $opt_v, 1);
+die "$Script_Name: $Msg\n" if (! $Status);
+SHAR_EOF
+chmod 0555 src/postclip ||
+echo 'restore of src/postclip failed'
+Wc_c="`wc -c < 'src/postclip'`"
+test 1836 -eq "$Wc_c" ||
+ echo 'src/postclip: original size 1836, current size' "$Wc_c"
+fi
+exit 0
+
+--
++----------------------------------------------------------------------------+
+| Michael S. Muegel | Internet E-Mail: mmuegel@mot.com |
+| UNIX Applications Startup Group | Moto Dist E-Mail: X10090 |
+| Corporate Information Office | Voice: (708) 576-0507 |
+| Motorola | Fax: (708) 576-4153 |
++----------------------------------------------------------------------------+
+
+ "I'm disturbed, I'm depressed, I'm inadequate -- I've got it all!"
+ -- George from _Seinfeld_
diff --git a/contrib/sendmail/contrib/oldbind.compat.c b/contrib/sendmail/contrib/oldbind.compat.c
new file mode 100644
index 000000000000..1621a7ba5e80
--- /dev/null
+++ b/contrib/sendmail/contrib/oldbind.compat.c
@@ -0,0 +1,79 @@
+/*
+** OLDBIND.COMPAT.C
+**
+** Very old systems do not have res_query(), res_querydomain() or
+** res_search(), so emulate them here.
+**
+** You really ought to be upgrading to a newer version of BIND
+** (4.8.2 or later) rather than be using this.
+**
+** J.R. Oldroyd <jr@inset.com>
+*/
+
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+
+typedef union
+{
+ HEADER qb1;
+ char qb2[PACKETSZ];
+} querybuf;
+
+res_query(dname, class, type, data, datalen)
+ char * dname;
+ int class;
+ int type;
+ char * data;
+ int datalen;
+{
+ int n;
+ querybuf buf;
+
+ n = res_mkquery(QUERY, dname, class, type, (char *) NULL, 0,
+ NULL, (char *) &buf, sizeof buf);
+ n = res_send((char *)&buf, n, data, datalen);
+
+ return n;
+}
+
+res_querydomain(host, dname, class, type, data, datalen)
+ char * host;
+ char * dname;
+ int class;
+ int type;
+ char * data;
+ int datalen;
+{
+ int n;
+ querybuf buf;
+ char dbuf[256];
+
+ strcpy(dbuf, host);
+ if (dbuf[strlen(dbuf)-1] != '.')
+ strcat(dbuf, ".");
+ strcat(dbuf, dname);
+ n = res_mkquery(QUERY, dbuf, class, type, (char *) NULL, 0,
+ NULL, (char *)&buf, sizeof buf);
+ n = res_send((char *) &buf, n, data, datalen);
+
+ return n;
+}
+
+res_search(dname, class, type, data, datalen)
+ char * dname;
+ int class;
+ int type;
+ char * data;
+ int datalen;
+{
+ int n;
+ querybuf buf;
+
+ n = res_mkquery(QUERY, dname, class, type, (char *)NULL, 0,
+ NULL, (char *) &buf, sizeof buf);
+ n = res_send((char *) &buf, n, data, datalen);
+
+ return n;
+}
diff --git a/usr.sbin/sendmail/contrib/passwd-to-alias.pl b/contrib/sendmail/contrib/passwd-to-alias.pl
index 05a51b93496f..05a51b93496f 100644..100755
--- a/usr.sbin/sendmail/contrib/passwd-to-alias.pl
+++ b/contrib/sendmail/contrib/passwd-to-alias.pl
diff --git a/usr.sbin/sendmail/contrib/re-mqueue.pl b/contrib/sendmail/contrib/re-mqueue.pl
index 61aef430e9b8..61aef430e9b8 100644
--- a/usr.sbin/sendmail/contrib/re-mqueue.pl
+++ b/contrib/sendmail/contrib/re-mqueue.pl
diff --git a/usr.sbin/sendmail/contrib/rmail.oldsys.patch b/contrib/sendmail/contrib/rmail.oldsys.patch
index 856fcf1f93eb..856fcf1f93eb 100644
--- a/usr.sbin/sendmail/contrib/rmail.oldsys.patch
+++ b/contrib/sendmail/contrib/rmail.oldsys.patch
diff --git a/contrib/sendmail/doc/changes/Makefile b/contrib/sendmail/doc/changes/Makefile
new file mode 100644
index 000000000000..46447c2e5340
--- /dev/null
+++ b/contrib/sendmail/doc/changes/Makefile
@@ -0,0 +1,13 @@
+# @(#)Makefile 8.1 (Berkeley) 4/13/94
+
+DIR= smm/09.sendmail
+SRCS= changes.me
+MACROS= -me
+
+all: changes.ps
+
+changes.ps: ${SRCS}
+ rm -f ${.TARGET}
+ ${PIC} ${SRCS} | ${ROFF} > ${.TARGET}
+
+.include <bsd.doc.mk>
diff --git a/usr.sbin/sendmail/doc/changes/changes.me b/contrib/sendmail/doc/changes/changes.me
index ee838bd40d78..dbe9bea3cb89 100644
--- a/usr.sbin/sendmail/doc/changes/changes.me
+++ b/contrib/sendmail/doc/changes/changes.me
@@ -1,36 +1,14 @@
-.\" Copyright (c) 1994 Eric P. Allman
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\" Copyright (c) 1994 Eric P. Allman. All rights reserved.
.\" Copyright (c) 1988, 1994
.\" The Regents of the University of California. All rights reserved.
.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
.\"
-.\" @(#)changes.me 8.2 (Berkeley) 5/3/95
+.\" @(#)changes.me 8.7 (Berkeley) 5/19/98
.\"
.\" ditroff -me -Pxx changes.me
.eh '%''Changes in Sendmail Version 8'
diff --git a/contrib/sendmail/doc/intro/Makefile b/contrib/sendmail/doc/intro/Makefile
new file mode 100644
index 000000000000..939cd6c17eb0
--- /dev/null
+++ b/contrib/sendmail/doc/intro/Makefile
@@ -0,0 +1,13 @@
+# @(#)Makefile 8.2 (Berkeley) 2/28/94
+
+DIR= smm/09.sendmail
+SRCS= intro.me
+MACROS= -me
+
+all: intro.ps
+
+intro.ps: ${SRCS}
+ rm -f ${.TARGET}
+ ${PIC} ${SRCS} | ${ROFF} > ${.TARGET}
+
+.include <bsd.doc.mk>
diff --git a/contrib/sendmail/doc/intro/intro.me b/contrib/sendmail/doc/intro/intro.me
new file mode 100644
index 000000000000..5bb5e8947a0b
--- /dev/null
+++ b/contrib/sendmail/doc/intro/intro.me
@@ -0,0 +1,1456 @@
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\" Copyright (c) 1983 Eric P. Allman. All rights reserved.
+.\" Copyright (c) 1988, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\" @(#)intro.me 8.7 (Berkeley) 5/19/98
+.\"
+.\" pic -Pxx intro.me | ditroff -me -Pxx
+.eh 'SMM:9-%''SENDMAIL \*- An Internetwork Mail Router'
+.oh 'SENDMAIL \*- An Internetwork Mail Router''SMM:9-%'
+.nr si 3n
+.if n .ls 2
+.+c
+.(l C
+.sz 14
+SENDMAIL \*- An Internetwork Mail Router
+.sz
+.sp
+Eric Allman*
+.sp 0.5
+.i
+University of California, Berkeley
+Mammoth Project
+.)l
+.sp
+.(l F
+.ce
+ABSTRACT
+.sp \n(psu
+Routing mail through a heterogenous internet presents many new
+problems. Among the worst of these is that of address mapping.
+Historically, this has been handled on an
+.i "ad hoc"
+basis. However,
+this approach has become unmanageable as internets grow.
+.sp \n(psu
+Sendmail acts a unified "post office" to which all mail can be
+submitted. Address interpretation is controlled by a production
+system, which can parse both domain-based addressing and old-style
+.i "ad hoc"
+addresses.
+The production system is powerful
+enough to rewrite addresses in the message header to conform to the
+standards of a number of common target networks, including old
+(NCP/RFC733) Arpanet, new (TCP/RFC822) Arpanet, UUCP, and Phonenet.
+Sendmail also implements an SMTP server, message
+queueing, and aliasing.
+.)l
+.sp 2
+.(f
+*A considerable part of this work
+was done while under the employ
+of the INGRES Project
+at the University of California at Berkeley
+and at Britton Lee.
+.)f
+.pp
+.i Sendmail
+implements a general internetwork mail routing facility,
+featuring aliasing and forwarding,
+automatic routing to network gateways,
+and flexible configuration.
+.pp
+In a simple network,
+each node has an address,
+and resources can be identified
+with a host-resource pair;
+in particular,
+the mail system can refer to users
+using a host-username pair.
+Host names and numbers have to be administered by a central authority,
+but usernames can be assigned locally to each host.
+.pp
+In an internet,
+multiple networks with different characterstics
+and managements
+must communicate.
+In particular,
+the syntax and semantics of resource identification change.
+Certain special cases can be handled trivially
+by
+.i "ad hoc"
+techniques,
+such as
+providing network names that appear local to hosts
+on other networks,
+as with the Ethernet at Xerox PARC.
+However, the general case is extremely complex.
+For example,
+some networks require point-to-point routing,
+which simplifies the database update problem
+since only adjacent hosts must be entered
+into the system tables,
+while others use end-to-end addressing.
+Some networks use a left-associative syntax
+and others use a right-associative syntax,
+causing ambiguity in mixed addresses.
+.pp
+Internet standards seek to eliminate these problems.
+Initially, these proposed expanding the address pairs
+to address triples,
+consisting of
+{network, host, resource}
+triples.
+Network numbers must be universally agreed upon,
+and hosts can be assigned locally
+on each network.
+The user-level presentation was quickly expanded
+to address domains,
+comprised of a local resource identification
+and a hierarchical domain specification
+with a common static root.
+The domain technique
+separates the issue of physical versus logical addressing.
+For example,
+an address of the form
+.q "eric@a.cc.berkeley.arpa"
+describes only the logical
+organization of the address space.
+.pp
+.i Sendmail
+is intended to help bridge the gap
+between the totally
+.i "ad hoc"
+world
+of networks that know nothing of each other
+and the clean, tightly-coupled world
+of unique network numbers.
+It can accept old arbitrary address syntaxes,
+resolving ambiguities using heuristics
+specified by the system administrator,
+as well as domain-based addressing.
+It helps guide the conversion of message formats
+between disparate networks.
+In short,
+.i sendmail
+is designed to assist a graceful transition
+to consistent internetwork addressing schemes.
+.sp
+.pp
+Section 1 discusses the design goals for
+.i sendmail .
+Section 2 gives an overview of the basic functions of the system.
+In section 3,
+details of usage are discussed.
+Section 4 compares
+.i sendmail
+to other internet mail routers,
+and an evaluation of
+.i sendmail
+is given in section 5,
+including future plans.
+.sh 1 "DESIGN GOALS"
+.pp
+Design goals for
+.i sendmail
+include:
+.np
+Compatibility with the existing mail programs,
+including Bell version 6 mail,
+Bell version 7 mail
+[UNIX83],
+Berkeley
+.i Mail
+[Shoens79],
+BerkNet mail
+[Schmidt79],
+and hopefully UUCP mail
+[Nowitz78a, Nowitz78b].
+ARPANET mail
+[Crocker77a, Postel77]
+was also required.
+.np
+Reliability, in the sense of guaranteeing
+that every message is correctly delivered
+or at least brought to the attention of a human
+for correct disposal;
+no message should ever be completely lost.
+This goal was considered essential
+because of the emphasis on mail in our environment.
+It has turned out to be one of the hardest goals to satisfy,
+especially in the face of the many anomalous message formats
+produced by various ARPANET sites.
+For example,
+certain sites generate improperly formated addresses,
+occasionally
+causing error-message loops.
+Some hosts use blanks in names,
+causing problems with
+UNIX mail programs that assume that an address
+is one word.
+The semantics of some fields
+are interpreted slightly differently
+by different sites.
+In summary,
+the obscure features of the ARPANET mail protocol
+really
+.i are
+used and
+are difficult to support,
+but must be supported.
+.np
+Existing software to do actual delivery
+should be used whenever possible.
+This goal derives as much from political and practical considerations
+as technical.
+.np
+Easy expansion to
+fairly complex environments,
+including multiple
+connections to a single network type
+(such as with multiple UUCP or Ether nets
+[Metcalfe76]).
+This goal requires consideration of the contents of an address
+as well as its syntax
+in order to determine which gateway to use.
+For example,
+the ARPANET is bringing up the
+TCP protocol to replace the old NCP protocol.
+No host at Berkeley runs both TCP and NCP,
+so it is necessary to look at the ARPANET host name
+to determine whether to route mail to an NCP gateway
+or a TCP gateway.
+.np
+Configuration should not be compiled into the code.
+A single compiled program should be able to run as is at any site
+(barring such basic changes as the CPU type or the operating system).
+We have found this seemingly unimportant goal
+to be critical in real life.
+Besides the simple problems that occur when any program gets recompiled
+in a different environment,
+many sites like to
+.q fiddle
+with anything that they will be recompiling anyway.
+.np
+.i Sendmail
+must be able to let various groups maintain their own mailing lists,
+and let individuals specify their own forwarding,
+without modifying the system alias file.
+.np
+Each user should be able to specify which mailer to execute
+to process mail being delivered for him.
+This feature allows users who are using specialized mailers
+that use a different format to build their environment
+without changing the system,
+and facilitates specialized functions
+(such as returning an
+.q "I am on vacation"
+message).
+.np
+Network traffic should be minimized
+by batching addresses to a single host where possible,
+without assistance from the user.
+.pp
+These goals motivated the architecture illustrated in figure 1.
+.(z
+.hl
+.ie t \
+\{\
+.ie !"\*(.T"" \
+\{\
+.PS
+boxht = 0.5i
+boxwid = 1.0i
+
+ down
+S: [
+ right
+ S1: box "sender1"
+ move
+ box "sender2"
+ move
+ S3: box "sender3"
+ ]
+ arrow
+SM: box "sendmail" wid 2i ht boxht
+ arrow
+M: [
+ right
+ M1: box "mailer1"
+ move
+ box "mailer2"
+ move
+ M3: box "mailer3"
+ ]
+
+ arrow from S.S1.s to 1/2 between SM.nw and SM.n
+ arrow from S.S3.s to 1/2 between SM.n and SM.ne
+
+ arrow from 1/2 between SM.sw and SM.s to M.M1.n
+ arrow from 1/2 between SM.s and SM.se to M.M3.n
+.PE
+.\}
+.el \
+. sp 18
+.\}
+.el \{\
+.(c
++---------+ +---------+ +---------+
+| sender1 | | sender2 | | sender3 |
++---------+ +---------+ +---------+
+ | | |
+ +----------+ + +----------+
+ | | |
+ v v v
+ +-------------+
+ | sendmail |
+ +-------------+
+ | | |
+ +----------+ + +----------+
+ | | |
+ v v v
++---------+ +---------+ +---------+
+| mailer1 | | mailer2 | | mailer3 |
++---------+ +---------+ +---------+
+.)c
+.\}
+
+.ce
+Figure 1 \*- Sendmail System Structure.
+.hl
+.)z
+The user interacts with a mail generating and sending program.
+When the mail is created,
+the generator calls
+.i sendmail ,
+which routes the message to the correct mailer(s).
+Since some of the senders may be network servers
+and some of the mailers may be network clients,
+.i sendmail
+may be used as an internet mail gateway.
+.sh 1 "OVERVIEW"
+.sh 2 "System Organization"
+.pp
+.i Sendmail
+neither interfaces with the user
+nor does actual mail delivery.
+Rather,
+it collects a message
+generated by a user interface program (UIP)
+such as Berkeley
+.i Mail ,
+MS
+[Crocker77b],
+or MH
+[Borden79],
+edits the message as required by the destination network,
+and calls appropriate mailers
+to do mail delivery or queueing for network transmission\**.
+.(f
+\**except when mailing to a file,
+when
+.i sendmail
+does the delivery directly.
+.)f
+This discipline allows the insertion of new mailers
+at minimum cost.
+In this sense
+.i sendmail
+resembles the Message Processing Module (MPM)
+of [Postel79b].
+.sh 2 "Interfaces to the Outside World"
+.pp
+There are three ways
+.i sendmail
+can communicate with the outside world,
+both in receiving and in sending mail.
+These are using the conventional UNIX
+argument vector/return status,
+speaking SMTP over a pair of UNIX pipes,
+and speaking SMTP over an interprocess(or) channel.
+.sh 3 "Argument vector/exit status"
+.pp
+This technique is the standard UNIX method
+for communicating with the process.
+A list of recipients is sent in the argument vector,
+and the message body is sent on the standard input.
+Anything that the mailer prints
+is simply collected and sent back to the sender
+if there were any problems.
+The exit status from the mailer is collected
+after the message is sent,
+and a diagnostic is printed if appropriate.
+.sh 3 "SMTP over pipes"
+.pp
+The SMTP protocol
+[Postel82]
+can be used to run an interactive lock-step interface
+with the mailer.
+A subprocess is still created,
+but no recipient addresses are passed to the mailer
+via the argument list.
+Instead, they are passed one at a time
+in commands sent to the processes standard input.
+Anything appearing on the standard output
+must be a reply code
+in a special format.
+.sh 3 "SMTP over an IPC connection"
+.pp
+This technique is similar to the previous technique,
+except that it uses a 4.2bsd IPC channel
+[UNIX83].
+This method is exceptionally flexible
+in that the mailer need not reside
+on the same machine.
+It is normally used to connect to a sendmail process
+on another machine.
+.sh 2 "Operational Description"
+.pp
+When a sender wants to send a message,
+it issues a request to
+.i sendmail
+using one of the three methods described above.
+.i Sendmail
+operates in two distinct phases.
+In the first phase,
+it collects and stores the message.
+In the second phase,
+message delivery occurs.
+If there were errors during processing
+during the second phase,
+.i sendmail
+creates and returns a new message describing the error
+and/or returns an status code
+telling what went wrong.
+.sh 3 "Argument processing and address parsing"
+.pp
+If
+.i sendmail
+is called using one of the two subprocess techniques,
+the arguments
+are first scanned
+and option specifications are processed.
+Recipient addresses are then collected,
+either from the command line
+or from the SMTP
+RCPT command,
+and a list of recipients is created.
+Aliases are expanded at this step,
+including mailing lists.
+As much validation as possible of the addresses
+is done at this step:
+syntax is checked, and local addresses are verified,
+but detailed checking of host names and addresses
+is deferred until delivery.
+Forwarding is also performed
+as the local addresses are verified.
+.pp
+.i Sendmail
+appends each address
+to the recipient list after parsing.
+When a name is aliased or forwarded,
+the old name is retained in the list,
+and a flag is set that tells the delivery phase
+to ignore this recipient.
+This list is kept free from duplicates,
+preventing alias loops
+and duplicate messages deliverd to the same recipient,
+as might occur if a person is in two groups.
+.sh 3 "Message collection"
+.pp
+.i Sendmail
+then collects the message.
+The message should have a header at the beginning.
+No formatting requirements are imposed on the message
+except that they must be lines of text
+(i.e., binary data is not allowed).
+The header is parsed and stored in memory,
+and the body of the message is saved
+in a temporary file.
+.pp
+To simplify the program interface,
+the message is collected even if no addresses were valid.
+The message will be returned with an error.
+.sh 3 "Message delivery"
+.pp
+For each unique mailer and host in the recipient list,
+.i sendmail
+calls the appropriate mailer.
+Each mailer invocation sends to all users receiving the message on one host.
+Mailers that only accept one recipient at a time
+are handled properly.
+.pp
+The message is sent to the mailer
+using one of the same three interfaces
+used to submit a message to sendmail.
+Each copy of the message is
+prepended by a customized header.
+The mailer status code is caught and checked,
+and a suitable error message given as appropriate.
+The exit code must conform to a system standard
+or a generic message
+(\c
+.q "Service unavailable" )
+is given.
+.sh 3 "Queueing for retransmission"
+.pp
+If the mailer returned an status that
+indicated that it might be able to handle the mail later,
+.i sendmail
+will queue the mail and try again later.
+.sh 3 "Return to sender"
+.pp
+If errors occur during processing,
+.i sendmail
+returns the message to the sender for retransmission.
+The letter can be mailed back
+or written in the file
+.q dead.letter
+in the sender's home directory\**.
+.(f
+\**Obviously, if the site giving the error is not the originating
+site, the only reasonable option is to mail back to the sender.
+Also, there are many more error disposition options,
+but they only effect the error message \*- the
+.q "return to sender"
+function is always handled in one of these two ways.
+.)f
+.sh 2 "Message Header Editing"
+.pp
+Certain editing of the message header
+occurs automatically.
+Header lines can be inserted
+under control of the configuration file.
+Some lines can be merged;
+for example,
+a
+.q From:
+line and a
+.q Full-name:
+line can be merged under certain circumstances.
+.sh 2 "Configuration File"
+.pp
+Almost all configuration information is read at runtime
+from an ASCII file,
+encoding
+macro definitions
+(defining the value of macros used internally),
+header declarations
+(telling sendmail the format of header lines that it will process specially,
+i.e., lines that it will add or reformat),
+mailer definitions
+(giving information such as the location and characteristics
+of each mailer),
+and address rewriting rules
+(a limited production system to rewrite addresses
+which is used to parse and rewrite the addresses).
+.pp
+To improve performance when reading the configuration file,
+a memory image can be provided.
+This provides a
+.q compiled
+form of the configuration file.
+.sh 1 "USAGE AND IMPLEMENTATION"
+.sh 2 "Arguments"
+.pp
+Arguments may be flags and addresses.
+Flags set various processing options.
+Following flag arguments,
+address arguments may be given,
+unless we are running in SMTP mode.
+Addresses follow the syntax in RFC822
+[Crocker82]
+for ARPANET
+address formats.
+In brief, the format is:
+.np
+Anything in parentheses is thrown away
+(as a comment).
+.np
+Anything in angle brackets (\c
+.q "<\|>" )
+is preferred
+over anything else.
+This rule implements the ARPANET standard that addresses of the form
+.(b
+user name <machine-address>
+.)b
+will send to the electronic
+.q machine-address
+rather than the human
+.q "user name."
+.np
+Double quotes
+(\ "\ )
+quote phrases;
+backslashes quote characters.
+Backslashes are more powerful
+in that they will cause otherwise equivalent phrases
+to compare differently \*- for example,
+.i user
+and
+.i
+"user"
+.r
+are equivalent,
+but
+.i \euser
+is different from either of them.
+.pp
+Parentheses, angle brackets, and double quotes
+must be properly balanced and nested.
+The rewriting rules control remaining parsing\**.
+.(f
+\**Disclaimer: Some special processing is done
+after rewriting local names; see below.
+.)f
+.sh 2 "Mail to Files and Programs"
+.pp
+Files and programs are legitimate message recipients.
+Files provide archival storage of messages,
+useful for project administration and history.
+Programs are useful as recipients in a variety of situations,
+for example,
+to maintain a public repository of systems messages
+(such as the Berkeley
+.i msgs
+program,
+or the MARS system
+[Sattley78]).
+.pp
+Any address passing through the initial parsing algorithm
+as a local address
+(i.e, not appearing to be a valid address for another mailer)
+is scanned for two special cases.
+If prefixed by a vertical bar (\c
+.q \^|\^ )
+the rest of the address is processed as a shell command.
+If the user name begins with a slash mark (\c
+.q /\^ )
+the name is used as a file name,
+instead of a login name.
+.pp
+Files that have setuid or setgid bits set
+but no execute bits set
+have those bits honored if
+.i sendmail
+is running as root.
+.sh 2 "Aliasing, Forwarding, Inclusion"
+.pp
+.i Sendmail
+reroutes mail three ways.
+Aliasing applies system wide.
+Forwarding allows each user to reroute incoming mail
+destined for that account.
+Inclusion directs
+.i sendmail
+to read a file for a list of addresses,
+and is normally used
+in conjunction with aliasing.
+.sh 3 "Aliasing"
+.pp
+Aliasing maps names to address lists using a system-wide file.
+This file is indexed to speed access.
+Only names that parse as local
+are allowed as aliases;
+this guarantees a unique key
+(since there are no nicknames for the local host).
+.sh 3 "Forwarding"
+.pp
+After aliasing,
+recipients that are local and valid
+are checked for the existence of a
+.q .forward
+file in their home directory.
+If it exists,
+the message is
+.i not
+sent to that user,
+but rather to the list of users in that file.
+Often
+this list will contain only one address,
+and the feature will be used for network mail forwarding.
+.pp
+Forwarding also permits a user to specify a private incoming mailer.
+For example,
+forwarding to:
+.(b
+"\^|\|/usr/local/newmail myname"
+.)b
+will use a different incoming mailer.
+.sh 3 "Inclusion"
+.pp
+Inclusion is specified in RFC 733 [Crocker77a] syntax:
+.(b
+:Include: pathname
+.)b
+An address of this form reads the file specified by
+.i pathname
+and sends to all users listed in that file.
+.pp
+The intent is
+.i not
+to support direct use of this feature,
+but rather to use this as a subset of aliasing.
+For example,
+an alias of the form:
+.(b
+project: :include:/usr/project/userlist
+.)b
+is a method of letting a project maintain a mailing list
+without interaction with the system administration,
+even if the alias file is protected.
+.pp
+It is not necessary to rebuild the index on the alias database
+when a :include: list is changed.
+.sh 2 "Message Collection"
+.pp
+Once all recipient addresses are parsed and verified,
+the message is collected.
+The message comes in two parts:
+a message header and a message body,
+separated by a blank line.
+.pp
+The header is formatted as a series of lines
+of the form
+.(b
+ field-name: field-value
+.)b
+Field-value can be split across lines by starting the following
+lines with a space or a tab.
+Some header fields have special internal meaning,
+and have appropriate special processing.
+Other headers are simply passed through.
+Some header fields may be added automatically,
+such as time stamps.
+.pp
+The body is a series of text lines.
+It is completely uninterpreted and untouched,
+except that lines beginning with a dot
+have the dot doubled
+when transmitted over an SMTP channel.
+This extra dot is stripped by the receiver.
+.sh 2 "Message Delivery"
+.pp
+The send queue is ordered by receiving host
+before transmission
+to implement message batching.
+Each address is marked as it is sent
+so rescanning the list is safe.
+An argument list is built as the scan proceeds.
+Mail to files is detected during the scan of the send list.
+The interface to the mailer
+is performed using one of the techniques
+described in section 2.2.
+.pp
+After a connection is established,
+.i sendmail
+makes the per-mailer changes to the header
+and sends the result to the mailer.
+If any mail is rejected by the mailer,
+a flag is set to invoke the return-to-sender function
+after all delivery completes.
+.sh 2 "Queued Messages"
+.pp
+If the mailer returns a
+.q "temporary failure"
+exit status,
+the message is queued.
+A control file is used to describe the recipients to be sent to
+and various other parameters.
+This control file is formatted as a series of lines,
+each describing a sender,
+a recipient,
+the time of submission,
+or some other salient parameter of the message.
+The header of the message is stored
+in the control file,
+so that the associated data file in the queue
+is just the temporary file that was originally collected.
+.sh 2 "Configuration"
+.pp
+Configuration is controlled primarily by a configuration file
+read at startup.
+.i Sendmail
+should not need to be recomplied except
+.np
+To change operating systems
+(V6, V7/32V, 4BSD).
+.np
+To remove or insert the DBM
+(UNIX database)
+library.
+.np
+To change ARPANET reply codes.
+.np
+To add headers fields requiring special processing.
+.lp
+Adding mailers or changing parsing
+(i.e., rewriting)
+or routing information
+does not require recompilation.
+.pp
+If the mail is being sent by a local user,
+and the file
+.q .mailcf
+exists in the sender's home directory,
+that file is read as a configuration file
+after the system configuration file.
+The primary use of this feature is to add header lines.
+.pp
+The configuration file encodes macro definitions,
+header definitions,
+mailer definitions,
+rewriting rules,
+and options.
+.sh 3 Macros
+.pp
+Macros can be used in three ways.
+Certain macros transmit
+unstructured textual information
+into the mail system,
+such as the name
+.i sendmail
+will use to identify itself in error messages.
+Other macros transmit information from
+.i sendmail
+to the configuration file
+for use in creating other fields
+(such as argument vectors to mailers);
+e.g., the name of the sender,
+and the host and user
+of the recipient.
+Other macros are unused internally,
+and can be used as shorthand in the configuration file.
+.sh 3 "Header declarations"
+.pp
+Header declarations inform
+.i sendmail
+of the format of known header lines.
+Knowledge of a few header lines
+is built into
+.i sendmail ,
+such as the
+.q From:
+and
+.q Date:
+lines.
+.pp
+Most configured headers
+will be automatically inserted
+in the outgoing message
+if they don't exist in the incoming message.
+Certain headers are suppressed by some mailers.
+.sh 3 "Mailer declarations"
+.pp
+Mailer declarations tell
+.i sendmail
+of the various mailers available to it.
+The definition specifies the internal name of the mailer,
+the pathname of the program to call,
+some flags associated with the mailer,
+and an argument vector to be used on the call;
+this vector is macro-expanded before use.
+.sh 3 "Address rewriting rules"
+.pp
+The heart of address parsing in
+.i sendmail
+is a set of rewriting rules.
+These are an ordered list of pattern-replacement rules,
+(somewhat like a production system,
+except that order is critical),
+which are applied to each address.
+The address is rewritten textually until it is either rewritten
+into a special canonical form
+(i.e.,
+a (mailer, host, user)
+3-tuple,
+such as {arpanet, usc-isif, postel}
+representing the address
+.q "postel@usc-isif" ),
+or it falls off the end.
+When a pattern matches,
+the rule is reapplied until it fails.
+.pp
+The configuration file also supports the editing of addresses
+into different formats.
+For example,
+an address of the form:
+.(b
+ucsfcgl!tef
+.)b
+might be mapped into:
+.(b
+tef@ucsfcgl.UUCP
+.)b
+to conform to the domain syntax.
+Translations can also be done in the other direction.
+.sh 3 "Option setting"
+.pp
+There are several options that can be set
+from the configuration file.
+These include the pathnames of various support files,
+timeouts,
+default modes,
+etc.
+.sh 1 "COMPARISON WITH OTHER MAILERS"
+.sh 2 "Delivermail"
+.pp
+.i Sendmail
+is an outgrowth of
+.i delivermail .
+The primary differences are:
+.np
+Configuration information is not compiled in.
+This change simplifies many of the problems
+of moving to other machines.
+It also allows easy debugging of new mailers.
+.np
+Address parsing is more flexible.
+For example,
+.i delivermail
+only supported one gateway to any network,
+whereas
+.i sendmail
+can be sensitive to host names
+and reroute to different gateways.
+.np
+Forwarding and
+:include:
+features eliminate the requirement that the system alias file
+be writable by any user
+(or that an update program be written,
+or that the system administration make all changes).
+.np
+.i Sendmail
+supports message batching across networks
+when a message is being sent to multiple recipients.
+.np
+A mail queue is provided in
+.i sendmail.
+Mail that cannot be delivered immediately
+but can potentially be delivered later
+is stored in this queue for a later retry.
+The queue also provides a buffer against system crashes;
+after the message has been collected
+it may be reliably redelivered
+even if the system crashes during the initial delivery.
+.np
+.i Sendmail
+uses the networking support provided by 4.2BSD
+to provide a direct interface networks such as the ARPANET
+and/or Ethernet
+using SMTP (the Simple Mail Transfer Protocol)
+over a TCP/IP connection.
+.sh 2 "MMDF"
+.pp
+MMDF
+[Crocker79]
+spans a wider problem set than
+.i sendmail .
+For example,
+the domain of
+MMDF includes a
+.q "phone network"
+mailer, whereas
+.i sendmail
+calls on preexisting mailers in most cases.
+.pp
+MMDF and
+.i sendmail
+both support aliasing,
+customized mailers,
+message batching,
+automatic forwarding to gateways,
+queueing,
+and retransmission.
+MMDF supports two-stage timeout,
+which
+.i sendmail
+does not support.
+.pp
+The configuration for MMDF
+is compiled into the code\**.
+.(f
+\**Dynamic configuration tables are currently being considered
+for MMDF;
+allowing the installer to select either compiled
+or dynamic tables.
+.)f
+.pp
+Since MMDF does not consider backwards compatibility
+as a design goal,
+the address parsing is simpler but much less flexible.
+.pp
+It is somewhat harder to integrate a new channel\**
+.(f
+\**The MMDF equivalent of a
+.i sendmail
+.q mailer.
+.)f
+into MMDF.
+In particular,
+MMDF must know the location and format
+of host tables for all channels,
+and the channel must speak a special protocol.
+This allows MMDF to do additional verification
+(such as verifying host names)
+at submission time.
+.pp
+MMDF strictly separates the submission and delivery phases.
+Although
+.i sendmail
+has the concept of each of these stages,
+they are integrated into one program,
+whereas in MMDF they are split into two programs.
+.sh 2 "Message Processing Module"
+.pp
+The Message Processing Module (MPM)
+discussed by Postel [Postel79b]
+matches
+.i sendmail
+closely in terms of its basic architecture.
+However,
+like MMDF,
+the MPM includes the network interface software
+as part of its domain.
+.pp
+MPM also postulates a duplex channel to the receiver,
+as does MMDF,
+thus allowing simpler handling of errors
+by the mailer
+than is possible in
+.i sendmail .
+When a message queued by
+.i sendmail
+is sent,
+any errors must be returned to the sender
+by the mailer itself.
+Both MPM and MMDF mailers
+can return an immediate error response,
+and a single error processor can create an appropriate response.
+.pp
+MPM prefers passing the message as a structured object,
+with type-length-value tuples\**.
+.(f
+\**This is similar to the NBS standard.
+.)f
+Such a convention requires a much higher degree of cooperation
+between mailers than is required by
+.i sendmail .
+MPM also assumes a universally agreed upon internet name space
+(with each address in the form of a net-host-user tuple),
+which
+.i sendmail
+does not.
+.sh 1 "EVALUATIONS AND FUTURE PLANS"
+.pp
+.i Sendmail
+is designed to work in a nonhomogeneous environment.
+Every attempt is made to avoid imposing unnecessary constraints
+on the underlying mailers.
+This goal has driven much of the design.
+One of the major problems
+has been the lack of a uniform address space,
+as postulated in [Postel79a]
+and [Postel79b].
+.pp
+A nonuniform address space implies that a path will be specified
+in all addresses,
+either explicitly (as part of the address)
+or implicitly
+(as with implied forwarding to gateways).
+This restriction has the unpleasant effect of making replying to messages
+exceedingly difficult,
+since there is no one
+.q address
+for any person,
+but only a way to get there from wherever you are.
+.pp
+Interfacing to mail programs
+that were not initially intended to be applied
+in an internet environment
+has been amazingly successful,
+and has reduced the job to a manageable task.
+.pp
+.i Sendmail
+has knowledge of a few difficult environments
+built in.
+It generates ARPANET FTP/SMTP compatible error messages
+(prepended with three-digit numbers
+[Neigus73, Postel74, Postel82])
+as necessary,
+optionally generates UNIX-style
+.q From
+lines on the front of messages for some mailers,
+and knows how to parse the same lines on input.
+Also,
+error handling has an option customized for BerkNet.
+.pp
+The decision to avoid doing any type of delivery where possible
+(even, or perhaps especially, local delivery)
+has turned out to be a good idea.
+Even with local delivery,
+there are issues of the location of the mailbox,
+the format of the mailbox,
+the locking protocol used,
+etc.,
+that are best decided by other programs.
+One surprisingly major annoyance in many internet mailers
+is that the location and format of local mail is built in.
+The feeling seems to be that local mail is so common
+that it should be efficient.
+This feeling is not born out by
+our experience;
+on the contrary,
+the location and format of mailboxes seems to vary widely
+from system to system.
+.pp
+The ability to automatically generate a response to incoming mail
+(by forwarding mail to a program)
+seems useful
+(\c
+.q "I am on vacation until late August...." )
+but can create problems
+such as forwarding loops
+(two people on vacation whose programs send notes back and forth,
+for instance)
+if these programs are not well written.
+A program could be written to do standard tasks correctly,
+but this would solve the general case.
+.pp
+It might be desirable to implement some form of load limiting.
+I am unaware of any mail system that addresses this problem,
+nor am I aware of any reasonable solution at this time.
+.pp
+The configuration file is currently practically inscrutable;
+considerable convenience could be realized
+with a higher-level format.
+.pp
+It seems clear that common protocols will be changing soon
+to accommodate changing requirements and environments.
+These changes will include modifications to the message header
+(e.g., [NBS80])
+or to the body of the message itself
+(such as for multimedia messages
+[Postel80]).
+Experience indicates that
+these changes should be relatively trivial to integrate
+into the existing system.
+.pp
+In tightly coupled environments,
+it would be nice to have a name server
+such as Grapvine
+[Birrell82]
+integrated into the mail system.
+This would allow a site such as
+.q Berkeley
+to appear as a single host,
+rather than as a collection of hosts,
+and would allow people to move transparently among machines
+without having to change their addresses.
+Such a facility
+would require an automatically updated database
+and some method of resolving conflicts.
+Ideally this would be effective even without
+all hosts being under
+a single management.
+However,
+it is not clear whether this feature
+should be integrated into the
+aliasing facility
+or should be considered a
+.q "value added"
+feature outside
+.i sendmail
+itself.
+.pp
+As a more interesting case,
+the CSNET name server
+[Solomon81]
+provides an facility that goes beyond a single
+tightly-coupled environment.
+Such a facility would normally exist outside of
+.i sendmail
+however.
+.sh 0 "ACKNOWLEDGEMENTS"
+.pp
+Thanks are due to Kurt Shoens for his continual cheerful
+assistance and good advice,
+Bill Joy for pointing me in the correct direction
+(over and over),
+and Mark Horton for more advice,
+prodding,
+and many of the good ideas.
+Kurt and Eric Schmidt are to be credited
+for using
+.i delivermail
+as a server for their programs
+(\c
+.i Mail
+and BerkNet respectively)
+before any sane person should have,
+and making the necessary modifications
+promptly and happily.
+Eric gave me considerable advice about the perils
+of network software which saved me an unknown
+amount of work and grief.
+Mark did the original implementation of the DBM version
+of aliasing, installed the VFORK code,
+wrote the current version of
+.i rmail ,
+and was the person who really convinced me
+to put the work into
+.i delivermail
+to turn it into
+.i sendmail .
+Kurt deserves accolades for using
+.i sendmail
+when I was myself afraid to take the risk;
+how a person can continue to be so enthusiastic
+in the face of so much bitter reality is beyond me.
+.pp
+Kurt,
+Mark,
+Kirk McKusick,
+Marvin Solomon,
+and many others have reviewed this paper,
+giving considerable useful advice.
+.pp
+Special thanks are reserved for Mike Stonebraker at Berkeley
+and Bob Epstein at Britton-Lee,
+who both knowingly allowed me to put so much work into this
+project
+when there were so many other things I really should
+have been working on.
+.+c
+.ce
+REFERENCES
+.nr ii 1.5i
+.ip [Birrell82]
+Birrell, A. D.,
+Levin, R.,
+Needham, R. M.,
+and
+Schroeder, M. D.,
+.q "Grapevine: An Exercise in Distributed Computing."
+In
+.ul
+Comm. A.C.M. 25,
+4,
+April 82.
+.ip [Borden79]
+Borden, S.,
+Gaines, R. S.,
+and
+Shapiro, N. Z.,
+.ul
+The MH Message Handling System: Users' Manual.
+R-2367-PAF.
+Rand Corporation.
+October 1979.
+.ip [Crocker77a]
+Crocker, D. H.,
+Vittal, J. J.,
+Pogran, K. T.,
+and
+Henderson, D. A. Jr.,
+.ul
+Standard for the Format of ARPA Network Text Messages.
+RFC 733,
+NIC 41952.
+In [Feinler78].
+November 1977.
+.ip [Crocker77b]
+Crocker, D. H.,
+.ul
+Framework and Functions of the MS Personal Message System.
+R-2134-ARPA,
+Rand Corporation,
+Santa Monica, California.
+1977.
+.ip [Crocker79]
+Crocker, D. H.,
+Szurkowski, E. S.,
+and
+Farber, D. J.,
+.ul
+An Internetwork Memo Distribution Facility \*- MMDF.
+6th Data Communication Symposium,
+Asilomar.
+November 1979.
+.ip [Crocker82]
+Crocker, D. H.,
+.ul
+Standard for the Format of Arpa Internet Text Messages.
+RFC 822.
+Network Information Center,
+SRI International,
+Menlo Park, California.
+August 1982.
+.ip [Metcalfe76]
+Metcalfe, R.,
+and
+Boggs, D.,
+.q "Ethernet: Distributed Packet Switching for Local Computer Networks" ,
+.ul
+Communications of the ACM 19,
+7.
+July 1976.
+.ip [Feinler78]
+Feinler, E.,
+and
+Postel, J.
+(eds.),
+.ul
+ARPANET Protocol Handbook.
+NIC 7104,
+Network Information Center,
+SRI International,
+Menlo Park, California.
+1978.
+.ip [NBS80]
+National Bureau of Standards,
+.ul
+Specification of a Draft Message Format Standard.
+Report No. ICST/CBOS 80-2.
+October 1980.
+.ip [Neigus73]
+Neigus, N.,
+.ul
+File Transfer Protocol for the ARPA Network.
+RFC 542, NIC 17759.
+In [Feinler78].
+August, 1973.
+.ip [Nowitz78a]
+Nowitz, D. A.,
+and
+Lesk, M. E.,
+.ul
+A Dial-Up Network of UNIX Systems.
+Bell Laboratories.
+In
+UNIX Programmer's Manual, Seventh Edition,
+Volume 2.
+August, 1978.
+.ip [Nowitz78b]
+Nowitz, D. A.,
+.ul
+Uucp Implementation Description.
+Bell Laboratories.
+In
+UNIX Programmer's Manual, Seventh Edition,
+Volume 2.
+October, 1978.
+.ip [Postel74]
+Postel, J.,
+and
+Neigus, N.,
+Revised FTP Reply Codes.
+RFC 640, NIC 30843.
+In [Feinler78].
+June, 1974.
+.ip [Postel77]
+Postel, J.,
+.ul
+Mail Protocol.
+NIC 29588.
+In [Feinler78].
+November 1977.
+.ip [Postel79a]
+Postel, J.,
+.ul
+Internet Message Protocol.
+RFC 753,
+IEN 85.
+Network Information Center,
+SRI International,
+Menlo Park, California.
+March 1979.
+.ip [Postel79b]
+Postel, J. B.,
+.ul
+An Internetwork Message Structure.
+In
+.ul
+Proceedings of the Sixth Data Communications Symposium,
+IEEE.
+New York.
+November 1979.
+.ip [Postel80]
+Postel, J. B.,
+.ul
+A Structured Format for Transmission of Multi-Media Documents.
+RFC 767.
+Network Information Center,
+SRI International,
+Menlo Park, California.
+August 1980.
+.ip [Postel82]
+Postel, J. B.,
+.ul
+Simple Mail Transfer Protocol.
+RFC821
+(obsoleting RFC788).
+Network Information Center,
+SRI International,
+Menlo Park, California.
+August 1982.
+.ip [Schmidt79]
+Schmidt, E.,
+.ul
+An Introduction to the Berkeley Network.
+University of California, Berkeley California.
+1979.
+.ip [Shoens79]
+Shoens, K.,
+.ul
+Mail Reference Manual.
+University of California, Berkeley.
+In UNIX Programmer's Manual,
+Seventh Edition,
+Volume 2C.
+December 1979.
+.ip [Sluizer81]
+Sluizer, S.,
+and
+Postel, J. B.,
+.ul
+Mail Transfer Protocol.
+RFC 780.
+Network Information Center,
+SRI International,
+Menlo Park, California.
+May 1981.
+.ip [Solomon81]
+Solomon, M., Landweber, L., and Neuhengen, D.,
+.q "The Design of the CSNET Name Server."
+CS-DN-2,
+University of Wisconsin, Madison.
+November 1981.
+.ip [Su82]
+Su, Zaw-Sing,
+and
+Postel, Jon,
+.ul
+The Domain Naming Convention for Internet User Applications.
+RFC819.
+Network Information Center,
+SRI International,
+Menlo Park, California.
+August 1982.
+.ip [UNIX83]
+.ul
+The UNIX Programmer's Manual, Seventh Edition,
+Virtual VAX-11 Version,
+Volume 1.
+Bell Laboratories,
+modified by the University of California,
+Berkeley, California.
+March, 1983.
diff --git a/contrib/sendmail/doc/op/Makefile b/contrib/sendmail/doc/op/Makefile
new file mode 100644
index 000000000000..e8f791a4959c
--- /dev/null
+++ b/contrib/sendmail/doc/op/Makefile
@@ -0,0 +1,13 @@
+# @(#)Makefile 8.2 (Berkeley) 2/28/94
+
+DIR= smm/08.sendmailop
+SRCS= op.me
+MACROS= -me
+
+all: op.ps
+
+op.ps: ${SRCS}
+ rm -f ${.TARGET}
+ ${PIC} ${SRCS} | ${EQN} | ${ROFF} > ${.TARGET}
+
+.include <bsd.doc.mk>
diff --git a/usr.sbin/sendmail/doc/op/op.me b/contrib/sendmail/doc/op/op.me
index 60bc113807b6..fc3290ef2d38 100644
--- a/usr.sbin/sendmail/doc/op/op.me
+++ b/contrib/sendmail/doc/op/op.me
@@ -1,36 +1,14 @@
-.\" Copyright (c) 1983, 1995 Eric P. Allman
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\" Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
.\" Copyright (c) 1983, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
.\"
-.\" @(#)op.me 8.106 (Berkeley) 10/20/97
+.\" @(#)op.me 8.129 (Berkeley) 6/29/98
.\"
.\" eqn op.me | pic | troff -me
.eh 'SMM:08-%''Sendmail Installation and Operation Guide'
@@ -57,7 +35,7 @@
.+c
.(l C
.sz 16
-.b SENDMAIL
+.b SENDMAIL\u\s-6TM\s0\d
.sz 12
.sp
.b "INSTALLATION AND OPERATION GUIDE"
@@ -65,15 +43,19 @@
.sp
.r
Eric Allman
-eric@Sendmail.ORG
+Sendmail, Inc.
+eric@Sendmail.COM
.sp
-Version 8.106
+Version 8.129
.sp
-For Sendmail Version 8.8
+For Sendmail Version 8.9
.)l
+.(f
+Sendmail is a trademark of Sendmail, Inc.
+.)f
.sp 2
.pp
-.i Sendmail
+.i Sendmail \u\s-2TM\s0\d
implements a general purpose internetwork mail routing facility
under the UNIX\(rg
operating system.
@@ -94,22 +76,25 @@ However, there are only a few basic configurations
for most sites,
for which standard configuration files have been supplied.
Most other configurations
-can be built by adjusting an existing configuration files
+can be built by adjusting an existing configuration file
incrementally.
.pp
.i Sendmail
is based on
RFC821 (Simple Mail Transport Protocol),
-RFC822 (Internet Mail Format Protocol),
+RFC822 (Internet Mail Headers Format),
RFC1123 (Internet Host Requirements),
-RFC1521 (MIME),
-RFC1651 (SMTP Service Extensions),
+RFC2045 (MIME),
+RFC1869 (SMTP Service Extensions),
+RFC1652 (SMTP 8BITMIME Extension),
+RFC1870 (SMTP SIZE Extension),
RFC1891 (SMTP Delivery Status Notifications),
RFC1892 (Multipart/Report),
RFC1893 (Mail System Status Codes),
RFC1894 (Delivery Status Notifications),
+RFC1985 (SMTP Service Extension for Remote Message Queue Starting),
and
-RFC1985 (SMTP Service Extension for Remote Message Queue Starting).
+RFC2033 (Local Message Transmission Protocol).
However, since
.i sendmail
is designed to work in a wider world,
@@ -147,19 +132,13 @@ This section is for masochists
and people who must write their own configuration file.
Section six
describes configuration that can be done at compile time.
-Section seven
-gives a brief description of differences
-in this version of
-.i sendmail .
The appendixes give a brief
but detailed explanation of a number of features
not described in the rest of the paper.
.pp
-.b WARNING:
-Several major changes were introduced in version 8.7.
-You should not attempt to use this document
-for prior versions of
-.i sendmail .
+.\"XXX
+.b DISCLAIMER:
+This documentation is under modification.
.bp
.rs
.sp |4i
@@ -171,7 +150,12 @@ replace it with a blank sheet for double-sided output.
.pp
There are two basic steps to installing
.i sendmail .
-The hard part is to build the configuration table.
+First, you have to compile and install the binary.
+If
+.i sendmail
+has already been ported to your operating system
+that should be simple.
+Second, you must build a run-time configuration file.
This is a file that
.i sendmail
reads when it starts up
@@ -179,11 +163,9 @@ that describes the mailers it knows about,
how to parse addresses,
how to rewrite the message header,
and the settings of various options.
-Although the configuration table is quite complex,
+Although the configuration file can be quite complex,
a configuration can usually be built
-by adjusting an existing off-the-shelf configuration.
-The second part is actually doing the installation,
-i.e., creating the necessary files, etc.
+using an M4-based configuration language.
.pp
The remainder of this section will describe the installation of
.i sendmail
@@ -208,20 +190,76 @@ All
source is in the
.i src
subdirectory.
-If you are running on a 4.4BSD system,
-compile by typing
-.q make .
-On other systems, you may have to make some other adjustments.
-On most systems,
-you can do the appropriate compilation by typing
+To compile sendmail,
+.q cd
+into the
+.i src
+directory and type
.(b
-sh makesendmail
+\&./Build
.)b
-This will leave the binary in an appropriately named subdirectory.
+This will leave the binary in an appropriately named subdirectory,
+e.g.,
+obj.BSD-OS.2.1.i386.
It works for multiple object versions
compiled out of the same directory.
+.sh 3 "Tweaking the Build Invocation"
+.pp
+You can give parameters on the
+.i Build
+command.
+In most cases these are only used when the
+.i obj.*
+directory is first created.
+These commands include:
+.nr ii 0.5i
+.ip "\-L \fIlibdirs\fP"
+A list of directories to search for libraries.
+.ip "\-I \fIincdirs\fP"
+A list of directories to search for include files.
+.ip "\-E \fIenvar\fP=\fIvalue\fP"
+Set an environment variable to an indicated
+.i value
+before compiling.
+This is normally used to set an ABI on Irix.
+.ip "\-c"
+Create a new
+.i obj.*
+tree before running.
+.ip "\-f \fIsiteconfig\fP"
+Read the indicated site configuration file.
+If this parameter is not specified,
+.i Build
+includes
+.i all
+of the files
+.i $BUILDTOOLS/Site/site.$oscf.m4
+and
+.i $BUILDTOOLS/Site/site.config.m4 ,
+where $BUILDTOOLS is normally
+.i \&../BuildTools
+and $oscf is the same name as used on the
+.i obj.*
+directory.
+See below for a description of the site configuration file.
+.ip "\-S"
+Skip auto-configuration.
+.i Build
+will avoid auto-detecting libraries if this is set.
+All libraries and map definitions must be specified
+in the site configuration file.
+.lp
+Any other parameters are passed to the
+.i make
+program.
+.sh 3 "Creating a Site Configuration File"
+.\"XXX
+.pp
+(This section is not yet complete.
+For now, see the file BuildTools/README for details.)
.sh 3 "Tweaking the Makefile"
.pp
+.b "XXX This should all be in the Site Configuration File section."
.i Sendmail
supports two different formats
for the local (on disk) version of databases,
@@ -237,16 +275,17 @@ This was the preferred format prior to 4.4BSD.
It allows such complex things as multiple databases
and closing a currently open database.
.ip NEWDB
-The new database package from Berkeley.
+The Berkeley DB package.
If you have this, use it.
It allows
long records,
multiple open databases,
real in-memory caching,
and so forth.
-You can define this in conjunction with one of the other two;
+You can define this in conjunction with
+.sm NDBM ;
if you do,
-old databases are read,
+old alias databases are read,
but when a new database is created it will be in NEWDB format.
As a nasty hack,
if you have NEWDB, NDBM, and NIS defined,
@@ -284,18 +323,19 @@ unless you are porting to a new environment.
After making the local system configuration described above,
You should be able to compile and install the system.
The script
-.q makesendmail
+.q Build
is the best approach on most systems:
.(b
-sh makesendmail
+\&./Build
.)b
This will use
.i uname (1)
-to select the correct Makefile for your environment.
+to create a custom Makefile for your environment.
.pp
-You may be able to install using
+If you are installing in the standard places,
+you should be able to install using
.(b
-sh makesendmail install
+\&./Build install
.)b
This should install the binary in
/usr/\*(SD
@@ -362,11 +402,9 @@ These can be literal host names
when the hosts are gateways
or more general descriptions
(such as
-.q "tcpproto.mc"
+.q "generic-solaris2.mc"
as a general description of an SMTP-connected host
-or
-.q "uucpproto.mc"
-as a general description of a UUCP-connected host).
+running Solaris 2.x.
Files ending
.b \&.mc
(``Master Configuration'')
@@ -379,12 +417,8 @@ The general structure of these files is described below.
Site-dependent subdomain descriptions.
These are tied to the way your organization wants to do addressing.
For example,
-.b domain/cs.exposed.m4
-is our description for hosts in the CS.Berkeley.EDU subdomain
-that want their individual hostname to be externally visible;
-.b domain/cs.hidden.m4
-is the same except that the hostname is hidden
-(everything looks like it comes from CS.Berkeley.EDU).
+.b domain/CS.Berkeley.EDU.m4
+is our description for hosts in the CS.Berkeley.EDU subdomain.
These are referenced using the
.sm DOMAIN
.b m4
@@ -447,24 +481,6 @@ build process.
You shouldn't have to mess with these.
.ip siteconfig
Local UUCP connectivity information.
-They normally contain lists of site information, for example:
-.(b
-SITE(contessa)
-SITE(hoptoad)
-SITE(nkainc)
-SITE(well)
-.)b
-They are referenced using the SITECONFIG macro:
-.(b
-SITECONFIG(site.config.file, name_of_site, X)
-.)b
-where
-.i X
-is the macro/class name to use.
-It can be U
-(indicating locally connected hosts)
-or one of W, X, or Y
-for up to three remote UUCP hubs.
This directory has been supplanted by the mailertable feature;
any new configurations should use that feature to do UUCP
(and other) routing.
@@ -474,16 +490,14 @@ If you are in a new domain
you will probably want to create a
cf/domain
file for your domain.
-This consists primarily of relay definitions:
+This consists primarily of relay definitions
+and features you want enabled site-wide:
for example, Berkeley's domain definition
defines relays for
-BitNET,
-CSNET,
+BitNET
and UUCP.
-Of these,
-only the UUCP relay is particularly specific
-to Berkeley.
-All of these are internet-style domain names.
+These are specific to Berkeley,
+and should be fully-qualified internet-style domain names.
Please check to make certain they are reasonable for your domain.
.pp
Subdomains at Berkeley are also represented in the
@@ -491,13 +505,14 @@ cf/domain
directory.
For example,
the domain
-cs-exposed
-is the Computer Science subdomain with the local hostname shown
-to other users;
-cs-hidden
-makes users appear to be from the CS.Berkeley.EDU subdomain
-(with no local host information included).
-You will probably have to update this directory
+CS.Berkeley.EDU
+is the Computer Science subdomain,
+EECS.Berkeley.EDU
+is the Electrical Engineering and Computer Sciences subdomain,
+and
+S2K.Berkeley.EDU
+is the Sequoia 2000 subdomain.
+You will probably have to add an entry to this directory
to be appropriate for your domain.
.pp
You will have to use or create
@@ -554,11 +569,12 @@ and I've also seen it in
and
.b /etc/mail .
If you want to move this file,
-change
-.i src/conf.h .
+add -D_PATH_SENDMAILCF=\e"/file/name\e"
+to the flags passed to the C compiler.
+Moving this file is not recommended:
+other programs and scripts know of this location.
.)f
-This and /etc/sendmail.pid
-are the only non-library file names compiled into
+This is the only non-library file name compiled into
.i sendmail \**.
.(f
\**The system libraries can reference other files;
@@ -597,7 +613,9 @@ command should just be a link to
in a fashion similar to
.i newaliases .
This command lists the status of the last mail transaction
-with all remote hosts.
+with all remote hosts. The
+.b \-v
+flag will prevent the status display from being truncated.
It functions only when the
.b HostStatusDirectory
option is set.
@@ -648,38 +666,21 @@ You should extend this file with any aliases that are apropos to your system.
.pp
Normally
.i sendmail
-looks at a version of these files maintained by the
-.i dbm \|(3)
-or
-.i db \|(3)
-routines.
-These are stored either in
+looks at a database version of the files,
+stored either in
.q /etc/aliases.dir
and
.q /etc/aliases.pag
or
.q /etc/aliases.db
depending on which database package you are using.
-These can initially be created as empty files,
-but they will have to be initialized promptly.
-These should be mode 644:
-.(b
-cp /dev/null /etc/aliases.dir
-cp /dev/null /etc/aliases.pag
-chmod 644 /etc/aliases.*
-newaliases
-.)b
-The
-.i db
-routines preset the mode reasonably,
-so this step can be skipped.
The actual path of this file
is defined in the
.b AliasFile
option of the
.i sendmail.cf
file.
-.sh 3 "/etc/rc"
+.sh 3 "/etc/rc or /etc/init.d/sendmail"
.pp
It will be necessary to start up the
.i sendmail
@@ -695,7 +696,11 @@ Add the following lines to
(or
.q /etc/rc.local
as appropriate)
-in the area where it is starting up the daemons:
+in the area where it is starting up the daemons
+on a BSD-base system,
+or on a System-V-based system
+in one of the startup files, typically
+.q /etc/init.d/sendmail :
.(b
if [ \-f /usr/\*(SD/sendmail \-a \-f /etc/sendmail.cf ]; then
(cd /var/spool/mqueue; rm \-f [lnx]f*)
@@ -722,9 +727,10 @@ causes it to run the queue every half hour.
Some people use a more complex startup script,
removing zero length qf files and df files for which there is no qf file.
For example, see Figure 1
-for an example of a complex startup script.
+for an example of a complex script which does this clean up.
.(z
.hl
+#!/bin/sh
# remove zero length qf files
for qffile in qf*
do
@@ -746,8 +752,11 @@ do
echo \-n " <recovering: $tffile>" > /dev/console
mv $tffile $qffile
else
- echo \-n " <extra: $tffile>" > /dev/console
- rm \-f $tffile
+ if [ \-f $tffile ]
+ then
+ echo \-n " <extra: $tffile>" > /dev/console
+ rm \-f $tffile
+ fi
fi
done
# remove df files with no corresponding qf files
@@ -763,7 +772,10 @@ done
# announce files that have been saved during disaster recovery
for xffile in [A-Z]f*
do
- echo \-n " <panic: $xffile>" > /dev/console
+ if [ \-f $xffile ]
+ then
+ echo \-n " <panic: $xffile>" > /dev/console
+ fi
done
.sp
.ce
@@ -788,7 +800,7 @@ cp lib/sendmail.hf /usr/lib
.)b
The actual path of this file
is defined in the
-.b H
+.b HelpFile
option of the
.i sendmail.cf
file.
@@ -1081,11 +1093,12 @@ If this option is set,
you probably want to set the
.b MinQueueAge
option as well and run the queue fairly frequently;
-this will cause hosts that are skipped because another
+this way jobs that are skipped because another
.i sendmail
-instance is talking to it to be tried again soon.
+is talking to the same host will be tried again quickly
+rather than being delayed for a long time.
.pp
-The disk based host information is stored in a subdirectory of of the
+The disk based host information is stored in a subdirectory of the
.b mqueue
directory called
.b \&.hoststat \**.
@@ -1135,7 +1148,13 @@ is controlled by the service switch.
If the host operating system supports such a switch
.i sendmail
will use the native version.
-Ultrix, Solaris, and DEC OSF/1 are examples of such systems.
+Ultrix, Solaris, and DEC OSF/1 are examples of such systems\**.
+.(f
+\**HP-UX 10 has service switch support,
+but since the APIs are apparently not available in the libraries
+.i sendmail
+does not use the native service switch in this release.
+.)f
.pp
If the underlying operating system does not support a service switch
(e.g., SunOS, HP-UX, BSD)
@@ -1144,7 +1163,7 @@ then
will provide a stub implementation.
The
.b ServiceSwitchFile
-option points to the name of a file that has the service definitions
+option points to the name of a file that has the service definitions.
Each line has the name of a service
and the possible implementations of that service.
For example, the file:
@@ -1190,14 +1209,14 @@ which must resolve to a
triple.
If the flags selected by the
.i mailer
-includes the
+include the
.b A
(aliasable) flag,
the
.i user
part of the triple is looked up as the key
(i.e., the left hand side)
-into the alias database
+into the alias database.
If there is a match, the address is deleted from the send queue
and all addresses on the right hand side of the alias
are added in place of the alias that was found.
@@ -1238,15 +1257,17 @@ The second form is processed by the
.(f
\**The
.i gdbm
-package probably works as well.
+package does not work.
.)f
+or the Berkeley DB library.
+This form is in the file
+.i /etc/aliases.db
+(if using NEWDB)
or
-.i db \|(3)
-library.
-This form is in the files
.i /etc/aliases.dir
and
-.i /etc/aliases.pag.
+.i /etc/aliases.pag
+(if using NDBM).
This is the form that
.i sendmail
actually uses to resolve aliases.
@@ -1255,7 +1276,7 @@ This technique is used to improve performance.
The control of search order is actually set by the service switch.
Essentially, the entry
.(b
-OAswitch:aliases
+O AliasFile=switch:aliases
.)b
is always added as the first alias entry;
also, the first alias file name without a class
@@ -1266,7 +1287,7 @@ will be used as the name of the file for a ``files'' entry
in the aliases switch.
For example, if the configuration file contains
.(b
-OA/etc/aliases
+O AliasFile=/etc/aliases
.)b
and the service switch contains
.(b
@@ -1281,8 +1302,8 @@ You can also use
alias files.
For example, the specification:
.(b
-OA/etc/aliases
-OAnis:mail.aliases@my.nis.domain
+O AliasFile=/etc/aliases
+O AliasFile=nis:mail.aliases@my.nis.domain
.)b
will first search the /etc/aliases file
and then the map named
@@ -1305,12 +1326,21 @@ exactly like a
.b K
line \(em for example:
.(b
-OAnis:\-N mail.aliases@my.nis.domain
+O AliasFile=nis:\-N mail.aliases@my.nis.domain
.)b
will search the appropriate NIS map and always include null bytes in the key.
+Also:
+.(b
+O AliasFile=nis:\-f mail.aliases@my.nis.domain
+.)b
+will prevent sendmail from downcasing the key before the alias lookup.
.sh 3 "Rebuilding the alias database"
.pp
-The DB or DBM version of the database
+The
+.i hash
+or
+.i dbm
+version of the database
may be rebuilt explicitly by executing the command
.(b
newaliases
@@ -1471,7 +1501,7 @@ will be redirected to the specified accounts.
Actually, the configuration file defines a sequence of filenames to check.
By default, this is the user's .forward file,
but can be defined to be more generally using the
-.b J
+.b ForwardPath
option.
If you change this,
you will have to inform your user base of the change;
@@ -1500,7 +1530,7 @@ It is only used if the
.b UseErrorsTo
option is set.
.pp
-The Errors-To: header is official deprecated
+The Errors-To: header is officially deprecated
and will go away in a future release.
.sh 3 "Apparently-To:"
.pp
@@ -1516,8 +1546,6 @@ option.
One of the possible actions is to add an
.q "Apparently-To:"
header line for any recipients it is aware of.
-This is not put in as a standard recipient line
-to warn any recipients that the list is not complete.
.pp
The Apparently-To: header is non-standard
and is deprecated.
@@ -2055,6 +2083,11 @@ The timeout waiting for a reply to an IDENT query
.(f
\**On some systems the default is zero to turn the protocol off entirely.
.)f
+.ip hoststatus
+How long status information about a host
+(e.g., host down)
+will be cached before it is considered stale
+[30m, unspecified].
.lp
For compatibility with old configuration files,
if no
@@ -2351,15 +2384,17 @@ The default using a standard configuration table is level 9.
The levels are as follows:
.nr ii 0.5i
.ip 0
-No logging.
+Minimal logging.
.ip 1
Serious system failures and potential security problems.
.ip 2
Lost communications (network problems) and protocol failures.
.ip 3
-Other serious failures.
+Other serious failures, malformed addresses, transient forward/include
+errors, connection timeouts.
.ip 4
-Minor failures.
+Minor failures, out of date alias databases, connection rejections
+via check_ rulesets.
.ip 5
Message collection statistics.
.ip 6
@@ -2374,7 +2409,16 @@ Messages being deferred
(due to a host being down, etc.).
.ip 10
Database expansion (alias, forward, and userdb lookups).
+.ip 11
+NIS errors and end of job processing.
.ip 12
+Logs all SMTP connections.
+.ip 13
+Log bad user shells, files with improper permissions, and other
+questionable situations.
+.ip 14
+Logs refused connections.
+.ip 15
Log all incoming and outgoing SMTP commands.
.ip 20
Logs attempts to run locked queue files.
@@ -2390,28 +2434,38 @@ No normal site would ever set these.
.pp
The modes used for files depend on what functionality you want
and the level of security you require.
+In many cases
+.i sendmail
+does careful checking of the modes
+of files and directories
+to avoid accidental compromise;
+if you want to make it possible to have group-writable support files
+you may need to use the
+.b DontBlameSendmail
+option to turn off some of these checks.
.sh 3 "To suid or not to suid?"
.pp
.i Sendmail
-can safely be made
+is normally installed
setuid to root.
At the point where it is about to
.i exec \|(2)
a mailer,
-it checks to see if the userid is zero;
+it checks to see if the userid is zero (root);
if so,
it resets the userid and groupid to a default
(set by the
-.b u
-and
-.b g
-options).
-(This can be overridden
+.b U=
+equate in the mailer line;
+if that is not set, the
+.b DefaultUser
+option is used).
+This can be overridden
by setting the
.b S
flag to the mailer
for mailers that are trusted
-and must be called as root.)
+and must be called as root.
However,
this will cause mail processing
to be accounted
@@ -2439,62 +2493,174 @@ Also, this isn't a guarantee of security:
for example,
root occasionally sends mail,
and the daemon often runs as root.
-.sh 3 "Should my alias database be writable?"
-.pp
-At Berkeley
-we have the alias database
-(/etc/aliases*)
-mode 644.
-While this is not as flexible as if the database
-were more 666, it avoids potential security problems
-with a globally writable database.
+Note however that
+.i sendmail
+must run as root in order to create the SMTP listener socket.
.pp
-The database that
+A middle ground is to make
.i sendmail
-actually used
-is represented by the two files
-.i aliases.dir
-and
-.i aliases.pag
-(both in /etc)
-(or
-.i aliases.db
-if you are running with the new Berkeley database primitives).
-The mode on these files should match the mode
-on /etc/aliases.
-If
-.i aliases
-is writable
-and the
-DBM
-files
-(\c
-.i aliases.dir
+setuid to root,
+but set the
+.b RunAsUser
+option.
+This causes
+.i sendmail
+to become the indicated user as soon as it has done the startup
+that requires root privileges
+(primarily, opening the
+.sm SMTP
+socket).
+If you use
+.b RunAsUser ,
+the queue directory
+(normally
+.i /var/spool/mqueue )
+should be owned by that user,
+and all files and databases
+(including user
+.i \&.forward
+files,
+alias files,
+:include: files,
+and external databases)
+must be readable by that user.
+.b RunAsUser
+is probably best suited for firewall configurations
+that don't have regular user logins.
+.sh 3 "Turning off security checks"
+.pp
+.i Sendmail
+is very particular about the modes of files that it reads or writes.
+For example, by default it will refuse to read most files
+that are group writable
+on the grounds that they might have been tampered with
+by someone other than the owner;
+it will even refuse to read files in group writable directories.
+.pp
+If you are
+.i quite
+sure that your configuration is safe and you want
+.i sendmail
+to avoid these security checks,
+you can turn off certain checks using the
+.b DontBlameSendmail
+option.
+This option takes one or more names that disable checks.
+In the descriptions that follow,
+.q "unsafe directory"
+means a directory that is writable by anyone other than the owner.
+The values are:
+.nr ii 0.5i
+.ip Safe
+No special handling.
+.ip AssumeSafeChown
+Assume that the
+.i chown
+system call is restricted to root.
+Since some versions of Unix permit regular users
+to give away their files to other users on some filesystems,
+.i sendmail
+often cannot assume that a given file was created by the owner,
+particularly when it is in a writable directory.
+You can set this flag if you know that file giveaway is restricted
+on your system.
+.ip ClassFileInUnsafeDirPath
+When reading class files (using the
+.b F
+line in the configuration file),
+allow files that are in unsafe directories.
+.ip ErrorHeaderInUnsafeDirPath
+Allow the file named in the
+.b ErrorHeader
+option to be in an unsafe directory.
+.ip GroupWritableDirPathSafe
+Change the definition of
+.q "unsafe directory"
+to consider group-writable directories to be safe.
+World-writable directories are always unsafe.
+.ip GroupWritableForwardFileSafe
+Accept group-writable
+.i \&.forward
+files.
+.ip GroupWritableIncludeFileSafe
+Accept group-writable
+.i :include:
+files.
+.ip GroupWritableAliasFile
+Allow group-writable alias files.
+.ip HelpFileInUnsafeDirPath
+Allow the file named in the
+.b HelpFile
+option to be in an unsafe directory.
+.ip WorldWritableAliasFile
+Accept world-writable alias files.
+.ip ForwardFileInGroupWritableDirPath
+Allow
+.i \&.forward
+files in group writable directories.
+.ip IncludeFileInGroupWritableDirPath
+Allow
+.i :include:
+files in group writable directories.
+.ip ForwardFileInUnsafeDirPath
+Allow
+.i \&.forward
+files in unsafe directories.
+.ip IncludeFileInUnsafeDirPath
+Allow
+.i :include:
+files in unsafe directories.
+.ip ForwardFileInUnsafeDirPathSafe
+Allow a
+.i \&.forward
+file that is in an unsafe directory to include references
+to program and files.
+.ip IncludeFileInUnsafeDirPathSafe
+Allow a
+.i :include:
+file that is in an unsafe directory to include references
+to program and files.
+.ip MapInUnsafeDirPath
+Allow maps (e.g.,
+.i hash ,
+.i btree ,
and
-.i aliases.pag )
-are not,
-users will be unable to reflect their desired changes
-through to the actual database.
-However,
-if
-.i aliases
-is read-only
-and the DBM files are writable,
-a slightly sophisticated user
-can arrange to steal mail anyway.
-.pp
-If your DBM files are not writable by the world
-or you do not have auto-rebuild enabled
-(with the
-.b AutoRebuildAliases
-option),
-then you must be careful to reconstruct the alias database
-each time you change the text version:
-.(b
-newaliases
-.)b
-If this step is ignored or forgotten
-any intended changes will also be ignored or forgotten.
+.i dbm
+files)
+in unsafe directories.
+.ip LinkedAliasFileInWritableDir
+Allow an alias file that is a link in a writable directory.
+.ip LinkedClassFileInWritableDir
+Allow class files that are links in writable directories.
+.ip LinkedForwardFileInWritableDir
+Allow
+.i \&.forward
+files that are links in writable directories.
+.ip LinkedIncludeFileInWritableDir
+Allow
+.i :include:
+files that are links in writable directories.
+.ip LinkedMapInWritableDir
+Allow map files that are links in writable directories.
+.ip LinkedServiceSwitchFileInWritableDir
+Allow the service switch file to be a link
+even if the directory is writable.
+.ip FileDeliveryToHardLink
+Allow delivery to files that are hard links.
+.ip FileDeliveryToSymLink
+Allow delivery to files that are symbolic links.
+.ip RunProgramInUnsafeDirPath
+Go ahead and run programs that are in writable directories.
+.ip RunWritableProgram
+Go ahead and run programs that are group- or world-writable.
+.ip WriteMapToHardLink
+Allow writes to maps that are hard links.
+.ip WriteMapToSymLink
+Allow writes to maps that are symbolic links.
+.ip WriteStatsToHardLink
+Allow the status file to be a hard link.
+.ip WriteStatsToSymLink
+Allow the status file to be a symbolic link.
.sh 2 "Connection Caching"
.pp
When processing the queue,
@@ -2558,7 +2724,12 @@ which should be created.
only uses two entries:
.b hosts
and
-.b aliases .
+.b aliases ,
+although system routines may use other services
+(notably the
+.b passwd
+service for user name lookups by
+.i getpwname ).
.pp
However, some systems (such as SunOS)
will do DNS lookups
@@ -2691,6 +2862,12 @@ If you create a directory such as /var/forward,
it should be mode 1777
(that is, the sticky bit should be set).
Users should create the files mode 644.
+Note that you must use the
+forwardfileinunsafedirpath and
+forwardfileinunsafedirpathsafe
+flags with the DontBlameSendmail option
+to allow forward files in a world
+writable directory.
.sh 2 "Free Space"
.pp
On systems that have one of the system calls in the
@@ -2862,7 +3039,7 @@ Expansions of the form
.b $& \c
.i x
are performed at run time using a somewhat less general algorithm.
-This for is intended only for referencing internally defined macros
+This is intended only for referencing internally defined macros
such as
.b $h
that are changed at runtime.
@@ -2969,9 +3146,9 @@ and
would become
.q vangogh.CS.Berkeley.EDU.
.i Sendmail
-recognizes it's numeric IP address
+recognizes its numeric IP address
without calling the name server
-and replaces it with it's canonical name.
+and replaces it with its canonical name.
.pp
The
.b $(
@@ -3001,11 +3178,16 @@ then becomes
the substitution for this rule.
The
.b $>
-syntax can only be used at the beginning of the right hand side;
-it can be only be preceded by
-.b $@
-or
-.b $: .
+syntax expands everything after the ruleset name
+to the end of the replacement string
+and then passes that as the initial input to the ruleset.
+Recursive calls are allowed.
+For example,
+.(b
+$>0 $>3 $1
+.)b
+expands $1, passes that to ruleset 3, and then passes the result
+of ruleset 3 to ruleset 0.
.pp
The
.b $#
@@ -3123,9 +3305,9 @@ and
are processed.
.sh 3 "Semantics of rewriting rule sets"
.pp
-There are five rewriting sets
+There are six rewriting sets
that have specific semantics.
-Four of these are related as depicted by figure 1.
+Five of these are related as depicted by figure 1.
.(z
.hl
.ie n \{\
@@ -3259,8 +3441,13 @@ The
.q check_*
forms all give accept/reject status;
falling off the end or returning normally is an accept,
-and resolving to $#error
+and resolving to
+.b $#error
is a reject.
+Many of these can also resolve to the special mailer
+.b $#discard ;
+this accepts the message as though it were successful
+but then discards it without delivery.
.sh 4 "check_relay"
.pp
The
@@ -3325,7 +3512,7 @@ for example:
[128.32.149.78]
.)b
This causes direct conversion of the numeric value
-to a TCP/IP host address.
+to an IP host address.
.pp
The host name passed in after the
.q $@
@@ -3611,6 +3798,11 @@ The envelope id passed to sendmail as part of the envelope.
The current operation mode (from the
.b \-b
flag).
+.ip ${deliveryMode}
+The current delivery mode
+(from the
+.b DeliveryMode
+option).
.pp
There are three types of dates that can be used.
The
@@ -3828,7 +4020,7 @@ Classes of phrases may be defined
to match on the left hand side of rewriting rules,
where a
.q phrase
-is a sequence of characters that do not contain space characters.
+is a sequence of characters that does not contain space characters.
For example
a class of all local names for this site
might be created
@@ -3955,7 +4147,7 @@ it will be stripped to 7 bits.
set to the set of trusted users by the
.b T
configuration line.
-If you want to read trusted users from a file use
+If you want to read trusted users from a file, use
.b Ft \c
.i /file/name .
.ip $=w
@@ -4032,7 +4224,7 @@ apply to the mailers for the sender address
rather than the usual recipient mailers.
.nr ii 4n
.ip a
-Run Extended SMTP (ESMTP) protocol (defined in RFCs 1651, 1652, and 1653).
+Run Extended SMTP (ESMTP) protocol (defined in RFCs 1869, 1652, and 1870).
This flag defaults on if the SMTP greeting message includes the word
.q ESMTP .
.ip A
@@ -4092,7 +4284,7 @@ so try to avoid connecting normally;
any necessary connection will occur during a queue run.
.ip E
Escape lines beginning with
-.q From
+.q From\0
in the message with a `>' sign.
.ip f
The mailer wants a
@@ -4284,6 +4476,14 @@ will have an extra dot prepended
(to be stripped at the other end).
This insures that lines in the message containing a dot
will not terminate the message prematurely.
+.ip z
+Run Local Mail Transfer Protocol (LMTP)
+between
+.i sendmail
+and the local mailer.
+This is a variant on SMTP
+defined in RFC 2033
+that is specifically designed for delivery to a local mailbox.
.ip 0
Don't look up MX records for hosts sent via SMTP.
.ip 3
@@ -4367,6 +4567,11 @@ if the LHS matches.
This mailer is only functional in rulesets 0, 5,
or one of the check_* rulesets.
.pp
+The mailer with the special name
+.q discard
+causes any mail sent to it to be discarded
+but otherwise treated as though it were successfully delivered.
+.pp
The mailer named
.q local
.i must
@@ -4383,9 +4588,9 @@ files,
and :include: lists respectively.
They default to:
.(b
-Mprog, P=/bin/sh, F=lsD, A=sh \-c $u
-M*file*, P=/dev/null, F=lsDFMPEu, A=FILE
-M*include*, P=/dev/null, F=su, A=INCLUDE
+Mprog, P=/bin/sh, F=lsoDq9, T=DNS/RFC822/X-Unix, A=sh \-c $u
+M*file*, P=[FILE], F=lsDFMPEouq9, T=DNS/RFC822/X-Unix, A=FILE $u
+M*include*, P=/dev/null, F=su, A=INCLUDE $u
.)b
.pp
The Sender and Recipient rewriting sets
@@ -4491,7 +4696,7 @@ Continuation lines in this spec
are reflected directly into the outgoing message.
The
.i htemplate
-is macro expanded before insertion into the message.
+is macro-expanded before insertion into the message.
If the
.i mflags
(surrounded by question marks)
@@ -4505,6 +4710,46 @@ regardless of these flags.
.pp
Some headers have special semantics
that will be described later.
+.pp
+A secondary syntax allows validation of headers as they are being read.
+To enable validation, use:
+.(b
+.b H \c
+.i Header \c
+.b ": $>" \c
+.i Ruleset
+.)b
+The indicated
+.i Ruleset
+is called for the specified
+.i Header ,
+and can return
+.b $#error
+to reject the message or
+.b $#discard
+to discard the message
+(as with the other
+.b check_ *
+rulesets).
+The header is treated as a structured field,
+that is,
+comments (in parentheses) are deleted before processing.
+.pp
+For example, the configuration lines:
+.(b
+HMessage-Id: $>CheckMessageId
+
+SCheckMessageId
+R< $+ @ $+ > $@ OK
+R$* $#error $: Illegal Message-Id header
+.)b
+would refuse any message that had a Message-Id: header of any of the
+following forms:
+.(b
+Message-Id: <>
+Message-Id: some text
+Message-Id: <legal text@domain> extra crud
+.)b
.sh 2 "O \*- Set Option"
.pp
There are a number of
@@ -4813,6 +5058,58 @@ Units default to seconds, so
uses a five second delay.
Defaults to zero
(no retry).
+.ip DontBlameSendmail=\fIoption,option,...\fP
+[no short name]
+In order to avoid possible cracking attempts
+caused by world- and group-writable files and directories,
+.i sendmail
+does paranoid checking when opening most of its support files.
+If for some reason you absolutely must run with,
+for example,
+a group-writable
+.i /etc
+directory,
+then you will have to turn off this checking
+(at the cost of making your system more vulnerable to attack).
+The arguments are individual options that turn off checking:
+.(b
+Safe
+AssumeSafeChown
+ClassFileInUnsafeDirPath
+ErrorHeaderInUnsafeDirPath
+FileDeliveryToHardLink
+FileDeliveryToSymLink
+ForwardFileInUnsafeDirPath
+ForwardFileInUnsafeDirPathSafe
+ForwardFileIngroupWritableDirPath
+GroupWritableAliasFile
+GroupWritableDirPathSafe
+GroupWritableForwardFileSafe
+GroupWritableIncludeFileSafe
+HelpFileinUnsafeDirPath
+IncludeFileInUnsafeDirPath
+IncludeFileInUnsafeDirPathSafe
+IncludeFileIngroupWritableDirPath
+LinkedAliasFileInWritableDir
+LinkedClassFileInWritableDir
+LinkedForwardFileInWritableDir
+LinkedIncludeFileInWritableDir
+LinkedMapInWritableDir
+LinkedServiceSwitchFileInWritableDir
+MapInUnsafeDirPath
+RunProgramInUnsafeDirPath
+RunWritableProgram
+WorldWritableAliasFile
+WriteMapToHardLink
+WriteMapToSymLink
+WriteStatsToHardLink
+WriteStatsToSymLink
+.)b
+.b Safe
+is the default.
+The details of these flags are described above.
+.\"XXX should have more here!!! XXX
+.b "Use of this option is not recommended."
.ip DontExpandCnames
[no short name]
The standards say that all host addresses used in a mail message
@@ -4843,6 +5140,22 @@ The cost of this is that the only group found for users
will be their primary group (the one in the password file),
which will make file access permissions somewhat more restrictive.
Has no effect on systems that don't have group lists.
+.ip DontProbeInterfaces
+[no short name]
+.i Sendmail
+normally finds the names of all interfaces active on your machine
+when it starts up
+and adds their name to the
+.b $=w
+class of known host aliases.
+If you have a large number of virtual interfaces
+or if your DNS inverse lookups are slow
+this can be time consuming.
+This option turns off that probing.
+However, you will need to be certain to include all variant names
+in the
+.b $=w
+class by some other mechanism.
.ip DontPruneRoutes
[R]
Normally,
@@ -5032,7 +5345,7 @@ This is always disabled (that is, dots are always accepted)
when reading SMTP mail.
.ip LogLevel=\fIn\fP
[L]
-Set the default log level to
+Set the log level to
.i n .
Defaults to 9.
.ip M\fIx\|value\fP
@@ -5102,6 +5415,13 @@ highest priority jobs)
this should be set as high as possible to avoid
.q losing
jobs that happen to fall late in the queue directory.
+.ip MaxRecipientsPerMessage=\fIN\fP
+[no short name]
+The maximum number of recipients that will be accepted per message
+in an SMTP transaction.
+Note: setting this too low can interfere with sending mail from
+MUAs that use SMTP for initial submission.
+If not set, there is no limit on the number of recipients per envelope.
.ip MeToo
[m]
Send to me too,
@@ -5216,12 +5536,24 @@ needexpnhelo Insist on HELO or EHLO command before EXPN
noexpn Disallow EXPN entirely
needvrfyhelo Insist on HELO or EHLO command before VRFY
novrfy Disallow VRFY entirely
+noetrn Disallow ETRN entirely
+noverb Disallow VERB entirely
restrictmailq Restrict mailq command
restrictqrun Restrict \-q command line flag
-noreceipts Don't return success DSNs
+noreceipts Don't return success DSNs\**
goaway Disallow essentially all SMTP status queries
authwarnings Put X-Authentication-Warning: headers in messages
.)b
+.(f
+\**N.B.:
+the
+.b noreceipts
+flag causes
+.i sendmail
+to violate RFC 1891,
+which requires that return receipts be provided
+if Delivery Status Notifications are supported.
+.)f
The
.q goaway
pseudo-flag sets all flags except
@@ -5439,7 +5771,7 @@ and discarded.
.ip SendMIMEErrors
[j]
If set, send error messages in MIME format
-(see RFC1521 and RFC1344 for details).
+(see RFC2045 and RFC1344 for details).
If disabled,
.i sendmail
will not return the DSN keyword in response to an EHLO
@@ -5539,7 +5871,7 @@ always instantiate the queue file,
even if you are going to attempt immediate delivery.
.i Sendmail
always instantiates the queue file
-before returning control the client
+before returning control to the client
under any circumstances.
This should really
.i always
@@ -5790,8 +6122,8 @@ on the files.
For example,
as of this writing
version 8 config files
-(specifically, 8.7)
-used version level 6 configurations.
+(specifically, 8.9)
+used version level 7 configurations.
.pp
.q Old
configuration files are defined as version level one.
@@ -5865,6 +6197,27 @@ for lower numbered configuration files;
the configuration file requires some additional intelligence
to properly handle the RFC 822 group construct.
.pp
+Version level seven configuration files
+used new option names to replace old macros
+(\c
+.b $e
+became
+.b SmtpGreeetingMessage ,
+.b $l
+became
+.b UnixFromLine ,
+and
+.b $o
+became
+.b OperatorChars .
+Also, prior to version seven,
+the
+.b F=q
+flag (use 250 instead of 252 return value for
+.sm "SMTP VRFY"
+commands)
+was assumed.
+.pp
The
.b V
line may have an optional
@@ -5984,13 +6337,15 @@ must be compiled with
.b NDBM
defined.
.ip btree
-Database lookups using the btree interface to the Berkeley db(3) library.
+Database lookups using the btree interface to the Berkeley DB
+library.
.i Sendmail
must be compiled with
.b NEWDB
defined.
.ip hash
-Database lookups using the hash interface to the Berkeley db(3) library.
+Database lookups using the hash interface to the Berkeley DB
+library.
.i Sendmail
must be compiled with
.b NEWDB
@@ -6067,6 +6422,17 @@ of a user).
Canonifies host domain names.
Given a host name it calls the name server
to find the canonical name for that host.
+.ip bestmx
+Returns the best MX record for a host name given as the key.
+The current machine is always preferred \*-
+that is, if the current machine is one of the hosts listed as a
+lowest-preference MX record, then it will be guaranteed to be returned.
+This can be used to find out if this machine is the target for an MX record,
+and mail can be accepted on that basis.
+If the
+.b \-z
+flag is given, then all MX names are returned,
+separated by the given delimiter.
.ip sequence
The arguments on the `K' line are a list of maps;
the resulting map searches the argument maps in order
@@ -6134,6 +6500,52 @@ for example,
will have quotes stripped,
but the result is probably not what you had in mind.
Fortunately these cases are rare.
+.ip regex
+The map definition on the
+.b K
+line contains a regular expression.
+Any key input is compared to that expression using the
+POSIX regular expressions routines regcomp(), regerr(), and regexec().
+Refer to the documentation for those routines for more information
+about the regular expression matching.
+No rewriting of the key is done if the
+.b \-m
+flag is used. Without it, the key is discarded or if
+.b \-s
+if used, it is substituted by the substring matches, delimited by
+.b $|
+or the string specified with the the
+.b \-d
+flag. The flags availble for the map are
+.(b
+-n not
+-f case sensitive
+-b basic regular expressions
+ (default is extended)
+-s substring match
+-d set the delimiter used for -s
+-a append string to key
+-m match only, do not
+ replace/discard value
+.)b
+The
+.b \-s flag can include an optional parameter which can be used
+to select the substrings in the result of the lookup. For example,
+.(b
+-s1,3,4
+.)b
+.ip program
+The arguments on the
+.b K
+line are the pathname to a program and any initial parameters to be passed.
+When the map is called,
+the key is added to the initial parameters
+and the program is invoked
+as the default user/group id.
+The first line of standard output is returned as the value of the lookup.
+This has many potential security problems,
+and has terrible performance;
+it should be used only when absolutely necessary.
.pp
Most of these accept as arguments the same optional flags
and a filename
@@ -6186,6 +6598,18 @@ on successful matches.
For example, the default
.i host
map appends a dot on successful matches.
+.ip "\-T\fIx\fP"
+Append the string
+.i x
+on temporary failures.
+For example,
+.i x
+would be appended if a DNS lookup returned
+.q "server failed"
+or an NIS lookup could not locate a server.
+See also the
+.b \-t
+flag.
.ip "\-f"
Do not fold upper to lower case before looking up the key.
.ip "\-m"
@@ -6245,6 +6669,26 @@ to another, possibly better connected, mail server.
For the dequote map only,
the character to use to replace space characters
after a successful dequote.
+.ip "\-q"
+Don't dequote the key before lookup.
+.ip "\-A"
+When rebuilding an alias file,
+the
+.b \-A
+flag causes duplicate entries in the text version
+to be merged.
+For example, two entries:
+.(b
+list: user1, user2
+list: user3
+.)b
+would be treated as though it were the single entry
+.(b
+list: user1, user2, user3
+.)b
+in the presence of the
+.b \-A
+flag.
.pp
The
.i dbm
@@ -6253,8 +6697,10 @@ map appends the strings
and
.q \&.dir
to the given filename;
-the two
-.i db -based
+the
+.i hash
+and
+.i btree
maps append
.q \&.db .
For example, the map specification
@@ -6470,11 +6916,13 @@ In most cases this should be unnecessary
unless you are porting
.i sendmail
to a new environment.
-.sh 2 "Parameters in src/Makefile"
+.sh 2 "Parameters in BuildTools/OS/$oscf"
.pp
These parameters are intended to describe the compilation environment,
not site policy,
-and should normally be defined in src/Makefile.
+and should normally be defined in the operating system
+configuration file.
+.b "This section needs a complete rewrite."
.ip NDBM
If set,
the new version of the DBM library
@@ -6521,7 +6969,7 @@ such as
.q _AIX3
and
.q _SCO_unix_ .
-See the READ_ME
+See the src/README
file for the latest scoop on these flags.
.sh 2 "Parameters in src/conf.h"
.pp
@@ -6536,7 +6984,7 @@ are their default value.
.pp
This document is not the best source of information
for compilation flags in conf.h \(em
-see src/READ_ME or src/conf.h itself.
+see src/README or src/conf.h itself.
.nr ii 1.2i
.ip "MAXLINE [2048]"
The maximum line length of any input line.
@@ -7031,14 +7479,6 @@ of the message in the error return.
The actual use of this routine is highly dependent on the
implementation,
and use should be limited.
-.sh 3 "Load Average Computation"
-.pp
-The routine
-.i getla
-should return an approximation of the current system load average
-as an integer.
-There are several versions included on compilation flags
-as described above.
.sh 3 "New Database Map Classes"
.pp
New key maps can be added by creating a class initialization function
@@ -7079,7 +7519,7 @@ The
.i av
is a list of arguments passed in from the rewrite line.
The lookup function should return a pointer to the new value.
-IF the map lookup fails,
+If the map lookup fails,
.i *statp
should be set to an exit status code;
in particular, it should be set to
@@ -7204,459 +7644,6 @@ if you wanted to generalize
.b $]
lookups.
We now recommend that you create a new keyed map instead.
-.sh 1 "CHANGES IN VERSION 8"
-.pp
-The following summarizes changes
-since the last commonly available version of
-.i sendmail
-(5.67).
-For a detailed list,
-consult the file
-RELEASE_NOTES
-in the root directory of the
-.i sendmail
-distribution.
-.sh 2 "Connection Caching"
-.pp
-Instead of closing SMTP connections immediately,
-those connections are cached for possible future use.
-The advent of MX records made this effective for mailing lists;
-in addition,
-substantial performance improvements can be expected for queue processing.
-.sh 2 "MX Piggybacking"
-.pp
-If two hosts with different names in a single message
-happen to have the same set of MX hosts,
-they can be sent in the same transaction.
-Version 8 notices this and tries to batch the messages.
-.sh 2 "RFC 1123 Compliance"
-.pp
-A number of changes have been made to make
-.i sendmail
-.q "conditionally compliant"
-(that is,
-.i sendmail
-satisfies all of the
-.q MUST
-clauses and most but not all of the
-.q SHOULD
-clauses in RFC 1123).
-.pp
-The major areas of change are (numbers are RFC 1123 section numbers):
-.nr ii \w'5.3.1.1\0\0'u
-.ip 5.2.7
-Response to RCPT command is fast.
-.ip 5.2.8
-Numeric IP addresses are logged in Received: lines.
-.ip 5.2.17
-Self domain literal is properly handled.
-.ip 5.3.2
-Better control over individual timeouts.
-.ip 5.3.3
-Error messages are sent as
-.q From:<> .
-.ip 5.3.3
-Error messages are never sent to
-.q <> .
-.ip 5.3.3
-Route-addrs are pruned.
-.lp
-The areas in which
-.i sendmail
-is not
-.q "unconditionally compliant"
-are:
-.ip 5.2.6
-.i Sendmail
-does do header munging.
-.ip 5.2.10
-.i Sendmail
-doesn't always use the exact SMTP message text
-as listed in RFC 821.
-.ip 5.3.1.1
-.i Sendmail
-doesn't guarantee only one connect for each host in queue runs.
-.ip 5.3.1.1
-.i Sendmail
-doesn't always provide adequate concurrency limits.
-.sh 2 "Extended SMTP Support"
-.pp
-Version 8 includes both sending and receiving support for Extended
-SMTP support as defined by RFC 1651 (basic) and RFC 1653 (SIZE);
-and limited support for RFC 1652 (BODY).
-.sh 2 "Eight-Bit Clean"
-.pp
-Previous versions of
-.i sendmail
-used the 0200 bit for quoting.
-This version avoids that use.
-However, for compatibility with RFC 822,
-you can set option `7' to get seven bit stripping.
-.pp
-Individual mailers can still produce seven bit output using the
-`7' mailer flag.
-.sh 2 "User Database"
-.pp
-The user database is an as-yet experimental attempt
-to provide unified large-site name support.
-We are installing it at Berkeley;
-future versions may show significant modifications.
-.sh 2 "Improved BIND Support"
-.pp
-The BIND support,
-particularly for MX records,
-had a number of annoying
-.q features
-which have been removed in this release.
-In particular,
-these more tightly bind (pun intended) the name server to
-.i sendmail ,
-so that the name server resolution rules are incorporated directly into
-.b sendmail .
-.sh 2 "Keyed Files"
-.pp
-Generalized keyed files is an idea taken directly from
-.sm IDA
-.i sendmail
-(albeit with a completely different implementation).
-They can be useful on large sites.
-.pp
-Version 8 also understands YP.
-.sh 2 "Multi-Word Classes"
-.pp
-Classes can now be multiple words.
-For example,
-.(b
-CShofmann.CS.Berkeley.EDU
-.)b
-allows you to match the entire string
-.q hofmann.CS.Berkeley.EDU
-using the single construct
-.q $=S .
-.sh 2 "Deferred Macro Expansion"
-.pp
-The
-.b $& \c
-.i x
-construct has been adopted from
-.sm IDA .
-.sh 2 "IDENT Protocol Support"
-.pp
-The IDENT protocol as defined in RFC 1413 is supported.
-.sh 2 "Parsing Bug Fixes"
-.pp
-A number of small bugs having to do with things like
-backslash-escaped quotes inside of comments
-have been fixed.
-.sh 2 "Separate Envelope/Header Processing"
-.pp
-Since the From: line is passed in separately from the envelope sender,
-these have both been made visible;
-the
-.b $g
-macro is set to the envelope sender during processing
-of mailer argument vectors
-and the header sender during processing of headers.
-.pp
-It is also possible to specify separate per-mailer
-envelope and header processing.
-The
-.b S enderRWSet
-and
-.b R ecipientRWset
-arguments for mailers
-can be specified as
-.i envelope/header
-to give different rewritings for envelope versus header addresses.
-.sh 2 "Owner-List Propagates to Envelope"
-.pp
-When an alias has an associated owner\-list name,
-that alias is used to change the envelope sender address.
-This will cause downstream errors to be returned to that owner.
-.sh 2 "Dynamic Header Allocation"
-.pp
-The fixed size limit on header lines has been eliminated.
-.sh 2 "New Command Line Flags"
-.pp
-The
-.b \-B
-flag has been added to pass in body type information.
-.pp
-The
-.b \-p
-flag has been added
-to pass in protocol information.
-.pp
-The
-.b \-X
-flag has been added
-to allow logging of all protocol in and out of
-.i sendmail
-for debugging.
-.pp
-The
-.b \-O
-flag implies setting long-form options.
-.sh 2 "Enhanced Command Line Flags"
-.pp
-The
-.b \-q
-flag can limit limit a queue run to specific recipients, senders, or queue ids
-using
-.b \-qR\c
-.i substring ,
-.b \-qS\c
-.i substring ,
-or
-.b \-qI\c
-.i substring
-respectively.
-.sh 2 "New and Old Configuration Line Types"
-.pp
-The
-.b K
-line has been added to declare database maps.
-.pp
-The
-.b V
-line has been added to declare the configuration version level.
-.pp
-The
-.b M
-line has a
-.q D=
-field that lets you change into a temporary directory while that mailer
-is running.
-It also has a
-.q U=
-field to allow you to set the user and group id to be used
-when running the mailer.
-.sh 2 "New Options"
-.pp
-Several new options have been added,
-many to support new features,
-others to allow tuning that was previously available
-only by recompiling.
-They are described in detail in Section 5.6.
-Briefly,
-.nr ii 0.5i
-.ip b
-Insist on a minimum number of disk blocks.
-.ip C
-Set checkpoint interval.
-.ip E
-Default error message.
-.ip G
-Enable GECOS matching.
-.ip h
-Maximum hop count.
-.ip j
-Send errors in MIME-encapsulated format.
-.ip J
-Forward file path.
-.ip k
-Connection cache size
-.ip K
-Connection cache lifetime.
-.ip l
-Enable Errors-To: header.
-These headers violate RFC 1123;
-this option is included to provide back compatibility
-with old versions of
-.i sendmail .
-.ip O
-Set incoming SMTP daemon options, such as an alternate SMTP port.
-.ip p
-Privacy options.
-.ip R
-Don't prune route-addrs.
-.ip U
-User database spec.
-.ip V
-Fallback
-.q MX
-host.
-.ip w
-.q "Best MX"
-handling technique.
-.ip 7
-Do not run eight bit clean.
-.ip 8
-Eight bit data handling mode.
-.sh 2 "Extended Options"
-.pp
-The
-.b r
-(read timeout),
-.b I
-(use BIND),
-and
-.b T
-(queue timeout)
-options have been extended to pass in more information.
-.sh 2 "New Mailer Flags"
-.pp
-Several new mailer flags have been added.
-.ip a
-Try to use ESMTP when creating a connection.
-If this is not set,
-.i sendmail
-will still try if the other end hints that it knows about ESMTP
-in its greeting message;
-this flag says to try even if it doesn't hint.
-If the EHLO (extended hello)
-command fails,
-.i sendmail
-falls back to old SMTP.
-.ip A
-Try the user part of addresses for this mailer as aliases.
-.ip b
-Ensure that there is a blank line at the end of all messages.
-.ip c
-Strip all comments from addresses;
-this should only be used as a last resort
-when dealing with cranky mailers.
-.ip g
-Never use the null sender as the envelope sender,
-even when running SMTP.
-Although this violates RFC 1123,
-it may be necessary when you must deal with some obnoxious old hosts.
-.ip k
-Turn off the loopback check in the HELO protocol;
-doing this may cause mailer loops.
-.ip o
-Always run the mailer as the recipient of the message.
-.ip w
-This user should have a passwd file entry.
-.ip 5
-Try ruleset 5 if no local aliases.
-.ip 7
-Strip all output to 7 bits.
-.ip :
-Check for :include: files.
-.ip |
-Check for |program addresses.
-.ip /
-Check for /file addresses.
-.ip @
-Check this user against the user database.
-.sh 2 "Long Option Names"
-.pp
-All options can be specified using long names,
-and some new options can only be specified with long names.
-.sh 2 "New Pre-Defined Macros"
-.pp
-The following macros are pre-defined:
-.ip $k
-The UUCP node name,
-nominally from
-.i uname (2)
-call.
-.ip $m
-The domain part of our full hostname.
-.ip $_
-The RFC 1413-provided sender address.
-.sh 2 "New LHS Token"
-.pp
-Version 8 allows
-.b $@
-on the Left Hand Side of an
-.q R
-line to match zero tokens.
-This is intended to be used to match the null input.
-.sh 2 "Bigger Defaults"
-.pp
-Version 8 allows up to 100 rulesets instead of 30.
-It is recommended that rulesets 0\-9 be reserved for
-.i sendmail 's
-dedicated use in future releases.
-.pp
-The total number of MX records that can be used has been raised to 20.
-.pp
-The number of queued messages that can be handled at one time
-has been raised from 600 to 1000.
-.sh 2 "Different Default Tuning Parameters"
-.pp
-Version 8 has changed the default parameters
-for tuning queue costs
-to make the number of recipients more important
-than the size of the message (for small messages).
-This is reasonable if you are connected with reasonably fast links.
-.sh 2 "Auto-Quoting in Addresses"
-.pp
-Previously, the
-.q "Full Name <email address>"
-syntax would generate incorrect protocol output
-if
-.q "Full Name"
-had special characters such as dot.
-This version puts quotes around such names.
-.sh 2 "Symbolic Names On Error Mailer"
-.pp
-Several names have been built in to the $@ portion of the $#error
-mailer.
-.sh 2 "SMTP VRFY Doesn't Expand"
-.pp
-Previous versions of
-.i sendmail
-treated VRFY and EXPN the same.
-In this version,
-VRFY doesn't expand aliases or follow .forward files.
-EXPN still does.
-.pp
-As an optimization, if you run with your default delivery mode being
-queue-only or deliver-in-background,
-the RCPT command will also not chase aliases and .forward files.
-It will chase them when it processes the queue.
-.sh 2 "[IPC] Mailers Allow Multiple Hosts"
-.pp
-When an address resolves to a mailer that has
-.q [IPC]
-as its
-.q Path ,
-the $@ part (host name)
-can be a colon-separated list of hosts instead of a single hostname.
-This asks
-.i sendmail
-to search the list for the first entry that is available
-exactly as though it were an MX record.
-The intent is to route internal traffic through internal networks
-without publishing an MX record to the net.
-MX expansion is still done on the individual items.
-.sh 2 "Aliases Extended"
-.pp
-The implementation has been merged with maps.
-Among other things,
-this supports NIS-based aliases.
-.sh 2 "Portability and Security Enhancements"
-.pp
-A number of internal changes have been made to enhance portability.
-.pp
-Several fixes have been made to increase the paranoia factor.
-.sh 2 "Miscellaneous Changes"
-.pp
-.i Sendmail
-writes a
-.i /etc/sendmail.pid
-file with the current process id of the SMTP daemon.
-.pp
-Two people using the same program in their .forward file
-are considered different
-so that duplicate elimination doesn't delete one of them.
-.pp
-The
-.i mailstats
-program prints mailer names
-and gets the location of the
-.i sendmail.st
-file from
-.i /etc/sendmail.cf .
-.pp
-Many minor bugs have been fixed, such as handling of backslashes
-inside of quotes.
-.pp
-A hook (ruleset 5) has been added
-to allow rewriting of local addresses after aliasing.
.sh 1 "ACKNOWLEDGEMENTS"
.pp
I've worked on
@@ -7671,38 +7658,53 @@ at Britton Lee,
and again on the Mammoth and Titan Projects at Berkeley.
.pp
Much of the second wave of improvements
-should be credited to Bryan Costales of ICSI.
+resulting in version 8.1
+should be credited to Bryan Costales of the
+International Computer Science Institute.
As he passed me drafts of his book on
.i sendmail
I was inspired to start working on things again.
Bryan was also available to bounce ideas off of.
.pp
+Gregory Neil Shapiro
+of Worchester Polytechnic Institute
+has become instrumental in all phases of
+.i sendmail
+support and development,
+and was largely responsible for getting versions 8.8 and 8.9
+out the door.
+.pp
Many, many people contributed chunks of code and ideas to
.i sendmail .
It has proven to be a group network effort.
Version 8 in particular was a group project.
The following people made notable contributions:
.(l
-John Beck, Hewlett-Packard
+John Beck, Hewlett-Packard & Sun Microsystems
Keith Bostic, CSRG, University of California, Berkeley
Andrew Cheng, Sun Microsystems
Michael J. Corrigan, University of California, San Diego
-Bryan Costales, International Computer Science Institute
+Bryan Costales, International Computer Science Institute & InfoBeat
Pa\*:r (Pell) Emanuelsson
Craig Everhart, Transarc Corporation
+Per Hedeland, Ericsson
Tom Ivar Helbekkmo, Norwegian School of Economics
+Kari Hurtta, Finnish Meteorological Institute
Allan E. Johannesen, WPI
Jonathan Kamens, OpenVision Technologies, Inc.
Takahiro Kanbe, Fuji Xerox Information Systems Co., Ltd.
Brian Kantor, University of California, San Diego
+John Kennedy, Cal State University, Chico
Murray S. Kucherawy, HookUp Communication Corp.
Bruce Lilly, Sony U.S.
Karl London
Motonori Nakamura, Ritsumeikan University & Kyoto University
John Gardiner Myers, Carnegie Mellon University
Neil Rickert, Northern Illinois University
+Gregory Neil Shapiro, WPI
Eric Schnoebelen, Convex Computer Corp.
Eric Wassenaar, National Institute for Nuclear and High Energy Physics, Amsterdam
+Randall Winchester, University of Maryland
Christophe Wolfhugel, Pasteur Institute & Herve Schauer Consultants (Paris)
.)l
I apologize for anyone I have omitted, misspelled, misattributed, or
@@ -7756,7 +7758,7 @@ Set debugging level.
.ip "\-f\ \fIaddr\fP"
The sender's machine address is
.i addr .
-.ip \-F\fIname\fP
+.ip \-F\ \fIname\fP
Sets the full name of this user to
.i name .
.ip "\-h\ \fIcnt\fP"
@@ -7852,6 +7854,14 @@ to limit based on sender.
A particular queued job is accepted if one of the corresponding addresses
contains the indicated
.i string .
+Multiple
+.i \-q\fIX\fP
+flags are permitted,
+with items with the same key letter
+.q or'ed
+together, and items with different key letters
+.q and'ed
+together.
.ip "\-R ret"
What information you want returned if the message bounces;
.i ret
@@ -8081,20 +8091,20 @@ Seric
Ceric:sendmail@vangogh.CS.Berkeley.EDU
Reric@mammoth.Berkeley.EDU
Rbostic@okeeffe.CS.Berkeley.EDU
-H?P?return-path: <owner-sendmail@vangogh.CS.Berkeley.EDU>
-Hreceived: by vangogh.CS.Berkeley.EDU (5.108/2.7) id AAA06703;
- Fri, 17 Jul 92 00:28:55 -0700
-Hreceived: from mail.CS.Berkeley.EDU by vangogh.CS.Berkeley.EDU (5.108/2.7)
- id AAA06698; Fri, 17 Jul 92 00:28:54 -0700
-Hreceived: from [128.32.31.21] by mail.CS.Berkeley.EDU (5.96/2.5)
- id AA22777; Fri, 17 Jul 92 03:29:14 -0400
-Hreceived: by foo.bar.baz.de (5.57/Ultrix3.0-C)
- id AA22757; Fri, 17 Jul 92 09:31:25 GMT
-H?F?from: eric@foo.bar.baz.de (Eric Allman)
-H?x?full-name: Eric Allman
-Hmessage-id: <9207170931.AA22757@foo.bar.baz.de>
+H?P?Return-path: <owner-sendmail@vangogh.CS.Berkeley.EDU>
+HReceived: by vangogh.CS.Berkeley.EDU (5.108/2.7) id AAA06703;
+ Fri, 17 Jul 1992 00:28:55 -0700
+HReceived: from mail.CS.Berkeley.EDU by vangogh.CS.Berkeley.EDU (5.108/2.7)
+ id AAA06698; Fri, 17 Jul 1992 00:28:54 -0700
+HReceived: from [128.32.31.21] by mail.CS.Berkeley.EDU (5.96/2.5)
+ id AA22777; Fri, 17 Jul 1992 03:29:14 -0400
+HReceived: by foo.bar.baz.de (5.57/Ultrix3.0-C)
+ id AA22757; Fri, 17 Jul 1992 09:31:25 GMT
+H?F?From: eric@foo.bar.baz.de (Eric Allman)
+H?x?Full-name: Eric Allman
+HMessage-id: <9207170931.AA22757@foo.bar.baz.de>
HTo: sendmail@vangogh.CS.Berkeley.EDU
-Hsubject: this is an example message
+HSubject: this is an example message
.)b
This shows
the person who sent the message,
@@ -8142,14 +8152,19 @@ Created in daemon mode;
it contains the process id of the current SMTP daemon.
If you use this in scripts;
use ``head \-1'' to get just the first line;
-later versions of
+the second line contains the command line used to invoke the daemon,
+and later versions of
.i sendmail
-may add information to subsequent lines.
+may add more information to subsequent lines.
.ip /etc/aliases
The textual version of the alias file.
+.ip /etc/aliases.db
+The alias file in
+.i hash \|(3)
+format.
.ip /etc/aliases.{pag,dir}
The alias file in
-.i dbm \|(3)
+.i ndbm \|(3)
format.
.ip /var/spool/mqueue
The directory in which the mail queue
@@ -8187,7 +8202,7 @@ replace it with a blank sheet for double-sided output.
.\".sz 10
.\"Eric Allman
.\".sp
-.\"Version 8.106
+.\"Version 8.129
.\".ce 0
.bp 3
.ce
diff --git a/contrib/sendmail/doc/usenix/Makefile b/contrib/sendmail/doc/usenix/Makefile
new file mode 100644
index 000000000000..ea0665c67bed
--- /dev/null
+++ b/contrib/sendmail/doc/usenix/Makefile
@@ -0,0 +1,12 @@
+# @(#)Makefile 8.2 (Berkeley) 2/28/94
+
+SRCS= usenix.me
+MACROS= -me
+
+all: usenix.ps
+
+usenix.ps: ${SRCS}
+ rm -f ${.TARGET}
+ ${PIC} ${SRCS} | ${ROFF} > ${.TARGET}
+
+.include <bsd.doc.mk>
diff --git a/contrib/sendmail/doc/usenix/usenix.me b/contrib/sendmail/doc/usenix/usenix.me
new file mode 100644
index 000000000000..0fbb6723c136
--- /dev/null
+++ b/contrib/sendmail/doc/usenix/usenix.me
@@ -0,0 +1,1076 @@
+.nr si 3n
+.he 'Mail Systems and Addressing in 4.2bsd''%'
+.fo 'Version 8.2'USENIX \- Jan 83'Last Mod 11/27/93'
+.if n .ls 2
+.+c
+.(l C
+.sz 14
+Mail Systems and Addressing
+in 4.2bsd
+.sz
+.sp
+Eric Allman*
+.sp 0.5
+.i
+Britton-Lee, Inc.
+1919 Addison Street, Suite 105.
+Berkeley, California 94704.
+.sp 0.5
+.r
+eric@Berkeley.ARPA
+ucbvax!eric
+.)l
+.sp
+.(l F
+.ce
+ABSTRACT
+.sp \n(psu
+Routing mail through a heterogeneous internet presents many new
+problems.
+Among the worst of these is that of address mapping.
+Historically, this has been handled on an ad hoc basis.
+However,
+this approach has become unmanageable as internets grow.
+.sp \n(psu
+Sendmail acts a unified
+.q "post office"
+to which all mail can be
+submitted.
+Address interpretation is controlled by a production
+system,
+which can parse both old and new format addresses.
+The
+new format is
+.q "domain-based,"
+a flexible technique that can
+handle many common situations.
+Sendmail is not intended to perform
+user interface functions.
+.sp \n(psu
+Sendmail will replace delivermail in the Berkeley 4.2 distribution.
+Several major hosts are now or will soon be running sendmail.
+This change will affect any users that route mail through a sendmail
+gateway.
+The changes that will be user visible are emphasized.
+.)l
+.sp 2
+.(f
+*A considerable part of this work
+was done while under the employ
+of the INGRES Project
+at the University of California at Berkeley.
+.)f
+.pp
+The mail system to appear in 4.2bsd
+will contain a number of changes.
+Most of these changes are based on the replacement of
+.i delivermail
+with a new module called
+.i sendmail.
+.i Sendmail
+implements a general internetwork mail routing facility,
+featuring aliasing and forwarding,
+automatic routing to network gateways,
+and flexible configuration.
+Of key interest to the mail system user
+will be the changes in the network addressing structure.
+.pp
+In a simple network,
+each node has an address,
+and resources can be identified
+with a host-resource pair;
+in particular,
+the mail system can refer to users
+using a host-username pair.
+Host names and numbers have to be administered by a central authority,
+but usernames can be assigned locally to each host.
+.pp
+In an internet,
+multiple networks with different characteristics
+and managements
+must communicate.
+In particular,
+the syntax and semantics of resource identification change.
+Certain special cases can be handled trivially
+by
+.i "ad hoc"
+techniques,
+such as
+providing network names that appear local to hosts
+on other networks,
+as with the Ethernet at Xerox PARC.
+However, the general case is extremely complex.
+For example,
+some networks require that the route the message takes
+be explicitly specified by the sender,
+simplifying the database update problem
+since only adjacent hosts must be entered
+into the system tables,
+while others use logical addressing,
+where the sender specifies the location of the recipient
+but not how to get there.
+Some networks use a left-associative syntax
+and others use a right-associative syntax,
+causing ambiguity in mixed addresses.
+.pp
+Internet standards seek to eliminate these problems.
+Initially, these proposed expanding the address pairs
+to address triples,
+consisting of
+{network, host, username}
+triples.
+Network numbers must be universally agreed upon,
+and hosts can be assigned locally
+on each network.
+The user-level presentation was changed
+to address domains,
+comprised of a local resource identification
+and a hierarchical domain specification
+with a common static root.
+The domain technique
+separates the issue of physical versus logical addressing.
+For example,
+an address of the form
+.q "eric@a.cc.berkeley.arpa"
+describes the logical
+organization of the address space
+(user
+.q eric
+on host
+.q a
+in the Computer Center
+at Berkeley)
+but not the physical networks used
+(for example, this could go over different networks
+depending on whether
+.q a
+were on an ethernet
+or a store-and-forward network).
+.pp
+.i Sendmail
+is intended to help bridge the gap
+between the totally
+.i "ad hoc"
+world
+of networks that know nothing of each other
+and the clean, tightly-coupled world
+of unique network numbers.
+It can accept old arbitrary address syntaxes,
+resolving ambiguities using heuristics
+specified by the system administrator,
+as well as domain-based addressing.
+It helps guide the conversion of message formats
+between disparate networks.
+In short,
+.i sendmail
+is designed to assist a graceful transition
+to consistent internetwork addressing schemes.
+.sp
+.pp
+Section 1 defines some of the terms
+frequently left fuzzy
+when working in mail systems.
+Section 2 discusses the design goals for
+.i sendmail .
+In section 3,
+the new address formats
+and basic features of
+.i sendmail
+are described.
+Section 4 discusses some of the special problems
+of the UUCP network.
+The differences between
+.i sendmail
+and
+.i delivermail
+are presented in section 5.
+.sp
+.(l F
+.b DISCLAIMER:
+A number of examples
+in this paper
+use names of actual people
+and organizations.
+This is not intended
+to imply a commitment
+or even an intellectual agreement
+on the part of these people or organizations.
+In particular,
+Bell Telephone Laboratories (BTL),
+Digital Equipment Corporation (DEC),
+Lawrence Berkeley Laboratories (LBL),
+Britton-Lee Incorporated (BLI),
+and the University of California at Berkeley
+are not committed to any of these proposals at this time.
+Much of this paper
+represents no more than
+the personal opinions of the author.
+.)l
+.sh 1 "DEFINITIONS"
+.pp
+There are four basic concepts
+that must be clearly distinguished
+when dealing with mail systems:
+the user (or the user's agent),
+the user's identification,
+the user's address,
+and the route.
+These are distinguished primarily by their position independence.
+.sh 2 "User and Identification"
+.pp
+The user is the being
+(a person or program)
+that is creating or receiving a message.
+An
+.i agent
+is an entity operating on behalf of the user \*-
+such as a secretary who handles my mail.
+or a program that automatically returns a
+message such as
+.q "I am at the UNICOM conference."
+.pp
+The identification is the tag
+that goes along with the particular user.
+This tag is completely independent of location.
+For example,
+my identification is the string
+.q "Eric Allman,"
+and this identification does not change
+whether I am located at U.C. Berkeley,
+at Britton-Lee,
+or at a scientific institute in Austria.
+.pp
+Since the identification is frequently ambiguous
+(e.g., there are two
+.q "Robert Henry" s
+at Berkeley)
+it is common to add other disambiguating information
+that is not strictly part of the identification
+(e.g.,
+Robert
+.q "Code Generator"
+Henry
+versus
+Robert
+.q "System Administrator"
+Henry).
+.sh 2 "Address"
+.pp
+The address specifies a location.
+As I move around,
+my address changes.
+For example,
+my address might change from
+.q eric@Berkeley.ARPA
+to
+.q eric@bli.UUCP
+or
+.q allman@IIASA.Austria
+depending on my current affiliation.
+.pp
+However,
+an address is independent of the location of anyone else.
+That is,
+my address remains the same to everyone who might be sending me mail.
+For example,
+a person at MIT and a person at USC
+could both send to
+.q eric@Berkeley.ARPA
+and have it arrive to the same mailbox.
+.pp
+Ideally a
+.q "white pages"
+service would be provided to map user identifications
+into addresses
+(for example, see
+[Solomon81]).
+Currently this is handled by passing around
+scraps of paper
+or by calling people on the telephone
+to find out their address.
+.sh 2 "Route"
+.pp
+While an address specifies
+.i where
+to find a mailbox,
+a route specifies
+.i how
+to find the mailbox.
+Specifically,
+it specifies a path
+from sender to receiver.
+As such, the route is potentially different
+for every pair of people in the electronic universe.
+.pp
+Normally the route is hidden from the user
+by the software.
+However,
+some networks put the burden of determining the route
+onto the sender.
+Although this simplifies the software,
+it also greatly impairs the usability
+for most users.
+The UUCP network is an example of such a network.
+.sh 1 "DESIGN GOALS"
+.pp
+Design goals for
+.i sendmail \**
+.(f
+\**This section makes no distinction between
+.i delivermail
+and
+.i sendmail.
+.)f
+include:
+.np
+Compatibility with the existing mail programs,
+including Bell version 6 mail,
+Bell version 7 mail,
+Berkeley
+.i Mail
+[Shoens79],
+BerkNet mail
+[Schmidt79],
+and hopefully UUCP mail
+[Nowitz78].
+ARPANET mail
+[Crocker82]
+was also required.
+.np
+Reliability, in the sense of guaranteeing
+that every message is correctly delivered
+or at least brought to the attention of a human
+for correct disposal;
+no message should ever be completely lost.
+This goal was considered essential
+because of the emphasis on mail in our environment.
+It has turned out to be one of the hardest goals to satisfy,
+especially in the face of the many anomalous message formats
+produced by various ARPANET sites.
+For example,
+certain sites generate improperly formated addresses,
+occasionally
+causing error-message loops.
+Some hosts use blanks in names,
+causing problems with
+mail programs that assume that an address
+is one word.
+The semantics of some fields
+are interpreted slightly differently
+by different sites.
+In summary,
+the obscure features of the ARPANET mail protocol
+really
+.i are
+used and
+are difficult to support,
+but must be supported.
+.np
+Existing software to do actual delivery
+should be used whenever possible.
+This goal derives as much from political and practical considerations
+as technical.
+.np
+Easy expansion to
+fairly complex environments,
+including multiple
+connections to a single network type
+(such as with multiple UUCP or Ethernets).
+This goal requires consideration of the contents of an address
+as well as its syntax
+in order to determine which gateway to use.
+.np
+Configuration information should not be compiled into the code.
+A single compiled program should be able to run as is at any site
+(barring such basic changes as the CPU type or the operating system).
+We have found this seemingly unimportant goal
+to be critical in real life.
+Besides the simple problems that occur when any program gets recompiled
+in a different environment,
+many sites like to
+.q fiddle
+with anything that they will be recompiling anyway.
+.np
+.i Sendmail
+must be able to let various groups maintain their own mailing lists,
+and let individuals specify their own forwarding,
+without modifying the system alias file.
+.np
+Each user should be able to specify which mailer to execute
+to process mail being delivered for him.
+This feature allows users who are using specialized mailers
+that use a different format to build their environment
+without changing the system,
+and facilitates specialized functions
+(such as returning an
+.q "I am on vacation"
+message).
+.np
+Network traffic should be minimized
+by batching addresses to a single host where possible,
+without assistance from the user.
+.pp
+These goals motivated the architecture illustrated in figure 1.
+.(z
+.hl
+.ie t \
+. sp 18
+.el \{\
+.(c
++---------+ +---------+ +---------+
+| sender1 | | sender2 | | sender3 |
++---------+ +---------+ +---------+
+ | | |
+ +----------+ + +----------+
+ | | |
+ v v v
+ +-------------+
+ | sendmail |
+ +-------------+
+ | | |
+ +----------+ + +----------+
+ | | |
+ v v v
++---------+ +---------+ +---------+
+| mailer1 | | mailer2 | | mailer3 |
++---------+ +---------+ +---------+
+.)c
+.\}
+
+.ce
+Figure 1 \*- Sendmail System Structure.
+.hl
+.)z
+The user interacts with a mail generating and sending program.
+When the mail is created,
+the generator calls
+.i sendmail ,
+which routes the message to the correct mailer(s).
+Since some of the senders may be network servers
+and some of the mailers may be network clients,
+.i sendmail
+may be used as an internet mail gateway.
+.sh 1 "USAGE"
+.sh 2 "Address Formats"
+.pp
+Arguments may be flags or addresses.
+Flags set various processing options.
+Following flag arguments,
+address arguments may be given.
+Addresses follow the syntax in RFC822
+[Crocker82]
+for ARPANET
+address formats.
+In brief, the format is:
+.np
+Anything in parentheses is thrown away
+(as a comment).
+.np
+Anything in angle brackets (\c
+.q "<\|>" )
+is preferred
+over anything else.
+This rule implements the ARPANET standard that addresses of the form
+.(b
+user name <machine-address>
+.)b
+will send to the electronic
+.q machine-address
+rather than the human
+.q "user name."
+.np
+Double quotes
+(\ "\ )
+quote phrases;
+backslashes quote characters.
+Backslashes are more powerful
+in that they will cause otherwise equivalent phrases
+to compare differently \*- for example,
+.i user
+and
+.i
+"user"
+.r
+are equivalent,
+but
+.i \euser
+is different from either of them.
+This might be used
+to avoid normal aliasing
+or duplicate suppression algorithms.
+.pp
+Parentheses, angle brackets, and double quotes
+must be properly balanced and nested.
+The rewriting rules control remaining parsing\**.
+.(f
+\**Disclaimer: Some special processing is done
+after rewriting local names; see below.
+.)f
+.pp
+Although old style addresses are still accepted
+in most cases,
+the preferred address format
+is based on ARPANET-style domain-based addresses
+[Su82a].
+These addresses are based on a hierarchical, logical decomposition
+of the address space.
+The addresses are hierarchical in a sense
+similar to the U.S. postal addresses:
+the messages may first be routed to the correct state,
+with no initial consideration of the city
+or other addressing details.
+The addresses are logical
+in that each step in the hierarchy
+corresponds to a set of
+.q "naming authorities"
+rather than a physical network.
+.pp
+For example,
+the address:
+.(l
+eric@HostA.BigSite.ARPA
+.)l
+would first look up the domain
+BigSite
+in the namespace administrated by
+ARPA.
+A query could then be sent to
+BigSite
+for interpretation of
+HostA.
+Eventually the mail would arrive at
+HostA,
+which would then do final delivery
+to user
+.q eric.
+.sh 2 "Mail to Files and Programs"
+.pp
+Files and programs are legitimate message recipients.
+Files provide archival storage of messages,
+useful for project administration and history.
+Programs are useful as recipients in a variety of situations,
+for example,
+to maintain a public repository of systems messages
+(such as the Berkeley
+.i msgs
+program).
+.pp
+Any address passing through the initial parsing algorithm
+as a local address
+(i.e, not appearing to be a valid address for another mailer)
+is scanned for two special cases.
+If prefixed by a vertical bar (\c
+.q \^|\^ )
+the rest of the address is processed as a shell command.
+If the user name begins with a slash mark (\c
+.q /\^ )
+the name is used as a file name,
+instead of a login name.
+.sh 2 "Aliasing, Forwarding, Inclusion"
+.pp
+.i Sendmail
+reroutes mail three ways.
+Aliasing applies system wide.
+Forwarding allows each user to reroute incoming mail
+destined for that account.
+Inclusion directs
+.i sendmail
+to read a file for a list of addresses,
+and is normally used
+in conjunction with aliasing.
+.sh 3 "Aliasing"
+.pp
+Aliasing maps local addresses to address lists using a system-wide file.
+This file is hashed to speed access.
+Only addresses that parse as local
+are allowed as aliases;
+this guarantees a unique key
+(since there are no nicknames for the local host).
+.sh 3 "Forwarding"
+.pp
+After aliasing,
+if an recipient address specifies a local user
+.i sendmail
+searches for a
+.q .forward
+file in the recipient's home directory.
+If it exists,
+the message is
+.i not
+sent to that user,
+but rather to the list of addresses in that file.
+Often
+this list will contain only one address,
+and the feature will be used for network mail forwarding.
+.pp
+Forwarding also permits a user to specify a private incoming mailer.
+For example,
+forwarding to:
+.(b
+"\^|\|/usr/local/newmail myname"
+.)b
+will use a different incoming mailer.
+.sh 3 "Inclusion"
+.pp
+Inclusion is specified in RFC 733 [Crocker77] syntax:
+.(b
+:Include: pathname
+.)b
+An address of this form reads the file specified by
+.i pathname
+and sends to all users listed in that file.
+.pp
+The intent is
+.i not
+to support direct use of this feature,
+but rather to use this as a subset of aliasing.
+For example,
+an alias of the form:
+.(b
+project: :include:/usr/project/userlist
+.)b
+is a method of letting a project maintain a mailing list
+without interaction with the system administration,
+even if the alias file is protected.
+.pp
+It is not necessary to rebuild the index on the alias database
+when a :include: list is changed.
+.sh 2 "Message Collection"
+.pp
+Once all recipient addresses are parsed and verified,
+the message is collected.
+The message comes in two parts:
+a message header and a message body,
+separated by a blank line.
+The body is an uninterpreted
+sequence of text lines.
+.pp
+The header is formated as a series of lines
+of the form
+.(b
+ field-name: field-value
+.)b
+Field-value can be split across lines by starting the following
+lines with a space or a tab.
+Some header fields have special internal meaning,
+and have appropriate special processing.
+Other headers are simply passed through.
+Some header fields may be added automatically,
+such as time stamps.
+.sh 1 "THE UUCP PROBLEM"
+.pp
+Of particular interest
+is the UUCP network.
+The explicit routing
+used in the UUCP environment
+causes a number of serious problems.
+First,
+giving out an address
+is impossible
+without knowing the address of your potential correspondent.
+This is typically handled
+by specifying the address
+relative to some
+.q "well-known"
+host
+(e.g.,
+ucbvax or decvax).
+Second,
+it is often difficult to compute
+the set of addresses
+to reply to
+without some knowledge
+of the topology of the network.
+Although it may be easy for a human being
+to do this
+under many circumstances,
+a program does not have equally sophisticated heuristics
+built in.
+Third,
+certain addresses will become painfully and unnecessarily long,
+as when a message is routed through many hosts in the USENET.
+And finally,
+certain
+.q "mixed domain"
+addresses
+are impossible to parse unambiguously \*-
+e.g.,
+.(l
+decvax!ucbvax!lbl-h!user@LBL-CSAM
+.)l
+might have many possible resolutions,
+depending on whether the message was first routed
+to decvax
+or to LBL-CSAM.
+.pp
+To solve this problem,
+the UUCP syntax
+would have to be changed to use addresses
+rather than routes.
+For example,
+the address
+.q decvax!ucbvax!eric
+might be expressed as
+.q eric@ucbvax.UUCP
+(with the hop through decvax implied).
+This address would itself be a domain-based address;
+for example,
+an address might be of the form:
+.(l
+mark@d.cbosg.btl.UUCP
+.)l
+Hosts outside of Bell Telephone Laboratories
+would then only need to know
+how to get to a designated BTL relay,
+and the BTL topology
+would only be maintained inside Bell.
+.pp
+There are three major problems
+associated with turning UUCP addresses
+into something reasonable:
+defining the namespace,
+creating and propagating the necessary software,
+and building and maintaining the database.
+.sh 2 "Defining the Namespace"
+.pp
+Putting all UUCP hosts into a flat namespace
+(e.g.,
+.q \&...@host.UUCP )
+is not practical for a number of reasons.
+First,
+with over 1600 sites already,
+and (with the increasing availability of inexpensive microcomputers
+and autodialers)
+several thousand more coming within a few years,
+the database update problem
+is simply intractable
+if the namespace is flat.
+Second,
+there are almost certainly name conflicts today.
+Third,
+as the number of sites grow
+the names become ever less mnemonic.
+.pp
+It seems inevitable
+that there be some sort of naming authority
+for the set of top level names
+in the UUCP domain,
+as unpleasant a possibility
+as that may seem.
+It will simply not be possible
+to have one host resolving all names.
+It may however be possible
+to handle this
+in a fashion similar to that of assigning names of newsgroups
+in USENET.
+However,
+it will be essential to encourage everyone
+to become subdomains of an existing domain
+whenever possible \*-
+even though this will certainly bruise some egos.
+For example,
+if a new host named
+.q blid
+were to be added to the UUCP network,
+it would probably actually be addressed as
+.q d.bli.UUCP
+(i.e.,
+as host
+.q d
+in the pseudo-domain
+.q bli
+rather than as host
+.q blid
+in the UUCP domain).
+.sh 2 "Creating and Propagating the Software"
+.pp
+The software required to implement a consistent namespace
+is relatively trivial.
+Two modules are needed,
+one to handle incoming mail
+and one to handle outgoing mail.
+.pp
+The incoming module
+must be prepared to handle either old or new style addresses.
+New-style addresses
+can be passed through unchanged.
+Old style addresses
+must be turned into new style addresses
+where possible.
+.pp
+The outgoing module
+is slightly trickier.
+It must do a database lookup on the recipient addresses
+(passed on the command line)
+to determine what hosts to send the message to.
+If those hosts do not accept new-style addresses,
+it must transform all addresses in the header of the message
+into old style using the database lookup.
+.pp
+Both of these modules
+are straightforward
+except for the issue of modifying the header.
+It seems prudent to choose one format
+for the message headers.
+For a number of reasons,
+Berkeley has elected to use the ARPANET protocols
+for message formats.
+However,
+this protocol is somewhat difficult to parse.
+.pp
+Propagation is somewhat more difficult.
+There are a large number of hosts
+connected to UUCP
+that will want to run completely standard systems
+(for very good reasons).
+The strategy is not to convert the entire network \*-
+only enough of it it alleviate the problem.
+.sh 2 "Building and Maintaining the Database"
+.pp
+This is by far the most difficult problem.
+A prototype for this database
+already exists,
+but it is maintained by hand
+and does not pretend to be complete.
+.pp
+This problem will be reduced considerably
+if people choose to group their hosts
+into subdomains.
+This would require a global update
+only when a new top level domain
+joined the network.
+A message to a host in a subdomain
+could simply be routed to a known domain gateway
+for further processing.
+For example,
+the address
+.q eric@a.bli.UUCP
+might be routed to the
+.q bli
+gateway
+for redistribution;
+new hosts could be added
+within BLI
+without notifying the rest of the world.
+Of course,
+other hosts
+.i could
+be notified as an efficiency measure.
+.pp
+There may be more than one domain gateway.
+A domain such as BTL,
+for instance,
+might have a dozen gateways to the outside world;
+a non-BTL site
+could choose the closest gateway.
+The only restriction
+would be that all gateways
+maintain a consistent view of the domain
+they represent.
+.sh 2 "Logical Structure"
+.pp
+Logically,
+domains are organized into a tree.
+There need not be a host actually associated
+with each level in the tree \*-
+for example,
+there will be no host associated with the name
+.q UUCP.
+Similarly,
+an organization might group names together for administrative reasons;
+for example,
+the name
+.(l
+CAD.research.BigCorp.UUCP
+.)l
+might not actually have a host representing
+.q research.
+.pp
+However,
+it may frequently be convenient to have a host
+or hosts
+that
+.q represent
+a domain.
+For example,
+if a single host exists that
+represents
+Berkeley,
+then mail from outside Berkeley
+can forward mail to that host
+for further resolution
+without knowing Berkeley's
+(rather volatile)
+topology.
+This is not unlike the operation
+of the telephone network.
+.pp
+This may also be useful
+inside certain large domains.
+For example,
+at Berkeley it may be presumed
+that most hosts know about other hosts
+inside the Berkeley domain.
+But if they process an address
+that is unknown,
+they can pass it
+.q upstairs
+for further examination.
+Thus as new hosts are added
+only one host
+(the domain master)
+.i must
+be updated immediately;
+other hosts can be updated as convenient.
+.pp
+Ideally this name resolution process
+would be performed by a name server
+(e.g., [Su82b])
+to avoid unnecessary copying
+of the message.
+However,
+in a batch network
+such as UUCP
+this could result in unnecessary delays.
+.sh 1 "COMPARISON WITH DELIVERMAIL"
+.pp
+.i Sendmail
+is an outgrowth of
+.i delivermail .
+The primary differences are:
+.np
+Configuration information is not compiled in.
+This change simplifies many of the problems
+of moving to other machines.
+It also allows easy debugging of new mailers.
+.np
+Address parsing is more flexible.
+For example,
+.i delivermail
+only supported one gateway to any network,
+whereas
+.i sendmail
+can be sensitive to host names
+and reroute to different gateways.
+.np
+Forwarding and
+:include:
+features eliminate the requirement that the system alias file
+be writable by any user
+(or that an update program be written,
+or that the system administration make all changes).
+.np
+.i Sendmail
+supports message batching across networks
+when a message is being sent to multiple recipients.
+.np
+A mail queue is provided in
+.i sendmail.
+Mail that cannot be delivered immediately
+but can potentially be delivered later
+is stored in this queue for a later retry.
+The queue also provides a buffer against system crashes;
+after the message has been collected
+it may be reliably redelivered
+even if the system crashes during the initial delivery.
+.np
+.i Sendmail
+uses the networking support provided by 4.2BSD
+to provide a direct interface networks such as the ARPANET
+and/or Ethernet
+using SMTP (the Simple Mail Transfer Protocol)
+over a TCP/IP connection.
+.+c
+.ce
+REFERENCES
+.nr ii 1.5i
+.ip [Crocker77]
+Crocker, D. H.,
+Vittal, J. J.,
+Pogran, K. T.,
+and
+Henderson, D. A. Jr.,
+.ul
+Standard for the Format of ARPA Network Text Messages.
+RFC 733,
+NIC 41952.
+In [Feinler78].
+November 1977.
+.ip [Crocker82]
+Crocker, D. H.,
+.ul
+Standard for the Format of Arpa Internet Text Messages.
+RFC 822.
+Network Information Center,
+SRI International,
+Menlo Park, California.
+August 1982.
+.ip [Feinler78]
+Feinler, E.,
+and
+Postel, J.
+(eds.),
+.ul
+ARPANET Protocol Handbook.
+NIC 7104,
+Network Information Center,
+SRI International,
+Menlo Park, California.
+1978.
+.ip [Nowitz78]
+Nowitz, D. A.,
+and
+Lesk, M. E.,
+.ul
+A Dial-Up Network of UNIX Systems.
+Bell Laboratories.
+In
+UNIX Programmer's Manual, Seventh Edition,
+Volume 2.
+August, 1978.
+.ip [Schmidt79]
+Schmidt, E.,
+.ul
+An Introduction to the Berkeley Network.
+University of California, Berkeley California.
+1979.
+.ip [Shoens79]
+Shoens, K.,
+.ul
+Mail Reference Manual.
+University of California, Berkeley.
+In UNIX Programmer's Manual,
+Seventh Edition,
+Volume 2C.
+December 1979.
+.ip [Solomon81]
+Solomon, M.,
+Landweber, L.,
+and
+Neuhengen, D.,
+.ul
+The Design of the CSNET Name Server.
+CS-DN-2.
+University of Wisconsin,
+Madison.
+October 1981.
+.ip [Su82a]
+Su, Zaw-Sing,
+and
+Postel, Jon,
+.ul
+The Domain Naming Convention for Internet User Applications.
+RFC819.
+Network Information Center,
+SRI International,
+Menlo Park, California.
+August 1982.
+.ip [Su82b]
+Su, Zaw-Sing,
+.ul
+A Distributed System for Internet Name Service.
+RFC830.
+Network Information Center,
+SRI International,
+Menlo Park, California.
+October 1982.
diff --git a/contrib/sendmail/mail.local/Build b/contrib/sendmail/mail.local/Build
new file mode 100755
index 000000000000..ab8a49d78cac
--- /dev/null
+++ b/contrib/sendmail/mail.local/Build
@@ -0,0 +1,513 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1993, 1996-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)Build 8.93 (Berkeley) 6/24/98
+#
+
+#
+# A quick-and-dirty script to compile sendmail and related programs
+# in the presence of multiple architectures. To use, just use
+# "sh Build".
+#
+
+trap "rm -f $obj/.settings$$; exit" 1 2 3 15
+
+cflag=""
+mflag=""
+sflag=""
+makeargs=""
+libdirs=""
+incdirs=""
+libsrch=""
+siteconfig=""
+EX_USAGE=64
+EX_NOINPUT=66
+EX_UNAVAILABLE=69
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -c) # clean out existing $obj tree
+ cflag=1
+ shift
+ ;;
+
+ -m) # show Makefile name only
+ mflag=1
+ shift
+ ;;
+
+ -E*) # environment variables to pass into Build
+ arg=`echo $1 | sed 's/^-E//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ -z "$arg" ]
+ then
+ echo "Empty -E flag" >&2
+ exit $EX_USAGE
+ else
+ case $arg
+ in
+ *=*) # check format
+ eval $arg
+ export `echo $arg | sed 's;=.*;;'`
+ ;;
+ *) # bad format
+ echo "Bad format for -E argument ($arg)" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ shift
+ fi
+ ;;
+
+ -L*) # set up LIBDIRS
+ libdirs="$libdirs $1"
+ shift
+ ;;
+
+ -I*) # set up INCDIRS
+ incdirs="$incdirs $1"
+ shift
+ ;;
+
+ -f*) # select site config file
+ arg=`echo $1 | sed 's/^-f//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ "$siteconfig" ]
+ then
+ echo "Only one -f flag allowed" >&2
+ exit $EX_USAGE
+ else
+ siteconfig=$arg
+ if [ -z "$siteconfig" ]
+ then
+ echo "Missing argument for -f flag" >&2
+ exit $EX_USAGE
+ elif [ ! -f "$siteconfig" ]
+ then
+ echo "${siteconfig}: File not found"
+ exit $EX_NOINPUT
+ else
+ shift # move past argument
+ fi
+ fi
+ ;;
+
+ -S) # skip auto-configure
+ sflag="-s"
+ shift
+ ;;
+
+ *) # pass argument to make
+ makeargs="$makeargs \"$1\""
+ shift
+ ;;
+ esac
+done
+
+#
+# Do heuristic guesses !ONLY! for machines that do not have uname
+#
+if [ -d /NextApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
+then
+ # probably a NeXT box
+ arch=`hostinfo | sed -n 's/.*Processor type: \([^ ]*\).*/\1/p'`
+ os=NeXT
+ rel=`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`
+elif [ -f /usr/sony/bin/machine -a -f /etc/osversion ]
+then
+ # probably a Sony NEWS 4.x
+ os=NEWS-OS
+ rel=`awk '{ print $3}' /etc/osversion`
+ arch=`/usr/sony/bin/machine`
+elif [ -d /usr/omron -a -f /bin/luna ]
+then
+ # probably a Omron LUNA
+ os=LUNA
+ if [ -f /bin/luna1 ] && /bin/luna1
+ then
+ rel=unios-b
+ arch=luna1
+ elif [ -f /bin/luna2 ] && /bin/luna2
+ then
+ rel=Mach
+ arch=luna2
+ elif [ -f /bin/luna88k ] && /bin/luna88k
+ then
+ rel=Mach
+ arch=luna88k
+ fi
+elif [ -d /usr/apollo -a -d \`node_data ]
+then
+ # probably a Apollo/DOMAIN
+ os=DomainOS
+ arch=$ISP
+ rel=`/usr/apollo/bin/bldt | grep Domain | awk '{ print $4 }' | sed -e 's/,//g'`
+fi
+
+if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
+then
+ arch=`uname -m | sed -e 's/ //g'`
+ os=`uname -s | sed -e 's/\//-/g' -e 's/ //g'`
+ rel=`uname -r | sed -e 's/(/-/g' -e 's/)//g'`
+fi
+
+#
+# Tweak the values we have already got. PLEASE LIMIT THESE to
+# tweaks that are absolutely necessary because your system uname
+# routine doesn't return something sufficiently unique. Don't do
+# it just because you don't like the name that is returned. You
+# can combine the architecture name with the os name to create a
+# unique Makefile name.
+#
+
+# tweak machine architecture
+case $arch
+in
+ sun4*) arch=sun4;;
+
+ 9000/*) arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
+
+ DS/907000) arch=ds90;;
+
+ NILE*) arch=NILE
+ os=`uname -v`;;
+esac
+
+# tweak operating system type and release
+node=`uname -n | sed -e 's/\//-/g' -e 's/ //g'`
+if [ "$os" = "$node" -a "$arch" = "i386" -a "$rel" = 3.2 -a "`uname -v`" = 2 ]
+then
+ # old versions of SCO UNIX set uname -s the same as uname -n
+ os=SCO_SV
+fi
+if [ "$rel" = 4.0 ]
+then
+ case $arch in
+ 3[34]??|3[34]??,*)
+ if [ -d /usr/sadm/sysadm/add-ons/WIN-TCP ]
+ then
+ os=NCR.MP-RAS.2.x
+ elif [ -d /usr/sadm/sysadm/add-ons/inet ]
+ then
+ os=NCR.MP-RAS.3.x
+ fi
+ ;;
+ esac
+fi
+
+case $os
+in
+ DYNIX-ptx) os=PTX;;
+ Paragon*) os=Paragon;;
+ HP-UX) rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
+ AIX) rela=$rel
+ rel=`uname -v`
+ case $rel in
+ 2) arch=""
+ ;;
+ 4) if [ "$rela" = "3" ]
+ then
+ arch=$rela
+ fi
+ ;;
+ esac
+ rel=$rel.$rela
+ ;;
+ BSD-386) os=BSD-OS;;
+ SCO_SV) os=SCO; rel=`uname -X | sed -n 's/Release = 3.2v//p'`;;
+ UNIX_System_V) if [ "$arch" = "ds90" ]
+ then
+ os="UXPDS"
+ rel=`uname -v | sed -e 's/\(V.*\)L.*/\1/'`
+ fi;;
+ SINIX-?) os=SINIX;;
+ DomainOS) case $rel in
+ 10.4*) rel=10.4;;
+ esac
+ ;;
+esac
+
+# get "base part" of operating system release
+rroot=`echo $rel | sed -e 's/\.[^.]*$//'`
+rbase=`echo $rel | sed -e 's/\..*//'`
+if [ "$rroot" = "$rbase" ]
+then
+ rroot=$rel
+fi
+
+# heuristic tweaks to clean up names -- PLEASE LIMIT THESE!
+if [ "$os" = "unix" ]
+then
+ # might be Altos System V
+ case $rel
+ in
+ 5.3*) os=Altos;;
+ esac
+elif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
+then
+ # might be a DYNIX/ptx 2.x system, which has a broken uname
+ if strings /lib/cpp | grep _SEQUENT_ > /dev/null
+ then
+ os=PTX
+ fi
+elif [ -d /usr/nec ]
+then
+ # NEC machine -- what is it running?
+ if [ "$os" = "UNIX_System_V" ]
+ then
+ os=EWS-UX_V
+ elif [ "$os" = "UNIX_SV" ]
+ then
+ os=UX4800
+ fi
+elif [ "$arch" = "mips" ]
+then
+ case $rel
+ in
+ 4_*)
+ if [ `uname -v` = "UMIPS" ]
+ then
+ os=RISCos
+ fi;;
+ esac
+fi
+
+# see if there is a "user suffix" specified
+if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
+then
+ sfx=""
+else
+ sfx=".${SENDMAIL_SUFFIX}"
+fi
+
+echo "Configuration: os=$os, rel=$rel, rbase=$rbase, rroot=$rroot, arch=$arch, sfx=$sfx"
+
+
+SMROOT=${SMROOT-..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+export SMROOT BUILDTOOLS
+
+# see if we are in a Build-able directory
+if [ ! -f Makefile.m4 ]; then
+ echo "Makefile.m4 not found. Build can only be run from a source directory."
+ exit $EX_UNAVAILABLE
+fi
+
+# now try to find a reasonable object directory
+if [ -r obj.$os.$rel.$arch$sfx ]; then
+ obj=obj.$os.$rel.$arch$sfx
+elif [ -r obj.$os.$rroot.$arch$sfx ]; then
+ obj=obj.$os.$rroot.$arch$sfx
+elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
+ obj=obj.$os.$rbase.x.$arch$sfx
+elif [ -r obj.$os.$rel$sfx ]; then
+ obj=obj.$os.$rel$sfx
+elif [ -r obj.$os.$rbase.x$sfx ]; then
+ obj=obj.$os.$rbase.x$sfx
+elif [ -r obj.$os.$arch$sfx ]; then
+ obj=obj.$os.$arch$sfx
+elif [ -r obj.$rel.$arch$sfx ]; then
+ obj=obj.$rel.$arch$sfx
+elif [ -r obj.$rbase.x.$arch$sfx ]; then
+ obj=obj.$rbase.x.$arch$sfx
+elif [ -r obj.$os$sfx ]; then
+ obj=obj.$os$sfx
+elif [ -r obj.$arch$sfx ]; then
+ obj=obj.$arch$sfx
+elif [ -r obj.$rel$sfx ]; then
+ obj=obj.$rel$sfx
+elif [ -r obj$sfx ]; then
+ obj=obj$sfx
+fi
+if [ -z "$obj" -o "$cflag" ]
+then
+ if [ -n "$obj" ]
+ then
+ echo "Clearing out existing $obj tree"
+ rm -rf $obj
+ else
+ # no existing obj directory -- try to create one if Makefile found
+ obj=obj.$os.$rel.$arch$sfx
+ fi
+ if [ -r $BUILDTOOLS/OS/$os.$rel.$arch$sfx ]; then
+ oscf=$os.$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel.$arch ]; then
+ oscf=$os.$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch$sfx ]; then
+ oscf=$os.$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch ]; then
+ oscf=$os.$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch$sfx ]; then
+ oscf=$os.$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch ]; then
+ oscf=$os.$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rel$sfx ]; then
+ oscf=$os.$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel ]; then
+ oscf=$os.$rel
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot$sfx ]; then
+ oscf=$os.$rroot$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot ]; then
+ oscf=$os.$rroot
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x$sfx ]; then
+ oscf=$os.$rbase.x$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x ]; then
+ oscf=$os.$rbase.x
+ elif [ -r $BUILDTOOLS/OS/$os.$arch$sfx ]; then
+ oscf=$os.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$arch ]; then
+ oscf=$os.$arch
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch$sfx ]; then
+ oscf=$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch ]; then
+ oscf=$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch$sfx ]; then
+ oscf=$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch ]; then
+ oscf=$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch$sfx ]; then
+ oscf=$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch ]; then
+ oscf=$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os$sfx ]; then
+ oscf=$os$sfx
+ elif [ -r $BUILDTOOLS/OS/$os ]; then
+ oscf=$os
+ elif [ -r $BUILDTOOLS/OS/$arch$sfx ]; then
+ oscf=$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$arch ]; then
+ oscf=$arch
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel ]; then
+ oscf=$rel
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ else
+ echo "Cannot determine how to support $arch.$os.$rel" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ ret=$?
+ if [ $ret -ne 0 ]
+ then
+ exit $ret
+ fi
+ echo "Using M4=$M4"
+ export M4
+ if [ "$mflag" ]
+ then
+ echo "Will run in virgin $obj using $BUILDTOOLS/OS/$oscf"
+ exit 0
+ fi
+ if [ "$ABI" ]
+ then
+ echo "Using ABI $ABI"
+ fi
+ echo "Creating $obj using $BUILDTOOLS/OS/$oscf"
+ mkdir $obj
+ (cd $obj; ln -s ../*.[ch158] .)
+ if [ -f sendmail.hf ]
+ then
+ (cd $obj; ln -s ../sendmail.hf .)
+ fi
+
+ rm -f $obj/.settings$$
+ echo 'divert(-1)' > $obj/.settings$$
+ cat $BUILDTOOLS/M4/header.m4 >> $obj/.settings$$
+ if [ "$ABI" ]
+ then
+ echo "define(\`confABI', \`$ABI')" >> $obj/.settings$$
+ fi
+ cat $BUILDTOOLS/OS/$oscf >> $obj/.settings$$
+
+ if [ -z "$siteconfig" ]
+ then
+ # none specified, use defaults
+ if [ -f $BUILDTOOLS/Site/site.$oscf$sfx.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf$sfx.m4
+ elif [ -f $BUILDTOOLS/Site/site.$oscf.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf.m4
+ fi
+ if [ -f $BUILDTOOLS/Site/site.config.m4 ]
+ then
+ siteconfig="$BUILDTOOLS/Site/site.config.m4 $siteconfig"
+ fi
+ fi
+ if [ ! -z "$siteconfig" ]
+ then
+ echo "Including $siteconfig"
+ cat $siteconfig >> $obj/.settings$$
+ fi
+ if [ "$libdirs" ]
+ then
+ echo "define(\`confLIBDIRS', confLIBDIRS \`\`$libdirs'')" >> $obj/.settings$$
+ fi
+ if [ "$incdirs" ]
+ then
+ echo "define(\`confINCDIRS', confINCDIRS \`\`$incdirs'')" >> $obj/.settings$$
+ fi
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ libdirs=`(cat $obj/.settings$$; echo "_SRIDBIL_= confLIBDIRS" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_SRIDBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_SRIDBIL_=//"`
+ libsrch=`(cat $obj/.settings$$; echo "_HCRSBIL_= confLIBSEARCH" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_HCRSBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_HCRSBIL_=//"`
+ echo 'divert(-1)' >> $obj/.settings$$
+ LIBDIRS="$libdirs" LIBSRCH="$libsrch" SITECONFIG="$siteconfig" sh $BUILDTOOLS/bin/configure.sh $sflag $oscf >> $obj/.settings$$
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' $obj/.settings$$ | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - Makefile.m4 | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' > $obj/Makefile
+ if [ $? -ne 0 -o ! -s $obj/Makefile ]
+ then
+ echo "ERROR: ${M4} failed; You may need a newer version of M4, at least as new as System V or GNU" 1>&2
+ rm -rf $obj
+ exit $EX_UNAVAILABLE
+ fi
+ rm -f $obj/.settings$$
+ echo "Making dependencies in $obj"
+ (cd $obj; ${MAKE-make} depend)
+fi
+
+if [ "$mflag" ]
+then
+ makefile=`ls -l $obj/Makefile | sed 's/.* //'`
+ if [ -z "$makefile" ]
+ then
+ echo "ERROR: $obj exists but has no Makefile" >&2
+ exit $EX_NOINPUT
+ fi
+ echo "Will run in existing $obj using $makefile"
+ exit 0
+fi
+
+echo "Making in $obj"
+cd $obj
+eval exec ${MAKE-make} $makeargs
diff --git a/contrib/sendmail/mail.local/Makefile.m4 b/contrib/sendmail/mail.local/Makefile.m4
new file mode 100644
index 000000000000..5dc1857d3b7f
--- /dev/null
+++ b/contrib/sendmail/mail.local/Makefile.m4
@@ -0,0 +1,106 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.21 (Berkeley) 6/4/98
+#
+
+# C compiler
+CC= confCC
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# location of sendmail source directory
+SRCDIR= ifdef(`confSRCDIR', `confSRCDIR', `../../src')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= -DNOT_SENDMAIL ifdef(`confENVDEF', `confENVDEF')
+
+# see also conf.h for additional compilation flags
+
+# include directories
+INCDIRS=-I${SRCDIR} confINCDIRS
+
+# loader options
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# libraries required on your system
+LIBS= ifdef(`confLIBS', `confLIBS')
+
+# location of mail.local binary (usually /usr/sbin or /usr/etc)
+BINDIR= ${DESTDIR}ifdef(`confEBINDIR', `confEBINDIR', `/usr/libexec')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD')
+
+undivert(1)
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${ENVDEF}
+CFLAGS= $O ${COPTS}
+
+BEFORE= snprintf.c confBEFORE
+OBJS= mail.local.o snprintf.o ${OBJADD}
+
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-mandoc')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+BINOWN= ifdef(`confSBINOWN', `confSBINOWN', `root')
+BINGRP= ifdef(`confSBINGRP', `confSBINGRP', `bin')
+BINMODE=ifdef(`confSBINMODE', `confSBINMODE', `4555')
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+
+MANROOT=${DESTDIR}ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+ALL= mail.local mail.local.${MAN8SRC}
+
+all: ${ALL}
+
+mail.local: ${BEFORE} ${OBJS}
+ ${CC} -o mail.local ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
+
+snprintf.c: ${SRCDIR}/snprintf.c
+ -ln -s ${SRCDIR}/snprintf.c snprintf.c
+
+undivert(3)
+
+mail.local.${MAN8SRC}: mail.local.8
+ ${NROFF} ${MANDOC} mail.local.8 > mail.local.${MAN8SRC}
+
+install:
+ @echo "NOTE: This version of mail.local is not suited for some operating"
+ @echo " systems such as HP-UX and Solaris. Please consult the"
+ @echo " README file in the mail.local directory. You can force"
+ @echo " the install using '${MAKE} force-install'."
+
+force-install: install-mail.local install-docs
+
+install-mail.local: mail.local
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} mail.local ${BINDIR}
+
+install-docs: mail.local.${MAN8SRC}
+ifdef(`confNO_MAN_INSTALL', `dnl',
+` ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} mail.local.${MAN8SRC} ${MAN8}/mail.local.${MAN8EXT}')
+
+clean:
+ rm -f ${OBJS} mail.local mail.local.${MAN8SRC}
+
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE',
+`generic').m4)dnl
+################ End of dependency scripts
diff --git a/contrib/sendmail/mail.local/README b/contrib/sendmail/mail.local/README
new file mode 100644
index 000000000000..a20506831c9d
--- /dev/null
+++ b/contrib/sendmail/mail.local/README
@@ -0,0 +1,12 @@
+# @(#)README 8.1 (Berkeley) 2/17/98
+
+This directory contains the source files for mail.local.
+
+This is not intended to be used on *stock* System V derived systems such as
+Solaris or HP-UX, since they use a totally different approach to mailboxes
+(essentially, they have a setgid program rather than setuid, and they rely
+on the ability to "give away" files to do their work).
+
+If you choose to run *this* mail.local on these systems then you may also
+need to replace the existing MUAs, as well as IMAP and POP servers, with
+ones that are compatible with the BSD interface. You have been warned!
diff --git a/contrib/sendmail/mail.local/mail.local.8 b/contrib/sendmail/mail.local/mail.local.8
new file mode 100644
index 000000000000..e872fbedadf3
--- /dev/null
+++ b/contrib/sendmail/mail.local/mail.local.8
@@ -0,0 +1,92 @@
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\" Copyright (c) 1990, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\" @(#)mail.local.8 8.7 (Berkeley) 5/19/98
+.\"
+.Dd May 19, 1998
+.Dt MAIL.LOCAL 8
+.Os
+.Sh NAME
+.Nm mail.local
+.Nd store mail in a mailbox
+.Sh SYNOPSIS
+.Nm mail.local
+.Op Fl f Ar from
+.Ar user ...
+.Sh DESCRIPTION
+.Nm Mail.local
+reads the standard input up to an end-of-file and appends it to each
+.Ar user's
+.Pa mail
+file.
+The
+.Ar user
+must be a valid user name.
+.Pp
+The options are as follows:
+.Bl -tag -width xxxfrom
+.It Fl f Ar from
+Specify the sender's name.
+.El
+.Pp
+Individual mail messages in the mailbox are delimited by an empty
+line followed by a line beginning with the string ``From ''.
+A line containing the string ``From '', the sender's name and a time stamp
+is prepended to each delivered mail message.
+A blank line is appended to each message.
+A greater-than character (``>'') is prepended to any line in the message
+which could be mistaken for a ``From '' delimiter line
+(that is,
+a line beginning with the five characters
+``From '' following a blank line).
+.Pp
+The mail files are exclusively locked with
+.Xr flock 2
+while mail is appended,
+and a
+.Pa user.lock
+file also is created while the mailbox is locked
+for compatibility with older MUAs.
+.Pp
+If the ``biff'' service is returned by
+.Xr getservbyname 3 ,
+the biff server is notified of delivered mail.
+.Pp
+The
+.Nm mail.local
+utility exits 0 on success, and >0 if an error occurs.
+.Sh ENVIRONMENT
+.Bl -tag -width indent
+.It Ev TZ
+Used to set the appropriate time zone on the timestamp.
+.El
+.Sh FILES
+.Bl -tag -width /tmp/local.XXXXXX -compact
+.It Pa /tmp/local.XXXXXX
+temporary files
+.It Pa /var/mail/user
+user's mailbox directory
+.It Pa /var/mail/user.lock
+lock file for a user's mailbox
+.El
+.Sh SEE ALSO
+.Xr mail 1 ,
+.Xr xsend 1 ,
+.Xr flock 2 ,
+.Xr getservbyname 3 ,
+.Xr comsat 8 ,
+.Xr sendmail 8
+.Sh HISTORY
+A superset of
+.Nm mail.local
+(handling mailbox reading as well as mail delivery)
+appeared in
+.At v7 .
+as the program
+.Nm mail .
diff --git a/usr.sbin/sendmail/mail.local/mail.local.c b/contrib/sendmail/mail.local/mail.local.c
index e7f121103e09..a0f176f63811 100644
--- a/usr.sbin/sendmail/mail.local/mail.local.c
+++ b/contrib/sendmail/mail.local/mail.local.c
@@ -1,34 +1,12 @@
/*-
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
* Copyright (c) 1990, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
@@ -38,21 +16,22 @@ static char copyright[] =
#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)mail.local.c 8.43 (Berkeley) 8/2/97";
+static char sccsid[] = "@(#)mail.local.c 8.78 (Berkeley) 5/19/98";
#endif /* not lint */
/*
- * This is not intended to compile on System V derived systems
+ * This is not intended to work on System V derived systems
* such as Solaris or HP-UX, since they use a totally different
* approach to mailboxes (essentially, they have a setgid program
* rather than setuid, and they rely on the ability to "give away"
* files to do their work). IT IS NOT A BUG that this doesn't
- * compile on such architectures.
+ * work on such architectures.
*/
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/socket.h>
+#include <sys/file.h>
#include <netinet/in.h>
@@ -72,7 +51,7 @@ static char sccsid[] = "@(#)mail.local.c 8.43 (Berkeley) 8/2/97";
#include <sysexits.h>
#include <ctype.h>
-#if __STDC__
+#ifdef __STDC__
#include <stdarg.h>
#else
#include <varargs.h>
@@ -84,10 +63,35 @@ static char sccsid[] = "@(#)mail.local.c 8.43 (Berkeley) 8/2/97";
# define _PATH_MAILDIR "/var/mail"
#endif
+#if (defined(sun) && !defined(__svr4__)) && !defined(__SVR4)
+# ifdef __dead
+# undef __dead
+# define __dead
+# endif
+#endif
+
#if defined(_AIX)
# define USE_LOCKF 1
-# define USET_SETEUID 1
+# define USE_SETEUID 1
+# define USE_VSYSLOG 0
+#endif
+
+#if defined(__hpux)
+# define USE_LOCKF 1
+# define USE_SETRESUID 1
# define USE_VSYSLOG 0
+# ifdef __dead
+# undef __dead
+# define __dead
+# endif
+#endif
+
+#if defined(_CRAY)
+# if !defined(MAXPATHLEN)
+# define MAXPATHLEN PATHSIZE
+# endif
+# define USE_VSYSLOG 0
+# define _PATH_MAILDIR "/usr/spool/mail"
#endif
#if defined(ultrix)
@@ -106,6 +110,11 @@ static char sccsid[] = "@(#)mail.local.c 8.43 (Berkeley) 8/2/97";
# define S_IWUSR S_IWRITE
#endif
+#if defined(IRIX64) || defined(IRIX5) || defined(IRIX6)
+# include <paths.h>
+# define HASSTRERROR 1 /* has strerror(3) */
+#endif
+
/*
* If you don't have flock, you could try using lockf instead.
*/
@@ -123,7 +132,7 @@ static char sccsid[] = "@(#)mail.local.c 8.43 (Berkeley) 8/2/97";
# include <sys/file.h>
#endif
-#ifdef BSD4_4
+#if defined(BSD4_4) || defined(__GLIBC__)
# include "pathnames.h"
#endif
@@ -146,21 +155,40 @@ static char sccsid[] = "@(#)mail.local.c 8.43 (Berkeley) 8/2/97";
#ifdef BSD4_4
# define HAS_ST_GEN 1
#else
-# define _BSD_VA_LIST_ va_list
+# ifndef _BSD_VA_LIST_
+# define _BSD_VA_LIST_ va_list
+# endif
#endif
#if defined(BSD4_4) || defined(linux)
# define HASSNPRINTF 1
#else
-extern char *strerror __P((int));
-extern int snprintf __P((char *, size_t, const char *, ...));
+# ifndef ultrix
extern FILE *fdopen __P((int, const char *));
+# endif
#endif
#if SOLARIS >= 20600 || (SOLARIS < 10000 && SOLARIS >= 206)
# define HASSNPRINTF 1 /* has snprintf starting in 2.6 */
#endif
+#if !HASSNPRINTF
+extern int snprintf __P((char *, size_t, const char *, ...));
+# ifndef _CRAY
+extern int vsnprintf __P((char *, size_t, const char *, ...));
+# endif
+#endif
+
+#if defined(BSD4_4) || defined(__osf__) || defined(__GNU_LIBRARY__)
+# ifndef HASSTRERROR
+# define HASSTRERROR 1
+# endif
+#endif
+
+#if !HASSTRERROR
+extern char *strerror __P((int));
+#endif
+
/*
* If you don't have setreuid, and you have saved uids, and you have
* a seteuid() call that doesn't try to emulate using setuid(), then
@@ -170,6 +198,13 @@ extern FILE *fdopen __P((int, const char *));
# define setreuid(r, e) seteuid(e)
#endif
+/*
+ * And of course on hpux you have setresuid()
+ */
+#ifdef USE_SETRESUID
+# define setreuid(r, e) setresuid(-1, e, -1)
+#endif
+
#ifndef _PATH_LOCTMP
# define _PATH_LOCTMP "/tmp/local.XXXXXX"
#endif
@@ -181,18 +216,21 @@ extern FILE *fdopen __P((int, const char *));
# define S_ISREG(mode) (((mode) & _S_IFMT) == S_IFREG)
#endif
-int eval = EX_OK; /* sysexits.h error value. */
+int eval = EX_OK; /* sysexits.h error value. */
+int lmtpmode = 0;
+u_char tTdvect[100];
void deliver __P((int, char *));
void e_to_sys __P((int));
__dead void err __P((const char *, ...));
void notifybiff __P((char *));
-int store __P((char *));
+int store __P((char *, int));
void usage __P((void));
void vwarn __P((const char *, _BSD_VA_LIST_));
void warn __P((const char *, ...));
void lockmbox __P((char *));
void unlockmbox __P((void));
+void mailerr __P((const char *, const char *, ...));
int
main(argc, argv)
@@ -205,6 +243,7 @@ main(argc, argv)
char *from;
extern char *optarg;
extern int optind;
+ extern void dolmtp __P((void));
/* make sure we have some open file descriptors */
for (fd = 10; fd < 30; fd++)
@@ -220,7 +259,7 @@ main(argc, argv)
#endif
from = NULL;
- while ((ch = getopt(argc, argv, "df:r:")) != EOF)
+ while ((ch = getopt(argc, argv, "df:r:l")) != EOF)
switch(ch) {
case 'd': /* Backward compatible. */
break;
@@ -232,6 +271,9 @@ main(argc, argv)
}
from = optarg;
break;
+ case 'l':
+ lmtpmode++;
+ break;
case '?':
default:
usage();
@@ -239,6 +281,9 @@ main(argc, argv)
argc -= optind;
argv += optind;
+ if (lmtpmode)
+ dolmtp();
+
if (!*argv)
usage();
@@ -261,14 +306,280 @@ main(argc, argv)
* failures. This results in the delivery being reattempted later
* at the expense of repeated failures and multiple deliveries.
*/
- for (fd = store(from); *argv; ++argv)
+ for (fd = store(from, 0); *argv; ++argv)
deliver(fd, *argv);
exit(eval);
}
+char *
+parseaddr(s)
+ char *s;
+{
+ char *p;
+ int len;
+
+ if (*s++ != '<')
+ return NULL;
+
+ p = s;
+
+ /* at-domain-list */
+ while (*p == '@') {
+ p++;
+ if (*p == '[') {
+ p++;
+ while (isascii(*p) &&
+ (isalnum(*p) || *p == '.' ||
+ *p == '-' || *p == ':'))
+ p++;
+ if (*p++ != ']')
+ return NULL;
+ } else {
+ while ((isascii(*p) && isalnum(*p)) ||
+ *p == '.' || *p == '-')
+ p++;
+ }
+ if (*p == ',' && p[1] == '@')
+ p++;
+ else if (*p == ':' && p[1] != '@')
+ p++;
+ else
+ return NULL;
+ }
+
+ /* local-part */
+ if (*p == '\"') {
+ p++;
+ while (*p && *p != '\"') {
+ if (*p == '\\') {
+ if (!*++p)
+ return NULL;
+ }
+ p++;
+ }
+ if (!*p++)
+ return NULL;
+ } else {
+ while (*p && *p != '@' && *p != '>') {
+ if (*p == '\\') {
+ if (!*++p)
+ return NULL;
+ } else {
+ if (*p <= ' ' || (*p & 128) ||
+ strchr("<>()[]\\,;:\"", *p))
+ return NULL;
+ }
+ p++;
+ }
+ }
+
+ /* @domain */
+ if (*p == '@') {
+ p++;
+ if (*p == '[') {
+ p++;
+ while (isascii(*p) &&
+ (isalnum(*p) || *p == '.' ||
+ *p == '-' || *p == ':'))
+ p++;
+ if (*p++ != ']')
+ return NULL;
+ } else {
+ while ((isascii(*p) && isalnum(*p)) ||
+ *p == '.' || *p == '-')
+ p++;
+ }
+ }
+
+ if (*p++ != '>')
+ return NULL;
+ if (*p && *p != ' ')
+ return NULL;
+ len = p - s - 1;
+
+ p = malloc(len + 1);
+ if (p == NULL) {
+ printf("421 4.3.0 memory exhausted\r\n");
+ exit(EX_TEMPFAIL);
+ }
+
+ strncpy(p, s, len);
+ p[len] = '\0';
+ return p;
+}
+
+char *
+process_recipient(addr)
+ char *addr;
+{
+ if (getpwnam(addr) == NULL) {
+ return "550 5.1.1 user unknown";
+ }
+
+ return NULL;
+}
+
+
+#define RCPT_GROW 30
+
+void
+dolmtp()
+{
+ char *return_path = NULL;
+ char **rcpt_addr = NULL;
+ int rcpt_num = 0;
+ int rcpt_alloc = 0;
+ char myhostname[1024];
+ char buf[4096];
+ char *err;
+ int msgfd;
+ char *p;
+ int i;
+
+ gethostname(myhostname, sizeof myhostname - 1);
+
+ printf("220 %s LMTP ready\r\n", myhostname);
+ for (;;) {
+ fflush(stdout);
+ if (fgets(buf, sizeof(buf)-1, stdin) == NULL) {
+ exit(EX_OK);
+ }
+ p = buf + strlen(buf) - 1;
+ if (p >= buf && *p == '\n')
+ *p-- = '\0';
+ if (p >= buf && *p == '\r')
+ *p-- = '\0';
+
+ switch (buf[0]) {
+
+ case 'd':
+ case 'D':
+ if (strcasecmp(buf, "data") == 0) {
+ if (rcpt_num == 0) {
+ printf("503 5.5.1 No recipients\r\n");
+ continue;
+ }
+ msgfd = store(return_path, rcpt_num);
+ if (msgfd == -1)
+ continue;
+
+ for (i = 0; i < rcpt_num; i++) {
+ p = strchr(rcpt_addr[i], '+');
+ if (p != NULL)
+ *p++ = '\0';
+ deliver(msgfd, rcpt_addr[i]);
+ }
+ close(msgfd);
+ goto rset;
+ }
+ goto syntaxerr;
+
+ case 'l':
+ case 'L':
+ if (strncasecmp(buf, "lhlo ", 5) == 0) {
+ printf("250-%s\r\n250-8BITMIME\r\n250-ENHANCEDSTATUSCODES\r\n250 PIPELINING\r\n",
+ myhostname);
+ continue;
+ }
+ goto syntaxerr;
+
+ case 'm':
+ case 'M':
+ if (strncasecmp(buf, "mail ", 5) == 0) {
+ if (return_path != NULL) {
+ printf("503 5.5.1 Nested MAIL command\r\n");
+ continue;
+ }
+ if (strncasecmp(buf+5, "from:", 5) != 0 ||
+ ((return_path = parseaddr(buf+10)) == NULL)) {
+ printf("501 5.5.4 Syntax error in parameters\r\n");
+ continue;
+ }
+ printf("250 2.5.0 ok\r\n");
+ continue;
+ }
+ goto syntaxerr;
+
+ case 'n':
+ case 'N':
+ if (strcasecmp(buf, "noop") == 0) {
+ printf("250 2.0.0 ok\r\n");
+ continue;
+ }
+ goto syntaxerr;
+
+ case 'q':
+ case 'Q':
+ if (strcasecmp(buf, "quit") == 0) {
+ printf("221 2.0.0 bye\r\n");
+ exit(EX_OK);
+ }
+ goto syntaxerr;
+
+ case 'r':
+ case 'R':
+ if (strncasecmp(buf, "rcpt ", 5) == 0) {
+ if (return_path == NULL) {
+ printf("503 5.5.1 Need MAIL command\r\n");
+ continue;
+ }
+ if (rcpt_num >= rcpt_alloc) {
+ rcpt_alloc += RCPT_GROW;
+ rcpt_addr = (char **)
+ realloc((char *)rcpt_addr,
+ rcpt_alloc * sizeof(char **));
+ if (rcpt_addr == NULL) {
+ printf("421 4.3.0 memory exhausted\r\n");
+ exit(EX_TEMPFAIL);
+ }
+ }
+ if (strncasecmp(buf+5, "to:", 3) != 0 ||
+ ((rcpt_addr[rcpt_num] = parseaddr(buf+8)) == NULL)) {
+ printf("501 5.5.4 Syntax error in parameters\r\n");
+ continue;
+ }
+ if ((err = process_recipient(rcpt_addr[rcpt_num])) != NULL) {
+ printf("%s\r\n", err);
+ continue;
+ }
+ rcpt_num++;
+ printf("250 2.1.5 ok\r\n");
+ continue;
+ }
+ else if (strcasecmp(buf, "rset") == 0) {
+ printf("250 2.0.0 ok\r\n");
+
+ rset:
+ while (rcpt_num) {
+ free(rcpt_addr[--rcpt_num]);
+ }
+ if (return_path != NULL)
+ free(return_path);
+ return_path = NULL;
+ continue;
+ }
+ goto syntaxerr;
+
+ case 'v':
+ case 'V':
+ if (strncasecmp(buf, "vrfy ", 5) == 0) {
+ printf("252 2.3.3 try RCPT to attempt delivery\r\n");
+ continue;
+ }
+ goto syntaxerr;
+
+ default:
+ syntaxerr:
+ printf("500 5.5.2 Syntax error\r\n");
+ continue;
+ }
+ }
+}
+
int
-store(from)
+store(from, lmtprcpts)
char *from;
+ int lmtprcpts;
{
FILE *fp;
time_t tval;
@@ -278,16 +589,34 @@ store(from)
strcpy(tmpbuf, _PATH_LOCTMP);
if ((fd = mkstemp(tmpbuf)) == -1 || (fp = fdopen(fd, "w+")) == NULL) {
- e_to_sys(errno);
- err("unable to open temporary file");
+ if (lmtprcpts) {
+ printf("451 4.3.0 unable to open temporary file\r\n");
+ return -1;
+ } else {
+ e_to_sys(errno);
+ err("unable to open temporary file");
+ }
}
(void)unlink(tmpbuf);
+ if (lmtpmode) {
+ printf("354 go ahead\r\n");
+ fflush(stdout);
+ }
+
(void)time(&tval);
(void)fprintf(fp, "From %s %s", from, ctime(&tval));
line[0] = '\0';
for (eline = 1; fgets(line, sizeof(line), stdin);) {
+ if (line[strlen(line)-2] == '\r') {
+ strcpy(line+strlen(line)-2, "\n");
+ }
+ if (lmtprcpts && line[0] == '.') {
+ if (line[1] == '\n')
+ goto lmtpdot;
+ strcpy(line, line+1);
+ }
if (line[0] == '\n')
eline = 1;
else {
@@ -298,20 +627,44 @@ store(from)
}
(void)fprintf(fp, "%s", line);
if (ferror(fp)) {
- e_to_sys(errno);
- err("temporary file write error");
+ if (lmtprcpts) {
+ while (lmtprcpts--) {
+ printf("451 4.3.0 temporary file write error\r\n");
+ }
+ fclose(fp);
+ return -1;
+ } else {
+ e_to_sys(errno);
+ err("temporary file write error");
+ }
}
}
+ if (lmtprcpts) {
+ /* Got a premature EOF -- toss message and exit */
+ exit(EX_OK);
+ }
+
/* If message not newline terminated, need an extra. */
- if (!strchr(line, '\n'))
+ if (strchr(line, '\n') == NULL)
(void)putc('\n', fp);
+
+ lmtpdot:
+
/* Output a newline; note, empty messages are allowed. */
(void)putc('\n', fp);
if (fflush(fp) == EOF || ferror(fp)) {
- e_to_sys(errno);
- err("temporary file write error");
+ if (lmtprcpts) {
+ while (lmtprcpts--) {
+ printf("451 4.3.0 temporary file write error\r\n");
+ }
+ fclose(fp);
+ return -1;
+ } else {
+ e_to_sys(errno);
+ err("temporary file write error");
+ }
}
return (fd);
}
@@ -327,15 +680,25 @@ deliver(fd, name)
char *p;
char biffmsg[100], buf[8*1024], path[MAXPATHLEN];
off_t curoff;
+ extern char *quad_to_string();
/*
* Disallow delivery to unknown names -- special mailboxes can be
* handled in the sendmail aliases file.
*/
- if (!(pw = getpwnam(name))) {
+ if ((pw = getpwnam(name)) == NULL) {
if (eval != EX_TEMPFAIL)
eval = EX_UNAVAILABLE;
- warn("unknown name: %s", name);
+ if (lmtpmode) {
+ if (eval == EX_TEMPFAIL) {
+ printf("451 4.3.0 cannot lookup name: %s\r\n", name);
+ } else {
+ printf("550 5.1.1 unknown name: %s\r\n", name);
+ }
+ }
+ else {
+ warn("unknown name: %s", name);
+ }
return;
}
endpwent();
@@ -385,7 +748,7 @@ tryagain:
lockmbox(path);
if (lstat(path, &sb) < 0) {
mbfd = open(path,
- O_APPEND|O_CREAT|O_EXCL|O_WRONLY, S_IRUSR|S_IWUSR);
+ O_APPEND|O_CREAT|O_EXCL|O_WRONLY, S_IRUSR|S_IWUSR);
if (lstat(path, &sb) < 0)
{
eval = EX_CANTCREAT;
@@ -398,25 +761,24 @@ tryagain:
if (errno == EEXIST)
goto tryagain;
} else if (fchown(mbfd, pw->pw_uid, pw->pw_gid)) {
- e_to_sys(errno);
- warn("chown %u.%u: %s", pw->pw_uid, pw->pw_gid, name);
+ mailerr("451 4.3.0", "chown %u.%u: %s",
+ pw->pw_uid, pw->pw_gid, name);
goto err1;
}
} else if (sb.st_nlink != 1 || !S_ISREG(sb.st_mode)) {
- e_to_sys(errno);
- warn("%s: irregular file", path);
+ mailerr("550 5.2.0", "%s: irregular file", path);
goto err0;
} else if (sb.st_uid != pw->pw_uid) {
eval = EX_CANTCREAT;
- warn("%s: wrong ownership (%d)", path, sb.st_uid);
+ mailerr("550 5.2.0", "%s: wrong ownership (%d)",
+ path, sb.st_uid);
goto err0;
} else {
mbfd = open(path, O_APPEND|O_WRONLY, 0);
}
if (mbfd == -1) {
- e_to_sys(errno);
- warn("%s: %s", path, strerror(errno));
+ mailerr("450 4.2.0", "%s: %s", path, strerror(errno));
goto err0;
} else if (fstat(mbfd, &fsb) < 0 ||
fsb.st_nlink != 1 ||
@@ -435,26 +797,27 @@ tryagain:
/* Wait until we can get a lock on the file. */
if (flock(mbfd, LOCK_EX)) {
- e_to_sys(errno);
- warn("%s: %s", path, strerror(errno));
+ mailerr("450 4.2.0", "%s: %s", path, strerror(errno));
goto err1;
}
/* Get the starting offset of the new message for biff. */
curoff = lseek(mbfd, (off_t)0, SEEK_END);
- (void)snprintf(biffmsg, sizeof(biffmsg),
- sizeof curoff > sizeof(long) ? "%s@%qd\n" : "%s@%ld\n",
- name, curoff);
+ if (sizeof curoff > sizeof(long))
+ (void)snprintf(biffmsg, sizeof(biffmsg), "%s@%s\n",
+ name, quad_to_string(curoff));
+ else
+ (void)snprintf(biffmsg, sizeof(biffmsg), "%s@%ld\n",
+ name, curoff);
/* Copy the message into the file. */
if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) {
- e_to_sys(errno);
- warn("temporary file: %s", strerror(errno));
+ mailerr("450 4.2.0", "temporary file: %s",
+ strerror(errno));
goto err1;
}
if (setreuid(0, pw->pw_uid) < 0) {
- e_to_sys(errno);
- warn("setreuid(0, %d): %s (r=%d, e=%d)",
+ mailerr("450 4.2.0", "setreuid(0, %d): %s (r=%d, e=%d)",
pw->pw_uid, strerror(errno), getuid(), geteuid());
goto err1;
}
@@ -464,50 +827,53 @@ tryagain:
while ((nr = read(fd, buf, sizeof(buf))) > 0)
for (off = 0; off < nr; off += nw)
if ((nw = write(mbfd, buf + off, nr - off)) < 0) {
- e_to_sys(errno);
- warn("%s: %s", path, strerror(errno));
+ mailerr("450 4.2.0", "%s: %s",
+ path, strerror(errno));
goto err3;
}
if (nr < 0) {
- e_to_sys(errno);
- warn("temporary file: %s", strerror(errno));
+ mailerr("450 4.2.0", "temporary file: %s",
+ strerror(errno));
goto err3;
}
/* Flush to disk, don't wait for update. */
if (fsync(mbfd)) {
- e_to_sys(errno);
- warn("%s: %s", path, strerror(errno));
+ mailerr("450 4.2.0", "%s: %s", path, strerror(errno));
err3:
if (setreuid(0, 0) < 0) {
e_to_sys(errno);
- warn("setreuid(0, 0): %s", strerror(errno));
+ mailerr("450 4.2.0", "setreuid(0, 0): %s",
+ strerror(errno));
}
#ifdef DEBUG
printf("reset euid = %d\n", geteuid());
#endif
-err2: (void)ftruncate(mbfd, curoff);
+ (void)ftruncate(mbfd, curoff);
err1: (void)close(mbfd);
err0: unlockmbox();
return;
}
-
+
/* Close and check -- NFS doesn't write until the close. */
if (close(mbfd)) {
- e_to_sys(errno);
- warn("%s: %s", path, strerror(errno));
+ mailerr("450 4.2.0", "%s: %s", path, strerror(errno));
truncate(path, curoff);
} else
notifybiff(biffmsg);
if (setreuid(0, 0) < 0) {
- e_to_sys(errno);
- warn("setreuid(0, 0): %s", strerror(errno));
+ mailerr("450 4.2.0", "setreuid(0, 0): %s",
+ strerror(errno));
+ goto err0;
}
#ifdef DEBUG
printf("reset euid = %d\n", geteuid());
#endif
unlockmbox();
+ if (lmtpmode) {
+ printf("250 2.1.5 %s OK\r\n", name);
+ }
}
/*
@@ -530,7 +896,7 @@ lockmbox(path)
return;
if (strlen(path) + 6 > sizeof lockname)
return;
- sprintf(lockname, "%s.lock", path);
+ snprintf(lockname, sizeof lockname, "%s.lock", path);
for (;; sleep(5)) {
int fd;
struct stat st;
@@ -538,6 +904,8 @@ lockmbox(path)
fd = open(lockname, O_WRONLY|O_EXCL|O_CREAT, 0);
if (fd >= 0) {
+ /* defeat lock checking programs which test pid */
+ write(fd, "0", 2);
locked = 1;
close(fd);
return;
@@ -574,11 +942,11 @@ notifybiff(msg)
struct servent *sp;
int len;
- if (!addr.sin_family) {
+ if (addr.sin_family == 0) {
/* Be silent if biff service not available. */
- if (!(sp = getservbyname("biff", "udp")))
+ if ((sp = getservbyname("biff", "udp")) == NULL)
return;
- if (!(hp = gethostbyname("localhost"))) {
+ if ((hp = gethostbyname("localhost")) == NULL) {
warn("localhost: %s", strerror(errno));
return;
}
@@ -600,10 +968,40 @@ void
usage()
{
eval = EX_USAGE;
- err("usage: mail.local [-f from] user ...");
+ err("usage: mail.local [-l] [-f from] user ...");
}
-#if __STDC__
+void
+#ifdef __STDC__
+mailerr(const char *hdr, const char *fmt, ...)
+#else
+mailerr(hdr, fmt, va_alist)
+ const char *hdr;
+ const char *fmt;
+ va_dcl
+#endif
+{
+ va_list ap;
+
+#ifdef __STDC__
+ va_start(ap, fmt);
+#else
+ va_start(ap);
+#endif
+ if (lmtpmode)
+ {
+ printf("%s ", hdr);
+ vprintf(fmt, ap);
+ printf("\r\n");
+ }
+ else
+ {
+ e_to_sys(errno);
+ vwarn(fmt, ap);
+ }
+}
+
+#ifdef __STDC__
void
err(const char *fmt, ...)
#else
@@ -615,7 +1013,7 @@ err(fmt, va_alist)
{
va_list ap;
-#if __STDC__
+#ifdef __STDC__
va_start(ap, fmt);
#else
va_start(ap);
@@ -627,7 +1025,7 @@ err(fmt, va_alist)
}
void
-#if __STDC__
+#ifdef __STDC__
warn(const char *fmt, ...)
#else
warn(fmt, va_alist)
@@ -637,7 +1035,7 @@ warn(fmt, va_alist)
{
va_list ap;
-#if __STDC__
+#ifdef __STDC__
va_start(ap, fmt);
#else
va_start(ap);
@@ -669,7 +1067,7 @@ vwarn(fmt, ap)
{
char fmtbuf[10240];
- (void) vsprintf(fmtbuf, fmt, ap);
+ (void) vsnprintf(fmtbuf, sizeof fmtbuf, fmt, ap);
syslog(LOG_ERR, "%s", fmtbuf);
}
#endif
@@ -768,7 +1166,7 @@ e_to_sys(num)
}
}
-#if !defined(BSD4_4) && !defined(__osf__)
+#if !HASSTRERROR
char *
strerror(eno)
@@ -778,40 +1176,15 @@ strerror(eno)
extern char *sys_errlist[];
static char ebuf[60];
- if (eno >= 0 && eno <= sys_nerr)
+ if (eno >= 0 && eno < sys_nerr)
return sys_errlist[eno];
(void) sprintf(ebuf, "Error %d", eno);
return ebuf;
}
-#endif /* !defined(BSD4_4) && !defined(__osf__) */
-
-#if !HASSNPRINTF
-
-# if __STDC__
-snprintf(char *buf, size_t bufsiz, const char *fmt, ...)
-# else
-snprintf(buf, bufsiz, fmt, va_alist)
- char *buf;
- size_t bufsiz;
- const char *fmt;
- va_dcl
-# endif
-{
- va_list ap;
-
-# if __STDC__
- va_start(ap, fmt);
-# else
- va_start(ap);
-# endif
- vsprintf(buf, fmt, ap);
- va_end(ap);
-}
-
-#endif /* !HASSNPRINTF */
+#endif /* !HASSTRERROR */
-#ifdef ultrix
+#if defined(ultrix) || defined(_CRAY)
/*
* Copyright (c) 1987, 1993
@@ -931,7 +1304,7 @@ _gettemp(path, doopen)
if (*trv == 'z')
*trv++ = 'a';
else {
- if (isdigit(*trv))
+ if (isascii(*trv) && isdigit(*trv))
*trv = 'a';
else
++*trv;
diff --git a/contrib/sendmail/mail.local/pathnames.h b/contrib/sendmail/mail.local/pathnames.h
new file mode 100644
index 000000000000..5ec006866d85
--- /dev/null
+++ b/contrib/sendmail/mail.local/pathnames.h
@@ -0,0 +1,15 @@
+/*-
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ *
+ *
+ * @(#)pathnames.h 8.5 (Berkeley) 5/19/98
+ */
+#include <paths.h>
+
+#define _PATH_LOCTMP "/tmp/local.XXXXXX"
diff --git a/contrib/sendmail/mailstats/Build b/contrib/sendmail/mailstats/Build
new file mode 100755
index 000000000000..ab8a49d78cac
--- /dev/null
+++ b/contrib/sendmail/mailstats/Build
@@ -0,0 +1,513 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1993, 1996-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)Build 8.93 (Berkeley) 6/24/98
+#
+
+#
+# A quick-and-dirty script to compile sendmail and related programs
+# in the presence of multiple architectures. To use, just use
+# "sh Build".
+#
+
+trap "rm -f $obj/.settings$$; exit" 1 2 3 15
+
+cflag=""
+mflag=""
+sflag=""
+makeargs=""
+libdirs=""
+incdirs=""
+libsrch=""
+siteconfig=""
+EX_USAGE=64
+EX_NOINPUT=66
+EX_UNAVAILABLE=69
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -c) # clean out existing $obj tree
+ cflag=1
+ shift
+ ;;
+
+ -m) # show Makefile name only
+ mflag=1
+ shift
+ ;;
+
+ -E*) # environment variables to pass into Build
+ arg=`echo $1 | sed 's/^-E//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ -z "$arg" ]
+ then
+ echo "Empty -E flag" >&2
+ exit $EX_USAGE
+ else
+ case $arg
+ in
+ *=*) # check format
+ eval $arg
+ export `echo $arg | sed 's;=.*;;'`
+ ;;
+ *) # bad format
+ echo "Bad format for -E argument ($arg)" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ shift
+ fi
+ ;;
+
+ -L*) # set up LIBDIRS
+ libdirs="$libdirs $1"
+ shift
+ ;;
+
+ -I*) # set up INCDIRS
+ incdirs="$incdirs $1"
+ shift
+ ;;
+
+ -f*) # select site config file
+ arg=`echo $1 | sed 's/^-f//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ "$siteconfig" ]
+ then
+ echo "Only one -f flag allowed" >&2
+ exit $EX_USAGE
+ else
+ siteconfig=$arg
+ if [ -z "$siteconfig" ]
+ then
+ echo "Missing argument for -f flag" >&2
+ exit $EX_USAGE
+ elif [ ! -f "$siteconfig" ]
+ then
+ echo "${siteconfig}: File not found"
+ exit $EX_NOINPUT
+ else
+ shift # move past argument
+ fi
+ fi
+ ;;
+
+ -S) # skip auto-configure
+ sflag="-s"
+ shift
+ ;;
+
+ *) # pass argument to make
+ makeargs="$makeargs \"$1\""
+ shift
+ ;;
+ esac
+done
+
+#
+# Do heuristic guesses !ONLY! for machines that do not have uname
+#
+if [ -d /NextApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
+then
+ # probably a NeXT box
+ arch=`hostinfo | sed -n 's/.*Processor type: \([^ ]*\).*/\1/p'`
+ os=NeXT
+ rel=`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`
+elif [ -f /usr/sony/bin/machine -a -f /etc/osversion ]
+then
+ # probably a Sony NEWS 4.x
+ os=NEWS-OS
+ rel=`awk '{ print $3}' /etc/osversion`
+ arch=`/usr/sony/bin/machine`
+elif [ -d /usr/omron -a -f /bin/luna ]
+then
+ # probably a Omron LUNA
+ os=LUNA
+ if [ -f /bin/luna1 ] && /bin/luna1
+ then
+ rel=unios-b
+ arch=luna1
+ elif [ -f /bin/luna2 ] && /bin/luna2
+ then
+ rel=Mach
+ arch=luna2
+ elif [ -f /bin/luna88k ] && /bin/luna88k
+ then
+ rel=Mach
+ arch=luna88k
+ fi
+elif [ -d /usr/apollo -a -d \`node_data ]
+then
+ # probably a Apollo/DOMAIN
+ os=DomainOS
+ arch=$ISP
+ rel=`/usr/apollo/bin/bldt | grep Domain | awk '{ print $4 }' | sed -e 's/,//g'`
+fi
+
+if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
+then
+ arch=`uname -m | sed -e 's/ //g'`
+ os=`uname -s | sed -e 's/\//-/g' -e 's/ //g'`
+ rel=`uname -r | sed -e 's/(/-/g' -e 's/)//g'`
+fi
+
+#
+# Tweak the values we have already got. PLEASE LIMIT THESE to
+# tweaks that are absolutely necessary because your system uname
+# routine doesn't return something sufficiently unique. Don't do
+# it just because you don't like the name that is returned. You
+# can combine the architecture name with the os name to create a
+# unique Makefile name.
+#
+
+# tweak machine architecture
+case $arch
+in
+ sun4*) arch=sun4;;
+
+ 9000/*) arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
+
+ DS/907000) arch=ds90;;
+
+ NILE*) arch=NILE
+ os=`uname -v`;;
+esac
+
+# tweak operating system type and release
+node=`uname -n | sed -e 's/\//-/g' -e 's/ //g'`
+if [ "$os" = "$node" -a "$arch" = "i386" -a "$rel" = 3.2 -a "`uname -v`" = 2 ]
+then
+ # old versions of SCO UNIX set uname -s the same as uname -n
+ os=SCO_SV
+fi
+if [ "$rel" = 4.0 ]
+then
+ case $arch in
+ 3[34]??|3[34]??,*)
+ if [ -d /usr/sadm/sysadm/add-ons/WIN-TCP ]
+ then
+ os=NCR.MP-RAS.2.x
+ elif [ -d /usr/sadm/sysadm/add-ons/inet ]
+ then
+ os=NCR.MP-RAS.3.x
+ fi
+ ;;
+ esac
+fi
+
+case $os
+in
+ DYNIX-ptx) os=PTX;;
+ Paragon*) os=Paragon;;
+ HP-UX) rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
+ AIX) rela=$rel
+ rel=`uname -v`
+ case $rel in
+ 2) arch=""
+ ;;
+ 4) if [ "$rela" = "3" ]
+ then
+ arch=$rela
+ fi
+ ;;
+ esac
+ rel=$rel.$rela
+ ;;
+ BSD-386) os=BSD-OS;;
+ SCO_SV) os=SCO; rel=`uname -X | sed -n 's/Release = 3.2v//p'`;;
+ UNIX_System_V) if [ "$arch" = "ds90" ]
+ then
+ os="UXPDS"
+ rel=`uname -v | sed -e 's/\(V.*\)L.*/\1/'`
+ fi;;
+ SINIX-?) os=SINIX;;
+ DomainOS) case $rel in
+ 10.4*) rel=10.4;;
+ esac
+ ;;
+esac
+
+# get "base part" of operating system release
+rroot=`echo $rel | sed -e 's/\.[^.]*$//'`
+rbase=`echo $rel | sed -e 's/\..*//'`
+if [ "$rroot" = "$rbase" ]
+then
+ rroot=$rel
+fi
+
+# heuristic tweaks to clean up names -- PLEASE LIMIT THESE!
+if [ "$os" = "unix" ]
+then
+ # might be Altos System V
+ case $rel
+ in
+ 5.3*) os=Altos;;
+ esac
+elif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
+then
+ # might be a DYNIX/ptx 2.x system, which has a broken uname
+ if strings /lib/cpp | grep _SEQUENT_ > /dev/null
+ then
+ os=PTX
+ fi
+elif [ -d /usr/nec ]
+then
+ # NEC machine -- what is it running?
+ if [ "$os" = "UNIX_System_V" ]
+ then
+ os=EWS-UX_V
+ elif [ "$os" = "UNIX_SV" ]
+ then
+ os=UX4800
+ fi
+elif [ "$arch" = "mips" ]
+then
+ case $rel
+ in
+ 4_*)
+ if [ `uname -v` = "UMIPS" ]
+ then
+ os=RISCos
+ fi;;
+ esac
+fi
+
+# see if there is a "user suffix" specified
+if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
+then
+ sfx=""
+else
+ sfx=".${SENDMAIL_SUFFIX}"
+fi
+
+echo "Configuration: os=$os, rel=$rel, rbase=$rbase, rroot=$rroot, arch=$arch, sfx=$sfx"
+
+
+SMROOT=${SMROOT-..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+export SMROOT BUILDTOOLS
+
+# see if we are in a Build-able directory
+if [ ! -f Makefile.m4 ]; then
+ echo "Makefile.m4 not found. Build can only be run from a source directory."
+ exit $EX_UNAVAILABLE
+fi
+
+# now try to find a reasonable object directory
+if [ -r obj.$os.$rel.$arch$sfx ]; then
+ obj=obj.$os.$rel.$arch$sfx
+elif [ -r obj.$os.$rroot.$arch$sfx ]; then
+ obj=obj.$os.$rroot.$arch$sfx
+elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
+ obj=obj.$os.$rbase.x.$arch$sfx
+elif [ -r obj.$os.$rel$sfx ]; then
+ obj=obj.$os.$rel$sfx
+elif [ -r obj.$os.$rbase.x$sfx ]; then
+ obj=obj.$os.$rbase.x$sfx
+elif [ -r obj.$os.$arch$sfx ]; then
+ obj=obj.$os.$arch$sfx
+elif [ -r obj.$rel.$arch$sfx ]; then
+ obj=obj.$rel.$arch$sfx
+elif [ -r obj.$rbase.x.$arch$sfx ]; then
+ obj=obj.$rbase.x.$arch$sfx
+elif [ -r obj.$os$sfx ]; then
+ obj=obj.$os$sfx
+elif [ -r obj.$arch$sfx ]; then
+ obj=obj.$arch$sfx
+elif [ -r obj.$rel$sfx ]; then
+ obj=obj.$rel$sfx
+elif [ -r obj$sfx ]; then
+ obj=obj$sfx
+fi
+if [ -z "$obj" -o "$cflag" ]
+then
+ if [ -n "$obj" ]
+ then
+ echo "Clearing out existing $obj tree"
+ rm -rf $obj
+ else
+ # no existing obj directory -- try to create one if Makefile found
+ obj=obj.$os.$rel.$arch$sfx
+ fi
+ if [ -r $BUILDTOOLS/OS/$os.$rel.$arch$sfx ]; then
+ oscf=$os.$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel.$arch ]; then
+ oscf=$os.$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch$sfx ]; then
+ oscf=$os.$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch ]; then
+ oscf=$os.$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch$sfx ]; then
+ oscf=$os.$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch ]; then
+ oscf=$os.$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rel$sfx ]; then
+ oscf=$os.$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel ]; then
+ oscf=$os.$rel
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot$sfx ]; then
+ oscf=$os.$rroot$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot ]; then
+ oscf=$os.$rroot
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x$sfx ]; then
+ oscf=$os.$rbase.x$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x ]; then
+ oscf=$os.$rbase.x
+ elif [ -r $BUILDTOOLS/OS/$os.$arch$sfx ]; then
+ oscf=$os.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$arch ]; then
+ oscf=$os.$arch
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch$sfx ]; then
+ oscf=$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch ]; then
+ oscf=$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch$sfx ]; then
+ oscf=$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch ]; then
+ oscf=$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch$sfx ]; then
+ oscf=$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch ]; then
+ oscf=$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os$sfx ]; then
+ oscf=$os$sfx
+ elif [ -r $BUILDTOOLS/OS/$os ]; then
+ oscf=$os
+ elif [ -r $BUILDTOOLS/OS/$arch$sfx ]; then
+ oscf=$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$arch ]; then
+ oscf=$arch
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel ]; then
+ oscf=$rel
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ else
+ echo "Cannot determine how to support $arch.$os.$rel" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ ret=$?
+ if [ $ret -ne 0 ]
+ then
+ exit $ret
+ fi
+ echo "Using M4=$M4"
+ export M4
+ if [ "$mflag" ]
+ then
+ echo "Will run in virgin $obj using $BUILDTOOLS/OS/$oscf"
+ exit 0
+ fi
+ if [ "$ABI" ]
+ then
+ echo "Using ABI $ABI"
+ fi
+ echo "Creating $obj using $BUILDTOOLS/OS/$oscf"
+ mkdir $obj
+ (cd $obj; ln -s ../*.[ch158] .)
+ if [ -f sendmail.hf ]
+ then
+ (cd $obj; ln -s ../sendmail.hf .)
+ fi
+
+ rm -f $obj/.settings$$
+ echo 'divert(-1)' > $obj/.settings$$
+ cat $BUILDTOOLS/M4/header.m4 >> $obj/.settings$$
+ if [ "$ABI" ]
+ then
+ echo "define(\`confABI', \`$ABI')" >> $obj/.settings$$
+ fi
+ cat $BUILDTOOLS/OS/$oscf >> $obj/.settings$$
+
+ if [ -z "$siteconfig" ]
+ then
+ # none specified, use defaults
+ if [ -f $BUILDTOOLS/Site/site.$oscf$sfx.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf$sfx.m4
+ elif [ -f $BUILDTOOLS/Site/site.$oscf.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf.m4
+ fi
+ if [ -f $BUILDTOOLS/Site/site.config.m4 ]
+ then
+ siteconfig="$BUILDTOOLS/Site/site.config.m4 $siteconfig"
+ fi
+ fi
+ if [ ! -z "$siteconfig" ]
+ then
+ echo "Including $siteconfig"
+ cat $siteconfig >> $obj/.settings$$
+ fi
+ if [ "$libdirs" ]
+ then
+ echo "define(\`confLIBDIRS', confLIBDIRS \`\`$libdirs'')" >> $obj/.settings$$
+ fi
+ if [ "$incdirs" ]
+ then
+ echo "define(\`confINCDIRS', confINCDIRS \`\`$incdirs'')" >> $obj/.settings$$
+ fi
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ libdirs=`(cat $obj/.settings$$; echo "_SRIDBIL_= confLIBDIRS" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_SRIDBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_SRIDBIL_=//"`
+ libsrch=`(cat $obj/.settings$$; echo "_HCRSBIL_= confLIBSEARCH" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_HCRSBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_HCRSBIL_=//"`
+ echo 'divert(-1)' >> $obj/.settings$$
+ LIBDIRS="$libdirs" LIBSRCH="$libsrch" SITECONFIG="$siteconfig" sh $BUILDTOOLS/bin/configure.sh $sflag $oscf >> $obj/.settings$$
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' $obj/.settings$$ | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - Makefile.m4 | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' > $obj/Makefile
+ if [ $? -ne 0 -o ! -s $obj/Makefile ]
+ then
+ echo "ERROR: ${M4} failed; You may need a newer version of M4, at least as new as System V or GNU" 1>&2
+ rm -rf $obj
+ exit $EX_UNAVAILABLE
+ fi
+ rm -f $obj/.settings$$
+ echo "Making dependencies in $obj"
+ (cd $obj; ${MAKE-make} depend)
+fi
+
+if [ "$mflag" ]
+then
+ makefile=`ls -l $obj/Makefile | sed 's/.* //'`
+ if [ -z "$makefile" ]
+ then
+ echo "ERROR: $obj exists but has no Makefile" >&2
+ exit $EX_NOINPUT
+ fi
+ echo "Will run in existing $obj using $makefile"
+ exit 0
+fi
+
+echo "Making in $obj"
+cd $obj
+eval exec ${MAKE-make} $makeargs
diff --git a/contrib/sendmail/mailstats/Makefile.m4 b/contrib/sendmail/mailstats/Makefile.m4
new file mode 100644
index 000000000000..ae5489c62eee
--- /dev/null
+++ b/contrib/sendmail/mailstats/Makefile.m4
@@ -0,0 +1,97 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.14 (Berkeley) 6/4/98
+#
+
+# C compiler
+CC= confCC
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# location of sendmail source directory
+SRCDIR= ifdef(`confSRCDIR', `confSRCDIR', `../../src')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= ifdef(`confENVDEF', `confENVDEF')
+
+# see also conf.h for additional compilation flags
+
+# include directories
+INCDIRS=-I${SRCDIR} confINCDIRS
+
+# loader options
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# libraries required on your system
+LIBS= ifdef(`confLIBS', `confLIBS')
+
+# location of mailstats binary (usually /usr/sbin or /usr/etc)
+BINDIR= ${DESTDIR}ifdef(`confSBINDIR', `confSBINDIR', `/usr/sbin')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD')
+
+undivert(1)
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${ENVDEF}
+CFLAGS= $O ${COPTS}
+
+BEFORE= confBEFORE
+OBJS= mailstats.o ${OBJADD}
+
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-mandoc')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+BINOWN= ifdef(`confUBINOWN', `confUBINOWN', `bin')
+BINGRP= ifdef(`confUBINGRP', `confUBINGRP', `bin')
+BINMODE=ifdef(`confUBINMODE', `confUBINMODE', `555')
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+
+MANROOT=${DESTDIR}ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+ALL= mailstats mailstats.${MAN8SRC}
+
+all: ${ALL}
+
+mailstats: ${BEFORE} ${OBJS}
+ ${CC} -o mailstats ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
+
+undivert(3)
+
+mailstats.${MAN8SRC}: mailstats.8
+ ${NROFF} ${MANDOC} mailstats.8 > mailstats.${MAN8SRC}
+
+install: install-mailstats install-docs
+
+install-mailstats: mailstats
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} mailstats ${BINDIR}
+
+install-docs: mailstats.${MAN8SRC}
+ifdef(`confNO_MAN_INSTALL', `dnl',
+` ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} mailstats.${MAN8SRC} ${MAN8}/mailstats.${MAN8EXT}')
+
+clean:
+ rm -f ${OBJS} mailstats mailstats.${MAN8SRC}
+
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE',
+`generic').m4)dnl
+################ End of dependency scripts
diff --git a/usr.sbin/sendmail/mailstats/mailstats.8 b/contrib/sendmail/mailstats/mailstats.8
index 3fe87c947660..3a8847a6f647 100644
--- a/usr.sbin/sendmail/mailstats/mailstats.8
+++ b/contrib/sendmail/mailstats/mailstats.8
@@ -1,4 +1,12 @@
-.\" @(#)mailstats.8 8.1 (Berkeley) 9/21/96
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\" @(#)mailstats.8 8.5 (Berkeley) 5/19/98
+.\"
.Dd April 25, 1996
.Dt MAILSTATS 1
.Os BSD 3
diff --git a/usr.sbin/sendmail/mailstats/mailstats.c b/contrib/sendmail/mailstats/mailstats.c
index ffbb2bbf8a86..6fda6db391a1 100644
--- a/usr.sbin/sendmail/mailstats/mailstats.c
+++ b/contrib/sendmail/mailstats/mailstats.c
@@ -1,35 +1,13 @@
/*
- * Copyright (c) 1983 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*
*/
@@ -40,16 +18,19 @@ static char copyright[] =
#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)mailstats.c 8.10 (Berkeley) 5/30/97";
+static char sccsid[] = "@(#)mailstats.c 8.26 (Berkeley) 7/2/98";
#endif /* not lint */
-#define NOT_SENDMAIL
+#ifndef NOT_SENDMAIL
+# define NOT_SENDMAIL
+#endif
#include <sendmail.h>
#include <mailstats.h>
#include <pathnames.h>
#define MNAMELEN 20 /* max length of mailer name */
+int
main(argc, argv)
int argc;
char **argv;
@@ -64,7 +45,8 @@ main(argc, argv)
char *cfile;
FILE *cfp;
bool mnames;
- long frmsgs = 0, frbytes = 0, tomsgs = 0, tobytes = 0;
+ long frmsgs = 0, frbytes = 0, tomsgs = 0, tobytes = 0, rejmsgs = 0;
+ long dismsgs = 0;
char mtable[MAXMAILERS][MNAMELEN+1];
char sfilebuf[MAXLINE];
char buf[MAXLINE];
@@ -129,13 +111,13 @@ main(argc, argv)
case 'O': /* option -- see if .st file */
if (strncasecmp(b, " StatusFile", 11) == 0 &&
- !isalnum(b[11]))
+ !(isascii(b[11]) && isalnum(b[11])))
{
/* new form -- find value */
b = strchr(b, '=');
if (b == NULL)
continue;
- while (isspace(*++b))
+ while (isascii(*++b) && isspace(*b))
continue;
}
else if (*b++ != 'S')
@@ -149,7 +131,7 @@ main(argc, argv)
{
fprintf(stderr,
"StatusFile filename too long: %.30s...\n",
- s);
+ b);
exit(EX_CONFIG);
}
strcpy(sfilebuf, b);
@@ -158,7 +140,7 @@ main(argc, argv)
b = strchr(sfilebuf, '\n');
if (b == NULL)
b = &sfilebuf[strlen(sfilebuf)];
- while (isspace(*--b))
+ while (isascii(*--b) && isspace(*b))
continue;
*++b = '\0';
if (sfile == NULL)
@@ -177,7 +159,8 @@ main(argc, argv)
}
m = mtable[mno];
s = m + MNAMELEN; /* is [MNAMELEN+1] */
- while (*b != ',' && !isspace(*b) && *b != '\0' && m < s)
+ while (*b != ',' && !(isascii(*b) && isspace(*b)) &&
+ *b != '\0' && m < s)
*m++ = *b++;
*m = '\0';
for (i = 0; i < mno; i++)
@@ -208,29 +191,53 @@ main(argc, argv)
if (i == 0)
{
sleep(1);
- i = read(fd, &stat, sizeof stat);
- if (i == 0)
+ if ((i = read(fd, &stat, sizeof stat)) < 0)
+ {
+ fputs("mailstats: ", stderr);
+ perror(sfile);
+ exit(EX_NOINPUT);
+ }
+ else if (i == 0)
{
bzero((ARBPTR_T) &stat, sizeof stat);
(void) time(&stat.stat_itime);
}
}
- else if (i != sizeof stat || stat.stat_size != sizeof(stat))
+ if (i != 0)
{
- fputs("mailstats: file size changed.\n", stderr);
- exit(EX_OSERR);
+ if (stat.stat_magic != STAT_MAGIC)
+ {
+ fprintf(stderr,
+ "mailstats: incorrect magic number in %s\n",
+ sfile);
+ exit(EX_OSERR);
+ }
+ else if (stat.stat_version != STAT_VERSION)
+ {
+ fprintf(stderr,
+ "mailstats version (%d) incompatible with %s version(%d)\n",
+ STAT_VERSION, sfile, stat.stat_version);
+ exit(EX_OSERR);
+ }
+ else if (i != sizeof stat || stat.stat_size != sizeof(stat))
+ {
+ fputs("mailstats: file size changed.\n", stderr);
+ exit(EX_OSERR);
+ }
}
printf("Statistics from %s", ctime(&stat.stat_itime));
- printf(" M msgsfr bytes_from msgsto bytes_to%s\n",
+ printf(" M msgsfr bytes_from msgsto bytes_to msgsrej msgsdis%s\n",
mnames ? " Mailer" : "");
for (i = 0; i < MAXMAILERS; i++)
{
- if (stat.stat_nf[i] || stat.stat_nt[i])
+ if (stat.stat_nf[i] || stat.stat_nt[i] ||
+ stat.stat_nr[i] || stat.stat_nd[i])
{
- printf("%2d %6ld %10ldK %6ld %10ldK", i,
+ printf("%2d %8ld %10ldK %8ld %10ldK %6ld %6ld", i,
stat.stat_nf[i], stat.stat_bf[i],
- stat.stat_nt[i], stat.stat_bt[i]);
+ stat.stat_nt[i], stat.stat_bt[i],
+ stat.stat_nr[i], stat.stat_nd[i]);
if (mnames)
printf(" %s", mtable[i]);
printf("\n");
@@ -238,10 +245,12 @@ main(argc, argv)
frbytes += stat.stat_bf[i];
tomsgs += stat.stat_nt[i];
tobytes += stat.stat_bt[i];
+ rejmsgs += stat.stat_nr[i];
+ dismsgs += stat.stat_nd[i];
}
}
- printf("========================================\n");
- printf(" T %6ld %10ldK %6ld %10ldK\n",
- frmsgs, frbytes, tomsgs, tobytes);
+ printf("=============================================================\n");
+ printf(" T %8ld %10ldK %8ld %10ldK %6ld %6ld\n",
+ frmsgs, frbytes, tomsgs, tobytes, rejmsgs, dismsgs);
exit(EX_OK);
}
diff --git a/contrib/sendmail/makemap/Build b/contrib/sendmail/makemap/Build
new file mode 100755
index 000000000000..ab8a49d78cac
--- /dev/null
+++ b/contrib/sendmail/makemap/Build
@@ -0,0 +1,513 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1993, 1996-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)Build 8.93 (Berkeley) 6/24/98
+#
+
+#
+# A quick-and-dirty script to compile sendmail and related programs
+# in the presence of multiple architectures. To use, just use
+# "sh Build".
+#
+
+trap "rm -f $obj/.settings$$; exit" 1 2 3 15
+
+cflag=""
+mflag=""
+sflag=""
+makeargs=""
+libdirs=""
+incdirs=""
+libsrch=""
+siteconfig=""
+EX_USAGE=64
+EX_NOINPUT=66
+EX_UNAVAILABLE=69
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -c) # clean out existing $obj tree
+ cflag=1
+ shift
+ ;;
+
+ -m) # show Makefile name only
+ mflag=1
+ shift
+ ;;
+
+ -E*) # environment variables to pass into Build
+ arg=`echo $1 | sed 's/^-E//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ -z "$arg" ]
+ then
+ echo "Empty -E flag" >&2
+ exit $EX_USAGE
+ else
+ case $arg
+ in
+ *=*) # check format
+ eval $arg
+ export `echo $arg | sed 's;=.*;;'`
+ ;;
+ *) # bad format
+ echo "Bad format for -E argument ($arg)" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ shift
+ fi
+ ;;
+
+ -L*) # set up LIBDIRS
+ libdirs="$libdirs $1"
+ shift
+ ;;
+
+ -I*) # set up INCDIRS
+ incdirs="$incdirs $1"
+ shift
+ ;;
+
+ -f*) # select site config file
+ arg=`echo $1 | sed 's/^-f//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ "$siteconfig" ]
+ then
+ echo "Only one -f flag allowed" >&2
+ exit $EX_USAGE
+ else
+ siteconfig=$arg
+ if [ -z "$siteconfig" ]
+ then
+ echo "Missing argument for -f flag" >&2
+ exit $EX_USAGE
+ elif [ ! -f "$siteconfig" ]
+ then
+ echo "${siteconfig}: File not found"
+ exit $EX_NOINPUT
+ else
+ shift # move past argument
+ fi
+ fi
+ ;;
+
+ -S) # skip auto-configure
+ sflag="-s"
+ shift
+ ;;
+
+ *) # pass argument to make
+ makeargs="$makeargs \"$1\""
+ shift
+ ;;
+ esac
+done
+
+#
+# Do heuristic guesses !ONLY! for machines that do not have uname
+#
+if [ -d /NextApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
+then
+ # probably a NeXT box
+ arch=`hostinfo | sed -n 's/.*Processor type: \([^ ]*\).*/\1/p'`
+ os=NeXT
+ rel=`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`
+elif [ -f /usr/sony/bin/machine -a -f /etc/osversion ]
+then
+ # probably a Sony NEWS 4.x
+ os=NEWS-OS
+ rel=`awk '{ print $3}' /etc/osversion`
+ arch=`/usr/sony/bin/machine`
+elif [ -d /usr/omron -a -f /bin/luna ]
+then
+ # probably a Omron LUNA
+ os=LUNA
+ if [ -f /bin/luna1 ] && /bin/luna1
+ then
+ rel=unios-b
+ arch=luna1
+ elif [ -f /bin/luna2 ] && /bin/luna2
+ then
+ rel=Mach
+ arch=luna2
+ elif [ -f /bin/luna88k ] && /bin/luna88k
+ then
+ rel=Mach
+ arch=luna88k
+ fi
+elif [ -d /usr/apollo -a -d \`node_data ]
+then
+ # probably a Apollo/DOMAIN
+ os=DomainOS
+ arch=$ISP
+ rel=`/usr/apollo/bin/bldt | grep Domain | awk '{ print $4 }' | sed -e 's/,//g'`
+fi
+
+if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
+then
+ arch=`uname -m | sed -e 's/ //g'`
+ os=`uname -s | sed -e 's/\//-/g' -e 's/ //g'`
+ rel=`uname -r | sed -e 's/(/-/g' -e 's/)//g'`
+fi
+
+#
+# Tweak the values we have already got. PLEASE LIMIT THESE to
+# tweaks that are absolutely necessary because your system uname
+# routine doesn't return something sufficiently unique. Don't do
+# it just because you don't like the name that is returned. You
+# can combine the architecture name with the os name to create a
+# unique Makefile name.
+#
+
+# tweak machine architecture
+case $arch
+in
+ sun4*) arch=sun4;;
+
+ 9000/*) arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
+
+ DS/907000) arch=ds90;;
+
+ NILE*) arch=NILE
+ os=`uname -v`;;
+esac
+
+# tweak operating system type and release
+node=`uname -n | sed -e 's/\//-/g' -e 's/ //g'`
+if [ "$os" = "$node" -a "$arch" = "i386" -a "$rel" = 3.2 -a "`uname -v`" = 2 ]
+then
+ # old versions of SCO UNIX set uname -s the same as uname -n
+ os=SCO_SV
+fi
+if [ "$rel" = 4.0 ]
+then
+ case $arch in
+ 3[34]??|3[34]??,*)
+ if [ -d /usr/sadm/sysadm/add-ons/WIN-TCP ]
+ then
+ os=NCR.MP-RAS.2.x
+ elif [ -d /usr/sadm/sysadm/add-ons/inet ]
+ then
+ os=NCR.MP-RAS.3.x
+ fi
+ ;;
+ esac
+fi
+
+case $os
+in
+ DYNIX-ptx) os=PTX;;
+ Paragon*) os=Paragon;;
+ HP-UX) rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
+ AIX) rela=$rel
+ rel=`uname -v`
+ case $rel in
+ 2) arch=""
+ ;;
+ 4) if [ "$rela" = "3" ]
+ then
+ arch=$rela
+ fi
+ ;;
+ esac
+ rel=$rel.$rela
+ ;;
+ BSD-386) os=BSD-OS;;
+ SCO_SV) os=SCO; rel=`uname -X | sed -n 's/Release = 3.2v//p'`;;
+ UNIX_System_V) if [ "$arch" = "ds90" ]
+ then
+ os="UXPDS"
+ rel=`uname -v | sed -e 's/\(V.*\)L.*/\1/'`
+ fi;;
+ SINIX-?) os=SINIX;;
+ DomainOS) case $rel in
+ 10.4*) rel=10.4;;
+ esac
+ ;;
+esac
+
+# get "base part" of operating system release
+rroot=`echo $rel | sed -e 's/\.[^.]*$//'`
+rbase=`echo $rel | sed -e 's/\..*//'`
+if [ "$rroot" = "$rbase" ]
+then
+ rroot=$rel
+fi
+
+# heuristic tweaks to clean up names -- PLEASE LIMIT THESE!
+if [ "$os" = "unix" ]
+then
+ # might be Altos System V
+ case $rel
+ in
+ 5.3*) os=Altos;;
+ esac
+elif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
+then
+ # might be a DYNIX/ptx 2.x system, which has a broken uname
+ if strings /lib/cpp | grep _SEQUENT_ > /dev/null
+ then
+ os=PTX
+ fi
+elif [ -d /usr/nec ]
+then
+ # NEC machine -- what is it running?
+ if [ "$os" = "UNIX_System_V" ]
+ then
+ os=EWS-UX_V
+ elif [ "$os" = "UNIX_SV" ]
+ then
+ os=UX4800
+ fi
+elif [ "$arch" = "mips" ]
+then
+ case $rel
+ in
+ 4_*)
+ if [ `uname -v` = "UMIPS" ]
+ then
+ os=RISCos
+ fi;;
+ esac
+fi
+
+# see if there is a "user suffix" specified
+if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
+then
+ sfx=""
+else
+ sfx=".${SENDMAIL_SUFFIX}"
+fi
+
+echo "Configuration: os=$os, rel=$rel, rbase=$rbase, rroot=$rroot, arch=$arch, sfx=$sfx"
+
+
+SMROOT=${SMROOT-..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+export SMROOT BUILDTOOLS
+
+# see if we are in a Build-able directory
+if [ ! -f Makefile.m4 ]; then
+ echo "Makefile.m4 not found. Build can only be run from a source directory."
+ exit $EX_UNAVAILABLE
+fi
+
+# now try to find a reasonable object directory
+if [ -r obj.$os.$rel.$arch$sfx ]; then
+ obj=obj.$os.$rel.$arch$sfx
+elif [ -r obj.$os.$rroot.$arch$sfx ]; then
+ obj=obj.$os.$rroot.$arch$sfx
+elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
+ obj=obj.$os.$rbase.x.$arch$sfx
+elif [ -r obj.$os.$rel$sfx ]; then
+ obj=obj.$os.$rel$sfx
+elif [ -r obj.$os.$rbase.x$sfx ]; then
+ obj=obj.$os.$rbase.x$sfx
+elif [ -r obj.$os.$arch$sfx ]; then
+ obj=obj.$os.$arch$sfx
+elif [ -r obj.$rel.$arch$sfx ]; then
+ obj=obj.$rel.$arch$sfx
+elif [ -r obj.$rbase.x.$arch$sfx ]; then
+ obj=obj.$rbase.x.$arch$sfx
+elif [ -r obj.$os$sfx ]; then
+ obj=obj.$os$sfx
+elif [ -r obj.$arch$sfx ]; then
+ obj=obj.$arch$sfx
+elif [ -r obj.$rel$sfx ]; then
+ obj=obj.$rel$sfx
+elif [ -r obj$sfx ]; then
+ obj=obj$sfx
+fi
+if [ -z "$obj" -o "$cflag" ]
+then
+ if [ -n "$obj" ]
+ then
+ echo "Clearing out existing $obj tree"
+ rm -rf $obj
+ else
+ # no existing obj directory -- try to create one if Makefile found
+ obj=obj.$os.$rel.$arch$sfx
+ fi
+ if [ -r $BUILDTOOLS/OS/$os.$rel.$arch$sfx ]; then
+ oscf=$os.$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel.$arch ]; then
+ oscf=$os.$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch$sfx ]; then
+ oscf=$os.$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch ]; then
+ oscf=$os.$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch$sfx ]; then
+ oscf=$os.$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch ]; then
+ oscf=$os.$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rel$sfx ]; then
+ oscf=$os.$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel ]; then
+ oscf=$os.$rel
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot$sfx ]; then
+ oscf=$os.$rroot$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot ]; then
+ oscf=$os.$rroot
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x$sfx ]; then
+ oscf=$os.$rbase.x$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x ]; then
+ oscf=$os.$rbase.x
+ elif [ -r $BUILDTOOLS/OS/$os.$arch$sfx ]; then
+ oscf=$os.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$arch ]; then
+ oscf=$os.$arch
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch$sfx ]; then
+ oscf=$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch ]; then
+ oscf=$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch$sfx ]; then
+ oscf=$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch ]; then
+ oscf=$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch$sfx ]; then
+ oscf=$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch ]; then
+ oscf=$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os$sfx ]; then
+ oscf=$os$sfx
+ elif [ -r $BUILDTOOLS/OS/$os ]; then
+ oscf=$os
+ elif [ -r $BUILDTOOLS/OS/$arch$sfx ]; then
+ oscf=$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$arch ]; then
+ oscf=$arch
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel ]; then
+ oscf=$rel
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ else
+ echo "Cannot determine how to support $arch.$os.$rel" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ ret=$?
+ if [ $ret -ne 0 ]
+ then
+ exit $ret
+ fi
+ echo "Using M4=$M4"
+ export M4
+ if [ "$mflag" ]
+ then
+ echo "Will run in virgin $obj using $BUILDTOOLS/OS/$oscf"
+ exit 0
+ fi
+ if [ "$ABI" ]
+ then
+ echo "Using ABI $ABI"
+ fi
+ echo "Creating $obj using $BUILDTOOLS/OS/$oscf"
+ mkdir $obj
+ (cd $obj; ln -s ../*.[ch158] .)
+ if [ -f sendmail.hf ]
+ then
+ (cd $obj; ln -s ../sendmail.hf .)
+ fi
+
+ rm -f $obj/.settings$$
+ echo 'divert(-1)' > $obj/.settings$$
+ cat $BUILDTOOLS/M4/header.m4 >> $obj/.settings$$
+ if [ "$ABI" ]
+ then
+ echo "define(\`confABI', \`$ABI')" >> $obj/.settings$$
+ fi
+ cat $BUILDTOOLS/OS/$oscf >> $obj/.settings$$
+
+ if [ -z "$siteconfig" ]
+ then
+ # none specified, use defaults
+ if [ -f $BUILDTOOLS/Site/site.$oscf$sfx.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf$sfx.m4
+ elif [ -f $BUILDTOOLS/Site/site.$oscf.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf.m4
+ fi
+ if [ -f $BUILDTOOLS/Site/site.config.m4 ]
+ then
+ siteconfig="$BUILDTOOLS/Site/site.config.m4 $siteconfig"
+ fi
+ fi
+ if [ ! -z "$siteconfig" ]
+ then
+ echo "Including $siteconfig"
+ cat $siteconfig >> $obj/.settings$$
+ fi
+ if [ "$libdirs" ]
+ then
+ echo "define(\`confLIBDIRS', confLIBDIRS \`\`$libdirs'')" >> $obj/.settings$$
+ fi
+ if [ "$incdirs" ]
+ then
+ echo "define(\`confINCDIRS', confINCDIRS \`\`$incdirs'')" >> $obj/.settings$$
+ fi
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ libdirs=`(cat $obj/.settings$$; echo "_SRIDBIL_= confLIBDIRS" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_SRIDBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_SRIDBIL_=//"`
+ libsrch=`(cat $obj/.settings$$; echo "_HCRSBIL_= confLIBSEARCH" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_HCRSBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_HCRSBIL_=//"`
+ echo 'divert(-1)' >> $obj/.settings$$
+ LIBDIRS="$libdirs" LIBSRCH="$libsrch" SITECONFIG="$siteconfig" sh $BUILDTOOLS/bin/configure.sh $sflag $oscf >> $obj/.settings$$
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' $obj/.settings$$ | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - Makefile.m4 | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' > $obj/Makefile
+ if [ $? -ne 0 -o ! -s $obj/Makefile ]
+ then
+ echo "ERROR: ${M4} failed; You may need a newer version of M4, at least as new as System V or GNU" 1>&2
+ rm -rf $obj
+ exit $EX_UNAVAILABLE
+ fi
+ rm -f $obj/.settings$$
+ echo "Making dependencies in $obj"
+ (cd $obj; ${MAKE-make} depend)
+fi
+
+if [ "$mflag" ]
+then
+ makefile=`ls -l $obj/Makefile | sed 's/.* //'`
+ if [ -z "$makefile" ]
+ then
+ echo "ERROR: $obj exists but has no Makefile" >&2
+ exit $EX_NOINPUT
+ fi
+ echo "Will run in existing $obj using $makefile"
+ exit 0
+fi
+
+echo "Making in $obj"
+cd $obj
+eval exec ${MAKE-make} $makeargs
diff --git a/contrib/sendmail/makemap/Makefile.m4 b/contrib/sendmail/makemap/Makefile.m4
new file mode 100644
index 000000000000..0f0c242d8958
--- /dev/null
+++ b/contrib/sendmail/makemap/Makefile.m4
@@ -0,0 +1,110 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.20 (Berkeley) 6/4/98
+#
+
+# C compiler
+CC= confCC
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# location of sendmail source directory
+SRCDIR= ifdef(`confSRCDIR', `confSRCDIR', `../../src')
+
+# define the database mechanisms available for map & alias lookups:
+# -DNDBM -- use new DBM
+# -DNEWDB -- use new Berkeley DB
+# The really old (V7) DBM library is no longer supported.
+#
+MAPDEF= ifdef(`confMAPDEF', `confMAPDEF')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= -DNOT_SENDMAIL ifdef(`confENVDEF', `confENVDEF')
+
+# see also conf.h for additional compilation flags
+
+# include directories
+INCDIRS=-I${SRCDIR} confINCDIRS
+
+# loader options
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# libraries required on your system
+LIBS= ifdef(`confLIBS', `confLIBS')
+
+# location of makemap binary (usually /usr/sbin or /usr/etc)
+BINDIR= ${DESTDIR}ifdef(`confSBINDIR', `confSBINDIR', `/usr/sbin')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD')
+
+undivert(1)
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${MAPDEF} ${ENVDEF}
+CFLAGS= $O ${COPTS}
+
+BEFORE= confBEFORE safefile.c snprintf.c
+OBJS= makemap.o safefile.o snprintf.o ${OBJADD}
+
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-mandoc')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+BINOWN= ifdef(`confUBINOWN', `confUBINOWN', `bin')
+BINGRP= ifdef(`confUBINGRP', `confUBINGRP', `bin')
+BINMODE=ifdef(`confUBINMODE', `confUBINMODE', `555')
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+
+MANROOT=${DESTDIR}ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+ALL= makemap makemap.${MAN8SRC}
+
+all: ${ALL}
+
+makemap: ${BEFORE} ${OBJS}
+ ${CC} -o makemap ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
+
+safefile.c: ${SRCDIR}/safefile.c
+ -ln -s ${SRCDIR}/safefile.c safefile.c
+
+snprintf.c: ${SRCDIR}/snprintf.c
+ -ln -s ${SRCDIR}/snprintf.c snprintf.c
+
+undivert(3)
+
+makemap.${MAN8SRC}: makemap.8
+ ${NROFF} ${MANDOC} makemap.8 > makemap.${MAN8SRC}
+
+install: install-makemap install-docs
+
+install-makemap: makemap
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} makemap ${BINDIR}
+
+install-docs: makemap.${MAN8SRC}
+ifdef(`confNO_MAN_INSTALL', `dnl',
+` ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} makemap.${MAN8SRC} ${MAN8}/makemap.${MAN8EXT}')
+
+clean:
+ rm -f ${OBJS} makemap makemap.${MAN8SRC}
+
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE',
+`generic').m4)dnl
+################ End of dependency scripts
diff --git a/usr.sbin/sendmail/makemap/makemap.8 b/contrib/sendmail/makemap/makemap.8
index 3c1f6fad260a..6180c8bda8b1 100644
--- a/usr.sbin/sendmail/makemap/makemap.8
+++ b/contrib/sendmail/makemap/makemap.8
@@ -1,35 +1,13 @@
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
.\" Copyright (c) 1988, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
.\"
-.\" @(#)makemap.8 8.4 (Berkeley) 7/23/97
+.\" @(#)makemap.8 8.10 (Berkeley) 5/19/98
.\"
.Dd November 16, 1992
.Dt MAKEMAP 8
@@ -44,6 +22,7 @@
.Op Fl f
.Op Fl o
.Op Fl r
+.Op Fl s
.Op Fl v
.Ar maptype
.Ar mapname
@@ -70,13 +49,11 @@ This requires the
library.
.It Li btree
B-Tree format maps.
-This requires the new Berkeley
-.Xr db 3
+This requires the new Berkeley DB
library.
.It Li hash
Hash format maps.
-This also requires the
-.Xr db 3
+This also requires the Berkeley DB
library.
.El
.Pp
@@ -122,6 +99,10 @@ Normally
.Nm
complains if you repeat a key,
and does not do the insert.
+.It Fl s
+Ignore safety checks on maps being created.
+This includes checking for hard or symbolic
+links in world writable directories.
.It Fl v
Verbosely print what it is doing.
.El
diff --git a/usr.sbin/sendmail/makemap/makemap.c b/contrib/sendmail/makemap/makemap.c
index 9d088c60016a..53b5865606a9 100644
--- a/usr.sbin/sendmail/makemap/makemap.c
+++ b/contrib/sendmail/makemap/makemap.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1992 Eric P. Allman.
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1992 Eric P. Allman. All rights reserved.
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)makemap.c 8.38 (Berkeley) 9/23/97";
+static char sccsid[] = "@(#)makemap.c 8.62 (Berkeley) 6/24/98";
#endif /* not lint */
#include <sys/types.h>
@@ -42,13 +20,17 @@ static char sccsid[] = "@(#)makemap.c 8.38 (Berkeley) 9/23/97";
# include <sys/file.h>
#endif
#include "sendmail.h"
+#include "pathnames.h"
#ifdef NDBM
-#include <ndbm.h>
+# include <ndbm.h>
#endif
#ifdef NEWDB
-#include <db.h>
+# include <db.h>
+# ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+# endif
#endif
enum type { T_DBM, T_BTREE, T_HASH, T_ERR, T_UNKNOWN };
@@ -76,23 +58,25 @@ uid_t RunAsGid;
char *RunAsUserName;
int Verbose = 2;
bool DontInitGroups = TRUE;
-bool UnsafeGroupWrites = FALSE;
+long DontBlameSendmail = DBS_SAFE;
u_char tTdvect[100];
+uid_t TrustedFileUid = 0;
#define BUFSIZE 1024
+int
main(argc, argv)
int argc;
char **argv;
{
char *progname;
+ char *cfile;
bool inclnull = FALSE;
bool notrunc = FALSE;
bool allowreplace = FALSE;
bool allowdups = FALSE;
bool verbose = FALSE;
bool foldcase = TRUE;
- bool ignoresafeties = FALSE;
int exitstat;
int opt;
char *typename;
@@ -105,6 +89,8 @@ main(argc, argv)
long dbcachesize = 1024 * 1024;
enum type type;
int fd;
+ int sff = SFF_ROOTOK|SFF_REGONLY;
+ struct passwd *pw;
union
{
#ifdef NDBM
@@ -117,22 +103,33 @@ main(argc, argv)
} dbp;
union dbent key, val;
#ifdef NEWDB
+# if DB_VERSION_MAJOR < 2
BTREEINFO bti;
HASHINFO hinfo;
+# else
+ DB_INFO dbinfo;
+# endif
#endif
char ibuf[BUFSIZE];
char fbuf[MAXNAME];
char dbuf[MAXNAME];
+#ifdef NDBM
char pbuf[MAXNAME];
+#endif
+#if _FFR_TRUSTED_FILE_OWNER
+ FILE *cfp;
+ char buf[MAXLINE];
+#endif
static char rnamebuf[MAXNAME]; /* holds RealUserName */
- struct passwd *pw;
- int sff = SFF_ROOTOK|SFF_REGONLY|SFF_NOLINK|SFF_NOWLINK;
- struct stat std, stp;
+ struct stat std;
+#ifdef NDBM
+ struct stat stp;
+#endif
extern char *optarg;
extern int optind;
- extern bool lockfile();
progname = argv[0];
+ cfile = _PATH_SENDMAILCF;
RunAsUid = RealUid = getuid();
RunAsGid = RealGid = getgid();
@@ -144,18 +141,22 @@ main(argc, argv)
sprintf(rnamebuf, "%s", pw->pw_name);
}
else
- sprintf(rnamebuf, "Unknown UID %d", RealUid);
+ sprintf(rnamebuf, "Unknown UID %d", (int) RealUid);
RunAsUserName = RealUserName = rnamebuf;
#if _FFR_NEW_MAKEMAP_FLAGS
-#define OPTIONS "Nc:dforsv"
+#define OPTIONS "C:Nc:dforsv"
#else
-#define OPTIONS "Ndforv"
+#define OPTIONS "C:Ndforsv"
#endif
while ((opt = getopt(argc, argv, OPTIONS)) != EOF)
{
switch (opt)
{
+ case 'C':
+ cfile = optarg;
+ break;
+
case 'N':
inclnull = TRUE;
break;
@@ -182,11 +183,9 @@ main(argc, argv)
allowreplace = TRUE;
break;
-#if _FFR_NEW_MAKEMAP_FLAGS
case 's':
- ignoresafeties = TRUE;
+ DontBlameSendmail |= DBS_MAPINUNSAFEDIRPATH|DBS_WRITEMAPTOHARDLINK|DBS_WRITEMAPTOSYMLINK|DBS_LINKEDMAPINWRITABLEDIR;
break;
-#endif
case 'v':
verbose = TRUE;
@@ -198,6 +197,13 @@ main(argc, argv)
}
}
+ if (!bitset(DBS_WRITEMAPTOSYMLINK, DontBlameSendmail))
+ sff |= SFF_NOSLINK;
+ if (!bitset(DBS_WRITEMAPTOHARDLINK, DontBlameSendmail))
+ sff |= SFF_NOHLINK;
+ if (!bitset(DBS_LINKEDMAPINWRITABLEDIR, DontBlameSendmail))
+ sff |= SFF_NOWLINK;
+
argc -= optind;
argv += optind;
if (argc != 2)
@@ -226,6 +232,65 @@ main(argc, argv)
type = T_UNKNOWN;
}
+#if _FFR_TRUSTED_FILE_OWNER
+ if ((cfp = fopen(cfile, "r")) == NULL)
+ {
+ fprintf(stderr, "mailstats: ");
+ perror(cfile);
+ exit(EX_NOINPUT);
+ }
+ while (fgets(buf, sizeof(buf), cfp) != NULL)
+ {
+ register char *b;
+
+ if ((b = strchr(buf, '\n')) != NULL)
+ *b = '\0';
+
+ b = buf;
+ switch (*b++)
+ {
+ case 'O': /* option */
+ if (strncasecmp(b, " TrustedFileOwner", 17) == 0 &&
+ !(isascii(b[17]) && isalnum(b[17])))
+ {
+ b = strchr(b, '=');
+ if (b == NULL)
+ continue;
+ while (isascii(*++b) && isspace(*b))
+ continue;
+ if (isascii(*b) && isdigit(*b))
+ TrustedFileUid = atoi(b);
+ else
+ {
+ register struct passwd *pw;
+
+ TrustedFileUid = 0;
+ pw = getpwnam(b);
+ if (pw == NULL)
+ fprintf(stderr,
+ "TrustedFileOwner: unknown user %s", b);
+ else
+ TrustedFileUid = pw->pw_uid;
+ }
+
+# ifdef UID_MAX
+ if (TrustedFileUid > UID_MAX)
+ {
+ syserr("TrustedFileOwner: uid value (%ld) > UID_MAX (%ld)",
+ TrustedFileUid, UID_MAX);
+ TrustedFileUid = 0;
+ }
+# endif
+ break;
+ }
+
+
+ default:
+ continue;
+ }
+ }
+ (void) fclose(cfp);
+#endif
switch (type)
{
case T_ERR:
@@ -234,7 +299,7 @@ main(argc, argv)
"Usage: %s [-N] [-c cachesize] [-d] [-f] [-o] [-r] [-s] [-v] type mapname\n",
progname);
#else
- fprintf(stderr, "Usage: %s [-N] [-d] [-f] [-o] [-r] [-v] type mapname\n", progname);
+ fprintf(stderr, "Usage: %s [-N] [-d] [-f] [-o] [-r] [-s] [-v] type mapname\n", progname);
#endif
exit(EX_USAGE);
@@ -256,21 +321,47 @@ main(argc, argv)
#ifdef NEWDB
case T_BTREE:
+# if DB_VERSION_MAJOR < 2
bzero(&bti, sizeof bti);
+# else
+ bzero(&dbinfo, sizeof dbinfo);
+# endif
if (allowdups)
+ {
+# if DB_VERSION_MAJOR < 2
bti.flags |= R_DUP;
+# else
+ dbinfo.flags |= DB_DUP;
+# endif
+ }
if (allowdups || allowreplace)
putflags = 0;
else
+ {
+# if DB_VERSION_MAJOR < 2
putflags = R_NOOVERWRITE;
+# else
+ putflags = DB_NOOVERWRITE;
+# endif
+ }
break;
case T_HASH:
+# if DB_VERSION_MAJOR < 2
bzero(&hinfo, sizeof hinfo);
+# else
+ bzero(&dbinfo, sizeof dbinfo);
+# endif
if (allowreplace)
putflags = 0;
else
+ {
+# if DB_VERSION_MAJOR < 2
putflags = R_NOOVERWRITE;
+# else
+ putflags = DB_NOOVERWRITE;
+# endif
+ }
break;
#endif
#ifdef NDBM
@@ -326,8 +417,7 @@ main(argc, argv)
exit(EX_USAGE);
}
strcpy(dbuf, mapname);
- if (!ignoresafeties &&
- (st = safefile(dbuf, RealUid, RealGid, RealUserName,
+ if ((st = safefile(dbuf, RealUid, RealGid, RealUserName,
sff, S_IWUSR, &std)) != 0)
{
fprintf(stderr,
@@ -347,7 +437,7 @@ main(argc, argv)
}
sprintf(dbuf, "%s.dir", mapname);
if ((st = safefile(dbuf, RealUid, RealGid, RealUserName,
- sff, S_IWUSR, &std)) != 0 && !ignoresafeties)
+ sff, S_IWUSR, &std)) != 0)
{
fprintf(stderr,
"%s: could not create: %s\n",
@@ -356,7 +446,7 @@ main(argc, argv)
}
sprintf(pbuf, "%s.pag", mapname);
if ((st = safefile(pbuf, RealUid, RealGid, RealUserName,
- sff, S_IWUSR, &stp)) != 0 && !ignoresafeties)
+ sff, S_IWUSR, &stp)) != 0)
{
fprintf(stderr,
"%s: could not create: %s\n",
@@ -384,10 +474,7 @@ main(argc, argv)
mode |= O_EXLOCK;
#else
/* pre-lock the database */
- if (ignoresafeties)
- fd = dfopen(dbuf, mode & ~O_TRUNC, 0644, sff);
- else
- fd = safeopen(dbuf, mode & ~O_TRUNC, 0644, sff);
+ fd = safeopen(dbuf, mode & ~O_TRUNC, 0644, sff);
if (fd < 0)
{
fprintf(stderr, "%s: cannot create type %s map %s\n",
@@ -408,9 +495,9 @@ main(argc, argv)
dbm_close(dbp.dbm);
exit(EX_CONFIG);
}
- if (!ignoresafeties && dbp.dbm != NULL &&
- (filechanged(dbuf, dbm_dirfno(dbp.dbm), &std, sff) ||
- filechanged(pbuf, dbm_pagfno(dbp.dbm), &stp, sff)))
+ if (dbp.dbm != NULL &&
+ (filechanged(dbuf, dbm_dirfno(dbp.dbm), &std) ||
+ filechanged(pbuf, dbm_pagfno(dbp.dbm), &stp)))
{
fprintf(stderr,
"dbm map %s: file changed after open\n",
@@ -418,56 +505,138 @@ main(argc, argv)
dbm_close(dbp.dbm);
exit(EX_CANTCREAT);
}
+ if (geteuid() == 0 && TrustedFileUid != 0)
+ {
+ if (fchown(dbm_dirfno(dbp.dbm), TrustedFileUid, -1) < 0 ||
+ fchown(dbm_pagfno(dbp.dbm), TrustedFileUid, -1) < 0)
+ {
+ fprintf(stderr,
+ "WARNING: ownership change on %s failed: %s",
+ mapname, errstring(errno));
+ }
+ }
+
break;
#endif
#ifdef NEWDB
case T_HASH:
/* tweak some parameters for performance */
+# if DB_VERSION_MAJOR < 2
hinfo.nelem = 4096;
hinfo.cachesize = dbcachesize;
+# else
+ dbinfo.h_nelem = 4096;
+ dbinfo.db_cachesize = dbcachesize;
+# endif
+# if DB_VERSION_MAJOR < 2
dbp.db = dbopen(mapname, mode, 0644, DB_HASH, &hinfo);
+# else
+ {
+ int flags = 0;
+
+ if (bitset(O_CREAT, mode))
+ flags |= DB_CREATE;
+ if (bitset(O_TRUNC, mode))
+ flags |= DB_TRUNCATE;
+
+ dbp.db = NULL;
+ errno = db_open(mapname, DB_HASH, flags, 0644,
+ NULL, &dbinfo, &dbp.db);
+ }
+# endif
if (dbp.db != NULL)
{
- if (!ignoresafeties &&
- filechanged(dbuf, dbp.db->fd(dbp.db), &std, sff))
+ int fd;
+
+# if DB_VERSION_MAJOR < 2
+ fd = dbp.db->fd(dbp.db);
+# else
+ fd = -1;
+ errno = dbp.db->fd(dbp.db, &fd);
+# endif
+ if (filechanged(dbuf, fd, &std))
{
fprintf(stderr,
"db map %s: file changed after open\n",
mapname);
+# if DB_VERSION_MAJOR < 2
dbp.db->close(dbp.db);
+# else
+ errno = dbp.db->close(dbp.db, 0);
+# endif
exit(EX_CANTCREAT);
}
-# if OLD_NEWDB
- (void) (*dbp.db->sync)(dbp.db);
-# else
(void) (*dbp.db->sync)(dbp.db, 0);
-# endif
+ if (geteuid() == 0 && TrustedFileUid != 0)
+ {
+ if (fchown(fd, TrustedFileUid, -1) < 0)
+ {
+ fprintf(stderr,
+ "WARNING: ownership change on %s failed: %s",
+ mapname, errstring(errno));
+ }
+ }
}
break;
case T_BTREE:
/* tweak some parameters for performance */
+# if DB_VERSION_MAJOR < 2
bti.cachesize = dbcachesize;
+# else
+ dbinfo.db_cachesize = dbcachesize;
+# endif
+# if DB_VERSION_MAJOR < 2
dbp.db = dbopen(mapname, mode, 0644, DB_BTREE, &bti);
+# else
+ {
+ int flags = 0;
+
+ if (bitset(O_CREAT, mode))
+ flags |= DB_CREATE;
+ if (bitset(O_TRUNC, mode))
+ flags |= DB_TRUNCATE;
+
+ dbp.db = NULL;
+ errno = db_open(mapname, DB_BTREE, flags, 0644,
+ NULL, &dbinfo, &dbp.db);
+ }
+# endif
if (dbp.db != NULL)
{
- if (!ignoresafeties &&
- filechanged(dbuf, dbp.db->fd(dbp.db), &std, sff))
+ int fd;
+
+# if DB_VERSION_MAJOR < 2
+ fd = dbp.db->fd(dbp.db);
+# else
+ fd = -1;
+ errno = dbp.db->fd(dbp.db, &fd);
+# endif
+ if (filechanged(dbuf, fd, &std))
{
fprintf(stderr,
"db map %s: file changed after open\n",
mapname);
+# if DB_VERSION_MAJOR < 2
dbp.db->close(dbp.db);
+# else
+ errno = dbp.db->close(dbp.db, 0);
+# endif
exit(EX_CANTCREAT);
}
-# if OLD_NEWDB
- (void) (*dbp.db->sync)(dbp.db);
-# else
(void) (*dbp.db->sync)(dbp.db, 0);
-# endif
+ if (geteuid() == 0 && TrustedFileUid != 0)
+ {
+ if (fchown(fd, TrustedFileUid, -1) < 0)
+ {
+ fprintf(stderr,
+ "WARNING: ownership change on %s failed: %s",
+ mapname, errstring(errno));
+ }
+ }
}
break;
#endif
@@ -506,23 +675,31 @@ main(argc, argv)
*p = '\0';
else if (!feof(stdin))
{
- fprintf(stderr, "%s: %s: line %d: line too long (%d bytes max)\n",
- progname, mapname, lineno, sizeof ibuf);
+ fprintf(stderr, "%s: %s: line %d: line too long (%ld bytes max)\n",
+ progname, mapname, lineno, (long) sizeof ibuf);
continue;
}
if (ibuf[0] == '\0' || ibuf[0] == '#')
continue;
- if (isspace(ibuf[0]))
+ if (isascii(ibuf[0]) && isspace(ibuf[0]))
{
fprintf(stderr, "%s: %s: line %d: syntax error (leading space)\n",
progname, mapname, lineno);
continue;
}
+#ifdef NEWDB
+ if (type == T_HASH || type == T_BTREE)
+ {
+ bzero(&key.db, sizeof key.db);
+ bzero(&val.db, sizeof val.db);
+ }
+#endif
+
key.xx.data = ibuf;
- for (p = ibuf; *p != '\0' && !isspace(*p); p++)
+ for (p = ibuf; *p != '\0' && !(isascii(*p) && isspace(*p)); p++)
{
- if (foldcase && isupper(*p))
+ if (foldcase && isascii(*p) && isupper(*p))
*p = tolower(*p);
}
key.xx.size = p - key.xx.data;
@@ -530,7 +707,7 @@ main(argc, argv)
key.xx.size++;
if (*p != '\0')
*p++ = '\0';
- while (isspace(*p))
+ while (isascii(*p) && isspace(*p))
p++;
if (*p == '\0')
{
@@ -563,9 +740,30 @@ main(argc, argv)
#ifdef NEWDB
case T_BTREE:
case T_HASH:
+# if DB_VERSION_MAJOR < 2
st = (*dbp.db->put)(dbp.db, &key.db, &val.db, putflags);
+# else
+ errno = (*dbp.db->put)(dbp.db, NULL, &key.db,
+ &val.db, putflags);
+ switch (errno)
+ {
+ case DB_KEYEXIST:
+ st = 1;
+ break;
+
+ case 0:
+ st = 0;
+ break;
+
+ default:
+ st = -1;
+ break;
+ }
+# endif
break;
#endif
+ default:
+ break;
}
if (st < 0)
@@ -598,7 +796,11 @@ main(argc, argv)
#ifdef NEWDB
case T_HASH:
case T_BTREE:
+# if DB_VERSION_MAJOR < 2
if ((*dbp.db->close)(dbp.db) < 0)
+# else
+ if ((errno = (*dbp.db->close)(dbp.db, 0)) != 0)
+# endif
{
fprintf(stderr, "%s: %s: error on close\n",
progname, mapname);
@@ -606,6 +808,8 @@ main(argc, argv)
exitstat = EX_IOERR;
}
#endif
+ default:
+ break;
}
#if !O_EXLOCK
@@ -680,7 +884,7 @@ lockfile(fd, filename, ext, type)
return FALSE;
}
-/*VARARGS2*/
+/*VARARGS1*/
void
#ifdef __STDC__
message(const char *msg, ...)
@@ -694,7 +898,9 @@ message(msg, va_alist)
VA_LOCAL_DECL
m = msg;
- if (isdigit(m[0]) && isdigit(m[1]) && isdigit(m[2]) && m[3] == ' ')
+ if (isascii(m[0]) && isdigit(m[0]) &&
+ isascii(m[1]) && isdigit(m[1]) &&
+ isascii(m[2]) && isdigit(m[2]) && m[3] == ' ')
m += 4;
VA_START(msg);
vfprintf(stderr, m, ap);
@@ -702,7 +908,7 @@ message(msg, va_alist)
fprintf(stderr, "\n");
}
-/*VARARGS2*/
+/*VARARGS1*/
void
#ifdef __STDC__
syserr(const char *msg, ...)
@@ -716,7 +922,9 @@ syserr(msg, va_alist)
VA_LOCAL_DECL
m = msg;
- if (isdigit(m[0]) && isdigit(m[1]) && isdigit(m[2]) && m[3] == ' ')
+ if (isascii(m[0]) && isdigit(m[0]) &&
+ isascii(m[1]) && isdigit(m[1]) &&
+ isascii(m[2]) && isdigit(m[2]) && m[3] == ' ')
m += 4;
VA_START(msg);
vfprintf(stderr, m, ap);
@@ -771,7 +979,7 @@ errstring(err)
#if HASSTRERROR
return strerror(err);
#else
- if (err < 0 || err > sys_nerr)
+ if (err < 0 || err >= sys_nerr)
{
sprintf(errstr, "Error %d", err);
return errstr;
diff --git a/contrib/sendmail/praliases/Build b/contrib/sendmail/praliases/Build
new file mode 100755
index 000000000000..ab8a49d78cac
--- /dev/null
+++ b/contrib/sendmail/praliases/Build
@@ -0,0 +1,513 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1993, 1996-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)Build 8.93 (Berkeley) 6/24/98
+#
+
+#
+# A quick-and-dirty script to compile sendmail and related programs
+# in the presence of multiple architectures. To use, just use
+# "sh Build".
+#
+
+trap "rm -f $obj/.settings$$; exit" 1 2 3 15
+
+cflag=""
+mflag=""
+sflag=""
+makeargs=""
+libdirs=""
+incdirs=""
+libsrch=""
+siteconfig=""
+EX_USAGE=64
+EX_NOINPUT=66
+EX_UNAVAILABLE=69
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -c) # clean out existing $obj tree
+ cflag=1
+ shift
+ ;;
+
+ -m) # show Makefile name only
+ mflag=1
+ shift
+ ;;
+
+ -E*) # environment variables to pass into Build
+ arg=`echo $1 | sed 's/^-E//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ -z "$arg" ]
+ then
+ echo "Empty -E flag" >&2
+ exit $EX_USAGE
+ else
+ case $arg
+ in
+ *=*) # check format
+ eval $arg
+ export `echo $arg | sed 's;=.*;;'`
+ ;;
+ *) # bad format
+ echo "Bad format for -E argument ($arg)" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ shift
+ fi
+ ;;
+
+ -L*) # set up LIBDIRS
+ libdirs="$libdirs $1"
+ shift
+ ;;
+
+ -I*) # set up INCDIRS
+ incdirs="$incdirs $1"
+ shift
+ ;;
+
+ -f*) # select site config file
+ arg=`echo $1 | sed 's/^-f//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ "$siteconfig" ]
+ then
+ echo "Only one -f flag allowed" >&2
+ exit $EX_USAGE
+ else
+ siteconfig=$arg
+ if [ -z "$siteconfig" ]
+ then
+ echo "Missing argument for -f flag" >&2
+ exit $EX_USAGE
+ elif [ ! -f "$siteconfig" ]
+ then
+ echo "${siteconfig}: File not found"
+ exit $EX_NOINPUT
+ else
+ shift # move past argument
+ fi
+ fi
+ ;;
+
+ -S) # skip auto-configure
+ sflag="-s"
+ shift
+ ;;
+
+ *) # pass argument to make
+ makeargs="$makeargs \"$1\""
+ shift
+ ;;
+ esac
+done
+
+#
+# Do heuristic guesses !ONLY! for machines that do not have uname
+#
+if [ -d /NextApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
+then
+ # probably a NeXT box
+ arch=`hostinfo | sed -n 's/.*Processor type: \([^ ]*\).*/\1/p'`
+ os=NeXT
+ rel=`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`
+elif [ -f /usr/sony/bin/machine -a -f /etc/osversion ]
+then
+ # probably a Sony NEWS 4.x
+ os=NEWS-OS
+ rel=`awk '{ print $3}' /etc/osversion`
+ arch=`/usr/sony/bin/machine`
+elif [ -d /usr/omron -a -f /bin/luna ]
+then
+ # probably a Omron LUNA
+ os=LUNA
+ if [ -f /bin/luna1 ] && /bin/luna1
+ then
+ rel=unios-b
+ arch=luna1
+ elif [ -f /bin/luna2 ] && /bin/luna2
+ then
+ rel=Mach
+ arch=luna2
+ elif [ -f /bin/luna88k ] && /bin/luna88k
+ then
+ rel=Mach
+ arch=luna88k
+ fi
+elif [ -d /usr/apollo -a -d \`node_data ]
+then
+ # probably a Apollo/DOMAIN
+ os=DomainOS
+ arch=$ISP
+ rel=`/usr/apollo/bin/bldt | grep Domain | awk '{ print $4 }' | sed -e 's/,//g'`
+fi
+
+if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
+then
+ arch=`uname -m | sed -e 's/ //g'`
+ os=`uname -s | sed -e 's/\//-/g' -e 's/ //g'`
+ rel=`uname -r | sed -e 's/(/-/g' -e 's/)//g'`
+fi
+
+#
+# Tweak the values we have already got. PLEASE LIMIT THESE to
+# tweaks that are absolutely necessary because your system uname
+# routine doesn't return something sufficiently unique. Don't do
+# it just because you don't like the name that is returned. You
+# can combine the architecture name with the os name to create a
+# unique Makefile name.
+#
+
+# tweak machine architecture
+case $arch
+in
+ sun4*) arch=sun4;;
+
+ 9000/*) arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
+
+ DS/907000) arch=ds90;;
+
+ NILE*) arch=NILE
+ os=`uname -v`;;
+esac
+
+# tweak operating system type and release
+node=`uname -n | sed -e 's/\//-/g' -e 's/ //g'`
+if [ "$os" = "$node" -a "$arch" = "i386" -a "$rel" = 3.2 -a "`uname -v`" = 2 ]
+then
+ # old versions of SCO UNIX set uname -s the same as uname -n
+ os=SCO_SV
+fi
+if [ "$rel" = 4.0 ]
+then
+ case $arch in
+ 3[34]??|3[34]??,*)
+ if [ -d /usr/sadm/sysadm/add-ons/WIN-TCP ]
+ then
+ os=NCR.MP-RAS.2.x
+ elif [ -d /usr/sadm/sysadm/add-ons/inet ]
+ then
+ os=NCR.MP-RAS.3.x
+ fi
+ ;;
+ esac
+fi
+
+case $os
+in
+ DYNIX-ptx) os=PTX;;
+ Paragon*) os=Paragon;;
+ HP-UX) rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
+ AIX) rela=$rel
+ rel=`uname -v`
+ case $rel in
+ 2) arch=""
+ ;;
+ 4) if [ "$rela" = "3" ]
+ then
+ arch=$rela
+ fi
+ ;;
+ esac
+ rel=$rel.$rela
+ ;;
+ BSD-386) os=BSD-OS;;
+ SCO_SV) os=SCO; rel=`uname -X | sed -n 's/Release = 3.2v//p'`;;
+ UNIX_System_V) if [ "$arch" = "ds90" ]
+ then
+ os="UXPDS"
+ rel=`uname -v | sed -e 's/\(V.*\)L.*/\1/'`
+ fi;;
+ SINIX-?) os=SINIX;;
+ DomainOS) case $rel in
+ 10.4*) rel=10.4;;
+ esac
+ ;;
+esac
+
+# get "base part" of operating system release
+rroot=`echo $rel | sed -e 's/\.[^.]*$//'`
+rbase=`echo $rel | sed -e 's/\..*//'`
+if [ "$rroot" = "$rbase" ]
+then
+ rroot=$rel
+fi
+
+# heuristic tweaks to clean up names -- PLEASE LIMIT THESE!
+if [ "$os" = "unix" ]
+then
+ # might be Altos System V
+ case $rel
+ in
+ 5.3*) os=Altos;;
+ esac
+elif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
+then
+ # might be a DYNIX/ptx 2.x system, which has a broken uname
+ if strings /lib/cpp | grep _SEQUENT_ > /dev/null
+ then
+ os=PTX
+ fi
+elif [ -d /usr/nec ]
+then
+ # NEC machine -- what is it running?
+ if [ "$os" = "UNIX_System_V" ]
+ then
+ os=EWS-UX_V
+ elif [ "$os" = "UNIX_SV" ]
+ then
+ os=UX4800
+ fi
+elif [ "$arch" = "mips" ]
+then
+ case $rel
+ in
+ 4_*)
+ if [ `uname -v` = "UMIPS" ]
+ then
+ os=RISCos
+ fi;;
+ esac
+fi
+
+# see if there is a "user suffix" specified
+if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
+then
+ sfx=""
+else
+ sfx=".${SENDMAIL_SUFFIX}"
+fi
+
+echo "Configuration: os=$os, rel=$rel, rbase=$rbase, rroot=$rroot, arch=$arch, sfx=$sfx"
+
+
+SMROOT=${SMROOT-..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+export SMROOT BUILDTOOLS
+
+# see if we are in a Build-able directory
+if [ ! -f Makefile.m4 ]; then
+ echo "Makefile.m4 not found. Build can only be run from a source directory."
+ exit $EX_UNAVAILABLE
+fi
+
+# now try to find a reasonable object directory
+if [ -r obj.$os.$rel.$arch$sfx ]; then
+ obj=obj.$os.$rel.$arch$sfx
+elif [ -r obj.$os.$rroot.$arch$sfx ]; then
+ obj=obj.$os.$rroot.$arch$sfx
+elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
+ obj=obj.$os.$rbase.x.$arch$sfx
+elif [ -r obj.$os.$rel$sfx ]; then
+ obj=obj.$os.$rel$sfx
+elif [ -r obj.$os.$rbase.x$sfx ]; then
+ obj=obj.$os.$rbase.x$sfx
+elif [ -r obj.$os.$arch$sfx ]; then
+ obj=obj.$os.$arch$sfx
+elif [ -r obj.$rel.$arch$sfx ]; then
+ obj=obj.$rel.$arch$sfx
+elif [ -r obj.$rbase.x.$arch$sfx ]; then
+ obj=obj.$rbase.x.$arch$sfx
+elif [ -r obj.$os$sfx ]; then
+ obj=obj.$os$sfx
+elif [ -r obj.$arch$sfx ]; then
+ obj=obj.$arch$sfx
+elif [ -r obj.$rel$sfx ]; then
+ obj=obj.$rel$sfx
+elif [ -r obj$sfx ]; then
+ obj=obj$sfx
+fi
+if [ -z "$obj" -o "$cflag" ]
+then
+ if [ -n "$obj" ]
+ then
+ echo "Clearing out existing $obj tree"
+ rm -rf $obj
+ else
+ # no existing obj directory -- try to create one if Makefile found
+ obj=obj.$os.$rel.$arch$sfx
+ fi
+ if [ -r $BUILDTOOLS/OS/$os.$rel.$arch$sfx ]; then
+ oscf=$os.$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel.$arch ]; then
+ oscf=$os.$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch$sfx ]; then
+ oscf=$os.$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch ]; then
+ oscf=$os.$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch$sfx ]; then
+ oscf=$os.$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch ]; then
+ oscf=$os.$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rel$sfx ]; then
+ oscf=$os.$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel ]; then
+ oscf=$os.$rel
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot$sfx ]; then
+ oscf=$os.$rroot$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot ]; then
+ oscf=$os.$rroot
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x$sfx ]; then
+ oscf=$os.$rbase.x$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x ]; then
+ oscf=$os.$rbase.x
+ elif [ -r $BUILDTOOLS/OS/$os.$arch$sfx ]; then
+ oscf=$os.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$arch ]; then
+ oscf=$os.$arch
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch$sfx ]; then
+ oscf=$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch ]; then
+ oscf=$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch$sfx ]; then
+ oscf=$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch ]; then
+ oscf=$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch$sfx ]; then
+ oscf=$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch ]; then
+ oscf=$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os$sfx ]; then
+ oscf=$os$sfx
+ elif [ -r $BUILDTOOLS/OS/$os ]; then
+ oscf=$os
+ elif [ -r $BUILDTOOLS/OS/$arch$sfx ]; then
+ oscf=$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$arch ]; then
+ oscf=$arch
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel ]; then
+ oscf=$rel
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ else
+ echo "Cannot determine how to support $arch.$os.$rel" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ ret=$?
+ if [ $ret -ne 0 ]
+ then
+ exit $ret
+ fi
+ echo "Using M4=$M4"
+ export M4
+ if [ "$mflag" ]
+ then
+ echo "Will run in virgin $obj using $BUILDTOOLS/OS/$oscf"
+ exit 0
+ fi
+ if [ "$ABI" ]
+ then
+ echo "Using ABI $ABI"
+ fi
+ echo "Creating $obj using $BUILDTOOLS/OS/$oscf"
+ mkdir $obj
+ (cd $obj; ln -s ../*.[ch158] .)
+ if [ -f sendmail.hf ]
+ then
+ (cd $obj; ln -s ../sendmail.hf .)
+ fi
+
+ rm -f $obj/.settings$$
+ echo 'divert(-1)' > $obj/.settings$$
+ cat $BUILDTOOLS/M4/header.m4 >> $obj/.settings$$
+ if [ "$ABI" ]
+ then
+ echo "define(\`confABI', \`$ABI')" >> $obj/.settings$$
+ fi
+ cat $BUILDTOOLS/OS/$oscf >> $obj/.settings$$
+
+ if [ -z "$siteconfig" ]
+ then
+ # none specified, use defaults
+ if [ -f $BUILDTOOLS/Site/site.$oscf$sfx.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf$sfx.m4
+ elif [ -f $BUILDTOOLS/Site/site.$oscf.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf.m4
+ fi
+ if [ -f $BUILDTOOLS/Site/site.config.m4 ]
+ then
+ siteconfig="$BUILDTOOLS/Site/site.config.m4 $siteconfig"
+ fi
+ fi
+ if [ ! -z "$siteconfig" ]
+ then
+ echo "Including $siteconfig"
+ cat $siteconfig >> $obj/.settings$$
+ fi
+ if [ "$libdirs" ]
+ then
+ echo "define(\`confLIBDIRS', confLIBDIRS \`\`$libdirs'')" >> $obj/.settings$$
+ fi
+ if [ "$incdirs" ]
+ then
+ echo "define(\`confINCDIRS', confINCDIRS \`\`$incdirs'')" >> $obj/.settings$$
+ fi
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ libdirs=`(cat $obj/.settings$$; echo "_SRIDBIL_= confLIBDIRS" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_SRIDBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_SRIDBIL_=//"`
+ libsrch=`(cat $obj/.settings$$; echo "_HCRSBIL_= confLIBSEARCH" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_HCRSBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_HCRSBIL_=//"`
+ echo 'divert(-1)' >> $obj/.settings$$
+ LIBDIRS="$libdirs" LIBSRCH="$libsrch" SITECONFIG="$siteconfig" sh $BUILDTOOLS/bin/configure.sh $sflag $oscf >> $obj/.settings$$
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' $obj/.settings$$ | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - Makefile.m4 | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' > $obj/Makefile
+ if [ $? -ne 0 -o ! -s $obj/Makefile ]
+ then
+ echo "ERROR: ${M4} failed; You may need a newer version of M4, at least as new as System V or GNU" 1>&2
+ rm -rf $obj
+ exit $EX_UNAVAILABLE
+ fi
+ rm -f $obj/.settings$$
+ echo "Making dependencies in $obj"
+ (cd $obj; ${MAKE-make} depend)
+fi
+
+if [ "$mflag" ]
+then
+ makefile=`ls -l $obj/Makefile | sed 's/.* //'`
+ if [ -z "$makefile" ]
+ then
+ echo "ERROR: $obj exists but has no Makefile" >&2
+ exit $EX_NOINPUT
+ fi
+ echo "Will run in existing $obj using $makefile"
+ exit 0
+fi
+
+echo "Making in $obj"
+cd $obj
+eval exec ${MAKE-make} $makeargs
diff --git a/contrib/sendmail/praliases/Makefile.m4 b/contrib/sendmail/praliases/Makefile.m4
new file mode 100644
index 000000000000..a4a2e61fa49b
--- /dev/null
+++ b/contrib/sendmail/praliases/Makefile.m4
@@ -0,0 +1,104 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.15 (Berkeley) 6/4/98
+#
+
+# C compiler
+CC= confCC
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# location of sendmail source directory
+SRCDIR= ifdef(`confSRCDIR', `confSRCDIR', `../../src')
+
+# define the database mechanisms available for map & alias lookups:
+# -DNDBM -- use new DBM
+# -DNEWDB -- use new Berkeley DB
+# The really old (V7) DBM library is no longer supported.
+#
+MAPDEF= ifdef(`confMAPDEF', `confMAPDEF')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= ifdef(`confENVDEF', `confENVDEF')
+
+# see also conf.h for additional compilation flags
+
+# include directories
+INCDIRS=-I${SRCDIR} confINCDIRS
+
+# loader options
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# libraries required on your system
+LIBS= ifdef(`confLIBS', `confLIBS')
+
+# location of praliases binary (usually /usr/sbin or /usr/etc)
+BINDIR= ${DESTDIR}ifdef(`confSBINDIR', `confSBINDIR', `/usr/sbin')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD')
+
+undivert(1)
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${MAPDEF} ${ENVDEF}
+CFLAGS= $O ${COPTS}
+
+BEFORE= confBEFORE
+OBJS= praliases.o ${OBJADD}
+
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-mandoc')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+BINOWN= ifdef(`confUBINOWN', `confUBINOWN', `bin')
+BINGRP= ifdef(`confUBINGRP', `confUBINGRP', `bin')
+BINMODE=ifdef(`confUBINMODE', `confUBINMODE', `555')
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+
+MANROOT=${DESTDIR}ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+ALL= praliases praliases.${MAN8SRC}
+
+all: ${ALL}
+
+praliases: ${BEFORE} ${OBJS}
+ ${CC} -o praliases ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
+
+undivert(3)
+
+praliases.${MAN8SRC}: praliases.8
+ ${NROFF} ${MANDOC} praliases.8 > praliases.${MAN8SRC}
+
+install: install-praliases install-docs
+
+install-praliases: praliases
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} praliases ${BINDIR}
+
+install-docs: praliases.${MAN8SRC}
+ifdef(`confNO_MAN_INSTALL', `dnl',
+` ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} praliases.${MAN8SRC} ${MAN8}/praliases.${MAN8EXT}')
+
+clean:
+ rm -f ${OBJS} praliases praliases.${MAN8SRC}
+
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE',
+`generic').m4)dnl
+################ End of dependency scripts
diff --git a/usr.sbin/sendmail/praliases/praliases.8 b/contrib/sendmail/praliases/praliases.8
index 46082ba09e06..f47121840de1 100644
--- a/usr.sbin/sendmail/praliases/praliases.8
+++ b/contrib/sendmail/praliases/praliases.8
@@ -1,4 +1,12 @@
-.\" @(#)praliases.8 8.1 (Berkeley) 9/21/96
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\" @(#)praliases.8 8.5 (Berkeley) 5/19/98
+.\"
.Dd April 25, 1996
.Dt PRALIASES 1
.Os BSD 3
diff --git a/contrib/sendmail/praliases/praliases.c b/contrib/sendmail/praliases/praliases.c
new file mode 100644
index 000000000000..3e0048b4fc73
--- /dev/null
+++ b/contrib/sendmail/praliases/praliases.c
@@ -0,0 +1,209 @@
+/*
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983 Eric P. Allman. All rights reserved.
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ *
+ */
+
+#ifndef lint
+static char copyright[] =
+"@(#) Copyright (c) 1988, 1993\n\
+ The Regents of the University of California. All rights reserved.\n";
+#endif /* not lint */
+
+#ifndef lint
+static char sccsid[] = "@(#)praliases.c 8.17 (Berkeley) 6/25/98";
+#endif /* not lint */
+
+#if !defined(NDBM) && !defined(NEWDB)
+ ERROR README: You must define one of NDBM or NEWDB in order to compile
+ ERROR README: praliases.
+#endif
+
+#ifdef NDBM
+# include <ndbm.h>
+#endif
+#ifndef NOT_SENDMAIL
+# define NOT_SENDMAIL
+#endif
+#include <sendmail.h>
+#ifdef NEWDB
+# include <db.h>
+# ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+# endif
+#endif
+
+#if defined(IRIX64) || defined(IRIX5) || defined(IRIX6) || \
+ defined(BSD4_4) || defined(__osf__) || defined(__GNU_LIBRARY__)
+# ifndef HASSTRERROR
+# define HASSTRERROR 1 /* has strerror(3) */
+# endif
+#endif
+
+#if !HASSTRERROR
+extern char *strerror __P((int));
+#endif
+
+int
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ extern char *optarg;
+ extern int optind;
+#ifdef NDBM
+ DBM *dbp;
+ datum content, key;
+#endif
+ char *filename;
+ int ch;
+#ifdef NEWDB
+ DB *db;
+ DBT newdbkey, newdbcontent;
+ char buf[MAXNAME];
+#endif
+
+ filename = "/etc/aliases";
+ while ((ch = getopt(argc, argv, "f:")) != EOF)
+ switch((char)ch) {
+ case 'f':
+ filename = optarg;
+ break;
+ case '?':
+ default:
+ (void)fprintf(stderr, "usage: praliases [-f file]\n");
+ exit(EX_USAGE);
+ }
+ argc -= optind;
+ argv += optind;
+
+#ifdef NEWDB
+ if (strlen(filename) + 4 >= sizeof buf)
+ {
+ fprintf(stderr, "Alias filename too long: %.30s...\n", filename);
+ exit(EX_USAGE);
+ }
+ (void) strcpy(buf, filename);
+ (void) strcat(buf, ".db");
+# if DB_VERSION_MAJOR < 2
+ db = dbopen(buf, O_RDONLY, 0444, DB_HASH, NULL);
+# else
+ db = NULL;
+ errno = db_open(buf, DB_HASH, DB_RDONLY, 0444, NULL, NULL, &db);
+# endif
+ if (db != NULL)
+ {
+ if (!argc) {
+# if DB_VERSION_MAJOR > 1
+ DBC *dbc;
+# endif
+ bzero(&newdbkey, sizeof newdbkey);
+ bzero(&newdbcontent, sizeof newdbcontent);
+
+# if DB_VERSION_MAJOR < 2
+ while(!db->seq(db, &newdbkey, &newdbcontent, R_NEXT))
+# else
+ if ((errno = db->cursor(db, NULL, &dbc)) == 0)
+ {
+ while ((errno = dbc->c_get(dbc, &newdbkey,
+ &newdbcontent,
+ DB_NEXT)) == 0)
+# endif
+ printf("%.*s:%.*s\n",
+ (int) newdbkey.size,
+ (char *) newdbkey.data,
+ (int) newdbcontent.size,
+ (char *) newdbcontent.data);
+# if DB_VERSION_MAJOR > 1
+ (void) dbc->c_close(dbc);
+ }
+ else
+ {
+ fprintf(stderr,
+ "praliases: %s: Could not set cursor: %s\n",
+ buf, strerror(errno));
+ exit(EX_DATAERR);
+ }
+# endif
+ }
+ else for (; *argv; ++argv) {
+ bzero(&newdbkey, sizeof newdbkey);
+ bzero(&newdbcontent, sizeof newdbcontent);
+ newdbkey.data = *argv;
+ newdbkey.size = strlen(*argv) + 1;
+# if DB_VERSION_MAJOR < 2
+ if (!db->get(db, &newdbkey, &newdbcontent, 0))
+# else
+ if ((errno = db->get(db, NULL, &newdbkey,
+ &newdbcontent, 0)) == 0)
+# endif
+ printf("%s:%.*s\n", (char *) newdbkey.data,
+ (int) newdbcontent.size,
+ (char *) newdbcontent.data);
+ else
+ printf("%s: No such key\n",
+ (char *) newdbkey.data);
+ }
+# if DB_VERSION_MAJOR < 2
+ (void)db->close(db);
+# else
+ errno = db->close(db, 0);
+# endif
+ }
+ else {
+#endif
+#ifdef NDBM
+ if ((dbp = dbm_open(filename, O_RDONLY, 0)) == NULL) {
+ (void)fprintf(stderr,
+ "praliases: %s: %s\n", filename, strerror(errno));
+ exit(EX_OSFILE);
+ }
+ if (!argc)
+ for (key = dbm_firstkey(dbp);
+ key.dptr != NULL; key = dbm_nextkey(dbp)) {
+ content = dbm_fetch(dbp, key);
+ (void)printf("%.*s:%.*s\n",
+ (int) key.dsize, key.dptr,
+ (int) content.dsize, content.dptr);
+ }
+ else for (; *argv; ++argv) {
+ key.dptr = *argv;
+ key.dsize = strlen(*argv) + 1;
+ content = dbm_fetch(dbp, key);
+ if (!content.dptr)
+ (void)printf("%s: No such key\n", key.dptr);
+ else
+ (void)printf("%s:%.*s\n", key.dptr,
+ (int) content.dsize, content.dptr);
+ }
+ dbm_close(dbp);
+#endif
+#ifdef NEWDB
+ }
+#endif
+ exit(EX_OK);
+}
+
+#if !HASSTRERROR
+
+char *
+strerror(eno)
+ int eno;
+{
+ extern int sys_nerr;
+ extern char *sys_errlist[];
+ static char ebuf[60];
+
+ if (eno >= 0 && eno < sys_nerr)
+ return sys_errlist[eno];
+ (void) sprintf(ebuf, "Error %d", eno);
+ return ebuf;
+}
+
+#endif /* !HASSTRERROR */
diff --git a/contrib/sendmail/rmail/Build b/contrib/sendmail/rmail/Build
new file mode 100755
index 000000000000..ab8a49d78cac
--- /dev/null
+++ b/contrib/sendmail/rmail/Build
@@ -0,0 +1,513 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1993, 1996-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)Build 8.93 (Berkeley) 6/24/98
+#
+
+#
+# A quick-and-dirty script to compile sendmail and related programs
+# in the presence of multiple architectures. To use, just use
+# "sh Build".
+#
+
+trap "rm -f $obj/.settings$$; exit" 1 2 3 15
+
+cflag=""
+mflag=""
+sflag=""
+makeargs=""
+libdirs=""
+incdirs=""
+libsrch=""
+siteconfig=""
+EX_USAGE=64
+EX_NOINPUT=66
+EX_UNAVAILABLE=69
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -c) # clean out existing $obj tree
+ cflag=1
+ shift
+ ;;
+
+ -m) # show Makefile name only
+ mflag=1
+ shift
+ ;;
+
+ -E*) # environment variables to pass into Build
+ arg=`echo $1 | sed 's/^-E//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ -z "$arg" ]
+ then
+ echo "Empty -E flag" >&2
+ exit $EX_USAGE
+ else
+ case $arg
+ in
+ *=*) # check format
+ eval $arg
+ export `echo $arg | sed 's;=.*;;'`
+ ;;
+ *) # bad format
+ echo "Bad format for -E argument ($arg)" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ shift
+ fi
+ ;;
+
+ -L*) # set up LIBDIRS
+ libdirs="$libdirs $1"
+ shift
+ ;;
+
+ -I*) # set up INCDIRS
+ incdirs="$incdirs $1"
+ shift
+ ;;
+
+ -f*) # select site config file
+ arg=`echo $1 | sed 's/^-f//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ "$siteconfig" ]
+ then
+ echo "Only one -f flag allowed" >&2
+ exit $EX_USAGE
+ else
+ siteconfig=$arg
+ if [ -z "$siteconfig" ]
+ then
+ echo "Missing argument for -f flag" >&2
+ exit $EX_USAGE
+ elif [ ! -f "$siteconfig" ]
+ then
+ echo "${siteconfig}: File not found"
+ exit $EX_NOINPUT
+ else
+ shift # move past argument
+ fi
+ fi
+ ;;
+
+ -S) # skip auto-configure
+ sflag="-s"
+ shift
+ ;;
+
+ *) # pass argument to make
+ makeargs="$makeargs \"$1\""
+ shift
+ ;;
+ esac
+done
+
+#
+# Do heuristic guesses !ONLY! for machines that do not have uname
+#
+if [ -d /NextApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
+then
+ # probably a NeXT box
+ arch=`hostinfo | sed -n 's/.*Processor type: \([^ ]*\).*/\1/p'`
+ os=NeXT
+ rel=`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`
+elif [ -f /usr/sony/bin/machine -a -f /etc/osversion ]
+then
+ # probably a Sony NEWS 4.x
+ os=NEWS-OS
+ rel=`awk '{ print $3}' /etc/osversion`
+ arch=`/usr/sony/bin/machine`
+elif [ -d /usr/omron -a -f /bin/luna ]
+then
+ # probably a Omron LUNA
+ os=LUNA
+ if [ -f /bin/luna1 ] && /bin/luna1
+ then
+ rel=unios-b
+ arch=luna1
+ elif [ -f /bin/luna2 ] && /bin/luna2
+ then
+ rel=Mach
+ arch=luna2
+ elif [ -f /bin/luna88k ] && /bin/luna88k
+ then
+ rel=Mach
+ arch=luna88k
+ fi
+elif [ -d /usr/apollo -a -d \`node_data ]
+then
+ # probably a Apollo/DOMAIN
+ os=DomainOS
+ arch=$ISP
+ rel=`/usr/apollo/bin/bldt | grep Domain | awk '{ print $4 }' | sed -e 's/,//g'`
+fi
+
+if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
+then
+ arch=`uname -m | sed -e 's/ //g'`
+ os=`uname -s | sed -e 's/\//-/g' -e 's/ //g'`
+ rel=`uname -r | sed -e 's/(/-/g' -e 's/)//g'`
+fi
+
+#
+# Tweak the values we have already got. PLEASE LIMIT THESE to
+# tweaks that are absolutely necessary because your system uname
+# routine doesn't return something sufficiently unique. Don't do
+# it just because you don't like the name that is returned. You
+# can combine the architecture name with the os name to create a
+# unique Makefile name.
+#
+
+# tweak machine architecture
+case $arch
+in
+ sun4*) arch=sun4;;
+
+ 9000/*) arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
+
+ DS/907000) arch=ds90;;
+
+ NILE*) arch=NILE
+ os=`uname -v`;;
+esac
+
+# tweak operating system type and release
+node=`uname -n | sed -e 's/\//-/g' -e 's/ //g'`
+if [ "$os" = "$node" -a "$arch" = "i386" -a "$rel" = 3.2 -a "`uname -v`" = 2 ]
+then
+ # old versions of SCO UNIX set uname -s the same as uname -n
+ os=SCO_SV
+fi
+if [ "$rel" = 4.0 ]
+then
+ case $arch in
+ 3[34]??|3[34]??,*)
+ if [ -d /usr/sadm/sysadm/add-ons/WIN-TCP ]
+ then
+ os=NCR.MP-RAS.2.x
+ elif [ -d /usr/sadm/sysadm/add-ons/inet ]
+ then
+ os=NCR.MP-RAS.3.x
+ fi
+ ;;
+ esac
+fi
+
+case $os
+in
+ DYNIX-ptx) os=PTX;;
+ Paragon*) os=Paragon;;
+ HP-UX) rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
+ AIX) rela=$rel
+ rel=`uname -v`
+ case $rel in
+ 2) arch=""
+ ;;
+ 4) if [ "$rela" = "3" ]
+ then
+ arch=$rela
+ fi
+ ;;
+ esac
+ rel=$rel.$rela
+ ;;
+ BSD-386) os=BSD-OS;;
+ SCO_SV) os=SCO; rel=`uname -X | sed -n 's/Release = 3.2v//p'`;;
+ UNIX_System_V) if [ "$arch" = "ds90" ]
+ then
+ os="UXPDS"
+ rel=`uname -v | sed -e 's/\(V.*\)L.*/\1/'`
+ fi;;
+ SINIX-?) os=SINIX;;
+ DomainOS) case $rel in
+ 10.4*) rel=10.4;;
+ esac
+ ;;
+esac
+
+# get "base part" of operating system release
+rroot=`echo $rel | sed -e 's/\.[^.]*$//'`
+rbase=`echo $rel | sed -e 's/\..*//'`
+if [ "$rroot" = "$rbase" ]
+then
+ rroot=$rel
+fi
+
+# heuristic tweaks to clean up names -- PLEASE LIMIT THESE!
+if [ "$os" = "unix" ]
+then
+ # might be Altos System V
+ case $rel
+ in
+ 5.3*) os=Altos;;
+ esac
+elif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
+then
+ # might be a DYNIX/ptx 2.x system, which has a broken uname
+ if strings /lib/cpp | grep _SEQUENT_ > /dev/null
+ then
+ os=PTX
+ fi
+elif [ -d /usr/nec ]
+then
+ # NEC machine -- what is it running?
+ if [ "$os" = "UNIX_System_V" ]
+ then
+ os=EWS-UX_V
+ elif [ "$os" = "UNIX_SV" ]
+ then
+ os=UX4800
+ fi
+elif [ "$arch" = "mips" ]
+then
+ case $rel
+ in
+ 4_*)
+ if [ `uname -v` = "UMIPS" ]
+ then
+ os=RISCos
+ fi;;
+ esac
+fi
+
+# see if there is a "user suffix" specified
+if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
+then
+ sfx=""
+else
+ sfx=".${SENDMAIL_SUFFIX}"
+fi
+
+echo "Configuration: os=$os, rel=$rel, rbase=$rbase, rroot=$rroot, arch=$arch, sfx=$sfx"
+
+
+SMROOT=${SMROOT-..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+export SMROOT BUILDTOOLS
+
+# see if we are in a Build-able directory
+if [ ! -f Makefile.m4 ]; then
+ echo "Makefile.m4 not found. Build can only be run from a source directory."
+ exit $EX_UNAVAILABLE
+fi
+
+# now try to find a reasonable object directory
+if [ -r obj.$os.$rel.$arch$sfx ]; then
+ obj=obj.$os.$rel.$arch$sfx
+elif [ -r obj.$os.$rroot.$arch$sfx ]; then
+ obj=obj.$os.$rroot.$arch$sfx
+elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
+ obj=obj.$os.$rbase.x.$arch$sfx
+elif [ -r obj.$os.$rel$sfx ]; then
+ obj=obj.$os.$rel$sfx
+elif [ -r obj.$os.$rbase.x$sfx ]; then
+ obj=obj.$os.$rbase.x$sfx
+elif [ -r obj.$os.$arch$sfx ]; then
+ obj=obj.$os.$arch$sfx
+elif [ -r obj.$rel.$arch$sfx ]; then
+ obj=obj.$rel.$arch$sfx
+elif [ -r obj.$rbase.x.$arch$sfx ]; then
+ obj=obj.$rbase.x.$arch$sfx
+elif [ -r obj.$os$sfx ]; then
+ obj=obj.$os$sfx
+elif [ -r obj.$arch$sfx ]; then
+ obj=obj.$arch$sfx
+elif [ -r obj.$rel$sfx ]; then
+ obj=obj.$rel$sfx
+elif [ -r obj$sfx ]; then
+ obj=obj$sfx
+fi
+if [ -z "$obj" -o "$cflag" ]
+then
+ if [ -n "$obj" ]
+ then
+ echo "Clearing out existing $obj tree"
+ rm -rf $obj
+ else
+ # no existing obj directory -- try to create one if Makefile found
+ obj=obj.$os.$rel.$arch$sfx
+ fi
+ if [ -r $BUILDTOOLS/OS/$os.$rel.$arch$sfx ]; then
+ oscf=$os.$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel.$arch ]; then
+ oscf=$os.$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch$sfx ]; then
+ oscf=$os.$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch ]; then
+ oscf=$os.$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch$sfx ]; then
+ oscf=$os.$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch ]; then
+ oscf=$os.$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rel$sfx ]; then
+ oscf=$os.$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel ]; then
+ oscf=$os.$rel
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot$sfx ]; then
+ oscf=$os.$rroot$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot ]; then
+ oscf=$os.$rroot
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x$sfx ]; then
+ oscf=$os.$rbase.x$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x ]; then
+ oscf=$os.$rbase.x
+ elif [ -r $BUILDTOOLS/OS/$os.$arch$sfx ]; then
+ oscf=$os.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$arch ]; then
+ oscf=$os.$arch
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch$sfx ]; then
+ oscf=$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch ]; then
+ oscf=$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch$sfx ]; then
+ oscf=$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch ]; then
+ oscf=$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch$sfx ]; then
+ oscf=$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch ]; then
+ oscf=$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os$sfx ]; then
+ oscf=$os$sfx
+ elif [ -r $BUILDTOOLS/OS/$os ]; then
+ oscf=$os
+ elif [ -r $BUILDTOOLS/OS/$arch$sfx ]; then
+ oscf=$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$arch ]; then
+ oscf=$arch
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel ]; then
+ oscf=$rel
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ else
+ echo "Cannot determine how to support $arch.$os.$rel" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ ret=$?
+ if [ $ret -ne 0 ]
+ then
+ exit $ret
+ fi
+ echo "Using M4=$M4"
+ export M4
+ if [ "$mflag" ]
+ then
+ echo "Will run in virgin $obj using $BUILDTOOLS/OS/$oscf"
+ exit 0
+ fi
+ if [ "$ABI" ]
+ then
+ echo "Using ABI $ABI"
+ fi
+ echo "Creating $obj using $BUILDTOOLS/OS/$oscf"
+ mkdir $obj
+ (cd $obj; ln -s ../*.[ch158] .)
+ if [ -f sendmail.hf ]
+ then
+ (cd $obj; ln -s ../sendmail.hf .)
+ fi
+
+ rm -f $obj/.settings$$
+ echo 'divert(-1)' > $obj/.settings$$
+ cat $BUILDTOOLS/M4/header.m4 >> $obj/.settings$$
+ if [ "$ABI" ]
+ then
+ echo "define(\`confABI', \`$ABI')" >> $obj/.settings$$
+ fi
+ cat $BUILDTOOLS/OS/$oscf >> $obj/.settings$$
+
+ if [ -z "$siteconfig" ]
+ then
+ # none specified, use defaults
+ if [ -f $BUILDTOOLS/Site/site.$oscf$sfx.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf$sfx.m4
+ elif [ -f $BUILDTOOLS/Site/site.$oscf.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf.m4
+ fi
+ if [ -f $BUILDTOOLS/Site/site.config.m4 ]
+ then
+ siteconfig="$BUILDTOOLS/Site/site.config.m4 $siteconfig"
+ fi
+ fi
+ if [ ! -z "$siteconfig" ]
+ then
+ echo "Including $siteconfig"
+ cat $siteconfig >> $obj/.settings$$
+ fi
+ if [ "$libdirs" ]
+ then
+ echo "define(\`confLIBDIRS', confLIBDIRS \`\`$libdirs'')" >> $obj/.settings$$
+ fi
+ if [ "$incdirs" ]
+ then
+ echo "define(\`confINCDIRS', confINCDIRS \`\`$incdirs'')" >> $obj/.settings$$
+ fi
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ libdirs=`(cat $obj/.settings$$; echo "_SRIDBIL_= confLIBDIRS" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_SRIDBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_SRIDBIL_=//"`
+ libsrch=`(cat $obj/.settings$$; echo "_HCRSBIL_= confLIBSEARCH" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_HCRSBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_HCRSBIL_=//"`
+ echo 'divert(-1)' >> $obj/.settings$$
+ LIBDIRS="$libdirs" LIBSRCH="$libsrch" SITECONFIG="$siteconfig" sh $BUILDTOOLS/bin/configure.sh $sflag $oscf >> $obj/.settings$$
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' $obj/.settings$$ | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - Makefile.m4 | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' > $obj/Makefile
+ if [ $? -ne 0 -o ! -s $obj/Makefile ]
+ then
+ echo "ERROR: ${M4} failed; You may need a newer version of M4, at least as new as System V or GNU" 1>&2
+ rm -rf $obj
+ exit $EX_UNAVAILABLE
+ fi
+ rm -f $obj/.settings$$
+ echo "Making dependencies in $obj"
+ (cd $obj; ${MAKE-make} depend)
+fi
+
+if [ "$mflag" ]
+then
+ makefile=`ls -l $obj/Makefile | sed 's/.* //'`
+ if [ -z "$makefile" ]
+ then
+ echo "ERROR: $obj exists but has no Makefile" >&2
+ exit $EX_NOINPUT
+ fi
+ echo "Will run in existing $obj using $makefile"
+ exit 0
+fi
+
+echo "Making in $obj"
+cd $obj
+eval exec ${MAKE-make} $makeargs
diff --git a/contrib/sendmail/rmail/Makefile.m4 b/contrib/sendmail/rmail/Makefile.m4
new file mode 100644
index 000000000000..55468bd4f5cf
--- /dev/null
+++ b/contrib/sendmail/rmail/Makefile.m4
@@ -0,0 +1,105 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.16 (Berkeley) 6/18/98
+#
+
+# C compiler
+CC= confCC
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# location of sendmail source directory
+SRCDIR= ifdef(`confSRCDIR', `confSRCDIR', `../../src')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= ifdef(`confENVDEF', `confENVDEF')
+
+# see also conf.h for additional compilation flags
+
+# include directories
+INCDIRS=-I${SRCDIR} confINCDIRS
+
+# loader options
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# libraries required on your system
+LIBS= ifdef(`confLIBS', `confLIBS')
+
+# location of rmail binary (usually /usr/sbin or /usr/etc)
+BINDIR= ${DESTDIR}ifdef(`confUBINDIR', `confUBINDIR', `/usr/bin')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD')
+
+undivert(1)
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${ENVDEF}
+CFLAGS= $O ${COPTS}
+
+BEFORE= snprintf.c confBEFORE
+OBJS= rmail.o snprintf.o ${OBJADD}
+
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-mandoc')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+BINOWN= ifdef(`confUBINOWN', `confUBINOWN', `bin')
+BINGRP= ifdef(`confUBINGRP', `confUBINGRP', `bin')
+BINMODE=ifdef(`confUBINMODE', `confUBINMODE', `555')
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+
+MANROOT=${DESTDIR}ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+ALL= rmail rmail.${MAN8SRC}
+
+all: ${ALL}
+
+rmail: ${BEFORE} ${OBJS}
+ ${CC} -o rmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
+
+snprintf.c: ${SRCDIR}/snprintf.c
+ -ln -s ${SRCDIR}/snprintf.c snprintf.c
+
+undivert(3)
+
+rmail.${MAN8SRC}: rmail.8
+ ${NROFF} ${MANDOC} rmail.8 > rmail.${MAN8SRC}
+
+install:
+ @echo "NOTE: This version of rmail is not suited for some operating"
+ @echo " systems. You can force the install using"
+ @echo " '${MAKE} force-install'."
+
+force-install: install-rmail install-docs
+
+install-rmail: rmail
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} rmail ${BINDIR}
+
+install-docs: rmail.${MAN8SRC}
+ifdef(`confNO_MAN_INSTALL', `dnl',
+` ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} rmail.${MAN8SRC} ${MAN8}/rmail.${MAN8EXT}')
+
+clean:
+ rm -f ${OBJS} rmail rmail.${MAN8SRC}
+
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE',
+`generic').m4)dnl
+################ End of dependency scripts
diff --git a/contrib/sendmail/rmail/rmail.8 b/contrib/sendmail/rmail/rmail.8
new file mode 100644
index 000000000000..ad70e5b5652a
--- /dev/null
+++ b/contrib/sendmail/rmail/rmail.8
@@ -0,0 +1,49 @@
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\" Copyright (c) 1983, 1990
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\" @(#)rmail.8 6.14 (Berkeley) 5/19/98
+.\"
+.Dd May 19, 1998
+.Dt RMAIL 8
+.Os BSD 4.2
+.Sh NAME
+.Nm rmail
+.Nd handle remote mail received via uucp
+.Sh SYNOPSIS
+.Nm rmail
+.Ar user ...
+.Sh DESCRIPTION
+.Nm Rmail
+interprets incoming mail received via
+.Xr uucp 1 ,
+collapsing ``From'' lines in the form generated
+by
+.Xr mail.local 8
+into a single line of the form ``return-path!sender'',
+and passing the processed mail on to
+.Xr sendmail 8 .
+.Pp
+.Nm Rmail
+is explicitly designed for use with
+.Xr uucp
+and
+.Xr sendmail .
+.Sh SEE ALSO
+.Xr uucp 1 ,
+.Xr mail.local 8 ,
+.Xr sendmail 8
+.Sh HISTORY
+The
+.Nm rmail
+program appeared in
+.Bx 4.2 .
+.Sh BUGS
+.Nm Rmail
+should not reside in
+.Pa /bin .
diff --git a/usr.sbin/sendmail/rmail/rmail.c b/contrib/sendmail/rmail/rmail.c
index 29af02a90f6d..9d58fcc526b2 100644
--- a/usr.sbin/sendmail/rmail/rmail.c
+++ b/contrib/sendmail/rmail/rmail.c
@@ -1,34 +1,12 @@
/*
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
@@ -38,7 +16,7 @@ static char copyright[] =
#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)rmail.c 8.3 (Berkeley) 5/15/95";
+static char sccsid[] = "@(#)rmail.c 8.17 (Berkeley) 5/19/98";
#endif /* not lint */
/*
@@ -71,19 +49,83 @@ static char sccsid[] = "@(#)rmail.c 8.3 (Berkeley) 5/15/95";
#include <ctype.h>
#include <fcntl.h>
-#include <paths.h>
+#ifdef BSD4_4
+# define FORK vfork
+# include <paths.h>
+#else
+# define FORK fork
+# ifndef _PATH_SENDMAIL
+# define _PATH_SENDMAIL "/usr/lib/sendmail"
+# endif
+#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sysexits.h>
#include <unistd.h>
+#ifdef EX_OK
+# undef EX_OK /* unistd.h may have another use for this */
+#endif
+#include <sysexits.h>
#ifndef MAX
# define MAX(a, b) ((a) < (b) ? (b) : (a))
#endif
+#ifndef __P
+# ifdef __STDC__
+# define __P(protos) protos
+# else
+# define __P(protos) ()
+# define const
+# endif
+#endif
+
+#if defined(BSD4_4) || defined(linux) || SOLARIS >= 20600 || (SOLARIS < 10000 && SOLARIS >= 206)
+# define HASSNPRINTF 1
+#endif
+
+#if defined(IRIX64) || defined(IRIX5) || defined(IRIX6) || \
+ defined(BSD4_4) || defined(__osf__) || defined(__GNU_LIBRARY__)
+# ifndef HASSTRERROR
+# define HASSTRERROR 1 /* has strerror(3) */
+# endif
+#endif
+
+#if !HASSTRERROR
+extern char *strerror __P((int));
+#endif
+
+#if defined(sun) && !defined(BSD) && !defined(SOLARIS) && !defined(__svr4__) && !defined(__SVR4)
+# define memmove(d, s, l) (bcopy((s), (d), (l)))
+#endif
+
+#if !HASSNPRINTF
+extern int snprintf __P((char *, size_t, const char *, ...));
+#endif /* !HASSNPRINTF */
+
+u_char tTdvect[100];
+
void err __P((int, const char *, ...));
void usage __P((void));
+char *xalloc __P((int));
+
+#define newstr(s) strcpy(xalloc(strlen(s) + 1), s)
+
+char *
+xalloc(sz)
+ register int sz;
+{
+ register char *p;
+
+ /* some systems can't handle size zero mallocs */
+ if (sz <= 0)
+ sz = 1;
+
+ p = malloc((unsigned) sz);
+ if (p == NULL)
+ err(EX_TEMPFAIL, "out of memory");
+ return (p);
+}
int
main(argc, argv)
@@ -150,7 +192,8 @@ main(argc, argv)
/* Use the "remote from" if it exists. */
for (p = addrp; (p = strchr(p + 1, 'r')) != NULL;)
if (!strncmp(p, "remote from ", 12)) {
- for (t = p += 12; *t && !isspace(*t); ++t);
+ for (t = p += 12;
+ *t && !(isascii(*t) && isspace(*t)); ++t);
*t = '\0';
if (debug)
(void)fprintf(stderr,
@@ -159,7 +202,7 @@ main(argc, argv)
}
/* Else use the string up to the last bang. */
- if (p == NULL)
+ if (p == NULL) {
if (*addrp == '!')
err(EX_DATAERR,
"bang starts address: %s", addrp);
@@ -173,17 +216,16 @@ main(argc, argv)
if (debug)
(void)fprintf(stderr, "bang: %s\n", p);
}
-
+ }
/* 'p' now points to any system string from this line. */
if (p != NULL) {
/* Nul terminate it as necessary. */
- for (t = p; *t && !isspace(*t); ++t);
+ for (t = p; *t && !(isascii(*t) && isspace(*t)); ++t);
*t = '\0';
/* If the first system, copy to the from_sys string. */
if (from_sys == NULL) {
- if ((from_sys = strdup(p)) == NULL)
- err(EX_TEMPFAIL, NULL);
+ from_sys = newstr(p);
if (debug)
(void)fprintf(stderr,
"from_sys: %s\n", from_sys);
@@ -209,14 +251,13 @@ main(argc, argv)
}
/* Save off from user's address; the last one wins. */
- for (p = addrp; *p && !isspace(*p); ++p);
+ for (p = addrp; *p && !(isascii(*p) && isspace(*p)); ++p);
*p = '\0';
if (*addrp == '\0')
addrp = "<>";
if (from_user != NULL)
free(from_user);
- if ((from_user = strdup(addrp)) == NULL)
- err(EX_TEMPFAIL, NULL);
+ from_user = newstr(addrp);
if (debug) {
if (from_path != NULL)
@@ -243,14 +284,12 @@ main(argc, argv)
domain, from_sys, domain);
else
(void)snprintf(buf, sizeof(buf), "-p%s:%s", domain, from_sys);
- if ((args[i++] = strdup(buf)) == NULL)
- err(EX_TEMPFAIL, NULL);
+ args[i++] = newstr(buf);
/* Set name of ``from'' person. */
(void)snprintf(buf, sizeof(buf), "-f%s%s",
from_path ? from_path : "", from_user);
- if ((args[i++] = strdup(buf)) == NULL)
- err(EX_TEMPFAIL, NULL);
+ args[i++] = newstr(buf);
/*
* Don't copy arguments beginning with - as they will be
@@ -294,7 +333,7 @@ main(argc, argv)
if (pipe(pdes) < 0)
err(EX_OSERR, NULL);
- switch (pid = vfork()) {
+ switch (pid = FORK()) {
case -1: /* Err. */
err(EX_OSERR, NULL);
case 0: /* Child. */
@@ -371,3 +410,21 @@ err(eval, fmt, va_alist)
(void)fprintf(stderr, "\n");
exit(eval);
}
+
+#if !HASSTRERROR
+
+char *
+strerror(eno)
+ int eno;
+{
+ extern int sys_nerr;
+ extern char *sys_errlist[];
+ static char ebuf[60];
+
+ if (eno >= 0 && eno < sys_nerr)
+ return sys_errlist[eno];
+ (void) sprintf(ebuf, "Error %d", eno);
+ return ebuf;
+}
+
+#endif /* !HASSTRERROR */
diff --git a/contrib/sendmail/smrsh/Build b/contrib/sendmail/smrsh/Build
new file mode 100755
index 000000000000..ab8a49d78cac
--- /dev/null
+++ b/contrib/sendmail/smrsh/Build
@@ -0,0 +1,513 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1993, 1996-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)Build 8.93 (Berkeley) 6/24/98
+#
+
+#
+# A quick-and-dirty script to compile sendmail and related programs
+# in the presence of multiple architectures. To use, just use
+# "sh Build".
+#
+
+trap "rm -f $obj/.settings$$; exit" 1 2 3 15
+
+cflag=""
+mflag=""
+sflag=""
+makeargs=""
+libdirs=""
+incdirs=""
+libsrch=""
+siteconfig=""
+EX_USAGE=64
+EX_NOINPUT=66
+EX_UNAVAILABLE=69
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -c) # clean out existing $obj tree
+ cflag=1
+ shift
+ ;;
+
+ -m) # show Makefile name only
+ mflag=1
+ shift
+ ;;
+
+ -E*) # environment variables to pass into Build
+ arg=`echo $1 | sed 's/^-E//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ -z "$arg" ]
+ then
+ echo "Empty -E flag" >&2
+ exit $EX_USAGE
+ else
+ case $arg
+ in
+ *=*) # check format
+ eval $arg
+ export `echo $arg | sed 's;=.*;;'`
+ ;;
+ *) # bad format
+ echo "Bad format for -E argument ($arg)" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ shift
+ fi
+ ;;
+
+ -L*) # set up LIBDIRS
+ libdirs="$libdirs $1"
+ shift
+ ;;
+
+ -I*) # set up INCDIRS
+ incdirs="$incdirs $1"
+ shift
+ ;;
+
+ -f*) # select site config file
+ arg=`echo $1 | sed 's/^-f//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ "$siteconfig" ]
+ then
+ echo "Only one -f flag allowed" >&2
+ exit $EX_USAGE
+ else
+ siteconfig=$arg
+ if [ -z "$siteconfig" ]
+ then
+ echo "Missing argument for -f flag" >&2
+ exit $EX_USAGE
+ elif [ ! -f "$siteconfig" ]
+ then
+ echo "${siteconfig}: File not found"
+ exit $EX_NOINPUT
+ else
+ shift # move past argument
+ fi
+ fi
+ ;;
+
+ -S) # skip auto-configure
+ sflag="-s"
+ shift
+ ;;
+
+ *) # pass argument to make
+ makeargs="$makeargs \"$1\""
+ shift
+ ;;
+ esac
+done
+
+#
+# Do heuristic guesses !ONLY! for machines that do not have uname
+#
+if [ -d /NextApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
+then
+ # probably a NeXT box
+ arch=`hostinfo | sed -n 's/.*Processor type: \([^ ]*\).*/\1/p'`
+ os=NeXT
+ rel=`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`
+elif [ -f /usr/sony/bin/machine -a -f /etc/osversion ]
+then
+ # probably a Sony NEWS 4.x
+ os=NEWS-OS
+ rel=`awk '{ print $3}' /etc/osversion`
+ arch=`/usr/sony/bin/machine`
+elif [ -d /usr/omron -a -f /bin/luna ]
+then
+ # probably a Omron LUNA
+ os=LUNA
+ if [ -f /bin/luna1 ] && /bin/luna1
+ then
+ rel=unios-b
+ arch=luna1
+ elif [ -f /bin/luna2 ] && /bin/luna2
+ then
+ rel=Mach
+ arch=luna2
+ elif [ -f /bin/luna88k ] && /bin/luna88k
+ then
+ rel=Mach
+ arch=luna88k
+ fi
+elif [ -d /usr/apollo -a -d \`node_data ]
+then
+ # probably a Apollo/DOMAIN
+ os=DomainOS
+ arch=$ISP
+ rel=`/usr/apollo/bin/bldt | grep Domain | awk '{ print $4 }' | sed -e 's/,//g'`
+fi
+
+if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
+then
+ arch=`uname -m | sed -e 's/ //g'`
+ os=`uname -s | sed -e 's/\//-/g' -e 's/ //g'`
+ rel=`uname -r | sed -e 's/(/-/g' -e 's/)//g'`
+fi
+
+#
+# Tweak the values we have already got. PLEASE LIMIT THESE to
+# tweaks that are absolutely necessary because your system uname
+# routine doesn't return something sufficiently unique. Don't do
+# it just because you don't like the name that is returned. You
+# can combine the architecture name with the os name to create a
+# unique Makefile name.
+#
+
+# tweak machine architecture
+case $arch
+in
+ sun4*) arch=sun4;;
+
+ 9000/*) arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
+
+ DS/907000) arch=ds90;;
+
+ NILE*) arch=NILE
+ os=`uname -v`;;
+esac
+
+# tweak operating system type and release
+node=`uname -n | sed -e 's/\//-/g' -e 's/ //g'`
+if [ "$os" = "$node" -a "$arch" = "i386" -a "$rel" = 3.2 -a "`uname -v`" = 2 ]
+then
+ # old versions of SCO UNIX set uname -s the same as uname -n
+ os=SCO_SV
+fi
+if [ "$rel" = 4.0 ]
+then
+ case $arch in
+ 3[34]??|3[34]??,*)
+ if [ -d /usr/sadm/sysadm/add-ons/WIN-TCP ]
+ then
+ os=NCR.MP-RAS.2.x
+ elif [ -d /usr/sadm/sysadm/add-ons/inet ]
+ then
+ os=NCR.MP-RAS.3.x
+ fi
+ ;;
+ esac
+fi
+
+case $os
+in
+ DYNIX-ptx) os=PTX;;
+ Paragon*) os=Paragon;;
+ HP-UX) rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
+ AIX) rela=$rel
+ rel=`uname -v`
+ case $rel in
+ 2) arch=""
+ ;;
+ 4) if [ "$rela" = "3" ]
+ then
+ arch=$rela
+ fi
+ ;;
+ esac
+ rel=$rel.$rela
+ ;;
+ BSD-386) os=BSD-OS;;
+ SCO_SV) os=SCO; rel=`uname -X | sed -n 's/Release = 3.2v//p'`;;
+ UNIX_System_V) if [ "$arch" = "ds90" ]
+ then
+ os="UXPDS"
+ rel=`uname -v | sed -e 's/\(V.*\)L.*/\1/'`
+ fi;;
+ SINIX-?) os=SINIX;;
+ DomainOS) case $rel in
+ 10.4*) rel=10.4;;
+ esac
+ ;;
+esac
+
+# get "base part" of operating system release
+rroot=`echo $rel | sed -e 's/\.[^.]*$//'`
+rbase=`echo $rel | sed -e 's/\..*//'`
+if [ "$rroot" = "$rbase" ]
+then
+ rroot=$rel
+fi
+
+# heuristic tweaks to clean up names -- PLEASE LIMIT THESE!
+if [ "$os" = "unix" ]
+then
+ # might be Altos System V
+ case $rel
+ in
+ 5.3*) os=Altos;;
+ esac
+elif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
+then
+ # might be a DYNIX/ptx 2.x system, which has a broken uname
+ if strings /lib/cpp | grep _SEQUENT_ > /dev/null
+ then
+ os=PTX
+ fi
+elif [ -d /usr/nec ]
+then
+ # NEC machine -- what is it running?
+ if [ "$os" = "UNIX_System_V" ]
+ then
+ os=EWS-UX_V
+ elif [ "$os" = "UNIX_SV" ]
+ then
+ os=UX4800
+ fi
+elif [ "$arch" = "mips" ]
+then
+ case $rel
+ in
+ 4_*)
+ if [ `uname -v` = "UMIPS" ]
+ then
+ os=RISCos
+ fi;;
+ esac
+fi
+
+# see if there is a "user suffix" specified
+if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
+then
+ sfx=""
+else
+ sfx=".${SENDMAIL_SUFFIX}"
+fi
+
+echo "Configuration: os=$os, rel=$rel, rbase=$rbase, rroot=$rroot, arch=$arch, sfx=$sfx"
+
+
+SMROOT=${SMROOT-..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+export SMROOT BUILDTOOLS
+
+# see if we are in a Build-able directory
+if [ ! -f Makefile.m4 ]; then
+ echo "Makefile.m4 not found. Build can only be run from a source directory."
+ exit $EX_UNAVAILABLE
+fi
+
+# now try to find a reasonable object directory
+if [ -r obj.$os.$rel.$arch$sfx ]; then
+ obj=obj.$os.$rel.$arch$sfx
+elif [ -r obj.$os.$rroot.$arch$sfx ]; then
+ obj=obj.$os.$rroot.$arch$sfx
+elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
+ obj=obj.$os.$rbase.x.$arch$sfx
+elif [ -r obj.$os.$rel$sfx ]; then
+ obj=obj.$os.$rel$sfx
+elif [ -r obj.$os.$rbase.x$sfx ]; then
+ obj=obj.$os.$rbase.x$sfx
+elif [ -r obj.$os.$arch$sfx ]; then
+ obj=obj.$os.$arch$sfx
+elif [ -r obj.$rel.$arch$sfx ]; then
+ obj=obj.$rel.$arch$sfx
+elif [ -r obj.$rbase.x.$arch$sfx ]; then
+ obj=obj.$rbase.x.$arch$sfx
+elif [ -r obj.$os$sfx ]; then
+ obj=obj.$os$sfx
+elif [ -r obj.$arch$sfx ]; then
+ obj=obj.$arch$sfx
+elif [ -r obj.$rel$sfx ]; then
+ obj=obj.$rel$sfx
+elif [ -r obj$sfx ]; then
+ obj=obj$sfx
+fi
+if [ -z "$obj" -o "$cflag" ]
+then
+ if [ -n "$obj" ]
+ then
+ echo "Clearing out existing $obj tree"
+ rm -rf $obj
+ else
+ # no existing obj directory -- try to create one if Makefile found
+ obj=obj.$os.$rel.$arch$sfx
+ fi
+ if [ -r $BUILDTOOLS/OS/$os.$rel.$arch$sfx ]; then
+ oscf=$os.$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel.$arch ]; then
+ oscf=$os.$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch$sfx ]; then
+ oscf=$os.$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch ]; then
+ oscf=$os.$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch$sfx ]; then
+ oscf=$os.$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch ]; then
+ oscf=$os.$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rel$sfx ]; then
+ oscf=$os.$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel ]; then
+ oscf=$os.$rel
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot$sfx ]; then
+ oscf=$os.$rroot$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot ]; then
+ oscf=$os.$rroot
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x$sfx ]; then
+ oscf=$os.$rbase.x$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x ]; then
+ oscf=$os.$rbase.x
+ elif [ -r $BUILDTOOLS/OS/$os.$arch$sfx ]; then
+ oscf=$os.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$arch ]; then
+ oscf=$os.$arch
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch$sfx ]; then
+ oscf=$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch ]; then
+ oscf=$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch$sfx ]; then
+ oscf=$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch ]; then
+ oscf=$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch$sfx ]; then
+ oscf=$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch ]; then
+ oscf=$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os$sfx ]; then
+ oscf=$os$sfx
+ elif [ -r $BUILDTOOLS/OS/$os ]; then
+ oscf=$os
+ elif [ -r $BUILDTOOLS/OS/$arch$sfx ]; then
+ oscf=$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$arch ]; then
+ oscf=$arch
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel ]; then
+ oscf=$rel
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ else
+ echo "Cannot determine how to support $arch.$os.$rel" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ ret=$?
+ if [ $ret -ne 0 ]
+ then
+ exit $ret
+ fi
+ echo "Using M4=$M4"
+ export M4
+ if [ "$mflag" ]
+ then
+ echo "Will run in virgin $obj using $BUILDTOOLS/OS/$oscf"
+ exit 0
+ fi
+ if [ "$ABI" ]
+ then
+ echo "Using ABI $ABI"
+ fi
+ echo "Creating $obj using $BUILDTOOLS/OS/$oscf"
+ mkdir $obj
+ (cd $obj; ln -s ../*.[ch158] .)
+ if [ -f sendmail.hf ]
+ then
+ (cd $obj; ln -s ../sendmail.hf .)
+ fi
+
+ rm -f $obj/.settings$$
+ echo 'divert(-1)' > $obj/.settings$$
+ cat $BUILDTOOLS/M4/header.m4 >> $obj/.settings$$
+ if [ "$ABI" ]
+ then
+ echo "define(\`confABI', \`$ABI')" >> $obj/.settings$$
+ fi
+ cat $BUILDTOOLS/OS/$oscf >> $obj/.settings$$
+
+ if [ -z "$siteconfig" ]
+ then
+ # none specified, use defaults
+ if [ -f $BUILDTOOLS/Site/site.$oscf$sfx.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf$sfx.m4
+ elif [ -f $BUILDTOOLS/Site/site.$oscf.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf.m4
+ fi
+ if [ -f $BUILDTOOLS/Site/site.config.m4 ]
+ then
+ siteconfig="$BUILDTOOLS/Site/site.config.m4 $siteconfig"
+ fi
+ fi
+ if [ ! -z "$siteconfig" ]
+ then
+ echo "Including $siteconfig"
+ cat $siteconfig >> $obj/.settings$$
+ fi
+ if [ "$libdirs" ]
+ then
+ echo "define(\`confLIBDIRS', confLIBDIRS \`\`$libdirs'')" >> $obj/.settings$$
+ fi
+ if [ "$incdirs" ]
+ then
+ echo "define(\`confINCDIRS', confINCDIRS \`\`$incdirs'')" >> $obj/.settings$$
+ fi
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ libdirs=`(cat $obj/.settings$$; echo "_SRIDBIL_= confLIBDIRS" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_SRIDBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_SRIDBIL_=//"`
+ libsrch=`(cat $obj/.settings$$; echo "_HCRSBIL_= confLIBSEARCH" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_HCRSBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_HCRSBIL_=//"`
+ echo 'divert(-1)' >> $obj/.settings$$
+ LIBDIRS="$libdirs" LIBSRCH="$libsrch" SITECONFIG="$siteconfig" sh $BUILDTOOLS/bin/configure.sh $sflag $oscf >> $obj/.settings$$
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' $obj/.settings$$ | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - Makefile.m4 | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' > $obj/Makefile
+ if [ $? -ne 0 -o ! -s $obj/Makefile ]
+ then
+ echo "ERROR: ${M4} failed; You may need a newer version of M4, at least as new as System V or GNU" 1>&2
+ rm -rf $obj
+ exit $EX_UNAVAILABLE
+ fi
+ rm -f $obj/.settings$$
+ echo "Making dependencies in $obj"
+ (cd $obj; ${MAKE-make} depend)
+fi
+
+if [ "$mflag" ]
+then
+ makefile=`ls -l $obj/Makefile | sed 's/.* //'`
+ if [ -z "$makefile" ]
+ then
+ echo "ERROR: $obj exists but has no Makefile" >&2
+ exit $EX_NOINPUT
+ fi
+ echo "Will run in existing $obj using $makefile"
+ exit 0
+fi
+
+echo "Making in $obj"
+cd $obj
+eval exec ${MAKE-make} $makeargs
diff --git a/contrib/sendmail/smrsh/Makefile.m4 b/contrib/sendmail/smrsh/Makefile.m4
new file mode 100644
index 000000000000..19b2723e8859
--- /dev/null
+++ b/contrib/sendmail/smrsh/Makefile.m4
@@ -0,0 +1,96 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.13 (Berkeley) 6/4/98
+#
+
+# C compiler
+CC= confCC
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# location of sendmail source directory
+SRCDIR= ifdef(`confSRCDIR', `confSRCDIR', `../../src')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= ifdef(`confENVDEF', `confENVDEF')
+
+# include directories
+INCDIRS=-I${SRCDIR} confINCDIRS
+
+# loader options
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# libraries required on your system
+LIBS= ifdef(`confLIBS', `confLIBS')
+
+# location of smrsh binary (usually /usr/libexec or /usr/etc)
+BINDIR= ${DESTDIR}ifdef(`confEBINDIR', `confEBINDIR', `/usr/libexec')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD')
+
+undivert(1)
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${ENVDEF}
+CFLAGS= $O ${COPTS}
+
+BEFORE= confBEFORE
+OBJS= smrsh.o ${OBJADD}
+
+# Which *roff program has -mandoc support
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-mandoc')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+BINOWN= ifdef(`confUBINOWN', `confUBINOWN', `bin')
+BINGRP= ifdef(`confUBINGRP', `confUBINGRP', `bin')
+BINMODE=ifdef(`confUBINMODE', `confUBINMODE', `555')
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+
+MANROOT=${DESTDIR}ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+ALL= smrsh smrsh.${MAN8SRC}
+
+all: ${ALL}
+
+smrsh: ${BEFORE} ${OBJS}
+ ${CC} -o smrsh ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
+
+undivert(3)
+
+smrsh.${MAN8SRC}: smrsh.8
+ ${NROFF} ${MANDOC} smrsh.8 > smrsh.${MAN8SRC}
+
+install: install-smrsh install-docs
+
+install-smrsh: smrsh
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} smrsh ${BINDIR}
+
+install-docs: smrsh.${MAN8SRC}
+ifdef(`confNO_MAN_INSTALL', `dnl',
+` ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} smrsh.${MAN8SRC} ${MAN8}/smrsh.${MAN8EXT}')
+
+clean:
+ rm -f ${OBJS} smrsh smrsh.${MAN8SRC}
+
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE',
+`generic').m4)dnl
+################ End of dependency scripts
diff --git a/usr.sbin/sendmail/smrsh/README b/contrib/sendmail/smrsh/README
index 13f545c7e666..13f545c7e666 100644
--- a/usr.sbin/sendmail/smrsh/README
+++ b/contrib/sendmail/smrsh/README
diff --git a/usr.sbin/sendmail/smrsh/smrsh.8 b/contrib/sendmail/smrsh/smrsh.8
index a28bd0aa4985..067eaf32ee3c 100644
--- a/usr.sbin/sendmail/smrsh/smrsh.8
+++ b/contrib/sendmail/smrsh/smrsh.8
@@ -1,36 +1,14 @@
-.\" Copyright (c) 1993 Eric P. Allman
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\" Copyright (c) 1993 Eric P. Allman. All rights reserved.
.\" Copyright (c) 1993
.\" The Regents of the University of California. All rights reserved.
.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
.\"
-.\" @(#)smrsh.8 8.2 (Berkeley) 1/9/96
+.\" @(#)smrsh.8 8.7 (Berkeley) 5/19/98
.\"
.TH SMRSH 8 11/02/93
.SH NAME
diff --git a/usr.sbin/sendmail/smrsh/smrsh.c b/contrib/sendmail/smrsh/smrsh.c
index c3314e6e17c6..66e0ebab66a3 100644
--- a/usr.sbin/sendmail/smrsh/smrsh.c
+++ b/contrib/sendmail/smrsh/smrsh.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1993 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1993 Eric P. Allman. All rights reserved.
* Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)smrsh.c 8.5 (Berkeley) 10/19/97";
+static char sccsid[] = "@(#)smrsh.c 8.11 (Berkeley) 5/19/98";
#endif /* not lint */
/*
@@ -91,6 +69,7 @@ static char sccsid[] = "@(#)smrsh.c 8.5 (Berkeley) 10/19/97";
# define PATH "/bin:/usr/bin:/usr/ucb"
#endif
+int
main(argc, argv)
int argc;
char **argv;
diff --git a/contrib/sendmail/src/Build b/contrib/sendmail/src/Build
new file mode 100755
index 000000000000..ab8a49d78cac
--- /dev/null
+++ b/contrib/sendmail/src/Build
@@ -0,0 +1,513 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1993, 1996-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)Build 8.93 (Berkeley) 6/24/98
+#
+
+#
+# A quick-and-dirty script to compile sendmail and related programs
+# in the presence of multiple architectures. To use, just use
+# "sh Build".
+#
+
+trap "rm -f $obj/.settings$$; exit" 1 2 3 15
+
+cflag=""
+mflag=""
+sflag=""
+makeargs=""
+libdirs=""
+incdirs=""
+libsrch=""
+siteconfig=""
+EX_USAGE=64
+EX_NOINPUT=66
+EX_UNAVAILABLE=69
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -c) # clean out existing $obj tree
+ cflag=1
+ shift
+ ;;
+
+ -m) # show Makefile name only
+ mflag=1
+ shift
+ ;;
+
+ -E*) # environment variables to pass into Build
+ arg=`echo $1 | sed 's/^-E//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ -z "$arg" ]
+ then
+ echo "Empty -E flag" >&2
+ exit $EX_USAGE
+ else
+ case $arg
+ in
+ *=*) # check format
+ eval $arg
+ export `echo $arg | sed 's;=.*;;'`
+ ;;
+ *) # bad format
+ echo "Bad format for -E argument ($arg)" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ shift
+ fi
+ ;;
+
+ -L*) # set up LIBDIRS
+ libdirs="$libdirs $1"
+ shift
+ ;;
+
+ -I*) # set up INCDIRS
+ incdirs="$incdirs $1"
+ shift
+ ;;
+
+ -f*) # select site config file
+ arg=`echo $1 | sed 's/^-f//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ "$siteconfig" ]
+ then
+ echo "Only one -f flag allowed" >&2
+ exit $EX_USAGE
+ else
+ siteconfig=$arg
+ if [ -z "$siteconfig" ]
+ then
+ echo "Missing argument for -f flag" >&2
+ exit $EX_USAGE
+ elif [ ! -f "$siteconfig" ]
+ then
+ echo "${siteconfig}: File not found"
+ exit $EX_NOINPUT
+ else
+ shift # move past argument
+ fi
+ fi
+ ;;
+
+ -S) # skip auto-configure
+ sflag="-s"
+ shift
+ ;;
+
+ *) # pass argument to make
+ makeargs="$makeargs \"$1\""
+ shift
+ ;;
+ esac
+done
+
+#
+# Do heuristic guesses !ONLY! for machines that do not have uname
+#
+if [ -d /NextApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
+then
+ # probably a NeXT box
+ arch=`hostinfo | sed -n 's/.*Processor type: \([^ ]*\).*/\1/p'`
+ os=NeXT
+ rel=`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`
+elif [ -f /usr/sony/bin/machine -a -f /etc/osversion ]
+then
+ # probably a Sony NEWS 4.x
+ os=NEWS-OS
+ rel=`awk '{ print $3}' /etc/osversion`
+ arch=`/usr/sony/bin/machine`
+elif [ -d /usr/omron -a -f /bin/luna ]
+then
+ # probably a Omron LUNA
+ os=LUNA
+ if [ -f /bin/luna1 ] && /bin/luna1
+ then
+ rel=unios-b
+ arch=luna1
+ elif [ -f /bin/luna2 ] && /bin/luna2
+ then
+ rel=Mach
+ arch=luna2
+ elif [ -f /bin/luna88k ] && /bin/luna88k
+ then
+ rel=Mach
+ arch=luna88k
+ fi
+elif [ -d /usr/apollo -a -d \`node_data ]
+then
+ # probably a Apollo/DOMAIN
+ os=DomainOS
+ arch=$ISP
+ rel=`/usr/apollo/bin/bldt | grep Domain | awk '{ print $4 }' | sed -e 's/,//g'`
+fi
+
+if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
+then
+ arch=`uname -m | sed -e 's/ //g'`
+ os=`uname -s | sed -e 's/\//-/g' -e 's/ //g'`
+ rel=`uname -r | sed -e 's/(/-/g' -e 's/)//g'`
+fi
+
+#
+# Tweak the values we have already got. PLEASE LIMIT THESE to
+# tweaks that are absolutely necessary because your system uname
+# routine doesn't return something sufficiently unique. Don't do
+# it just because you don't like the name that is returned. You
+# can combine the architecture name with the os name to create a
+# unique Makefile name.
+#
+
+# tweak machine architecture
+case $arch
+in
+ sun4*) arch=sun4;;
+
+ 9000/*) arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
+
+ DS/907000) arch=ds90;;
+
+ NILE*) arch=NILE
+ os=`uname -v`;;
+esac
+
+# tweak operating system type and release
+node=`uname -n | sed -e 's/\//-/g' -e 's/ //g'`
+if [ "$os" = "$node" -a "$arch" = "i386" -a "$rel" = 3.2 -a "`uname -v`" = 2 ]
+then
+ # old versions of SCO UNIX set uname -s the same as uname -n
+ os=SCO_SV
+fi
+if [ "$rel" = 4.0 ]
+then
+ case $arch in
+ 3[34]??|3[34]??,*)
+ if [ -d /usr/sadm/sysadm/add-ons/WIN-TCP ]
+ then
+ os=NCR.MP-RAS.2.x
+ elif [ -d /usr/sadm/sysadm/add-ons/inet ]
+ then
+ os=NCR.MP-RAS.3.x
+ fi
+ ;;
+ esac
+fi
+
+case $os
+in
+ DYNIX-ptx) os=PTX;;
+ Paragon*) os=Paragon;;
+ HP-UX) rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
+ AIX) rela=$rel
+ rel=`uname -v`
+ case $rel in
+ 2) arch=""
+ ;;
+ 4) if [ "$rela" = "3" ]
+ then
+ arch=$rela
+ fi
+ ;;
+ esac
+ rel=$rel.$rela
+ ;;
+ BSD-386) os=BSD-OS;;
+ SCO_SV) os=SCO; rel=`uname -X | sed -n 's/Release = 3.2v//p'`;;
+ UNIX_System_V) if [ "$arch" = "ds90" ]
+ then
+ os="UXPDS"
+ rel=`uname -v | sed -e 's/\(V.*\)L.*/\1/'`
+ fi;;
+ SINIX-?) os=SINIX;;
+ DomainOS) case $rel in
+ 10.4*) rel=10.4;;
+ esac
+ ;;
+esac
+
+# get "base part" of operating system release
+rroot=`echo $rel | sed -e 's/\.[^.]*$//'`
+rbase=`echo $rel | sed -e 's/\..*//'`
+if [ "$rroot" = "$rbase" ]
+then
+ rroot=$rel
+fi
+
+# heuristic tweaks to clean up names -- PLEASE LIMIT THESE!
+if [ "$os" = "unix" ]
+then
+ # might be Altos System V
+ case $rel
+ in
+ 5.3*) os=Altos;;
+ esac
+elif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
+then
+ # might be a DYNIX/ptx 2.x system, which has a broken uname
+ if strings /lib/cpp | grep _SEQUENT_ > /dev/null
+ then
+ os=PTX
+ fi
+elif [ -d /usr/nec ]
+then
+ # NEC machine -- what is it running?
+ if [ "$os" = "UNIX_System_V" ]
+ then
+ os=EWS-UX_V
+ elif [ "$os" = "UNIX_SV" ]
+ then
+ os=UX4800
+ fi
+elif [ "$arch" = "mips" ]
+then
+ case $rel
+ in
+ 4_*)
+ if [ `uname -v` = "UMIPS" ]
+ then
+ os=RISCos
+ fi;;
+ esac
+fi
+
+# see if there is a "user suffix" specified
+if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
+then
+ sfx=""
+else
+ sfx=".${SENDMAIL_SUFFIX}"
+fi
+
+echo "Configuration: os=$os, rel=$rel, rbase=$rbase, rroot=$rroot, arch=$arch, sfx=$sfx"
+
+
+SMROOT=${SMROOT-..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+export SMROOT BUILDTOOLS
+
+# see if we are in a Build-able directory
+if [ ! -f Makefile.m4 ]; then
+ echo "Makefile.m4 not found. Build can only be run from a source directory."
+ exit $EX_UNAVAILABLE
+fi
+
+# now try to find a reasonable object directory
+if [ -r obj.$os.$rel.$arch$sfx ]; then
+ obj=obj.$os.$rel.$arch$sfx
+elif [ -r obj.$os.$rroot.$arch$sfx ]; then
+ obj=obj.$os.$rroot.$arch$sfx
+elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
+ obj=obj.$os.$rbase.x.$arch$sfx
+elif [ -r obj.$os.$rel$sfx ]; then
+ obj=obj.$os.$rel$sfx
+elif [ -r obj.$os.$rbase.x$sfx ]; then
+ obj=obj.$os.$rbase.x$sfx
+elif [ -r obj.$os.$arch$sfx ]; then
+ obj=obj.$os.$arch$sfx
+elif [ -r obj.$rel.$arch$sfx ]; then
+ obj=obj.$rel.$arch$sfx
+elif [ -r obj.$rbase.x.$arch$sfx ]; then
+ obj=obj.$rbase.x.$arch$sfx
+elif [ -r obj.$os$sfx ]; then
+ obj=obj.$os$sfx
+elif [ -r obj.$arch$sfx ]; then
+ obj=obj.$arch$sfx
+elif [ -r obj.$rel$sfx ]; then
+ obj=obj.$rel$sfx
+elif [ -r obj$sfx ]; then
+ obj=obj$sfx
+fi
+if [ -z "$obj" -o "$cflag" ]
+then
+ if [ -n "$obj" ]
+ then
+ echo "Clearing out existing $obj tree"
+ rm -rf $obj
+ else
+ # no existing obj directory -- try to create one if Makefile found
+ obj=obj.$os.$rel.$arch$sfx
+ fi
+ if [ -r $BUILDTOOLS/OS/$os.$rel.$arch$sfx ]; then
+ oscf=$os.$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel.$arch ]; then
+ oscf=$os.$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch$sfx ]; then
+ oscf=$os.$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch ]; then
+ oscf=$os.$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch$sfx ]; then
+ oscf=$os.$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch ]; then
+ oscf=$os.$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rel$sfx ]; then
+ oscf=$os.$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel ]; then
+ oscf=$os.$rel
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot$sfx ]; then
+ oscf=$os.$rroot$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot ]; then
+ oscf=$os.$rroot
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x$sfx ]; then
+ oscf=$os.$rbase.x$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x ]; then
+ oscf=$os.$rbase.x
+ elif [ -r $BUILDTOOLS/OS/$os.$arch$sfx ]; then
+ oscf=$os.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$arch ]; then
+ oscf=$os.$arch
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch$sfx ]; then
+ oscf=$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch ]; then
+ oscf=$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch$sfx ]; then
+ oscf=$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch ]; then
+ oscf=$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch$sfx ]; then
+ oscf=$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch ]; then
+ oscf=$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os$sfx ]; then
+ oscf=$os$sfx
+ elif [ -r $BUILDTOOLS/OS/$os ]; then
+ oscf=$os
+ elif [ -r $BUILDTOOLS/OS/$arch$sfx ]; then
+ oscf=$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$arch ]; then
+ oscf=$arch
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel ]; then
+ oscf=$rel
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ else
+ echo "Cannot determine how to support $arch.$os.$rel" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ ret=$?
+ if [ $ret -ne 0 ]
+ then
+ exit $ret
+ fi
+ echo "Using M4=$M4"
+ export M4
+ if [ "$mflag" ]
+ then
+ echo "Will run in virgin $obj using $BUILDTOOLS/OS/$oscf"
+ exit 0
+ fi
+ if [ "$ABI" ]
+ then
+ echo "Using ABI $ABI"
+ fi
+ echo "Creating $obj using $BUILDTOOLS/OS/$oscf"
+ mkdir $obj
+ (cd $obj; ln -s ../*.[ch158] .)
+ if [ -f sendmail.hf ]
+ then
+ (cd $obj; ln -s ../sendmail.hf .)
+ fi
+
+ rm -f $obj/.settings$$
+ echo 'divert(-1)' > $obj/.settings$$
+ cat $BUILDTOOLS/M4/header.m4 >> $obj/.settings$$
+ if [ "$ABI" ]
+ then
+ echo "define(\`confABI', \`$ABI')" >> $obj/.settings$$
+ fi
+ cat $BUILDTOOLS/OS/$oscf >> $obj/.settings$$
+
+ if [ -z "$siteconfig" ]
+ then
+ # none specified, use defaults
+ if [ -f $BUILDTOOLS/Site/site.$oscf$sfx.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf$sfx.m4
+ elif [ -f $BUILDTOOLS/Site/site.$oscf.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf.m4
+ fi
+ if [ -f $BUILDTOOLS/Site/site.config.m4 ]
+ then
+ siteconfig="$BUILDTOOLS/Site/site.config.m4 $siteconfig"
+ fi
+ fi
+ if [ ! -z "$siteconfig" ]
+ then
+ echo "Including $siteconfig"
+ cat $siteconfig >> $obj/.settings$$
+ fi
+ if [ "$libdirs" ]
+ then
+ echo "define(\`confLIBDIRS', confLIBDIRS \`\`$libdirs'')" >> $obj/.settings$$
+ fi
+ if [ "$incdirs" ]
+ then
+ echo "define(\`confINCDIRS', confINCDIRS \`\`$incdirs'')" >> $obj/.settings$$
+ fi
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ libdirs=`(cat $obj/.settings$$; echo "_SRIDBIL_= confLIBDIRS" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_SRIDBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_SRIDBIL_=//"`
+ libsrch=`(cat $obj/.settings$$; echo "_HCRSBIL_= confLIBSEARCH" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_HCRSBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_HCRSBIL_=//"`
+ echo 'divert(-1)' >> $obj/.settings$$
+ LIBDIRS="$libdirs" LIBSRCH="$libsrch" SITECONFIG="$siteconfig" sh $BUILDTOOLS/bin/configure.sh $sflag $oscf >> $obj/.settings$$
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' $obj/.settings$$ | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - Makefile.m4 | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' > $obj/Makefile
+ if [ $? -ne 0 -o ! -s $obj/Makefile ]
+ then
+ echo "ERROR: ${M4} failed; You may need a newer version of M4, at least as new as System V or GNU" 1>&2
+ rm -rf $obj
+ exit $EX_UNAVAILABLE
+ fi
+ rm -f $obj/.settings$$
+ echo "Making dependencies in $obj"
+ (cd $obj; ${MAKE-make} depend)
+fi
+
+if [ "$mflag" ]
+then
+ makefile=`ls -l $obj/Makefile | sed 's/.* //'`
+ if [ -z "$makefile" ]
+ then
+ echo "ERROR: $obj exists but has no Makefile" >&2
+ exit $EX_NOINPUT
+ fi
+ echo "Will run in existing $obj using $makefile"
+ exit 0
+fi
+
+echo "Making in $obj"
+cd $obj
+eval exec ${MAKE-make} $makeargs
diff --git a/contrib/sendmail/src/Makefile.m4 b/contrib/sendmail/src/Makefile.m4
new file mode 100644
index 000000000000..f4229c2ad6b4
--- /dev/null
+++ b/contrib/sendmail/src/Makefile.m4
@@ -0,0 +1,149 @@
+#
+# This Makefile is designed to work on any reasonably current version of
+# "make" program.
+#
+# @(#)Makefile.m4 8.23 (Berkeley) 6/16/98
+#
+
+# C compiler
+CC= confCC
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# location of sendmail source directory
+SRCDIR= .
+
+# define the database mechanisms available for map & alias lookups:
+# -DNDBM -- use new DBM
+# -DNEWDB -- use new Berkeley DB
+# -DNIS -- include NIS support
+# The really old (V7) DBM library is no longer supported.
+# See README for a description of how these flags interact.
+#
+MAPDEF= ifdef(`confMAPDEF', `confMAPDEF')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= ifdef(`confENVDEF', `confENVDEF')
+
+# see also conf.h for additional compilation flags
+
+# include directories
+INCDIRS=confINCDIRS
+
+# loader options
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# libraries required on your system
+# delete -l44bsd if you are not running BIND 4.9.x
+LIBS= ifdef(`confLIBS', `confLIBS')
+
+# location of sendmail binary (usually /usr/sbin or /usr/lib)
+BINDIR= ${DESTDIR}ifdef(`confMBINDIR', `confMBINDIR', `/usr/sbin')
+
+# location of "user" binaries (usually /usr/bin or /usr/ucb)
+UBINDIR=${DESTDIR}ifdef(`confUBINDIR', `confUBINDIR', `/usr/bin')
+
+# location of sendmail.st file (usually /var/log or /usr/lib)
+STDIR= ${DESTDIR}ifdef(`confSTDIR', `confSTDIR', `/var/log')
+
+# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
+HFDIR= ${DESTDIR}ifdef(`confHFDIR', `confHFDIR', `/usr/share/misc')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD') ifdef(`confSMOBJADD', `confSMOBJADD')
+
+undivert(1)
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${MAPDEF} ${ENVDEF}
+CFLAGS= $O ${COPTS}
+
+BEFORE= confBEFORE
+OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
+ deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
+ map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
+ safefile.o savemail.o snprintf.o srvrsmtp.o stab.o stats.o \
+ sysexits.o trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
+
+LINKS= ifdef(`confLINKS', `confLINKS',
+ `${UBINDIR}/newaliases \
+ ${UBINDIR}/mailq \
+ ${UBINDIR}/hoststat \
+ ${UBINDIR}/purgestat')
+
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-mandoc')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+BINOWN= ifdef(`confSBINOWN', `confSBINOWN', `root')
+BINGRP= ifdef(`confSBINGRP', `confSBINGRP', `kmem')
+BINMODE=ifdef(`confSBINMODE', `confSBINMODE', `4555')
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+
+MANROOT=${DESTDIR}ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MAN1= ${MANROOT}ifdef(`confMAN1', `confMAN1', `1')
+MAN1EXT=ifdef(`confMAN1EXT', `confMAN1EXT', `1')
+MAN1SRC=ifdef(`confMAN1SRC', `confMAN1SRC', `0')
+MAN5= ${MANROOT}ifdef(`confMAN5', `confMAN5', `5')
+MAN5EXT=ifdef(`confMAN5EXT', `confMAN5EXT', `5')
+MAN5SRC=ifdef(`confMAN5SRC', `confMAN5SRC', `0')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+ALL= sendmail aliases.${MAN5SRC} mailq.${MAN1SRC} newaliases.${MAN1SRC} sendmail.${MAN8SRC}
+
+all: ${ALL}
+
+sendmail: ${BEFORE} ${OBJS}
+ ${CC} -o sendmail ${LDOPTS} ${LIBDIRS} ${OBJS} ${LIBS}
+ cp /dev/null sendmail.st
+
+undivert(3)
+
+aliases.${MAN5SRC}: aliases.5
+ ${NROFF} ${MANDOC} aliases.5 > aliases.${MAN5SRC}
+
+mailq.${MAN1SRC}: mailq.1
+ ${NROFF} ${MANDOC} mailq.1 > mailq.${MAN1SRC}
+
+newaliases.${MAN1SRC}: newaliases.1
+ ${NROFF} ${MANDOC} newaliases.1 > newaliases.${MAN1SRC}
+
+sendmail.${MAN8SRC}: sendmail.8
+ ${NROFF} ${MANDOC} sendmail.8 > sendmail.${MAN8SRC}
+
+install: install-sendmail install-docs
+
+install-sendmail: sendmail
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
+ for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 sendmail.st \
+ ${STDIR}/sendmail.st
+
+install-docs: aliases.${MAN5SRC} mailq.${MAN1SRC} newaliases.${MAN1SRC} sendmail.${MAN8SRC}
+ifdef(`confNO_MAN_INSTALL', `dnl',
+` ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} sendmail.${MAN8SRC} ${MAN8}/sendmail.${MAN8EXT}
+ ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} aliases.${MAN5SRC} ${MAN5}/aliases.${MAN5EXT}
+ ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} mailq.${MAN1SRC} ${MAN1}/mailq.${MAN1EXT}
+ ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} newaliases.${MAN1SRC} ${MAN1}/newaliases.${MAN1EXT}')
+
+clean:
+ rm -f ${OBJS} sendmail aliases.${MAN5SRC} mailq.${MAN1SRC} newaliases.${MAN1SRC} sendmail.${MAN8SRC}
+
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE', `generic').m4)dnl
+################ End of dependency scripts
diff --git a/usr.sbin/sendmail/src/READ_ME b/contrib/sendmail/src/README
index 7eea26746515..a6f7dcfd6640 100644
--- a/usr.sbin/sendmail/src/READ_ME
+++ b/contrib/sendmail/src/README
@@ -1,139 +1,85 @@
-# Copyright (c) 1983, 1995-1997 Eric P. Allman
-# Copyright (c) 1988 The Regents of the University of California.
-# All rights reserved.
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988
+# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
-# @(#)READ_ME 8.156 (Berkeley) 10/23/97
+# @(#)README 8.206 (Berkeley) 6/30/98
#
-This directory contains the source files for sendmail.
+This directory contains the source files for sendmail(TM).
*********************
-!! DO NOT USE MAKE !! to compile sendmail -- instead, use the
-********************* "makesendmail" script located in the src
-directory. It will find an appropriate Makefile, and create an
-appropriate obj.* subdirectory so that multiplatform support
-works easily.
+!! DO NOT USE MAKE !! in this directory to compile sendmail --
+********************* instead, use the "Build" script located in
+the src directory. It will build an appropriate Makefile, and
+create an appropriate obj.* subdirectory so that multiplatform
+support works easily.
-The Makefile is for the new (4.4BSD) Berkeley make and uses syntax
-that is not recognized by older makes. It also has assumptions
-about the 4.4 file system layout built in. See below for details
-about other Makefiles.
-
-If you are porting to a new architecture for which there is no existing
-Makefile, you might start with Makefile.dist. This works on the old
-traditional make, but isn't customized for any particular architecture.
-
- **************************************************
- ** Read below for more details of Makefiles. **
- **************************************************
-
-**************************************************************************
-** IMPORTANT: DO NOT USE OPTIMIZATION (``-O'') IF YOU ARE RUNNING **
-** GCC 2.4.x or 2.5.x. THERE IS A BUG IN THE GCC OPTIMIZER THAT **
-** CAUSES SENDMAIL COMPILES TO FAIL MISERABLY. **
-**************************************************************************
-
-Jim Wilson of Cygnus believes he has found the problem -- it will
-probably be fixed in GCC 2.5.6 -- but until this is verified, be
-very suspicious of gcc -O.
-
-This problem is reported to have been fixed in gcc 2.6.
+ **********************************************************
+ ** Read below for more details on building sendmail. **
+ **********************************************************
**************************************************************************
** IMPORTANT: Read the appropriate paragraphs in the section on **
** ``Operating System and Compile Quirks''. **
**************************************************************************
-For detailed instructions, please read the document ../doc/op.me:
+For detailed instructions, please read the document ../doc/op/op.me:
+
+ eqn ../doc/op/op.me | pic | ditroff -me
- eqn ../doc/op.me | pic | ditroff -me
+Sendmail is a trademark of Sendmail, Inc.
-+-----------+
-| MAKEFILES |
-+-----------+
++-------------------+
+| BUILDING SENDMAIL |
++-------------------+
-By far, the easiest way to compile sendmail is to use the "makesendmail"
+By far, the easiest way to compile sendmail is to use the "Build"
script:
- sh makesendmail
+ sh Build
This uses the "uname" command to figure out what architecture you are
-on and selects a proper Makefile accordingly. It also creates a
+on and creates a proper Makefile accordingly. It also creates a
subdirectory per object format, so that multiarchitecture support is
-easy. In general this should be all you need. However, if for some
-reason this doesn't work (e.g., NeXT systems don't have the "uname"
-command) you may have to set up your compile environment by hand.
-
-The "Makefile"s in these directories are from 4.4 BSD, and hence
-really only work properly if you are on a 4.4 system. In particular,
-they use new syntax that will not be recognized on old make programs,
-and some of them do things like ``.include ../../Makefile.inc'' to
-pick up some system defines. If you are getting sendmail separately,
-these files won't be included in the distribution, as they are
-outside of the sendmail tree.
-
-Instead, you should use one of the other Makefiles, such as
-Makefile.SunOS for a SunOS system, and so forth. These should
-work with the version of make that is appropriate for that
-system. All other Makefiles are in the "src/Makefiles" subdirectory.
-They use the version of make that is native for that system. These
-are the Makefiles that I use, and they have "Berkeley quirks" in them.
-I can't guarantee that they will work unmodified in your environment.
-In particular, Many of them include -I/usr/sww/include/db and
--L/usr/sww/lib -- these are Berkeley's locations in the ``Software
-Warehouse'' for the new database libraries, described below. You don't
-have to remove these definitions if you don't have these directories,
-but you may have to remove -DNEWDB from the DBMDEF definition.
-
-Please look for an appropriate Makefile before you start trying to
-compile with Makefile or Makefile.dist.
-
-If you want to port the new Berkeley make, you can get it from
-ftp.uu.net in the directory /systems/unix/bsd-sources/usr.bin/make.
-Diffs and instructions for building this version of make under
-SunOS 4.1.x are available on ftp.css.itd.umich.edu in
-/pub/systems/sun/Net2-make-sun4.diff.Z. Diffs and instructions
-for building this version of make under IBM AIX 3.2.4 are available
-on ftp.uni-stuttgart.de in /sw/src/patches/bsd-make-rus-patches.
-For Ultrix, try ftp.vix.com:~ftp/pub/patches/pmake-for-ultrix.Z.
-Paul Southworth <pauls@umich.edu> published a description of porting
-this make in comp.unix.bsd.
-
-The complete text of the Makefile.inc that is in the parent of the
-sendmail directory is:
-
- # @(#)Makefile.inc 8.1 (Berkeley) 6/6/93
-
- BINDIR?= /usr/sbin
+easy. In general this should be all you need. IRIX 6.x users should
+read the note below in the OPERATING SYSTEM AND COMPILE QUIRKS section.
+
+If you need to look at other include or library directories, use the
+-I or -L flags on the command line, e.g.,
+
+ sh Build -I/usr/sww/include -L/usr/sww/lib
+
+It's also possible to create local site configuration in the file
+site.config.m4 (or another file settable with the -f flag). This
+file contains M4 definitions for various compilation values; the
+most useful are:
+
+confMAPDEF -D flags to specify database types to be included
+ (see below)
+confENVDEF -D flags to specify other environment information
+confINCDIRS -I flags for finding include files during compilation
+confLIBDIRS -L flags for finding libraries during linking
+confLIBS -l flags for selecting libraries during linking
+confLDOPTS other ld(1) linker options
+
+Others can be found by examining Makefile.m4. Please read
+../BuildTools/README for more information about the site.config.m4
+file.
+
+You can recompile from scratch using the -c flag with the Build
+command. This removes the existing compilation directory for the
+current platform and builds a new one.
+
+Porting to a new Unix-based system should be a matter of creating
+an appropriate configuration file in the BuildTools/OS/ directory.
+
+----------------------+
@@ -142,18 +88,22 @@ sendmail directory is:
There are several database formats that can be used for the alias files
and for general maps. When used for alias files they interact in an
-attempt to be back compatible.
+attempt to be backward compatible.
The options are:
NEWDB The new Berkeley DB package. Some systems (e.g., BSD/OS and
- Digital UNIX 4.0) have this package pre-installed. If your
- system does not have NEWDB installed, get version 1.85
- from http://www.sleepycat.com/packages/db.1.85.tar.gz.
- DO NOT use Berkeley DB version 2.X with sendmail. DO NOT
- use the version from the Net2 distribution. If you are
- still running BSD/386 1.x, you will also need to define
- OLD_NEWDB.
+ Digital UNIX 4.0) have some version of this package
+ pre-installed. If your system does not have Berkeley DB
+ pre-installed, or the version installed is not version 2.0
+ or greater (e.g., is Berkeley DB 1.85 or 1.86), get the
+ current version from http://www.sleepycat.com/. DO NOT
+ use a version from any of the University of California,
+ Berkeley "Net" or other distributions. If you are still
+ running BSD/386 1.x, you will need to upgrade the included
+ Berkeley DB library to a current version. NEWDB is included
+ automatically if the Build script can find a library named
+ libdb.a.
NDBM The older NDBM implementation -- the very old V7 DBM
implementation is no longer supported.
NIS Network Information Services. To use this you must have
@@ -167,15 +117,23 @@ HESIOD Support for Hesiod (from the DEC/Athena distribution). You
LDAPMAP Lightweight Directory Lookup Protocol support. You will
have to install the UMich ldap and lber libraries to use
this flag.
-
->>> NOTE WELL for NEWDB support: it is CRITICAL that you remove ndbm.o
->>> from libdb.a before you install it and DO NOT install ndbm.h if
->>> you want to get ndbm support. If you don't delete these, there is
->>> absolutely no point to including -DNDBM, since it will just get you
->>> another (inferior) API to the same format database. These files
->>> OVERRIDE calls to ndbm routines -- in particular, if you leave ndbm.h
->>> in, you can find yourself using the new db package even if you don't
->>> define NEWDB.
+MAP_REGEX Regular Expression support. You will need to use an
+ operating system which comes with the POSIX regex()
+ routines or install a regexp library such as libregex from
+ the Free Software Foundation.
+
+>>> NOTE WELL for NEWDB support: If you want to get ndbm support, for
+>>> Berkeley DB versions under 2.0, it is CRITICAL that you remove
+>>> ndbm.o from libdb.a before you install it and DO NOT install ndbm.h;
+>>> for Berkeley DB versions 2.0 through 2.3.14, remove dbm.o from libdb.a
+>>> before you install it. If you don't delete these, there is absolutely
+>>> no point to including -DNDBM, since it will just get you another
+>>> (inferior) API to the same format database. These files OVERRIDE
+>>> calls to ndbm routines -- in particular, if you leave ndbm.h in,
+>>> you can find yourself using the new db package even if you don't
+>>> define NEWDB. Berkeley DB versions later than 2.3.14 do not need
+>>> to be modified. Please also consult the README in the top level
+>>> directory of the sendmail distribution for other important information.
>>>
>>> Further note: DO NOT remove your existing /usr/include/ndbm.h --
>>> you need that one. But do not install an updated ndbm.h in
@@ -202,7 +160,7 @@ Makefile.
If you define NEWDB or HESIOD you get the User Database (USERDB)
automatically. Generally you do want to have NEWDB for it to do
-anything interesting. See above for getting the Berkeley "db"
+anything interesting. See above for getting the Berkeley DB
package (i.e., NEWDB). There is no separate "user database"
package -- don't bother searching for it on the net.
@@ -210,17 +168,21 @@ Hesiod and LDAP require libraries that may not be installed with your
system. These are outside of my ability to provide support. See the
"Quirks" section for more information.
-
+The regex map can be used to see if an address matches a certain regular
+expression. For example, all-numerics local parts are common spam
+addresses, so "^[0-9]+$" would match this. By using such a map in a
+check_* rule-set, you can block a certain range of addresses that would
+otherwise be considered valid.
+---------------+
| COMPILE FLAGS |
+---------------+
-Whereever possible, I try to make sendmail pull in the correct
+Wherever possible, I try to make sendmail pull in the correct
compilation options needed to compile on various environments based on
automatically defined symbols. Some machines don't seem to have useful
symbols available, requiring that a compilation flag be defined in
-the Makefile; see the Makefiles subdirectory for the supported
+the Makefile; see the Buildtools/OS subdirectory for the supported
architectures.
If you are a system to which sendmail has already been ported you
@@ -474,6 +436,9 @@ SIOCGIFNUM_IS_BROKEN
Set this if your system has an SIOCGIFNUM ioctl defined,
but it doesn't behave the same way as "most" systems
(Solaris, HP-UX).
+NEED_PERCENTQ Set this if your system doesn't support the printf
+ format strings %lld or %llu. If this is set, %qd and
+ %qu are used instead.
@@ -489,12 +454,12 @@ flags that add support for special features include:
NDBM Include support for "new" DBM library for aliases and maps.
Normally defined in the Makefile.
-NEWDB Include support for Berkeley "db" package (hash & btree)
+NEWDB Include support for Berkeley DB package (hash & btree)
for aliases and maps. Normally defined in the Makefile.
-OLD_NEWDB If non-zero, the version of NEWDB you have is the old
- one that does not include the "fd" call. This call was
- added in version 1.5 of the Berkeley DB code. If you
- use -DOLD_NEWDB=0 it forces you to use the new interface.
+ If the version of NEWDB you have is the old one that does
+ not include the "fd" call (this call was added in version
+ 1.5 of the Berkeley DB code), you must upgrade to the
+ current version of Berkeley DB.
NIS Define this to get NIS (YP) support for aliases and maps.
Normally defined in the Makefile.
NISPLUS Define this to get NIS+ support for aliases and maps.
@@ -609,57 +574,42 @@ YOU HEADACHES!
| OPERATING SYSTEM AND COMPILE QUIRKS |
+-------------------------------------+
-GCC 2.5.x problems *** IMPORTANT ***
- Date: Mon, 29 Nov 93 19:08:44 PST
- From: wilson@cygnus.com (Jim Wilson)
- Message-Id: <9311300308.AA04608@cygnus.com>
- To: kenner@vlsi1.ultra.nyu.edu
- Subject: [cattelan@thebarn.com: gcc 2.5.4-2.5.5 -O bug]
- Cc: cattelan@thebarn.com, rms@gnu.ai.mit.edu, sendmail@cs.berkeley.edu
-
- This fixes a problem that occurs when gcc 2.5.5 is used to compile
- sendmail 8.6.4 with optimization on a sparc.
-
- Mon Nov 29 19:00:14 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
-
- * reload.c (find_reloads_toplev): Replace obsolete reference to
- BYTE_LOADS_*_EXTEND with LOAD_EXTEND_OP.
-
- *** clean-ss-931128/reload.c Sun Nov 14 16:20:01 1993
- --- ss-931128/reload.c Mon Nov 29 18:52:55 1993
- *************** find_reloads_toplev (x, opnum, type, ind
- *** 3888,3894 ****
- force a reload in that case. So we should not do anything here. */
-
- else if (regno >= FIRST_PSEUDO_REGISTER
- ! #if defined(BYTE_LOADS_ZERO_EXTEND) || defined(BYTE_LOADS_SIGN_EXTEND)
- && (GET_MODE_SIZE (GET_MODE (x))
- <= GET_MODE_SIZE (GET_MODE (SUBREG_REG (x))))
- #endif
- --- 3888,3894 ----
- force a reload in that case. So we should not do anything here. */
-
- else if (regno >= FIRST_PSEUDO_REGISTER
- ! #ifdef LOAD_EXTEND_OP
- && (GET_MODE_SIZE (GET_MODE (x))
- <= GET_MODE_SIZE (GET_MODE (SUBREG_REG (x))))
- #endif
-
-GCC 2.7.x problems
+GCC problems
+ *****************************************************************
+ ** IMPORTANT: DO NOT USE OPTIMIZATION (``-O'') IF YOU ARE **
+ ** RUNNING GCC 2.4.x or 2.5.x. THERE IS A BUG IN THE GCC **
+ ** OPTIMIZER THAT CAUSES SENDMAIL COMPILES TO FAIL MISERABLY. **
+ *****************************************************************
+
+ Jim Wilson of Cygnus believes he has found the problem -- it will
+ probably be fixed in GCC 2.5.6 -- but until this is verified, be
+ very suspicious of gcc -O. This problem is reported to have been
+ fixed in gcc 2.6.
+
+ A bug in gcc 2.5.5 caused problems compiling sendmail 8.6.5 with
+ optimization on a Sparc. If you are using gcc 2.5.5, youi should
+ upgrade to the latest version of gcc.
+
Apparently GCC 2.7.0 on the Pentium processor has optimization
problems. I recommend against using -O on that architecture. This
has been seen on FreeBSD 2.0.5 RELEASE.
+ Solaris 2.X users should use version 2.7.2.3 over 2.7.2.
+
+ We have been told there are problems with gcc 2.8.0. If you are
+ using this version, you should upgrade to 2.8.1 or later.
+
GDBM GDBM does not work with sendmail 8.8 because the additional
security checks and file locking cause problems. Unfortunately,
gdbm does not provide a compile flag in its version of ndbm.h so
- the code can adapt. We expect this to be fixed in 8.9, but
- probably at the cost of a new command line compile flag.
+ the code can adapt. Until the GDBM authors can fix these problems,
+ GDBM will not be supported. Please use Berkeley DB instead.
Configuration file location
Up to 8.6, sendmail tried to find the sendmail.cf file in the same
place as the vendors had put it, even when this was obviously
stupid. As of 8.7, sendmail ALWAYS looks for /etc/sendmail.cf.
+ Beginning with 8.10, sendmail will use /etc/mail/sendmail.cf.
You can get sendmail to use the stupid vendor .cf location by
adding -DUSE_VENDOR_CF_PATH during compilation, but this may break
support programs and scripts that need to find sendmail.cf. You
@@ -667,13 +617,6 @@ Configuration file location
vendor location rather than changing the location in the sendmail
binary.
-ld: fatal: library -l44bsd: not found
- Most of the Makefiles include -l44bsd in the LIBS= definition;
- this is because several versions of BIND (4.9.0, 4.9.1, 4.9.2)
- require this library. If you are running one of these versions,
- install this library. Otherwise, just delete "-l44bsd" from the
- LIBS= line in the Makefile.
-
SunOS 4.x (Solaris 1.x)
You may have to use -lresolv on SunOS. However, beware that
this links in a new version of gethostbyname that does not
@@ -712,8 +655,8 @@ SunOS 4.0.2 (Sun 386i)
following changes:
* Don't use /usr/5bin in your PATH, but make /usr/5bin/uname
available as "uname" command.
- * Use the defines "-DBSD4_3 -DNAMED_BIND=0" in the
- Makefile.SunOS.4.0, which is selected via the "uname" command.
+ * Use the defines "-DBSD4_3 -DNAMED_BIND=0" in
+ BuildTools/OS/SunOS.4.0, which is selected via the "uname" command.
I recommend to make available the db-library on the system first
(and change the Makefile to use this library).
Note that the sendmail.cf and aliases files are found in /etc.
@@ -728,11 +671,16 @@ SunOS 4.1.3, 4.1.3_U1
ip_ctloutput() routine.
For 4.1.3, this is fixed in patch 100584-08, available on the
- Sunsolve 2.7.1 or later CDs. For 4.1.3_U1, this is fixed in patch
- 101790-01 (SunOS 4.1.3_U1: TCP socket and reset problems).
+ Sunsolve 2.7.1 or later CDs. For 4.1.3_U1, this was fixed in patch
+ 101790-01 (SunOS 4.1.3_U1: TCP socket and reset problems), later
+ obsoleted by patch 102010-05.
+
+ Sun patch 100584-08 is not currently publicly available on their
+ ftp site but a user has reported it can be found at other sites
+ using a web search engine.
Solaris 2.x (SunOS 5.x)
- To compile for Solaris, the Makefile chosen by makesendmail must
+ To compile for Solaris, the Makefile built by Build must
include a SOLARIS definition which reflects the Solaris version
(i.e. -DSOLARIS=20400 for 2.4 or -DSOLARIS=20501 for 2.5.1).
If you are using gcc, make sure -I/usr/include is not used (or
@@ -853,7 +801,7 @@ Solaris 2.5.1 (SunOS 5.5.1) and 2.6 (SunOS 5.6)
#include "/usr/include/resolv.h"
Sun is aware of the problem (Sun bug ID 4081053) and it will be fixed
- in a to-be-released patch.
+ in Solaris 2.7.
Ultrix
By default, the IDENT protocol is turned off on Ultrix. If you
@@ -875,7 +823,15 @@ Digital UNIX (formerly DEC OSF/1)
properly due to a bug in the getpw* routines. If you want to use
this, use -DDEC_OSF_BROKEN_GETPWENT=1. The problem is fixed in 3.2C.
- On Digital UNIX 4.0 and later, Berkeley DB is included with the
+ Digital's mail delivery agent, /bin/mail (aka /bin/binmail), will
+ only preserve the envelope sender in the "From " header if
+ DefaultUserID is set to daemon. Setting this to mailnull will
+ cause all mail to have the header "From mailnull ...". To use
+ a different DefaultUserID, you will need to use a different mail
+ delivery agent (such as mail.local found in the sendmail
+ distribution).
+
+ On Digital UNIX 4.0 and later, Berkeley DB 1.85 is included with the
operating system and already has the ndbm.o module removed. However,
Digital has modified the original Berkeley DB db.h include file.
This results in the following warning while compiling map.c and udb.c:
@@ -920,13 +876,21 @@ IRIX
These are unavoidable and innocuous -- just ignore them.
According to Dave Sill <de5@ornl.gov>, there is a version of the
- Berkeley db library patched to run on Irix 6.2 available from
- http://reality.sgi.com/ariel/db-1.85-irix.tar.Z .
+ Berkeley DB library patched to run on Irix 6.2 available from
+ http://reality.sgi.com/ariel/freeware/#db .
+
+IRIX 6.x
+ It is important that on IRIX 6.x you give used ABI in command
+ line of Build, otherwise configuration script does not work
+ correctly, e.g.,
+
+ sh Build -E ABI=-n32
+
+ If you are using XFS filesystem, avoid using ABI=-32 if possible.
NeXT or NEXTSTEP
- NEXTSTEP 3.3 and earlier ship with the old DBM library. You will
- need to acquire the new Berkeley DB from ftp.cs.berkeley.edu.
- Install it in /usr/local/{lib,include}.
+ NEXTSTEP 3.3 and earlier ship with the old DBM library. Also,
+ Berkeley DB does not currently run on NEXTSTEP.
If you are compiling on NEXTSTEP, you will have to create an
empty file "unistd.h" and create a file "dirent.h" containing:
@@ -934,7 +898,7 @@ NeXT or NEXTSTEP
#include <sys/dir.h>
#define dirent direct
- (The Makefile.NeXT should try to do both of these for you.)
+ (BuildTools/OS/NeXT should try to do both of these for you.)
Apparently, there is a bug in getservbyname on Nextstep 3.0
that causes it to fail under some circumstances with the
@@ -958,20 +922,16 @@ BSDI (BSD/386) 1.0, NetBSD 0.9, FreeBSD 1.0
CHANGES).
FreeBSD 1.0 RELEASE has uname(2) now. Use -DUSEUNAME in order to
- use it (look into Makefile.FreeBSD). NetBSD-current may have
+ use it (look into BuildTools/OS/FreeBSD). NetBSD-current may have
it too but it has not been verified.
- You cannot port the latest version of the Berkeley db library
- and use it with sendmail without recompiling the world. This
- is because C library routines use the older version which have
- incompatible header files -- the result is that it can't read
- other system files, such as /etc/passwd, unless you use the
- new db format throughout your system. You should normally just
- use the version of db supplied in your release. You may need
- to use -DOLD_NEWDB=1 to make this work -- this turns off some
- new interface calls (for file locking) that are not in older
- versions of db. You'll get compile errors if you need this
- flag and don't have it set.
+ The latest version of Berkeley DB uses a different naming
+ scheme than the version that is supplied with your release. This
+ means you will be able to use the current version of Berkeley DB
+ with sendmail as long you use the new db.h when compiling
+ sendmail and link it against the new libdb.a. You should probably
+ keep the original db.h in /usr/include and the new db.h in
+ /usr/local/include.
4.3BSD
If you are running a "virgin" version of 4.3BSD, you'll have
@@ -1007,11 +967,14 @@ A/UX
things behave properly.
[NOTE: see comment above about GDBM]
- I suppose porting the New Berkeley db package is another route,
+ I suppose porting the New Berkeley DB package is another route,
however, I made a quick attempt at it, and found it difficult
(not easy at least); the gnu-dbm package "configured" and
compiled easily.
+ [NOTE: Berkeley DB version 2.X runs on A/UX and can be used for
+ database maps.]
+
SCO Unix
From: Thomas Essebier <tom@stallion.oz.au>
Organisation: Stallion Technologies Pty Ltd.
@@ -1025,6 +988,9 @@ SCO Unix
/etc/named.boot.
- sigh -
+ According to SCO, the m4 which ships with UnixWare 2.1.2 is broken.
+ We recommend installing GNU m4 before attempting to build sendmail.
+
DG/UX
Doug Anderson <dlander@afterlife.ncsc.mil> has successfully run
V8 on the DG/UX 5.4.2 and 5.4R3.x platforms under heavy usage.
@@ -1038,12 +1004,13 @@ DG/UX
Apollo DomainOS
If you are compiling on Apollo, you will have to create an empty
- file "unistd.h" and create a file "dirent.h" containing:
+ file "unistd.h" (for DomainOS 10.3 and earlier) and create a file
+ "dirent.h" containing:
#include <sys/dir.h>
#define dirent direct
- (The Makefile.DomainOS will attempt to do both of these for you.)
+ (BuildTools/OS/DomainOS will attempt to do both of these for you.)
HP-UX 8.00
Date: Mon, 24 Jan 1994 13:25:45 +0200
@@ -1071,7 +1038,7 @@ Linux
the flock() system call gives errors. If you are running .14,
you must not use flock. You can do this with -DHASFLOCK=0.
- Around the inclusion of bind-4.9.3 & linux libc-4.6.20, the
+ Around the inclusion of bind-4.9.3 & Linux libc-4.6.20, the
initialization of the _res structure changed. If /etc/hosts.conf
was configured as "hosts, bind" the resolver code could return
"Name server failure" errors. This is supposedly fixed in
@@ -1089,20 +1056,21 @@ Linux
of libc between 4.4.4 and 4.7.0 (snprintf improves security, so
you want to use this if at all possible).
- NOTE ON LINUX & BIND: By default, the Makefiles for linux include
- header files in /usr/local/include and libraries in /usr/local/lib.
- If you've installed BIND on your system, the header files typically
- end up in the search path and you need to add "-lresolv" to the
- LIBS line in your Makefile. Really old versions may need to include
- "-l44bsd" as well (particularly if the link phase complains about
- missing strcasecmp, strncasecmp or strpbrk). Complaints about an
- undefined reference to `__dn_skipname' in domain.o are a sure sign
- that you need to add -lresolv to LIBS. Newer versions of linux
- are basically threaded BIND, so you may or may not see complaints
- if you accidentally mix BIND headers/libraries with virginal libc.
- If you have BIND headers in /usr/local/include (resolv.h, etc)
- you *should* be adding -lresolv to LIBS. Data structures may change
- and you'd be asking for a core dump.
+ NOTE ON LINUX & BIND: By default, the Makefile generated for Linux
+ includes header files in /usr/local/include and libraries in
+ /usr/local/lib. If you've installed BIND on your system, the header
+ files typically end up in the search path and you need to add
+ "-lresolv" to the LIBS line in your Makefile. Really old versions
+ may need to include "-l44bsd" as well (particularly if the link phase
+ complains about missing strcasecmp, strncasecmp or strpbrk).
+ Complaints about an undefined reference to `__dn_skipname' in
+ domain.o are a sure sign that you need to add -lresolv to LIBS.
+ Newer versions of Linux are basically threaded BIND, so you may or
+ may not see complaints if you accidentally mix BIND
+ headers/libraries with virginal libc. If you have BIND headers in
+ /usr/local/include (resolv.h, etc) you *should* be adding -lresolv
+ to LIBS. Data structures may change and you'd be asking for a
+ core dump.
AIX 3.x
This version of sendmail does not support MB, MG, and MR resource
@@ -1136,6 +1104,7 @@ AIX 2.2.1
A patch file is needed to get the BSD 'db' library to compile
for AIX/RT. I have sent the necessary updates to the author,
but they may not be immediately available.
+ [NOTE: Berkeley DB version 2.X runs on AIX/RT.]
The original AIX/RT resolver libraries are very old, and you
should get the latest BIND to replace it. The 4.8.3 version
@@ -1152,10 +1121,10 @@ AIX 2.2.1
that will return that information. The 'LA_SUBR' define
will handle this for AIX V2 on the RT.
- Note: You will have to change the Makefile.AIX.2 to correctly
+ Note: You will have to change BuildTools/OS/AIX.2 to correctly
point to the locatons of the updated BIND source tree and
the location of the 'newdb' tree and library location.
- You will also have to change the Makefile.AIX.2 to know
+ You will also have to change BuildTools/OS/AIX.2 to know
about the location of the 'getloadavg' routine if you use
the LA_SUBR define.
@@ -1169,11 +1138,12 @@ RISC/os
on many files. You can ignore these.
System V Release 4 Based Systems
- There is a single Makefile that is intended for all SVR4-based
- systems (called Makefile.SVR4). It defines __svr4__, which is
- predefined by some compilers. If your compiler already defines
- this compile variable, you can delete the definition from the
- Makefile.
+ There is a single BuildTools OS that is intended for all SVR4-based
+ systems (built from BuildTools/OS/SVR4). It defines __svr4__,
+ which is predefined by some compilers. If your compiler already
+ defines this compile variable, you can delete the definition from
+ the generated Makefile or create a BuildTools/Site/site.config.m4
+ file.
It's been tested on Dell Issue 2.2.
@@ -1237,36 +1207,25 @@ Amdahl UTS 2.1.5
See sendmail/contrib/AmdahlUTS.patch for the patches necessary
to get BIND 4.9 compiled for UTS.
-UnixWare 2.0
+UnixWare
According to Alexander Kolbasov <sasha@unitech.gamma.ru>,
the m4 on UnixWare 2.0 (still in Beta) will core dump on the
config files. GNU m4 and the m4 from UnixWare 1.x both work.
+ According to Larry Rosenman <ler@lerami.lerctr.org>:
+
+ UnixWare 2.1.[23]'s m4 chokes (not obviously) when
+ processing the 8.9.0 cf files.
+
+ I had a LOCAL_RULE_0 that wound up AFTER the
+ SBasic_check_rcpt rules using the SCO supplied M4.
+ GNU M4 works fine.
+
UNICOS 8.0.3.4
Some people have reported that the -O flag on UNICOS can cause
problems. You may want to turn this off if you have problems
running sendmail. Reported by Jerry G. DeLapp <jgd@acl.lanl.gov>.
-Non-DNS based sites
- This version of sendmail always tries to connect to the Domain
- Name System (DNS) to resolve names, regardless of the setting
- of the `I' option. On most systems that are not running DNS,
- this will fail quickly and sendmail will continue, but on some
- systems it has a long timeout. If you have this problem, you
- will have to recompile without NAMED_BIND. Some people have
- claimed that they have successfully used "OI+USEVC" to force
- sendmail to use a virtual circuit -- this will always time out
- quickly, but also tells sendmail that a failed connection
- should requeue the message (probably not what you intended).
- A future release of sendmail will correct this problem.
-
-Both NEWDB and NDBM
- If you use both -DNDBM and -DNEWDB, you must delete the module
- ndbm.o from libdb.a and delete the file "ndbm.h" from the files
- that get installed (that is, use the OLD ndbm.h, not the new
- ndbm.h). This compatibility module maps ndbm calls into DB
- calls, and breaks things rather badly.
-
GNU getopt
I'm told that GNU getopt has a problem in that it gets confused
by the double call. Use the version in conf.c instead.
@@ -1313,13 +1272,13 @@ Listproc 6.0c
as well. :)
LDAP
- LDAP was provided by Booker Bense <bbense@networking.stanford.edu> of
+ LDAP was provided by Booker Bense <bbense+ldap@stanford.edu> of
Stanford University. From Booker:
- The patch attached to this message implements an Ldap map class.
Currently we are using this at stanford to support campus-wide
- email addressing. This project is discussed at
- http://www-leland.stanford.edu/group/networking/project/sunetid.html
+ email addressing. More information can be found at
+ http://www.stanford.edu/~bbense/Inst.html.
- Currently we are using the ldap map as follows:
@@ -1340,15 +1299,15 @@ LDAP
It requires the ldap and lber libraries from the Umich Ldap3.2
release.
- I've tested the software on Solaris.2.4 with gcc and on NeXTStep3.2
- and it runs without problems. If you have any questions, please
- send them along.
+ The software has been in production on Solaris.2.5.1 at Stanford
+ for over 2 years.
TCP Wrappers
If you are using -DTCPWRAPPERS to get TCP Wrappers support you will
- also need to install libwrap.a and modify the Makefile to include
- -lwrap in the LIBS line (make sure that INCDIRS and LIBDIRS point
- to where the tcpd.h and libwrap.a can be found).
+ also need to install libwrap.a and modify your site.config.m4 file
+ or the generated Makefile to include -lwrap in the LIBS line
+ (make sure that INCDIRS and LIBDIRS point to where the tcpd.h and
+ libwrap.a can be found).
TCP Wrappers is available on ftp.win.tue.nl in /pub/security;
grab tcp_wrappers_<VER>.tar.gz (where <VER> is the highest
@@ -1359,6 +1318,24 @@ TCP Wrappers
you reject will connect to your site, fail, and move on to the next
MX site, which will accept the mail for you and forward it on to you.
+Regular Expressions (MAP_REGEX)
+ If sendmail linking fails with:
+
+ undefined reference to 'regcomp'
+
+ or sendmail gives an error about a regular expression with:
+
+ pattern-compile-error: : Operation not applicable
+
+ Your libc does not include a running version of POSIX-regex. Use
+ librx or regex.o from the GNU Free Software Foundation,
+ ftp://ftp.gnu.org/pub/gnu/rx-?.?.tar.gz or
+ ftp://ftp.gnu.org/pub/gnu/regex-?.?.tar.gz.
+ You can also use the regex-lib by Henry Spencer,
+ ftp://ftp.funet.fi/pub/languages/C/spencer/regex.shar.gz
+ Make sure, your compiler reads regex.h from the distribution,
+ not from /usr/include, otherwise sendmail will dump a core.
+
+--------------+
| MANUAL PAGES |
@@ -1366,8 +1343,9 @@ TCP Wrappers
The manual pages have been written against the -mandoc macros
instead of the -man macros. The latest version of groff has them
-included. You can also get a copy from FTP.UU.NET in directory
-/systems/unix/bsd-sources/share/tmac.
+included. You can also get a copy from FTP.UU.NET in the directory
+/systems/unix/bsd-sources/share/tmac. groff is available from
+ftp.gnu.org in the /pub/gnu directory.
+-----------------+
@@ -1402,11 +1380,9 @@ A typical formulation of ruleset 89 would be:
The following list describes the files in this directory:
-Makefile The makefile used here; this version only works with
- the new Berkeley make.
-Makefile.dist A trimmed down version of the makefile that works with
- the old make.
-READ_ME This file.
+Makefile.m4 A template for constructing a makefile based on the
+ information in the BuildTools directory.
+README This file.
TRACEFLAGS My own personal list of the trace flags -- not guaranteed
to be particularly up to date.
alias.c Does name aliasing in all forms.
@@ -1446,6 +1422,7 @@ safefile.c Routines to do careful checking of file modes and permissions
when opening or creating files.
savemail.c Routines which save the letter on processing errors.
sendmail.h Main header file for sendmail.
+snprintf.c Routines to manipulate strings but prevent buffer overflows.
srvrsmtp.c Routines to implement server SMTP.
stab.c Routines to manage the symbol table.
stats.c Routines to collect and post the statistics.
@@ -1462,4 +1439,4 @@ version.c The version number and information about this
Eric Allman
-(Version 8.156, last update 10/23/97 12:53:12)
+(Version 8.206, last update 6/30/98 22:08:36)
diff --git a/usr.sbin/sendmail/src/TRACEFLAGS b/contrib/sendmail/src/TRACEFLAGS
index db461db60fc4..588714da7f23 100644
--- a/usr.sbin/sendmail/src/TRACEFLAGS
+++ b/contrib/sendmail/src/TRACEFLAGS
@@ -1,7 +1,9 @@
+# @(#)TRACEFLAGS 8.21 (Berkeley) 4/27/98
0, 1 main.c main skip background fork
0, 4 main.c main canonical name, UUCP node name, a.k.a.s
0, 15 main.c main print configuration
0, 44 util.c printav print address of each string
+0, 101 main.c main print version and exit
1 main.c main print from person
2 main.c finis
3 conf.c getla, shouldqueue
diff --git a/usr.sbin/sendmail/src/alias.c b/contrib/sendmail/src/alias.c
index cebd805c1a68..8da3317a3c1d 100644
--- a/usr.sbin/sendmail/src/alias.c
+++ b/contrib/sendmail/src/alias.c
@@ -1,41 +1,19 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. All rights reserved.
*/
# include "sendmail.h"
#ifndef lint
-static char sccsid[] = "@(#)alias.c 8.73 (Berkeley) 5/8/97";
+static char sccsid[] = "@(#)alias.c 8.92 (Berkeley) 6/5/98";
#endif /* not lint */
@@ -77,7 +55,7 @@ alias(a, sendq, aliaslevel, e)
char *owner;
auto int stat = EX_OK;
char obuf[MAXNAME + 7];
- extern char *aliaslookup();
+ extern char *aliaslookup __P((char *, int *, ENVELOPE *));
if (tTd(27, 1))
printf("alias(%s)\n", a->q_user);
@@ -104,7 +82,7 @@ alias(a, sendq, aliaslevel, e)
{
a->q_flags |= QQUEUEUP;
if (e->e_message == NULL)
- e->e_message = "alias database unavailable";
+ e->e_message = newstr("alias database unavailable");
return;
}
if (p == NULL)
@@ -123,11 +101,11 @@ alias(a, sendq, aliaslevel, e)
a->q_flags |= QVERIFIED;
return;
}
- message("aliased to %s", shortenstring(p, 203));
+ message("aliased to %s", shortenstring(p, MAXSHORTSTR));
if (LogLevel > 9)
sm_syslog(LOG_INFO, e->e_id,
"alias %.100s => %s",
- a->q_paddr, shortenstring(p, 203));
+ a->q_paddr, shortenstring(p, MAXSHORTSTR));
a->q_flags &= ~QSELFREF;
if (tTd(27, 5))
{
@@ -237,7 +215,7 @@ setalias(spec)
{
char buf[50];
- while (isspace(*p))
+ while (isascii(*p) && isspace(*p))
p++;
if (*p == '\0')
break;
@@ -402,7 +380,9 @@ aliaswait(map, ext, isopen)
if (stat(buf, &stb) < 0 || stb.st_mtime < mtime || attimeout)
{
/* database is out of date */
- if (AutoRebuild && stb.st_ino != 0 && stb.st_uid == geteuid())
+ if (AutoRebuild && stb.st_ino != 0 &&
+ (stb.st_uid == geteuid() ||
+ (geteuid() == 0 && stb.st_uid == TrustedFileUid)))
{
bool oldSuprErrs;
@@ -414,7 +394,7 @@ aliaswait(map, ext, isopen)
map->map_class->map_close(map);
map->map_mflags &= ~(MF_OPEN|MF_WRITABLE);
}
- rebuildaliases(map, TRUE);
+ (void) rebuildaliases(map, TRUE);
isopen = map->map_class->map_open(map, O_RDONLY);
SuprErrs = oldSuprErrs;
}
@@ -438,28 +418,36 @@ aliaswait(map, ext, isopen)
** automatic -- set if this was automatically generated.
**
** Returns:
-** none.
+** TRUE if successful; FALSE otherwise.
**
** Side Effects:
** Reads the text version of the database, builds the
** DBM or DB version.
*/
-void
+bool
rebuildaliases(map, automatic)
register MAP *map;
bool automatic;
{
FILE *af;
bool nolock = FALSE;
- int sff = SFF_OPENASROOT|SFF_REGONLY|SFF_NOLOCK|SFF_NOWLINK|SFF_NOWFILES;
+ bool success = FALSE;
+ int sff = SFF_OPENASROOT|SFF_REGONLY|SFF_NOLOCK;
sigfunc_t oldsigint, oldsigquit;
#ifdef SIGTSTP
sigfunc_t oldsigtstp;
#endif
if (!bitset(MCF_REBUILDABLE, map->map_class->map_cflags))
- return;
+ return FALSE;
+
+ if (!bitset(DBS_LINKEDALIASFILEINWRITABLEDIR, DontBlameSendmail))
+ sff |= SFF_NOWLINK;
+ if (!bitset(DBS_GROUPWRITABLEALIASFILE, DontBlameSendmail))
+ sff |= SFF_NOGWFILES;
+ if (!bitset(DBS_WORLDWRITABLEALIASFILE, DontBlameSendmail))
+ sff |= SFF_NOWWFILES;
/* try to lock the source file */
if ((af = safefopen(map->map_file, O_RDWR, 0, sff)) == NULL)
@@ -478,7 +466,7 @@ rebuildaliases(map, automatic)
message("newaliases: cannot open %s: %s",
map->map_file, errstring(saveerr));
errno = 0;
- return;
+ return FALSE;
}
nolock = TRUE;
if (tTd(27, 1) ||
@@ -503,7 +491,7 @@ rebuildaliases(map, automatic)
}
(void) xfclose(af, "rebuildaliases1", map->map_file);
errno = 0;
- return;
+ return FALSE;
}
oldsigint = setsignal(SIGINT, SIG_IGN);
@@ -523,6 +511,7 @@ rebuildaliases(map, automatic)
}
map->map_mflags |= MF_OPEN|MF_WRITABLE;
readaliases(map, af, !automatic, TRUE);
+ success = TRUE;
}
else
{
@@ -550,6 +539,7 @@ rebuildaliases(map, automatic)
#ifdef SIGTSTP
(void) setsignal(SIGTSTP, oldsigtstp);
#endif
+ return success;
}
/*
** READALIASES -- read and process the alias file.
@@ -607,6 +597,7 @@ readaliases(map, af, announcestats, logstats)
p--;
if (fgets(p, SPACELEFT(line, p), af) == NULL)
break;
+ LineNumber++;
p = strchr(p, '\n');
}
#endif
@@ -855,6 +846,38 @@ forward(user, sendq, aliaslevel, e)
"forward %s: transient error: %s",
buf, errstring(err));
}
+ else
+ {
+ switch (err)
+ {
+ case ENOENT:
+ break;
+
+#if _FFR_FORWARD_SYSERR
+ case E_SM_NOSLINK:
+ case E_SM_NOHLINK:
+ case E_SM_REGONLY:
+ case E_SM_ISEXEC:
+ case E_SM_WWDIR:
+ case E_SM_GWDIR:
+ case E_SM_WWFILE:
+ case E_SM_GWFILE:
+ syserr("forward: %s: %s", buf, errstring(err));
+ break;
+#endif
+
+ default:
+ if (LogLevel > (RunAsUid == 0 ? 2 : 10))
+ sm_syslog(LOG_WARNING, e->e_id,
+ "forward %s: %s", buf,
+ errstring(err));
+ if (Verbose)
+ message("forward: %s: %s",
+ buf,
+ errstring(err));
+ break;
+ }
+ }
}
if (pp == NULL && got_transient)
{
diff --git a/contrib/sendmail/src/aliases b/contrib/sendmail/src/aliases
new file mode 100644
index 000000000000..7540eeae3f62
--- /dev/null
+++ b/contrib/sendmail/src/aliases
@@ -0,0 +1,53 @@
+#
+# @(#)aliases 8.2 (Berkeley) 3/5/94
+#
+# Aliases in this file will NOT be expanded in the header from
+# Mail, but WILL be visible over networks or from /bin/mail.
+#
+# >>>>>>>>>> The program "newaliases" must be run after
+# >> NOTE >> this file is updated for any changes to
+# >>>>>>>>>> show through to sendmail.
+#
+
+# Basic system aliases -- these MUST be present.
+MAILER-DAEMON: postmaster
+postmaster: root
+
+# General redirections for pseudo accounts.
+bin: root
+daemon: root
+games: root
+ingres: root
+nobody: root
+system: root
+toor: root
+uucp: root
+
+# Well-known aliases.
+manager: root
+dumper: root
+operator: root
+
+# trap decode to catch security attacks
+decode: root
+
+# OFFICIAL CSRG/BUG ADDRESSES
+
+# Ftp maintainer.
+ftp: ftp-bugs
+ftp-bugs: bigbug@cs.berkeley.edu
+
+# Distribution office.
+bsd-dist: bsd-dist@cs.berkeley.edu
+
+# Fortune maintainer.
+fortune: fortune@cs.berkeley.edu
+
+# Termcap maintainer.
+termcap: termcap@cs.berkeley.edu
+
+# General bug address.
+ucb-fixes: bigbug@cs.berkeley.edu
+ucb-fixes-request: bigbug@cs.berkeley.edu
+bugs: bugs@cs.berkeley.edu
+# END OFFICIAL BUG ADDRESSES
diff --git a/contrib/sendmail/src/aliases.5 b/contrib/sendmail/src/aliases.5
new file mode 100644
index 000000000000..8c73ac35a97d
--- /dev/null
+++ b/contrib/sendmail/src/aliases.5
@@ -0,0 +1,85 @@
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\" Copyright (c) 1983, 1997 Eric P. Allman. All rights reserved.
+.\" Copyright (c) 1985, 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\" @(#)aliases.5 8.8 (Berkeley) 5/19/98
+.\"
+.Dd May 19, 1998
+.Dt ALIASES 5
+.Os BSD 4
+.Sh NAME
+.Nm aliases
+.Nd aliases file for sendmail
+.Sh SYNOPSIS
+.Nm aliases
+.Sh DESCRIPTION
+This file describes user
+.Tn ID
+aliases used by
+.Pa /usr/sbin/sendmail .
+The file resides in
+.Pa /etc
+and
+is formatted as a series of lines of the form
+.Bd -filled -offset indent
+name: name_1, name2, name_3, . . .
+.Ed
+.Pp
+The
+.Em name
+is the name to alias, and the
+.Em name_n
+are the aliases for that name.
+Lines beginning with white space are continuation lines.
+Lines beginning with
+.Ql #
+are comments.
+.Pp
+Aliasing occurs only on local names.
+Loops can not occur, since no message will be sent to any person more than once.
+.Pp
+After aliasing has been done, local and valid recipients who have a
+.Dq Pa .forward
+file in their home directory have messages forwarded to the
+list of users defined in that file.
+.Pp
+This is only the raw data file; the actual aliasing information is
+placed into a binary format in the file
+.Pa /etc/aliases.db
+using the program
+.Xr newaliases 1 .
+A
+.Xr newaliases
+command should be executed each time the aliases file is changed for the
+change to take effect.
+.Sh SEE ALSO
+.Xr newaliases 1 ,
+.Xr dbopen 3 ,
+.Xr dbm 3 ,
+.Xr sendmail 8
+.Rs
+.%T "SENDMAIL Installation and Operation Guide"
+.Re
+.Rs
+.%T "SENDMAIL An Internetwork Mail Router"
+.Re
+.Sh BUGS
+If you have compiled
+.Xr sendmail
+with DBM support instead of NEWDB,
+you may have encountered problems in
+.Xr dbm 3
+restricting a single alias to about 1000 bytes of information.
+You can get longer aliases by ``chaining''; that is, make the last name in
+the alias be a dummy name which is a continuation alias.
+.Sh HISTORY
+The
+.Nm
+file format appeared in
+.Bx 4.0 .
diff --git a/usr.sbin/sendmail/src/arpadate.c b/contrib/sendmail/src/arpadate.c
index f289020424ad..7a9576bdd4d2 100644
--- a/usr.sbin/sendmail/src/arpadate.c
+++ b/contrib/sendmail/src/arpadate.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)arpadate.c 8.7 (Berkeley) 2/1/97";
+static char sccsid[] = "@(#)arpadate.c 8.12 (Berkeley) 5/19/98";
#endif /* not lint */
# include "sendmail.h"
diff --git a/contrib/sendmail/src/cdefs.h b/contrib/sendmail/src/cdefs.h
new file mode 100644
index 000000000000..e586cbfaf7cb
--- /dev/null
+++ b/contrib/sendmail/src/cdefs.h
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Berkeley Software Design, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)cdefs.h 8.8 (Berkeley) 1/9/95
+ */
+
+#ifndef _CDEFS_H_
+#define _CDEFS_H_
+
+#if defined(__cplusplus)
+#define __BEGIN_DECLS extern "C" {
+#define __END_DECLS };
+#else
+#define __BEGIN_DECLS
+#define __END_DECLS
+#endif
+
+/*
+ * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
+ * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
+ * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
+ * in between its arguments. __CONCAT can also concatenate double-quoted
+ * strings produced by the __STRING macro, but this only works with ANSI C.
+ */
+#if defined(__STDC__) || defined(__cplusplus)
+#define __P(protos) protos /* full-blown ANSI C */
+#define __CONCAT(x,y) x ## y
+#define __STRING(x) #x
+
+#define __const const /* define reserved names to standard */
+#define __signed signed
+#define __volatile volatile
+#if defined(__cplusplus)
+#define __inline inline /* convert to C++ keyword */
+#else
+#ifndef __GNUC__
+#define __inline /* delete GCC keyword */
+#endif /* !__GNUC__ */
+#endif /* !__cplusplus */
+
+#else /* !(__STDC__ || __cplusplus) */
+#define __P(protos) () /* traditional C preprocessor */
+#define __CONCAT(x,y) x/**/y
+#define __STRING(x) "x"
+
+#ifndef __GNUC__
+#define __const /* delete pseudo-ANSI C keywords */
+#define __inline
+#define __signed
+#define __volatile
+/*
+ * In non-ANSI C environments, new programs will want ANSI-only C keywords
+ * deleted from the program and old programs will want them left alone.
+ * When using a compiler other than gcc, programs using the ANSI C keywords
+ * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
+ * When using "gcc -traditional", we assume that this is the intent; if
+ * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
+ */
+#ifndef NO_ANSI_KEYWORDS
+#define const /* delete ANSI C keywords */
+#define inline
+#define signed
+#define volatile
+#endif
+#endif /* !__GNUC__ */
+#endif /* !(__STDC__ || __cplusplus) */
+
+/*
+ * GCC1 and some versions of GCC2 declare dead (non-returning) and
+ * pure (no side effects) functions using "volatile" and "const";
+ * unfortunately, these then cause warnings under "-ansi -pedantic".
+ * GCC2 uses a new, peculiar __attribute__((attrs)) style. All of
+ * these work for GNU C++ (modulo a slight glitch in the C++ grammar
+ * in the distribution version of 2.5.5).
+ */
+#if !defined(__GNUC__) || __GNUC__ < 2 || \
+ (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
+#define __attribute__(x) /* delete __attribute__ if non-gcc or gcc1 */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define __dead __volatile
+#define __pure __const
+#endif
+#endif
+
+/* Delete pseudo-keywords wherever they are not available or needed. */
+#ifndef __dead
+#define __dead
+#define __pure
+#endif
+
+#endif /* !_CDEFS_H_ */
diff --git a/usr.sbin/sendmail/src/clock.c b/contrib/sendmail/src/clock.c
index 6940b297894e..e81c9725d6e7 100644
--- a/usr.sbin/sendmail/src/clock.c
+++ b/contrib/sendmail/src/clock.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)clock.c 8.24 (Berkeley) 4/19/97";
+static char sccsid[] = "@(#)clock.c 8.34 (Berkeley) 6/4/98";
#endif /* not lint */
# include "sendmail.h"
@@ -106,7 +84,8 @@ setevent(intvl, func, arg)
if (tTd(5, 5))
printf("setevent: intvl=%ld, for=%ld, func=%lx, arg=%d, ev=%lx\n",
- intvl, now + intvl, (u_long) func, arg, (u_long) ev);
+ (long) intvl, (long)(now + intvl), (u_long) func,
+ arg, (u_long) ev);
setsignal(SIGALRM, tick);
intvl = EventQueue->ev_time - now;
@@ -179,9 +158,10 @@ clrevent(ev)
** calls the next function in EventQueue.
*/
+/* ARGSUSED */
static SIGFUNC_DECL
-tick(arg)
- int arg;
+tick(sig)
+ int sig;
{
register time_t now;
register EVENT *ev;
@@ -192,7 +172,7 @@ tick(arg)
now = curtime();
if (tTd(5, 4))
- printf("tick: now=%ld\n", now);
+ printf("tick: now=%ld\n", (long) now);
/* reset signal in case System V semantics */
(void) setsignal(SIGALRM, tick);
@@ -256,7 +236,7 @@ tick(arg)
*/
static bool SleepDone;
-static void endsleep();
+static void endsleep __P((void));
#ifndef SLEEP_T
# define SLEEP_T unsigned int
diff --git a/usr.sbin/sendmail/src/collect.c b/contrib/sendmail/src/collect.c
index 58f0dc75142a..190e6995743f 100644
--- a/usr.sbin/sendmail/src/collect.c
+++ b/contrib/sendmail/src/collect.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)collect.c 8.72 (Berkeley) 10/6/97";
+static char sccsid[] = "@(#)collect.c 8.89 (Berkeley) 6/4/98";
#endif /* not lint */
# include <errno.h>
@@ -64,7 +42,7 @@ static char sccsid[] = "@(#)collect.c 8.72 (Berkeley) 10/6/97";
*/
static jmp_buf CtxCollectTimeout;
-static void collecttimeout();
+static void collecttimeout __P((time_t));
static bool CollectProgress;
static EVENT *CollectTimeout;
@@ -102,9 +80,9 @@ collect(fp, smtpmode, hdrp, e)
u_char peekbuf[8];
char dfname[MAXQFNAME];
char bufbuf[MAXLINE];
- extern bool isheader();
- extern void eatheader();
- extern void tferror();
+ extern bool isheader __P((char *));
+ extern void eatheader __P((ENVELOPE *, bool));
+ extern void tferror __P((FILE *volatile, ENVELOPE *));
headeronly = hdrp != NULL;
@@ -181,6 +159,8 @@ collect(fp, smtpmode, hdrp, e)
for (;;)
{
+ extern int chompheader __P((char *, bool, HDR **, ENVELOPE *));
+
if (tTd(30, 35))
printf("top, istate=%d, mstate=%d\n", istate, mstate);
for (;;)
@@ -333,14 +313,12 @@ nextstate:
istate, mstate, buf);
switch (mstate)
{
- extern int chompheader();
-
case MS_UFROM:
mstate = MS_HEADER;
#ifndef NOTUNIX
if (strncmp(buf, "From ", 5) == 0)
{
- extern void eatfrom();
+ extern void eatfrom __P((char *volatile, ENVELOPE *));
bp = buf;
eatfrom(buf, e);
@@ -376,7 +354,10 @@ nextstate:
bp++;
*bp = '\0';
if (bitset(H_EOH, chompheader(buf, FALSE, hdrp, e)))
+ {
mstate = MS_BODY;
+ goto nextstate;
+ }
break;
case MS_BODY:
@@ -456,16 +437,16 @@ readerr:
sm_syslog(LOG_NOTICE, e->e_id,
"collect: %s on connection from %.100s, sender=%s: %s",
problem, host,
- shortenstring(e->e_from.q_paddr, 203),
+ shortenstring(e->e_from.q_paddr, MAXSHORTSTR),
errstring(errno));
if (feof(fp))
usrerr("451 collect: %s on connection from %s, from=%s",
problem, host,
- shortenstring(e->e_from.q_paddr, 203));
+ shortenstring(e->e_from.q_paddr, MAXSHORTSTR));
else
syserr("451 collect: %s on connection from %s, from=%s",
problem, host,
- shortenstring(e->e_from.q_paddr, 203));
+ shortenstring(e->e_from.q_paddr, MAXSHORTSTR));
/* don't return an error indication */
e->e_to = NULL;
@@ -490,11 +471,7 @@ readerr:
/* collect statistics */
if (OpMode != MD_VERIFY)
- {
- extern void markstats();
-
- markstats(e, (ADDRESS *) NULL);
- }
+ markstats(e, (ADDRESS *) NULL, FALSE);
#if _FFR_DSN_RRT_OPTION
/*
@@ -527,7 +504,7 @@ readerr:
/* no valid recipient headers */
register ADDRESS *q;
char *hdr = NULL;
- extern void addheader();
+ extern void addheader __P((char *, char *, HDR **));
/* create an Apparently-To: field */
/* that or reject the message.... */
@@ -634,29 +611,40 @@ collecttimeout(timeout)
void
tferror(tf, e)
- FILE *tf;
+ FILE *volatile tf;
register ENVELOPE *e;
{
setstat(EX_IOERR);
if (errno == ENOSPC)
{
+#if STAT64 > 0
+ struct stat64 st;
+#else
struct stat st;
+#endif
long avail;
long bsize;
extern long freediskspace __P((char *, long *));
e->e_flags |= EF_NO_BODY_RETN;
- if (fstat(fileno(tf), &st) < 0)
- st.st_size = 0;
+
+ if (
+#if STAT64 > 0
+ fstat64(fileno(tf), &st)
+#else
+ fstat(fileno(tf), &st)
+#endif
+ < 0)
+ st.st_size = 0;
(void) freopen(queuename(e, 'd'), "w", tf);
if (st.st_size <= 0)
fprintf(tf, "\n*** Mail could not be accepted");
else if (sizeof st.st_size > sizeof (long))
- fprintf(tf, "\n*** Mail of at least %qd bytes could not be accepted\n",
- st.st_size);
+ fprintf(tf, "\n*** Mail of at least %s bytes could not be accepted\n",
+ quad_to_string(st.st_size));
else
- fprintf(tf, "\n*** Mail of at least %ld bytes could not be accepted\n",
- (long) st.st_size);
+ fprintf(tf, "\n*** Mail of at least %lu bytes could not be accepted\n",
+ (unsigned long) st.st_size);
fprintf(tf, "*** at %s due to lack of disk space for temp file.\n",
MyHostName);
avail = freediskspace(QueueDir, &bsize);
@@ -674,7 +662,10 @@ tferror(tf, e)
}
else
syserr("collect: Cannot write tf%s", e->e_id);
- (void) freopen("/dev/null", "w", tf);
+ if (freopen("/dev/null", "w", tf) == NULL)
+ sm_syslog(LOG_ERR, e->e_id,
+ "tferror: freopen(\"/dev/null\") failed: %s",
+ errstring(errno));
}
/*
** EATFROM -- chew up a UNIX style from line and process
@@ -709,7 +700,7 @@ char *MonthList[] =
void
eatfrom(fm, e)
- char *fm;
+ char *volatile fm;
register ENVELOPE *e;
{
register char *p;
diff --git a/usr.sbin/sendmail/src/conf.c b/contrib/sendmail/src/conf.c
index cd51efcacfe0..838cd17d2356 100644
--- a/usr.sbin/sendmail/src/conf.c
+++ b/contrib/sendmail/src/conf.c
@@ -1,45 +1,24 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)conf.c 8.379 (Berkeley) 10/20/97";
+static char sccsid[] = "@(#)conf.c 8.431 (Berkeley) 6/25/98";
#endif /* not lint */
# include "sendmail.h"
# include "pathnames.h"
# include <sys/ioctl.h>
# include <sys/param.h>
+# include <limits.h>
/*
** CONF.C -- Sendmail Configuration Tables.
@@ -63,8 +42,6 @@ static char sccsid[] = "@(#)conf.c 8.379 (Berkeley) 10/20/97";
*/
-
-
/*
** Header info table
** Final (null) entry contains the flags used for any other field.
@@ -140,15 +117,63 @@ struct prival PrivacyValues[] =
{ "novrfy", PRIV_NOVRFY },
{ "restrictmailq", PRIV_RESTRICTMAILQ },
{ "restrictqrun", PRIV_RESTRICTQRUN },
-#if _FFR_PRIVACY_NOETRN
{ "noetrn", PRIV_NOETRN },
-#endif
+ { "noverb", PRIV_NOVERB },
{ "authwarnings", PRIV_AUTHWARNINGS },
{ "noreceipts", PRIV_NORECEIPTS },
{ "goaway", PRIV_GOAWAY },
{ NULL, 0 }
};
+/*
+** DontBlameSendmail values
+*/
+struct dbsval DontBlameSendmailValues[] =
+{
+ { "safe", DBS_SAFE },
+ { "assumesafechown", DBS_ASSUMESAFECHOWN },
+ { "groupwritabledirpathsafe", DBS_GROUPWRITABLEDIRPATHSAFE },
+ { "groupwritableforwardfilesafe",
+ DBS_GROUPWRITABLEFORWARDFILESAFE },
+ { "groupwritableincludefilesafe",
+ DBS_GROUPWRITABLEINCLUDEFILESAFE },
+ { "groupwritablealiasfile", DBS_GROUPWRITABLEALIASFILE },
+ { "worldwritablealiasfile", DBS_WORLDWRITABLEALIASFILE },
+ { "forwardfileinunsafedirpath", DBS_FORWARDFILEINUNSAFEDIRPATH },
+ { "includefileinunsafedirpath", DBS_INCLUDEFILEINUNSAFEDIRPATH },
+ { "mapinunsafedirpath", DBS_MAPINUNSAFEDIRPATH },
+ { "linkedaliasfileinwritabledir",
+ DBS_LINKEDALIASFILEINWRITABLEDIR },
+ { "linkedclassfileinwritabledir",
+ DBS_LINKEDCLASSFILEINWRITABLEDIR },
+ { "linkedforwardfileinwritabledir",
+ DBS_LINKEDFORWARDFILEINWRITABLEDIR },
+ { "linkedincludefileinwritabledir",
+ DBS_LINKEDINCLUDEFILEINWRITABLEDIR },
+ { "linkedmapinwritabledir", DBS_LINKEDMAPINWRITABLEDIR },
+ { "linkedserviceswitchfileinwritabledir",
+ DBS_LINKEDSERVICESWITCHFILEINWRITABLEDIR },
+ { "filedeliverytohardlink", DBS_FILEDELIVERYTOHARDLINK },
+ { "filedeliverytosymlink", DBS_FILEDELIVERYTOSYMLINK },
+ { "writemaptohardlink", DBS_WRITEMAPTOHARDLINK },
+ { "writemaptosymlink", DBS_WRITEMAPTOSYMLINK },
+ { "writestatstohardlink", DBS_WRITESTATSTOHARDLINK },
+ { "writestatstosymlink", DBS_WRITESTATSTOSYMLINK },
+ { "forwardfileingroupwritabledirpath",
+ DBS_FORWARDFILEINGROUPWRITABLEDIRPATH },
+ { "includefileingroupwritabledirpath",
+ DBS_INCLUDEFILEINGROUPWRITABLEDIRPATH },
+ { "classfileinunsafedirpath", DBS_CLASSFILEINUNSAFEDIRPATH },
+ { "errorheaderinunsafedirpath", DBS_ERRORHEADERINUNSAFEDIRPATH },
+ { "helpfileinunsafedirpath", DBS_HELPFILEINUNSAFEDIRPATH },
+ { "forwardfileinunsafedirpathsafe",
+ DBS_FORWARDFILEINUNSAFEDIRPATHSAFE },
+ { "includefileinunsafedirpathsafe",
+ DBS_INCLUDEFILEINUNSAFEDIRPATHSAFE },
+ { "runprograminunsafedirpath", DBS_RUNPROGRAMINUNSAFEDIRPATH },
+ { "runwritableprogram", DBS_RUNWRITABLEPROGRAM },
+ { NULL, 0 }
+};
/*
@@ -190,12 +215,13 @@ setdefaults(e)
register ENVELOPE *e;
{
int i;
+ struct passwd *pw;
char buf[MAXNAME];
- extern void inittimeouts();
- extern void setdefuser();
- extern void setupmaps();
- extern void setupmailers();
- extern void setupheaders();
+ extern void inittimeouts __P((char *));
+ extern void setdefuser __P((void));
+ extern void setupmaps __P((void));
+ extern void setupmailers __P((void));
+ extern void setupheaders __P((void));
SpaceSub = ' '; /* option B */
QueueLA = 8; /* option x */
@@ -206,8 +232,26 @@ setdefaults(e)
QueueFactor = WkRecipFact * 20; /* option q */
FileMode = (RealUid != geteuid()) ? 0644 : 0600;
/* option F */
- DefUid = 1; /* option u */
- DefGid = 1; /* option g */
+
+ if (((pw = getpwnam("mailnull")) != NULL && pw->pw_uid != 0) ||
+ ((pw = getpwnam("sendmail")) != NULL && pw->pw_uid != 0) ||
+ ((pw = getpwnam("daemon")) != NULL && pw->pw_uid != 0))
+ {
+ DefUid = pw->pw_uid; /* option u */
+ DefGid = pw->pw_gid; /* option g */
+ DefUser = newstr(pw->pw_name);
+ }
+ else
+ {
+ DefUid = 1; /* option u */
+ DefGid = 1; /* option g */
+ setdefuser();
+ }
+ TrustedFileUid = 0;
+ if (tTd(37, 4))
+ printf("setdefaults: DefUser=%s, DefUid=%d, DefGid=%d\n",
+ DefUser != NULL ? DefUser : "<1:1>",
+ (int) DefUid, (int) DefGid);
CheckpointInterval = 10; /* option C */
MaxHopCount = 25; /* option h */
e->e_sendmode = SM_FORK; /* option d */
@@ -217,7 +261,8 @@ setdefaults(e)
MciCacheTimeout = 5 MINUTES; /* option K */
LogLevel = 9; /* option L */
inittimeouts(NULL); /* option r */
- PrivacyFlags = 0; /* option p */
+ PrivacyFlags = PRIV_PUBLIC; /* option p */
+ DontBlameSendmail = DBS_SAFE; /* DontBlameSendmail option */
#if MIME8TO7
MimeMode = MM_CVTMIME|MM_PASS8BIT; /* option 8 */
#else
@@ -244,7 +289,9 @@ setdefaults(e)
_PATH_VARTMP,
_PATH_VARTMP[sizeof _PATH_VARTMP - 2] == '/' ? "" : "/");
DeadLetterDrop = newstr(buf);
- setdefuser();
+#ifdef HESIOD_INIT
+ HesiodContext = NULL;
+#endif
setupmaps();
setupmailers();
setupheaders();
@@ -265,6 +312,9 @@ setdefuser()
defpwent = sm_getpwuid(DefUid);
snprintf(defuserbuf, sizeof defuserbuf, "%s",
defpwent == NULL ? "nobody" : defpwent->pw_name);
+ if (tTd(37, 4))
+ printf("setdefuser: DefUid=%d, DefUser=%s\n",
+ (int) DefUid, DefUser);
}
/*
** SETUPMAILERS -- initialize default mailers
@@ -274,7 +324,7 @@ void
setupmailers()
{
char buf[100];
- extern void makemailer();
+ extern void makemailer __P((char *));
strcpy(buf, "prog, P=/bin/sh, F=lsoDq9, T=DNS/RFC822/X-Unix, A=sh -c \201u");
makemailer(buf);
@@ -396,6 +446,12 @@ setupmaps()
dequote_init, null_map_open, null_map_close,
dequote_map, null_map_store);
+#ifdef MAP_REGEX
+ MAPDEF("regex", NULL, 0,
+ regex_map_init, null_map_open, null_map_close,
+ regex_map_lookup, null_map_store);
+#endif
+
#if USERDB
/* user database */
MAPDEF("userdb", ".db", 0,
@@ -423,7 +479,7 @@ setupmaps()
map_parseargs, null_map_open, null_map_close,
null_map_lookup, null_map_store);
-#if _FFR_SYSLOG_MAP
+#if _FFR_MAP_SYSLOG
/* syslog map -- logs information to syslog */
MAPDEF("syslog", NULL, 0,
syslog_map_parseargs, null_map_open, null_map_close,
@@ -758,10 +814,14 @@ switch_map_find(service, maptype, mapreturn)
{
/* (re)read service switch */
register FILE *fp;
+ int sff = SFF_REGONLY|SFF_OPENASROOT|SFF_NOLOCK;
+
+ if (!bitset(DBS_LINKEDSERVICESWITCHFILEINWRITABLEDIR, DontBlameSendmail))
+ sff |= SFF_NOWLINK;
if (ConfigFileRead)
ServiceCacheTime = now;
- fp = fopen(ServiceSwitchFile, "r");
+ fp = safefopen(ServiceSwitchFile, O_RDONLY, 0, sff);
if (fp != NULL)
{
char buf[MAXLINE];
@@ -830,38 +890,42 @@ switch_map_find(service, maptype, mapreturn)
}
#endif
+#if !defined(_USE_SUN_NSSWITCH_)
/* if the service file doesn't work, use an absolute fallback */
+# ifdef _USE_DEC_SVC_CONF_
punt:
+# endif
for (svcno = 0; svcno < MAXMAPACTIONS; svcno++)
mapreturn[svcno] = 0;
svcno = 0;
if (strcmp(service, "aliases") == 0)
{
maptype[svcno++] = "files";
-#ifdef AUTO_NIS_ALIASES
-# ifdef NISPLUS
+# ifdef AUTO_NIS_ALIASES
+# ifdef NISPLUS
maptype[svcno++] = "nisplus";
-# endif
-# ifdef NIS
+# endif
+# ifdef NIS
maptype[svcno++] = "nis";
+# endif
# endif
-#endif
return svcno;
}
if (strcmp(service, "hosts") == 0)
{
-# if NAMED_BIND
+# if NAMED_BIND
maptype[svcno++] = "dns";
-# else
-# if defined(sun) && !defined(BSD) && !defined(_USE_SUN_NSSWITCH_)
+# else
+# if defined(sun) && !defined(BSD)
/* SunOS */
maptype[svcno++] = "nis";
+# endif
# endif
-# endif
maptype[svcno++] = "files";
return svcno;
}
return -1;
+#endif
}
/*
** USERNAME -- return the user id of the logged in user.
@@ -959,7 +1023,7 @@ ttypath()
}
/* see if we have write permission */
- if (stat(pathn, &stbuf) < 0 || !bitset(02, stbuf.st_mode))
+ if (stat(pathn, &stbuf) < 0 || !bitset(S_IWOTH, stbuf.st_mode))
{
errno = 0;
return (NULL);
@@ -1214,6 +1278,15 @@ init_md(argc, argv)
/* keep gethostby*() from stripping the local domain name */
set_domain_trim_off();
#endif
+#ifdef __QNX__
+ /*
+ ** Due to QNX's network distributed nature, you can target a tcpip
+ ** stack on a different node in the qnx network; this patch lets
+ ** this feature work. The __sock_locate() must be done before the
+ ** environment is clear.
+ */
+ __sock_locate();
+#endif
#if SECUREWARE || defined(_SCO_unix_)
set_auth_parameters(argc, argv);
@@ -1327,10 +1400,6 @@ init_vendor_macros(e)
#include <nlist.h>
-#ifdef IRIX64
-# define nlist nlist64
-#endif
-
/* _PATH_UNIX should be defined in <paths.h> */
#ifndef _PATH_UNIX
# if defined(SYSTEM5)
@@ -1661,95 +1730,12 @@ getla()
#endif /* LA_TYPE == LA_PROCSTR */
#if LA_TYPE == LA_IRIX6
-
-#include <nlist.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#define X_AVENRUN 0
-struct nlist Nl32[] =
-{
- { LA_AVENRUN },
- { 0 },
-};
-struct nlist64 Nl64[] =
-{
- { LA_AVENRUN },
- { 0 },
-};
+#include <sys/sysmp.h>
int getla(void)
{
static int kmem = -1;
- static enum { getla_none, getla_32, getla_64 } kernel_type =
- getla_none;
- uint32_t avenrun[3];
-
- if (kernel_type == getla_none)
- {
- /* Try 32 bit kernel ... */
- errno = 0;
- if (nlist(_PATH_UNIX, Nl32) == 0)
- {
- if (tTd(3, 20))
- printf("getla: Kernel is 32bit\n");
-
- if (Nl32[X_AVENRUN].n_value == 0)
- {
- if (tTd(3, 1))
- printf("getla: nlist(%s, %s) ==> 0\n",
- _PATH_UNIX, LA_AVENRUN);
- }
- else
- kernel_type = getla_32;
- }
- else if (errno != 0)
- {
- if (tTd(3, 1))
- printf("getla: nlist(%s): %s\n",
- _PATH_UNIX, errstring(errno));
- }
- else
- {
- if (tTd(3, 20))
- printf("getla: Kernel is not 32bit\n");
- }
-
- /* Try 64 bit kernel ... */
- errno = 0;
- if (nlist64(_PATH_UNIX, Nl64) == 0)
- {
- if (tTd(3, 20))
- printf("getla: Kernel is 64bit\n");
-
- if (Nl64[X_AVENRUN].n_value == 0)
- {
- if (tTd(3, 1))
- printf("getla: nlist(%s, %s) ==> 0\n",
- _PATH_UNIX, LA_AVENRUN);
- }
- else
- kernel_type = getla_64;
- }
- else if (errno != 0)
- {
- if (tTd(3, 1))
- printf("getla: nlist64(%s): %s\n",
- _PATH_UNIX, errstring(errno));
- }
- else
- {
- if (tTd(3, 20))
- printf("getla: Kernel is not 64bit\n");
- }
- }
-
- if (kernel_type == getla_none)
- {
- if (tTd(3, 1))
- printf("getla: Failed to determine kernel type\n");
- return -1;
- }
+ int avenrun[3];
if (kmem < 0)
{
@@ -1757,56 +1743,34 @@ int getla(void)
if (kmem < 0)
{
if (tTd(3, 1))
- printf("getla: open(/dev/kmem): %s\n",
+ printf("getla: open(%s): %s\n", _PATH_KMEM,
errstring(errno));
return -1;
}
(void) fcntl(kmem, F_SETFD, 1);
}
- switch (kernel_type)
+ if (lseek(kmem, (sysmp(MP_KERNADDR, MPKA_AVENRUN) & 0x7fffffff), SEEK_SET) == -1 ||
+ read(kmem, (char *)avenrun, sizeof(avenrun)) < sizeof(avenrun))
{
- case getla_none:
+ if (tTd(3, 1))
+ printf("getla: lseek or read: %s\n",
+ errstring(errno));
return -1;
-
- case getla_32:
- if (lseek(kmem, (off_t) Nl32[X_AVENRUN].n_value, SEEK_SET) == -1 ||
- read(kmem, (char *) avenrun, sizeof(avenrun)) < sizeof(avenrun))
- {
- if (tTd(3, 1))
- printf("getla: lseek or read: %s\n",
- errstring(errno));
- return -1;
- }
- break;
-
- case getla_64:
- /* Using of lseek64 is perhaps overkill ... */
- if (lseek64(kmem, (off64_t) Nl64[X_AVENRUN].n_value, SEEK_SET) == -1 ||
- read(kmem, (char *) avenrun, sizeof(avenrun)) <
- sizeof(avenrun))
- {
- if (tTd(3, 1))
- printf("getla: lseek64 or read: %s\n",
- errstring(errno));
- return -1;
- }
- break;
}
if (tTd(3, 5))
{
- printf("getla: avenrun = %ld",
- (long int) avenrun[0]);
+ printf("getla: avenrun = %ld", (long int) avenrun[0]);
if (tTd(3, 15))
printf(", %ld, %ld",
- (long int)avenrun[1],
- (long int)avenrun[2]);
+ (long int) avenrun[1], (long int) avenrun[2]);
printf("\n");
}
+
if (tTd(3, 1))
- printf("getla: %d\n",
- (int) (avenrun[0] + FSCALE/2) >> FSHIFT);
+ printf("getla: %d\n", (int) (avenrun[0] + FSCALE/2) >> FSHIFT);
return ((int) (avenrun[0] + FSCALE/2) >> FSHIFT);
+
}
#endif
@@ -1906,6 +1870,8 @@ getla()
#endif /* LA_TYPE == LA_DEVSHORT */
#if LA_TYPE == LA_ALPHAOSF
+struct rtentry;
+struct mbuf;
# include <sys/table.h>
int getla()
@@ -2065,7 +2031,7 @@ refuseconnections(port)
time_t now;
static time_t lastconn = (time_t) 0;
static int conncnt = 0;
- extern bool enoughdiskspace();
+ extern bool enoughdiskspace __P((long));
#ifdef XLA
if (!xla_smtp_ok())
@@ -2246,18 +2212,23 @@ initsetproctitle(argc, argv, envp)
Argv = argv;
/*
- ** Find the last environment variable within sendmail's
- ** process memory area.
- */
- while (i > 0 && (envp[i - 1] < argv[0] ||
- envp[i - 1] > (argv[argc - 1] +
- strlen(argv[argc - 1]) + 1 + envpsize)))
- i--;
-
- if (i > 0)
- LastArgv = envp[i - 1] + strlen(envp[i - 1]);
- else
- LastArgv = argv[argc - 1] + strlen(argv[argc - 1]);
+ ** Determine how much space we can use for setproctitle.
+ ** Use all contiguous argv and envp pointers starting at argv[0]
+ */
+ for (i = 0; i < argc; i++)
+ {
+ if (i==0 || LastArgv + 1 == argv[i])
+ LastArgv = argv[i] + strlen(argv[i]);
+ else
+ continue;
+ }
+ for (i=0; envp[i] != NULL; i++)
+ {
+ if (LastArgv + 1 == envp[i])
+ LastArgv = envp[i] + strlen(envp[i]);
+ else
+ continue;
+ }
}
#if SPT_TYPE != SPT_BUILTIN
@@ -2720,6 +2691,23 @@ initgroups(name, basegid)
#endif
/*
+** SETGROUPS -- set group list
+**
+** Stub implementation for systems that don't have group lists
+*/
+
+#ifndef NGROUPS_MAX
+
+int
+setgroups(ngroups, grouplist)
+ int ngroups;
+ GIDSET_T grouplist[];
+{
+ return 0;
+}
+
+#endif
+ /*
** SETSID -- set session id (for non-POSIX systems)
*/
@@ -2918,333 +2906,6 @@ vsprintf(s, fmt, ap)
#endif
/*
-** SNPRINTF, VSNPRINT -- counted versions of printf
-**
-** These versions have been grabbed off the net. They have been
-** cleaned up to compile properly and support for .precision and
-** %lx has been added.
-*/
-
-/**************************************************************
- * Original:
- * Patrick Powell Tue Apr 11 09:48:21 PDT 1995
- * A bombproof version of doprnt (sm_dopr) included.
- * Sigh. This sort of thing is always nasty do deal with. Note that
- * the version here does not include floating point...
- *
- * snprintf() is used instead of sprintf() as it does limit checks
- * for string length. This covers a nasty loophole.
- *
- * The other functions are there to prevent NULL pointers from
- * causing nast effects.
- **************************************************************/
-
-/*static char _id[] = "$Id: snprintf.c,v 1.2 1995/10/09 11:19:47 roberto Exp $";*/
-static void sm_dopr();
-static char *DoprEnd;
-static int SnprfOverflow;
-
-#if !HASSNPRINTF
-
-/* VARARGS3 */
-int
-# ifdef __STDC__
-snprintf(char *str, size_t count, const char *fmt, ...)
-# else
-snprintf(str, count, fmt, va_alist)
- char *str;
- size_t count;
- const char *fmt;
- va_dcl
-#endif
-{
- int len;
- VA_LOCAL_DECL
-
- VA_START(fmt);
- len = vsnprintf(str, count, fmt, ap);
- VA_END;
- return len;
-}
-
-
-# ifndef luna2
-int
-vsnprintf(str, count, fmt, args)
- char *str;
- size_t count;
- const char *fmt;
- va_list args;
-{
- str[0] = 0;
- DoprEnd = str + count - 1;
- SnprfOverflow = 0;
- sm_dopr( str, fmt, args );
- if (count > 0)
- DoprEnd[0] = 0;
- if (SnprfOverflow && tTd(57, 2))
- printf("\nvsnprintf overflow, len = %d, str = %s",
- count, shortenstring(str, 203));
- return strlen(str);
-}
-
-# endif /* !luna2 */
-#endif /* !HASSNPRINTF */
-
-/*
- * sm_dopr(): poor man's version of doprintf
- */
-
-static void fmtstr __P((char *value, int ljust, int len, int zpad, int maxwidth));
-static void fmtnum __P((long value, int base, int dosign, int ljust, int len, int zpad));
-static void dostr __P(( char * , int ));
-static char *output;
-static void dopr_outch __P(( int c ));
-static int SyslogErrno;
-
-static void
-sm_dopr( buffer, format, args )
- char *buffer;
- const char *format;
- va_list args;
-{
- int ch;
- long value;
- int longflag = 0;
- int pointflag = 0;
- int maxwidth = 0;
- char *strvalue;
- int ljust;
- int len;
- int zpad;
-# if !HASSTRERROR && !defined(ERRLIST_PREDEFINED)
- extern char *sys_errlist[];
- extern int sys_nerr;
-# endif
-
-
- output = buffer;
- while( (ch = *format++) ){
- switch( ch ){
- case '%':
- ljust = len = zpad = maxwidth = 0;
- longflag = pointflag = 0;
- nextch:
- ch = *format++;
- switch( ch ){
- case 0:
- dostr( "**end of format**" , 0);
- return;
- case '-': ljust = 1; goto nextch;
- case '0': /* set zero padding if len not set */
- if(len==0 && !pointflag) zpad = '0';
- case '1': case '2': case '3':
- case '4': case '5': case '6':
- case '7': case '8': case '9':
- if (pointflag)
- maxwidth = maxwidth*10 + ch - '0';
- else
- len = len*10 + ch - '0';
- goto nextch;
- case '*':
- if (pointflag)
- maxwidth = va_arg( args, int );
- else
- len = va_arg( args, int );
- goto nextch;
- case '.': pointflag = 1; goto nextch;
- case 'l': longflag = 1; goto nextch;
- case 'u': case 'U':
- /*fmtnum(value,base,dosign,ljust,len,zpad) */
- if( longflag ){
- value = va_arg( args, long );
- } else {
- value = va_arg( args, int );
- }
- fmtnum( value, 10,0, ljust, len, zpad ); break;
- case 'o': case 'O':
- /*fmtnum(value,base,dosign,ljust,len,zpad) */
- if( longflag ){
- value = va_arg( args, long );
- } else {
- value = va_arg( args, int );
- }
- fmtnum( value, 8,0, ljust, len, zpad ); break;
- case 'd': case 'D':
- if( longflag ){
- value = va_arg( args, long );
- } else {
- value = va_arg( args, int );
- }
- fmtnum( value, 10,1, ljust, len, zpad ); break;
- case 'x':
- if( longflag ){
- value = va_arg( args, long );
- } else {
- value = va_arg( args, int );
- }
- fmtnum( value, 16,0, ljust, len, zpad ); break;
- case 'X':
- if( longflag ){
- value = va_arg( args, long );
- } else {
- value = va_arg( args, int );
- }
- fmtnum( value,-16,0, ljust, len, zpad ); break;
- case 's':
- strvalue = va_arg( args, char *);
- if (maxwidth > 0 || !pointflag) {
- if (pointflag && len > maxwidth)
- len = maxwidth; /* Adjust padding */
- fmtstr( strvalue,ljust,len,zpad, maxwidth);
- }
- break;
- case 'c':
- ch = va_arg( args, int );
- dopr_outch( ch ); break;
- case 'm':
-#if HASSTRERROR
- dostr(strerror(SyslogErrno), 0);
-#else
- if (SyslogErrno < 0 || SyslogErrno > sys_nerr)
- {
- dostr("Error ", 0);
- fmtnum(SyslogErrno, 10, 0, 0, 0, 0);
- }
- else
- dostr(sys_errlist[SyslogErrno], 0);
-#endif
- break;
-
- case '%': dopr_outch( ch ); continue;
- default:
- dostr( "???????" , 0);
- }
- break;
- default:
- dopr_outch( ch );
- break;
- }
- }
- *output = 0;
-}
-
-static void
-fmtstr( value, ljust, len, zpad, maxwidth )
- char *value;
- int ljust, len, zpad, maxwidth;
-{
- int padlen, strlen; /* amount to pad */
-
- if( value == 0 ){
- value = "<NULL>";
- }
- for( strlen = 0; value[strlen]; ++ strlen ); /* strlen */
- if (strlen > maxwidth && maxwidth)
- strlen = maxwidth;
- padlen = len - strlen;
- if( padlen < 0 ) padlen = 0;
- if( ljust ) padlen = -padlen;
- while( padlen > 0 ) {
- dopr_outch( ' ' );
- --padlen;
- }
- dostr( value, maxwidth );
- while( padlen < 0 ) {
- dopr_outch( ' ' );
- ++padlen;
- }
-}
-
-static void
-fmtnum( value, base, dosign, ljust, len, zpad )
- long value;
- int base, dosign, ljust, len, zpad;
-{
- int signvalue = 0;
- unsigned long uvalue;
- char convert[20];
- int place = 0;
- int padlen = 0; /* amount to pad */
- int caps = 0;
-
- /* DEBUGP(("value 0x%x, base %d, dosign %d, ljust %d, len %d, zpad %d\n",
- value, base, dosign, ljust, len, zpad )); */
- uvalue = value;
- if( dosign ){
- if( value < 0 ) {
- signvalue = '-';
- uvalue = -value;
- }
- }
- if( base < 0 ){
- caps = 1;
- base = -base;
- }
- do{
- convert[place++] =
- (caps? "0123456789ABCDEF":"0123456789abcdef")
- [uvalue % (unsigned)base ];
- uvalue = (uvalue / (unsigned)base );
- }while(uvalue);
- convert[place] = 0;
- padlen = len - place;
- if( padlen < 0 ) padlen = 0;
- if( ljust ) padlen = -padlen;
- /* DEBUGP(( "str '%s', place %d, sign %c, padlen %d\n",
- convert,place,signvalue,padlen)); */
- if( zpad && padlen > 0 ){
- if( signvalue ){
- dopr_outch( signvalue );
- --padlen;
- signvalue = 0;
- }
- while( padlen > 0 ){
- dopr_outch( zpad );
- --padlen;
- }
- }
- while( padlen > 0 ) {
- dopr_outch( ' ' );
- --padlen;
- }
- if( signvalue ) dopr_outch( signvalue );
- while( place > 0 ) dopr_outch( convert[--place] );
- while( padlen < 0 ){
- dopr_outch( ' ' );
- ++padlen;
- }
-}
-
-static void
-dostr( str , cut)
- char *str;
- int cut;
-{
- if (cut) {
- while(*str && cut-- > 0) dopr_outch(*str++);
- } else {
- while(*str) dopr_outch(*str++);
- }
-}
-
-static void
-dopr_outch( c )
- int c;
-{
-#if 0
- if( iscntrl(c) && c != '\n' && c != '\t' ){
- c = '@' + (c & 0x1F);
- if( DoprEnd == 0 || output < DoprEnd )
- *output++ = '^';
- }
-#endif
- if( DoprEnd == 0 || output < DoprEnd )
- *output++ = c;
- else
- SnprfOverflow++;
-}
- /*
** USERSHELLOK -- tell if a user's shell is ok for unrestricted use
**
** Parameters:
@@ -3264,6 +2925,9 @@ dopr_outch( c )
# if defined(_AIX3) || defined(_AIX4)
# include <userconf.h>
+# if _AIX4 >= 40200
+# include <userpw.h>
+# endif
# include <usersec.h>
# endif
@@ -3302,6 +2966,15 @@ char *DefaultUserShells[] =
"/bin/ksh", /* Korn shell */
"/usr/bin/ksh",
#endif
+#ifdef sgi
+ "/sbin/sh", /* SGI's shells really live in /sbin */
+ "/sbin/csh",
+ "/bin/ksh", /* Korn shell */
+ "/sbin/ksh",
+ "/usr/bin/ksh",
+ "/bin/tcsh", /* Extended csh */
+ "/usr/bin/tcsh",
+#endif
NULL
};
@@ -3335,7 +3008,8 @@ usershellok(user, shell)
register FILE *shellf;
char buf[MAXLINE];
- if (shell == NULL || shell[0] == '\0' || wordinclass(user, 't'))
+ if (shell == NULL || shell[0] == '\0' || wordinclass(user, 't') ||
+ ConfigLevel <= 1)
return TRUE;
# if USEGETCONFATTR
@@ -3369,6 +3043,11 @@ usershellok(user, shell)
{
/* no /etc/shells; see if it is one of the std shells */
char **d;
+
+ if (errno != ENOENT && LogLevel > 3)
+ sm_syslog(LOG_ERR, NOQID,
+ "usershellok: cannot open %s: %s",
+ _PATH_SHELLS, errstring(errno));
for (d = DefaultUserShells; *d != NULL; d++)
{
@@ -3388,7 +3067,7 @@ usershellok(user, shell)
if (*p == '#' || *p == '\0')
continue;
q = p;
- while (*p != '\0' && *p != '#' && !isspace(*p))
+ while (*p != '\0' && *p != '#' && !(isascii(*p) && isspace(*p)))
p++;
*p = '\0';
if (strcmp(shell, q) == 0 || strcmp(WILDCARD_SHELL, q) == 0)
@@ -3500,8 +3179,10 @@ freediskspace(dir, bsize)
*bsize = FSBLOCKSIZE;
if (fs.SFS_BAVAIL <= 0)
return 0;
+ else if (fs.SFS_BAVAIL > LONG_MAX)
+ return LONG_MAX;
else
- return fs.SFS_BAVAIL;
+ return (long) fs.SFS_BAVAIL;
}
#endif
return (-1);
@@ -3689,6 +3370,7 @@ lockfile(fd, filename, ext, type)
int type;
{
int i;
+ int save_errno;
# if !HASFLOCK
int action;
struct flock lfd;
@@ -3721,9 +3403,10 @@ lockfile(fd, filename, ext, type)
printf("SUCCESS\n");
return TRUE;
}
+ save_errno = errno;
if (tTd(55, 60))
- printf("(%s) ", errstring(errno));
+ printf("(%s) ", errstring(save_errno));
/*
** On SunOS, if you are testing using -oQ/tmp/mqueue or
@@ -3734,21 +3417,19 @@ lockfile(fd, filename, ext, type)
** that this indicates that the lock is successfully grabbed.
*/
- if (errno == EINVAL)
+ if (save_errno == EINVAL)
{
if (tTd(55, 60))
printf("SUCCESS\n");
return TRUE;
}
- if (!bitset(LOCK_NB, type) || (errno != EACCES && errno != EAGAIN))
+ if (!bitset(LOCK_NB, type) || (save_errno != EACCES && save_errno != EAGAIN))
{
int omode = -1;
# ifdef F_GETFL
- int oerrno = errno;
-
(void) fcntl(fd, F_GETFL, &omode);
- errno = oerrno;
+ errno = save_errno;
# endif
syserr("cannot lockf(%s%s, fd=%d, type=%o, omode=%o, euid=%d)",
filename, ext, fd, type, omode, geteuid());
@@ -3769,18 +3450,17 @@ lockfile(fd, filename, ext, type)
printf("SUCCESS\n");
return TRUE;
}
+ save_errno = errno;
if (tTd(55, 60))
- printf("(%s) ", errstring(errno));
+ printf("(%s) ", errstring(save_errno));
- if (!bitset(LOCK_NB, type) || errno != EWOULDBLOCK)
+ if (!bitset(LOCK_NB, type) || save_errno != EWOULDBLOCK)
{
int omode = -1;
# ifdef F_GETFL
- int oerrno = errno;
-
(void) fcntl(fd, F_GETFL, &omode);
- errno = oerrno;
+ errno = save_errno;
# endif
syserr("cannot flock(%s%s, fd=%d, type=%o, omode=%o, euid=%d)",
filename, ext, fd, type, omode, geteuid());
@@ -3789,6 +3469,7 @@ lockfile(fd, filename, ext, type)
# endif
if (tTd(55, 60))
printf("FAIL\n");
+ errno = save_errno;
return FALSE;
}
/*
@@ -3858,7 +3539,7 @@ chownsafe(fd, safedir)
int rval;
/* give the system administrator a chance to override */
- if (ChownAlwaysSafe)
+ if (bitset(DBS_ASSUMESAFECHOWN, DontBlameSendmail))
return TRUE;
/*
@@ -3875,7 +3556,7 @@ chownsafe(fd, safedir)
return safedir && errno == 0 && rval IS_SAFE_CHOWN;
# endif
#else
- return ChownAlwaysSafe;
+ return bitset(DBS_ASSUMESAFECHOWN, DontBlameSendmail);
#endif
}
/*
@@ -3935,7 +3616,7 @@ getcfname()
return ConfFile;
#if NETINFO
{
- extern char *ni_propval();
+ extern char *ni_propval __P((char *, char *, char *, char *, int));
char *cflocation;
cflocation = ni_propval("/locations", NULL, "sendmail",
@@ -4026,6 +3707,13 @@ void
vendor_post_defaults(e)
ENVELOPE *e;
{
+#ifdef __QNX__
+ char *p;
+
+ /* Makes sure the SOCK environment variable remains */
+ if (p = getextenv("SOCK"))
+ setuserenv("SOCK", p);
+#endif
#if defined(SUN_EXTENSIONS) && defined(SUN_DEFAULT_VALUES)
sun_post_defaults(e);
#endif
@@ -4087,8 +3775,8 @@ vendor_set_uid(uid)
** e -- the current envelope.
**
** Returns:
-** TRUE -- if the connection should be accepted.
-** FALSE -- if it should be rejected.
+** error message from rejection.
+** NULL if not rejected.
*/
#if TCPWRAPPERS
@@ -4100,38 +3788,62 @@ int deny_severity = LOG_NOTICE;
#endif
#if DAEMON
-bool
+char *
validate_connection(sap, hostname, e)
SOCKADDR *sap;
char *hostname;
ENVELOPE *e;
{
+#if TCPWRAPPERS
+ char *host;
+#endif
+
if (tTd(48, 3))
printf("validate_connection(%s, %s)\n",
hostname, anynet_ntoa(sap));
if (rscheck("check_relay", hostname, anynet_ntoa(sap), e) != EX_OK)
{
+ static char reject[BUFSIZ*2];
+ extern char MsgBuf[];
+
if (tTd(48, 4))
printf(" ... validate_connection: BAD (rscheck)\n");
- return FALSE;
+
+ if (strlen(MsgBuf) > 5)
+ {
+ if (isascii(MsgBuf[0]) && isdigit(MsgBuf[0]) &&
+ isascii(MsgBuf[1]) && isdigit(MsgBuf[1]) &&
+ isascii(MsgBuf[2]) && isdigit(MsgBuf[2]))
+ strcpy(reject, &MsgBuf[4]);
+ else
+ strcpy(reject, MsgBuf);
+ }
+ else
+ strcpy(reject, "Access denied");
+
+ return reject;
}
#if TCPWRAPPERS
- if (!hosts_ctl("sendmail", hostname, anynet_ntoa(sap), STRING_UNKNOWN))
+ if (hostname[0] == '[' && hostname[strlen(hostname) - 1] == ']')
+ host = "unknown";
+ else
+ host = hostname;
+ if (!hosts_ctl("sendmail", host, anynet_ntoa(sap), STRING_UNKNOWN))
{
if (tTd(48, 4))
printf(" ... validate_connection: BAD (tcpwrappers)\n");
if (LogLevel >= 4)
sm_syslog(LOG_NOTICE, NOQID,
"tcpwrappers (%s, %s) rejection",
- hostname, anynet_ntoa(sap));
- return FALSE;
+ host, anynet_ntoa(sap));
+ return "Access denied";
}
#endif
if (tTd(48, 4))
printf(" ... validate_connection: OK\n");
- return TRUE;
+ return NULL;
}
#endif
@@ -4149,8 +3861,6 @@ validate_connection(sap, hostname, e)
static char sccsid[] = "@(#)strtol.c 8.1 (Berkeley) 6/4/93";
#endif /* LIBC_SCCS and not lint */
-#include <limits.h>
-
/*
* Convert a string to a long integer.
*
@@ -4487,6 +4197,9 @@ struct mbuf;
# ifndef SUNOS403
# include <sys/time.h>
# endif
+# if _AIX4 >= 40300
+# undef __P
+# endif
# include <net/if.h>
#endif
@@ -4696,7 +4409,10 @@ sm_syslog(level, id, fmt, va_alist)
int seq = 1;
int idlen;
extern int SnprfOverflow;
+ extern int SyslogErrno;
+ extern char *DoprEnd;
VA_LOCAL_DECL
+ extern void sm_dopr __P((char *, const char *, ...));
SyslogErrno = errno;
if (id == NULL)
@@ -4805,7 +4521,7 @@ bufalloc:
** syslog succeeds during interrupt handlers.
*/
-#ifdef __hpux
+#if defined(__hpux) && !defined(HPUX11)
# define MAXSYSLOGTRIES 100
# undef syslog
@@ -4879,15 +4595,18 @@ local_hostname_length(hostname)
char *CompileOptions[] =
{
-#if HESIOD
+#ifdef HESIOD
"HESIOD",
#endif
#if HES_GETMAILHOST
"HES_GETMAILHOST",
#endif
-#if LDAPMAP
+#ifdef LDAPMAP
"LDAPMAP",
#endif
+#ifdef MAP_REGEX
+ "MAP_REGEX",
+#endif
#if LOG
"LOG",
#endif
@@ -4903,7 +4622,7 @@ char *CompileOptions[] =
#if NAMED_BIND
"NAMED_BIND",
#endif
-#if NDBM
+#ifdef NDBM
"NDBM",
#endif
#if NETINET
@@ -4924,13 +4643,13 @@ char *CompileOptions[] =
#if NETX25
"NETX25",
#endif
-#if NEWDB
+#ifdef NEWDB
"NEWDB",
#endif
-#if NIS
+#ifdef NIS
"NIS",
#endif
-#if NISPLUS
+#ifdef NISPLUS
"NISPLUS",
#endif
#if QUEUE
@@ -4945,7 +4664,7 @@ char *CompileOptions[] =
#if SMTPDEBUG
"SMTPDEBUG",
#endif
-#if SUID_ROOT_FILES_OK
+#ifdef SUID_ROOT_FILES_OK
"SUID_ROOT_FILES_OK",
#endif
#if TCPWRAPPERS
@@ -4957,7 +4676,7 @@ char *CompileOptions[] =
#if XDEBUG
"XDEBUG",
#endif
-#if XLA
+#ifdef XLA
"XLA",
#endif
NULL
diff --git a/usr.sbin/sendmail/src/conf.h b/contrib/sendmail/src/conf.h
index de37c145b782..fd14d5aaf433 100644
--- a/usr.sbin/sendmail/src/conf.h
+++ b/contrib/sendmail/src/conf.h
@@ -1,37 +1,15 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*
- * @(#)conf.h 8.335 (Berkeley) 10/24/97
+ * @(#)conf.h 8.372 (Berkeley) 6/4/98
*/
/*
@@ -48,7 +26,10 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */
# include <sys/param.h>
# include <sys/types.h>
# include <sys/stat.h>
+#ifndef __QNX__
+/* in QNX this grabs bogus LOCK_* manifests */
# include <sys/file.h>
+#endif
# include <sys/wait.h>
# include <limits.h>
# include <fcntl.h>
@@ -80,6 +61,9 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */
# define MAXMIMENESTING 20 /* max MIME multipart nesting */
# define QUEUESEGSIZE 1000 /* increment for queue size */
# define MAXQFNAME 20 /* max qf file name length */
+# define MACBUFSIZE 4096 /* max expanded macro buffer size */
+# define TOBUFSIZE 512 /* max buffer to hold address list */
+# define MAXSHORTSTR 203 /* max short string length */
/**********************************************************************
** Compilation options.
@@ -167,11 +151,12 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */
** HP-UX -- tested for 8.07, 9.00, and 9.01.
**
** If V4FS is defined, compile for HP-UX 10.0.
+** 11.x support from Richard Allen <ra@hp.is>.
*/
#ifdef __hpux
/* common definitions for HP-UX 9.x and 10.x */
-# undef m_flags /* conflict between db.h & sys/sysmacros.h on HP 300 */
+# undef m_flags /* conflict between Berkeley DB 1.85 db.h & sys/sysmacros.h on HP 300 */
# define SYSTEM5 1 /* include all the System V defines */
# define HASINITGROUPS 1 /* has initgroups(3) call */
# define HASFCHMOD 1 /* has fchmod(2) syscall */
@@ -186,7 +171,9 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */
# ifndef HASGETUSERSHELL
# define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps */
# endif
-# define syslog hard_syslog
+# ifndef HPUX11
+# define syslog hard_syslog
+# endif
# define SAFENFSPATHCONF 1 /* pathconf(2) pessimizes on NFS filesystems */
# ifdef V4FS
@@ -213,6 +200,8 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */
# endif
# ifdef __STDC__
extern void hard_syslog(int, char *, ...);
+# else
+extern void hard_syslog();
# endif
# define FDSET_CAST (int *) /* cast for fd_set parameters to select */
# endif
@@ -228,10 +217,18 @@ extern void hard_syslog(int, char *, ...);
# define _AIX3 1 /* pull in AIX3 stuff */
# define USESETEUID 1 /* seteuid(2) works */
# define TZ_TYPE TZ_NAME /* use tzname[] vector */
-# define SOCKADDR_LEN_T size_t /* e.g., arg#3 to accept, getsockname */
# define SOCKOPT_LEN_T size_t /* arg#5 to getsockopt */
# if _AIX4 >= 40200
# define HASSETREUID 1 /* setreuid(2) works as of AIX 4.2 */
+# define SOCKADDR_LEN_T size_t /* e.g., arg#3 to accept, getsockname */
+# endif
+# if defined(_ILS_MACROS) /* IBM versions aren't side-effect clean */
+# undef isascii
+# define isascii(c) !(c & ~0177)
+# undef isdigit
+# define isdigit(__a) (_IS(__a,_ISDIGIT))
+# undef isspace
+# define isspace(__a) (_IS(__a,_ISSPACE))
# endif
#endif
@@ -348,6 +345,8 @@ typedef int pid_t;
# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */
# define SFS_BAVAIL f_bfree /* alternate field name */
# ifdef IRIX6
+# define STAT64 1
+# define QUAD_T unsigned long long
# define LA_TYPE LA_IRIX6 /* figure out at run time */
# define SAFENFSPATHCONF 0 /* pathconf(2) lies on NFS filesystems */
# define SYSLOG_BUFSIZE 512
@@ -355,17 +354,21 @@ typedef int pid_t;
# define LA_TYPE LA_INT
# ifdef IRIX64
+# define STAT64 1
+# define QUAD_T unsigned long long
# define NAMELISTMASK 0x7fffffffffffffff /* mask for nlist() values */
# else
+# define STAT64 0
# define NAMELISTMASK 0x7fffffff /* mask for nlist() values */
# endif
# endif
-# if defined(IRIX64) || defined(IRIX5)
+# if defined(IRIX64) || defined(IRIX5) || defined(IRIX6)
# include <sys/cdefs.h>
# include <paths.h>
# define ARGV_T char *const *
# define HASSETRLIMIT 1 /* has setrlimit(2) syscall */
# define HASGETDTABLESIZE 1 /* has getdtablesize(2) syscall */
+# define HASSTRERROR 1 /* has strerror(3) */
# else
# define ARGV_T const char **
# define WAITUNION 1 /* use "union wait" as wait argument type */
@@ -427,15 +430,23 @@ typedef int pid_t;
# endif
# if SOLARIS >= 20500 || (SOLARIS < 10000 && SOLARIS >= 205)
# define HASSETREUID 1 /* setreuid works as of 2.5 */
-# ifndef LA_TYPE
-# define LA_TYPE LA_KSTAT /* use kstat(3k) -- may work in < 2.5 */
+# if SOLARIS < 207 || (SOLARIS > 10000 && SOLARIS < 20700)
+# ifndef LA_TYPE
+# define LA_TYPE LA_KSTAT /* use kstat(3k) -- may work in < 2.5 */
+# endif
# endif
# endif
# if SOLARIS >= 20600 || (SOLARIS < 10000 && SOLARIS >= 206)
# define HASSNPRINTF 1 /* has snprintf starting in 2.6 */
# endif
+# if SOLARIS >= 20700 || (SOLARIS < 10000 && SOLARIS >= 207)
+# ifndef LA_TYPE
+# define LA_TYPE LA_SUBR /* getloadavg(3c) appears in 2.7 */
+# endif
+# define HASGETUSERSHELL 1 /* getusershell(3c) bug fixed in 2.7 */
+# endif
# ifndef HASGETUSERSHELL
-# define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps */
+# define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps pre-2.7 */
# endif
# else
@@ -449,6 +460,9 @@ typedef int pid_t;
# define TZ_TYPE TZ_TM_ZONE /* use tm->tm_zone */
# include <memory.h>
# include <vfork.h>
+# ifdef __GNUC__
+# define strtoul strtol /* gcc library bogosity */
+# endif
# ifdef SUNOS403
/* special tweaking for SunOS 4.0.3 */
@@ -603,13 +617,16 @@ extern long dgux_inet_addr();
# define HASFLOCK 1 /* has flock(2) call */
# endif
# define LA_TYPE LA_ALPHAOSF
-# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */
+# define SFS_TYPE SFS_STATVFS /* use <sys/statvfs.h> statfs() impl */
# ifndef _PATH_VENDOR_CF
# define _PATH_VENDOR_CF "/var/adm/sendmail/sendmail.cf"
# endif
# ifndef _PATH_SENDMAILPID
# define _PATH_SENDMAILPID "/var/run/sendmail.pid"
# endif
+# define bcopy(s, d, l) (memmove((d), (s), (l)))
+# define bzero(d, l) (memset((d), '\0', (l)))
+# define bcmp(s, d, l) (memcmp((s), (d), (l)))
#endif
@@ -675,6 +692,7 @@ typedef int pid_t;
# include <sys/cdefs.h>
# define ERRLIST_PREDEFINED /* don't declare sys_errlist */
# define BSD4_4_SOCKADDR /* has sa_len */
+# define NEED_PRINTF_PERCENTQ 1 /* doesn't have %lld */
# define NETLINK 1 /* supports AF_LINK */
# ifndef LA_TYPE
# define LA_TYPE LA_SUBR
@@ -708,20 +726,56 @@ typedef int pid_t;
# define LA_TYPE LA_SUBR
# endif
# define GIDSET_T gid_t
+# define QUAD_T quad_t
# if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199312
/* version 1.1 or later */
# undef SPT_TYPE
# define SPT_TYPE SPT_BUILTIN /* setproctitle is in libc */
# else
/* version 1.0 or earlier */
-# ifndef OLD_NEWDB
-# define OLD_NEWDB 1 /* old version of newdb library */
-# endif
# define SPT_PADCHAR '\0' /* pad process title with nulls */
# endif
+# if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199701 /* on 3.x */
+# define HASSETUSERCONTEXT 1 /* has setusercontext */
+# endif
#endif
+/*
+** QNX 4.2x
+** Contributed by Glen McCready <glen@qnx.com>.
+**
+** Should work with all versions of QNX.
+*/
+
+#if defined(__QNX__)
+# include <unix.h>
+# include <sys/select.h>
+# undef NGROUPS_MAX
+# define HASSETSID 1 /* has the setsid(2) POSIX syscall */
+# define USESETEUID 1 /* has useable seteuid(2) call */
+# define HASFCHMOD 1 /* has fchmod(2) syscall */
+# define HASGETDTABLESIZE 1 /* has getdtablesize(2) call */
+# define HASSETREUID 1 /* has setreuid(2) call */
+# define HASSTRERROR 1 /* has strerror(3) */
+# define HASFLOCK 0
+# undef HASINITGROUPS /* has initgroups(3) call */
+# define NEEDGETOPT 1 /* use sendmail's getopt */
+# define IP_SRCROUTE 1 /* can check IP source routing */
+# define TZ_TYPE TZ_TMNAME /* use tmname variable */
+# define GIDSET_T gid_t
+# define LA_TYPE LA_ZERO
+# define SFS_TYPE SFS_NONE
+# define SPT_TYPE SPT_REUSEARGV
+# define SPT_PADCHAR '\0' /* pad process title with nulls */
+# define HASGETUSERSHELL 0
+# define E_PSEUDOBASE 512
+# define bcopy(s, d, l) (memmove((d), (s), (l)))
+# define bzero(d, l) (memset((d), '\0', (l)))
+# define bcmp(s, d, l) (memcmp((s), (d), (l)))
+# define _FILE_H_INCLUDED
+#endif
+
/*
** FreeBSD / NetBSD / OpenBSD (all architectures, all versions)
@@ -742,12 +796,14 @@ typedef int pid_t;
# define HASUNAME 1 /* has uname(2) syscall */
# define HASSTRERROR 1 /* has strerror(3) */
# define HAS_ST_GEN 1 /* has st_gen field in stat struct */
+# define NEED_PRINTF_PERCENTQ 1 /* doesn't have %lld */
# include <sys/cdefs.h>
# define ERRLIST_PREDEFINED /* don't declare sys_errlist */
# define BSD4_4_SOCKADDR /* has sa_len */
# define NETLINK 1 /* supports AF_LINK */
# define SAFENFSPATHCONF 1 /* pathconf(2) pessimizes on NFS filesystems */
# define GIDSET_T gid_t
+# define QUAD_T unsigned long long
# ifndef LA_TYPE
# define LA_TYPE LA_SUBR
# endif
@@ -905,7 +961,6 @@ extern int errno;
/* SCO OpenServer 5 */
#if _SCO_DS >= 1
# include <paths.h>
-# define _SCO_unix_4_2
# define SIOCGIFNUM_IS_BROKEN 1 /* SIOCGIFNUM returns bogus value */
# define HASSNPRINTF 1 /* has snprintf(3) call */
# define HASFCHMOD 1 /* has fchmod(2) call */
@@ -918,8 +973,12 @@ extern int errno;
# define LA_TYPE LA_DEVSHORT
# endif
# define _PATH_AVENRUN "/dev/table/avenrun"
-# define SOCKADDR_LEN_T size_t /* e.g., arg#3 to accept, getsockname */
-# define SOCKOPT_LEN_T size_t /* arg#5 to getsockopt */
+# ifndef _SCO_unix_4_2
+# define _SCO_unix_4_2
+# else
+# define SOCKADDR_LEN_T size_t /* e.g., arg#3 to accept, getsockname */
+# define SOCKOPT_LEN_T size_t /* arg#5 to getsockopt */
+# endif
#endif
/* SCO UNIX 3.2v4.2/Open Desktop 3.0 */
@@ -1557,11 +1616,16 @@ typedef int pid_t;
# define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps */
# endif
-/* avoid m_flags conflict between db.h & sys/sysmacros.h on HIUX 3050 */
+/*
+** avoid m_flags conflict between Berkeley DB 1.85 db.h & sys/sysmacros.h
+** on HIUX 3050
+*/
# undef m_flags
# ifdef __STDC__
extern int syslog(int, char *, ...);
+#else
+extern int syslog();
# endif
#endif
@@ -1775,7 +1839,7 @@ extern int errno;
/*
** Pyramid DC/OSx
**
-** From Earle Ake <akee@wpdis01.wpafb.af.mil>.
+** From Earle Ake <akee@wpdiss1.wpafb.af.mil>.
*/
#ifdef DCOSx
@@ -1848,10 +1912,20 @@ typedef struct msgb mblk_t;
** Contributed by Gerald Rinske <Gerald.Rinske@mch.sni.de>
** of Siemens Business Services VAS.
*/
-#ifdef _sinix_
+#ifdef sinix
# define SYSLOG_BUFSIZE 1024
#endif
+/*
+** CRAY T3E
+**
+** Contributed by Manu Mahonen <mailadm@csc.fi>
+** of Center for Scientific Computing.
+*/
+#ifdef _CRAY
+# define GET_IPOPT_DST(dst) *(struct in_addr *)&(dst)
+#endif
+
/**********************************************************************
** End of Per-Operating System defines
**********************************************************************/
@@ -1947,6 +2021,11 @@ typedef struct msgb mblk_t;
# if _POSIX_VERSION >= 199500 && !defined(USESETEUID)
# define USESETEUID 1 /* has useable seteuid(2) call */
# endif
+# ifndef bcopy
+# define bcopy(s, d, l) (memmove((d), (s), (l)))
+# define bzero(d, l) (memset((d), '\0', (l)))
+# define bcmp(s, d, l) (memcmp((s), (d), (l)))
+# endif
#endif
/*
** Tweaking for systems that (for example) claim to be BSD or POSIX
@@ -1971,6 +2050,10 @@ typedef struct msgb mblk_t;
# undef bcmp /* despite SystemV claim, uses BSD bcmp */
#endif
+#if defined(sun) && !defined(BSD) && !defined(SOLARIS) && !defined(__svr4__) && !defined(__SVR4)
+# undef bcopy /* SunOS 4 doesn't have memmove() */
+#endif
+
/*
** Due to a "feature" in some operating systems such as Ultrix 4.3 and
@@ -2023,10 +2106,6 @@ typedef struct msgb mblk_t;
# define HASULIMIT 0 /* assume no ulimit(2) support */
#endif
-#ifndef OLD_NEWDB
-# define OLD_NEWDB 0 /* assume newer version of newdb */
-#endif
-
#ifndef SECUREWARE
# define SECUREWARE 0 /* assume no SecureWare C2 auditing hooks */
#endif
@@ -2076,6 +2155,10 @@ typedef struct msgb mblk_t;
#ifndef SOCKOPT_LEN_T
# define SOCKOPT_LEN_T int
#endif
+
+#ifndef QUAD_T
+# define QUAD_T unsigned long
+#endif
/**********************************************************************
** Remaining definitions should never have to be changed. They are
** primarily to provide back compatibility for older systems -- for
@@ -2165,7 +2248,11 @@ typedef struct msgb mblk_t;
# include "cdefs.h"
#endif
-#if NAMED_BIND && !defined(__ksr__)
+#if HESIOD && !defined(NAMED_BIND)
+# define NAMED_BIND 1 /* not one without the other */
+#endif
+
+#if NAMED_BIND && !defined(__ksr__) && !defined(h_errno)
extern int h_errno;
#endif
@@ -2248,6 +2335,18 @@ struct utsname
# define LOCK_UN 0x08 /* unlock */
#endif
+#ifndef S_IXOTH
+# define S_IXOTH (S_IEXEC >> 6)
+#endif
+
+#ifndef S_IXGRP
+# define S_IXGRP (S_IEXEC >> 3)
+#endif
+
+#ifndef S_IXUSR
+# define S_IXUSR (S_IEXEC)
+#endif
+
#ifndef SEEK_SET
# define SEEK_SET 0
# define SEEK_CUR 1
@@ -2281,26 +2380,6 @@ typedef void (*sigfunc_t) __P((int));
#endif
/*
-** Size of tobuf (deliver.c)
-** Tweak this to match your syslog implementation. It will have to
-** allow for the extra information printed.
-*/
-
-#ifndef TOBUFSIZE
-# if (SYSLOG_BUFSIZE) > 768
-# define TOBUFSIZE (SYSLOG_BUFSIZE - 512)
-# else
-# define TOBUFSIZE (SYSLOG_BUFSIZE / 2)
-# endif
-#endif
-
-/* TOBUFSIZE must never be permitted to exceed MAXLINE - 128 */
-#if TOBUFSIZE > (MAXLINE - 128)
-# undef TOBUFSIZE
-# define TOBUFSIZE (MAXLINE - 128)
-#endif
-
-/*
** Size of prescan buffer.
** Despite comments in the _sendmail_ book, this probably should
** not be changed; there are some hard-to-define dependencies.
diff --git a/usr.sbin/sendmail/src/convtime.c b/contrib/sendmail/src/convtime.c
index 5ca1b39149e7..02c287b13722 100644
--- a/usr.sbin/sendmail/src/convtime.c
+++ b/contrib/sendmail/src/convtime.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)convtime.c 8.9 (Berkeley) 2/1/97";
+static char sccsid[] = "@(#)convtime.c 8.14 (Berkeley) 5/19/98";
#endif /* not lint */
# include "sendmail.h"
diff --git a/usr.sbin/sendmail/src/daemon.c b/contrib/sendmail/src/daemon.c
index e62aaf147d5f..dc0b5b5bd2d5 100644
--- a/usr.sbin/sendmail/src/daemon.c
+++ b/contrib/sendmail/src/daemon.c
@@ -1,35 +1,13 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#include <errno.h>
@@ -37,9 +15,9 @@
#ifndef lint
#ifdef DAEMON
-static char sccsid[] = "@(#)daemon.c 8.195 (Berkeley) 10/23/97 (with daemon mode)";
+static char sccsid[] = "@(#)daemon.c 8.220 (Berkeley) 6/24/98 (with daemon mode)";
#else
-static char sccsid[] = "@(#)daemon.c 8.195 (Berkeley) 10/23/97 (without daemon mode)";
+static char sccsid[] = "@(#)daemon.c 8.220 (Berkeley) 6/24/98 (without daemon mode)";
#endif
#endif /* not lint */
@@ -132,7 +110,7 @@ getrequests(e)
#if XDEBUG
bool j_has_dot;
#endif
- extern void reapchild();
+ extern void reapchild __P((int));
extern int opendaemonsocket __P((bool));
/*
@@ -232,7 +210,7 @@ getrequests(e)
auto SOCKADDR_LEN_T lotherend;
int savederrno;
int pipefd[2];
- extern bool refuseconnections();
+ extern bool refuseconnections __P((int));
/* see if we are rejecting connections */
(void) blocksignal(SIGALRM);
@@ -424,7 +402,7 @@ getrequests(e)
(outchannel = fdopen(t, "w")) == NULL)
{
syserr("cannot open SMTP server channel, fd=%d", t);
- exit(0);
+ exit(EX_OK);
}
InChannel = inchannel;
@@ -438,7 +416,7 @@ getrequests(e)
if (!xla_host_ok(RealHostName))
{
message("421 Too many SMTP sessions for this host");
- exit(0);
+ exit(EX_OK);
}
#endif
@@ -814,7 +792,9 @@ makeconnection(host, port, mci, e)
if (host[0] == '[')
{
- long hid;
+#if NETINET
+ unsigned long hid = INADDR_NONE;
+#endif
register char *p = strchr(host, ']');
if (p != NULL)
@@ -908,6 +888,13 @@ gothostent:
#endif
default:
+ if (hp->h_length > sizeof addr.sa.sa_data)
+ {
+ syserr("makeconnection: long sa_data: family %d len %d",
+ hp->h_addrtype, hp->h_length);
+ mci_setstat(mci, EX_NOHOST, "5.1.2", NULL);
+ return EX_NOHOST;
+ }
bcopy(hp->h_addr,
addr.sa.sa_data,
hp->h_length);
@@ -1038,6 +1025,12 @@ gothostent:
ev = setevent(TimeOuts.to_connect, connecttimeout, 0);
else
ev = NULL;
+
+#if _FFR_CONNECTONLYTO_OPTION
+ /* for testing */
+ if (ConnectOnlyTo != 0)
+ addr.sin.sin_addr.s_addr = ConnectOnlyTo;
+#endif
i = connect(s, (struct sockaddr *) &addr, addrlen);
sav_errno = errno;
if (ev != NULL)
@@ -1061,7 +1054,14 @@ gothostent:
/* couldn't connect.... figure out why */
(void) close(s);
- if (hp != NULL && hp->h_addr_list[addrno])
+
+ if (LogLevel >= 14)
+ sm_syslog(LOG_INFO, e->e_id,
+ "makeconnection (%s [%s]) failed: %s",
+ host, anynet_ntoa(&addr),
+ errstring(sav_errno));
+
+ if (hp != NULL && hp->h_addr_list[addrno] != NULL)
{
if (tTd(16, 1))
printf("Connect failed (%s); trying new address....\n",
@@ -1225,6 +1225,9 @@ addrcmp(hp, ha, sa)
**
** Parameters:
** fd -- the descriptor
+** may_be_forged -- an outage that is set to TRUE if the
+** forward lookup of RealHostName does not match
+** RealHostAddr; set to FALSE if they do match.
**
** Returns:
** The user@host information associated with this descriptor.
@@ -1239,8 +1242,9 @@ authtimeout()
}
char *
-getauthinfo(fd)
+getauthinfo(fd, may_be_forged)
int fd;
+ bool *may_be_forged;
{
SOCKADDR_LEN_T falen;
register char *volatile p = NULL;
@@ -1248,19 +1252,22 @@ getauthinfo(fd)
SOCKADDR_LEN_T lalen;
register struct servent *sp;
volatile int s;
- int i;
+ int i = 0;
EVENT *ev;
int nleft;
struct hostent *hp;
+ char *ostype = NULL;
char **ha;
- volatile bool may_be_forged;
char ibuf[MAXNAME + 1];
- static char hbuf[MAXNAME * 2 + 2];
+ static char hbuf[MAXNAME * 2 + 11];
+ *may_be_forged = FALSE;
falen = sizeof RealHostAddr;
- if (isatty(fd) || getpeername(fd, &RealHostAddr.sa, &falen) < 0 ||
+ if (isatty(fd) || (i = getpeername(fd, &RealHostAddr.sa, &falen)) < 0 ||
falen <= 0 || RealHostAddr.sa.sa_family == 0)
{
+ if (i < 0 && errno != ENOTSOCK)
+ return NULL;
(void) snprintf(hbuf, sizeof hbuf, "%s@localhost",
RealUserName);
if (tTd(9, 1))
@@ -1277,15 +1284,14 @@ getauthinfo(fd)
}
/* cross check RealHostName with forward DNS lookup */
- if (anynet_ntoa(&RealHostAddr)[0] == '[')
- {
- /* address is not a socket */
- may_be_forged = FALSE;
- }
- else if (RealHostName[0] == '[')
+ if (anynet_ntoa(&RealHostAddr)[0] == '[' ||
+ RealHostName[0] == '[')
{
- /* have IP address with no forward lookup */
- may_be_forged = FALSE;
+ /*
+ ** address is not a socket or have an
+ ** IP address with no forward lookup
+ */
+ *may_be_forged = FALSE;
}
else
{
@@ -1293,13 +1299,13 @@ getauthinfo(fd)
hp = sm_gethostbyname(RealHostName);
if (hp == NULL)
- may_be_forged = TRUE;
+ *may_be_forged = TRUE;
else
{
for (ha = hp->h_addr_list; *ha != NULL; ha++)
if (addrcmp(hp, *ha, &RealHostAddr) == 0)
break;
- may_be_forged = *ha == NULL;
+ *may_be_forged = *ha == NULL;
}
}
@@ -1407,22 +1413,41 @@ getauthinfo(fd)
}
/* p now points to the OSTYPE field */
+ while (isascii(*p) && isspace(*p))
+ p++;
+ ostype = p;
p = strchr(p, ':');
if (p == NULL)
{
/* malformed response */
goto noident;
}
+ else
+ {
+ char *charset;
+
+ *p = '\0';
+ charset = strchr(ostype, ',');
+ if (charset != NULL)
+ *charset = '\0';
+ }
/* 1413 says don't do this -- but it's broken otherwise */
while (isascii(*++p) && isspace(*p))
continue;
/* p now points to the authenticated name -- copy carefully */
- cleanstrcpy(hbuf, p, MAXNAME);
+ if (strncasecmp(ostype, "other", 5) == 0 &&
+ (ostype[5] == ' ' || ostype[5] == '\0'))
+ {
+ snprintf(hbuf, sizeof hbuf, "IDENT:");
+ cleanstrcpy(&hbuf[6], p, MAXNAME);
+ }
+ else
+ cleanstrcpy(hbuf, p, MAXNAME);
i = strlen(hbuf);
snprintf(&hbuf[i], sizeof hbuf - i, "@%s",
- RealHostName == NULL ? "localhost" : RealHostName);
+ RealHostName == NULL ? "localhost" : RealHostName);
goto postident;
closeident:
@@ -1538,22 +1563,24 @@ postident:
snprintf(p, SPACELEFT(hbuf, p), "]");
goto postipsr;
}
-#endif
noipsr:
+#endif
if (RealHostName != NULL && RealHostName[0] != '[')
{
p = &hbuf[strlen(hbuf)];
(void) snprintf(p, SPACELEFT(hbuf, p), " [%.100s]",
anynet_ntoa(&RealHostAddr));
}
- if (may_be_forged)
+ if (*may_be_forged)
{
p = &hbuf[strlen(hbuf)];
(void) snprintf(p, SPACELEFT(hbuf, p), " (may be forged)");
}
+#if IP_SRCROUTE
postipsr:
+#endif
if (tTd(9, 1))
printf("getauthinfo: %s\n", hbuf);
return hbuf;
@@ -1781,6 +1808,9 @@ myhostname(hostbuf, size)
**
** Parameters:
** fd -- the descriptor
+** may_be_forged -- an outage that is set to TRUE if the
+** forward lookup of RealHostName does not match
+** RealHostAddr; set to FALSE if they do match.
**
** Returns:
** The host name associated with this descriptor, if it can
@@ -1792,9 +1822,11 @@ myhostname(hostbuf, size)
*/
char *
-getauthinfo(fd)
+getauthinfo(fd, may_be_forged)
int fd;
+ bool *may_be_forged;
{
+ *may_be_forged = FALSE;
return NULL;
}
/*
@@ -1837,7 +1869,7 @@ host_map_lookup(map, name, avp, statp)
if (bitset(MF_MATCHONLY, map->map_mflags))
cp = map_rewrite(map, name, strlen(name), NULL);
else
- cp = map_rewrite(map, hp->h_name, strlen(hp->h_name), av);
+ cp = map_rewrite(map, hp->h_name, strlen(hp->h_name), avp);
return cp;
}
@@ -1865,6 +1897,10 @@ host_map_init(map, args)
map->map_app = ++p;
break;
+ case 'T':
+ map->map_tapp = ++p;
+ break;
+
case 'm':
map->map_mflags |= MF_MATCHONLY;
break;
@@ -1880,6 +1916,8 @@ host_map_init(map, args)
}
if (map->map_app != NULL)
map->map_app = newstr(map->map_app);
+ if (map->map_tapp != NULL)
+ map->map_tapp = newstr(map->map_tapp);
return TRUE;
}
/*
@@ -2015,10 +2053,13 @@ hostnamebyanyaddr(sap)
_res.retry = saveretry;
#endif /* NAMED_BIND */
- if (hp != NULL && hp->h_name[0] != '[')
+ if (hp != NULL && hp->h_name[0] != '[' &&
+ inet_addr(hp->h_name) == INADDR_NONE)
return denlstring((char *) hp->h_name, TRUE, TRUE);
+#if NETUNIX
else if (sap->sa.sa_family == AF_UNIX && sap->sunix.sun_path[0] == '\0')
return "localhost";
+#endif
else
{
/* produce a dotted quad */
diff --git a/usr.sbin/sendmail/src/deliver.c b/contrib/sendmail/src/deliver.c
index 957551590fcd..0e5eb0729905 100644
--- a/usr.sbin/sendmail/src/deliver.c
+++ b/contrib/sendmail/src/deliver.c
@@ -1,47 +1,24 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)deliver.c 8.296 (Berkeley) 10/22/97";
+static char sccsid[] = "@(#)deliver.c 8.353 (Berkeley) 6/30/98";
#endif /* not lint */
#include "sendmail.h"
#include <errno.h>
+#include <grp.h>
#if NAMED_BIND
#include <resolv.h>
-
-extern int h_errno;
#endif
#if HASSETUSERCONTEXT
@@ -83,7 +60,23 @@ sendall(e, mode)
int oldverbose = Verbose;
bool somedeliveries = FALSE, expensive = FALSE;
pid_t pid;
- extern void sendenvelope();
+ void sendenvelope __P((ENVELOPE *, int));
+
+ /*
+ ** If this message is to be discarded, don't bother sending
+ ** the message at all.
+ */
+
+ if (bitset(EF_DISCARD, e->e_flags))
+ {
+ if (tTd(13, 1))
+ printf("sendall: discarding id %s\n", e->e_id);
+ e->e_flags |= EF_CLRQUEUE;
+ if (LogLevel > 4)
+ sm_syslog(LOG_INFO, e->e_id, "discarded");
+ markstats(e, NULL, TRUE);
+ return;
+ }
/*
** If we have had global, fatal errors, don't bother sending
@@ -110,7 +103,7 @@ sendall(e, mode)
if (tTd(13, 1))
{
- extern void printenvflags();
+ extern void printenvflags __P((ENVELOPE *));
printf("\n===== SENDALL: mode %c, id %s, e_from ",
mode, e->e_id);
@@ -297,8 +290,8 @@ sendall(e, mode)
if (owner != NULL && otherowners > 0)
{
- extern HDR *copyheader();
- extern ADDRESS *copyqueue();
+ extern HDR *copyheader __P((HDR *));
+ extern ADDRESS *copyqueue __P((ADDRESS *));
extern void dup_queue_file __P((ENVELOPE *, ENVELOPE *, int));
/*
@@ -453,10 +446,12 @@ sendall(e, mode)
case SM_QUEUE:
case SM_DEFER:
+# if HASFLOCK
queueonly:
+# endif
if (e->e_nrcpts > 0)
e->e_flags |= EF_INQUEUE;
- dropenvelope(e, FALSE);
+ dropenvelope(e, splitenv != NULL);
for (ee = splitenv; ee != NULL; ee = ee->e_sibling)
{
if (ee->e_nrcpts > 0)
@@ -473,36 +468,64 @@ sendall(e, mode)
/*
** Since fcntl locking has the interesting semantic that
** the lock is owned by a process, not by an open file
- ** descriptor, we have to unlock this envelope, and
+ ** descriptor, we have to flush this to the queue, and
** then restart from scratch in the child.
*/
- unlockqueue(e);
+ {
+ /* save id for future use */
+ char *qid = e->e_id;
+
+ /* now drop the envelope in the parent */
+ e->e_flags |= EF_INQUEUE;
+ dropenvelope(e, splitenv != NULL);
+
+ /* arrange to reacquire lock after fork */
+ e->e_id = qid;
+ }
+
for (ee = splitenv; ee != NULL; ee = ee->e_sibling)
- unlockqueue(ee);
+ {
+ /* save id for future use */
+ char *qid = ee->e_id;
+
+ /* drop envelope in parent */
+ ee->e_flags |= EF_INQUEUE;
+ dropenvelope(ee, FALSE);
+
+ /* and save qid for reacquisition */
+ ee->e_id = qid;
+ }
# endif /* !HASFLOCK */
pid = fork();
if (pid < 0)
{
+# if HASFLOCK
goto queueonly;
+# else
+ e->e_id = NULL;
+ for (ee = splitenv; ee != NULL; ee = ee->e_sibling)
+ ee->e_id = NULL;
+ return;
+# endif /* HASFLOCK */
}
else if (pid > 0)
{
# if HASFLOCK
/* be sure we leave the temp files to our child */
- /* can't call unlockqueue to avoid unlink of xfp */
- if (e->e_lockfp != NULL)
- (void) xfclose(e->e_lockfp, "sendenvelope lockfp", e->e_id);
- e->e_lockfp = NULL;
-
/* close any random open files in the envelope */
closexscript(e);
if (e->e_dfp != NULL)
(void) xfclose(e->e_dfp, "sendenvelope dfp", e->e_id);
e->e_dfp = NULL;
e->e_flags &= ~EF_HAS_DF;
+
+ /* can't call unlockqueue to avoid unlink of xfp */
+ if (e->e_lockfp != NULL)
+ (void) xfclose(e->e_lockfp, "sendenvelope lockfp", e->e_id);
+ e->e_lockfp = NULL;
# endif
/* make sure the parent doesn't own the envelope */
@@ -524,7 +547,11 @@ sendall(e, mode)
/* prevent parent from waiting if there was an error */
if (pid < 0)
{
+# if HASFLOCK
e->e_flags |= EF_INQUEUE;
+# else
+ e->e_id = NULL;
+# endif /* HASFLOCK */
finis();
}
@@ -551,8 +578,13 @@ sendall(e, mode)
** Now reacquire and run the various queue files.
*/
- for (ee = splitenv; ee != NULL; ee = e->e_sibling)
+ for (ee = splitenv; ee != NULL; ee = ee->e_sibling)
+ {
+ ENVELOPE *sibling = ee->e_sibling;
+
(void) dowork(ee->e_id, FALSE, FALSE, ee);
+ ee->e_sibling = sibling;
+ }
(void) dowork(e->e_id, FALSE, FALSE, e);
finis();
# endif /* !HASFLOCK */
@@ -578,7 +610,7 @@ sendall(e, mode)
void
sendenvelope(e, mode)
register ENVELOPE *e;
- char mode;
+ int mode;
{
register ADDRESS *q;
bool didany;
@@ -830,10 +862,11 @@ deliver(e, firstto)
volatile bool clever = FALSE; /* running user smtp to this mailer */
ADDRESS *volatile tochain = NULL; /* users chain in this mailer call */
int rcode; /* response code */
+ int lmtp_rcode = EX_OK;
char *firstsig; /* signature of firstto */
pid_t pid = -1;
char *volatile curhost;
- register volatile u_short port = 0;
+ register u_short port = 0;
time_t xstart;
bool suidwarn;
bool anyok; /* at least one address was OK */
@@ -844,7 +877,7 @@ deliver(e, firstto)
char tobuf[TOBUFSIZE]; /* text line of to people */
char buf[MAXNAME + 1];
char rpathbuf[MAXNAME + 1]; /* translated return path */
- extern int checkcompat();
+ extern int checkcompat __P((ADDRESS *, ENVELOPE *));
extern void markfailure __P((ENVELOPE *, ADDRESS *, MCI *, int));
errno = 0;
@@ -878,6 +911,18 @@ deliver(e, firstto)
printopenfds(FALSE);
/*
+ ** Clear $&{client_*} macros if this is a bounce message to
+ ** prevent rejection by check_compat ruleset.
+ */
+
+ if (bitset(EF_RESPONSE, e->e_flags))
+ {
+ define(macid("{client_name}", NULL), "", e);
+ define(macid("{client_addr}", NULL), "", e);
+ define(macid("{client_port}", NULL), "", e);
+ }
+
+ /*
** Do initial argv setup.
** Insert the mailer name. Notice that $x expansion is
** NOT done on the mailer name. Then, if the mailer has
@@ -897,7 +942,7 @@ deliver(e, firstto)
p = remotename(p, m, RF_SENDERADDR|RF_CANONICAL, &rcode, e);
if (strlen(p) >= (SIZE_T) sizeof rpathbuf)
{
- p = shortenstring(p, 203);
+ p = shortenstring(p, MAXSHORTSTR);
syserr("remotename: huge return %s", p);
}
snprintf(rpathbuf, sizeof rpathbuf, "%s", p);
@@ -1028,7 +1073,10 @@ deliver(e, firstto)
if (m->m_maxsize != 0 && e->e_msgsize > m->m_maxsize)
{
e->e_flags |= EF_NO_BODY_RETN;
- to->q_status = "5.2.3";
+ if (bitnset(M_LOCALMAILER, to->q_mailer->m_flags))
+ to->q_status = "5.2.3";
+ else
+ to->q_status = "5.3.4";
usrerr("552 Message is too large; %ld bytes max", m->m_maxsize);
markfailure(e, to, NULL, EX_UNAVAILABLE);
giveresponse(EX_UNAVAILABLE, m, NULL, ctladdr, xstart, e);
@@ -1090,13 +1138,26 @@ deliver(e, firstto)
if (strcmp(m->m_mailer, "[FILE]") == 0)
{
- rcode = mailfile(user, ctladdr, SFF_CREAT, e);
+ define('u', user, e); /* to user */
+ p = to->q_home;
+ if (p == NULL && ctladdr != NULL)
+ p = ctladdr->q_home;
+ define('z', p, e); /* user's home */
+ expand(m->m_argv[1], buf, sizeof buf, e);
+ if (strlen(buf) > 0)
+ rcode = mailfile(buf, m, ctladdr, SFF_CREAT, e);
+ else
+ {
+ syserr("empty filename specification for mailer %s",
+ m->m_name);
+ rcode = EX_CONFIG;
+ }
giveresponse(rcode, m, NULL, ctladdr, xstart, e);
+ markfailure(e, to, NULL, rcode);
e->e_nsent++;
if (rcode == EX_OK)
{
to->q_flags |= QSENT;
- markstats(e, to);
if (bitnset(M_LOCALMAILER, m->m_flags) &&
bitset(QPINGONSUCCESS, to->q_flags))
{
@@ -1107,6 +1168,7 @@ deliver(e, firstto)
}
}
to->q_statdate = curtime();
+ markstats(e, to, FALSE);
continue;
}
@@ -1216,7 +1278,7 @@ deliver(e, firstto)
/* make absolutely certain 0, 1, and 2 are in use */
snprintf(wbuf, sizeof wbuf, "%s... openmailer(%s)",
- shortenstring(e->e_to, 203), m->m_name);
+ shortenstring(e->e_to, MAXSHORTSTR), m->m_name);
checkfd012(wbuf);
}
#endif
@@ -1293,7 +1355,6 @@ deliver(e, firstto)
tryhost:
while (*curhost != '\0')
{
- register char *p;
static char hostbuf[MAXNAME + 1];
extern int makeconnection __P((char *, u_short, MCI *, ENVELOPE *));
@@ -1406,6 +1467,24 @@ tryhost:
{
/* flush any expired connections */
(void) mci_scan(NULL);
+ mci = NULL;
+
+#if SMTP
+ if (bitnset(M_LMTP, m->m_flags))
+ {
+ /* try to get a cached connection */
+ mci = mci_get(m->m_name, m);
+ if (mci->mci_host == NULL)
+ mci->mci_host = m->m_name;
+ CurHostName = mci->mci_host;
+ if (mci->mci_state != MCIS_CLOSED)
+ {
+ message("Using cached LMTP connection for %s...",
+ m->m_name);
+ goto do_transfer;
+ }
+ }
+#endif
/* announce the connection to verbose listeners */
if (host == NULL || host[0] == '\0')
@@ -1430,7 +1509,7 @@ tryhost:
if (pipe(mpvect) < 0)
{
syserr("%s... openmailer(%s): pipe (to mailer)",
- shortenstring(e->e_to, 203), m->m_name);
+ shortenstring(e->e_to, MAXSHORTSTR), m->m_name);
if (tTd(11, 1))
printf("openmailer: NULL\n");
rcode = EX_OSERR;
@@ -1442,7 +1521,7 @@ tryhost:
if (mpvect[0] < 3 || mpvect[1] < 3)
{
syserr("%s... openmailer(%s): bogus mpvect %d %d",
- shortenstring(e->e_to, 203), m->m_name,
+ shortenstring(e->e_to, MAXSHORTSTR), m->m_name,
mpvect[0], mpvect[1]);
printopenfds(TRUE);
if (tTd(11, 1))
@@ -1461,12 +1540,13 @@ tryhost:
{
if (e->e_lockfp == NULL)
syserr("%s... openmailer(%s): overlapping mpvect %d %d",
- shortenstring(e->e_to, 203), m->m_name,
- mpvect[0], mpvect[1]);
+ shortenstring(e->e_to, MAXSHORTSTR),
+ m->m_name, mpvect[0], mpvect[1]);
else
syserr("%s... openmailer(%s): overlapping mpvect %d %d, lockfp = %d",
- shortenstring(e->e_to, 203), m->m_name,
- mpvect[0], mpvect[1], fileno(e->e_lockfp));
+ shortenstring(e->e_to, MAXSHORTSTR),
+ m->m_name, mpvect[0], mpvect[1],
+ fileno(e->e_lockfp));
}
#endif
@@ -1477,7 +1557,8 @@ tryhost:
if (pipe(rpvect) < 0)
{
syserr("%s... openmailer(%s): pipe (from mailer)",
- shortenstring(e->e_to, 203), m->m_name);
+ shortenstring(e->e_to, MAXSHORTSTR),
+ m->m_name);
(void) close(mpvect[0]);
(void) close(mpvect[1]);
if (tTd(11, 1))
@@ -1503,16 +1584,14 @@ tryhost:
if (e->e_xfp != NULL)
(void) fflush(e->e_xfp); /* for debugging */
(void) fflush(stdout);
-# ifdef SIGCHLD
(void) setsignal(SIGCHLD, SIG_DFL);
-# endif /* SIGCHLD */
DOFORK(FORK);
/* pid is set by DOFORK */
if (pid < 0)
{
/* failure */
syserr("%s... openmailer(%s): cannot fork",
- shortenstring(e->e_to, 203), m->m_name);
+ shortenstring(e->e_to, MAXSHORTSTR), m->m_name);
(void) close(mpvect[0]);
(void) close(mpvect[1]);
#if SMTP
@@ -1580,15 +1659,42 @@ tryhost:
else if (ctladdr != NULL && ctladdr->q_gid != 0)
{
if (!DontInitGroups)
- (void) initgroups(ctladdr->q_ruser != NULL ?
- ctladdr->q_ruser : ctladdr->q_user,
- ctladdr->q_gid);
+ {
+ char *u = ctladdr->q_ruser;
+
+ if (u == NULL)
+ u = ctladdr->q_user;
+
+ if (initgroups(u, ctladdr->q_gid) == -1 && suidwarn)
+ syserr("openmailer: initgroups(%s, %d) failed",
+ u, ctladdr->q_gid);
+ }
+ else
+ {
+ GIDSET_T gidset[1];
+
+ gidset[0] = ctladdr->q_gid;
+ if (setgroups(1, gidset) == -1 && suidwarn)
+ syserr("openmailer: setgroups() failed");
+ }
new_gid = ctladdr->q_gid;
}
else
{
if (!DontInitGroups)
- (void) initgroups(DefUser, DefGid);
+ {
+ if (initgroups(DefUser, DefGid) == -1 && suidwarn)
+ syserr("openmailer: initgroups(%s, %d) failed",
+ DefUser, DefGid);
+ }
+ else
+ {
+ GIDSET_T gidset[1];
+
+ gidset[0] = DefGid;
+ if (setgroups(1, gidset) == -1 && suidwarn)
+ syserr("openmailer: setgroups() failed");
+ }
if (m->m_gid == 0)
new_gid = DefGid;
else
@@ -1602,13 +1708,13 @@ tryhost:
endpwent();
if (bitnset(M_SPECIFIC_UID, m->m_flags))
new_euid = m->m_uid;
- if (bitset(S_ISUID, stb.st_mode))
+ else if (bitset(S_ISUID, stb.st_mode))
new_ruid = stb.st_uid;
else if (ctladdr != NULL && ctladdr->q_uid != 0)
new_ruid = ctladdr->q_uid;
else if (m->m_uid != 0)
new_ruid = m->m_uid;
- else if (!bitnset(M_SPECIFIC_UID, m->m_flags))
+ else
new_ruid = DefUid;
if (new_euid != NO_UID)
{
@@ -1644,7 +1750,7 @@ tryhost:
/* move into some "safe" directory */
if (m->m_execdir != NULL)
{
- char *p, *q;
+ char *q;
char buf[MAXLINE + 1];
for (p = m->m_execdir; p != NULL; p = q)
@@ -1671,20 +1777,19 @@ tryhost:
if (dup2(rpvect[1], STDOUT_FILENO) < 0)
{
syserr("%s... openmailer(%s): cannot dup pipe %d for stdout",
- shortenstring(e->e_to, 203),
+ shortenstring(e->e_to, MAXSHORTSTR),
m->m_name, rpvect[1]);
_exit(EX_OSERR);
}
(void) close(rpvect[1]);
}
- else if (OpMode == MD_SMTP || OpMode == MD_DAEMON ||
- HoldErrs || DisConnected)
+ else
{
/* put mailer output in transcript */
if (dup2(fileno(e->e_xfp), STDOUT_FILENO) < 0)
{
syserr("%s... openmailer(%s): cannot dup xscript %d for stdout",
- shortenstring(e->e_to, 203),
+ shortenstring(e->e_to, MAXSHORTSTR),
m->m_name, fileno(e->e_xfp));
_exit(EX_OSERR);
}
@@ -1693,7 +1798,8 @@ tryhost:
if (dup2(STDOUT_FILENO, STDERR_FILENO) < 0)
{
syserr("%s... openmailer(%s): cannot dup stdout for stderr",
- shortenstring(e->e_to, 203), m->m_name);
+ shortenstring(e->e_to, MAXSHORTSTR),
+ m->m_name);
_exit(EX_OSERR);
}
@@ -1702,7 +1808,7 @@ tryhost:
if (dup2(mpvect[0], STDIN_FILENO) < 0)
{
syserr("%s... openmailer(%s): cannot dup pipe %d for stdin",
- shortenstring(e->e_to, 203),
+ shortenstring(e->e_to, MAXSHORTSTR),
m->m_name, mpvect[0]);
_exit(EX_OSERR);
}
@@ -1734,10 +1840,21 @@ tryhost:
** Set up return value.
*/
- mci = (MCI *) xalloc(sizeof *mci);
- bzero((char *) mci, sizeof *mci);
+ if (mci == NULL)
+ {
+ mci = (MCI *) xalloc(sizeof *mci);
+ bzero((char *) mci, sizeof *mci);
+ }
mci->mci_mailer = m;
- mci->mci_state = clever ? MCIS_OPENING : MCIS_OPEN;
+ if (clever)
+ {
+ mci->mci_state = MCIS_OPENING;
+ mci_cache(mci);
+ }
+ else
+ {
+ mci->mci_state = MCIS_OPEN;
+ }
mci->mci_pid = pid;
(void) close(mpvect[0]);
mci->mci_out = fdopen(mpvect[1], "w");
@@ -1796,6 +1913,7 @@ tryhost:
}
#endif
+do_transfer:
/* clear out per-message flags from connection structure */
mci->mci_flags &= ~(MCIF_CVT7TO8|MCIF_CVT8TO7);
@@ -1857,6 +1975,7 @@ tryhost:
** Format and send message.
*/
+ mci->mci_contentlen = 0;
putfromline(mci, e);
(*e->e_puthdr)(mci, e->e_header, e);
(*e->e_putbody)(mci, e, NULL);
@@ -1870,7 +1989,6 @@ tryhost:
extern int smtpmailfrom __P((MAILER *, MCI *, ENVELOPE *));
extern int smtprcpt __P((ADDRESS *, MAILER *, MCI *, ENVELOPE *));
extern int smtpdata __P((MAILER *, MCI *, ENVELOPE *));
- extern int smtpgetstat __P((MAILER *, MCI *, ENVELOPE *));
/*
** Send the MAIL FROM: protocol
@@ -1952,14 +2070,13 @@ tryhost:
give_up:
#if SMTP
-# if _FFR_LMTP
if (bitnset(M_LMTP, m->m_flags))
{
+ lmtp_rcode = rcode;
tobuf[0] = '\0';
anyok = FALSE;
}
else
-# endif
#endif
anyok = rcode == EX_OK;
@@ -1970,11 +2087,13 @@ tryhost:
continue;
#if SMTP
-# if _FFR_LMTP
/* if running LMTP, get the status for each address */
if (bitnset(M_LMTP, m->m_flags))
{
- rcode = smtpgetstat(m, mci, e);
+ extern int smtpgetstat __P((MAILER *, MCI *, ENVELOPE *));
+
+ if (lmtp_rcode == EX_OK)
+ rcode = smtpgetstat(m, mci, e);
if (rcode == EX_OK)
{
if (strlen(to->q_paddr) + strlen(tobuf) + 2 >= sizeof tobuf)
@@ -1998,7 +2117,6 @@ tryhost:
}
}
else
-# endif
#endif
{
/* mark bad addresses */
@@ -2034,7 +2152,6 @@ tryhost:
}
#if SMTP
-# if _FFR_LMTP
if (bitnset(M_LMTP, m->m_flags))
{
/*
@@ -2049,13 +2166,12 @@ tryhost:
if (mci != NULL && mci->mci_state == MCIS_ACTIVE)
mci->mci_state = MCIS_OPEN;
}
-# endif
#endif
if (tobuf[0] != '\0')
giveresponse(rcode, m, mci, ctladdr, xstart, e);
if (anyok)
- markstats(e, tochain);
+ markstats(e, tochain, FALSE);
mci_store_persistent(mci);
#if SMTP
@@ -2076,7 +2192,7 @@ tryhost:
/* make absolutely certain 0, 1, and 2 are in use */
snprintf(wbuf, sizeof wbuf, "%s... end of deliver(%s)",
e->e_to == NULL ? "NO-TO-LIST"
- : shortenstring(e->e_to, 203),
+ : shortenstring(e->e_to, MAXSHORTSTR),
m->m_name);
checkfd012(wbuf);
}
@@ -2134,7 +2250,10 @@ markfailure(e, q, mci, rcode)
if (mci != NULL && mci->mci_status != NULL)
{
q->q_status = mci->mci_status;
- q->q_rstatus = mci->mci_rstatus;
+ if (mci->mci_rstatus != NULL)
+ q->q_rstatus = newstr(mci->mci_rstatus);
+ else
+ q->q_rstatus = NULL;
}
else if (e->e_status != NULL)
{
@@ -2337,7 +2456,7 @@ giveresponse(stat, m, mci, ctladdr, xstart, e)
statmsg = buf;
}
}
- else if (i < 0 || i > N_SysEx)
+ else if (i < 0 || i >= N_SysEx)
{
(void) snprintf(buf, sizeof buf, "554 unknown mailer error %d",
stat);
@@ -2383,7 +2502,7 @@ giveresponse(stat, m, mci, ctladdr, xstart, e)
else
{
statmsg = SysExMsg[i];
- if (*statmsg++ == ':')
+ if (*statmsg++ == ':' && errno != 0)
{
(void) snprintf(buf, sizeof buf, "%s: %s",
statmsg, errstring(errno));
@@ -2534,8 +2653,7 @@ logdelivery(m, mci, stat, ctladdr, xstart, e)
}
else if (strcmp(stat, "queued") != 0)
{
- char *p = macvalue('h', e);
-
+ p = macvalue('h', e);
if (p != NULL && p[0] != '\0')
{
snprintf(bp, SPACELEFT(buf, bp), ", relay=%s",
@@ -2652,8 +2770,7 @@ logdelivery(m, mci, stat, ctladdr, xstart, e)
}
else if (strcmp(stat, "queued") != 0)
{
- char *p = macvalue('h', e);
-
+ p = macvalue('h', e);
if (p != NULL && p[0] != '\0')
snprintf(buf, sizeof buf, "relay=%.100s", p);
}
@@ -2696,6 +2813,8 @@ putfromline(mci, e)
if (bitnset(M_NHDR, mci->mci_mailer->m_flags))
return;
+ mci->mci_flags |= MCIF_INHEADER;
+
if (bitnset(M_UGLYUUCP, mci->mci_mailer->m_flags))
{
char *bang;
@@ -2824,6 +2943,7 @@ putbody(mci, e, separator)
/* now do the hard work */
boundaries[0] = NULL;
+ mci->mci_flags |= MCIF_INHEADER;
mime8to7(mci, e->e_header, e, boundaries, M87F_OUTER);
}
# if MIME7TO8
@@ -2843,6 +2963,7 @@ putbody(mci, e, separator)
int padc;
char *buflim;
int pos = 0;
+ size_t eol_len;
char peekbuf[10];
/* we can pass it through unmodified */
@@ -2857,6 +2978,7 @@ putbody(mci, e, separator)
if (mci->mci_mailer->m_linelimit > 0 &&
mci->mci_mailer->m_linelimit < sizeof buf - 1)
buflim = &buf[mci->mci_mailer->m_linelimit - 1];
+ eol_len = strlen(mci->mci_mailer->m_eol);
/* copy temp file to output with mapping */
ostate = OS_HEAD;
@@ -2925,14 +3047,19 @@ putbody(mci, e, separator)
if (padc != EOF)
{
putc(padc, mci->mci_out);
+ mci->mci_contentlen++;
pos++;
}
for (xp = buf; xp < bp; xp++)
+ {
putc(*xp, mci->mci_out);
+ mci->mci_contentlen++;
+ }
if (c == '\n')
{
fputs(mci->mci_mailer->m_eol,
mci->mci_out);
+ mci->mci_contentlen += eol_len;
pos = 0;
}
else
@@ -2957,6 +3084,7 @@ putbody(mci, e, separator)
{
/* got CRLF */
fputs(mci->mci_mailer->m_eol, mci->mci_out);
+ mci->mci_contentlen += eol_len;
if (TrafficLogFile != NULL)
{
fputs(mci->mci_mailer->m_eol,
@@ -2989,7 +3117,9 @@ putch:
c != '\n')
{
putc('!', mci->mci_out);
+ mci->mci_contentlen++;
fputs(mci->mci_mailer->m_eol, mci->mci_out);
+ mci->mci_contentlen += eol_len;
if (TrafficLogFile != NULL)
{
fprintf(TrafficLogFile, "!%s",
@@ -3005,6 +3135,7 @@ putch:
fputs(mci->mci_mailer->m_eol,
TrafficLogFile);
fputs(mci->mci_mailer->m_eol, mci->mci_out);
+ mci->mci_contentlen += eol_len;
pos = 0;
ostate = OS_HEAD;
}
@@ -3013,6 +3144,7 @@ putch:
if (TrafficLogFile != NULL)
putc(c, TrafficLogFile);
putc(c, mci->mci_out);
+ mci->mci_contentlen++;
pos++;
ostate = OS_INLINE;
}
@@ -3029,7 +3161,10 @@ putch:
putc(*xp, TrafficLogFile);
}
for (xp = buf; xp < bp; xp++)
+ {
putc(*xp, mci->mci_out);
+ mci->mci_contentlen++;
+ }
pos += bp - buf;
}
if (pos > 0)
@@ -3037,6 +3172,7 @@ putch:
if (TrafficLogFile != NULL)
fputs(mci->mci_mailer->m_eol, TrafficLogFile);
fputs(mci->mci_mailer->m_eol, mci->mci_out);
+ mci->mci_contentlen += eol_len;
}
}
@@ -3076,6 +3212,8 @@ endofmessage:
**
** Parameters:
** filename -- the name of the file to send to.
+** mailer -- mailer definition for recipient -- if NULL,
+** use FileMailer.
** ctladdr -- the controlling address header -- includes
** the userid/groupid to be when sending.
** sfflags -- flags for opening.
@@ -3089,11 +3227,12 @@ endofmessage:
*/
static jmp_buf CtxMailfileTimeout;
-static void mailfiletimeout();
+static void mailfiletimeout __P((void));
int
-mailfile(filename, ctladdr, sfflags, e)
+mailfile(filename, mailer, ctladdr, sfflags, e)
char *volatile filename;
+ MAILER *volatile mailer;
ADDRESS *ctladdr;
volatile int sfflags;
register ENVELOPE *e;
@@ -3102,6 +3241,7 @@ mailfile(filename, ctladdr, sfflags, e)
register pid_t pid = -1;
volatile int mode = ST_MODE_NOFILE;
bool suidwarn = geteuid() == 0;
+ char *p;
EVENT *ev;
if (tTd(11, 1))
@@ -3110,6 +3250,9 @@ mailfile(filename, ctladdr, sfflags, e)
printaddr(ctladdr, FALSE);
}
+ if (mailer == NULL)
+ mailer = FileMailer;
+
if (e->e_xfp != NULL)
fflush(e->e_xfp);
@@ -3121,6 +3264,19 @@ mailfile(filename, ctladdr, sfflags, e)
if (strcmp(filename, "/dev/null") == 0)
return EX_OK;
+ /* check for 8-bit available */
+ if (bitset(EF_HAS8BIT, e->e_flags) &&
+ bitnset(M_7BITS, mailer->m_flags) &&
+ (bitset(EF_DONT_MIME, e->e_flags) ||
+ !(bitset(MM_MIME8BIT, MimeMode) ||
+ (bitset(EF_IS_MIME, e->e_flags) &&
+ bitset(MM_CVTMIME, MimeMode)))))
+ {
+ usrerr("554 Cannot send 8-bit data to 7-bit destination");
+ e->e_status = "5.6.3";
+ return(EX_DATAERR);
+ }
+
/*
** Fork so we can change permissions here.
** Note that we MUST use fork, not vfork, because of
@@ -3168,7 +3324,9 @@ mailfile(filename, ctladdr, sfflags, e)
mode = FileMode;
oflags |= O_CREAT|O_EXCL;
}
- else if (bitset(0111, stb.st_mode) || stb.st_nlink != 1 ||
+ else if (bitset(S_IXUSR|S_IXGRP|S_IXOTH, stb.st_mode) ||
+ (!bitset(DBS_FILEDELIVERYTOHARDLINK, DontBlameSendmail) &&
+ stb.st_nlink != 1) ||
(SafeFileEnv != NULL && !S_ISREG(stb.st_mode)))
exit(EX_CANTCREAT);
if (mode == ST_MODE_NOFILE)
@@ -3200,7 +3358,12 @@ mailfile(filename, ctladdr, sfflags, e)
/* select a new user to run as */
if (!bitset(SFF_RUNASREALUID, sfflags))
{
- if (bitset(S_ISUID, mode))
+ if (bitnset(M_SPECIFIC_UID, mailer->m_flags))
+ {
+ RealUserName = NULL;
+ RealUid = mailer->m_uid;
+ }
+ else if (bitset(S_ISUID, mode))
{
RealUserName = NULL;
RealUid = stb.st_uid;
@@ -3213,10 +3376,10 @@ mailfile(filename, ctladdr, sfflags, e)
RealUserName = ctladdr->q_user;
RealUid = ctladdr->q_uid;
}
- else if (FileMailer != NULL && FileMailer->m_uid != 0)
+ else if (mailer != NULL && mailer->m_uid != 0)
{
RealUserName = DefUser;
- RealUid = FileMailer->m_uid;
+ RealUid = mailer->m_uid;
}
else
{
@@ -3225,12 +3388,14 @@ mailfile(filename, ctladdr, sfflags, e)
}
/* select a new group to run as */
- if (bitset(S_ISGID, mode))
+ if (bitnset(M_SPECIFIC_UID, mailer->m_flags))
+ RealGid = mailer->m_gid;
+ else if (bitset(S_ISGID, mode))
RealGid = stb.st_gid;
else if (ctladdr != NULL && ctladdr->q_uid != 0)
RealGid = ctladdr->q_gid;
- else if (FileMailer != NULL && FileMailer->m_gid != 0)
- RealGid = FileMailer->m_gid;
+ else if (mailer != NULL && mailer->m_gid != 0)
+ RealGid = mailer->m_gid;
else
RealGid = DefGid;
}
@@ -3246,7 +3411,19 @@ mailfile(filename, ctladdr, sfflags, e)
/* set group id list (needs /etc/group access) */
if (RealUserName != NULL && !DontInitGroups)
- (void) initgroups(RealUserName, RealGid);
+ {
+ if (initgroups(RealUserName, RealGid) == -1 && suidwarn)
+ syserr("mailfile: initgroups(%s, %d) failed",
+ RealUserName, RealGid);
+ }
+ else
+ {
+ GIDSET_T gidset[1];
+
+ gidset[0] = RealGid;
+ if (setgroups(1, gidset) == -1 && suidwarn)
+ syserr("mailfile: setgroups() failed");
+ }
/* if you have a safe environment, go into it */
if (SafeFileEnv != NULL && SafeFileEnv[0] != '\0')
@@ -3274,15 +3451,43 @@ mailfile(filename, ctladdr, sfflags, e)
if (setuid(RealUid) < 0 && suidwarn)
syserr("mailfile: setuid(%ld) failed", (long) RealUid);
- sfflags |= SFF_NOPATHCHECK|SFF_NOLINK;
+ /* move into some "safe" directory */
+ if (mailer->m_execdir != NULL)
+ {
+ char *q;
+ char buf[MAXLINE + 1];
+
+ for (p = mailer->m_execdir; p != NULL; p = q)
+ {
+ q = strchr(p, ':');
+ if (q != NULL)
+ *q = '\0';
+ expand(p, buf, sizeof buf, e);
+ if (q != NULL)
+ *q++ = ':';
+ if (tTd(11, 20))
+ printf("mailfile: trydir %s\n",
+ buf);
+ if (buf[0] != '\0' && chdir(buf) >= 0)
+ break;
+ }
+ }
+
+ sfflags |= SFF_NOPATHCHECK;
+ if (!bitset(DBS_FILEDELIVERYTOSYMLINK, DontBlameSendmail))
+ sfflags |= SFF_NOSLINK;
+ if (!bitset(DBS_FILEDELIVERYTOHARDLINK, DontBlameSendmail))
+ sfflags |= SFF_NOHLINK;
sfflags &= ~SFF_OPENASROOT;
f = safefopen(filename, oflags, FileMode, sfflags);
if (f == NULL)
{
- message("554 cannot open: %s", errstring(errno));
+ message("554 cannot open %s: %s",
+ shortenstring(filename, MAXSHORTSTR),
+ errstring(errno));
exit(EX_CANTCREAT);
}
- if (filechanged(filename, fileno(f), &stb, sfflags))
+ if (filechanged(filename, fileno(f), &stb))
{
message("554 file changed after open");
exit(EX_CANTCREAT);
@@ -3297,11 +3502,36 @@ mailfile(filename, ctladdr, sfflags, e)
clrevent(ev);
bzero(&mcibuf, sizeof mcibuf);
- mcibuf.mci_mailer = FileMailer;
+ mcibuf.mci_mailer = mailer;
mcibuf.mci_out = f;
- if (bitnset(M_7BITS, FileMailer->m_flags))
+ mcibuf.mci_contentlen = 0;
+ if (bitnset(M_7BITS, mailer->m_flags))
mcibuf.mci_flags |= MCIF_7BIT;
+ /* clear out per-message flags from connection structure */
+ mcibuf.mci_flags &= ~(MCIF_CVT7TO8|MCIF_CVT8TO7);
+
+ if (bitset(EF_HAS8BIT, e->e_flags) &&
+ !bitset(EF_DONT_MIME, e->e_flags) &&
+ bitnset(M_7BITS, mailer->m_flags))
+ mcibuf.mci_flags |= MCIF_CVT8TO7;
+
+#if MIME7TO8
+ if (bitnset(M_MAKE8BIT, mailer->m_flags) &&
+ !bitset(MCIF_7BIT, mcibuf.mci_flags) &&
+ (p = hvalue("Content-Transfer-Encoding", e->e_header)) != NULL &&
+ (strcasecmp(p, "quoted-printable") == 0 ||
+ strcasecmp(p, "base64") == 0) &&
+ (p = hvalue("Content-Type", e->e_header)) != NULL)
+ {
+ /* may want to convert 7 -> 8 */
+ /* XXX should really parse it here -- and use a class XXX */
+ if (strncasecmp(p, "text/plain", 10) == 0 &&
+ (p[10] == '\0' || p[10] == ' ' || p[10] == ';'))
+ mcibuf.mci_flags |= MCIF_CVT7TO8;
+ }
+#endif
+
putfromline(&mcibuf, e);
(*e->e_puthdr)(&mcibuf, e->e_header, e);
(*e->e_putbody)(&mcibuf, e, NULL);
@@ -3330,11 +3560,17 @@ mailfile(filename, ctladdr, sfflags, e)
int st;
st = waitfor(pid);
+ if (st == -1)
+ {
+ syserr("mailfile: %s: wait", mailer->m_name);
+ return (EX_SOFTWARE);
+ }
if (WIFEXITED(st))
return (WEXITSTATUS(st));
else
{
- syserr("child died on signal %d", st);
+ syserr("mailfile: %s: child died on signal %d",
+ mailer->m_name, st);
return (EX_UNAVAILABLE);
}
/*NOTREACHED*/
diff --git a/usr.sbin/sendmail/src/domain.c b/contrib/sendmail/src/domain.c
index 2031726ba447..e3a5500b5516 100644
--- a/usr.sbin/sendmail/src/domain.c
+++ b/contrib/sendmail/src/domain.c
@@ -1,44 +1,22 @@
/*
- * Copyright (c) 1986, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1986, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#include "sendmail.h"
#ifndef lint
#if NAMED_BIND
-static char sccsid[] = "@(#)domain.c 8.68 (Berkeley) 8/2/97 (with name server)";
+static char sccsid[] = "@(#)domain.c 8.77 (Berkeley) 6/4/98 (with name server)";
#else
-static char sccsid[] = "@(#)domain.c 8.68 (Berkeley) 8/2/97 (without name server)";
+static char sccsid[] = "@(#)domain.c 8.77 (Berkeley) 6/4/98 (without name server)";
#endif
#endif /* not lint */
@@ -354,7 +332,8 @@ punt:
if (strlen(host) >= (SIZE_T) sizeof MXHostBuf)
{
*rcode = EX_CONFIG;
- syserr("Host name %s too long", shortenstring(host, 203));
+ syserr("Host name %s too long",
+ shortenstring(host, MAXSHORTSTR));
return -1;
}
snprintf(MXHostBuf, sizeof MXHostBuf, "%s", host);
@@ -458,6 +437,7 @@ mxrand(host)
** to generalize it at the moment.
*/
+/* ARGSUSED3 */
char *
bestmx_map_lookup(map, name, av, statp)
MAP *map;
@@ -468,7 +448,10 @@ bestmx_map_lookup(map, name, av, statp)
int nmx;
auto int rcode;
int saveopts = _res.options;
+ int i, len = 0;
+ char *p;
char *mxhosts[MAXMXHOSTS + 1];
+ char buf[MXHOSTBUFSIZE + 1];
_res.options &= ~(RES_DNSRCH|RES_DEFNAMES);
nmx = getmxrr(name, mxhosts, FALSE, &rcode);
@@ -477,8 +460,37 @@ bestmx_map_lookup(map, name, av, statp)
return NULL;
if (bitset(MF_MATCHONLY, map->map_mflags))
return map_rewrite(map, name, strlen(name), NULL);
- else
+ if ((map->map_coldelim == '\0') || (nmx == 1))
return map_rewrite(map, mxhosts[0], strlen(mxhosts[0]), av);
+
+ /*
+ ** We were given a -z flag (return all MXs) and there are multiple
+ ** ones. We need to build them all into a list.
+ */
+ p = buf;
+ for (i = 0; i < nmx; i++)
+ {
+ int slen;
+
+ if (strchr(mxhosts[i], map->map_coldelim) != NULL)
+ {
+ syserr("bestmx_map_lookup: MX host %.64s includes map delimiter character 0x%02X",
+ mxhosts[i], map->map_coldelim);
+ return NULL;
+ }
+ slen = strlen(mxhosts[i]);
+ if (len + slen + 2 > sizeof buf)
+ break;
+ if (i > 0)
+ {
+ *p++ = map->map_coldelim;
+ len++;
+ }
+ strcpy(p, mxhosts[i]);
+ p += slen;
+ len += slen;
+ }
+ return map_rewrite(map, buf, len, av);
}
/*
** DNS_GETCANONNAME -- get the canonical name for named host using DNS
@@ -535,7 +547,7 @@ dns_getcanonname(host, hbsize, trymx, statp)
char *xp;
char nbuf[MAX(MAXPACKET, MAXDNAME*2+2)];
char *searchlist[MAXDNSRCH+2];
- extern char *gethostalias();
+ extern char *gethostalias __P((char *));
if (tTd(8, 2))
printf("dns_getcanonname(%s, trymx=%d)\n", host, trymx);
diff --git a/usr.sbin/sendmail/src/envelope.c b/contrib/sendmail/src/envelope.c
index 3e0fc204020d..092148a2a0ca 100644
--- a/usr.sbin/sendmail/src/envelope.c
+++ b/contrib/sendmail/src/envelope.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)envelope.c 8.105 (Berkeley) 6/24/97";
+static char sccsid[] = "@(#)envelope.c 8.117 (Berkeley) 6/4/98";
#endif /* not lint */
#include "sendmail.h"
@@ -108,7 +86,7 @@ dropenvelope(e, fulldrop)
if (tTd(50, 1))
{
- extern void printenvflags();
+ extern void printenvflags __P((ENVELOPE *));
printf("dropenvelope %lx: id=", (u_long) e);
xputs(e->e_id);
@@ -344,7 +322,7 @@ simpledrop:
{
if (tTd(50, 1))
{
- extern void printenvflags();
+ extern void printenvflags __P((ENVELOPE *));
printf("\n===== Dropping [dq]f%s... queueit=%d, e_flags=",
e->e_id, queueit);
@@ -419,6 +397,7 @@ clearenvelope(e, fullclear)
/* now clear out the data */
STRUCTCOPY(BlankEnvelope, *e);
+ e->e_message = NULL;
if (Verbose)
e->e_sendmode = SM_DELIVER;
bh = BlankEnvelope.e_header;
@@ -457,9 +436,9 @@ initsys(e)
#ifdef TTYNAME
static char ybuf[60]; /* holds tty id */
register char *p;
-#endif /* TTYNAME */
extern char *ttyname();
- extern void settime();
+#endif /* TTYNAME */
+ extern void settime __P((ENVELOPE *));
/*
** Give this envelope a reality.
@@ -766,7 +745,7 @@ setsender(from, e, delimptr, delimchar, internal)
if (bitnset(M_CHECKUDB, e->e_from.q_mailer->m_flags))
{
register char *p;
- extern char *udbsender();
+ extern char *udbsender __P((char *));
p = udbsender(e->e_from.q_user);
if (p != NULL)
@@ -847,7 +826,7 @@ setsender(from, e, delimptr, delimchar, internal)
if (LogLevel > 2)
sm_syslog(LOG_NOTICE, e->e_id,
"cannot prescan from (%s)",
- shortenstring(from, 203));
+ shortenstring(from, MAXSHORTSTR));
finis();
}
(void) rewrite(pvp, 3, 0, e);
@@ -869,7 +848,7 @@ setsender(from, e, delimptr, delimchar, internal)
bitnset(M_CANONICAL, e->e_from.q_mailer->m_flags))
{
char **lastat;
- extern char **copyplist();
+ extern char **copyplist __P((char **, bool));
/* get rid of any pesky angle brackets */
(void) rewrite(pvp, 3, 0, e);
diff --git a/usr.sbin/sendmail/src/err.c b/contrib/sendmail/src/err.c
index f08d9609d8eb..066139557a00 100644
--- a/usr.sbin/sendmail/src/err.c
+++ b/contrib/sendmail/src/err.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)err.c 8.65 (Berkeley) 10/18/97";
+static char sccsid[] = "@(#)err.c 8.74 (Berkeley) 6/4/98";
#endif /* not lint */
# include "sendmail.h"
@@ -273,7 +251,7 @@ usrerr(fmt, va_alist)
** none.
*/
-/*VARARGS2*/
+/*VARARGS1*/
void
#ifdef __STDC__
message(const char *msg, ...)
@@ -325,7 +303,7 @@ message(msg, va_alist)
** none.
*/
-/*VARARGS2*/
+/*VARARGS1*/
void
#ifdef __STDC__
nmessage(const char *msg, ...)
@@ -456,7 +434,7 @@ putoutmsg(msg, holdmsg, heldmsg)
sm_syslog(LOG_CRIT, CurEnv->e_id,
"SYSERR: putoutmsg (%s): error on output channel sending \"%s\": %s",
CurHostName == NULL ? "NO-HOST" : CurHostName,
- shortenstring(msg, 203), errstring(errno));
+ shortenstring(msg, MAXSHORTSTR), errstring(errno));
}
/*
** PUTERRMSG -- like putoutmsg, but does special processing for error messages
@@ -533,7 +511,9 @@ fmtmsg(eb, to, num, eno, fmt, ap)
int spaceleft = sizeof MsgBuf;
/* output the reply code */
- if (isdigit(fmt[0]) && isdigit(fmt[1]) && isdigit(fmt[2]))
+ if (isascii(fmt[0]) && isdigit(fmt[0]) &&
+ isascii(fmt[1]) && isdigit(fmt[1]) &&
+ isascii(fmt[2]) && isdigit(fmt[2]))
{
num = fmt;
fmt += 4;
@@ -561,7 +541,7 @@ fmtmsg(eb, to, num, eno, fmt, ap)
strncmp(num, "251", 3) != 0)
{
(void) snprintf(eb, spaceleft, "%s... ",
- shortenstring(to, 203));
+ shortenstring(to, MAXSHORTSTR));
spaceleft -= strlen(eb);
while (*eb != '\0')
*eb++ &= 0177;
@@ -657,7 +637,10 @@ errstring(errnum)
#if HASSTRERROR
snprintf(bp, SPACELEFT(buf, bp), "%s", strerror(errnum));
#else
- snprintf(bp, SPACELEFT(buf, bp), "%s", sys_errlist[errnum]);
+ if (errnum >= 0 && errnum < sys_nerr)
+ snprintf(bp, SPACELEFT(buf, bp), "%s", sys_errlist[errnum]);
+ else
+ snprintf(bp, SPACELEFT(buf, bp), "Error %d", errnum);
#endif
bp += strlen(bp);
if (CurHostName != NULL)
@@ -675,7 +658,7 @@ errstring(errnum)
bp += strlen(bp);
}
snprintf(bp, SPACELEFT(buf, bp), "%s",
- shortenstring(CurHostName, 203));
+ shortenstring(CurHostName, MAXSHORTSTR));
bp += strlen(buf);
}
if (SmtpPhase != NULL)
@@ -689,14 +672,14 @@ errstring(errnum)
if (CurHostName == NULL)
break;
(void) snprintf(buf, sizeof buf, "Host %s is down",
- shortenstring(CurHostName, 203));
+ shortenstring(CurHostName, MAXSHORTSTR));
return (buf);
case ECONNREFUSED:
if (CurHostName == NULL)
break;
(void) snprintf(buf, sizeof buf, "Connection refused by %s",
- shortenstring(CurHostName, 203));
+ shortenstring(CurHostName, MAXSHORTSTR));
return (buf);
# endif
@@ -765,7 +748,7 @@ errstring(errnum)
if (CurHostName != NULL)
{
snprintf(bp, SPACELEFT(buf, bp), "%s: ",
- shortenstring(CurHostName, 203));
+ shortenstring(CurHostName, MAXSHORTSTR));
bp += strlen(bp);
}
snprintf(bp, SPACELEFT(buf, bp), "%s", dnsmsg);
diff --git a/usr.sbin/sendmail/src/headers.c b/contrib/sendmail/src/headers.c
index 857e9c32da10..a04f59e14f4d 100644
--- a/usr.sbin/sendmail/src/headers.c
+++ b/contrib/sendmail/src/headers.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)headers.c 8.115 (Berkeley) 10/22/97";
+static char sccsid[] = "@(#)headers.c 8.127 (Berkeley) 6/4/98";
#endif /* not lint */
# include <errno.h>
@@ -155,7 +133,6 @@ chompheader(line, def, hdrp, e)
if (strlen(fname) > 100)
return H_EOH;
-#if _FFR_HEADER_RSCHECK
/* check to see if it represents a ruleset call */
if (def)
{
@@ -177,7 +154,6 @@ chompheader(line, def, hdrp, e)
return 0;
}
}
-#endif
/* see if it is a known type */
s = stab(fname, ST_HEADER, ST_FIND);
@@ -206,7 +182,7 @@ chompheader(line, def, hdrp, e)
(void) sendtolist(fvalue, NULLADDR, &e->e_errorqueue, 0, e);
/* if this means "end of header" quit now */
- if (bitset(H_EOH, hi->hi_flags))
+ if (!headeronly && bitset(H_EOH, hi->hi_flags))
return hi->hi_flags;
/*
@@ -278,6 +254,10 @@ chompheader(line, def, hdrp, e)
bcopy((char *) mopts, (char *) h->h_mflags, sizeof mopts);
*hp = h;
h->h_flags = hi->hi_flags;
+
+ /* strip EOH flag if parsing MIME headers */
+ if (headeronly)
+ h->h_flags &= ~H_EOH;
if (def)
h->h_flags |= H_DEFAULT;
if (cond)
@@ -463,7 +443,22 @@ eatheader(e, full)
/* full name of from person */
p = hvalue("full-name", e->e_header);
if (p != NULL)
+ {
+ extern bool rfc822_string __P((char *));
+
+ if (!rfc822_string(p))
+ {
+ extern char *addquotes __P((char *));
+
+ /*
+ ** Quote a full name with special characters
+ ** as a comment so crackaddr() doesn't destroy
+ ** the name portion of the address.
+ */
+ p = addquotes(p);
+ }
define('x', p, e);
+ }
if (tTd(32, 1))
printf("----- collected header -----\n");
@@ -493,7 +488,7 @@ eatheader(e, full)
{
if (bitset(H_FROM, h->h_flags))
{
- extern char *crackaddr();
+ extern char *crackaddr __P((char *));
expand(crackaddr(buf), buf, sizeof buf, e);
}
@@ -517,7 +512,9 @@ eatheader(e, full)
!bitset(H_DEFAULT, h->h_flags) &&
(!bitset(EF_RESENT, e->e_flags) || bitset(H_RESENT, h->h_flags)))
{
+#if 0
int saveflags = e->e_flags;
+#endif
(void) sendtolist(h->h_value, NULLADDR,
&e->e_sendqueue, 0, e);
@@ -1181,11 +1178,19 @@ putheader(mci, hdr, e)
printf("--- putheader, mailer = %s ---\n",
mci->mci_mailer->m_name);
- mci->mci_flags |= MCIF_INHEADER;
+ /*
+ ** If we're in MIME mode, we're not really in the header of the
+ ** message, just the header of one of the parts of the body of
+ ** the message. Therefore MCIF_INHEADER should not be turned on.
+ */
+
+ if (!bitset(MCIF_INMIME, mci->mci_flags))
+ mci->mci_flags |= MCIF_INHEADER;
+
for (h = hdr; h != NULL; h = h->h_link)
{
register char *p = h->h_value;
- extern bool bitintersect();
+ extern bool bitintersect __P((BITMAP, BITMAP));
if (tTd(34, 11))
{
@@ -1483,7 +1488,7 @@ commaize(h, p, oldstyle, mci, e)
else if (e->e_from.q_mailer != NULL &&
bitnset(M_UDBRECIPIENT, e->e_from.q_mailer->m_flags))
{
- extern char *udbsender();
+ extern char *udbsender __P((char *));
char *q;
q = udbsender(name);
diff --git a/usr.sbin/sendmail/src/ldap_map.h b/contrib/sendmail/src/ldap_map.h
index dd85da3073b5..9f6a6796d7a6 100644
--- a/usr.sbin/sendmail/src/ldap_map.h
+++ b/contrib/sendmail/src/ldap_map.h
@@ -1,11 +1,20 @@
/*
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ *
+ */
+
+/*
** Support for LDAP.
**
-** Contributed by Booker C. Bense <bbense@networking.stanford.edu>.
+** Contributed by Booker C. Bense <bbense+ldap@stanford.edu>.
** Please go to him for support -- since I (Eric) don't run LDAP, I
** can't help you at all.
**
-** @(#)ldap_map.h 8.4 (Berkeley) 6/3/97
+** @(#)ldap_map.h 8.9 (Berkeley) 5/19/98
*/
#ifndef _LDAP_MAP_H
diff --git a/usr.sbin/sendmail/src/macro.c b/contrib/sendmail/src/macro.c
index 0f31d11f3b44..c1f9f7bb06cf 100644
--- a/usr.sbin/sendmail/src/macro.c
+++ b/contrib/sendmail/src/macro.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)macro.c 8.18 (Berkeley) 2/1/97";
+static char sccsid[] = "@(#)macro.c 8.25 (Berkeley) 5/19/98";
#endif /* not lint */
# include "sendmail.h"
@@ -72,7 +50,7 @@ expand(s, buf, bufsize, e)
int i;
int skiplev; /* skipping nesting level */
int iflev; /* if nesting level */
- char xbuf[BUFSIZ];
+ char xbuf[MACBUFSIZE];
static int explevel = 0;
if (tTd(35, 24))
@@ -229,6 +207,8 @@ expand(s, buf, bufsize, e)
** $n name of sendmail ("MAILER-DAEMON" on local
** net typically)+
** $o delimiters ("operators") for address tokens+
+** (set via OperatorChars option in V6 or later
+** sendmail.cf files)
** $p my process id in decimal
** $q the string that becomes an address -- this is
** normally used to combine $g & $x.
diff --git a/contrib/sendmail/src/mailq.1 b/contrib/sendmail/src/mailq.1
new file mode 100644
index 000000000000..fa1d0d56f519
--- /dev/null
+++ b/contrib/sendmail/src/mailq.1
@@ -0,0 +1,67 @@
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\" Copyright (c) 1983, 1997 Eric P. Allman. All rights reserved.
+.\" Copyright (c) 1985, 1990, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\" @(#)mailq.1 8.10 (Berkeley) 5/19/98
+.\"
+.Dd May 19, 1998
+.Dt MAILQ 1
+.Os BSD 4
+.Sh NAME
+.Nm mailq
+.Nd print the mail queue
+.Sh SYNOPSIS
+.Nm mailq
+.Op Fl v
+.Sh DESCRIPTION
+.Nm Mailq
+prints a summary of the mail messages queued for future delivery.
+.Pp
+The first line printed for each message
+shows the internal identifier used on this host
+for the message,
+the size of the message in bytes,
+the date and time the message was accepted into the queue,
+and the envelope sender of the message.
+The second line shows the error message that caused this message
+to be retained in the queue;
+it will not be present if the message is being processed
+for the first time.
+The following lines show message recipients,
+one per line.
+.Pp
+.Nm Mailq
+is identical to
+.Dq Li "sendmail -bp" .
+.Pp
+The options are as follows:
+.Bl -tag -width Ds
+.It Fl v
+Print verbose information.
+This adds the priority of the message and
+a single character indicator (``+'' or blank)
+indicating whether a warning message has been sent
+on the first line of the message.
+Additionally, extra lines may be intermixed with the recipients
+indicating the ``controlling user'' information;
+this shows who will own any programs that are executed
+on behalf of this message
+and the name of the alias this command expanded from, if any.
+.El
+.Pp
+The
+.Nm mailq
+utility exits 0 on success, and >0 if an error occurs.
+.Sh SEE ALSO
+.Xr sendmail 8
+.Sh HISTORY
+The
+.Nm mailq
+command appeared in
+.Bx 4.0 .
diff --git a/contrib/sendmail/src/mailstats.h b/contrib/sendmail/src/mailstats.h
new file mode 100644
index 000000000000..2121e149587e
--- /dev/null
+++ b/contrib/sendmail/src/mailstats.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983 Eric P. Allman. All rights reserved.
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ *
+ *
+ * @(#)mailstats.h 8.8 (Berkeley) 5/19/98
+ */
+
+#define STAT_VERSION 2
+#define STAT_MAGIC 0x1B1DE
+
+/*
+** Statistics structure.
+*/
+
+struct statistics
+{
+ int stat_magic; /* magic number */
+ int stat_version; /* stat file version */
+ time_t stat_itime; /* file initialization time */
+ short stat_size; /* size of this structure */
+ long stat_nf[MAXMAILERS]; /* # msgs from each mailer */
+ long stat_bf[MAXMAILERS]; /* kbytes from each mailer */
+ long stat_nt[MAXMAILERS]; /* # msgs to each mailer */
+ long stat_bt[MAXMAILERS]; /* kbytes to each mailer */
+ long stat_nr[MAXMAILERS]; /* # rejects by each mailer */
+ long stat_nd[MAXMAILERS]; /* # discards by each mailer */
+};
diff --git a/usr.sbin/sendmail/src/main.c b/contrib/sendmail/src/main.c
index c496adb78eed..f014d83c359f 100644
--- a/usr.sbin/sendmail/src/main.c
+++ b/contrib/sendmail/src/main.c
@@ -1,51 +1,32 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
static char copyright[] =
-"@(#) Copyright (c) 1988, 1993\n\
+"@(#) Copyright (c) 1998 Sendmail, Inc. All rights reserved.\n\
+ Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.\n\
+ Copyright (c) 1988, 1993\n\
The Regents of the University of California. All rights reserved.\n";
#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)main.c 8.258 (Berkeley) 10/20/97";
+static char sccsid[] = "@(#)main.c 8.302 (Berkeley) 6/4/98";
#endif /* not lint */
#define _DEFINE
#include "sendmail.h"
#include <arpa/inet.h>
+#include <grp.h>
#if NAMED_BIND
#include <resolv.h>
#endif
@@ -74,6 +55,7 @@ static char sccsid[] = "@(#)main.c 8.258 (Berkeley) 10/20/97";
** (11/88 - 9/89).
** UCB/Mammoth Project (10/89 - 7/95).
** InReference, Inc. (8/95 - 1/97).
+** Sendmail, Inc. (1/98 - present).
** The support of the my employers is gratefully acknowledged.
** Few of them (Britton-Lee in particular) have had
** anything to gain from my involvement in this project.
@@ -95,7 +77,7 @@ int MissingFds = 0; /* bit map of fds missing on startup */
GIDSET_T InitialGidSet[NGROUPS_MAX];
#endif
-static void obsolete();
+static void obsolete __P((char **));
extern void printmailer __P((MAILER *));
extern void tTflag __P((char *));
@@ -106,7 +88,7 @@ ERROR %%%% Cannot have DAEMON mode without SMTP %%%% ERROR
ERROR %%%% Cannot have SMTP mode without QUEUE %%%% ERROR
#endif /* DAEMON && !SMTP */
-#define MAXCONFIGLEVEL 7 /* highest config version level known */
+#define MAXCONFIGLEVEL 8 /* highest config version level known */
int
main(argc, argv, envp)
@@ -129,20 +111,22 @@ main(argc, argv, envp)
static bool reenter = FALSE;
struct passwd *pw;
struct hostent *hp;
- bool nullserver = FALSE;
+ char *nullserver = NULL;
+ bool forged;
char jbuf[MAXHOSTNAMELEN]; /* holds MyHostName */
static char rnamebuf[MAXNAME]; /* holds RealUserName */
char *emptyenviron[1];
+ QUEUE_CHAR *new;
extern int DtableSize;
extern int optind;
extern int opterr;
extern char *optarg;
extern char **environ;
- extern time_t convtime();
+ extern time_t convtime __P((char *, char));
extern SIGFUNC_DECL intsig __P((int));
- extern struct hostent *myhostname();
- extern char *getauthinfo();
- extern char *getcfname();
+ extern struct hostent *myhostname __P((char *, int));
+ extern char *getauthinfo __P((int, bool *));
+ extern char *getcfname __P((void));
extern SIGFUNC_DECL sigusr1 __P((int));
extern SIGFUNC_DECL sighup __P((int));
extern void initmacros __P((ENVELOPE *));
@@ -159,6 +143,9 @@ main(argc, argv, envp)
extern void printqueue __P((void));
extern void sendtoargv __P((char **, ENVELOPE *));
extern void resetlimits __P((void));
+#ifndef HASUNSETENV
+ extern void unsetenv __P((char *));
+#endif
/*
** Check to see if we reentered.
@@ -250,6 +237,9 @@ main(argc, argv, envp)
setsignal(SIGUSR1, sigusr1);
#endif
+ /* initialize for setproctitle */
+ initsetproctitle(argc, argv, envp);
+
/* Handle any non-getoptable constructions. */
obsolete(argv);
@@ -311,17 +301,38 @@ main(argc, argv, envp)
(void) snprintf(rnamebuf, sizeof rnamebuf, "Unknown UID %d", RealUid);
RealUserName = rnamebuf;
- /* if running non-setuid binary, pretend we are the RunAsUid */
- if (geteuid() == RealUid)
+ if (tTd(0, 101))
+ {
+ printf("Version %s\n", Version);
+ endpwent();
+ setuid(RealUid);
+ exit(EX_OK);
+ }
+
+ /*
+ ** if running non-setuid binary as non-root, pretend
+ ** we are the RunAsUid
+ */
+ if (RealUid != 0 && geteuid() == RealUid)
{
if (tTd(47, 1))
printf("Non-setuid binary: RunAsUid = RealUid = %d\n",
- RealUid);
+ (int)RealUid);
RunAsUid = RealUid;
}
- if (getegid() == RealGid)
+ else if (geteuid() != 0)
+ RunAsUid = geteuid();
+
+ if (RealUid != 0 && getegid() == RealGid)
RunAsGid = RealGid;
+ if (tTd(47, 5))
+ {
+ printf("main: e/ruid = %d/%d e/rgid = %d/%d\n",
+ (int)geteuid(), (int)getuid(), (int)getegid(), (int)getgid());
+ printf("main: RunAsUser = %d:%d\n", (int)RunAsUid, (int)RunAsGid);
+ }
+
/* save command line arguments */
i = 0;
for (av = argv; *av != NULL; )
@@ -402,14 +413,26 @@ main(argc, argv, envp)
InChannel = stdin;
OutChannel = stdout;
- /* initialize for setproctitle */
- initsetproctitle(argc, argv, envp);
-
/* clear sendmail's environment */
ExternalEnviron = environ;
emptyenviron[0] = NULL;
environ = emptyenviron;
+ /*
+ ** restore any original TZ setting until TimeZoneSpec has been
+ ** determined - or early log messages may get bogus time stamps
+ */
+ if ((p = getextenv("TZ")) != NULL)
+ {
+ char *tz;
+ int tzlen;
+
+ tzlen = strlen(p) + 4;
+ tz = xalloc(tzlen);
+ snprintf(tz, tzlen, "TZ=%s", p);
+ putenv(tz);
+ }
+
/* prime the child environment */
setuserenv("AGENT", "sendmail");
@@ -504,8 +527,6 @@ main(argc, argv, envp)
#if NETINET
if (hp->h_addrtype == AF_INET && hp->h_length == INADDRSZ)
{
- register int i;
-
for (i = 0; hp->h_addr_list[i] != NULL; i++)
{
char ipbuf[103];
@@ -523,6 +544,10 @@ main(argc, argv, envp)
/* current time */
define('b', arpadate((char *) NULL), CurEnv);
+ QueueLimitRecipient = (QUEUE_CHAR *) NULL;
+ QueueLimitSender = (QUEUE_CHAR *) NULL;
+ QueueLimitId = (QUEUE_CHAR *) NULL;
+
/*
** Crack argv.
*/
@@ -690,15 +715,27 @@ main(argc, argv, envp)
switch (optarg[0])
{
case 'I':
- QueueLimitId = newstr(&optarg[1]);
+ if ((new = (QUEUE_CHAR *)malloc(sizeof(QUEUE_CHAR))) == NULL)
+ syserr("!Out of memory!!");
+ new->queue_match = newstr(&optarg[1]);
+ new->queue_next = QueueLimitId;
+ QueueLimitId = new;
break;
case 'R':
- QueueLimitRecipient = newstr(&optarg[1]);
+ if ((new = (QUEUE_CHAR *)malloc(sizeof(QUEUE_CHAR))) == NULL)
+ syserr("!Out of memory!!");
+ new->queue_match = newstr(&optarg[1]);
+ new->queue_next = QueueLimitRecipient;
+ QueueLimitRecipient = new;
break;
case 'S':
- QueueLimitSender = newstr(&optarg[1]);
+ if ((new = (QUEUE_CHAR *)malloc(sizeof(QUEUE_CHAR))) == NULL)
+ syserr("!Out of memory!!");
+ new->queue_match = newstr(&optarg[1]);
+ new->queue_next = QueueLimitSender;
+ QueueLimitSender = new;
break;
default:
@@ -850,7 +887,7 @@ main(argc, argv, envp)
** Find our real host name for future logging.
*/
- p = getauthinfo(STDIN_FILENO);
+ p = getauthinfo(STDIN_FILENO, &forged);
define('_', p, CurEnv);
/* suppress error printing if errors mailed back or whatever */
@@ -934,14 +971,15 @@ main(argc, argv, envp)
}
/* check for permissions */
- if ((OpMode == MD_DAEMON || OpMode == MD_PURGESTAT) && RealUid != 0)
+ if ((OpMode == MD_DAEMON || OpMode == MD_FGDAEMON ||
+ OpMode == MD_PURGESTAT) && RealUid != 0)
{
if (LogLevel > 1)
sm_syslog(LOG_ALERT, NOQID,
"user %d attempted to %s",
RealUid,
- OpMode == MD_DAEMON ? "run daemon"
- : "purge host status");
+ OpMode != MD_PURGESTAT ? "run daemon"
+ : "purge host status");
usrerr("Permission denied");
exit(EX_USAGE);
}
@@ -954,8 +992,18 @@ main(argc, argv, envp)
case MD_TEST:
/* don't have persistent host status in test mode */
HostStatDir = NULL;
- Verbose = 2;
+ if (Verbose == 0)
+ Verbose = 2;
+ CurEnv->e_errormode = EM_PRINT;
+ HoldErrs = FALSE;
+ break;
+
+ case MD_VERIFY:
CurEnv->e_errormode = EM_PRINT;
+ HoldErrs = FALSE;
+ /* arrange to exit cleanly on hangup signal */
+ if (setsignal(SIGHUP, SIG_IGN) == (sigfunc_t) SIG_DFL)
+ setsignal(SIGHUP, intsig);
break;
case MD_FGDAEMON:
@@ -983,6 +1031,7 @@ main(argc, argv, envp)
case MD_INITALIAS:
Verbose = 2;
CurEnv->e_errormode = EM_PRINT;
+ HoldErrs = FALSE;
/* fall through... */
case MD_PRINT:
@@ -997,9 +1046,32 @@ main(argc, argv, envp)
break;
}
- /* full names can't have newlines */
- if (FullName != NULL && strchr(FullName, '\n') != NULL)
- FullName = newstr(denlstring(FullName, TRUE, TRUE));
+ /* special considerations for FullName */
+ if (FullName != NULL)
+ {
+ char *full = NULL;
+ extern bool rfc822_string __P((char *));
+
+ /* full names can't have newlines */
+ if (strchr(FullName, '\n') != NULL)
+ {
+ FullName = full = newstr(denlstring(FullName, TRUE, TRUE));
+ }
+ /* check for characters that may have to be quoted */
+ if (!rfc822_string(FullName))
+ {
+ extern char *addquotes __P((char *));
+
+ /*
+ ** Quote a full name with special characters
+ ** as a comment so crackaddr() doesn't destroy
+ ** the name portion of the address.
+ */
+ FullName = addquotes(FullName);
+ if (full != NULL)
+ free(full);
+ }
+ }
/* do heuristic mode adjustment */
if (Verbose)
@@ -1011,6 +1083,13 @@ main(argc, argv, envp)
setoption('d', "", TRUE, FALSE, CurEnv);
}
+ /* check for out of date configuration level */
+ if (ConfigLevel < MAXCONFIGLEVEL)
+ {
+ message("Warning: .cf file is out of date: sendmail %s supports version %d, .cf file is version %d",
+ Version, MAXCONFIGLEVEL, ConfigLevel);
+ }
+
if (ConfigLevel < 3)
{
UseErrorsTo = TRUE;
@@ -1216,9 +1295,6 @@ main(argc, argv, envp)
exit(ExitStat);
case MD_SMTP:
- nullserver = FALSE;
- /* fall through... */
-
case MD_DAEMON:
/* reset DSN parameters */
DefaultNotify = QPINGONFAILURE|QPINGONDELAY;
@@ -1279,7 +1355,7 @@ main(argc, argv, envp)
{
extern void testmodeline __P((char *, ENVELOPE *));
- if (Verbose)
+ if (Verbose == 2)
printf("> ");
(void) fflush(stdout);
if (fgets(buf, sizeof buf, stdin) == NULL)
@@ -1287,7 +1363,7 @@ main(argc, argv, envp)
p = strchr(buf, '\n');
if (p != NULL)
*p = '\0';
- if (!Verbose)
+ if (Verbose < 2)
printf("> %s\n", buf);
testmodeline(buf, CurEnv);
}
@@ -1326,7 +1402,7 @@ main(argc, argv, envp)
if (i < 0)
syserr("daemon: cannot fork");
if (i != 0)
- exit(0);
+ exit(EX_OK);
/* disconnect from our controlling tty */
disconnect(2, CurEnv);
@@ -1379,13 +1455,8 @@ main(argc, argv, envp)
** Get authentication data
*/
- p = getauthinfo(fileno(InChannel));
+ p = getauthinfo(fileno(InChannel), &forged);
define('_', p, &BlankEnvelope);
-
- /* validate the connection */
- HoldErrs = TRUE;
- nullserver = !validate_connection(&RealHostAddr, RealHostName, CurEnv);
- HoldErrs = FALSE;
#endif /* DAEMON */
}
@@ -1398,13 +1469,24 @@ main(argc, argv, envp)
if (OpMode == MD_SMTP || OpMode == MD_DAEMON)
{
char pbuf[20];
- extern void smtp __P((bool, ENVELOPE *));
+ extern void smtp __P((char *, ENVELOPE *));
/*
** Save some macros for check_* rulesets.
*/
- define(macid("{client_name}", NULL), RealHostName, &BlankEnvelope);
+ if (forged)
+ {
+ char ipbuf[103];
+
+ snprintf(ipbuf, sizeof ipbuf, "[%.100s]",
+ inet_ntoa(RealHostAddr.sin.sin_addr));
+
+ define(macid("{client_name}", NULL),
+ newstr(ipbuf), &BlankEnvelope);
+ }
+ else
+ define(macid("{client_name}", NULL), RealHostName, &BlankEnvelope);
define(macid("{client_addr}", NULL),
newstr(anynet_ntoa(&RealHostAddr)), &BlankEnvelope);
if (RealHostAddr.sa.sa_family == AF_INET)
@@ -1413,6 +1495,14 @@ main(argc, argv, envp)
snprintf(pbuf, sizeof pbuf, "0");
define(macid("{client_port}", NULL), newstr(pbuf), &BlankEnvelope);
+ if (OpMode == MD_DAEMON)
+ {
+ /* validate the connection */
+ HoldErrs = TRUE;
+ nullserver = validate_connection(&RealHostAddr,
+ RealHostName, CurEnv);
+ HoldErrs = FALSE;
+ }
smtp(nullserver, CurEnv);
}
# endif /* SMTP */
@@ -1421,9 +1511,7 @@ main(argc, argv, envp)
if (OpMode == MD_VERIFY)
{
CurEnv->e_sendmode = SM_VERIFY;
- CurEnv->e_errormode = EM_PRINT;
PostMasterCopy = NULL;
- HoldErrs = FALSE;
}
else
{
@@ -1464,6 +1552,21 @@ main(argc, argv, envp)
if (Errors > 0 && ExitStat == EX_OK)
ExitStat = EX_USAGE;
+#if _FFR_FIX_DASHT
+ /*
+ ** If using -t, force not sending to argv recipients, even
+ ** if they are mentioned in the headers.
+ */
+
+ if (GrabTo)
+ {
+ ADDRESS *q;
+
+ for (q = CurEnv->e_sendqueue; q != NULL; q = q->q_next)
+ q->q_flags |= QDONTSEND;
+ }
+#endif
+
/*
** Read the input mail.
*/
@@ -1504,6 +1607,7 @@ main(argc, argv, envp)
}
CurEnv->e_to = NULL;
CurrentLA = getla();
+ GrabTo = FALSE;
sendall(CurEnv, SM_DEFAULT);
/*
@@ -1517,6 +1621,7 @@ main(argc, argv, envp)
}
+/* ARGSUSED */
SIGFUNC_DECL
intindebug(sig)
int sig;
@@ -1544,7 +1649,7 @@ finis()
{
if (tTd(2, 1))
{
- extern void printenvflags();
+ extern void printenvflags __P((ENVELOPE *));
printf("\n====finis: stat %d e_id=%s e_flags=",
ExitStat,
@@ -1605,6 +1710,7 @@ finis()
** Unlocks the current job.
*/
+/* ARGSUSED */
SIGFUNC_DECL
intsig(sig)
int sig;
@@ -1752,7 +1858,10 @@ disconnect(droplev, e)
(void) fclose(InChannel);
InChannel = stdin;
}
- (void) freopen("/dev/null", "r", stdin);
+ if (freopen("/dev/null", "r", stdin) == NULL)
+ sm_syslog(LOG_ERR, e->e_id,
+ "disconnect: freopen(\"/dev/null\") failed: %s",
+ errstring(errno));
/* output to the transcript */
if (OutChannel != stdout)
@@ -1763,9 +1872,21 @@ disconnect(droplev, e)
if (droplev > 0)
{
if (e->e_xfp == NULL)
+ {
fd = open("/dev/null", O_WRONLY, 0666);
+ if (fd == -1)
+ sm_syslog(LOG_ERR, e->e_id,
+ "disconnect: open(\"/dev/null\") failed: %s",
+ errstring(errno));
+ }
else
+ {
fd = fileno(e->e_xfp);
+ if (fd == -1)
+ sm_syslog(LOG_ERR, e->e_id,
+ "disconnect: fileno(e->e_xfp) failed: %s",
+ errstring(errno));
+ }
(void) fflush(stdout);
dup2(fd, STDOUT_FILENO);
dup2(fd, STDERR_FILENO);
@@ -1876,7 +1997,7 @@ auth_warning(e, msg, va_alist)
{
register char *p;
static char hostbuf[48];
- extern struct hostent *myhostname();
+ extern struct hostent *myhostname __P((char *, int));
if (hostbuf[0] == '\0')
(void) myhostname(hostbuf, sizeof hostbuf);
@@ -2017,6 +2138,7 @@ dumpstate(when)
}
+/* ARGSUSED */
SIGFUNC_DECL
sigusr1(sig)
int sig;
@@ -2026,6 +2148,7 @@ sigusr1(sig)
}
+/* ARGSUSED */
SIGFUNC_DECL
sighup(sig)
int sig;
@@ -2069,13 +2192,11 @@ drop_privileges(to_real_uid)
bool to_real_uid;
{
int rval = EX_OK;
-#ifdef NGROUPS_MAX
- GIDSET_T emptygidset[NGROUPS_MAX];
-#endif
+ GIDSET_T emptygidset[1];
if (tTd(47, 1))
printf("drop_privileges(%d): Real[UG]id=%d:%d, RunAs[UG]id=%d:%d\n",
- to_real_uid, RealUid, RealGid, RunAsUid, RunAsGid);
+ (int)to_real_uid, (int)RealUid, (int)RealGid, (int)RunAsUid, (int)RunAsGid);
if (to_real_uid)
{
@@ -2087,17 +2208,22 @@ drop_privileges(to_real_uid)
/* make sure no one can grab open descriptors for secret files */
endpwent();
-#ifdef NGROUPS_MAX
/* reset group permissions; these can be set later */
emptygidset[0] = (to_real_uid || RunAsGid != 0) ? RunAsGid : getegid();
- (void) setgroups(1, emptygidset);
-#endif
+ if (setgroups(1, emptygidset) == -1 && geteuid() == 0)
+ rval = EX_OSERR;
/* reset primary group and user id */
if ((to_real_uid || RunAsGid != 0) && setgid(RunAsGid) < 0)
rval = EX_OSERR;
if ((to_real_uid || RunAsUid != 0) && setuid(RunAsUid) < 0)
rval = EX_OSERR;
+ if (tTd(47, 5))
+ {
+ printf("drop_privileges: e/ruid = %d/%d e/rgid = %d/%d\n",
+ (int)geteuid(), (int)getuid(), (int)getegid(), (int)getgid());
+ printf("drop_privileges: RunAsUser = %d:%d\n", (int)RunAsUid, (int)RunAsGid);
+ }
return rval;
}
/*
@@ -2387,13 +2513,14 @@ testmodeline(line, e)
else if (strcasecmp(&line[1], "map") == 0)
{
auto int rcode = EX_OK;
+ char *av[2];
if (*p == '\0')
{
printf("Usage: /map mapname key\n");
return;
}
- for (q = p; *q != '\0' && !isspace(*q); q++)
+ for (q = p; *q != '\0' && !(isascii(*q) && isspace(*q)); q++)
continue;
if (*q == '\0')
{
@@ -2413,8 +2540,10 @@ testmodeline(line, e)
return;
}
printf("map_lookup: %s (%s) ", p, q);
+ av[0] = q;
+ av[1] = NULL;
p = (*map->s_map.map_class->map_lookup)
- (&map->s_map, q, NULL, &rcode);
+ (&map->s_map, q, av, &rcode);
if (p == NULL)
printf("no match (%d)\n", rcode);
else
@@ -2542,8 +2671,8 @@ testmodeline(line, e)
while (*p != '\0')
{
int stat;
- int rs = strtorwset(p, NULL, ST_FIND);
+ rs = strtorwset(p, NULL, ST_FIND);
if (rs < 0)
{
printf("Undefined ruleset %s\n", p);
diff --git a/contrib/sendmail/src/makesendmail b/contrib/sendmail/src/makesendmail
new file mode 100755
index 000000000000..ab8a49d78cac
--- /dev/null
+++ b/contrib/sendmail/src/makesendmail
@@ -0,0 +1,513 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1993, 1996-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)Build 8.93 (Berkeley) 6/24/98
+#
+
+#
+# A quick-and-dirty script to compile sendmail and related programs
+# in the presence of multiple architectures. To use, just use
+# "sh Build".
+#
+
+trap "rm -f $obj/.settings$$; exit" 1 2 3 15
+
+cflag=""
+mflag=""
+sflag=""
+makeargs=""
+libdirs=""
+incdirs=""
+libsrch=""
+siteconfig=""
+EX_USAGE=64
+EX_NOINPUT=66
+EX_UNAVAILABLE=69
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -c) # clean out existing $obj tree
+ cflag=1
+ shift
+ ;;
+
+ -m) # show Makefile name only
+ mflag=1
+ shift
+ ;;
+
+ -E*) # environment variables to pass into Build
+ arg=`echo $1 | sed 's/^-E//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ -z "$arg" ]
+ then
+ echo "Empty -E flag" >&2
+ exit $EX_USAGE
+ else
+ case $arg
+ in
+ *=*) # check format
+ eval $arg
+ export `echo $arg | sed 's;=.*;;'`
+ ;;
+ *) # bad format
+ echo "Bad format for -E argument ($arg)" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ shift
+ fi
+ ;;
+
+ -L*) # set up LIBDIRS
+ libdirs="$libdirs $1"
+ shift
+ ;;
+
+ -I*) # set up INCDIRS
+ incdirs="$incdirs $1"
+ shift
+ ;;
+
+ -f*) # select site config file
+ arg=`echo $1 | sed 's/^-f//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ "$siteconfig" ]
+ then
+ echo "Only one -f flag allowed" >&2
+ exit $EX_USAGE
+ else
+ siteconfig=$arg
+ if [ -z "$siteconfig" ]
+ then
+ echo "Missing argument for -f flag" >&2
+ exit $EX_USAGE
+ elif [ ! -f "$siteconfig" ]
+ then
+ echo "${siteconfig}: File not found"
+ exit $EX_NOINPUT
+ else
+ shift # move past argument
+ fi
+ fi
+ ;;
+
+ -S) # skip auto-configure
+ sflag="-s"
+ shift
+ ;;
+
+ *) # pass argument to make
+ makeargs="$makeargs \"$1\""
+ shift
+ ;;
+ esac
+done
+
+#
+# Do heuristic guesses !ONLY! for machines that do not have uname
+#
+if [ -d /NextApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
+then
+ # probably a NeXT box
+ arch=`hostinfo | sed -n 's/.*Processor type: \([^ ]*\).*/\1/p'`
+ os=NeXT
+ rel=`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`
+elif [ -f /usr/sony/bin/machine -a -f /etc/osversion ]
+then
+ # probably a Sony NEWS 4.x
+ os=NEWS-OS
+ rel=`awk '{ print $3}' /etc/osversion`
+ arch=`/usr/sony/bin/machine`
+elif [ -d /usr/omron -a -f /bin/luna ]
+then
+ # probably a Omron LUNA
+ os=LUNA
+ if [ -f /bin/luna1 ] && /bin/luna1
+ then
+ rel=unios-b
+ arch=luna1
+ elif [ -f /bin/luna2 ] && /bin/luna2
+ then
+ rel=Mach
+ arch=luna2
+ elif [ -f /bin/luna88k ] && /bin/luna88k
+ then
+ rel=Mach
+ arch=luna88k
+ fi
+elif [ -d /usr/apollo -a -d \`node_data ]
+then
+ # probably a Apollo/DOMAIN
+ os=DomainOS
+ arch=$ISP
+ rel=`/usr/apollo/bin/bldt | grep Domain | awk '{ print $4 }' | sed -e 's/,//g'`
+fi
+
+if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
+then
+ arch=`uname -m | sed -e 's/ //g'`
+ os=`uname -s | sed -e 's/\//-/g' -e 's/ //g'`
+ rel=`uname -r | sed -e 's/(/-/g' -e 's/)//g'`
+fi
+
+#
+# Tweak the values we have already got. PLEASE LIMIT THESE to
+# tweaks that are absolutely necessary because your system uname
+# routine doesn't return something sufficiently unique. Don't do
+# it just because you don't like the name that is returned. You
+# can combine the architecture name with the os name to create a
+# unique Makefile name.
+#
+
+# tweak machine architecture
+case $arch
+in
+ sun4*) arch=sun4;;
+
+ 9000/*) arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
+
+ DS/907000) arch=ds90;;
+
+ NILE*) arch=NILE
+ os=`uname -v`;;
+esac
+
+# tweak operating system type and release
+node=`uname -n | sed -e 's/\//-/g' -e 's/ //g'`
+if [ "$os" = "$node" -a "$arch" = "i386" -a "$rel" = 3.2 -a "`uname -v`" = 2 ]
+then
+ # old versions of SCO UNIX set uname -s the same as uname -n
+ os=SCO_SV
+fi
+if [ "$rel" = 4.0 ]
+then
+ case $arch in
+ 3[34]??|3[34]??,*)
+ if [ -d /usr/sadm/sysadm/add-ons/WIN-TCP ]
+ then
+ os=NCR.MP-RAS.2.x
+ elif [ -d /usr/sadm/sysadm/add-ons/inet ]
+ then
+ os=NCR.MP-RAS.3.x
+ fi
+ ;;
+ esac
+fi
+
+case $os
+in
+ DYNIX-ptx) os=PTX;;
+ Paragon*) os=Paragon;;
+ HP-UX) rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
+ AIX) rela=$rel
+ rel=`uname -v`
+ case $rel in
+ 2) arch=""
+ ;;
+ 4) if [ "$rela" = "3" ]
+ then
+ arch=$rela
+ fi
+ ;;
+ esac
+ rel=$rel.$rela
+ ;;
+ BSD-386) os=BSD-OS;;
+ SCO_SV) os=SCO; rel=`uname -X | sed -n 's/Release = 3.2v//p'`;;
+ UNIX_System_V) if [ "$arch" = "ds90" ]
+ then
+ os="UXPDS"
+ rel=`uname -v | sed -e 's/\(V.*\)L.*/\1/'`
+ fi;;
+ SINIX-?) os=SINIX;;
+ DomainOS) case $rel in
+ 10.4*) rel=10.4;;
+ esac
+ ;;
+esac
+
+# get "base part" of operating system release
+rroot=`echo $rel | sed -e 's/\.[^.]*$//'`
+rbase=`echo $rel | sed -e 's/\..*//'`
+if [ "$rroot" = "$rbase" ]
+then
+ rroot=$rel
+fi
+
+# heuristic tweaks to clean up names -- PLEASE LIMIT THESE!
+if [ "$os" = "unix" ]
+then
+ # might be Altos System V
+ case $rel
+ in
+ 5.3*) os=Altos;;
+ esac
+elif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
+then
+ # might be a DYNIX/ptx 2.x system, which has a broken uname
+ if strings /lib/cpp | grep _SEQUENT_ > /dev/null
+ then
+ os=PTX
+ fi
+elif [ -d /usr/nec ]
+then
+ # NEC machine -- what is it running?
+ if [ "$os" = "UNIX_System_V" ]
+ then
+ os=EWS-UX_V
+ elif [ "$os" = "UNIX_SV" ]
+ then
+ os=UX4800
+ fi
+elif [ "$arch" = "mips" ]
+then
+ case $rel
+ in
+ 4_*)
+ if [ `uname -v` = "UMIPS" ]
+ then
+ os=RISCos
+ fi;;
+ esac
+fi
+
+# see if there is a "user suffix" specified
+if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
+then
+ sfx=""
+else
+ sfx=".${SENDMAIL_SUFFIX}"
+fi
+
+echo "Configuration: os=$os, rel=$rel, rbase=$rbase, rroot=$rroot, arch=$arch, sfx=$sfx"
+
+
+SMROOT=${SMROOT-..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+export SMROOT BUILDTOOLS
+
+# see if we are in a Build-able directory
+if [ ! -f Makefile.m4 ]; then
+ echo "Makefile.m4 not found. Build can only be run from a source directory."
+ exit $EX_UNAVAILABLE
+fi
+
+# now try to find a reasonable object directory
+if [ -r obj.$os.$rel.$arch$sfx ]; then
+ obj=obj.$os.$rel.$arch$sfx
+elif [ -r obj.$os.$rroot.$arch$sfx ]; then
+ obj=obj.$os.$rroot.$arch$sfx
+elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
+ obj=obj.$os.$rbase.x.$arch$sfx
+elif [ -r obj.$os.$rel$sfx ]; then
+ obj=obj.$os.$rel$sfx
+elif [ -r obj.$os.$rbase.x$sfx ]; then
+ obj=obj.$os.$rbase.x$sfx
+elif [ -r obj.$os.$arch$sfx ]; then
+ obj=obj.$os.$arch$sfx
+elif [ -r obj.$rel.$arch$sfx ]; then
+ obj=obj.$rel.$arch$sfx
+elif [ -r obj.$rbase.x.$arch$sfx ]; then
+ obj=obj.$rbase.x.$arch$sfx
+elif [ -r obj.$os$sfx ]; then
+ obj=obj.$os$sfx
+elif [ -r obj.$arch$sfx ]; then
+ obj=obj.$arch$sfx
+elif [ -r obj.$rel$sfx ]; then
+ obj=obj.$rel$sfx
+elif [ -r obj$sfx ]; then
+ obj=obj$sfx
+fi
+if [ -z "$obj" -o "$cflag" ]
+then
+ if [ -n "$obj" ]
+ then
+ echo "Clearing out existing $obj tree"
+ rm -rf $obj
+ else
+ # no existing obj directory -- try to create one if Makefile found
+ obj=obj.$os.$rel.$arch$sfx
+ fi
+ if [ -r $BUILDTOOLS/OS/$os.$rel.$arch$sfx ]; then
+ oscf=$os.$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel.$arch ]; then
+ oscf=$os.$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch$sfx ]; then
+ oscf=$os.$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch ]; then
+ oscf=$os.$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch$sfx ]; then
+ oscf=$os.$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch ]; then
+ oscf=$os.$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rel$sfx ]; then
+ oscf=$os.$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel ]; then
+ oscf=$os.$rel
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot$sfx ]; then
+ oscf=$os.$rroot$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot ]; then
+ oscf=$os.$rroot
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x$sfx ]; then
+ oscf=$os.$rbase.x$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x ]; then
+ oscf=$os.$rbase.x
+ elif [ -r $BUILDTOOLS/OS/$os.$arch$sfx ]; then
+ oscf=$os.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$arch ]; then
+ oscf=$os.$arch
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch$sfx ]; then
+ oscf=$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch ]; then
+ oscf=$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch$sfx ]; then
+ oscf=$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch ]; then
+ oscf=$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch$sfx ]; then
+ oscf=$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch ]; then
+ oscf=$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os$sfx ]; then
+ oscf=$os$sfx
+ elif [ -r $BUILDTOOLS/OS/$os ]; then
+ oscf=$os
+ elif [ -r $BUILDTOOLS/OS/$arch$sfx ]; then
+ oscf=$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$arch ]; then
+ oscf=$arch
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel ]; then
+ oscf=$rel
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ else
+ echo "Cannot determine how to support $arch.$os.$rel" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ ret=$?
+ if [ $ret -ne 0 ]
+ then
+ exit $ret
+ fi
+ echo "Using M4=$M4"
+ export M4
+ if [ "$mflag" ]
+ then
+ echo "Will run in virgin $obj using $BUILDTOOLS/OS/$oscf"
+ exit 0
+ fi
+ if [ "$ABI" ]
+ then
+ echo "Using ABI $ABI"
+ fi
+ echo "Creating $obj using $BUILDTOOLS/OS/$oscf"
+ mkdir $obj
+ (cd $obj; ln -s ../*.[ch158] .)
+ if [ -f sendmail.hf ]
+ then
+ (cd $obj; ln -s ../sendmail.hf .)
+ fi
+
+ rm -f $obj/.settings$$
+ echo 'divert(-1)' > $obj/.settings$$
+ cat $BUILDTOOLS/M4/header.m4 >> $obj/.settings$$
+ if [ "$ABI" ]
+ then
+ echo "define(\`confABI', \`$ABI')" >> $obj/.settings$$
+ fi
+ cat $BUILDTOOLS/OS/$oscf >> $obj/.settings$$
+
+ if [ -z "$siteconfig" ]
+ then
+ # none specified, use defaults
+ if [ -f $BUILDTOOLS/Site/site.$oscf$sfx.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf$sfx.m4
+ elif [ -f $BUILDTOOLS/Site/site.$oscf.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf.m4
+ fi
+ if [ -f $BUILDTOOLS/Site/site.config.m4 ]
+ then
+ siteconfig="$BUILDTOOLS/Site/site.config.m4 $siteconfig"
+ fi
+ fi
+ if [ ! -z "$siteconfig" ]
+ then
+ echo "Including $siteconfig"
+ cat $siteconfig >> $obj/.settings$$
+ fi
+ if [ "$libdirs" ]
+ then
+ echo "define(\`confLIBDIRS', confLIBDIRS \`\`$libdirs'')" >> $obj/.settings$$
+ fi
+ if [ "$incdirs" ]
+ then
+ echo "define(\`confINCDIRS', confINCDIRS \`\`$incdirs'')" >> $obj/.settings$$
+ fi
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ libdirs=`(cat $obj/.settings$$; echo "_SRIDBIL_= confLIBDIRS" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_SRIDBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_SRIDBIL_=//"`
+ libsrch=`(cat $obj/.settings$$; echo "_HCRSBIL_= confLIBSEARCH" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_HCRSBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_HCRSBIL_=//"`
+ echo 'divert(-1)' >> $obj/.settings$$
+ LIBDIRS="$libdirs" LIBSRCH="$libsrch" SITECONFIG="$siteconfig" sh $BUILDTOOLS/bin/configure.sh $sflag $oscf >> $obj/.settings$$
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' $obj/.settings$$ | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - Makefile.m4 | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' > $obj/Makefile
+ if [ $? -ne 0 -o ! -s $obj/Makefile ]
+ then
+ echo "ERROR: ${M4} failed; You may need a newer version of M4, at least as new as System V or GNU" 1>&2
+ rm -rf $obj
+ exit $EX_UNAVAILABLE
+ fi
+ rm -f $obj/.settings$$
+ echo "Making dependencies in $obj"
+ (cd $obj; ${MAKE-make} depend)
+fi
+
+if [ "$mflag" ]
+then
+ makefile=`ls -l $obj/Makefile | sed 's/.* //'`
+ if [ -z "$makefile" ]
+ then
+ echo "ERROR: $obj exists but has no Makefile" >&2
+ exit $EX_NOINPUT
+ fi
+ echo "Will run in existing $obj using $makefile"
+ exit 0
+fi
+
+echo "Making in $obj"
+cd $obj
+eval exec ${MAKE-make} $makeargs
diff --git a/usr.sbin/sendmail/src/map.c b/contrib/sendmail/src/map.c
index e88973660957..4c95b7fd6ab4 100644
--- a/usr.sbin/sendmail/src/map.c
+++ b/contrib/sendmail/src/map.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1992, 1995-1997 Eric P. Allman.
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1992, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)map.c 8.186 (Berkeley) 10/21/97";
+static char sccsid[] = "@(#)map.c 8.239 (Berkeley) 6/5/98";
#endif /* not lint */
#include "sendmail.h"
@@ -42,13 +20,16 @@ static char sccsid[] = "@(#)map.c 8.186 (Berkeley) 10/21/97";
# include <ndbm.h>
# ifdef R_FIRST
ERROR README: You are running the Berkeley DB version of ndbm.h. See
- ERROR README: the READ_ME file about tweaking Berkeley DB so it can
+ ERROR README: the README file about tweaking Berkeley DB so it can
ERROR README: coexist with NDBM, or delete -DNDBM from the Makefile
ERROR README: and use -DNEWDB instead.
# endif
#endif
#ifdef NEWDB
# include <db.h>
+# ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+# endif
#endif
#ifdef NIS
struct dom_binding; /* forward reference needed on IRIX */
@@ -182,6 +163,10 @@ map_parseargs(map, ap)
map->map_app = ++p;
break;
+ case 'T':
+ map->map_tapp = ++p;
+ break;
+
case 'k':
while (isascii(*++p) && isspace(*p))
continue;
@@ -236,6 +221,8 @@ map_parseargs(map, ap)
}
if (map->map_app != NULL)
map->map_app = newstr(map->map_app);
+ if (map->map_tapp != NULL)
+ map->map_tapp = newstr(map->map_tapp);
if (map->map_keycolnm != NULL)
map->map_keycolnm = newstr(map->map_keycolnm);
if (map->map_valcolnm != NULL)
@@ -289,21 +276,21 @@ char *
map_rewrite(map, s, slen, av)
register MAP *map;
register const char *s;
- int slen;
+ size_t slen;
char **av;
{
register char *bp;
register char c;
char **avp;
register char *ap;
- int i;
- int len;
- static int buflen = -1;
+ size_t l;
+ size_t len;
+ static size_t buflen = 0;
static char *buf = NULL;
if (tTd(39, 1))
{
- printf("map_rewrite(%.*s), av =", slen, s);
+ printf("map_rewrite(%.*s), av =", (int)slen, s);
if (av == NULL)
printf(" (nullv)");
else
@@ -315,16 +302,16 @@ map_rewrite(map, s, slen, av)
}
/* count expected size of output (can safely overestimate) */
- i = len = slen;
+ l = len = slen;
if (av != NULL)
{
const char *sp = s;
- for (i = slen; --i >= 0 && (c = *sp++) != 0; )
+ while (l-- > 0 && (c = *sp++) != '\0')
{
if (c != '%')
continue;
- if (--i < 0)
+ if (l-- <= 0)
break;
c = *sp++;
if (!(isascii(c) && isdigit(c)))
@@ -355,7 +342,7 @@ map_rewrite(map, s, slen, av)
}
else
{
- while (--slen >= 0 && (c = *s++) != '\0')
+ while (slen-- > 0 && (c = *s++) != '\0')
{
if (c != '%')
{
@@ -363,7 +350,7 @@ map_rewrite(map, s, slen, av)
*bp++ = c;
continue;
}
- if (--slen < 0 || (c = *s++) == '\0')
+ if (slen-- <= 0 || (c = *s++) == '\0')
c = '%';
if (c == '%')
goto pushc;
@@ -411,7 +398,7 @@ initmaps(rebuild, e)
bool rebuild;
register ENVELOPE *e;
{
- extern void map_init();
+ extern void map_init __P((STAB *, int));
#if XDEBUG
checkfd012("entering initmaps");
@@ -473,10 +460,10 @@ map_init(s, pass)
map->map_class->map_close(map);
map->map_mflags &= ~(MF_OPEN|MF_WRITABLE);
}
-
+
if (pass == 2)
{
- rebuildaliases(map, FALSE);
+ (void) rebuildaliases(map, FALSE);
return;
}
@@ -760,26 +747,55 @@ ndbm_map_open(map, mode)
sff = SFF_ROOTOK|SFF_REGONLY;
if (mode == O_RDWR)
{
- sff |= SFF_NOLINK|SFF_CREAT;
+ sff |= SFF_CREAT;
+ if (!bitset(DBS_WRITEMAPTOSYMLINK, DontBlameSendmail))
+ sff |= SFF_NOSLINK;
+ if (!bitset(DBS_WRITEMAPTOHARDLINK, DontBlameSendmail))
+ sff |= SFF_NOHLINK;
smode = S_IWRITE;
}
else
{
- sff |= SFF_NOWLINK;
+ if (!bitset(DBS_LINKEDMAPINWRITABLEDIR, DontBlameSendmail))
+ sff |= SFF_NOWLINK;
}
- if (FatalWritableDirs)
+ if (!bitset(DBS_MAPINUNSAFEDIRPATH, DontBlameSendmail))
sff |= SFF_SAFEDIRPATH;
- if ((ret = safefile(dirfile, RunAsUid, RunAsGid, RunAsUserName,
- sff, smode, &std)) != 0 ||
- (ret = safefile(pagfile, RunAsUid, RunAsGid, RunAsUserName,
- sff, smode, &stp)) != 0)
+ ret = safefile(dirfile, RunAsUid, RunAsGid, RunAsUserName,
+ sff, smode, &std);
+ if (ret == 0)
+ ret = safefile(pagfile, RunAsUid, RunAsGid, RunAsUserName,
+ sff, smode, &stp);
+ if (ret == ENOENT && AutoRebuild &&
+ bitset(MCF_REBUILDABLE, map->map_class->map_cflags) &&
+ (bitset(MF_IMPL_NDBM, map->map_mflags) ||
+ bitset(MF_ALIAS, map->map_mflags)) &&
+ mode == O_RDONLY)
+ {
+ bool impl = bitset(MF_IMPL_NDBM, map->map_mflags);
+ extern bool impl_map_open __P((MAP *, int));
+
+ /* may be able to rebuild */
+ map->map_mflags &= ~MF_IMPL_NDBM;
+ if (!rebuildaliases(map, TRUE))
+ return FALSE;
+ if (impl)
+ return impl_map_open(map, O_RDONLY);
+ else
+ return ndbm_map_open(map, O_RDONLY);
+ }
+ if (ret != 0)
{
+ char *prob = "unsafe";
+
/* cannot open this map */
+ if (ret == ENOENT)
+ prob = "missing";
if (tTd(38, 2))
- printf("\tunsafe map file: %d\n", ret);
+ printf("\t%s map file: %d\n", prob, ret);
if (!bitset(MF_OPTIONAL, map->map_mflags))
- syserr("dbm map \"%s\": unsafe map file %s",
- map->map_mname, map->map_file);
+ syserr("dbm map \"%s\": %s map file %s",
+ map->map_mname, prob, map->map_file);
return FALSE;
}
if (std.st_mode == ST_MODE_NOFILE)
@@ -811,11 +827,15 @@ ndbm_map_open(map, mode)
int dirfd;
int pagfd;
+ int sff = SFF_CREAT|SFF_OPENASROOT;
+
+ if (!bitset(DBS_WRITEMAPTOSYMLINK, DontBlameSendmail))
+ sff |= SFF_NOSLINK;
+ if (!bitset(DBS_WRITEMAPTOHARDLINK, DontBlameSendmail))
+ sff |= SFF_NOHLINK;
- dirfd = safeopen(dirfile, mode, DBMMODE,
- SFF_NOLINK|SFF_CREAT|SFF_OPENASROOT);
- pagfd = safeopen(pagfile, mode, DBMMODE,
- SFF_NOLINK|SFF_CREAT|SFF_OPENASROOT);
+ dirfd = safeopen(dirfile, mode, DBMMODE, sff);
+ pagfd = safeopen(pagfile, mode, DBMMODE, sff);
if (dirfd < 0 || pagfd < 0)
{
@@ -901,8 +921,8 @@ ndbm_map_open(map, mode)
return FALSE;
}
- if (filechanged(dirfile, dfd, &std, sff) ||
- filechanged(pagfile, pfd, &stp, sff))
+ if (filechanged(dirfile, dfd, &std) ||
+ filechanged(pagfile, pfd, &stp))
{
int save_errno = errno;
@@ -933,6 +953,20 @@ ndbm_map_open(map, mode)
else
{
map->map_mflags |= MF_LOCKED;
+ if (geteuid() == 0 && TrustedFileUid != 0)
+ {
+ if (fchown(dfd, TrustedFileUid, -1) < 0 ||
+ fchown(pfd, TrustedFileUid, -1) < 0)
+ {
+ int err = errno;
+
+ sm_syslog(LOG_ALERT, NOQID,
+ "ownership change on %s failed: %s",
+ map->map_file, errstring(err));
+ message("050 ownership change on %s failed: %s",
+ map->map_file, errstring(err));
+ }
+ }
}
if (fstat(dfd, &st) >= 0)
map->map_mtime = st.st_mtime;
@@ -975,7 +1009,7 @@ lockdbm:
fd = dbm_dirfno((DBM *) map->map_db1);
if (fd >= 0 && !bitset(MF_LOCKED, map->map_mflags))
(void) lockfile(fd, map->map_file, ".dir", LOCK_SH);
- if (fd < 0 || fstat(fd, &stbuf) < 0 || stbuf.st_mtime > map->map_mtime)
+ if (fd < 0 || fstat(fd, &stbuf) < 0 || stbuf.st_mtime > map->map_mtime)
{
/* Reopen the database to sync the cache */
int omode = bitset(map->map_mflags, MF_WRITABLE) ? O_RDWR
@@ -983,7 +1017,7 @@ lockdbm:
map->map_class->map_close(map);
map->map_mflags &= ~(MF_OPEN|MF_WRITABLE);
- if (map->map_class->map_open(map, omode))
+ if (map->map_class->map_open(map, omode))
{
map->map_mflags |= MF_OPEN;
if ((omode && O_ACCMODE) == O_RDWR)
@@ -992,7 +1026,7 @@ lockdbm:
}
else
{
- if (!bitset(MF_OPTIONAL, map->map_mflags))
+ if (!bitset(MF_OPTIONAL, map->map_mflags))
{
extern MAPCLASS BogusMapClass;
@@ -1082,7 +1116,8 @@ ndbm_map_store(map, lhs, rhs)
auto int xstat;
datum old;
- old.dptr = ndbm_map_lookup(map, key.dptr, NULL, &xstat);
+ old.dptr = ndbm_map_lookup(map, key.dptr,
+ (char **)NULL, &xstat);
if (old.dptr != NULL && *(char *) old.dptr != '\0')
{
old.dsize = strlen(old.dptr);
@@ -1117,7 +1152,7 @@ ndbm_map_close(map)
register MAP *map;
{
if (tTd(38, 9))
- printf("ndbm_map_close(%s, %s, %x)\n",
+ printf("ndbm_map_close(%s, %s, %lx)\n",
map->map_mname, map->map_file, map->map_mflags);
if (bitset(MF_WRITABLE, map->map_mflags))
@@ -1179,14 +1214,22 @@ ndbm_map_close(map)
** be pokey about it. That's hard to do.
*/
+#if DB_VERSION_MAJOR < 2
extern bool db_map_open __P((MAP *, int, char *, DBTYPE, const void *));
+#else
+extern bool db_map_open __P((MAP *, int, char *, DBTYPE, DB_INFO *));
+#endif
/* these should be K line arguments */
-#ifndef DB_CACHE_SIZE
-# define DB_CACHE_SIZE (1024 * 1024) /* database memory cache size */
-#endif
-#ifndef DB_HASH_NELEM
-# define DB_HASH_NELEM 4096 /* (starting) size of hash table */
+#if DB_VERSION_MAJOR < 2
+# define db_cachesize cachesize
+# define h_nelem nelem
+# ifndef DB_CACHE_SIZE
+# define DB_CACHE_SIZE (1024 * 1024) /* database memory cache size */
+# endif
+# ifndef DB_HASH_NELEM
+# define DB_HASH_NELEM 4096 /* (starting) size of hash table */
+# endif
#endif
bool
@@ -1194,14 +1237,20 @@ bt_map_open(map, mode)
MAP *map;
int mode;
{
+#if DB_VERSION_MAJOR < 2
BTREEINFO btinfo;
+#else
+ DB_INFO btinfo;
+#endif
if (tTd(38, 2))
printf("bt_map_open(%s, %s, %d)\n",
map->map_mname, map->map_file, mode);
bzero(&btinfo, sizeof btinfo);
- btinfo.cachesize = DB_CACHE_SIZE;
+#ifdef DB_CACHE_SIZE
+ btinfo.db_cachesize = DB_CACHE_SIZE;
+#endif
return db_map_open(map, mode, "btree", DB_BTREE, &btinfo);
}
@@ -1210,15 +1259,23 @@ hash_map_open(map, mode)
MAP *map;
int mode;
{
+#if DB_VERSION_MAJOR < 2
HASHINFO hinfo;
+#else
+ DB_INFO hinfo;
+#endif
if (tTd(38, 2))
printf("hash_map_open(%s, %s, %d)\n",
map->map_mname, map->map_file, mode);
bzero(&hinfo, sizeof hinfo);
- hinfo.nelem = DB_HASH_NELEM;
- hinfo.cachesize = DB_CACHE_SIZE;
+#ifdef DB_HASH_NELEM
+ hinfo.h_nelem = DB_HASH_NELEM;
+#endif
+#ifdef DB_CACHE_SIZE
+ hinfo.db_cachesize = DB_CACHE_SIZE;
+#endif
return db_map_open(map, mode, "hash", DB_HASH, &hinfo);
}
@@ -1228,9 +1285,13 @@ db_map_open(map, mode, mapclassname, dbtype, openinfo)
int mode;
char *mapclassname;
DBTYPE dbtype;
+#if DB_VERSION_MAJOR < 2
const void *openinfo;
+#else
+ DB_INFO *openinfo;
+#endif
{
- DB *db;
+ DB *db = NULL;
int i;
int omode;
int smode = S_IREAD;
@@ -1252,25 +1313,54 @@ db_map_open(map, mode, mapclassname, dbtype, openinfo)
sff = SFF_ROOTOK|SFF_REGONLY;
if (mode == O_RDWR)
{
- sff |= SFF_NOLINK|SFF_CREAT;
+ sff |= SFF_CREAT;
+ if (!bitset(DBS_WRITEMAPTOSYMLINK, DontBlameSendmail))
+ sff |= SFF_NOSLINK;
+ if (!bitset(DBS_WRITEMAPTOHARDLINK, DontBlameSendmail))
+ sff |= SFF_NOHLINK;
smode = S_IWRITE;
}
else
{
- sff |= SFF_NOWLINK;
+ if (!bitset(DBS_LINKEDMAPINWRITABLEDIR, DontBlameSendmail))
+ sff |= SFF_NOWLINK;
}
- if (FatalWritableDirs)
+ if (!bitset(DBS_MAPINUNSAFEDIRPATH, DontBlameSendmail))
sff |= SFF_SAFEDIRPATH;
- if ((i = safefile(buf, RunAsUid, RunAsGid, RunAsUserName,
- sff, smode, &st)) != 0)
+ i = safefile(buf, RunAsUid, RunAsGid, RunAsUserName, sff, smode, &st);
+ if (i == ENOENT && AutoRebuild &&
+ bitset(MCF_REBUILDABLE, map->map_class->map_cflags) &&
+ (bitset(MF_IMPL_HASH, map->map_mflags) ||
+ bitset(MF_ALIAS, map->map_mflags)) &&
+ mode == O_RDONLY)
+ {
+ bool impl = bitset(MF_IMPL_HASH, map->map_mflags);
+ extern bool impl_map_open __P((MAP *, int));
+
+ /* may be able to rebuild */
+ map->map_mflags &= ~MF_IMPL_HASH;
+ if (!rebuildaliases(map, TRUE))
+ return FALSE;
+ if (impl)
+ return impl_map_open(map, O_RDONLY);
+ else
+ return db_map_open(map, O_RDONLY, mapclassname,
+ dbtype, openinfo);
+ }
+
+ if (i != 0)
{
+ char *prob = "unsafe";
+
/* cannot open this map */
+ if (i == ENOENT)
+ prob = "missing";
if (tTd(38, 2))
- printf("\tunsafe map file: %s\n", errstring(i));
+ printf("\t%s map file: %s\n", prob, errstring(i));
errno = i;
if (!bitset(MF_OPTIONAL, map->map_mflags))
- syserr("%s map \"%s\": unsafe map file %s",
- mapclassname, map->map_mname, map->map_file);
+ syserr("%s map \"%s\": %s map file %s",
+ mapclassname, map->map_mname, prob, buf);
return FALSE;
}
if (st.st_mode == ST_MODE_NOFILE)
@@ -1281,10 +1371,8 @@ db_map_open(map, mode, mapclassname, dbtype, openinfo)
#if LOCK_ON_OPEN
if (mode == O_RDWR)
omode |= O_TRUNC|O_EXLOCK;
-# if !OLD_NEWDB
else
omode |= O_SHLOCK;
-# endif
#else
/*
** Pre-lock the file to avoid race conditions. In particular,
@@ -1301,7 +1389,7 @@ db_map_open(map, mode, mapclassname, dbtype, openinfo)
}
/* make sure no baddies slipped in just before the open... */
- if (filechanged(buf, fd, &st, sff))
+ if (filechanged(buf, fd, &st))
{
int save_errno = errno;
@@ -1333,7 +1421,23 @@ db_map_open(map, mode, mapclassname, dbtype, openinfo)
omode &= ~(O_EXCL|O_CREAT);
#endif
+#if DB_VERSION_MAJOR < 2
db = dbopen(buf, omode, DBMMODE, dbtype, openinfo);
+#else
+ {
+ int flags = 0;
+
+ if (mode == O_RDONLY)
+ flags |= DB_RDONLY;
+ if (bitset(O_CREAT, omode))
+ flags |= DB_CREATE;
+ if (bitset(O_TRUNC, omode))
+ flags |= DB_TRUNCATE;
+
+ errno = db_open(buf, dbtype, flags, DBMMODE,
+ NULL, openinfo, &db);
+ }
+#endif
saveerrno = errno;
#if !LOCK_ON_OPEN
@@ -1355,15 +1459,25 @@ db_map_open(map, mode, mapclassname, dbtype, openinfo)
errno = saveerrno;
if (!bitset(MF_OPTIONAL, map->map_mflags))
syserr("Cannot open %s database %s",
- mapclassname, map->map_file);
+ mapclassname, buf);
return FALSE;
}
- if (filechanged(buf, db->fd(db), &st, sff))
+#if DB_VERSION_MAJOR < 2
+ fd = db->fd(db);
+#else
+ fd = -1;
+ errno = db->fd(db, &fd);
+#endif
+ if (filechanged(buf, fd, &st))
{
int save_errno = errno;
+#if DB_VERSION_MAJOR < 2
db->close(db);
+#else
+ errno = db->close(db, 0);
+#endif
#if !LOCK_ON_OPEN
if (map->map_lockfd >= 0)
close(map->map_lockfd);
@@ -1375,26 +1489,34 @@ db_map_open(map, mode, mapclassname, dbtype, openinfo)
if (mode == O_RDWR)
map->map_mflags |= MF_LOCKED;
-#if !OLD_NEWDB
- fd = db->fd(db);
-# if LOCK_ON_OPEN
+#if LOCK_ON_OPEN
if (fd >= 0 && mode == O_RDONLY)
{
(void) lockfile(fd, buf, NULL, LOCK_UN);
}
-# endif
#endif
/* try to make sure that at least the database header is on disk */
if (mode == O_RDWR)
-#if OLD_NEWDB
- (void) db->sync(db);
-#else
+ {
(void) db->sync(db, 0);
+ if (geteuid() == 0 && TrustedFileUid != 0)
+ {
+ if (fchown(fd, TrustedFileUid, -1) < 0)
+ {
+ int err = errno;
+
+ sm_syslog(LOG_ALERT, NOQID,
+ "ownership change on %s failed: %s",
+ buf, errstring(err));
+ message("050 ownership change on %s failed: %s",
+ buf, errstring(err));
+ }
+ }
+ }
if (fd >= 0 && fstat(fd, &st) >= 0)
map->map_mtime = st.st_mtime;
-#endif
map->map_db2 = (ARBPTR_T) db;
if (mode == O_RDONLY && bitset(MF_ALIAS, map->map_mflags) &&
@@ -1425,6 +1547,9 @@ db_map_lookup(map, name, av, statp)
char keybuf[MAXNAME + 1];
char buf[MAXNAME + 1];
+ bzero(&key, sizeof key);
+ bzero(&val, sizeof val);
+
if (tTd(38, 20))
printf("db_map_lookup(%s, %s)\n",
map->map_mname, name);
@@ -1445,12 +1570,16 @@ db_map_lookup(map, name, av, statp)
keybuf[key.size] = '\0';
if (!bitset(MF_NOFOLDCASE, map->map_mflags))
makelower(keybuf);
-#if !OLD_NEWDB
lockdb:
+#if DB_VERSION_MAJOR < 2
fd = db->fd(db);
+#else
+ fd = -1;
+ errno = db->fd(db, &fd);
+#endif
if (fd >= 0 && !bitset(MF_LOCKED, map->map_mflags))
(void) lockfile(fd, buf, ".db", LOCK_SH);
- if (fd < 0 || fstat(fd, &stbuf) < 0 || stbuf.st_mtime > map->map_mtime)
+ if (fd < 0 || fstat(fd, &stbuf) < 0 || stbuf.st_mtime > map->map_mtime)
{
/* Reopen the database to sync the cache */
int omode = bitset(map->map_mflags, MF_WRITABLE) ? O_RDWR
@@ -1458,7 +1587,7 @@ db_map_lookup(map, name, av, statp)
map->map_class->map_close(map);
map->map_mflags &= ~(MF_OPEN|MF_WRITABLE);
- if (map->map_class->map_open(map, omode))
+ if (map->map_class->map_open(map, omode))
{
map->map_mflags |= MF_OPEN;
if ((omode && O_ACCMODE) == O_RDWR)
@@ -1468,7 +1597,7 @@ db_map_lookup(map, name, av, statp)
}
else
{
- if (!bitset(MF_OPTIONAL, map->map_mflags))
+ if (!bitset(MF_OPTIONAL, map->map_mflags))
{
extern MAPCLASS BogusMapClass;
@@ -1481,27 +1610,62 @@ db_map_lookup(map, name, av, statp)
return NULL;
}
}
-#endif
-
+
st = 1;
if (bitset(MF_TRY0NULL, map->map_mflags))
{
+#if DB_VERSION_MAJOR < 2
st = db->get(db, &key, &val, 0);
+#else
+ errno = db->get(db, NULL, &key, &val, 0);
+ switch (errno)
+ {
+ case DB_NOTFOUND:
+ case DB_KEYEMPTY:
+ st = 1;
+ break;
+
+ case 0:
+ st = 0;
+ break;
+
+ default:
+ st = -1;
+ break;
+ }
+#endif
if (st == 0)
map->map_mflags &= ~MF_TRY1NULL;
}
if (st != 0 && bitset(MF_TRY1NULL, map->map_mflags))
{
key.size++;
+#if DB_VERSION_MAJOR < 2
st = db->get(db, &key, &val, 0);
+#else
+ errno = db->get(db, NULL, &key, &val, 0);
+ switch (errno)
+ {
+ case DB_NOTFOUND:
+ case DB_KEYEMPTY:
+ st = 1;
+ break;
+
+ case 0:
+ st = 0;
+ break;
+
+ default:
+ st = -1;
+ break;
+ }
+#endif
if (st == 0)
map->map_mflags &= ~MF_TRY0NULL;
}
saveerrno = errno;
-#if !OLD_NEWDB
if (fd >= 0 && !bitset(MF_LOCKED, map->map_mflags))
(void) lockfile(fd, buf, ".db", LOCK_UN);
-#endif
if (st != 0)
{
errno = saveerrno;
@@ -1532,6 +1696,9 @@ db_map_store(map, lhs, rhs)
register DB *db = map->map_db2;
char keybuf[MAXNAME + 1];
+ bzero(&key, sizeof key);
+ bzero(&data, sizeof data);
+
if (tTd(38, 12))
printf("db_map_store(%s, %s, %s)\n",
map->map_mname, lhs, rhs);
@@ -1557,7 +1724,25 @@ db_map_store(map, lhs, rhs)
data.size++;
}
+#if DB_VERSION_MAJOR < 2
stat = db->put(db, &key, &data, R_NOOVERWRITE);
+#else
+ errno = db->put(db, NULL, &key, &data, DB_NOOVERWRITE);
+ switch (errno)
+ {
+ case DB_KEYEXIST:
+ stat = 1;
+ break;
+
+ case 0:
+ stat = 0;
+ break;
+
+ default:
+ stat = -1;
+ break;
+ }
+#endif
if (stat > 0)
{
if (!bitset(MF_APPEND, map->map_mflags))
@@ -1568,7 +1753,10 @@ db_map_store(map, lhs, rhs)
static int bufsiz = 0;
DBT old;
- old.data = db_map_lookup(map, key.data, NULL, &stat);
+ bzero(&old, sizeof old);
+
+ old.data = db_map_lookup(map, key.data,
+ (char **)NULL, &stat);
if (old.data != NULL)
{
old.size = strlen(old.data);
@@ -1580,7 +1768,7 @@ db_map_store(map, lhs, rhs)
buf = xalloc(bufsiz);
}
snprintf(buf, bufsiz, "%s,%s",
- data.data, old.data);
+ (char *) data.data, (char *) old.data);
data.size = data.size + old.size + 1;
data.data = buf;
if (tTd(38, 9))
@@ -1588,7 +1776,11 @@ db_map_store(map, lhs, rhs)
(char *) data.data);
}
}
+#if DB_VERSION_MAJOR < 2
stat = db->put(db, &key, &data, 0);
+#else
+ stat = errno = db->put(db, NULL, &key, &data, 0);
+#endif
}
if (stat != 0)
syserr("readaliases: db put (%s)", lhs);
@@ -1615,18 +1807,18 @@ db_map_close(map)
db_map_store(map, "@", "@");
}
-#if OLD_NEWDB
- (void) db->sync(db);
-#else
(void) db->sync(db, 0);
-#endif
#if !LOCK_ON_OPEN
if (map->map_lockfd >= 0)
(void) close(map->map_lockfd);
#endif
+#if DB_VERSION_MAJOR < 2
if (db->close(db) != 0)
+#else
+ if ((errno = db->close(db, 0)) != 0)
+#endif
syserr("readaliases: db close failure");
}
@@ -1734,6 +1926,7 @@ nis_map_open(map, mode)
** NIS_MAP_LOOKUP -- look up a datum in a NIS map
*/
+/* ARGSUSED3 */
char *
nis_map_lookup(map, name, av, statp)
MAP *map;
@@ -1910,7 +2103,7 @@ nisplus_map_open(map, mode)
mode &= O_ACCMODE;
if (mode != O_RDONLY)
{
- errno = ENODEV;
+ errno = EPERM;
return FALSE;
}
@@ -1920,7 +2113,7 @@ nisplus_map_open(map, mode)
if (PARTIAL_NAME(map->map_file) && map->map_domain == NULL)
{
/* set default NISPLUS Domain to $m */
- extern char *nisplus_default_domain();
+ extern char *nisplus_default_domain __P((void));
map->map_domain = newstr(nisplus_default_domain());
if (tTd(38, 2))
@@ -1953,7 +2146,7 @@ nisplus_map_open(map, mode)
case NIS_NAMEUNREACHABLE:
if (retry_cnt++ > 4)
{
- errno = EBADR;
+ errno = EAGAIN;
return FALSE;
}
/* try not to overwhelm hosed server */
@@ -1967,7 +2160,7 @@ nisplus_map_open(map, mode)
map->map_file, map->map_domain,
nis_sperrno(res->status));
#endif
- errno = EBADR;
+ errno = EAGAIN;
return FALSE;
}
}
@@ -1983,7 +2176,7 @@ nisplus_map_open(map, mode)
map->map_file, map->map_domain,
nis_sperrno(res->status));
#endif
- errno = EBADR;
+ errno = EBADF;
return FALSE;
}
/* default key column is column 0 */
@@ -1991,7 +2184,7 @@ nisplus_map_open(map, mode)
map->map_keycolnm = newstr(COL_NAME(res,0));
max_col = COL_MAX(res);
-
+
/* verify the key column exist */
for (i=0; i< max_col; i++)
{
@@ -2003,7 +2196,7 @@ nisplus_map_open(map, mode)
if (tTd(38, 2))
printf("nisplus_map_open(%s): can not find key column %s\n",
map->map_file, map->map_keycolnm);
- errno = EBADR;
+ errno = ENOENT;
return FALSE;
}
@@ -2026,7 +2219,7 @@ nisplus_map_open(map, mode)
if (tTd(38, 2))
printf("nisplus_map_open(%s): can not find column %s\n",
map->map_file, map->map_keycolnm);
- errno = EBADR;
+ errno = ENOENT;
return FALSE;
}
@@ -2064,7 +2257,7 @@ nisplus_map_lookup(map, name, av, statp)
return NULL;
}
}
-
+
/*
** Copy the name to the key buffer, escaping double quote characters
** by doubling them and quoting "]" and "," to avoid having the
@@ -2295,7 +2488,7 @@ nisplus_default_domain()
if (default_domain[0] != '\0')
return(default_domain);
-
+
p = nis_local_directory();
snprintf(default_domain, sizeof default_domain, "%s", p);
return default_domain;
@@ -2357,12 +2550,22 @@ ldap_map_open(map, mode)
** Caching should be investigated.
*/
+static jmp_buf LDAPTimeout;
+
+static void
+ldaptimeout(sig_no)
+ int sig_no;
+{
+ longjmp(LDAPTimeout, 1);
+}
+
bool
ldap_map_start(map)
MAP *map;
{
LDAP_MAP_STRUCT *lmap;
LDAP *ld;
+ register EVENT *ev = NULL;
if (tTd(38, 2))
printf("ldap_map_start(%s)\n", map->map_mname);
@@ -2372,6 +2575,22 @@ ldap_map_start(map)
if (tTd(38,9))
printf("ldap_open(%s, %d)\n", lmap->ldaphost, lmap->ldapport);
+ /* Need to set an alarm here, ldap_open is hopelessly broken. */
+
+ /* set the timeout */
+ if (lmap->timeout.tv_sec != 0)
+ {
+ if (setjmp(LDAPTimeout) != 0)
+ {
+ if (LogLevel > 1)
+ sm_syslog(LOG_NOTICE, CurEnv->e_id,
+ "timeout waiting for ldap_open to %.100s",
+ lmap->ldaphost);
+ return (FALSE);
+ }
+ ev = setevent(lmap->timeout.tv_sec, ldaptimeout, 0);
+ }
+
if ((ld = ldap_open(lmap->ldaphost,lmap->ldapport)) == NULL)
{
if (!bitset(MF_OPTIONAL, map->map_mflags))
@@ -2382,6 +2601,9 @@ ldap_map_start(map)
return FALSE;
}
+ /* clear the event if it has not sprung */
+ clrevent(ev);
+ /* From here on in we can use ldap internal timelimits */
ld->ld_deref = lmap->deref;
ld->ld_timelimit = lmap->timelimit;
ld->ld_sizelimit = lmap->sizelimit;
@@ -2642,6 +2864,11 @@ ldap_map_parseargs(map,args)
lmap->passwd = NULL;
lmap->base = NULL;
lmap->ldaphost = NULL;
+
+ /* Default general ptrs to NULL */
+ lmap->ld = NULL;
+ lmap->res = NULL;
+
map->map_mflags |= MF_TRY0NULL | MF_TRY1NULL;
for (;;)
{
@@ -2688,6 +2915,10 @@ ldap_map_parseargs(map,args)
map->map_app = ++p;
break;
+ case 'T':
+ map->map_tapp = ++p;
+ break;
+
/* Start of ldap_map specific args */
case 'k': /* search field */
while (isascii(*++p) && isspace(*p))
@@ -2716,7 +2947,7 @@ ldap_map_parseargs(map,args)
break;
case 's': /* search scope */
- if (strncasecmp(p, "base", 4) == 0)
+ if (strncasecmp(++p, "base", 4) == 0)
{
lmap->scope = LDAP_SCOPE_BASE;
}
@@ -2732,8 +2963,14 @@ ldap_map_parseargs(map,args)
{ /* bad config line */
if (!bitset(MCF_OPTFILE, map->map_class->map_cflags))
{
+ char *ptr;
+
+ if ((ptr = strchr(p, ' ')) != NULL)
+ *ptr = '\0';
syserr("Scope must be [base|one|sub] not %s in map %s",
p, map->map_mname);
+ if (ptr != NULL)
+ *ptr = ' ';
return FALSE;
}
}
@@ -2762,6 +2999,7 @@ ldap_map_parseargs(map,args)
while (isascii(*++p) && isspace(*p))
continue;
lmap->timelimit = atoi(p);
+ lmap->timeout.tv_sec = lmap->timelimit;
break;
}
@@ -2792,7 +3030,8 @@ ldap_map_parseargs(map,args)
if (map->map_app != NULL)
map->map_app = newstr(ldap_map_dequote(map->map_app));
-
+ if (map->map_tapp != NULL)
+ map->map_tapp = newstr(ldap_map_dequote(map->map_tapp));
if (map->map_domain != NULL)
map->map_domain = newstr(ldap_map_dequote(map->map_domain));
@@ -2859,7 +3098,7 @@ ldap_map_parseargs(map,args)
** syslog map
*/
-#if _FFR_SYSLOG_MAP
+#if _FFR_MAP_SYSLOG
#define map_prio map_lockfd /* overload field */
@@ -2895,7 +3134,7 @@ syslog_map_parseargs(map, args)
{
if (strncasecmp("LOG_", priority, 4) == 0)
priority += 4;
-
+
#ifdef LOG_EMERG
if (strcasecmp("EMERG", priority) == 0)
map->map_prio = LOG_EMERG;
@@ -2966,20 +3205,18 @@ syslog_map_lookup(map, string, args, statp)
sm_syslog(map->map_prio, CurEnv->e_id, "%s", ptr);
}
-
+
*statp = EX_OK;
return "";
}
-#endif /* _FFR_SYSLOG_MAP */
+#endif /* _FFR_MAP_SYSLOG */
/*
** HESIOD Modules
*/
#ifdef HESIOD
-#include <hesiod.h>
-
bool
hes_map_open(map, mode)
MAP *map;
@@ -3004,6 +3241,15 @@ hes_map_open(map, mode)
return FALSE;
}
+#ifdef HESIOD_INIT
+ if (HesiodContext != NULL || hesiod_init(&HesiodContext) == 0)
+ return TRUE;
+
+ if (!bitset(MF_OPTIONAL, map->map_mflags))
+ syserr("421 cannot initialize Hesiod map (%s)",
+ errstring(errno));
+ return FALSE;
+#else
if (hes_error() == HES_ER_UNINIT)
hes_init();
switch (hes_error())
@@ -3017,6 +3263,7 @@ hes_map_open(map, mode)
syserr("421 cannot initialize Hesiod map (%d)", hes_error());
return FALSE;
+#endif /* HESIOD_INIT */
}
char *
@@ -3044,14 +3291,45 @@ hes_map_lookup(map, name, av, statp)
np = xalloc(strlen(name) + 2);
np[0] = '\\';
strcpy(&np[1], name);
+#ifdef HESIOD_INIT
+ hp = hesiod_resolve(HesiodContext, np, map->map_file);
+#else
hp = hes_resolve(np, map->map_file);
+#endif /* HESIOD_INIT */
if (np != nbuf)
free(np);
}
else
{
+#ifdef HESIOD_INIT
+ hp = hesiod_resolve(HesiodContext, name, map->map_file);
+#else
hp = hes_resolve(name, map->map_file);
+#endif /* HESIOD_INIT */
}
+#ifdef HESIOD_INIT
+ if (hp == NULL)
+ return NULL;
+ if (*hp == NULL)
+ {
+ hesiod_free_list(HesiodContext, hp);
+ switch (errno)
+ {
+ case ENOENT:
+ *statp = EX_NOTFOUND;
+ break;
+ case ECONNREFUSED:
+ case EMSGSIZE:
+ *statp = EX_TEMPFAIL;
+ break;
+ case ENOMEM:
+ default:
+ *statp = EX_UNAVAILABLE;
+ break;
+ }
+ return NULL;
+ }
+#else
if (hp == NULL || hp[0] == NULL)
{
switch (hes_error())
@@ -3074,7 +3352,8 @@ hes_map_lookup(map, name, av, statp)
}
return NULL;
}
-
+#endif /* HESIOD_INIT */
+
if (bitset(MF_MATCHONLY, map->map_mflags))
return map_rewrite(map, name, strlen(name), NULL);
else
@@ -3162,6 +3441,7 @@ ni_getcanonname(name, hbsize, statp)
int *statp;
{
char *vptr;
+ char *ptr;
char nbuf[MAXNAME + 1];
if (tTd(38, 20))
@@ -3183,7 +3463,7 @@ ni_getcanonname(name, hbsize, statp)
}
/* Do the search */
- vptr = ni_propval("/machines", NULL, nbuf, "name", '\0');
+ vptr = ni_propval("/machines", NULL, nbuf, "name", '\n');
if (vptr == NULL)
{
@@ -3191,6 +3471,10 @@ ni_getcanonname(name, hbsize, statp)
return FALSE;
}
+ /* Only want the first machine name */
+ if ((ptr = strchr(vptr, '\n')) != NULL)
+ *ptr = '\0';
+
if (hbsize >= strlen(vptr))
{
strcpy(name, vptr);
@@ -3411,7 +3695,7 @@ text_map_open(map, mode)
mode &= O_ACCMODE;
if (mode != O_RDONLY)
{
- errno = ENODEV;
+ errno = EPERM;
return FALSE;
}
@@ -3429,8 +3713,10 @@ text_map_open(map, mode)
return FALSE;
}
- sff = SFF_ROOTOK|SFF_REGONLY|SFF_NOWLINK;
- if (FatalWritableDirs)
+ sff = SFF_ROOTOK|SFF_REGONLY;
+ if (!bitset(DBS_LINKEDMAPINWRITABLEDIR, DontBlameSendmail))
+ sff |= SFF_NOWLINK;
+ if (!bitset(DBS_MAPINUNSAFEDIRPATH, DontBlameSendmail))
sff |= SFF_SAFEDIRPATH;
if ((i = safefile(map->map_file, RunAsUid, RunAsGid, RunAsUserName,
sff, S_IRUSR, NULL)) != 0)
@@ -3448,7 +3734,7 @@ text_map_open(map, mode)
map->map_keycolno = 0;
else
{
- if (!isdigit(*map->map_keycolnm))
+ if (!(isascii(*map->map_keycolnm) && isdigit(*map->map_keycolnm)))
{
syserr("text map \"%s\", file %s: -k should specify a number, not %s",
map->map_mname, map->map_file,
@@ -3462,7 +3748,7 @@ text_map_open(map, mode)
map->map_valcolno = 0;
else
{
- if (!isdigit(*map->map_valcolnm))
+ if (!(isascii(*map->map_valcolnm) && isdigit(*map->map_valcolnm)))
{
syserr("text map \"%s\", file %s: -v should specify a number, not %s",
map->map_mname, map->map_file,
@@ -3633,6 +3919,7 @@ text_getcanonname(name, hbsize, statp)
** STAB_MAP_LOOKUP -- look up alias in symbol table
*/
+/* ARGSUSED2 */
char *
stab_map_lookup(map, name, av, pstat)
register MAP *map;
@@ -3695,12 +3982,14 @@ stab_map_open(map, mode)
mode &= O_ACCMODE;
if (mode != O_RDONLY)
{
- errno = ENODEV;
+ errno = EPERM;
return FALSE;
}
- sff = SFF_ROOTOK|SFF_REGONLY|SFF_NOWLINK;
- if (FatalWritableDirs)
+ sff = SFF_ROOTOK|SFF_REGONLY;
+ if (!bitset(DBS_LINKEDMAPINWRITABLEDIR, DontBlameSendmail))
+ sff |= SFF_NOWLINK;
+ if (!bitset(DBS_MAPINUNSAFEDIRPATH, DontBlameSendmail))
sff |= SFF_SAFEDIRPATH;
af = safefopen(map->map_file, O_RDONLY, 0444, sff);
if (af == NULL)
@@ -3808,13 +4097,18 @@ impl_map_open(map, mode)
#if defined(NEWDB) || defined(NDBM)
if (Verbose)
- message("WARNING: cannot open alias database %s", map->map_file);
+ message("WARNING: cannot open alias database %s%s",
+ map->map_file,
+ mode == O_RDONLY ? "; reading text version" : "");
#else
if (mode != O_RDONLY)
usrerr("Cannot rebuild aliases: no database format defined");
#endif
- return stab_map_open(map, mode);
+ if (mode == O_RDONLY)
+ return stab_map_open(map, mode);
+ else
+ return FALSE;
}
@@ -3911,6 +4205,7 @@ user_map_open(map, mode)
** USER_MAP_LOOKUP -- look up a user in the passwd file.
*/
+/* ARGSUSED3 */
char *
user_map_lookup(map, key, av, statp)
MAP *map;
@@ -4340,6 +4635,7 @@ seq_map_store(map, key, val)
** NULL stubs
*/
+/* ARGSUSED */
bool
null_map_open(map, mode)
MAP *map;
@@ -4348,6 +4644,7 @@ null_map_open(map, mode)
return TRUE;
}
+/* ARGSUSED */
void
null_map_close(map)
MAP *map;
@@ -4366,6 +4663,7 @@ null_map_lookup(map, key, args, pstat)
return NULL;
}
+/* ARGSUSED */
void
null_map_store(map, key, val)
MAP *map;
@@ -4397,3 +4695,371 @@ MAPCLASS BogusMapClass =
NULL, bogus_map_lookup, null_map_store,
null_map_open, null_map_close,
};
+ /*
+** REGEX modules
+*/
+
+#ifdef MAP_REGEX
+
+# include <regex.h>
+
+# define DEFAULT_DELIM CONDELSE
+
+# define END_OF_FIELDS -1
+
+# define ERRBUF_SIZE 80
+# define MAX_MATCH 32
+
+# define xnalloc(s) memset(xalloc(s), 0, s);
+
+struct regex_map
+{
+ regex_t pattern_buf; /* xalloc it */
+ int *regex_subfields; /* move to type MAP */
+ char *delim; /* move to type MAP */
+};
+
+static int
+parse_fields(s, ibuf, blen, nr_substrings)
+ char *s;
+ int *ibuf; /* array */
+ int blen; /* number of elements in ibuf */
+ int nr_substrings; /* number of substrings in the pattern */
+{
+ register char *cp;
+ int i = 0;
+ bool lastone = FALSE;
+
+ blen--; /* for terminating END_OF_FIELDS */
+ cp = s;
+ do
+ {
+ for (;; cp++)
+ {
+ if (*cp == ',')
+ {
+ *cp = '\0';
+ break;
+ }
+ if (*cp == '\0')
+ {
+ lastone = TRUE;
+ break;
+ }
+ }
+ if (i < blen)
+ {
+ int val = atoi(s);
+
+ if (val < 0 || val >= nr_substrings)
+ {
+ syserr("field (%d) out of range, only %d substrings in pattern",
+ val, nr_substrings);
+ return -1;
+ }
+ ibuf[i++] = val;
+ }
+ else
+ {
+ syserr("too many fields, %d max\n", blen);
+ return -1;
+ }
+ s = ++cp;
+ } while (!lastone);
+ ibuf[i] = END_OF_FIELDS;
+ return i;
+}
+
+bool
+regex_map_init(map, ap)
+ MAP *map;
+ char *ap;
+{
+ int regerr;
+ struct regex_map *map_p;
+ register char *p;
+ char *sub_param = NULL;
+ int pflags;
+ static char defdstr[] = { (char)DEFAULT_DELIM, '\0' };
+
+ if (tTd(38, 2))
+ printf("regex_map_init: mapname '%s', args '%s'\n",
+ map->map_mname, ap);
+
+ pflags = REG_ICASE | REG_EXTENDED | REG_NOSUB;
+
+ p = ap;
+
+ map_p = (struct regex_map *) xnalloc(sizeof(struct regex_map));
+
+ for (;;)
+ {
+ while (isascii(*p) && isspace(*p))
+ p++;
+ if (*p != '-')
+ break;
+ switch (*++p)
+ {
+ case 'n': /* not */
+ map->map_mflags |= MF_REGEX_NOT;
+ break;
+
+ case 'f': /* case sensitive */
+ map->map_mflags |= MF_NOFOLDCASE;
+ pflags &= ~REG_ICASE;
+ break;
+
+ case 'b': /* basic regular expressions */
+ pflags &= ~REG_EXTENDED;
+ break;
+
+ case 's': /* substring match () syntax */
+ sub_param = ++p;
+ pflags &= ~REG_NOSUB;
+ break;
+
+ case 'd': /* delimiter */
+ map_p->delim = ++p;
+ break;
+
+ case 'a': /* map append */
+ map->map_app = ++p;
+ break;
+
+ case 'm': /* matchonly */
+ map->map_mflags |= MF_MATCHONLY;
+ break;
+
+ }
+ while (*p != '\0' && !(isascii(*p) && isspace(*p)))
+ p++;
+ if (*p != '\0')
+ *p++ = '\0';
+ }
+ if (tTd(38, 3))
+ printf("regex_map_init: compile '%s' 0x%x\n", p, pflags);
+
+ if ((regerr = regcomp(&(map_p->pattern_buf), p, pflags)) != 0)
+ {
+ /* Errorhandling */
+ char errbuf[ERRBUF_SIZE];
+
+ regerror(regerr, &(map_p->pattern_buf), errbuf, ERRBUF_SIZE);
+ syserr("pattern-compile-error: %s\n", errbuf);
+ free(map_p);
+ return FALSE;
+ }
+
+ if (map->map_app != NULL)
+ map->map_app = newstr(map->map_app);
+ if (map_p->delim != NULL)
+ map_p->delim = newstr(map_p->delim);
+ else
+ map_p->delim = defdstr;
+
+ if (!bitset(REG_NOSUB, pflags))
+ {
+ /* substring matching */
+ int substrings;
+ int *fields = (int *)xalloc(sizeof(int) * (MAX_MATCH + 1));
+
+ substrings = map_p->pattern_buf.re_nsub + 1;
+
+ if (tTd(38, 3))
+ printf("regex_map_init: nr of substrings %d\n", substrings);
+
+ if (substrings >= MAX_MATCH)
+ {
+ syserr("too many substrings, %d max\n", MAX_MATCH);
+ free(map_p);
+ return FALSE;
+ }
+ if (sub_param != NULL && sub_param[0] != '\0')
+ {
+ /* optional parameter -sfields */
+ if (parse_fields(sub_param, fields,
+ MAX_MATCH + 1, substrings) == -1)
+ return FALSE;
+ }
+ else
+ {
+ /* set default fields */
+ int i;
+
+ for (i = 0; i < substrings; i++)
+ fields[i] = i;
+ fields[i] = END_OF_FIELDS;
+ }
+ map_p->regex_subfields = fields;
+ if (tTd(38, 3))
+ {
+ int *ip;
+
+ printf("regex_map_init: subfields");
+ for (ip = fields; *ip != END_OF_FIELDS; ip++)
+ printf(" %d", *ip);
+ printf("\n");
+ }
+ }
+ map->map_db1 = (ARBPTR_T)map_p; /* dirty hack */
+
+ return TRUE;
+}
+
+static char *
+regex_map_rewrite(map, s, slen, av)
+ MAP *map;
+ const char *s;
+ size_t slen;
+ char **av;
+{
+ if (bitset(MF_MATCHONLY, map->map_mflags))
+ return map_rewrite(map, av[0], strlen(av[0]), NULL);
+ else
+ return map_rewrite(map, s, slen, NULL);
+}
+
+char *
+regex_map_lookup(map, name, av, statp)
+ MAP *map;
+ char *name;
+ char **av;
+ int *statp;
+{
+ int reg_res;
+ struct regex_map *map_p;
+ regmatch_t pmatch[MAX_MATCH];
+
+ if (tTd(38, 20))
+ {
+ char **cpp;
+
+ printf("regex_map_lookup: key '%s'\n", name);
+ for (cpp = av; cpp && *cpp; cpp++)
+ printf("regex_map_lookup: arg '%s'\n", *cpp);
+ }
+
+ map_p = (struct regex_map *)(map->map_db1);
+ reg_res = regexec(&(map_p->pattern_buf), name, MAX_MATCH, pmatch, 0);
+
+ if (bitset(MF_REGEX_NOT, map->map_mflags))
+ {
+ /* option -n */
+ if (reg_res == REG_NOMATCH)
+ return regex_map_rewrite(map, "", (size_t)0, av);
+ else
+ return NULL;
+ }
+ if (reg_res == REG_NOMATCH)
+ return NULL;
+
+ if (map_p->regex_subfields != NULL)
+ {
+ /* option -s */
+ static char retbuf[MAXNAME];
+ int fields[MAX_MATCH + 1];
+ bool first = TRUE;
+ int anglecnt = 0, cmntcnt = 0, spacecnt = 0;
+ bool quotemode = FALSE, bslashmode = FALSE;
+ register char *dp, *sp;
+ char *endp, *ldp;
+ int *ip;
+
+ dp = retbuf;
+ ldp = retbuf + sizeof(retbuf) - 1;
+
+ if (av[1] != NULL)
+ {
+ if (parse_fields(av[1], fields, MAX_MATCH + 1,
+ (int) map_p->pattern_buf.re_nsub + 1) == -1)
+ {
+ *statp = EX_CONFIG;
+ return NULL;
+ }
+ ip = fields;
+ }
+ else
+ ip = map_p->regex_subfields;
+
+ for ( ; *ip != END_OF_FIELDS; ip++)
+ {
+ if (!first)
+ {
+ for (sp = map_p->delim; *sp; sp++)
+ {
+ if (dp < ldp)
+ *dp++ = *sp;
+ }
+ }
+ else
+ first = FALSE;
+
+
+ if (pmatch[*ip].rm_so < 0 || pmatch[*ip].rm_eo < 0)
+ continue;
+
+ sp = name + pmatch[*ip].rm_so;
+ endp = name + pmatch[*ip].rm_eo;
+ for (; endp > sp; sp++)
+ {
+ if (dp < ldp)
+ {
+ if(bslashmode)
+ {
+ *dp++ = *sp;
+ bslashmode = FALSE;
+ }
+ else if(quotemode && *sp != '"' &&
+ *sp != '\\')
+ {
+ *dp++ = *sp;
+ }
+ else switch(*dp++ = *sp)
+ {
+ case '\\':
+ bslashmode = TRUE;
+ break;
+
+ case '(':
+ cmntcnt++;
+ break;
+
+ case ')':
+ cmntcnt--;
+ break;
+
+ case '<':
+ anglecnt++;
+ break;
+
+ case '>':
+ anglecnt--;
+ break;
+
+ case ' ':
+ spacecnt++;
+ break;
+
+ case '"':
+ quotemode = !quotemode;
+ break;
+ }
+ }
+ }
+ }
+ if (anglecnt != 0 || cmntcnt != 0 || quotemode ||
+ bslashmode || spacecnt != 0)
+ {
+ sm_syslog(LOG_WARNING, NOQID,
+ "Warning: regex may cause prescan() failure map=%s lookup=%s",
+ map->map_mname, name);
+ return NULL;
+ }
+
+ *dp = '\0';
+
+ return regex_map_rewrite(map, retbuf, strlen(retbuf), av);
+ }
+ return regex_map_rewrite(map, "", (size_t)0, av);
+}
+#endif /* MAP_REGEX */
diff --git a/usr.sbin/sendmail/src/mci.c b/contrib/sendmail/src/mci.c
index 929d82d463a3..efb8cbad67a8 100644
--- a/usr.sbin/sendmail/src/mci.c
+++ b/contrib/sendmail/src/mci.c
@@ -1,42 +1,21 @@
/*
- * Copyright (c) 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)mci.c 8.66 (Berkeley) 8/2/97";
+static char sccsid[] = "@(#)mci.c 8.82 (Berkeley) 6/15/98";
#endif /* not lint */
#include "sendmail.h"
+#include <arpa/inet.h>
#include <dirent.h>
/*
@@ -73,7 +52,7 @@ static char sccsid[] = "@(#)mci.c 8.66 (Berkeley) 8/2/97";
MCI **MciCache; /* the open connection cache */
extern int mci_generate_persistent_path __P((const char *, char *, int, bool));
-extern void mci_load_persistent __P((MCI *));
+extern bool mci_load_persistent __P((MCI *));
extern void mci_uncache __P((MCI **, bool));
/*
** MCI_CACHE -- enter a connection structure into the open connection cache
@@ -105,6 +84,9 @@ mci_cache(mci)
return;
}
+ if (mci->mci_host == NULL)
+ return;
+
/* if this is already cached, we are done */
if (bitset(MCIF_CACHED, mci->mci_flags))
return;
@@ -115,7 +97,7 @@ mci_cache(mci)
if (tTd(42, 5))
printf("mci_cache: caching %lx (%s) in slot %d\n",
- (u_long) mci, mci->mci_host, mcislot - MciCache);
+ (u_long) mci, mci->mci_host, (int)(mcislot - MciCache));
if (tTd(91, 100))
sm_syslog(LOG_DEBUG, CurEnv->e_id,
"mci_cache: caching %x (%.100s) in slot %d",
@@ -208,12 +190,15 @@ mci_uncache(mcislot, doquit)
if (mci == NULL)
return;
*mcislot = NULL;
+ if (mci->mci_host == NULL)
+ return;
mci_unlock_host(mci);
if (tTd(42, 5))
printf("mci_uncache: uncaching %lx (%s) from slot %d (%d)\n",
- (u_long) mci, mci->mci_host, mcislot - MciCache, doquit);
+ (u_long) mci, mci->mci_host,
+ (int)(mcislot - MciCache), doquit);
if (tTd(91, 100))
sm_syslog(LOG_DEBUG, CurEnv->e_id,
"mci_uncache: uncaching %x (%.100s) from slot %d (%d)",
@@ -301,7 +286,15 @@ mci_get(host, m)
mci = &s->s_mci;
mci->mci_host = s->s_name;
- mci_load_persistent(mci);
+ if (!mci_load_persistent(mci))
+ {
+ if (tTd(42, 2))
+ printf("mci_get(%s %s): lock failed\n", host, m->m_name);
+ mci->mci_exitstat = EX_TEMPFAIL;
+ mci->mci_state = MCIS_CLOSED;
+ mci->mci_statfile = NULL;
+ return mci;
+ }
if (tTd(42, 2))
{
@@ -572,7 +565,7 @@ mci_lock_host_statfile(mci)
}
mci->mci_statfile = safefopen(fname, O_RDWR, FileMode,
- SFF_NOLOCK|SFF_NOLINK|SFF_OPENASROOT|SFF_REGONLY|SFF_CREAT);
+ SFF_NOLOCK|SFF_NOLINK|SFF_OPENASROOT|SFF_REGONLY|SFF_SAFEDIRPATH|SFF_CREAT);
if (mci->mci_statfile == NULL)
{
@@ -660,14 +653,16 @@ mci_unlock_host(mci)
** for.
**
** Returns:
-** none.
+** TRUE -- lock was successful
+** FALSE -- lock failed
*/
-void
+bool
mci_load_persistent(mci)
MCI *mci;
{
int saveErrno = errno;
+ bool locked = TRUE;
FILE *fp;
char fname[MAXPATHLEN+1];
@@ -675,12 +670,16 @@ mci_load_persistent(mci)
{
if (tTd(56, 1))
printf("mci_load_persistent: NULL mci\n");
- return;
+ return TRUE;
}
if (IgnoreHostStatus || HostStatDir == NULL || mci->mci_host == NULL)
- return;
+ return TRUE;
+ /* Already have the persistent information in memory */
+ if (SingleThreadDelivery && mci->mci_statfile != NULL)
+ return TRUE;
+
if (tTd(56, 1))
printf("mci_load_persistent: Attempting to load persistent information for %s\n",
mci->mci_host);
@@ -694,7 +693,7 @@ mci_load_persistent(mci)
}
fp = safefopen(fname, O_RDONLY, FileMode,
- SFF_NOLINK|SFF_OPENASROOT|SFF_REGONLY);
+ SFF_NOLOCK|SFF_NOLINK|SFF_OPENASROOT|SFF_REGONLY|SFF_SAFEDIRPATH);
if (fp == NULL)
{
/* I can't think of any reason this should ever happen */
@@ -705,13 +704,16 @@ mci_load_persistent(mci)
}
FileName = fname;
+ locked = lockfile(fileno(fp), fname, "", LOCK_SH|LOCK_NB);
(void) mci_read_persistent(fp, mci);
FileName = NULL;
+ if (locked)
+ lockfile(fileno(fp), fname, "", LOCK_UN);
fclose(fp);
cleanup:
errno = saveErrno;
- return;
+ return locked;
}
/*
** MCI_READ_PERSISTENT -- read persistent host status file
@@ -803,7 +805,10 @@ mci_read_persistent(fp, mci)
return 0;
default:
- syserr("Unknown host status line \"%s\"", buf);
+ sm_syslog(LOG_CRIT, NOQID,
+ "%s: line %d: Unknown host status line \"%s\"",
+ FileName == NULL ? mci->mci_host : FileName,
+ LineNumber, buf);
LineNumber = saveLineNumber;
return -1;
}
@@ -868,7 +873,7 @@ mci_store_persistent(mci)
if (mci->mci_rstatus != NULL)
fprintf(mci->mci_statfile, "R%.80s\n",
denlstring(mci->mci_rstatus, TRUE, FALSE));
- fprintf(mci->mci_statfile, "U%ld\n", mci->mci_lastuse);
+ fprintf(mci->mci_statfile, "U%ld\n", (long)(mci->mci_lastuse));
fprintf(mci->mci_statfile, ".\n");
fflush(mci->mci_statfile);
@@ -1054,7 +1059,7 @@ mci_print_persistent(pathname, hostname)
}
fp = safefopen(pathname, O_RDWR, FileMode,
- SFF_NOLOCK|SFF_NOLINK|SFF_OPENASROOT|SFF_REGONLY);
+ SFF_NOLOCK|SFF_NOLINK|SFF_OPENASROOT|SFF_REGONLY|SFF_SAFEDIRPATH);
if (fp == NULL)
{
@@ -1091,7 +1096,7 @@ mci_print_persistent(pathname, hostname)
extern int N_SysEx;
extern char *SysExMsg[];
- if (i < 0 || i > N_SysEx)
+ if (i < 0 || i >= N_SysEx)
{
char buf[80];
@@ -1210,7 +1215,7 @@ mci_generate_persistent_path(host, path, pathlen, createflag)
if (tTd(56, 80))
printf("mci_generate_persistent_path(%s): ", host);
- if (*host == '\0')
+ if (*host == '\0' || *host == '.')
return -1;
/* make certain this is not a bracketed host number */
@@ -1231,17 +1236,21 @@ mci_generate_persistent_path(host, path, pathlen, createflag)
(elem[-1] == '.' || (host[0] == '[' && elem[-1] == ']')))
*--elem = '\0';
+ /* check for bogus bracketed address */
+ if (host[0] == '[' && inet_addr(t_host) == INADDR_NONE)
+ return -1;
+
/* check for what will be the final length of the path */
len = strlen(HostStatDir) + 2;
- for (p = (char *) host; *p != '\0'; p++)
+ for (p = (char *) t_host; *p != '\0'; p++)
{
- if (*p == '|' || *p == '.')
+ if (*p == '.')
len++;
len++;
if (p[0] == '.' && p[1] == '.')
return -1;
}
- if (len > pathlen)
+ if (len > pathlen || len < 1)
return -1;
strcpy(path, HostStatDir);
@@ -1261,12 +1270,10 @@ mci_generate_persistent_path(host, path, pathlen, createflag)
x = elem + 1;
while ((ch = *x++) != '\0' && ch != '.')
{
- if (isupper(ch))
+ if (isascii(ch) && isupper(ch))
ch = tolower(ch);
- if (ch == '|')
- *p++ = '|'; /* | -> || */
- else if (ch == '/')
- ch = '|'; /* / -> | */
+ if (ch == '/')
+ ch = ':'; /* / -> : */
*p++ = ch;
}
if (elem >= t_host)
diff --git a/usr.sbin/sendmail/src/mime.c b/contrib/sendmail/src/mime.c
index 3e5a610bb39f..11a141e4f8a3 100644
--- a/usr.sbin/sendmail/src/mime.c
+++ b/contrib/sendmail/src/mime.c
@@ -1,42 +1,20 @@
/*
- * Copyright (c) 1994, 1996-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1994, 1996-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1994
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
# include "sendmail.h"
# include <string.h>
#ifndef lint
-static char sccsid[] = "@(#)mime.c 8.59 (Berkeley) 5/6/97";
+static char sccsid[] = "@(#)mime.c 8.66 (Berkeley) 5/19/98";
#endif /* not lint */
/*
@@ -306,6 +284,7 @@ mime8to7(mci, header, e, boundaries, flags)
/* skip the early "comment" prologue */
putline("", mci);
+ mci->mci_flags &= ~MCIF_INHEADER;
while (fgets(buf, sizeof buf, e->e_dfp) != NULL)
{
bt = mimeboundary(buf, boundaries);
@@ -992,6 +971,7 @@ mime7to8(mci, header, e)
cataddr(pvp, NULL, buf, sizeof buf, '\0');
cte = newstr(buf);
+ mci->mci_flags |= MCIF_INHEADER;
putline("Content-Transfer-Encoding: 8bit", mci);
snprintf(buf, sizeof buf,
"X-MIME-Autoconverted: from %.200s to 8bit by %s id %s",
@@ -1146,20 +1126,24 @@ mime_fromqp(infile, outfile, state, maxlen)
if ((c1 = *infile++) == 0)
break;
- if (c1 == '\n') /* ignore it */
+ if (c1 == '\n' || (c1 = HEXCHAR(c1)) == -1)
{
+ /* ignore it */
if (state == 0)
return 0;
}
else
{
- if ((c2 = *infile++) == '\0')
- break;
-
- c1 = HEXCHAR(c1);
- c2 = HEXCHAR(c2);
-
- if (++nchar > maxlen)
+ do
+ {
+ if ((c2 = *infile++) == '\0')
+ {
+ c2 = -1;
+ break;
+ }
+ } while ((c2 = HEXCHAR(c2)) == -1);
+
+ if (c2 == -1 || ++nchar > maxlen)
break;
*(*outfile)++ = c1 << 4 | c2;
diff --git a/contrib/sendmail/src/newaliases.1 b/contrib/sendmail/src/newaliases.1
new file mode 100644
index 000000000000..acf324531640
--- /dev/null
+++ b/contrib/sendmail/src/newaliases.1
@@ -0,0 +1,47 @@
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\" Copyright (c) 1983, 1997 Eric P. Allman. All rights reserved.
+.\" Copyright (c) 1985, 1990, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\" @(#)newaliases.1 8.10 (Berkeley) 5/19/98
+.\"
+.Dd May 19, 1998
+.Dt NEWALIASES 1
+.Os BSD 4
+.Sh NAME
+.Nm newaliases
+.Nd rebuild the data base for the mail aliases file
+.Sh SYNOPSIS
+.Nm newaliases
+.Sh DESCRIPTION
+.Nm Newaliases
+rebuilds the random access data base for the mail aliases file
+.Pa /etc/aliases .
+It must be run each time this file is changed in order
+for the change to take effect.
+.Pp
+.Nm Newaliases
+is identical to
+.Dq Li "sendmail -bi" .
+.Pp
+The
+.Nm newaliases
+utility exits 0 on success, and >0 if an error occurs.
+.Sh FILES
+.Bl -tag -width /etc/aliases -compact
+.It Pa /etc/aliases
+The mail aliases file
+.El
+.Sh SEE ALSO
+.Xr aliases 5 ,
+.Xr sendmail 8
+.Sh HISTORY
+The
+.Nm newaliases
+command appeared in
+.Bx 4.0 .
diff --git a/usr.sbin/sendmail/src/parseaddr.c b/contrib/sendmail/src/parseaddr.c
index 783183470436..c3c89b45d2f2 100644
--- a/usr.sbin/sendmail/src/parseaddr.c
+++ b/contrib/sendmail/src/parseaddr.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)parseaddr.c 8.132 (Berkeley) 10/20/97";
+static char sccsid[] = "@(#)parseaddr.c 8.153 (Berkeley) 6/24/98";
#endif /* not lint */
# include "sendmail.h"
@@ -89,8 +67,8 @@ parseaddr(addr, a, flags, delim, delimptr, e)
auto char *delimptrbuf;
bool queueup;
char pvpbuf[PSBUFSIZE];
- extern ADDRESS *buildaddr();
- extern bool invalidaddr();
+ extern ADDRESS *buildaddr __P((char **, ADDRESS *, int, ENVELOPE *));
+ extern bool invalidaddr __P((char *, char *));
extern void allocaddr __P((ADDRESS *, int, char *));
/*
@@ -668,12 +646,12 @@ prescan(addr, delim, pvpbuf, pvpbsize, delimptr, toktab)
}
if (avp >= &av[MAXATOM])
{
- syserr("553 prescan: too many tokens");
+ usrerr("553 prescan: too many tokens");
goto returnnull;
}
if (q - tok > MAXNAME)
{
- syserr("553 prescan: token too long");
+ usrerr("553 prescan: token too long");
goto returnnull;
}
*avp++ = tok;
@@ -761,6 +739,7 @@ rewrite(pvp, ruleset, reclevel, e)
int loopcount;
struct match mlist[MAXMATCH]; /* stores match on LHS */
char *npvp[MAXATOM+1]; /* temporary space for rebuild */
+ char buf[MAXLINE];
extern int callsubr __P((char**, int, ENVELOPE *));
extern int sm_strcasecmp __P((char *, char *));
@@ -845,8 +824,6 @@ rewrite(pvp, ruleset, reclevel, e)
switch (*rp & 0377)
{
- char buf[MAXLINE];
-
case MATCHCLASS:
/* match any phrase in a class */
mlp->pattern = rvp;
@@ -1071,7 +1048,7 @@ rewrite(pvp, ruleset, reclevel, e)
}
else
{
- /* vanilla replacement */
+ /* some sort of replacement */
if (avp >= &npvp[MAXATOM])
{
toolong:
@@ -1079,16 +1056,64 @@ rewrite(pvp, ruleset, reclevel, e)
return EX_DATAERR;
}
if ((*rp & 0377) != MACRODEXPAND)
+ {
+ /* vanilla replacement */
*avp++ = rp;
+ }
else
{
- *avp = macvalue(rp[1], e);
+ /* $&x replacement */
+ char *mval = macvalue(rp[1], e);
+ char **xpvp;
+ int trsize = 0;
+ static size_t pvpb1_size = 0;
+ static char **pvpb1 = NULL;
+ char pvpbuf[PSBUFSIZE];
+
if (tTd(21, 2))
printf("rewrite: RHS $&%s => \"%s\"\n",
macname(rp[1]),
- *avp == NULL ? "(NULL)" : *avp);
- if (*avp != NULL)
- avp++;
+ mval == NULL ? "(NULL)" : mval);
+ if (mval == NULL || *mval == '\0')
+ continue;
+
+ /* save the remainder of the input */
+ for (xpvp = pvp; *xpvp != NULL; xpvp++)
+ trsize += sizeof *xpvp;
+ if (trsize > pvpb1_size)
+ {
+ if (pvpb1 != NULL)
+ free(pvpb1);
+ pvpb1 = (char **)xalloc(trsize);
+ pvpb1_size = trsize;
+ }
+
+ bcopy((char *) pvp, (char *) pvpb1, trsize);
+
+ /* scan the new replacement */
+ xpvp = prescan(mval, '\0', pvpbuf,
+ sizeof pvpbuf, NULL, NULL);
+ if (xpvp == NULL)
+ {
+ /* prescan pre-printed error */
+ return EX_DATAERR;
+ }
+
+ /* insert it into the output stream */
+ while (*xpvp != NULL)
+ {
+ if (tTd(21, 19))
+ printf(" ... %s\n", *xpvp);
+ *avp++ = newstr(*xpvp);
+ if (avp >= &npvp[MAXATOM])
+ goto toolong;
+ xpvp++;
+ }
+ if (tTd(21, 19))
+ printf(" ... DONE\n");
+
+ /* restore the old trailing input */
+ bcopy((char *) pvpb1, (char *) pvp, trsize);
}
}
}
@@ -1239,11 +1264,10 @@ rewrite(pvp, ruleset, reclevel, e)
}
/* restore the old trailing information */
+ rvp = avp - 1;
for (xpvp = pvpb1; (*avp++ = *xpvp++) != NULL; )
if (avp >= &npvp[MAXATOM])
goto toolong;
-
- break;
}
/*
@@ -1308,6 +1332,7 @@ callsubr(pvp, reclevel, e)
{
if ((**avp & 0377) == CALLSUBR && avp[1] != NULL)
{
+ stripquotes(avp[1]);
subr = strtorwset(avp[1], NULL, ST_FIND);
if (subr < 0)
{
@@ -1448,10 +1473,29 @@ map_lookup(map, key, argvect, pstat, e)
snprintf(mbuf, sizeof mbuf,
"%.80s map: lookup (%s): deferred",
map->s_name,
- shortenstring(key, 203));
+ shortenstring(key, MAXSHORTSTR));
e->e_message = newstr(mbuf);
}
}
+ if (stat == EX_TEMPFAIL && map->s_map.map_tapp != NULL)
+ {
+ size_t i = strlen(key) + strlen(map->s_map.map_tapp) + 1;
+ static char *rwbuf = NULL;
+ static size_t rwbuflen = 0;
+
+ if (i > rwbuflen)
+ {
+ if (rwbuf != NULL)
+ free(rwbuf);
+ rwbuflen = i;
+ rwbuf = (char *) xalloc(rwbuflen);
+ }
+ snprintf(rwbuf, rwbuflen, "%s%s", key, map->s_map.map_tapp);
+ if (tTd(60, 4))
+ printf("map_lookup tempfail: returning \"%s\"\n",
+ rwbuf);
+ return rwbuf;
+ }
return replac;
}
/*
@@ -1505,7 +1549,9 @@ buildaddr(tv, a, flags, e)
char *mname;
char **hostp;
char hbuf[MAXNAME + 1];
+ static MAILER discardmailer;
static MAILER errormailer;
+ static char *discardargv[] = { "DISCARD", NULL };
static char *errorargv[] = { "ERROR", NULL };
static char ubuf[MAXNAME + 1];
@@ -1522,6 +1568,14 @@ buildaddr(tv, a, flags, e)
/* set up default error return flags */
a->q_flags |= DefaultNotify;
+ if (discardmailer.m_name == NULL)
+ {
+ /* initialize the discard mailer */
+ discardmailer.m_name = "*discard*";
+ discardmailer.m_mailer = "DISCARD";
+ discardmailer.m_argv = discardargv;
+ }
+
/* figure out what net/mailer to use */
if (*tv == NULL || (**tv & 0377) != CANONNET)
{
@@ -1990,7 +2044,7 @@ remotename(name, m, flags, pstat, e)
static char buf[MAXNAME + 1];
char lbuf[MAXNAME + 1];
char pvpbuf[PSBUFSIZE];
- extern char *crackaddr();
+ extern char *crackaddr __P((char *));
if (tTd(12, 1))
printf("remotename(%s)\n", name);
@@ -2251,6 +2305,7 @@ dequote_init(map, args)
** else -- The dequoted buffer.
*/
+/* ARGSUSED2 */
char *
dequote_map(map, name, av, statp)
MAP *map;
@@ -2356,9 +2411,10 @@ rscheck(rwset, p1, p2, e)
char *buf;
int bufsize;
int saveexitstat;
- int rstat;
+ int rstat = EX_OK;
char **pvp;
int rsno;
+ bool discard = FALSE;
auto ADDRESS a1;
bool saveQuickAbort = QuickAbort;
bool saveSuprErrs = SuprErrs;
@@ -2404,25 +2460,49 @@ rscheck(rwset, p1, p2, e)
SuprErrs = saveSuprErrs;
if (pvp == NULL)
{
+ if (tTd(48, 2))
+ printf("rscheck: cannot prescan input\n");
+/*
syserr("rscheck: cannot prescan input: \"%s\"",
- shortenstring(buf, 203));
+ shortenstring(buf, MAXSHORTSTR));
rstat = EX_DATAERR;
+*/
goto finis;
}
(void) rewrite(pvp, rsno, 0, e);
if (pvp[0] == NULL || (pvp[0][0] & 0377) != CANONNET ||
- pvp[1] == NULL || strcmp(pvp[1], "error") != 0)
+ pvp[1] == NULL || (strcmp(pvp[1], "error") != 0 &&
+ strcmp(pvp[1], "discard") != 0))
{
- rstat = EX_OK;
goto finis;
}
- /* got an error -- process it */
- saveexitstat = ExitStat;
- (void) buildaddr(pvp, &a1, 0, e);
- rstat = ExitStat;
- ExitStat = saveexitstat;
-
+ if (strcmp(pvp[1], "discard") == 0)
+ {
+ if (tTd(48, 2))
+ printf("rscheck: discard mailer selected\n");
+ e->e_flags |= EF_DISCARD;
+ discard = TRUE;
+ }
+ else
+ {
+ int savelogusrerrs = LogUsrErrs;
+ static bool logged = FALSE;
+
+ /* got an error -- process it */
+ saveexitstat = ExitStat;
+ LogUsrErrs = FALSE;
+ (void) buildaddr(pvp, &a1, 0, e);
+ LogUsrErrs = savelogusrerrs;
+ rstat = ExitStat;
+ ExitStat = saveexitstat;
+ if (!logged)
+ {
+ markstats(e, &a1, TRUE);
+ logged = TRUE;
+ }
+ }
+
if (LogLevel >= 4)
{
char *relay;
@@ -2444,9 +2524,14 @@ rscheck(rwset, p1, p2, e)
p += strlen(p);
}
*p = '\0';
- sm_syslog(LOG_NOTICE, e->e_id,
- "ruleset=%s, arg1=%s%s, reject=%s",
- rwset, p1, lbuf, MsgBuf);
+ if (discard)
+ sm_syslog(LOG_NOTICE, e->e_id,
+ "ruleset=%s, arg1=%s%s, discard",
+ rwset, p1, lbuf);
+ else
+ sm_syslog(LOG_NOTICE, e->e_id,
+ "ruleset=%s, arg1=%s%s, reject=%s",
+ rwset, p1, lbuf, MsgBuf);
}
finis:
diff --git a/contrib/sendmail/src/pathnames.h b/contrib/sendmail/src/pathnames.h
new file mode 100644
index 000000000000..e10387ee398e
--- /dev/null
+++ b/contrib/sendmail/src/pathnames.h
@@ -0,0 +1,32 @@
+/*-
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ *
+ *
+ * @(#)pathnames.h 8.8 (Berkeley) 5/19/98
+ */
+
+#ifndef _PATH_SENDMAILCF
+# if defined(USE_VENDOR_CF_PATH) && defined(_PATH_VENDOR_CF)
+# define _PATH_SENDMAILCF _PATH_VENDOR_CF
+# else
+# define _PATH_SENDMAILCF "/etc/sendmail.cf"
+# endif
+#endif
+
+#ifndef _PATH_SENDMAILPID
+# ifdef BSD4_4
+# define _PATH_SENDMAILPID "/var/run/sendmail.pid"
+# else
+# define _PATH_SENDMAILPID "/etc/sendmail.pid"
+# endif
+#endif
+
+#ifndef _PATH_HOSTS
+# define _PATH_HOSTS "/etc/hosts"
+#endif
diff --git a/usr.sbin/sendmail/src/queue.c b/contrib/sendmail/src/queue.c
index d48efb1179b7..24b789a251b8 100644
--- a/usr.sbin/sendmail/src/queue.c
+++ b/contrib/sendmail/src/queue.c
@@ -1,44 +1,22 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
# include "sendmail.h"
#ifndef lint
#if QUEUE
-static char sccsid[] = "@(#)queue.c 8.175 (Berkeley) 10/4/97 (with queueing)";
+static char sccsid[] = "@(#)queue.c 8.202 (Berkeley) 6/15/98 (with queueing)";
#else
-static char sccsid[] = "@(#)queue.c 8.175 (Berkeley) 10/4/97 (without queueing)";
+static char sccsid[] = "@(#)queue.c 8.202 (Berkeley) 6/15/98 (without queueing)";
#endif
#endif /* not lint */
@@ -163,7 +141,7 @@ queueup(e, announce)
newid ? " (new id)" : "");
if (tTd(40, 3))
{
- extern void printenvflags();
+ extern void printenvflags __P((ENVELOPE *));
printf(" e_flags=");
printenvflags(e);
@@ -225,10 +203,10 @@ queueup(e, announce)
fprintf(tfp, "V%d\n", QF_VERSION);
/* output creation time */
- fprintf(tfp, "T%ld\n", e->e_ctime);
+ fprintf(tfp, "T%ld\n", (long) e->e_ctime);
/* output last delivery time */
- fprintf(tfp, "K%ld\n", e->e_dtime);
+ fprintf(tfp, "K%ld\n", (long) e->e_dtime);
/* output number of delivery attempts */
fprintf(tfp, "N%d\n", e->e_ntries);
@@ -239,8 +217,16 @@ queueup(e, announce)
/* output inode number of data file */
/* XXX should probably include device major/minor too */
if (e->e_dfino != -1)
- fprintf(tfp, "I%d/%d/%ld\n",
- major(e->e_dfdev), minor(e->e_dfdev), e->e_dfino);
+ {
+ if (sizeof e->e_dfino > sizeof(long))
+ fprintf(tfp, "I%d/%d/%s\n",
+ major(e->e_dfdev), minor(e->e_dfdev),
+ quad_to_string(e->e_dfino));
+ else
+ fprintf(tfp, "I%d/%d/%lu\n",
+ major(e->e_dfdev), minor(e->e_dfdev),
+ (unsigned long) e->e_dfino);
+ }
/* output body type */
if (e->e_bodytype != NULL)
@@ -360,7 +346,7 @@ queueup(e, announce)
define('g', "\201f", e);
for (h = e->e_header; h != NULL; h = h->h_link)
{
- extern bool bitzerop();
+ extern bool bitzerop __P((BITMAP));
/* don't output null headers */
if (h->h_value == NULL || h->h_value[0] == '\0')
@@ -477,7 +463,7 @@ printctladdr(a, tfp)
register ADDRESS *q;
uid_t uid;
gid_t gid;
- static ADDRESS *lastctladdr;
+ static ADDRESS *lastctladdr = NULL;
static uid_t lastuid;
/* initialization */
@@ -599,12 +585,10 @@ runqueue(forkflag, verbose)
{
pid_t pid;
extern SIGFUNC_DECL intsig __P((int));
-#ifdef SIGCHLD
extern SIGFUNC_DECL reapchild __P((int));
blocksignal(SIGCHLD);
(void) setsignal(SIGCHLD, reapchild);
-#endif
pid = dofork();
if (pid == -1)
@@ -626,27 +610,18 @@ runqueue(forkflag, verbose)
if (pid != 0)
{
/* parent -- pick up intermediate zombie */
-#ifndef SIGCHLD
- (void) waitfor(pid);
-#else
(void) blocksignal(SIGALRM);
proc_list_add(pid);
(void) releasesignal(SIGALRM);
releasesignal(SIGCHLD);
-#endif /* SIGCHLD */
if (QueueIntvl != 0)
(void) setevent(QueueIntvl, runqueueevent, 0);
return TRUE;
}
/* child -- double fork and clean up signals */
proc_list_clear();
-#ifndef SIGCHLD
- if (fork() != 0)
- exit(EX_OK);
-#else /* SIGCHLD */
releasesignal(SIGCHLD);
(void) setsignal(SIGCHLD, SIG_DFL);
-#endif /* SIGCHLD */
(void) setsignal(SIGHUP, intsig);
}
@@ -775,7 +750,7 @@ runqueue(forkflag, verbose)
else
{
pid_t pid;
- extern pid_t dowork();
+ extern pid_t dowork __P((char *, bool, bool, ENVELOPE *));
if (Verbose)
{
@@ -842,20 +817,40 @@ orderq(doall)
{
register struct dirent *d;
register WORK *w;
+ register char *p;
DIR *f;
register int i;
int wn = -1;
int wc;
-
+ QUEUE_CHAR *check;
+
if (tTd(41, 1))
{
printf("orderq:\n");
- if (QueueLimitId != NULL)
- printf("\tQueueLimitId = %s\n", QueueLimitId);
- if (QueueLimitSender != NULL)
- printf("\tQueueLimitSender = %s\n", QueueLimitSender);
- if (QueueLimitRecipient != NULL)
- printf("\tQueueLimitRecipient = %s\n", QueueLimitRecipient);
+
+ check = QueueLimitId;
+ while (check != NULL)
+ {
+ printf("\tQueueLimitId = %s\n",
+ check->queue_match);
+ check = check->queue_next;
+ }
+
+ check = QueueLimitSender;
+ while (check != NULL)
+ {
+ printf("\tQueueLimitSender = %s\n",
+ check->queue_match);
+ check = check->queue_next;
+ }
+
+ check = QueueLimitRecipient;
+ while (check != NULL)
+ {
+ printf("\tQueueLimitRecipient = %s\n",
+ check->queue_match);
+ check = check->queue_next;
+ }
}
/* clear out old WorkQ */
@@ -886,9 +881,9 @@ orderq(doall)
while ((d = readdir(f)) != NULL)
{
FILE *cf;
- register char *p;
+ int qfver = 0;
char lbuf[MAXNAME + 1];
- extern bool strcontainedin();
+ extern bool strcontainedin __P((char *, char *));
if (tTd(41, 50))
printf("orderq: checking %s\n", d->d_name);
@@ -900,8 +895,15 @@ orderq(doall)
if (strlen(d->d_name) > MAXQFNAME)
continue;
- if (QueueLimitId != NULL &&
- !strcontainedin(QueueLimitId, d->d_name))
+ check = QueueLimitId;
+ while (check != NULL)
+ {
+ if (strcontainedin(check->queue_match, d->d_name))
+ break;
+ else
+ check = check->queue_next;
+ }
+ if (QueueLimitId != NULL && check == NULL)
continue;
#ifdef PICKY_QF_NAME_CHECK
@@ -984,10 +986,9 @@ orderq(doall)
i |= NEED_R;
while (i != 0 && fgets(lbuf, sizeof lbuf, cf) != NULL)
{
- int qfver = 0;
- char *p;
int c;
- extern bool strcontainedin();
+ time_t age;
+ extern bool strcontainedin __P((char *, char *));
p = strchr(lbuf, '\n');
if (p != NULL)
@@ -1032,18 +1033,37 @@ orderq(doall)
}
else
p = &lbuf[1];
- if (strcontainedin(QueueLimitRecipient, p))
+ check = QueueLimitRecipient;
+ while (check != NULL)
+ {
+ if (strcontainedin(check->queue_match,
+ p))
+ break;
+ else
+ check = check->queue_next;
+ }
+ if (check != NULL)
i &= ~NEED_R;
break;
case 'S':
- if (QueueLimitSender != NULL &&
- strcontainedin(QueueLimitSender, &lbuf[1]))
- i &= ~NEED_S;
+ check = QueueLimitSender;
+ while (check != NULL)
+ {
+ if (strcontainedin(check->queue_match,
+ &lbuf[1]))
+ break;
+ else
+ check = check->queue_next;
+ }
+ if (check != NULL)
+ i &= ~NEED_S;
break;
case 'K':
- if ((curtime() - (time_t) atol(&lbuf[1])) < MinQueueAge)
+ age = curtime() - (time_t) atol(&lbuf[1]);
+ if (age >= 0 && MinQueueAge > 0 &&
+ age < MinQueueAge)
w->w_tooyoung = TRUE;
break;
@@ -1076,8 +1096,8 @@ orderq(doall)
if (QueueSortOrder == QS_BYHOST)
{
- extern workcmpf1();
- extern workcmpf2();
+ extern int workcmpf1();
+ extern int workcmpf2();
/*
** Sort the work directory for the first time,
@@ -1102,12 +1122,14 @@ orderq(doall)
w = &WorkList[i];
while (++i < wc)
{
+ extern int sm_strcasecmp __P((char *, char *));
+
if (WorkList[i].w_host == NULL &&
w->w_host == NULL)
WorkList[i].w_lock = TRUE;
else if (WorkList[i].w_host != NULL &&
w->w_host != NULL &&
- strcmp(WorkList[i].w_host, w->w_host) == 0)
+ sm_strcasecmp(WorkList[i].w_host, w->w_host) == 0)
WorkList[i].w_lock = TRUE;
else
break;
@@ -1123,7 +1145,7 @@ orderq(doall)
}
else if (QueueSortOrder == QS_BYTIME)
{
- extern workcmpf3();
+ extern int workcmpf3();
/*
** Simple sort based on submission time only.
@@ -1133,7 +1155,7 @@ orderq(doall)
}
else
{
- extern workcmpf0();
+ extern int workcmpf0();
/*
** Simple sort based on queue priority only.
@@ -1163,6 +1185,7 @@ orderq(doall)
if (WorkList != NULL)
free(WorkList);
WorkList = NULL;
+ WorkListSize = 0;
if (tTd(40, 1))
{
@@ -1279,6 +1302,7 @@ workcmpf1(a, b)
register WORK *b;
{
int i;
+ extern int sm_strcasecmp __P((char *, char *));
/* host name */
if (a->w_host != NULL && b->w_host == NULL)
@@ -1286,7 +1310,7 @@ workcmpf1(a, b)
else if (a->w_host == NULL && b->w_host != NULL)
return -1;
if (a->w_host != NULL && b->w_host != NULL &&
- (i = strcmp(a->w_host, b->w_host)))
+ (i = sm_strcasecmp(a->w_host, b->w_host)) != 0)
return i;
/* lock status */
@@ -1320,6 +1344,7 @@ workcmpf2(a, b)
register WORK *b;
{
int i;
+ extern int sm_strcasecmp __P((char *, char *));
/* lock status */
if (a->w_lock != b->w_lock)
@@ -1331,7 +1356,7 @@ workcmpf2(a, b)
else if (a->w_host == NULL && b->w_host != NULL)
return -1;
if (a->w_host != NULL && b->w_host != NULL &&
- (i = strcmp(a->w_host, b->w_host)))
+ (i = sm_strcasecmp(a->w_host, b->w_host)) != 0)
return i;
/* job priority */
@@ -1392,7 +1417,7 @@ dowork(id, forkflag, requeueflag, e)
register ENVELOPE *e;
{
register pid_t pid;
- extern bool readqf();
+ extern bool readqf __P((ENVELOPE *));
if (tTd(40, 1))
printf("dowork(%s)\n", id);
@@ -1461,7 +1486,7 @@ dowork(id, forkflag, requeueflag, e)
/* read the queue control file -- return if locked */
if (!readqf(e))
{
- if (tTd(40, 4))
+ if (tTd(40, 4) && e->e_id != NULL)
printf("readqf(%s) failed\n", e->e_id);
e->e_id = NULL;
if (forkflag)
@@ -1748,10 +1773,11 @@ readqf(e)
/* if this has been tried recently, let it be */
if (e->e_ntries > 0 &&
+ MinQueueAge > 0 && e->e_dtime <= curtime() &&
curtime() < e->e_dtime + MinQueueAge)
{
char *howlong = pintvl(curtime() - e->e_dtime, TRUE);
- extern void unlockqueue();
+ extern void unlockqueue __P((ENVELOPE *));
if (Verbose || tTd(40, 8))
printf("%s: too young (%s)\n",
@@ -1825,7 +1851,7 @@ readqf(e)
default:
syserr("readqf: %s: line %d: bad line \"%s\"",
- qf, LineNumber, shortenstring(bp, 203));
+ qf, LineNumber, shortenstring(bp, MAXSHORTSTR));
fclose(qfp);
loseqfile(e, "unrecognized line");
return FALSE;
@@ -2100,6 +2126,13 @@ printqueue()
** locked, open-for-write file pointer in the envelope.
*/
+#ifndef ENOLCK
+# define ENOLCK -1
+#endif
+#ifndef ENOSPC
+# define ENOSPC -1
+#endif
+
char *
queuename(e, type)
register ENVELOPE *e;
@@ -2133,6 +2166,7 @@ queuename(e, type)
while (c1 < '~' || c2 < 'Z')
{
int i;
+ int attempts = 0;
if (c2 >= 'Z')
{
@@ -2153,10 +2187,32 @@ queuename(e, type)
qf, QueueDir, geteuid());
exit(EX_UNAVAILABLE);
}
- if (lockfile(i, qf, NULL, LOCK_EX|LOCK_NB))
+ do
{
- e->e_lockfp = fdopen(i, "w");
+ if (attempts > 0)
+ sleep(attempts);
+ e->e_lockfp = 0;
+ if (lockfile(i, qf, NULL, LOCK_EX|LOCK_NB))
+ {
+ e->e_lockfp = fdopen(i, "w");
+ break;
+ }
+ } while ((errno == ENOLCK || errno == ENOSPC) &&
+ attempts++ < 4);
+
+ /* Successful lock */
+ if (e->e_lockfp != 0)
break;
+
+#if !HASFLOCK
+ if (errno != EAGAIN && errno != EACCES)
+#else
+ if (errno != EWOULDBLOCK)
+#endif
+ {
+ syserr("queuename: Cannot lock \"%s\" in \"%s\" (euid=%d)",
+ qf, QueueDir, geteuid());
+ exit(EX_OSERR);
}
/* a reader got the file; abandon it and try again */
diff --git a/usr.sbin/sendmail/src/readcf.c b/contrib/sendmail/src/readcf.c
index 681c3d3a1d7c..db71937fba6e 100644
--- a/usr.sbin/sendmail/src/readcf.c
+++ b/contrib/sendmail/src/readcf.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)readcf.c 8.201 (Berkeley) 10/1/97";
+static char sccsid[] = "@(#)readcf.c 8.230 (Berkeley) 6/5/98";
#endif /* not lint */
# include "sendmail.h"
@@ -43,9 +21,9 @@ static char sccsid[] = "@(#)readcf.c 8.201 (Berkeley) 10/1/97";
#endif
/*
-** READCF -- read control file.
+** READCF -- read configuration file.
**
-** This routine reads the control file and builds the internal
+** This routine reads the configuration file and builds the internal
** form.
**
** The file is formatted as a sequence of lines, each taken
@@ -77,7 +55,7 @@ static char sccsid[] = "@(#)readcf.c 8.201 (Berkeley) 10/1/97";
** Eenvar=value Set the environment value to the given value.
**
** Parameters:
-** cfname -- control file name.
+** cfname -- configuration file name.
** safe -- TRUE if this is the system config file;
** FALSE otherwise.
** e -- the main envelope.
@@ -233,10 +211,6 @@ readcf(cfname, safe, e)
botch = "$0-$9";
break;
- case CANONNET:
- botch = "$#";
- break;
-
case CANONUSER:
botch = "$:";
break;
@@ -536,7 +510,7 @@ readcf(cfname, safe, e)
default:
badline:
- syserr("unknown control line \"%s\"", bp);
+ syserr("unknown configuration line \"%s\"", bp);
}
if (bp != buf)
free(bp);
@@ -750,7 +724,11 @@ fileclass(class, filename, fmt, safe, optional)
else
{
pid = -1;
- sff = SFF_REGONLY|SFF_NOWLINK;
+ sff = SFF_REGONLY;
+ if (!bitset(DBS_CLASSFILEINUNSAFEDIRPATH, DontBlameSendmail))
+ sff |= SFF_SAFEDIRPATH;
+ if (!bitset(DBS_LINKEDCLASSFILEINWRITABLEDIR, DontBlameSendmail))
+ sff |= SFF_NOWLINK;
if (safe)
sff |= SFF_OPENASROOT;
if (DontLockReadFiles)
@@ -850,7 +828,7 @@ makemailer(line)
char fcode;
auto char *endp;
extern int NextMailer;
- extern char **makeargv();
+ extern char **makeargv __P((char *));
extern char *munchstring __P((char *, char **, int));
/* allocate a mailer and set up defaults */
@@ -1105,6 +1083,24 @@ makemailer(line)
m->m_diagtype = "smtp";
}
+ if (strcmp(m->m_mailer, "[FILE]") == 0)
+ {
+ /* Use the second argument for filename */
+ if (m->m_argv[0] == NULL || m->m_argv[1] == NULL ||
+ m->m_argv[2] != NULL)
+ {
+ syserr("M%s: too %s parameters for [FILE] mailer",
+ m->m_name,
+ (m->m_argv[0] == NULL ||
+ m->m_argv[1] == NULL) ? "few" : "many");
+ }
+ else if (strcmp(m->m_argv[0], "FILE") != 0)
+ {
+ syserr("M%s: first argument in [FILE] mailer must be FILE",
+ m->m_name);
+ }
+ }
+
if (m->m_eol == NULL)
{
char **pp;
@@ -1497,34 +1493,32 @@ struct optioninfo
#define O_PIDFILE 0x9f
{ "PidFile", O_PIDFILE, FALSE },
#endif
-#if _FFR_WRITABLE_DIRECTORIES_ARE_FATAL_OPTION
-#define O_WDAF 0xa0
- { "WritableDirectoriesAreFatal", O_WDAF, FALSE },
-#endif
-#if _FFR_CHOWN_IS_ALWAYS_SAFE_OPTION
-#define O_CIAS 0xa1
- { "ChownIsAlwaysSafe", O_CIAS, FALSE },
-#endif
-#if _FFR_DONT_PROBE_INTERFACES_OPTION
-#define O_DPI 0xa2
+#define O_DONTBLAMESENDMAIL 0xa0
+ { "DontBlameSendmail", O_DONTBLAMESENDMAIL, FALSE },
+#define O_DPI 0xa1
{ "DontProbeInterfaces", O_DPI, FALSE },
-#endif
-#if _FFR_MAXRCPT_OPTION
-#define O_MAXRCPT 0xa3
- { "MaxRecipientPerMessage", O_MAXRCPT, FALSE },
-#endif
+#define O_MAXRCPT 0xa2
+ { "MaxRecipientsPerMessage", O_MAXRCPT, FALSE },
#if _FFR_DEADLETTERDROP_OPTION
-#define O_DEADLETTER 0xa4
+#define O_DEADLETTER 0xa3
{ "DeadLetterDrop", O_DEADLETTER, FALSE },
#endif
#if _FFR_DONTLOCKFILESFORREAD_OPTION
-#define O_DONTLOCK 0xa5
+#define O_DONTLOCK 0xa4
{ "DontLockFilesForRead", O_DONTLOCK, FALSE },
#endif
#if _FFR_MAXALIASRECURSION_OPTION
-#define O_MAXALIASRCSN 0xa6
+#define O_MAXALIASRCSN 0xa5
{ "MaxAliasRecursion", O_MAXALIASRCSN, FALSE },
#endif
+#if _FFR_CONNECTONLYTO_OPTION
+#define O_CNCTONLYTO 0xa6
+ { "ConnectOnlyTo", O_CNCTONLYTO, FALSE },
+#endif
+#if _FFR_TRUSTED_FILE_OWNER
+#define O_TRUSTFILEOWN 0xa7
+ { "TrustedFileOwner", O_TRUSTFILEOWN, FALSE },
+#endif
{ NULL, '\0', FALSE }
};
@@ -1543,10 +1537,11 @@ setoption(opt, val, safe, sticky, e)
register struct optioninfo *o;
char *subopt;
int mid;
+ bool can_setuid = RunAsUid == 0;
auto char *ep;
char buf[50];
- extern bool atobool();
- extern time_t convtime();
+ extern bool atobool __P((char *));
+ extern time_t convtime __P((char *, char));
extern int QueueLA;
extern int RefuseLA;
extern bool Warn_Q_option;
@@ -1778,6 +1773,9 @@ setoption(opt, val, safe, sticky, e)
syserr("Unknown delivery mode %c", *val);
exit(EX_USAGE);
}
+ buf[0] = (char)e->e_sendmode;
+ buf[1] = '\0';
+ define(macid("{deliveryMode}", NULL), newstr(buf), e);
break;
case 'D': /* rebuild alias database as needed */
@@ -2052,7 +2050,10 @@ setoption(opt, val, safe, sticky, e)
}
}
if (isascii(*val) && isdigit(*val))
+ {
DefUid = atoi(val);
+ setdefuser();
+ }
else
{
register struct passwd *pw;
@@ -2065,6 +2066,7 @@ setoption(opt, val, safe, sticky, e)
{
DefUid = pw->pw_uid;
DefGid = pw->pw_gid;
+ DefUser = newstr(pw->pw_name);
}
}
@@ -2075,7 +2077,6 @@ setoption(opt, val, safe, sticky, e)
DefUid, UID_MAX);
}
#endif
- setdefuser();
/* handle the group if it is there */
if (*p == '\0')
@@ -2240,7 +2241,8 @@ setoption(opt, val, safe, sticky, e)
break;
case O_UGW: /* group writable files are unsafe */
- UnsafeGroupWrites = atobool(val);
+ if (!atobool(val))
+ DontBlameSendmail |= DBS_GROUPWRITABLEFORWARDFILESAFE|DBS_GROUPWRITABLEINCLUDEFILESAFE;
break;
case O_DBLBOUNCE: /* address to which to send double bounces */
@@ -2270,7 +2272,7 @@ setoption(opt, val, safe, sticky, e)
}
if (isascii(*val) && isdigit(*val))
{
- if (RunAsUid == 0)
+ if (can_setuid)
RunAsUid = atoi(val);
}
else
@@ -2280,7 +2282,7 @@ setoption(opt, val, safe, sticky, e)
pw = sm_getpwnam(val);
if (pw == NULL)
syserr("readcf: option RunAsUser: unknown user %s", val);
- else if (RunAsUid == 0)
+ else if (can_setuid)
{
if (*p == '\0')
RunAsUserName = newstr(val);
@@ -2288,24 +2290,34 @@ setoption(opt, val, safe, sticky, e)
RunAsGid = pw->pw_gid;
}
}
- if (*p == '\0')
- break;
- if (isascii(*p) && isdigit(*p))
+#ifdef UID_MAX
+ if (RunAsUid > UID_MAX)
{
- if (RunAsGid == 0)
- RunAsGid = atoi(p);
+ syserr("readcf: option RunAsUser: uid value (%ld) > UID_MAX (%ld); ignored",
+ RunAsUid, UID_MAX);
}
- else
+#endif
+ if (*p != '\0')
{
- register struct group *gr;
-
- gr = getgrnam(p);
- if (gr == NULL)
- syserr("readcf: option RunAsUser: unknown group %s",
- p);
- else if (RunAsGid == 0)
- RunAsGid = gr->gr_gid;
+ if (isascii(*p) && isdigit(*p))
+ {
+ if (can_setuid)
+ RunAsGid = atoi(p);
+ }
+ else
+ {
+ register struct group *gr;
+
+ gr = getgrnam(p);
+ if (gr == NULL)
+ syserr("readcf: option RunAsUser: unknown group %s",
+ p);
+ else if (can_setuid)
+ RunAsGid = gr->gr_gid;
+ }
}
+ if (tTd(47, 5))
+ printf("readcf: RunAsUser = %d:%d\n", (int)RunAsUid, (int)RunAsGid);
break;
#if _FFR_DSN_RRT_OPTION
@@ -2321,29 +2333,46 @@ setoption(opt, val, safe, sticky, e)
break;
#endif
-#if _FFR_WRITABLE_DIRECTORIES_ARE_FATAL_OPTION
- case O_WDAF:
- FatalWritableDirs = atobool(val);
- break;
-#endif
+ case O_DONTBLAMESENDMAIL:
+ p = val;
+ for (;;)
+ {
+ register struct dbsval *dbs;
+ extern struct dbsval DontBlameSendmailValues[];
+
+ while (isascii(*p) && (isspace(*p) || ispunct(*p)))
+ p++;
+ if (*p == '\0')
+ break;
+ val = p;
+ while (isascii(*p) && isalnum(*p))
+ p++;
+ if (*p != '\0')
+ *p++ = '\0';
-#if _FFR_CHOWN_IS_ALWAYS_SAFE_OPTION
- case O_CIAS:
- ChownIsAlwaysSafe = atobool(val);
+ for (dbs = DontBlameSendmailValues;
+ dbs->dbs_name != NULL; dbs++)
+ {
+ if (strcasecmp(val, dbs->dbs_name) == 0)
+ break;
+ }
+ if (dbs->dbs_name == NULL)
+ syserr("readcf: DontBlameSendmail option: %s unrecognized", val);
+ else if (dbs->dbs_flag == DBS_SAFE)
+ DontBlameSendmail = DBS_SAFE;
+ else
+ DontBlameSendmail |= dbs->dbs_flag;
+ }
+ sticky = FALSE;
break;
-#endif
-#if _FFR_DONT_PROBE_INTERFACES_OPTION
case O_DPI:
DontProbeInterfaces = atobool(val);
break;
-#endif
-#if _FFR_MAXRCPT_OPTION
case O_MAXRCPT:
MaxRcptPerMsg = atoi(val);
break;
-#endif
#if _FFR_DEADLETTERDROP_OPTION
case O_DEADLETTER:
@@ -2365,6 +2394,40 @@ setoption(opt, val, safe, sticky, e)
break;
#endif
+#if _FFR_CONNECTONLYTO_OPTION
+ case O_CNCTONLYTO:
+ /* XXX should probably use gethostbyname */
+ ConnectOnlyTo = inet_addr(val);
+ break;
+#endif
+
+#if _FFR_TRUSTED_FILE_OWNER
+ case O_TRUSTFILEOWN:
+ if (isascii(*val) && isdigit(*val))
+ TrustedFileUid = atoi(val);
+ else
+ {
+ register struct passwd *pw;
+
+ TrustedFileUid = 0;
+ pw = sm_getpwnam(val);
+ if (pw == NULL)
+ syserr("readcf: option TrustedFileOwner: unknown user %s", val);
+ else
+ TrustedFileUid = pw->pw_uid;
+ }
+
+#ifdef UID_MAX
+ if (TrustedFileUid > UID_MAX)
+ {
+ syserr("readcf: option TrustedFileOwner: uid value (%ld) > UID_MAX (%ld)",
+ TrustedFileUid, UID_MAX);
+ TrustedFileUid = 0;
+ }
+#endif
+ break;
+#endif
+
default:
if (tTd(37, 1))
{
@@ -2536,7 +2599,7 @@ strtorwset(p, endp, stabmode)
while (*p != '\0' && isascii(*p) &&
(isalnum(*p) || *p == '_'))
p++;
- if (q == p || !isalpha(*q))
+ if (q == p || !(isascii(*q) && isalpha(*q)))
{
/* no valid characters */
syserr("invalid ruleset name: \"%.20s\"", q);
@@ -2558,7 +2621,7 @@ strtorwset(p, endp, stabmode)
{
while (isascii(*++p) && isspace(*p))
continue;
- if (!isdigit(*p))
+ if (!(isascii(*p) && isdigit(*p)))
{
syserr("bad ruleset definition \"%s\" (number required after `=')", q);
ruleset = -1;
@@ -2623,7 +2686,7 @@ inittimeouts(val)
register char *val;
{
register char *p;
- extern time_t convtime();
+ extern time_t convtime __P((char *, char));
if (tTd(37, 2))
printf("inittimeouts(%s)\n", val == NULL ? "<NULL>" : val);
@@ -2650,20 +2713,20 @@ inittimeouts(val)
if (tTd(37, 5))
{
printf("Timeouts:\n");
- printf(" connect = %ld\n", TimeOuts.to_connect);
- printf(" initial = %ld\n", TimeOuts.to_initial);
- printf(" helo = %ld\n", TimeOuts.to_helo);
- printf(" mail = %ld\n", TimeOuts.to_mail);
- printf(" rcpt = %ld\n", TimeOuts.to_rcpt);
- printf(" datainit = %ld\n", TimeOuts.to_datainit);
- printf(" datablock = %ld\n", TimeOuts.to_datablock);
- printf(" datafinal = %ld\n", TimeOuts.to_datafinal);
- printf(" rset = %ld\n", TimeOuts.to_rset);
- printf(" quit = %ld\n", TimeOuts.to_quit);
- printf(" nextcommand = %ld\n", TimeOuts.to_nextcommand);
- printf(" miscshort = %ld\n", TimeOuts.to_miscshort);
- printf(" ident = %ld\n", TimeOuts.to_ident);
- printf(" fileopen = %ld\n", TimeOuts.to_fileopen);
+ printf(" connect = %ld\n", (long)TimeOuts.to_connect);
+ printf(" initial = %ld\n", (long)TimeOuts.to_initial);
+ printf(" helo = %ld\n", (long)TimeOuts.to_helo);
+ printf(" mail = %ld\n", (long)TimeOuts.to_mail);
+ printf(" rcpt = %ld\n", (long)TimeOuts.to_rcpt);
+ printf(" datainit = %ld\n", (long)TimeOuts.to_datainit);
+ printf(" datablock = %ld\n", (long)TimeOuts.to_datablock);
+ printf(" datafinal = %ld\n", (long)TimeOuts.to_datafinal);
+ printf(" rset = %ld\n", (long)TimeOuts.to_rset);
+ printf(" quit = %ld\n", (long)TimeOuts.to_quit);
+ printf(" nextcommand = %ld\n", (long)TimeOuts.to_nextcommand);
+ printf(" miscshort = %ld\n", (long)TimeOuts.to_miscshort);
+ printf(" ident = %ld\n", (long)TimeOuts.to_ident);
+ printf(" fileopen = %ld\n", (long)TimeOuts.to_fileopen);
}
return;
}
@@ -2722,7 +2785,7 @@ settimeout(name, val)
{
register char *p;
time_t to;
- extern time_t convtime();
+ extern time_t convtime __P((char *, char));
if (tTd(37, 2))
printf("settimeout(%s = %s)\n", name, val);
diff --git a/usr.sbin/sendmail/src/recipient.c b/contrib/sendmail/src/recipient.c
index adcce7acf835..9a73b6a39cf9 100644
--- a/usr.sbin/sendmail/src/recipient.c
+++ b/contrib/sendmail/src/recipient.c
@@ -1,42 +1,21 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)recipient.c 8.133 (Berkeley) 10/19/97";
+static char sccsid[] = "@(#)recipient.c 8.154 (Berkeley) 6/24/98";
#endif /* not lint */
# include "sendmail.h"
+# include <grp.h>
/*
** SENDTOLIST -- Designate a send list.
@@ -134,7 +113,7 @@ sendtolist(list, ctladdr, sendq, aliaslevel, e)
if (ctladdr != NULL)
{
ADDRESS *b;
- extern ADDRESS *self_reference();
+ extern ADDRESS *self_reference __P((ADDRESS *, ENVELOPE *));
/* self reference test */
if (sameaddr(ctladdr, a))
@@ -312,6 +291,7 @@ recipient(a, sendq, aliaslevel, e)
{
a->q_flags |= QBADADDR;
a->q_status = "5.7.1";
+ a->q_rstatus = newstr("Unsafe for mailing to programs");
usrerr("550 Address %s is unsafe for mailing to programs",
a->q_alias->q_paddr);
}
@@ -328,7 +308,9 @@ recipient(a, sendq, aliaslevel, e)
for (pq = sendq; (q = *pq) != NULL; pq = &q->q_next)
{
- if (sameaddr(q, a) && bitset(QRCPTOK, q->q_flags))
+ if (sameaddr(q, a) &&
+ (bitset(QRCPTOK, q->q_flags) ||
+ !bitset(QPRIMARY, q->q_flags)))
{
if (tTd(26, 1))
{
@@ -383,12 +365,12 @@ recipient(a, sendq, aliaslevel, e)
if (LogLevel > 2)
sm_syslog(LOG_ERR, e->e_id,
"include %s: transient error: %s",
- shortenstring(a->q_user, 203),
+ shortenstring(a->q_user, MAXSHORTSTR),
errstring(ret));
a->q_flags |= QQUEUEUP;
a->q_flags &= ~QDONTSEND;
usrerr("451 Cannot open %s: %s",
- shortenstring(a->q_user, 203),
+ shortenstring(a->q_user, MAXSHORTSTR),
errstring(ret));
}
else if (ret != 0)
@@ -396,14 +378,14 @@ recipient(a, sendq, aliaslevel, e)
a->q_flags |= QBADADDR;
a->q_status = "5.2.4";
usrerr("550 Cannot open %s: %s",
- shortenstring(a->q_user, 203),
+ shortenstring(a->q_user, MAXSHORTSTR),
errstring(ret));
}
}
}
else if (m == FileMailer)
{
- extern bool writable();
+ extern bool writable __P((char *, ADDRESS *, int));
/* check if writable or creatable */
if (a->q_alias == NULL)
@@ -427,6 +409,7 @@ recipient(a, sendq, aliaslevel, e)
{
a->q_flags |= QBADADDR;
a->q_status = "5.7.1";
+ a->q_rstatus = newstr("Unsafe for mailing to files");
usrerr("550 Address %s is unsafe for mailing to files",
a->q_alias->q_paddr);
}
@@ -452,7 +435,7 @@ recipient(a, sendq, aliaslevel, e)
if (!bitset(QDONTSEND|QNOTREMOTE|QVERIFIED, a->q_flags) &&
bitnset(M_CHECKUDB, m->m_flags))
{
- extern int udbexpand();
+ extern int udbexpand __P((ADDRESS *, ADDRESS **, int, ENVELOPE *));
if (udbexpand(a, sendq, aliaslevel, e) == EX_TEMPFAIL)
{
@@ -856,7 +839,11 @@ writable(filename, ctladdr, flags)
if (geteuid() == 0 &&
(ctladdr == NULL || !bitset(QGOODUID, ctladdr->q_flags)))
flags |= SFF_SETUIDOK;
- flags |= SFF_NOLINK;
+
+ if (!bitset(DBS_FILEDELIVERYTOSYMLINK, DontBlameSendmail))
+ flags |= SFF_NOSLINK;
+ if (!bitset(DBS_FILEDELIVERYTOHARDLINK, DontBlameSendmail))
+ flags |= SFF_NOHLINK;
errno = safefile(filename, euid, egid, uname, flags, S_IWRITE, NULL);
return errno == 0;
@@ -898,7 +885,7 @@ writable(filename, ctladdr, flags)
*/
static jmp_buf CtxIncludeTimeout;
-static void includetimeout();
+static void includetimeout __P((void));
int
include(fname, forwarding, ctladdr, sendq, aliaslevel, e)
@@ -915,6 +902,7 @@ include(fname, forwarding, ctladdr, sendq, aliaslevel, e)
int oldlinenumber = LineNumber;
register EVENT *ev = NULL;
int nincludes;
+ int mode;
register ADDRESS *ca;
volatile uid_t saveduid, uid;
volatile gid_t savedgid, gid;
@@ -926,7 +914,7 @@ include(fname, forwarding, ctladdr, sendq, aliaslevel, e)
volatile bool safedir = FALSE;
struct stat st;
char buf[MAXLINE];
- extern bool chownsafe();
+ extern bool chownsafe __P((int, bool));
if (tTd(27, 2))
printf("include(%s)\n", fname);
@@ -964,9 +952,22 @@ include(fname, forwarding, ctladdr, sendq, aliaslevel, e)
if (saveduid == 0)
{
if (!DontInitGroups)
- initgroups(uname, gid);
- if (gid != 0)
- (void) setgid(gid);
+ {
+ if (initgroups(uname, gid) == -1)
+ syserr("include: initgroups(%s, %d) failed",
+ uname, gid);
+ }
+ else
+ {
+ GIDSET_T gidset[1];
+
+ gidset[0] = gid;
+ if (setgroups(1, gidset) == -1)
+ syserr("include: setgroups() failed");
+ }
+
+ if (gid != 0 && setgid(gid) < -1)
+ syserr("setgid(%d) failure", gid);
if (uid != 0)
{
# if USESETEUID
@@ -978,8 +979,6 @@ include(fname, forwarding, ctladdr, sendq, aliaslevel, e)
syserr("setreuid(0, %d) failure (real=%d, eff=%d)",
uid, getuid(), geteuid());
# endif
- else
- sfflags |= SFF_NOPATHCHECK;
}
}
#endif
@@ -1011,18 +1010,63 @@ include(fname, forwarding, ctladdr, sendq, aliaslevel, e)
p = strrchr(fname, '/');
if (p != NULL)
{
+ int ret;
+
*p = '\0';
- if (safedirpath(fname, uid, gid, uname, sfflags|SFF_SAFEDIRPATH) == 0)
+ ret = safedirpath(fname, uid, gid, uname, sfflags|SFF_SAFEDIRPATH);
+ if (ret == 0)
{
/* in safe directory: relax chown & link rules */
safedir = TRUE;
sfflags |= SFF_NOPATHCHECK;
}
+ else
+ {
+ if (bitset((forwarding ?
+ DBS_FORWARDFILEINUNSAFEDIRPATH :
+ DBS_INCLUDEFILEINUNSAFEDIRPATH),
+ DontBlameSendmail))
+ sfflags |= SFF_NOPATHCHECK;
+ else if (bitset((forwarding ?
+ DBS_FORWARDFILEINGROUPWRITABLEDIRPATH :
+ DBS_INCLUDEFILEINGROUPWRITABLEDIRPATH),
+ DontBlameSendmail) &&
+ ret == E_SM_GWDIR)
+ {
+ DontBlameSendmail |= DBS_GROUPWRITABLEDIRPATHSAFE;
+ ret = safedirpath(fname, uid,
+ gid, uname,
+ sfflags|SFF_SAFEDIRPATH);
+ DontBlameSendmail &= ~DBS_GROUPWRITABLEDIRPATHSAFE;
+ if (ret == 0)
+ sfflags |= SFF_NOPATHCHECK;
+ else
+ sfflags |= SFF_SAFEDIRPATH;
+ }
+ else
+ sfflags |= SFF_SAFEDIRPATH;
+ if (ret > E_PSEUDOBASE &&
+ !bitset((forwarding ?
+ DBS_FORWARDFILEINUNSAFEDIRPATHSAFE :
+ DBS_INCLUDEFILEINUNSAFEDIRPATHSAFE),
+ DontBlameSendmail))
+ {
+ if (LogLevel >= 12)
+ sm_syslog(LOG_INFO, e->e_id,
+ "%s: unsafe directory path, marked unsafe",
+ shortenstring(fname, MAXSHORTSTR));
+ ctladdr->q_flags |= QUNSAFEADDR;
+ }
+ }
*p = '/';
}
/* allow links only in unwritable directories */
- if (!safedir)
+ if (!safedir &&
+ !bitset((forwarding ?
+ DBS_LINKEDFORWARDFILEINWRITABLEDIR :
+ DBS_LINKEDINCLUDEFILEINWRITABLEDIR),
+ DontBlameSendmail))
sfflags |= SFF_NOLINK;
rval = safefile(fname, uid, gid, uname, sfflags, S_IREAD, &st);
@@ -1039,7 +1083,7 @@ include(fname, forwarding, ctladdr, sendq, aliaslevel, e)
if (tTd(27, 4))
printf("include: open: %s\n", errstring(rval));
}
- else if (filechanged(fname, fileno(fp), &st, sfflags))
+ else if (filechanged(fname, fileno(fp), &st))
{
rval = E_SM_FILECHANGE;
if (tTd(27, 4))
@@ -1130,7 +1174,7 @@ resetuid:
if (LogLevel >= 12)
sm_syslog(LOG_INFO, e->e_id,
"%s: user %s has bad shell %s, marked %s",
- shortenstring(fname, 203),
+ shortenstring(fname, MAXSHORTSTR),
pw->pw_name, sh,
safechown ? "bogus" : "unsafe");
if (safechown)
@@ -1156,17 +1200,25 @@ resetuid:
** Group write checking could be more clever, e.g.,
** guessing as to which groups are actually safe ("sys"
** may be; "user" probably is not).
- ** Also, we don't check for writable
- ** directories in the path. We've got to leave
- ** something for the local sysad to do.
*/
- if (bitset(S_IWOTH | (UnsafeGroupWrites ? S_IWGRP : 0), st.st_mode))
+ mode = S_IWOTH;
+ if (!bitset((forwarding ?
+ DBS_GROUPWRITABLEFORWARDFILESAFE :
+ DBS_GROUPWRITABLEINCLUDEFILESAFE),
+ DontBlameSendmail))
+ mode |= S_IWGRP;
+
+ if (bitset(mode, st.st_mode))
{
+ if (tTd(27, 6))
+ printf("include: %s is %s writable, marked unsafe\n",
+ shortenstring(fname, MAXSHORTSTR),
+ bitset(S_IWOTH, st.st_mode) ? "world" : "group");
if (LogLevel >= 12)
sm_syslog(LOG_INFO, e->e_id,
"%s: %s writable %s file, marked unsafe",
- shortenstring(fname, 203),
+ shortenstring(fname, MAXSHORTSTR),
bitset(S_IWOTH, st.st_mode) ? "world" : "group",
forwarding ? "forward" : ":include:");
ctladdr->q_flags |= QUNSAFEADDR;
@@ -1208,7 +1260,7 @@ resetuid:
if (forwarding && LogLevel > 9)
sm_syslog(LOG_INFO, e->e_id,
"forward %.200s => %s",
- oldto, shortenstring(buf, 203));
+ oldto, shortenstring(buf, MAXSHORTSTR));
nincludes += sendtolist(buf, ctladdr, sendq, aliaslevel + 1, e);
}
diff --git a/usr.sbin/sendmail/src/safefile.c b/contrib/sendmail/src/safefile.c
index 842a09f8ca86..16f3f3927c99 100644
--- a/usr.sbin/sendmail/src/safefile.c
+++ b/contrib/sendmail/src/safefile.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)safefile.c 8.18 (Berkeley) 8/1/97";
+static char sccsid[] = "@(#)safefile.c 8.40 (Berkeley) 6/5/98";
#endif /* not lint */
# include "sendmail.h"
@@ -63,18 +41,6 @@ static char sccsid[] = "@(#)safefile.c 8.18 (Berkeley) 8/1/97";
#include <grp.h>
-#ifndef S_IXOTH
-# define S_IXOTH (S_IEXEC >> 6)
-#endif
-
-#ifndef S_IXGRP
-# define S_IXGRP (S_IEXEC >> 3)
-#endif
-
-#ifndef S_IXUSR
-# define S_IXUSR (S_IEXEC)
-#endif
-
int
safefile(fn, uid, gid, uname, flags, mode, st)
char *fn;
@@ -135,7 +101,8 @@ safefile(fn, uid, gid, uname, flags, mode, st)
#ifdef SUID_ROOT_FILES_OK
if (bitset(S_ISUID, st->st_mode))
#else
- if (bitset(S_ISUID, st->st_mode) && st->st_uid != 0)
+ if (bitset(S_ISUID, st->st_mode) && st->st_uid != 0 &&
+ st->st_uid != TrustedFileUid)
#endif
{
uid = st->st_uid;
@@ -174,6 +141,16 @@ safefile(fn, uid, gid, uname, flags, mode, st)
}
else
{
+#ifdef HASLSTAT
+ /* Need lstat() information if called stat() before */
+ if (!bitset(SFF_NOSLINK, flags) && lstat(fn, st) < 0)
+ {
+ ret = errno;
+ if (tTd(44, 4))
+ printf("\t%s\n", errstring(ret));
+ return ret;
+ }
+#endif
/* directory is writable: disallow links */
flags |= SFF_NOLINK;
}
@@ -226,8 +203,34 @@ safefile(fn, uid, gid, uname, flags, mode, st)
if (stat(dir, &stbuf) >= 0)
{
int md = S_IWRITE|S_IEXEC;
- if (stbuf.st_uid != uid)
- md >>= 6;
+
+ if (stbuf.st_uid == uid)
+ ;
+ else if (uid == 0 && TrustedFileUid != 0 && stbuf.st_uid == TrustedFileUid)
+ ;
+ else
+ {
+ md >>= 3;
+ if (stbuf.st_gid == gid)
+ ;
+#ifndef NO_GROUP_SET
+ else if (uname != NULL && !DontInitGroups &&
+ ((gr != NULL &&
+ gr->gr_gid == stbuf.st_gid) ||
+ (gr = getgrgid(stbuf.st_gid)) != NULL))
+ {
+ register char **gp;
+
+ for (gp = gr->gr_mem; *gp != NULL; gp++)
+ if (strcmp(*gp, uname) == 0)
+ break;
+ if (*gp == NULL)
+ md >>= 3;
+ }
+#endif
+ else
+ md >>= 3;
+ }
if ((stbuf.st_mode & md) != md)
errno = EACCES;
}
@@ -246,40 +249,47 @@ safefile(fn, uid, gid, uname, flags, mode, st)
if (bitset(SFF_NOSLINK, flags) && S_ISLNK(st->st_mode))
{
if (tTd(44, 4))
- printf("\t[slink mode %o]\tE_SM_NOSLINK\n",
- st->st_mode);
+ printf("\t[slink mode %lo]\tE_SM_NOSLINK\n",
+ (u_long) st->st_mode);
return E_SM_NOSLINK;
}
#endif
if (bitset(SFF_REGONLY, flags) && !S_ISREG(st->st_mode))
{
if (tTd(44, 4))
- printf("\t[non-reg mode %o]\tE_SM_REGONLY\n",
- st->st_mode);
+ printf("\t[non-reg mode %lo]\tE_SM_REGONLY\n",
+ (u_long) st->st_mode);
return E_SM_REGONLY;
}
- if (bitset(SFF_NOWFILES, flags) &&
- bitset(S_IWOTH | (UnsafeGroupWrites ? S_IWGRP : 0), st->st_mode))
+ if (bitset(SFF_NOGWFILES, flags) &&
+ bitset(S_IWGRP, st->st_mode))
{
if (tTd(44, 4))
- printf("\t[write bits %o]\tE_SM_%cWFILE\n",
- st->st_mode,
- bitset(S_IWOTH, st->st_mode) ? 'W' : 'G');
- return bitset(S_IWOTH, st->st_mode) ? E_SM_WWFILE : E_SM_GWFILE;
+ printf("\t[write bits %lo]\tE_SM_GWFILE\n",
+ (u_long) st->st_mode);
+ return E_SM_GWFILE;
+ }
+ if (bitset(SFF_NOWWFILES, flags) &&
+ bitset(S_IWOTH, st->st_mode))
+ {
+ if (tTd(44, 4))
+ printf("\t[write bits %lo]\tE_SM_WWFILE\n",
+ (u_long) st->st_mode);
+ return E_SM_WWFILE;
}
if (bitset(S_IWUSR|S_IWGRP|S_IWOTH, mode) &&
bitset(S_IXUSR|S_IXGRP|S_IXOTH, st->st_mode))
{
if (tTd(44, 4))
- printf("\t[exec bits %o]\tE_SM_ISEXEC]\n",
- st->st_mode);
+ printf("\t[exec bits %lo]\tE_SM_ISEXEC]\n",
+ (u_long) st->st_mode);
return E_SM_ISEXEC;
}
if (bitset(SFF_NOHLINK, flags) && st->st_nlink != 1)
{
if (tTd(44, 4))
printf("\t[link count %d]\tE_SM_NOHLINK\n",
- st->st_nlink);
+ (int) st->st_nlink);
return E_SM_NOHLINK;
}
@@ -287,7 +297,11 @@ safefile(fn, uid, gid, uname, flags, mode, st)
;
else if (uid == 0 && !bitset(SFF_ROOTOK, flags))
mode >>= 6;
- else if (st->st_uid != uid)
+ else if (st->st_uid == uid)
+ ;
+ else if (uid == 0 && TrustedFileUid != 0 && st->st_uid == TrustedFileUid)
+ ;
+ else
{
mode >>= 3;
if (st->st_gid == gid)
@@ -314,6 +328,7 @@ safefile(fn, uid, gid, uname, flags, mode, st)
(int) st->st_uid, (int) st->st_nlink,
(u_long) st->st_mode, (u_long) mode);
if ((st->st_uid == uid || st->st_uid == 0 ||
+ st->st_uid == TrustedFileUid ||
!bitset(SFF_MUSTOWN, flags)) &&
(st->st_mode & mode) == mode)
{
@@ -357,6 +372,7 @@ safedirpath(fn, uid, gid, uname, flags)
char *p;
register struct group *gr = NULL;
int ret = 0;
+ int mode = S_IWOTH;
struct stat stbuf;
/* special case root directory */
@@ -367,6 +383,9 @@ safedirpath(fn, uid, gid, uname, flags)
printf("safedirpath(%s, uid=%ld, gid=%ld, flags=%x):\n",
fn, (long) uid, (long) gid, flags);
+ if (!bitset(DBS_GROUPWRITABLEDIRPATHSAFE, DontBlameSendmail))
+ mode |= S_IWGRP;
+
p = fn;
do
{
@@ -381,11 +400,11 @@ safedirpath(fn, uid, gid, uname, flags)
break;
}
if ((uid == 0 || bitset(SFF_SAFEDIRPATH, flags)) &&
- bitset(S_IWGRP|S_IWOTH, stbuf.st_mode))
+ bitset(mode, stbuf.st_mode))
{
if (tTd(44, 4))
- printf("\t[dir %s] mode %o\n",
- fn, stbuf.st_mode);
+ printf("\t[dir %s] mode %lo\n",
+ fn, (u_long) stbuf.st_mode);
if (bitset(SFF_SAFEDIRPATH, flags))
{
if (bitset(S_IWOTH, stbuf.st_mode))
@@ -395,7 +414,11 @@ safedirpath(fn, uid, gid, uname, flags)
break;
}
if (Verbose > 1)
- message("051 WARNING: writable directory %s", fn);
+ message("051 WARNING: %s writable directory %s",
+ bitset(S_IWOTH, stbuf.st_mode)
+ ? "World"
+ : "Group",
+ fn);
}
if (uid == 0 && !bitset(SFF_ROOTOK|SFF_OPENASROOT, flags))
{
@@ -404,6 +427,15 @@ safedirpath(fn, uid, gid, uname, flags)
ret = EACCES;
break;
}
+
+ /*
+ ** Let OS determine access to file if we are not
+ ** running as a privileged user. This allows ACLs
+ ** to work.
+ */
+ if (geteuid() != 0)
+ continue;
+
if (stbuf.st_uid == uid &&
bitset(S_IXUSR, stbuf.st_mode))
continue;
@@ -505,7 +537,7 @@ safeopen(fn, omode, cmode, sff)
fd = dfopen(fn, omode, cmode, sff);
if (fd < 0)
return fd;
- if (filechanged(fn, fd, &stb, sff))
+ if (filechanged(fn, fd, &stb))
{
syserr("554 cannot open: file %s changed after open", fn);
close(fd);
@@ -594,7 +626,6 @@ safefopen(fn, omode, cmode, sff)
** fn -- pathname of file to check.
** fd -- file descriptor to check.
** stb -- stat structure from before open.
-** sff -- safe file flags.
**
** Returns:
** TRUE -- if a problem was detected.
@@ -602,11 +633,10 @@ safefopen(fn, omode, cmode, sff)
*/
bool
-filechanged(fn, fd, stb, sff)
+filechanged(fn, fd, stb)
char *fn;
int fd;
struct stat *stb;
- int sff;
{
struct stat sta;
@@ -639,8 +669,17 @@ filechanged(fn, fd, stb, sff)
(long) stb->st_nlink, (long) sta.st_nlink);
printf(" dev = %ld/%ld\n",
(long) stb->st_dev, (long) sta.st_dev);
- printf(" ino = %ld/%ld\n",
- (long) stb->st_ino, (long) sta.st_ino);
+ if (sizeof sta.st_ino > sizeof (long))
+ {
+ printf(" ino = %s/",
+ quad_to_string(stb->st_ino));
+ printf("%s\n",
+ quad_to_string(sta.st_ino));
+ }
+ else
+ printf(" ino = %lu/%lu\n",
+ (unsigned long) stb->st_ino,
+ (unsigned long) sta.st_ino);
#if HAS_ST_GEN
printf(" gen = %ld/%ld\n",
(long) stb->st_gen, (long) sta.st_gen);
diff --git a/usr.sbin/sendmail/src/savemail.c b/contrib/sendmail/src/savemail.c
index 76209dcc40e5..4fbfd675621b 100644
--- a/usr.sbin/sendmail/src/savemail.c
+++ b/contrib/sendmail/src/savemail.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)savemail.c 8.121 (Berkeley) 10/22/97";
+static char sccsid[] = "@(#)savemail.c 8.138 (Berkeley) 6/17/98";
#endif /* not lint */
# include "sendmail.h"
@@ -84,8 +62,8 @@ savemail(e, sendbody)
MCI mcibuf;
int flags;
char buf[MAXLINE+1];
- extern char *ttypath();
- extern bool writable();
+ extern char *ttypath __P((void));
+ extern bool writable __P((char *, ADDRESS *, int));
if (tTd(6, 1))
{
@@ -366,9 +344,11 @@ savemail(e, sendbody)
/* we have a home directory; write dead.letter */
define('z', p, e);
expand("\201z/dead.letter", buf, sizeof buf, e);
- flags = SFF_NOLINK|SFF_CREAT|SFF_REGONLY|SFF_RUNASREALUID;
+ flags = SFF_CREAT|SFF_REGONLY|SFF_RUNASREALUID;
+ if (RealUid == 0)
+ flags |= SFF_ROOTOK;
e->e_to = buf;
- if (mailfile(buf, NULL, flags, e) == EX_OK)
+ if (mailfile(buf, FileMailer, NULL, flags, e) == EX_OK)
{
int oldverb = Verbose;
@@ -399,7 +379,7 @@ savemail(e, sendbody)
break;
}
- flags = SFF_NOLINK|SFF_CREAT|SFF_REGONLY|SFF_ROOTOK|SFF_OPENASROOT|SFF_MUSTOWN;
+ flags = SFF_CREAT|SFF_REGONLY|SFF_ROOTOK|SFF_OPENASROOT|SFF_MUSTOWN;
if (!writable(DeadLetterDrop, NULL, flags) ||
(fp = safefopen(DeadLetterDrop, O_WRONLY|O_APPEND,
FileMode, flags)) == NULL)
@@ -413,6 +393,7 @@ savemail(e, sendbody)
mcibuf.mci_mailer = FileMailer;
if (bitnset(M_7BITS, FileMailer->m_flags))
mcibuf.mci_flags |= MCIF_7BIT;
+ mcibuf.mci_contentlen = 0;
putfromline(&mcibuf, e);
(*e->e_puthdr)(&mcibuf, e->e_header, e);
@@ -483,7 +464,7 @@ returntosender(msg, returnq, flags, e)
register ENVELOPE *ee;
ENVELOPE *oldcur = CurEnv;
ENVELOPE errenvelope;
- static int returndepth;
+ static int returndepth = 0;
register ADDRESS *q;
char *p;
char buf[MAXNAME + 1];
@@ -562,7 +543,7 @@ returntosender(msg, returnq, flags, e)
p = "DSN";
sm_syslog(LOG_INFO, e->e_id,
"%s: %s: %s",
- ee->e_id, p, shortenstring(msg, 203));
+ ee->e_id, p, shortenstring(msg, MAXSHORTSTR));
}
if (SendMIMEErrors)
@@ -641,7 +622,7 @@ returntosender(msg, returnq, flags, e)
eatheader(ee, TRUE);
/* mark statistics */
- markstats(ee, NULLADDR);
+ markstats(ee, NULLADDR, FALSE);
/* actually deliver the error message */
sendall(ee, SM_DELIVER);
@@ -764,14 +745,16 @@ errbody(mci, e, separator)
if (DontLockReadFiles)
sff |= SFF_NOLOCK;
+ if (!bitset(DBS_ERRORHEADERINUNSAFEDIRPATH, DontBlameSendmail))
+ sff |= SFF_SAFEDIRPATH;
xfile = safefopen(ErrMsgFile, O_RDONLY, 0444, sff);
if (xfile != NULL)
{
while (fgets(buf, sizeof buf, xfile) != NULL)
{
-#if _FFR_BUG_FIX
+ extern void translate_dollars __P((char *));
+
translate_dollars(buf);
-#endif
expand(buf, buf, sizeof buf, e);
putline(buf, mci);
}
@@ -805,12 +788,13 @@ errbody(mci, e, separator)
printheader = FALSE;
}
- snprintf(buf, sizeof buf, "%s", shortenstring(q->q_paddr, 203));
+ snprintf(buf, sizeof buf, "%s",
+ shortenstring(q->q_paddr, MAXSHORTSTR));
putline(buf, mci);
if (q->q_alias != NULL)
{
snprintf(buf, sizeof buf, " (expanded from: %s)",
- shortenstring(q->q_alias->q_paddr, 203));
+ shortenstring(q->q_alias->q_paddr, MAXSHORTSTR));
putline(buf, mci);
}
}
@@ -832,12 +816,13 @@ errbody(mci, e, separator)
printheader = FALSE;
}
- snprintf(buf, sizeof buf, "%s", shortenstring(q->q_paddr, 203));
+ snprintf(buf, sizeof buf, "%s",
+ shortenstring(q->q_paddr, MAXSHORTSTR));
putline(buf, mci);
if (q->q_alias != NULL)
{
snprintf(buf, sizeof buf, " (expanded from: %s)",
- shortenstring(q->q_alias->q_paddr, 203));
+ shortenstring(q->q_alias->q_paddr, MAXSHORTSTR));
putline(buf, mci);
}
}
@@ -875,12 +860,12 @@ errbody(mci, e, separator)
}
snprintf(buf, sizeof buf, "%s (%s)",
- shortenstring(q->q_paddr, 203), p);
+ shortenstring(q->q_paddr, MAXSHORTSTR), p);
putline(buf, mci);
if (q->q_alias != NULL)
{
snprintf(buf, sizeof buf, " (expanded from: %s)",
- shortenstring(q->q_alias->q_paddr, 203));
+ shortenstring(q->q_alias->q_paddr, MAXSHORTSTR));
putline(buf, mci);
}
}
diff --git a/usr.sbin/sendmail/src/sendmail.8 b/contrib/sendmail/src/sendmail.8
index 9a0a687f8763..5105e831d359 100644
--- a/usr.sbin/sendmail/src/sendmail.8
+++ b/contrib/sendmail/src/sendmail.8
@@ -1,38 +1,16 @@
-.\" Copyright (c) 1983, 1997 Eric P. Allman
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\" Copyright (c) 1983, 1997 Eric P. Allman. All rights reserved.
.\" Copyright (c) 1988, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
.\"
-.\" @(#)sendmail.8 8.12 (Berkeley) 2/1/97
+.\" @(#)sendmail.8 8.19 (Berkeley) 5/19/98
.\"
-.Dd February 1, 1997
+.Dd May 19, 1998
.Dt SENDMAIL 8
.Os BSD 4
.Sh NAME
@@ -275,11 +253,6 @@ flag.
Read message for recipients.
To:, Cc:, and Bcc: lines will be scanned for recipient addresses.
The Bcc: line will be deleted before transmission.
-Any addresses in the argument list will be suppressed,
-that is,
-they will
-.Em not
-receive copies even if listed in the message header.
.It Fl U
Initial (user) submission.
This should
@@ -553,7 +526,7 @@ will print the contents of the mail queue.
.Sh FILES
Except for the file
.Pa /etc/sendmail.cf
-itself,
+itself and the daemon process ID file,
the following pathnames are all specified in
.Pa /etc/sendmail.cf.
Thus,
@@ -572,8 +545,6 @@ help file
collected statistics
.It Pa /var/spool/mqueue/*
temp files
-.It Pa /var/run/sendmail.pid
-The process id of the daemon
.El
.Sh SEE ALSO
.Xr binmail 1 ,
diff --git a/usr.sbin/sendmail/src/sendmail.h b/contrib/sendmail/src/sendmail.h
index fc3bf4942ca0..7bfe11b76069 100644
--- a/usr.sbin/sendmail/src/sendmail.h
+++ b/contrib/sendmail/src/sendmail.h
@@ -1,37 +1,15 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*
- * @(#)sendmail.h 8.245 (Berkeley) 10/22/97
+ * @(#)sendmail.h 8.280 (Berkeley) 6/5/98
*/
/*
@@ -41,7 +19,7 @@
# ifdef _DEFINE
# define EXTERN
# ifndef lint
-static char SmailSccsId[] = "@(#)sendmail.h 8.245 10/22/97";
+static char SmailSccsId[] = "@(#)sendmail.h 8.280 6/5/98";
# endif
# else /* _DEFINE */
# define EXTERN extern
@@ -94,6 +72,14 @@ static char SmailSccsId[] = "@(#)sendmail.h 8.245 10/22/97";
# endif
#endif
+#ifdef HESIOD
+# include <hesiod.h>
+# if !defined(HES_ER_OK) || defined(HESIOD_INTERFACES)
+# define HESIOD_INIT /* support for the new interface */
+EXTERN void *HesiodContext;
+# endif
+#endif
+
/*
** Following are "sort of" configuration constants, but they should
** be pretty solid on most architectures today. They have to be
@@ -337,6 +323,7 @@ MCI
short mci_herrno; /* h_errno from last DNS lookup */
short mci_exitstat; /* exit status from last connection */
short mci_state; /* SMTP state */
+ off_t mci_contentlen; /* body length for Content-Length: */
long mci_maxsize; /* max size this server will accept */
FILE *mci_in; /* input side of connection */
FILE *mci_out; /* output side of connection */
@@ -384,7 +371,7 @@ extern void mci_flush __P((bool, MCI *));
extern void mci_dump __P((MCI *, bool));
extern void mci_dump_all __P((bool));
extern MCI **mci_scan __P((MCI *));
-extern int mci_traverse_persistent __P((int (), char *));
+extern int mci_traverse_persistent __P((int (*)(), char *));
extern int mci_print_persistent __P((char *, char *));
extern int mci_purge_persistent __P((char *, char *));
extern int mci_lock_host __P((MCI *));
@@ -526,6 +513,7 @@ struct envelope
#define EF_HAS_DF 0x0200000 /* set when df file is instantiated */
#define EF_IS_MIME 0x0400000 /* really is a MIME message */
#define EF_DONT_MIME 0x0800000 /* never MIME this message */
+#define EF_DISCARD 0x1000000 /* discard the message */
EXTERN ENVELOPE *CurEnv; /* envelope currently being processed */
@@ -692,6 +680,7 @@ MAP
u_char map_valcolno; /* value column number */
char map_coldelim; /* column delimiter */
char *map_app; /* to append to successful matches */
+ char *map_tapp; /* to append to "tempfail" matches */
char *map_domain; /* the (nominal) NIS domain */
char *map_rebuild; /* program to run to do auto-rebuild */
time_t map_mtime; /* last database modification time */
@@ -720,6 +709,7 @@ MAP
# define MF_APPEND 0x00008000 /* append new entry on rebuiled */
# define MF_KEEPQUOTES 0x00010000 /* don't dequote key before lookup */
# define MF_NODEFER 0x00020000 /* don't defer if map lookup fails */
+# define MF_REGEX_NOT 0x00040000 /* regular expression negation */
/* indices for map_actions */
# define MA_NOTFOUND 0 /* member map returned "not found" */
@@ -754,7 +744,7 @@ MAPCLASS
#define MCF_OPTFILE 0x0008 /* file name is optional */
/* functions */
-extern char *map_rewrite __P((MAP *, const char *, int, char **));
+extern char *map_rewrite __P((MAP *, const char *, size_t, char **));
extern MAP *makemapentry __P((char *));
extern void initmaps __P((bool, ENVELOPE *));
/*
@@ -949,6 +939,7 @@ EXTERN int NoRecipientAction;
#define PRIV_AUTHWARNINGS 0x0020 /* flag possible authorization probs */
#define PRIV_NORECEIPTS 0x0040 /* disallow return receipts */
#define PRIV_NOETRN 0x0080 /* disallow ETRN command entirely */
+#define PRIV_NOVERB 0x0100 /* disallow VERB command entirely */
#define PRIV_RESTRICTMAILQ 0x1000 /* restrict mailq command */
#define PRIV_RESTRICTQRUN 0x2000 /* restrict queue run */
#define PRIV_GOAWAY 0x0fff /* don't give no info, anyway, anyhow */
@@ -991,11 +982,12 @@ struct prival
#define SFF_SAFEDIRPATH 0x0100 /* no writable directories allowed */
#define SFF_NOHLINK 0x0200 /* file cannot have hard links */
#define SFF_NOWLINK 0x0400 /* links only in non-writable dirs */
-#define SFF_NOWFILES 0x0800 /* disallow world writable files */
+#define SFF_NOGWFILES 0x0800 /* disallow world writable files */
+#define SFF_NOWWFILES 0x1000 /* disallow group writable files */
/* flags that are actually specific to safeopen/safefopen/dfopen */
-#define SFF_OPENASROOT 0x1000 /* open as root instead of real user */
-#define SFF_NOLOCK 0x2000 /* don't lock the file */
+#define SFF_OPENASROOT 0x2000 /* open as root instead of real user */
+#define SFF_NOLOCK 0x4000 /* don't lock the file */
/* pseudo-flags */
#define SFF_NOLINK (SFF_NOHLINK|SFF_NOSLINK)
@@ -1006,7 +998,7 @@ extern int safedirpath __P((char *, UID_T, GID_T, char *, int));
extern int safeopen __P((char *, int, int, int));
extern FILE *safefopen __P((char *, int, int, int));
extern int dfopen __P((char *, int, int, int));
-extern bool filechanged __P((char *, int, struct stat *, int));
+extern bool filechanged __P((char *, int, struct stat *));
/*
@@ -1060,7 +1052,7 @@ EXTERN SOCKADDR RealHostAddr; /* address of host we are talking to */
extern char *hostnamebyanyaddr __P((SOCKADDR *));
extern char *anynet_ntoa __P((SOCKADDR *));
# if DAEMON
-extern bool validate_connection __P((SOCKADDR *, char *, ENVELOPE *));
+extern char *validate_connection __P((SOCKADDR *, char *, ENVELOPE *));
# endif
#endif
@@ -1092,6 +1084,51 @@ EXTERN int VendorCode; /* vendor-specific operation enhancements */
extern void vendor_set_uid __P((UID_T));
extern void vendor_daemon_setup __P((ENVELOPE *));
+/*
+** DontBlameSendmail options
+**
+** Hopefully nobody uses these.
+*/
+#define DBS_SAFE 0
+#define DBS_ASSUMESAFECHOWN 0x00000001
+#define DBS_GROUPWRITABLEDIRPATHSAFE 0x00000002
+#define DBS_GROUPWRITABLEFORWARDFILESAFE 0x00000004
+#define DBS_GROUPWRITABLEINCLUDEFILESAFE 0x00000008
+#define DBS_GROUPWRITABLEALIASFILE 0x00000010
+#define DBS_WORLDWRITABLEALIASFILE 0x00000020
+#define DBS_FORWARDFILEINUNSAFEDIRPATH 0x00000040
+#define DBS_INCLUDEFILEINUNSAFEDIRPATH 0x00000060
+#define DBS_MAPINUNSAFEDIRPATH 0x00000080
+#define DBS_LINKEDALIASFILEINWRITABLEDIR 0x00000100
+#define DBS_LINKEDCLASSFILEINWRITABLEDIR 0x00000200
+#define DBS_LINKEDFORWARDFILEINWRITABLEDIR 0x00000400
+#define DBS_LINKEDINCLUDEFILEINWRITABLEDIR 0x00000800
+#define DBS_LINKEDMAPINWRITABLEDIR 0x00001000
+#define DBS_LINKEDSERVICESWITCHFILEINWRITABLEDIR 0x00002000
+#define DBS_FILEDELIVERYTOHARDLINK 0x00004000
+#define DBS_FILEDELIVERYTOSYMLINK 0x00008000
+#define DBS_WRITEMAPTOHARDLINK 0x00010000
+#define DBS_WRITEMAPTOSYMLINK 0x00020000
+#define DBS_WRITESTATSTOHARDLINK 0x00040000
+#define DBS_WRITESTATSTOSYMLINK 0x00080000
+#define DBS_FORWARDFILEINGROUPWRITABLEDIRPATH 0x00100000
+#define DBS_INCLUDEFILEINGROUPWRITABLEDIRPATH 0x00200000
+#define DBS_CLASSFILEINUNSAFEDIRPATH 0x00400000
+#define DBS_ERRORHEADERINUNSAFEDIRPATH 0x00800000
+#define DBS_HELPFILEINUNSAFEDIRPATH 0x01000000
+#define DBS_FORWARDFILEINUNSAFEDIRPATHSAFE 0x02000000
+#define DBS_INCLUDEFILEINUNSAFEDIRPATHSAFE 0x04000000
+#define DBS_RUNPROGRAMINUNSAFEDIRPATH 0x08000000
+#define DBS_RUNWRITABLEPROGRAM 0x10000000
+
+/* struct defining such things */
+struct dbsval
+{
+ char *dbs_name; /* name of DontBlameSendmail flag */
+ long dbs_flag; /* numeric level */
+};
+
+EXTERN long DontBlameSendmail; /* DontBlameSendmail option bits */
/*
** Terminal escape codes.
@@ -1146,6 +1183,7 @@ EXTERN gid_t RealGid; /* real gid of caller */
EXTERN uid_t DefUid; /* default uid to run as */
EXTERN gid_t DefGid; /* default gid to run as */
EXTERN char *DefUser; /* default user to run as (from DefUid) */
+EXTERN uid_t TrustedFileUid; /* uid of trusted owner of files and dirs */
EXTERN MODE_T OldUmask; /* umask when sendmail starts up */
EXTERN int Verbose; /* set if blow-by-blow desired */
EXTERN int Errors; /* set if errors (local to single pass) */
@@ -1215,6 +1253,7 @@ EXTERN uid_t RunAsUid; /* UID to become for bulk of run */
EXTERN gid_t RunAsGid; /* GID to become for bulk of run */
EXTERN int MaxRcptPerMsg; /* max recipients per SMTP message */
EXTERN bool DoQueueRun; /* non-interrupt time queue run needed */
+EXTERN u_long ConnectOnlyTo; /* override connection address (for testing) */
#if _FFR_DSN_RRT_OPTION
EXTERN bool RrtImpliesDsn; /* turn Return-Receipt-To: into DSN */
#endif
@@ -1223,7 +1262,6 @@ EXTERN bool DontProbeInterfaces; /* don't probe interfaces for names */
EXTERN bool ChownAlwaysSafe; /* treat chown(2) as safe */
EXTERN bool IgnoreHostStatus; /* ignore long term host status files */
EXTERN bool SingleThreadDelivery; /* single thread hosts on delivery */
-EXTERN bool UnsafeGroupWrites; /* group-writable files are unsafe */
EXTERN bool SingleLineFromHeader; /* force From: header to be one line */
EXTERN bool DontLockReadFiles; /* don't read lock support files */
EXTERN int ConnRateThrottle; /* throttle for SMTP connection rate */
@@ -1242,17 +1280,27 @@ EXTERN time_t ServiceCacheTime; /* time service switch was cached */
EXTERN time_t ServiceCacheMaxAge; /* refresh interval for cache */
EXTERN time_t MciCacheTimeout; /* maximum idle time on connections */
EXTERN time_t MciInfoTimeout; /* how long 'til we retry down hosts */
-EXTERN char *QueueLimitRecipient; /* limit queue runs to this recipient */
-EXTERN char *QueueLimitSender; /* limit queue runs to this sender */
-EXTERN char *QueueLimitId; /* limit queue runs to this id */
EXTERN FILE *TrafficLogFile; /* file in which to log all traffic */
EXTERN char *DoubleBounceAddr; /* where to send double bounces */
-EXTERN bool FatalWritableDirs; /* no writable dirs in map paths */
EXTERN char **ExternalEnviron; /* input environment */
EXTERN char *UserEnviron[MAXUSERENVIRON + 1];
/* saved user environment */
extern int errno;
+/*
+** Queue Run Limitations
+*/
+struct queue_char
+{
+ char *queue_match; /* string to match */
+ struct queue_char *queue_next;
+};
+
+typedef struct queue_char QUEUE_CHAR;
+
+EXTERN QUEUE_CHAR *QueueLimitRecipient; /* limit queue runs to this recipient */
+EXTERN QUEUE_CHAR *QueueLimitSender; /* limit queue runs to this sender */
+EXTERN QUEUE_CHAR *QueueLimitId; /* limit queue runs to this id */
/*
** Timeouts
@@ -1334,10 +1382,10 @@ EXTERN u_char tTdvect[100];
extern char *xalloc __P((int));
extern char *sfgets __P((char *, int, FILE *, time_t, char *));
extern char *queuename __P((ENVELOPE *, int));
-extern time_t curtime __P(());
+extern time_t curtime __P((void));
extern bool transienterror __P((int));
extern char *fgetfolded __P((char *, int, FILE *));
-extern char *username __P(());
+extern char *username __P((void));
extern char *pintvl __P((time_t, bool));
extern bool shouldqueue __P((long, time_t));
extern bool lockfile __P((int, char *, char *, int));
@@ -1350,9 +1398,9 @@ extern char *defcharset __P((ENVELOPE *));
extern bool wordinclass __P((char *, int));
extern char *denlstring __P((char *, bool, bool));
extern void makelower __P((char *));
-extern void rebuildaliases __P((MAP *, bool));
+extern bool rebuildaliases __P((MAP *, bool));
extern void readaliases __P((MAP *, FILE *, bool, bool));
-extern void finis __P(());
+extern void finis __P((void));
extern void setsender __P((char *, ENVELOPE *, char **, int, bool));
extern void xputs __P((const char *));
extern void logsender __P((ENVELOPE *, char *));
@@ -1409,10 +1457,10 @@ extern void sendall __P((ENVELOPE *, int));
extern void queueup __P((ENVELOPE *, bool));
extern void checkfds __P((char *));
extern int returntosender __P((char *, ADDRESS *, int, ENVELOPE *));
-extern void markstats __P((ENVELOPE *, ADDRESS *));
+extern void markstats __P((ENVELOPE *, ADDRESS *, bool));
extern void poststats __P((char *));
extern char *arpadate __P((char *));
-extern int mailfile __P((char *, ADDRESS *, int, ENVELOPE *));
+extern int mailfile __P((char *volatile, MAILER *volatile, ADDRESS *, volatile int, ENVELOPE *));
extern void loseqfile __P((ENVELOPE *, char *));
extern int prog_open __P((char **, int *, ENVELOPE *));
extern bool getcanonname __P((char *, int, bool));
@@ -1437,30 +1485,16 @@ extern void checkfd012 __P((char *));
#endif
/* ellipsis is a different case though */
-#ifdef __STDC__
-extern void auth_warning(ENVELOPE *, const char *, ...);
-extern void syserr(const char *, ...);
-extern void usrerr(const char *, ...);
-extern void message(const char *, ...);
-extern void nmessage(const char *, ...);
-extern void setproctitle(const char *, ...);
-extern void sm_syslog(int, const char *, const char *, ...);
-#else
-extern void auth_warning();
-extern void syserr();
-extern void usrerr();
-extern void message();
-extern void nmessage();
-extern void setproctitle();
-extern void sm_syslog();
-#endif
+extern void auth_warning __P((ENVELOPE *, const char *, ...));
+extern void syserr __P((const char *, ...));
+extern void usrerr __P((const char *, ...));
+extern void message __P((const char *, ...));
+extern void nmessage __P((const char *, ...));
+extern void setproctitle __P((const char *, ...));
+extern void sm_syslog __P((int, const char *, const char *, ...));
#if !HASSNPRINTF
-# ifdef __STDC__
-extern int snprintf(char *, size_t, const char *, ...);
-extern int vsnprintf(char *, size_t, const char *, va_list);
-# else
-extern int snprintf();
-extern int vsnprintf();
-# endif
+extern int snprintf __P((char *, size_t, const char *, ...));
+extern int vsnprintf __P((char *, size_t, const char *, va_list));
#endif
+extern char *quad_to_string __P((QUAD_T));
diff --git a/usr.sbin/sendmail/src/sendmail.hf b/contrib/sendmail/src/sendmail.hf
index 7ab6d6139e18..12a306012b38 100644
--- a/usr.sbin/sendmail/src/sendmail.hf
+++ b/contrib/sendmail/src/sendmail.hf
@@ -1,9 +1,15 @@
cpyr
-cpyr Copyright (c) 1983, 1995-1997 Eric P. Allman
+cpyr Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+cpyr Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
cpyr Copyright (c) 1988, 1993
cpyr The Regents of the University of California. All rights reserved.
cpyr
-cpyr @(#)sendmail.hf 8.12 (Berkeley) 2/1/97
+cpyr
+cpyr By using this file, you agree to the terms and conditions set
+cpyr forth in the LICENSE file which can be found at the top level of
+cpyr the sendmail distribution.
+cpyr
+cpyr @(#)sendmail.hf 8.16 (Berkeley) 5/19/98
cpyr
smtp Topics:
smtp HELO EHLO MAIL RCPT DATA
diff --git a/contrib/sendmail/src/snprintf.c b/contrib/sendmail/src/snprintf.c
new file mode 100644
index 000000000000..9e0b6f14f15a
--- /dev/null
+++ b/contrib/sendmail/src/snprintf.c
@@ -0,0 +1,428 @@
+/*
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1997 Eric P. Allman. All rights reserved.
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ *
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)snprintf.c 8.11 (Berkeley) 6/4/98";
+#endif /* not lint */
+
+#include "sendmail.h"
+
+ /*
+** SNPRINTF, VSNPRINT -- counted versions of printf
+**
+** These versions have been grabbed off the net. They have been
+** cleaned up to compile properly and support for .precision and
+** %lx has been added.
+*/
+
+/**************************************************************
+ * Original:
+ * Patrick Powell Tue Apr 11 09:48:21 PDT 1995
+ * A bombproof version of doprnt (sm_dopr) included.
+ * Sigh. This sort of thing is always nasty do deal with. Note that
+ * the version here does not include floating point...
+ *
+ * snprintf() is used instead of sprintf() as it does limit checks
+ * for string length. This covers a nasty loophole.
+ *
+ * The other functions are there to prevent NULL pointers from
+ * causing nast effects.
+ **************************************************************/
+
+/*static char _id[] = "$Id: snprintf.c,v 1.2 1995/10/09 11:19:47 roberto Exp $";*/
+void sm_dopr();
+char *DoprEnd;
+int SnprfOverflow;
+
+#if !HASSNPRINTF
+
+/* VARARGS3 */
+int
+# ifdef __STDC__
+snprintf(char *str, size_t count, const char *fmt, ...)
+# else
+snprintf(str, count, fmt, va_alist)
+ char *str;
+ size_t count;
+ const char *fmt;
+ va_dcl
+#endif
+{
+ int len;
+ VA_LOCAL_DECL
+
+ VA_START(fmt);
+ len = vsnprintf(str, count, fmt, ap);
+ VA_END;
+ return len;
+}
+
+
+# ifndef luna2
+int
+vsnprintf(str, count, fmt, args)
+ char *str;
+ size_t count;
+ const char *fmt;
+ va_list args;
+{
+ str[0] = 0;
+ DoprEnd = str + count - 1;
+ SnprfOverflow = 0;
+ sm_dopr( str, fmt, args );
+ if (count > 0)
+ DoprEnd[0] = 0;
+ if (SnprfOverflow && tTd(57, 2))
+ printf("\nvsnprintf overflow, len = %ld, str = %s",
+ (long) count, shortenstring(str, MAXSHORTSTR));
+ return strlen(str);
+}
+
+# endif /* !luna2 */
+#endif /* !HASSNPRINTF */
+
+/*
+ * sm_dopr(): poor man's version of doprintf
+ */
+
+void fmtstr __P((char *value, int ljust, int len, int zpad, int maxwidth));
+void fmtnum __P((long value, int base, int dosign, int ljust, int len, int zpad));
+void dostr __P(( char * , int ));
+char *output;
+void dopr_outch __P(( int c ));
+int SyslogErrno;
+
+void
+sm_dopr( buffer, format, args )
+ char *buffer;
+ const char *format;
+ va_list args;
+{
+ int ch;
+ long value;
+ int longflag = 0;
+ int pointflag = 0;
+ int maxwidth = 0;
+ char *strvalue;
+ int ljust;
+ int len;
+ int zpad;
+# if !HASSTRERROR && !defined(ERRLIST_PREDEFINED)
+ extern char *sys_errlist[];
+ extern int sys_nerr;
+# endif
+
+
+ output = buffer;
+ while( (ch = *format++) != '\0' ){
+ switch( ch ){
+ case '%':
+ ljust = len = zpad = maxwidth = 0;
+ longflag = pointflag = 0;
+ nextch:
+ ch = *format++;
+ switch( ch ){
+ case 0:
+ dostr( "**end of format**" , 0);
+ return;
+ case '-': ljust = 1; goto nextch;
+ case '0': /* set zero padding if len not set */
+ if(len==0 && !pointflag) zpad = '0';
+ case '1': case '2': case '3':
+ case '4': case '5': case '6':
+ case '7': case '8': case '9':
+ if (pointflag)
+ maxwidth = maxwidth*10 + ch - '0';
+ else
+ len = len*10 + ch - '0';
+ goto nextch;
+ case '*':
+ if (pointflag)
+ maxwidth = va_arg( args, int );
+ else
+ len = va_arg( args, int );
+ goto nextch;
+ case '.': pointflag = 1; goto nextch;
+ case 'l': longflag = 1; goto nextch;
+ case 'u': case 'U':
+ /*fmtnum(value,base,dosign,ljust,len,zpad) */
+ if( longflag ){
+ value = va_arg( args, long );
+ } else {
+ value = va_arg( args, int );
+ }
+ fmtnum( value, 10,0, ljust, len, zpad ); break;
+ case 'o': case 'O':
+ /*fmtnum(value,base,dosign,ljust,len,zpad) */
+ if( longflag ){
+ value = va_arg( args, long );
+ } else {
+ value = va_arg( args, int );
+ }
+ fmtnum( value, 8,0, ljust, len, zpad ); break;
+ case 'd': case 'D':
+ if( longflag ){
+ value = va_arg( args, long );
+ } else {
+ value = va_arg( args, int );
+ }
+ fmtnum( value, 10,1, ljust, len, zpad ); break;
+ case 'x':
+ if( longflag ){
+ value = va_arg( args, long );
+ } else {
+ value = va_arg( args, int );
+ }
+ fmtnum( value, 16,0, ljust, len, zpad ); break;
+ case 'X':
+ if( longflag ){
+ value = va_arg( args, long );
+ } else {
+ value = va_arg( args, int );
+ }
+ fmtnum( value,-16,0, ljust, len, zpad ); break;
+ case 's':
+ strvalue = va_arg( args, char *);
+ if (maxwidth > 0 || !pointflag) {
+ if (pointflag && len > maxwidth)
+ len = maxwidth; /* Adjust padding */
+ fmtstr( strvalue,ljust,len,zpad, maxwidth);
+ }
+ break;
+ case 'c':
+ ch = va_arg( args, int );
+ dopr_outch( ch ); break;
+ case 'm':
+#if HASSTRERROR
+ dostr(strerror(SyslogErrno), 0);
+#else
+ if (SyslogErrno < 0 || SyslogErrno >= sys_nerr)
+ {
+ dostr("Error ", 0);
+ fmtnum(SyslogErrno, 10, 0, 0, 0, 0);
+ }
+ else
+ dostr((char *)sys_errlist[SyslogErrno], 0);
+#endif
+ break;
+
+ case '%': dopr_outch( ch ); continue;
+ default:
+ dostr( "???????" , 0);
+ }
+ break;
+ default:
+ dopr_outch( ch );
+ break;
+ }
+ }
+ *output = 0;
+}
+
+void
+fmtstr( value, ljust, len, zpad, maxwidth )
+ char *value;
+ int ljust, len, zpad, maxwidth;
+{
+ int padlen, strlen; /* amount to pad */
+
+ if( value == 0 ){
+ value = "<NULL>";
+ }
+ for( strlen = 0; value[strlen]; ++ strlen ); /* strlen */
+ if (strlen > maxwidth && maxwidth)
+ strlen = maxwidth;
+ padlen = len - strlen;
+ if( padlen < 0 ) padlen = 0;
+ if( ljust ) padlen = -padlen;
+ while( padlen > 0 ) {
+ dopr_outch( ' ' );
+ --padlen;
+ }
+ dostr( value, maxwidth );
+ while( padlen < 0 ) {
+ dopr_outch( ' ' );
+ ++padlen;
+ }
+}
+
+void
+fmtnum( value, base, dosign, ljust, len, zpad )
+ long value;
+ int base, dosign, ljust, len, zpad;
+{
+ int signvalue = 0;
+ unsigned long uvalue;
+ char convert[20];
+ int place = 0;
+ int padlen = 0; /* amount to pad */
+ int caps = 0;
+
+ /* DEBUGP(("value 0x%x, base %d, dosign %d, ljust %d, len %d, zpad %d\n",
+ value, base, dosign, ljust, len, zpad )); */
+ uvalue = value;
+ if( dosign ){
+ if( value < 0 ) {
+ signvalue = '-';
+ uvalue = -value;
+ }
+ }
+ if( base < 0 ){
+ caps = 1;
+ base = -base;
+ }
+ do{
+ convert[place++] =
+ (caps? "0123456789ABCDEF":"0123456789abcdef")
+ [uvalue % (unsigned)base ];
+ uvalue = (uvalue / (unsigned)base );
+ }while(uvalue);
+ convert[place] = 0;
+ padlen = len - place;
+ if( padlen < 0 ) padlen = 0;
+ if( ljust ) padlen = -padlen;
+ /* DEBUGP(( "str '%s', place %d, sign %c, padlen %d\n",
+ convert,place,signvalue,padlen)); */
+ if( zpad && padlen > 0 ){
+ if( signvalue ){
+ dopr_outch( signvalue );
+ --padlen;
+ signvalue = 0;
+ }
+ while( padlen > 0 ){
+ dopr_outch( zpad );
+ --padlen;
+ }
+ }
+ while( padlen > 0 ) {
+ dopr_outch( ' ' );
+ --padlen;
+ }
+ if( signvalue ) dopr_outch( signvalue );
+ while( place > 0 ) dopr_outch( convert[--place] );
+ while( padlen < 0 ){
+ dopr_outch( ' ' );
+ ++padlen;
+ }
+}
+
+void
+dostr( str , cut)
+ char *str;
+ int cut;
+{
+ if (cut) {
+ while(*str && cut-- > 0) dopr_outch(*str++);
+ } else {
+ while(*str) dopr_outch(*str++);
+ }
+}
+
+void
+dopr_outch( c )
+ int c;
+{
+#if 0
+ if( iscntrl(c) && c != '\n' && c != '\t' ){
+ c = '@' + (c & 0x1F);
+ if( DoprEnd == 0 || output < DoprEnd )
+ *output++ = '^';
+ }
+#endif
+ if( DoprEnd == 0 || output < DoprEnd )
+ *output++ = c;
+ else
+ SnprfOverflow++;
+}
+
+ /*
+** QUAD_TO_STRING -- Convert a quad type to a string.
+**
+** Convert a quad type to a string. This must be done
+** separately as %lld/%qd are not supported by snprint()
+** and adding support would slow down systems which only
+** emulate the data type.
+**
+** Parameters:
+** value -- number to convert to a string.
+**
+** Returns:
+** pointer to a string.
+*/
+
+char *
+quad_to_string(value)
+ QUAD_T value;
+{
+ char *fmtstr;
+ static char buf[64];
+
+ /*
+ ** Use sprintf() instead of snprintf() since snprintf()
+ ** does not support %qu or %llu. The buffer is large enough
+ ** to hold the string so there is no danger of buffer
+ ** overflow.
+ */
+
+#if NEED_PERCENTQ
+ fmtstr = "%qu";
+#else
+ fmtstr = "%llu";
+#endif
+ sprintf(buf, fmtstr, value);
+ return buf;
+}
+ /*
+** SHORTENSTRING -- return short version of a string
+**
+** If the string is already short, just return it. If it is too
+** long, return the head and tail of the string.
+**
+** Parameters:
+** s -- the string to shorten.
+** m -- the max length of the string.
+**
+** Returns:
+** Either s or a short version of s.
+*/
+
+char *
+shortenstring(s, m)
+ register const char *s;
+ int m;
+{
+ int l;
+ static char buf[MAXSHORTSTR + 1];
+
+ l = strlen(s);
+ if (l < m)
+ return (char *) s;
+ if (m > MAXSHORTSTR)
+ m = MAXSHORTSTR;
+ else if (m < 10)
+ {
+ if (m < 5)
+ {
+ strncpy(buf, s, m);
+ buf[m] = '\0';
+ return buf;
+ }
+ strncpy(buf, s, m - 3);
+ strcpy(buf + m - 3, "...");
+ return buf;
+ }
+ m = (m - 3) / 2;
+ strncpy(buf, s, m);
+ strcpy(buf + m, "...");
+ strcpy(buf + m + 3, s + l - m);
+ return buf;
+}
diff --git a/usr.sbin/sendmail/src/srvrsmtp.c b/contrib/sendmail/src/srvrsmtp.c
index cd47d5de9169..fba103c6f045 100644
--- a/usr.sbin/sendmail/src/srvrsmtp.c
+++ b/contrib/sendmail/src/srvrsmtp.c
@@ -1,44 +1,22 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
# include "sendmail.h"
#ifndef lint
#if SMTP
-static char sccsid[] = "@(#)srvrsmtp.c 8.159 (Berkeley) 10/19/97 (with SMTP)";
+static char sccsid[] = "@(#)srvrsmtp.c 8.181 (Berkeley) 6/15/98 (with SMTP)";
#else
-static char sccsid[] = "@(#)srvrsmtp.c 8.159 (Berkeley) 10/19/97 (without SMTP)";
+static char sccsid[] = "@(#)srvrsmtp.c 8.181 (Berkeley) 6/15/98 (without SMTP)";
#endif
#endif /* not lint */
@@ -50,7 +28,9 @@ static char sccsid[] = "@(#)srvrsmtp.c 8.159 (Berkeley) 10/19/97 (without SMTP)"
** SMTP -- run the SMTP protocol.
**
** Parameters:
-** none.
+** nullserver -- if non-NULL, rejection message for
+** all SMTP commands.
+** e -- the envelope.
**
** Returns:
** never.
@@ -118,7 +98,7 @@ static struct cmd CmdTab[] =
bool OneXact = FALSE; /* one xaction only this run */
char *CurSmtpClient; /* who's at the other end of channel */
-static char *skipword();
+static char *skipword __P((char *volatile, char *));
#define MAXBADCOMMANDS 25 /* maximum number of bad commands */
@@ -129,7 +109,7 @@ static char *skipword();
void
smtp(nullserver, e)
- bool nullserver;
+ char *nullserver;
register ENVELOPE *volatile e;
{
register char *volatile p;
@@ -147,6 +127,7 @@ smtp(nullserver, e)
char *id;
volatile int nrcpts = 0; /* number of RCPT commands */
bool doublequeue;
+ bool discard;
volatile int badcommands = 0; /* count of bad commands */
volatile int nverifies = 0; /* count of VRFY/EXPN commands */
volatile int n_etrn = 0; /* count of ETRN commands */
@@ -155,6 +136,7 @@ smtp(nullserver, e)
bool ok;
volatile int lognullconnection = TRUE;
register char *q;
+ QUEUE_CHAR *new;
char inp[MAXLINE];
char cmdbuf[MAXLINE];
extern ENVELOPE BlankEnvelope;
@@ -178,6 +160,9 @@ smtp(nullserver, e)
if (CurSmtpClient == NULL)
CurSmtpClient = CurHostName;
+ /* check_relay may have set discard bit, save for later */
+ discard = bitset(EF_DISCARD, e->e_flags);
+
setproctitle("server %s startup", CurSmtpClient);
#if DAEMON
if (LogLevel > 11)
@@ -317,7 +302,7 @@ smtp(nullserver, e)
** to everything.
*/
- if (nullserver)
+ if (nullserver != NULL)
{
switch (c->cmdcode)
{
@@ -331,7 +316,7 @@ smtp(nullserver, e)
default:
if (++badcommands > MAXBADCOMMANDS)
sleep(1);
- usrerr("550 Access denied");
+ usrerr("550 %s", nullserver);
continue;
}
}
@@ -380,6 +365,13 @@ smtp(nullserver, e)
break;
}
+ /* check for long domain name (hides Received: info) */
+ if (strlen(p) > MAXNAME)
+ {
+ usrerr("501 Invalid domain name");
+ break;
+ }
+
for (q = p; *q != '\0'; q++)
{
if (!isascii(*q))
@@ -412,7 +404,7 @@ smtp(nullserver, e)
gothello = TRUE;
/* print HELO response message */
- if (c->cmdcode != CMDEHLO)
+ if (c->cmdcode != CMDEHLO || nullserver != NULL)
{
message("250 %s Hello %s, %s",
MyHostName, CurSmtpClient, q);
@@ -426,7 +418,8 @@ smtp(nullserver, e)
if (!bitset(PRIV_NOEXPN, PrivacyFlags))
{
message("250-EXPN");
- message("250-VERB");
+ if (!bitset(PRIV_NOVERB, PrivacyFlags))
+ message("250-VERB");
}
#if MIME8TO7
message("250-8BITMIME");
@@ -440,7 +433,8 @@ smtp(nullserver, e)
message("250-DSN");
#endif
message("250-ONEX");
- message("250-ETRN");
+ if (!bitset(PRIV_NOETRN, PrivacyFlags))
+ message("250-ETRN");
message("250-XUSR");
message("250 HELP");
break;
@@ -727,12 +721,17 @@ smtp(nullserver, e)
break;
}
+ /* put back discard bit */
+ if (discard)
+ e->e_flags |= EF_DISCARD;
+
/* check to see if we need to re-expand aliases */
/* also reset QBADADDR on already-diagnosted addrs */
doublequeue = FALSE;
for (a = e->e_sendqueue; a != NULL; a = a->q_next)
{
- if (bitset(QVERIFIED, a->q_flags))
+ if (bitset(QVERIFIED, a->q_flags) &&
+ !bitset(EF_DISCARD, e->e_flags))
{
/* need to re-expand aliases */
doublequeue = TRUE;
@@ -809,7 +808,7 @@ smtp(nullserver, e)
if (!shouldqueue(e->e_msgpriority, e->e_ctime))
{
- extern pid_t dowork();
+ extern pid_t dowork __P((char *, bool, bool, ENVELOPE *));
unlockqueue(e);
(void) dowork(id, TRUE, TRUE, e);
@@ -863,7 +862,7 @@ smtp(nullserver, e)
sm_syslog(LOG_INFO, e->e_id,
"%.100s: %s [rejected]",
CurSmtpClient,
- shortenstring(inp, 203));
+ shortenstring(inp, MAXSHORTSTR));
break;
}
else if (!gothello &&
@@ -881,7 +880,7 @@ smtp(nullserver, e)
sm_syslog(LOG_INFO, e->e_id,
"%.100s: %s",
CurSmtpClient,
- shortenstring(inp, 203));
+ shortenstring(inp, MAXSHORTSTR));
if (setjmp(TopFrame) > 0)
goto undo_subproc;
QuickAbort = TRUE;
@@ -921,6 +920,17 @@ smtp(nullserver, e)
break;
case CMDETRN: /* etrn -- force queue flush */
+ if (bitset(PRIV_NOETRN, PrivacyFlags))
+ {
+ message("502 Sorry, we do not allow this operation");
+ if (LogLevel > 5)
+ sm_syslog(LOG_INFO, e->e_id,
+ "%.100s: %s [rejected]",
+ CurSmtpClient,
+ shortenstring(inp, MAXSHORTSTR));
+ break;
+ }
+
if (strlen(p) <= 0)
{
usrerr("500 Parameter required");
@@ -934,15 +944,24 @@ smtp(nullserver, e)
sm_syslog(LOG_INFO, e->e_id,
"%.100s: ETRN %s",
CurSmtpClient,
- shortenstring(p, 203));
+ shortenstring(p, MAXSHORTSTR));
id = p;
if (*id == '@')
id++;
else
*--id = '@';
- QueueLimitRecipient = id;
+
+ if ((new = (QUEUE_CHAR *)malloc(sizeof(QUEUE_CHAR))) == NULL)
+ {
+ syserr("500 ETRN out of memory");
+ break;
+ }
+ new->queue_match = id;
+ new->queue_next = NULL;
+ QueueLimitRecipient = new;
ok = runqueue(TRUE, TRUE);
+ free(QueueLimitRecipient);
QueueLimitRecipient = NULL;
if (ok && Errors == 0)
message("250 Queuing for node %s started", p);
@@ -976,7 +995,8 @@ doquit:
finis();
case CMDVERB: /* set verbose mode */
- if (bitset(PRIV_NOEXPN, PrivacyFlags))
+ if (bitset(PRIV_NOEXPN, PrivacyFlags) ||
+ bitset(PRIV_NOVERB, PrivacyFlags))
{
/* this would give out the same info */
message("502 Verbose unavailable");
@@ -1033,7 +1053,7 @@ doquit:
}
usrerr("500 Command unrecognized: \"%s\"",
- shortenstring(inp, 203));
+ shortenstring(inp, MAXSHORTSTR));
break;
default:
@@ -1095,7 +1115,7 @@ checksmtpattack(pcounter, maxcount, cname, e)
static char *
skipword(p, w)
- register char *p;
+ register char *volatile p;
char *w;
{
register char *q;
@@ -1115,7 +1135,7 @@ skipword(p, w)
{
syntax:
usrerr("501 Syntax error in parameters scanning \"%s\"",
- shortenstring(firstp, 203));
+ shortenstring(firstp, MAXSHORTSTR));
return (NULL);
}
*p++ = '\0';
@@ -1461,6 +1481,8 @@ help(topic)
if (DontLockReadFiles)
sff |= SFF_NOLOCK;
+ if (!bitset(DBS_HELPFILEINUNSAFEDIRPATH, DontBlameSendmail))
+ sff |= SFF_SAFEDIRPATH;
if (HelpFile == NULL ||
(hf = safefopen(HelpFile, O_RDONLY, 0444, sff)) == NULL)
diff --git a/usr.sbin/sendmail/src/stab.c b/contrib/sendmail/src/stab.c
index 7d480b901331..1ffc7cb1fcf3 100644
--- a/usr.sbin/sendmail/src/stab.c
+++ b/contrib/sendmail/src/stab.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)stab.c 8.13 (Berkeley) 4/19/97";
+static char sccsid[] = "@(#)stab.c 8.19 (Berkeley) 5/19/98";
#endif /* not lint */
# include "sendmail.h"
@@ -72,7 +50,7 @@ stab(name, type, op)
register int hfunc;
register char *p;
int len;
- extern char lower();
+ extern char lower __P((char));
if (tTd(36, 5))
printf("STAB: %s %d ", name, type);
diff --git a/contrib/sendmail/src/stats.c b/contrib/sendmail/src/stats.c
new file mode 100644
index 000000000000..767a55e17413
--- /dev/null
+++ b/contrib/sendmail/src/stats.c
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ *
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)stats.c 8.22 (Berkeley) 5/19/98";
+#endif /* not lint */
+
+# include "sendmail.h"
+# include "mailstats.h"
+
+struct statistics Stat;
+
+bool GotStats = FALSE; /* set when we have stats to merge */
+
+#define ONE_K 1000 /* one thousand (twenty-four?) */
+#define KBYTES(x) (((x) + (ONE_K - 1)) / ONE_K)
+ /*
+** MARKSTATS -- mark statistics
+*/
+
+void
+markstats(e, to, reject)
+ register ENVELOPE *e;
+ register ADDRESS *to;
+ bool reject;
+{
+ if (reject == TRUE)
+ {
+ if (e->e_from.q_mailer != NULL)
+ {
+ if (bitset(EF_DISCARD, e->e_flags))
+ Stat.stat_nd[e->e_from.q_mailer->m_mno]++;
+ else
+ Stat.stat_nr[e->e_from.q_mailer->m_mno]++;
+ }
+ }
+ else if (to == NULL)
+ {
+ if (e->e_from.q_mailer != NULL)
+ {
+ Stat.stat_nf[e->e_from.q_mailer->m_mno]++;
+ Stat.stat_bf[e->e_from.q_mailer->m_mno] +=
+ KBYTES(e->e_msgsize);
+ }
+ }
+ else
+ {
+ Stat.stat_nt[to->q_mailer->m_mno]++;
+ Stat.stat_bt[to->q_mailer->m_mno] += KBYTES(e->e_msgsize);
+ }
+ GotStats = TRUE;
+}
+ /*
+** POSTSTATS -- post statistics in the statistics file
+**
+** Parameters:
+** sfile -- the name of the statistics file.
+**
+** Returns:
+** none.
+**
+** Side Effects:
+** merges the Stat structure with the sfile file.
+*/
+
+void
+poststats(sfile)
+ char *sfile;
+{
+ register int fd;
+ int sff = SFF_REGONLY|SFF_OPENASROOT;
+ struct statistics stat;
+ extern off_t lseek();
+
+ if (sfile == NULL || !GotStats)
+ return;
+
+ (void) time(&Stat.stat_itime);
+ Stat.stat_size = sizeof Stat;
+ Stat.stat_magic = STAT_MAGIC;
+ Stat.stat_version = STAT_VERSION;
+
+ if (!bitset(DBS_WRITESTATSTOSYMLINK, DontBlameSendmail))
+ sff |= SFF_NOSLINK;
+ if (!bitset(DBS_WRITESTATSTOHARDLINK, DontBlameSendmail))
+ sff |= SFF_NOHLINK;
+
+ fd = safeopen(sfile, O_RDWR, 0644, sff);
+ if (fd < 0)
+ {
+ if (LogLevel > 12)
+ sm_syslog(LOG_INFO, NOQID, "poststats: %s: %s",
+ sfile, errstring(errno));
+ errno = 0;
+ return;
+ }
+ if (read(fd, (char *) &stat, sizeof stat) == sizeof stat &&
+ stat.stat_size == sizeof stat &&
+ stat.stat_magic == Stat.stat_magic &&
+ stat.stat_version == Stat.stat_version)
+ {
+ /* merge current statistics into statfile */
+ register int i;
+
+ for (i = 0; i < MAXMAILERS; i++)
+ {
+ stat.stat_nf[i] += Stat.stat_nf[i];
+ stat.stat_bf[i] += Stat.stat_bf[i];
+ stat.stat_nt[i] += Stat.stat_nt[i];
+ stat.stat_bt[i] += Stat.stat_bt[i];
+ stat.stat_nr[i] += Stat.stat_nr[i];
+ stat.stat_nd[i] += Stat.stat_nd[i];
+ }
+ }
+ else
+ bcopy((char *) &Stat, (char *) &stat, sizeof stat);
+
+ /* write out results */
+ (void) lseek(fd, (off_t) 0, 0);
+ (void) write(fd, (char *) &stat, sizeof stat);
+ (void) close(fd);
+
+ /* clear the structure to avoid future disappointment */
+ bzero(&Stat, sizeof stat);
+ GotStats = FALSE;
+}
diff --git a/usr.sbin/sendmail/src/sysexits.c b/contrib/sendmail/src/sysexits.c
index 36955363ebeb..10d7c85a1824 100644
--- a/usr.sbin/sendmail/src/sysexits.c
+++ b/contrib/sendmail/src/sysexits.c
@@ -1,42 +1,20 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)sysexits.c 8.7 (Berkeley) 2/1/97";
+static char sccsid[] = "@(#)sysexits.c 8.13 (Berkeley) 5/24/98";
#endif /* not lint */
-#include <sendmail.h>
+#include "sendmail.h"
/*
** SYSEXITS.C -- error messages corresponding to sysexits.h
diff --git a/contrib/sendmail/src/trace.c b/contrib/sendmail/src/trace.c
new file mode 100644
index 000000000000..5ff9795c5122
--- /dev/null
+++ b/contrib/sendmail/src/trace.c
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ *
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)trace.c 8.12 (Berkeley) 5/19/98";
+#endif /* not lint */
+
+# include "sendmail.h"
+
+/*
+** TtSETUP -- set up for trace package.
+**
+** Parameters:
+** vect -- pointer to trace vector.
+** size -- number of flags in trace vector.
+** defflags -- flags to set if no value given.
+**
+** Returns:
+** none
+**
+** Side Effects:
+** environment is set up.
+*/
+
+u_char *tTvect;
+int tTsize;
+static char *DefFlags;
+
+void
+tTsetup(vect, size, defflags)
+ u_char *vect;
+ int size;
+ char *defflags;
+{
+ tTvect = vect;
+ tTsize = size;
+ DefFlags = defflags;
+}
+ /*
+** TtFLAG -- process an external trace flag description.
+**
+** Parameters:
+** s -- the trace flag.
+**
+** Returns:
+** none.
+**
+** Side Effects:
+** sets/clears trace flags.
+*/
+
+void
+tTflag(s)
+ register char *s;
+{
+ unsigned int first, last;
+ register unsigned int i;
+
+ if (*s == '\0')
+ s = DefFlags;
+
+ for (;;)
+ {
+ /* find first flag to set */
+ i = 0;
+ while (isascii(*s) && isdigit(*s))
+ i = i * 10 + (*s++ - '0');
+ first = i;
+
+ /* find last flag to set */
+ if (*s == '-')
+ {
+ i = 0;
+ while (isascii(*++s) && isdigit(*s))
+ i = i * 10 + (*s - '0');
+ }
+ last = i;
+
+ /* find the level to set it to */
+ i = 1;
+ if (*s == '.')
+ {
+ i = 0;
+ while (isascii(*++s) && isdigit(*s))
+ i = i * 10 + (*s - '0');
+ }
+
+ /* clean up args */
+ if (first >= tTsize)
+ first = tTsize - 1;
+ if (last >= tTsize)
+ last = tTsize - 1;
+
+ /* set the flags */
+ while (first <= last)
+ tTvect[first++] = i;
+
+ /* more arguments? */
+ if (*s++ == '\0')
+ return;
+ }
+}
diff --git a/usr.sbin/sendmail/src/udb.c b/contrib/sendmail/src/udb.c
index cf77bdca376d..e7f42af2ba91 100644
--- a/usr.sbin/sendmail/src/udb.c
+++ b/contrib/sendmail/src/udb.c
@@ -1,44 +1,22 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#include "sendmail.h"
#ifndef lint
#if USERDB
-static char sccsid [] = "@(#)udb.c 8.51 (Berkeley) 5/29/97 (with USERDB)";
+static char sccsid [] = "@(#)udb.c 8.66 (Berkeley) 6/18/98 (with USERDB)";
#else
-static char sccsid [] = "@(#)udb.c 8.51 (Berkeley) 5/29/97 (without USERDB)";
+static char sccsid [] = "@(#)udb.c 8.66 (Berkeley) 6/18/98 (without USERDB)";
#endif
#endif
@@ -48,6 +26,9 @@ static char sccsid [] = "@(#)udb.c 8.51 (Berkeley) 5/29/97 (without USERDB)";
#ifdef NEWDB
# include <db.h>
+# ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+# endif
#else
# define DBT struct _data_base_thang_
DBT
@@ -57,10 +38,6 @@ DBT
};
#endif
-#ifdef HESIOD
-# include <hesiod.h>
-#endif /* HESIOD */
-
/*
** UDB.C -- interface between sendmail and Berkeley User Data Base.
**
@@ -120,6 +97,9 @@ struct option
char *val;
};
+#ifdef HESIOD
+extern int hes_udb_get __P((DBT *, DBT *));
+#endif
extern int _udbx_init __P((ENVELOPE *));
/*
** UDBEXPAND -- look up user in database and expand
@@ -162,6 +142,9 @@ udbexpand(a, sendq, aliaslevel, e)
int naddrs;
char keybuf[MAXKEY];
+ bzero(&key, sizeof key);
+ bzero(&info, sizeof info);
+
if (tTd(28, 1))
printf("udbexpand(%s)\n", a->q_paddr);
@@ -208,6 +191,9 @@ udbexpand(a, sendq, aliaslevel, e)
#if defined(HESIOD) && defined(HES_GETMAILHOST)
char pobuf[MAXNAME];
#endif
+#if defined(NEWDB) && DB_VERSION_MAJOR > 1
+ DBC *dbc = NULL;
+#endif
user = userbuf;
userbuf[0] = '\0';
@@ -231,12 +217,31 @@ udbexpand(a, sendq, aliaslevel, e)
if (tTd(28, 80))
printf("udbexpand: trying %s (%d) via db\n",
keybuf, keylen);
+#if DB_VERSION_MAJOR < 2
i = (*up->udb_dbp->seq)(up->udb_dbp, &key, &info, R_CURSOR);
+#else
+ i = 0;
+ if (dbc == NULL &&
+ (errno = (*up->udb_dbp->cursor)(up->udb_dbp,
+ NULL, &dbc)) != 0)
+ i = -1;
+ if (i != 0 || dbc == NULL ||
+ (errno = dbc->c_get(dbc, &key,
+ &info, DB_SET)) != 0)
+ i = 1;
+#endif
if (i > 0 || info.size <= 0)
{
if (tTd(28, 2))
printf("udbexpand: no match on %s (%d)\n",
keybuf, keylen);
+#if DB_VERSION_MAJOR > 1
+ if (dbc != NULL)
+ {
+ (void) dbc->c_close(dbc);
+ dbc = NULL;
+ }
+#endif
break;
}
if (tTd(28, 80))
@@ -253,6 +258,13 @@ udbexpand(a, sendq, aliaslevel, e)
if (bitset(EF_VRFYONLY, e->e_flags))
{
a->q_flags |= QVERIFIED;
+#if DB_VERSION_MAJOR > 1
+ if (dbc != NULL)
+ {
+ (void) dbc->c_close(dbc);
+ dbc = NULL;
+ }
+#endif
return EX_OK;
}
@@ -284,8 +296,23 @@ udbexpand(a, sendq, aliaslevel, e)
userleft -= info.size;
/* get the next record */
+#if DB_VERSION_MAJOR < 2
i = (*up->udb_dbp->seq)(up->udb_dbp, &key, &info, R_NEXT);
+#else
+ i = 0;
+ if ((errno = dbc->c_get(dbc, &key,
+ &info, DB_NEXT)) != 0)
+ i = 1;
+#endif
+ }
+
+#if DB_VERSION_MAJOR > 1
+ if (dbc != NULL)
+ {
+ (void) dbc->c_close(dbc);
+ dbc = NULL;
}
+#endif
/* if nothing ever matched, try next database */
if (!breakout)
@@ -296,7 +323,7 @@ udbexpand(a, sendq, aliaslevel, e)
sm_syslog(LOG_INFO, e->e_id,
"expand %.100s => %s",
e->e_to,
- shortenstring(user, 203));
+ shortenstring(user, MAXSHORTSTR));
naddrs = sendtolist(user, a, sendq, aliaslevel + 1, e);
if (naddrs > 0 && !bitset(QSELFREF, a->q_flags))
{
@@ -310,7 +337,7 @@ udbexpand(a, sendq, aliaslevel, e)
if (i < 0)
{
syserr("udbexpand: db-get %.*s stat %d",
- key.size, key.data, i);
+ (int) key.size, (char *) key.data, i);
return EX_TEMPFAIL;
}
@@ -319,12 +346,20 @@ udbexpand(a, sendq, aliaslevel, e)
** it into the envelope.
*/
+ bzero(&key, sizeof key);
+ bzero(&info, sizeof info);
(void) strcpy(keybuf, a->q_user);
(void) strcat(keybuf, ":mailsender");
keylen = strlen(keybuf);
key.data = keybuf;
key.size = keylen;
+
+#if DB_VERSION_MAJOR < 2
i = (*up->udb_dbp->get)(up->udb_dbp, &key, &info, 0);
+#else
+ i = errno = (*up->udb_dbp->get)(up->udb_dbp, NULL,
+ &key, &info, 0);
+#endif
if (i != 0 || info.size <= 0)
break;
a->q_owner = xalloc(info.size + 1);
@@ -355,7 +390,7 @@ udbexpand(a, sendq, aliaslevel, e)
if (i < 0)
{
syserr("udbexpand: hesiod-get %.*s stat %d",
- key.size, key.data, i);
+ (int) key.size, (char *) key.data, i);
return EX_TEMPFAIL;
}
else if (i > 0 || info.size <= 0)
@@ -366,7 +401,7 @@ udbexpand(a, sendq, aliaslevel, e)
if (tTd(28, 2))
printf("udbexpand: no match on %s (%d)\n",
- keybuf, keylen);
+ (char *) keybuf, (int) keylen);
#if HES_GETMAILHOST
if (tTd(28, 8))
printf(" ... trying hes_getmailhost(%s)\n",
@@ -405,7 +440,8 @@ udbexpand(a, sendq, aliaslevel, e)
}
if (tTd(28, 80))
printf("udbexpand: match %.*s: %.*s\n",
- key.size, key.data, info.size, info.data);
+ (int) key.size, (char *) key.data,
+ (int) info.size, (char *) info.data);
a->q_flags &= ~QSELFREF;
if (bitset(EF_VRFYONLY, e->e_flags))
@@ -425,7 +461,7 @@ udbexpand(a, sendq, aliaslevel, e)
sm_syslog(LOG_INFO, e->e_id,
"hesiod %.100s => %s",
e->e_to,
- shortenstring(user, 203));
+ shortenstring(user, MAXSHORTSTR));
naddrs = sendtolist(user, a, sendq, aliaslevel + 1, e);
if (naddrs > 0 && !bitset(QSELFREF, a->q_flags))
@@ -519,7 +555,7 @@ char *
udbsender(sender)
char *sender;
{
- extern char *udbmatch();
+ extern char *udbmatch __P((char *, char *));
return udbmatch(sender, "mailname");
}
@@ -581,9 +617,16 @@ udbmatch(user, field)
{
#ifdef NEWDB
case UDB_DBFETCH:
+ bzero(&key, sizeof key);
+ bzero(&info, sizeof info);
key.data = keybuf;
key.size = keylen;
+#if DB_VERSION_MAJOR < 2
i = (*up->udb_dbp->get)(up->udb_dbp, &key, &info, 0);
+#else
+ i = errno = (*up->udb_dbp->get)(up->udb_dbp, NULL,
+ &key, &info, 0);
+#endif
if (i != 0 || info.size <= 0)
{
if (tTd(28, 2))
@@ -598,7 +641,6 @@ udbmatch(user, field)
if (tTd(28, 1))
printf("udbmatch ==> %s\n", p);
return p;
- break;
#endif
#ifdef HESIOD
@@ -647,9 +689,18 @@ udbmatch(user, field)
/* get the default case for this database */
if (up->udb_default == NULL)
{
+ bzero(&key, sizeof key);
+ bzero(&info, sizeof info);
key.data = ":default:mailname";
key.size = strlen(key.data);
- i = (*up->udb_dbp->get)(up->udb_dbp, &key, &info, 0);
+#if DB_VERSION_MAJOR < 2
+ i = (*up->udb_dbp->get)(up->udb_dbp,
+ &key, &info, 0);
+#else
+ i = errno = (*up->udb_dbp->get)(up->udb_dbp,
+ NULL, &key,
+ &info, 0);
+#endif
if (i != 0 || info.size <= 0)
{
/* no default case */
@@ -666,9 +717,16 @@ udbmatch(user, field)
continue;
/* we have a default case -- verify user:maildrop */
+ bzero(&key, sizeof key);
+ bzero(&info, sizeof info);
key.data = keybuf;
key.size = keylen;
+#if DB_VERSION_MAJOR < 2
i = (*up->udb_dbp->get)(up->udb_dbp, &key, &info, 0);
+#else
+ i = errno = (*up->udb_dbp->get)(up->udb_dbp, NULL,
+ &key, &info, 0);
+#endif
if (i != 0 || info.size <= 0)
{
/* nope -- no aliasing for this user */
@@ -683,7 +741,6 @@ udbmatch(user, field)
if (tTd(28, 1))
printf("udbmatch ==> %s\n", p);
return p;
- break;
#endif
#ifdef HESIOD
@@ -750,6 +807,7 @@ udbmatch(user, field)
** The rewritten name otherwise.
*/
+/* ARGSUSED3 */
char *
udb_map_lookup(map, name, av, statp)
MAP *map;
@@ -809,6 +867,7 @@ int
_udbx_init(e)
ENVELOPE *e;
{
+ int ents = 0;
register char *p;
register struct udbent *up;
@@ -825,7 +884,6 @@ _udbx_init(e)
while (p != NULL)
{
char *spec;
- int nopts;
int l;
# if 0
auto int rcode;
@@ -846,8 +904,14 @@ _udbx_init(e)
if (p != NULL)
*p++ = '\0';
+ if (ents >= MAXUDBENT)
+ {
+ syserr("Maximum number of UDB entries exceeded");
+ break;
+ }
+
/* extract options */
- nopts = _udb_parsespec(spec, opts, MAXUDBOPTS);
+ (void) _udb_parsespec(spec, opts, MAXUDBOPTS);
/*
** Decode database specification.
@@ -914,6 +978,7 @@ _udbx_init(e)
INADDRSZ);
up->udb_addr.sin_port = UdbPort;
up->udb_timeout = UdbTimeout;
+ ents++;
up++;
}
@@ -929,6 +994,7 @@ _udbx_init(e)
case '@': /* forward to remote host */
up->udb_type = UDB_FORWARD;
up->udb_fwdhost = spec + 1;
+ ents++;
up++;
break;
@@ -938,6 +1004,7 @@ _udbx_init(e)
if (strcasecmp(spec, "hesiod") != 0)
goto badspec;
up->udb_type = UDB_HESIOD;
+ ents++;
up++;
break;
#endif /* HESIOD */
@@ -956,15 +1023,25 @@ _udbx_init(e)
strcat(up->udb_dbname, ".db");
}
errno = 0;
+#if DB_VERSION_MAJOR < 2
up->udb_dbp = dbopen(up->udb_dbname, O_RDONLY,
0644, DB_BTREE, NULL);
+#else
+ up->udb_dbp = NULL;
+ errno = db_open(up->udb_dbname, DB_BTREE, DB_RDONLY,
+ 0644, NULL, NULL, &up->udb_dbp);
+#endif
if (up->udb_dbp == NULL)
{
if (tTd(28, 1))
{
int saveerrno = errno;
+#if DB_VERSION_MAJOR < 2
printf("dbopen(%s): %s\n",
+#else
+ printf("db_open(%s): %s\n",
+#endif
up->udb_dbname,
errstring(errno));
errno = saveerrno;
@@ -973,7 +1050,11 @@ _udbx_init(e)
{
if (LogLevel > 2)
sm_syslog(LOG_ERR, e->e_id,
+#if DB_VERSION_MAJOR < 2
"dbopen(%s): %s",
+#else
+ "db_open(%s): %s",
+#endif
up->udb_dbname,
errstring(errno));
up->udb_type = UDB_EOLIST;
@@ -986,6 +1067,7 @@ _udbx_init(e)
break;
}
up->udb_type = UDB_DBFETCH;
+ ents++;
up++;
break;
#endif
@@ -1051,7 +1133,11 @@ badspec:
{
if (up->udb_type == UDB_DBFETCH)
{
+#if DB_VERSION_MAJOR < 2
(*up->udb_dbp->close)(up->udb_dbp);
+#else
+ errno = (*up->udb_dbp->close)(up->udb_dbp, 0);
+#endif
}
}
#endif
@@ -1096,7 +1182,7 @@ hes_udb_get(key, info)
DBT *info;
{
char *name, *type;
- char *p, **hp;
+ char **hp;
char kbuf[MAXKEY + 1];
if (strlen(key->data) >= (SIZE_T) sizeof kbuf)
@@ -1114,8 +1200,25 @@ hes_udb_get(key, info)
printf("hes_udb_get(%s, %s)\n", name, type);
/* make the hesiod query */
+#ifdef HESIOD_INIT
+ if (HesiodContext == NULL && hesiod_init(&HesiodContext) != 0)
+ return -1;
+ hp = hesiod_resolve(HesiodContext, name, type);
+#else
hp = hes_resolve(name, type);
+#endif /* HESIOD_INIT */
*--type = ':';
+#ifdef HESIOD_INIT
+ if (hp == NULL)
+ return 1;
+ if (*hp == NULL)
+ {
+ hesiod_free_list(HesiodContext, hp);
+ if (errno == ECONNREFUSED || errno == EMSGSIZE)
+ return -1;
+ return 1;
+ }
+#else
if (hp == NULL || hp[0] == NULL)
{
/* network problem or timeout */
@@ -1124,6 +1227,7 @@ hes_udb_get(key, info)
return 1;
}
+#endif /* HESIOD_INIT */
else
{
/*
diff --git a/contrib/sendmail/src/useful.h b/contrib/sendmail/src/useful.h
new file mode 100644
index 000000000000..2a283ab7b8be
--- /dev/null
+++ b/contrib/sendmail/src/useful.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1995-1997 Eric P. Allman. All rights reserved.
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ *
+ *
+ * @(#)useful.h 8.12 (Berkeley) 5/19/98
+ */
+
+# include <sys/types.h>
+
+/* support for bool type */
+typedef int bool;
+#ifndef TRUE
+# define TRUE 1
+# define FALSE 0
+#endif
+
+# ifndef NULL
+# define NULL 0
+# endif /* NULL */
+
+/* bit hacking */
+# define bitset(bit, word) (((word) & (bit)) != 0)
+
+/* some simple functions */
+# ifndef max
+# define max(a, b) ((a) > (b) ? (a) : (b))
+# define min(a, b) ((a) < (b) ? (a) : (b))
+# endif
+
+/* assertions */
+# ifndef NASSERT
+# define ASSERT(expr, msg, parm)\
+ if (!(expr))\
+ {\
+ fprintf(stderr, "assertion botch: %s:%d: ", __FILE__, __LINE__);\
+ fprintf(stderr, msg, parm);\
+ }
+# else /* NASSERT */
+# define ASSERT(expr, msg, parm)
+# endif /* NASSERT */
+
+/* sccs id's */
+# ifndef lint
+# ifdef __STDC__
+# define SCCSID(arg) static char SccsId[] = #arg;
+# else
+# define SCCSID(arg) static char SccsId[] = "arg";
+# endif
+# else
+# define SCCSID(arg)
+# endif
diff --git a/usr.sbin/sendmail/src/usersmtp.c b/contrib/sendmail/src/usersmtp.c
index b088d6089438..23e4d0256933 100644
--- a/usr.sbin/sendmail/src/usersmtp.c
+++ b/contrib/sendmail/src/usersmtp.c
@@ -1,44 +1,22 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
# include "sendmail.h"
#ifndef lint
#if SMTP
-static char sccsid[] = "@(#)usersmtp.c 8.88 (Berkeley) 10/20/97 (with SMTP)";
+static char sccsid[] = "@(#)usersmtp.c 8.104 (Berkeley) 6/30/98 (with SMTP)";
#else
-static char sccsid[] = "@(#)usersmtp.c 8.88 (Berkeley) 10/20/97 (without SMTP)";
+static char sccsid[] = "@(#)usersmtp.c 8.104 (Berkeley) 6/30/98 (without SMTP)";
#endif
#endif /* not lint */
@@ -89,8 +67,8 @@ smtpinit(m, mci, e)
{
register int r;
register char *p;
- extern void esmtp_check();
- extern void helo_options();
+ extern void esmtp_check __P((char *, bool, MAILER *, MCI *, ENVELOPE *));
+ extern void helo_options __P((char *, bool, MAILER *, MCI *, ENVELOPE *));
if (tTd(18, 1))
{
@@ -154,24 +132,16 @@ smtpinit(m, mci, e)
** My mother taught me to always introduce myself.
*/
-#if _FFR_LMTP
if (bitnset(M_ESMTP, m->m_flags) || bitnset(M_LMTP, m->m_flags))
-#else
- if (bitnset(M_ESMTP, m->m_flags))
-#endif
mci->mci_flags |= MCIF_ESMTP;
tryhelo:
-#if _FFR_LMTP
if (bitnset(M_LMTP, m->m_flags))
{
smtpmessage("LHLO %s", m, mci, MyHostName);
SmtpPhase = mci->mci_phase = "client LHLO";
}
else if (bitset(MCIF_ESMTP, mci->mci_flags))
-#else
- if (bitset(MCIF_ESMTP, mci->mci_flags))
-#endif
{
smtpmessage("EHLO %s", m, mci, MyHostName);
SmtpPhase = mci->mci_phase = "client EHLO";
@@ -187,12 +157,8 @@ tryhelo:
goto tempfail1;
else if (REPLYTYPE(r) == 5)
{
-#if _FFR_LMTP
if (bitset(MCIF_ESMTP, mci->mci_flags) &&
!bitnset(M_LMTP, m->m_flags))
-#else
- if (bitset(MCIF_ESMTP, mci->mci_flags))
-#endif
{
/* try old SMTP instead */
mci->mci_flags &= ~MCIF_ESMTP;
@@ -213,13 +179,11 @@ tryhelo:
if (p != NULL)
*p = '\0';
if (!bitnset(M_NOLOOPCHECK, m->m_flags) &&
-#if _FFR_LMTP
!bitnset(M_LMTP, m->m_flags) &&
-#endif
strcasecmp(&SmtpReplyBuffer[4], MyHostName) == 0)
{
syserr("553 %s config error: mail loops back to me (MX problem?)",
- mci->mci_host);
+ CurHostName);
mci_setstat(mci, EX_CONFIG, NULL, NULL);
mci->mci_errno = 0;
smtpquit(m, mci, e);
@@ -416,7 +380,7 @@ smtpmailfrom(m, mci, e)
/* cannot just send a 8-bit version */
extern char MsgBuf[];
- usrerr("%s does not support 8BITMIME", mci->mci_host);
+ usrerr("%s does not support 8BITMIME", CurHostName);
mci_setstat(mci, EX_NOTSTICKY, "5.6.3", MsgBuf);
return EX_DATAERR;
}
@@ -492,15 +456,9 @@ smtpmailfrom(m, mci, e)
smtpquit(m, mci, e);
return EX_TEMPFAIL;
}
- else if (r == 452 && bitset(MCIF_SIZE, mci->mci_flags) &&
- e->e_msgsize > 0)
- {
- mci_setstat(mci, EX_NOTSTICKY, smtptodsn(r), SmtpReplyBuffer);
- return EX_TEMPFAIL;
- }
else if (REPLYTYPE(r) == 4)
{
- mci_setstat(mci, EX_TEMPFAIL, smtptodsn(r), SmtpReplyBuffer);
+ mci_setstat(mci, EX_NOTSTICKY, smtptodsn(r), SmtpReplyBuffer);
return EX_TEMPFAIL;
}
else if (REPLYTYPE(r) == 2)
@@ -522,7 +480,7 @@ smtpmailfrom(m, mci, e)
else if (r == 552)
{
/* exceeded storage allocation */
- mci_setstat(mci, EX_NOTSTICKY, "5.2.2", SmtpReplyBuffer);
+ mci_setstat(mci, EX_NOTSTICKY, "5.3.4", SmtpReplyBuffer);
if (bitset(MCIF_SIZE, mci->mci_flags))
e->e_flags |= EF_NO_BODY_RETN;
return EX_UNAVAILABLE;
@@ -538,7 +496,7 @@ smtpmailfrom(m, mci, e)
{
sm_syslog(LOG_CRIT, e->e_id,
"%.100s: SMTP MAIL protocol error: %s",
- mci->mci_host,
+ CurHostName,
shortenstring(SmtpReplyBuffer, 403));
}
@@ -655,7 +613,7 @@ smtprcpt(to, m, mci, e)
{
sm_syslog(LOG_CRIT, e->e_id,
"%.100s: SMTP RCPT protocol error: %s",
- mci->mci_host,
+ CurHostName,
shortenstring(SmtpReplyBuffer, 403));
}
@@ -678,7 +636,7 @@ smtprcpt(to, m, mci, e)
*/
static jmp_buf CtxDataTimeout;
-static void datatimeout();
+static void datatimeout __P((void));
int
smtpdata(m, mci, e)
@@ -721,7 +679,7 @@ smtpdata(m, mci, e)
{
sm_syslog(LOG_CRIT, e->e_id,
"%.100s: SMTP DATA-1 protocol error: %s",
- mci->mci_host,
+ CurHostName,
shortenstring(SmtpReplyBuffer, 403));
}
smtprset(m, mci, e);
@@ -740,7 +698,7 @@ smtpdata(m, mci, e)
mci->mci_errno = errno;
mci->mci_state = MCIS_ERROR;
mci_setstat(mci, EX_TEMPFAIL, "4.4.2", NULL);
- syserr("451 timeout writing message to %s", mci->mci_host);
+ syserr("451 timeout writing message to %s", CurHostName);
smtpquit(m, mci, e);
return EX_TEMPFAIL;
}
@@ -784,10 +742,8 @@ smtpdata(m, mci, e)
/* check for the results of the transaction */
SmtpPhase = mci->mci_phase = "client DATA status";
setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
-#if _FFR_LMTP
if (bitnset(M_LMTP, m->m_flags))
return EX_OK;
-#endif
r = reply(m, mci, e, TimeOuts.to_datafinal, NULL);
if (r < 0)
{
@@ -818,7 +774,7 @@ smtpdata(m, mci, e)
{
sm_syslog(LOG_CRIT, e->e_id,
"%.100s: SMTP DATA-2 protocol error: %s",
- mci->mci_host,
+ CurHostName,
shortenstring(SmtpReplyBuffer, 403));
}
return rstat;
@@ -842,8 +798,6 @@ datatimeout()
** The exit status corresponding to the reply code.
*/
-#if _FFR_LMTP
-
int
smtpgetstat(m, mci, e)
MAILER *m;
@@ -871,18 +825,18 @@ smtpgetstat(m, mci, e)
stat = EX_OK;
else if (REPLYTYPE(r) == 5)
stat = EX_UNAVAILABLE;
+ else
+ stat = EX_PROTOCOL;
mci_setstat(mci, stat, smtptodsn(r), SmtpReplyBuffer);
if (LogLevel > 1 && stat == EX_PROTOCOL)
{
sm_syslog(LOG_CRIT, e->e_id,
"%.100s: SMTP DATA-3 protocol error: %s",
- mci->mci_host,
+ CurHostName,
shortenstring(SmtpReplyBuffer, 403));
}
return stat;
}
-
-#endif
/*
** SMTPQUIT -- close the SMTP connection.
**
@@ -1020,7 +974,7 @@ reply(m, mci, e, timeout, pfunc)
for (;;)
{
register char *p;
- extern time_t curtime();
+ extern time_t curtime __P((void));
/* actually do the read */
if (e->e_xfp != NULL)
@@ -1053,7 +1007,7 @@ reply(m, mci, e, timeout, pfunc)
mci->mci_errno = errno;
oldholderrs = HoldErrs;
HoldErrs = TRUE;
- usrerr("451 reply: read error from %s", mci->mci_host);
+ usrerr("451 reply: read error from %s", CurHostName);
mci_setstat(mci, EX_TEMPFAIL, "4.4.2", MsgBuf);
/* if debugging, pause so we can see state */
@@ -1072,13 +1026,13 @@ reply(m, mci, e, timeout, pfunc)
int plen;
snprintf(p, wbufleft, "%s... ",
- shortenstring(e->e_to, 203));
+ shortenstring(e->e_to, MAXSHORTSTR));
plen = strlen(p);
p += plen;
wbufleft -= plen;
}
snprintf(p, wbufleft, "reply(%.100s) during %s",
- mci->mci_host, SmtpPhase);
+ CurHostName, SmtpPhase);
checkfd012(wbuf);
}
#endif
@@ -1116,7 +1070,7 @@ reply(m, mci, e, timeout, pfunc)
if (!(isascii(bufp[0]) && isdigit(bufp[0])) ||
!(isascii(bufp[1]) && isdigit(bufp[1])) ||
!(isascii(bufp[2]) && isdigit(bufp[2])) ||
- !(bufp[3] == ' ' || bufp[3] == '-'))
+ !(bufp[3] == ' ' || bufp[3] == '-' || bufp[3] == '\0'))
continue;
/* process the line */
@@ -1146,7 +1100,8 @@ reply(m, mci, e, timeout, pfunc)
*/
/* save temporary failure messages for posterity */
- if (SmtpReplyBuffer[0] == '4' && SmtpError[0] == '\0')
+ if (SmtpReplyBuffer[0] == '4' &&
+ (bitnset(M_LMTP, m->m_flags) || SmtpError[0] == '\0'))
snprintf(SmtpError, sizeof SmtpError, "%s", SmtpReplyBuffer);
/* reply code 421 is "Service Shutting Down" */
diff --git a/usr.sbin/sendmail/src/util.c b/contrib/sendmail/src/util.c
index 2e5aebe6e6c0..ba35dcd9531c 100644
--- a/usr.sbin/sendmail/src/util.c
+++ b/contrib/sendmail/src/util.c
@@ -1,39 +1,17 @@
/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] = "@(#)util.c 8.137 (Berkeley) 10/22/97";
+static char sccsid[] = "@(#)util.c 8.159 (Berkeley) 7/1/98";
#endif /* not lint */
# include "sendmail.h"
@@ -80,6 +58,122 @@ stripquotes(s)
} while (c != '\0');
}
/*
+** ADDQUOTES -- Adds quotes & quote bits to a string.
+**
+** Runs through a string and adds characters and quote bits.
+**
+** Parameters:
+** s -- the string to modify.
+**
+** Returns:
+** pointer to quoted string.
+**
+** Side Effects:
+** none.
+**
+*/
+
+char *
+addquotes(s)
+ char *s;
+{
+ int len = 0;
+ char c;
+ char *p = s, *q, *r;
+
+ if (s == NULL)
+ return NULL;
+
+ /* Find length of quoted string */
+ while ((c = *p++) != '\0')
+ {
+ len++;
+ if (c == '\\' || c == '"')
+ len++;
+ }
+
+ q = r = xalloc(len + 3);
+ p = s;
+
+ /* add leading quote */
+ *q++ = '"';
+ while ((c = *p++) != '\0')
+ {
+ /* quote \ or " */
+ if (c == '\\' || c == '"')
+ *q++ = '\\';
+ *q++ = c;
+ }
+ *q++ = '"';
+ *q = '\0';
+ return r;
+}
+ /*
+** RFC822_STRING -- Checks string for proper RFC822 string quoting.
+**
+** Runs through a string and verifies RFC822 special characters
+** are only found inside comments, quoted strings, or backslash
+** escaped. Also verified balanced quotes and parenthesis.
+**
+** Parameters:
+** s -- the string to modify.
+**
+** Returns:
+** TRUE -- if the string is RFC822 compliant.
+** FALSE -- if the string is not RFC822 compliant.
+**
+** Side Effects:
+** none.
+**
+*/
+
+bool
+rfc822_string(s)
+ char *s;
+{
+ bool quoted = FALSE;
+ int commentlev = 0;
+ char *c = s;
+
+ if (s == NULL)
+ return FALSE;
+
+ while (*c != '\0')
+ {
+ /* escaped character */
+ if (*c == '\\')
+ {
+ c++;
+ if (*c == '\0')
+ return FALSE;
+ }
+ else if (commentlev == 0 && *c == '"')
+ quoted = !quoted;
+ else if (!quoted)
+ {
+ if (*c == ')')
+ {
+ /* unbalanced ')' */
+ if (commentlev == 0)
+ return FALSE;
+ else
+ commentlev--;
+ }
+ else if (*c == '(')
+ commentlev++;
+ else if (commentlev == 0 &&
+ strchr(MustQuoteChars, *c) != NULL)
+ return FALSE;
+ }
+ c++;
+ }
+ /* unbalanced '"' or '(' */
+ if (quoted || commentlev != 0)
+ return FALSE;
+ else
+ return TRUE;
+}
+ /*
** XALLOC -- Allocate memory and bitch wildly on failure.
**
** THIS IS A CLUDGE. This should be made to give a proper
@@ -286,10 +380,14 @@ xputs(s)
c = *s++ & 0377;
goto printchar;
}
- if (c == MACROEXPAND)
+ if (c == MACROEXPAND || c == MACRODEXPAND)
{
printf("%s$", TermEscape.te_rv_on);
+ if (c == MACRODEXPAND)
+ putchar('&');
shiftout = TRUE;
+ if (*s == '\0')
+ continue;
if (strchr("=~&?", *s) != NULL)
putchar(*s++);
if (bitset(0200, *s))
@@ -538,6 +636,7 @@ putxline(l, len, mci, pxflags)
{
register char *p, *end;
int slop = 0;
+ size_t eol_len = strlen(mci->mci_mailer->m_eol);
/* strip out 0200 bits -- these can look like TELNET protocol */
if (bitset(MCIF_7BIT, mci->mci_flags) ||
@@ -572,6 +671,8 @@ putxline(l, len, mci, pxflags)
bitnset(M_XDOT, mci->mci_mailer->m_flags))
{
(void) putc('.', mci->mci_out);
+ if (!bitset(MCIF_INHEADER, mci->mci_flags))
+ mci->mci_contentlen++;
if (TrafficLogFile != NULL)
(void) putc('.', TrafficLogFile);
}
@@ -581,14 +682,26 @@ putxline(l, len, mci, pxflags)
bitnset(M_ESCFROM, mci->mci_mailer->m_flags))
{
(void) putc('>', mci->mci_out);
+ if (!bitset(MCIF_INHEADER, mci->mci_flags))
+ mci->mci_contentlen++;
if (TrafficLogFile != NULL)
(void) putc('>', TrafficLogFile);
}
while (l < q)
+ {
(void) putc(*l++, mci->mci_out);
+ if (!bitset(MCIF_INHEADER, mci->mci_flags))
+ mci->mci_contentlen++;
+ }
(void) putc('!', mci->mci_out);
+ if (!bitset(MCIF_INHEADER, mci->mci_flags))
+ mci->mci_contentlen++;
fputs(mci->mci_mailer->m_eol, mci->mci_out);
+ if (!bitset(MCIF_INHEADER, mci->mci_flags))
+ mci->mci_contentlen += eol_len;
(void) putc(' ', mci->mci_out);
+ if (!bitset(MCIF_INHEADER, mci->mci_flags))
+ mci->mci_contentlen++;
if (TrafficLogFile != NULL)
{
for (l = l_base; l < q; l++)
@@ -604,6 +717,8 @@ putxline(l, len, mci, pxflags)
bitnset(M_XDOT, mci->mci_mailer->m_flags))
{
(void) putc('.', mci->mci_out);
+ if (!bitset(MCIF_INHEADER, mci->mci_flags))
+ mci->mci_contentlen++;
if (TrafficLogFile != NULL)
(void) putc('.', TrafficLogFile);
}
@@ -613,6 +728,8 @@ putxline(l, len, mci, pxflags)
bitnset(M_ESCFROM, mci->mci_mailer->m_flags))
{
(void) putc('>', mci->mci_out);
+ if (!bitset(MCIF_INHEADER, mci->mci_flags))
+ mci->mci_contentlen++;
if (TrafficLogFile != NULL)
(void) putc('>', TrafficLogFile);
}
@@ -621,16 +738,22 @@ putxline(l, len, mci, pxflags)
if (TrafficLogFile != NULL)
(void) putc(*l, TrafficLogFile);
(void) putc(*l, mci->mci_out);
+ if (!bitset(MCIF_INHEADER, mci->mci_flags))
+ mci->mci_contentlen++;
}
if (TrafficLogFile != NULL)
(void) putc('\n', TrafficLogFile);
fputs(mci->mci_mailer->m_eol, mci->mci_out);
+ if (!bitset(MCIF_INHEADER, mci->mci_flags))
+ mci->mci_contentlen += eol_len;
if (l < end && *l == '\n')
{
if (*++l != ' ' && *l != '\t' && *l != '\0' &&
bitset(PXLF_HEADER, pxflags))
{
(void) putc(' ', mci->mci_out);
+ if (!bitset(MCIF_INHEADER, mci->mci_flags))
+ mci->mci_contentlen++;
if (TrafficLogFile != NULL)
(void) putc(' ', TrafficLogFile);
}
@@ -715,7 +838,7 @@ xfclose(fp, a, b)
*/
static jmp_buf CtxReadTimeout;
-static void readtimeout();
+static void readtimeout __P((time_t));
char *
sfgets(buf, siz, fp, timeout, during)
@@ -801,6 +924,7 @@ sfgets(buf, siz, fp, timeout, during)
return (buf);
}
+/* ARGSUSED */
static void
readtimeout(timeout)
time_t timeout;
@@ -1192,20 +1316,29 @@ dumpfd(fd, printclosed, logit)
{
register char *p;
char *hp;
- char *fmtstr;
#ifdef S_IFSOCK
SOCKADDR sa;
#endif
auto SOCKADDR_LEN_T slen;
int i;
+#if STAT64 > 0
+ struct stat64 st;
+#else
struct stat st;
+#endif
char buf[200];
p = buf;
snprintf(p, SPACELEFT(buf, p), "%3d: ", fd);
p += strlen(p);
- if (fstat(fd, &st) < 0)
+ if (
+#if STAT64 > 0
+ fstat64(fd, &st)
+#else
+ fstat(fd, &st)
+#endif
+ < 0)
{
if (errno != EBADF)
{
@@ -1299,13 +1432,24 @@ dumpfd(fd, printclosed, logit)
default:
defprint:
+ if (sizeof st.st_ino > sizeof (long))
+ snprintf(p, SPACELEFT(buf, p),
+ "dev=%d/%d, ino=%s, nlink=%d, u/gid=%d/%d, ",
+ major(st.st_dev), minor(st.st_dev),
+ quad_to_string(st.st_ino),
+ st.st_nlink, st.st_uid, st.st_gid);
+ else
+ snprintf(p, SPACELEFT(buf, p),
+ "dev=%d/%d, ino=%lu, nlink=%d, u/gid=%d/%d, ",
+ major(st.st_dev), minor(st.st_dev),
+ (unsigned long) st.st_ino,
+ st.st_nlink, st.st_uid, st.st_gid);
if (sizeof st.st_size > sizeof (long))
- fmtstr = "dev=%d/%d, ino=%d, nlink=%d, u/gid=%d/%d, size=%qd";
+ snprintf(p, SPACELEFT(buf, p), "size=%s",
+ quad_to_string(st.st_size));
else
- fmtstr = "dev=%d/%d, ino=%d, nlink=%d, u/gid=%d/%d, size=%ld";
- snprintf(p, SPACELEFT(buf, p), fmtstr,
- major(st.st_dev), minor(st.st_dev), st.st_ino,
- st.st_nlink, st.st_uid, st.st_gid, st.st_size);
+ snprintf(p, SPACELEFT(buf, p), "size=%lu",
+ (unsigned long) st.st_size);
break;
}
@@ -1317,55 +1461,6 @@ printit:
printf("%s\n", buf);
}
/*
-** SHORTENSTRING -- return short version of a string
-**
-** If the string is already short, just return it. If it is too
-** long, return the head and tail of the string.
-**
-** Parameters:
-** s -- the string to shorten.
-** m -- the max length of the string.
-**
-** Returns:
-** Either s or a short version of s.
-*/
-
-#ifndef MAXSHORTSTR
-# define MAXSHORTSTR 203
-#endif
-
-char *
-shortenstring(s, m)
- register const char *s;
- int m;
-{
- int l;
- static char buf[MAXSHORTSTR + 1];
-
- l = strlen(s);
- if (l < m)
- return (char *) s;
- if (m > MAXSHORTSTR)
- m = MAXSHORTSTR;
- else if (m < 10)
- {
- if (m < 5)
- {
- strncpy(buf, s, m);
- buf[m] = '\0';
- return buf;
- }
- strncpy(buf, s, m - 3);
- strcpy(buf + m - 3, "...");
- return buf;
- }
- m = (m - 3) / 2;
- strncpy(buf, s, m);
- strcpy(buf + m, "...");
- strcpy(buf + m + 3, s + l - m);
- return buf;
-}
- /*
** SHORTEN_HOSTNAME -- strip local domain information off of hostname.
**
** Parameters:
@@ -1481,9 +1576,9 @@ prog_open(argv, pfd, e)
/* run as default user */
endpwent();
- if (setgid(DefGid) < 0)
+ if (setgid(DefGid) < 0 && geteuid() == 0)
syserr("prog_open: setgid(%ld) failed", (long) DefGid);
- if (setuid(DefUid) < 0)
+ if (setuid(DefUid) < 0 && geteuid() == 0)
syserr("prog_open: setuid(%ld) failed", (long) DefUid);
/* run in some directory */
@@ -1686,7 +1781,7 @@ denlstring(s, strict, logattacks)
sm_syslog(LOG_NOTICE, CurEnv->e_id,
"POSSIBLE ATTACK from %.100s: newline in string \"%s\"",
RealHostName == NULL ? "[UNKNOWN]" : RealHostName,
- shortenstring(bp, 203));
+ shortenstring(bp, MAXSHORTSTR));
}
return bp;
diff --git a/contrib/sendmail/src/version.c b/contrib/sendmail/src/version.c
new file mode 100644
index 000000000000..bf0b3918adc4
--- /dev/null
+++ b/contrib/sendmail/src/version.c
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983 Eric P. Allman. All rights reserved.
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ *
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)version.c 8.9.1.1 (Berkeley) 7/2/98";
+#endif /* not lint */
+
+char Version[] = "8.9.1";
diff --git a/usr.sbin/sendmail/test/Results b/contrib/sendmail/test/Results
index 3d930daa129d..3d930daa129d 100644
--- a/usr.sbin/sendmail/test/Results
+++ b/contrib/sendmail/test/Results
diff --git a/usr.sbin/sendmail/test/t_exclopen.c b/contrib/sendmail/test/t_exclopen.c
index a42baa93cd0e..a42baa93cd0e 100644
--- a/usr.sbin/sendmail/test/t_exclopen.c
+++ b/contrib/sendmail/test/t_exclopen.c
diff --git a/usr.sbin/sendmail/test/t_pathconf.c b/contrib/sendmail/test/t_pathconf.c
index a4b50382e9e1..a4b50382e9e1 100644
--- a/usr.sbin/sendmail/test/t_pathconf.c
+++ b/contrib/sendmail/test/t_pathconf.c
diff --git a/usr.sbin/sendmail/test/t_seteuid.c b/contrib/sendmail/test/t_seteuid.c
index f3bd52902f91..f3bd52902f91 100644
--- a/usr.sbin/sendmail/test/t_seteuid.c
+++ b/contrib/sendmail/test/t_seteuid.c
diff --git a/usr.sbin/sendmail/test/t_setreuid.c b/contrib/sendmail/test/t_setreuid.c
index 66220682224a..66220682224a 100644
--- a/usr.sbin/sendmail/test/t_setreuid.c
+++ b/contrib/sendmail/test/t_setreuid.c
diff --git a/usr.sbin/sendmail/FAQ b/usr.sbin/sendmail/FAQ
deleted file mode 100644
index 522e7c87ae1d..000000000000
--- a/usr.sbin/sendmail/FAQ
+++ /dev/null
@@ -1,11 +0,0 @@
-The FAQ is no longer maintained with the sendmail release. It is
-posted regularly to comp.mail.sendmail, comp.mail.misc, comp.mail.smail,
-comp.answers, and news.answers, and can be obtained via anonymous FTP
-from ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/sendmail-faq/.
-If you do not have access to anonymous FTP, you can retrieve it by
-sending email to mail-server@rtfm.mit.edu with the command "send
-usenet/news.answers/mail/sendmail-faq" in the message.
-
-An HTML version is also available at http://www.sendmail.org/faq/.
-
- --Eric Allman 19 June 1997
diff --git a/usr.sbin/sendmail/Makefile b/usr.sbin/sendmail/Makefile
deleted file mode 100644
index cd281232216a..000000000000
--- a/usr.sbin/sendmail/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-# @(#)Makefile 8.15 (Berkeley) 9/21/96
-
-VER= XX
-SUBDIR= src mail.local mailstats makemap praliases smrsh cf/cf
-FTPDIR= mastodon:/disks/barad-dur/ftp/sendmail/.
-DISTFILES=sendmail.${VER}.tar.Z sendmail.${VER}.tar.gz \
- RELEASE_NOTES FAQ KNOWNBUGS
-FILES= Files.base Files.cf Files.misc Files.xdoc
-
-tar: sccs-check compile-world run-pax
-
-sccs-check:
- sccs check
- (cd src; sccs check)
- (cd mail.local; sccs check)
- (cd mailstats; sccs check)
- (cd makemap; sccs check)
- (cd praliases; sccs check)
- (cd smrsh; sccs check)
- (cd doc/op; sccs check)
- (cd doc/intro; sccs check)
- (cd doc/usenix; sccs check)
- (cd cf; sccs check)
- (cd cf/m4; sccs check)
- (cd cf/mailer; sccs check)
- (cd cf/feature; sccs check)
- (cd cf/cf; sccs check)
- (cd cf/ostype; sccs check)
- (cd cf/domain; sccs check)
-
-compile-world:
- (cd src; sh makesendmail)
- (cd mail.local; ${MAKE})
- (cd mailstats; ${MAKE})
- (cd makemap; ${MAKE})
- (cd praliases; ${MAKE})
- (cd smrsh; ${MAKE})
- (cd doc; PRINTER=ps ${MAKE})
- (cd doc; chmod 444 op/op.ps intro/intro.ps usenix/usenix.ps)
- (cd cf/cf; ${MAKE})
-
-run-pax: Files.base Files.cf Files.misc Files.xdoc
- chmod +x src/makesendmail
- pax -w -x tar -L \
- -s ",cf/domain/unspecified-domain,sendmail-${VER}/cf/domain/berkeley-only,p" \
- -s ",^,sendmail-${VER}/," \
- -f sendmail.${VER}.tar \
- `cat ${FILES} | grep -v ^#`
- gzip -c sendmail.${VER}.tar > sendmail.${VER}.tar.gz
- compress sendmail.${VER}.tar
-
-ftp: sendmail.${VER}.tar.Z
- rcp ${DISTFILES} ${FTPDIR}
-
-.include <bsd.subdir.mk>
diff --git a/usr.sbin/sendmail/cf/cf/Makefile.dist b/usr.sbin/sendmail/cf/cf/Makefile.dist
deleted file mode 100644
index 7dc55d9bba9f..000000000000
--- a/usr.sbin/sendmail/cf/cf/Makefile.dist
+++ /dev/null
@@ -1,108 +0,0 @@
-#
-# Makefile for configuration files.
-#
-# @(#)Makefile.dist 8.9 (Berkeley) 9/12/95
-#
-
-#
-# Configuration files are created using "m4 file.mc > file.cf";
-# this may be easier than tweaking the Makefile. You do need to
-# have a fairly modern M4 available (GNU m4 works). On SunOS, use
-# /usr/5bin/m4.
-#
-
-M4= m4
-#M4= /usr/src/usr.bin/m4/obj/m4
-CFDIR= ..
-CHMOD= chmod
-ROMODE= 444
-RM= rm -f
-
-.SUFFIXES: .mc .cf
-
-.mc.cf:
- $(RM) $@
- $(M4) ${CFDIR}/m4/cf.m4 $*.mc > $@
- $(CHMOD) $(ROMODE) $@
-
-ALL= generic-bsd4.4.cf generic-hpux9.cf generic-hpux10.cf \
- generic-osf1.cf generic-solaris2.cf \
- cs-hpux9.cf cs-osf1.cf cs-solaris2.cf \
- cs-sunos4.1.cf cs-ultrix4.cf \
- s2k-osf1.cf s2k-ultrix4.cf \
- chez.cs.cf huginn.cs.cf mail.cs.cf mail.eecs.cf mailspool.cs.cf \
- python.cs.cf ucbarpa.cf ucbvax.cf vangogh.cs.cf
-
-all: $(ALL)
-
-clean cleandir:
- $(RM) $(ALL) core
-
-depend install:
-
-# this is overkill, but....
-M4FILES=\
- ${CFDIR}/domain/Berkeley.EDU.m4 \
- ${CFDIR}/domain/CS.Berkeley.EDU.m4 \
- ${CFDIR}/domain/EECS.Berkeley.EDU.m4 \
- ${CFDIR}/domain/S2K.Berkeley.EDU.m4 \
- ${CFDIR}/feature/allmasquerade.m4 \
- ${CFDIR}/feature/always_add_domain.m4 \
- ${CFDIR}/feature/bestmx_is_local.m4 \
- ${CFDIR}/feature/bitdomain.m4 \
- ${CFDIR}/feature/domaintable.m4 \
- ${CFDIR}/feature/local_procmail.m4 \
- ${CFDIR}/feature/mailertable.m4 \
- ${CFDIR}/feature/nocanonify.m4 \
- ${CFDIR}/feature/nodns.m4 \
- ${CFDIR}/feature/notsticky.m4 \
- ${CFDIR}/feature/nouucp.m4 \
- ${CFDIR}/feature/nullclient.m4 \
- ${CFDIR}/feature/redirect.m4 \
- ${CFDIR}/feature/smrsh.m4 \
- ${CFDIR}/feature/stickyhost.m4 \
- ${CFDIR}/feature/use_cw_file.m4 \
- ${CFDIR}/feature/uucpdomain.m4 \
- ${CFDIR}/hack/cssubdomain.m4 \
- ${CFDIR}/m4/cf.m4 \
- ${CFDIR}/m4/nullrelay.m4 \
- ${CFDIR}/m4/proto.m4 \
- ${CFDIR}/m4/version.m4 \
- ${CFDIR}/mailer/cyrus.m4 \
- ${CFDIR}/mailer/fax.m4 \
- ${CFDIR}/mailer/local.m4 \
- ${CFDIR}/mailer/mail11.m4 \
- ${CFDIR}/mailer/pop.m4 \
- ${CFDIR}/mailer/procmail.m4 \
- ${CFDIR}/mailer/smtp.m4 \
- ${CFDIR}/mailer/usenet.m4 \
- ${CFDIR}/mailer/uucp.m4 \
- ${CFDIR}/ostype/aix3.m4 \
- ${CFDIR}/ostype/amdahl-uts.m4 \
- ${CFDIR}/ostype/aux.m4 \
- ${CFDIR}/ostype/bsd4.3.m4 \
- ${CFDIR}/ostype/bsd4.4.m4 \
- ${CFDIR}/ostype/bsdi1.0.m4 \
- ${CFDIR}/ostype/dgux.m4 \
- ${CFDIR}/ostype/domainos.m4 \
- ${CFDIR}/ostype/dynix3.2.m4 \
- ${CFDIR}/ostype/hpux9.m4 \
- ${CFDIR}/ostype/irix4.m4 \
- ${CFDIR}/ostype/irix5.m4 \
- ${CFDIR}/ostype/linux.m4 \
- ${CFDIR}/ostype/nextstep.m4 \
- ${CFDIR}/ostype/osf1.m4 \
- ${CFDIR}/ostype/ptx2.m4 \
- ${CFDIR}/ostype/riscos4.5.m4 \
- ${CFDIR}/ostype/sco3.2.m4 \
- ${CFDIR}/ostype/solaris2.m4 \
- ${CFDIR}/ostype/sunos3.5.m4 \
- ${CFDIR}/ostype/sunos4.1.m4 \
- ${CFDIR}/ostype/svr4.m4 \
- ${CFDIR}/ostype/ultrix4.m4 \
- ${CFDIR}/siteconfig/uucp.cogsci.m4 \
- ${CFDIR}/siteconfig/uucp.old.arpa.m4 \
- ${CFDIR}/siteconfig/uucp.ucbarpa.m4 \
- ${CFDIR}/siteconfig/uucp.ucbvax.m4 \
-
-$(ALL): $(M4FILES)
diff --git a/usr.sbin/sendmail/cf/cf/chez.cs.mc b/usr.sbin/sendmail/cf/cf/chez.cs.mc
deleted file mode 100644
index 85f7e5c2c1ba..000000000000
--- a/usr.sbin/sendmail/cf/cf/chez.cs.mc
+++ /dev/null
@@ -1,55 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for a specific
-# machine in the Computer Science Division at Berkeley, and should
-# not be used elsewhere. It is provided on the sendmail distribution
-# as a sample only.
-#
-# This file is for a home machine that wants to masquerade as an
-# on-campus machine. Additionally, all addresses without a hostname
-# will be forwarded to that machine.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)chez.cs.mc 8.6 (Berkeley) 3/23/96')
-OSTYPE(bsd4.4)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl
-MASQUERADE_AS(vangogh.CS.Berkeley.EDU)dnl
-FEATURE(use_cw_file)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/clientproto.mc b/usr.sbin/sendmail/cf/cf/clientproto.mc
deleted file mode 100644
index 7cbb352c8fb6..000000000000
--- a/usr.sbin/sendmail/cf/cf/clientproto.mc
+++ /dev/null
@@ -1,55 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This the prototype for a "null client" -- that is, a client that
-# does nothing except forward all mail to a mail hub. IT IS NOT
-# USABLE AS IS!!!
-#
-# To use this, you MUST use the nullclient feature with the name of
-# the mail hub as its argument. You MUST also define an `OSTYPE' to
-# define the location of the queue directories and the like.
-# In addition, you MAY select the nocanonify feature. This causes
-# addresses to be sent unqualified via the SMTP connection; normally
-# they are qualifed with the masquerade name, which defaults to the
-# name of the hub machine.
-# Other than these, it should never contain any other lines.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)clientproto.mc 8.7 (Berkeley) 3/23/96')
-
-OSTYPE(unknown)
-FEATURE(nullclient, mailhost.$m)
diff --git a/usr.sbin/sendmail/cf/cf/cs-hpux10.mc b/usr.sbin/sendmail/cf/cf/cs-hpux10.mc
deleted file mode 100644
index 898f3605bc58..000000000000
--- a/usr.sbin/sendmail/cf/cf/cs-hpux10.mc
+++ /dev/null
@@ -1,52 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for HP-UX 9.x.
-# It applies only to the Computer Science Division at Berkeley,
-# and should not be used elsewhere. It is provided on the sendmail
-# distribution as a sample only. To create your own configuration
-# file, create an appropriate domain file in ../domain, change the
-# `DOMAIN' macro below to reference that file, and copy the result
-# to a name of your own choosing.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)cs-hpux10.mc 8.5 (Berkeley) 6/3/97')
-OSTYPE(hpux10)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/cs-hpux9.mc b/usr.sbin/sendmail/cf/cf/cs-hpux9.mc
deleted file mode 100644
index 96ff7c84e776..000000000000
--- a/usr.sbin/sendmail/cf/cf/cs-hpux9.mc
+++ /dev/null
@@ -1,52 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for HP-UX 9.x.
-# It applies only to the Computer Science Division at Berkeley,
-# and should not be used elsewhere. It is provided on the sendmail
-# distribution as a sample only. To create your own configuration
-# file, create an appropriate domain file in ../domain, change the
-# `DOMAIN' macro below to reference that file, and copy the result
-# to a name of your own choosing.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)cs-hpux9.mc 8.6 (Berkeley) 6/3/97')
-OSTYPE(hpux9)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/cs-osf1.mc b/usr.sbin/sendmail/cf/cf/cs-osf1.mc
deleted file mode 100644
index 95bb7f2ea4ac..000000000000
--- a/usr.sbin/sendmail/cf/cf/cs-osf1.mc
+++ /dev/null
@@ -1,51 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for OSF/1.
-# It applies only to the Computer Science Division at Berkeley,
-# and should not be used elsewhere. It is provided on the sendmail
-# distribution as a sample only. To create your own configuration
-# file, create an appropriate domain file in ../domain, change the
-# `DOMAIN' macro below to reference that file, and copy the result
-# to a name of your own choosing.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)cs-osf1.mc 8.5 (Berkeley) 6/3/97')
-OSTYPE(osf1)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/cs-solaris2.mc b/usr.sbin/sendmail/cf/cf/cs-solaris2.mc
deleted file mode 100644
index 515dd121599b..000000000000
--- a/usr.sbin/sendmail/cf/cf/cs-solaris2.mc
+++ /dev/null
@@ -1,51 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for Solaris 2.x.
-# It applies only to the Computer Science Division at Berkeley,
-# and should not be used elsewhere. It is provided on the sendmail
-# distribution as a sample only. To create your own configuration
-# file, create an appropriate domain file in ../domain, change the
-# `DOMAIN' macro below to reference that file, and copy the result
-# to a name of your own choosing.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)cs-solaris2.mc 8.4 (Berkeley) 6/3/97')
-OSTYPE(solaris2)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/cs-sunos4.1.mc b/usr.sbin/sendmail/cf/cf/cs-sunos4.1.mc
deleted file mode 100644
index 70f134fdd3db..000000000000
--- a/usr.sbin/sendmail/cf/cf/cs-sunos4.1.mc
+++ /dev/null
@@ -1,51 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for SunOS 4.1.x.
-# It applies only to the Computer Science Division at Berkeley,
-# and should not be used elsewhere. It is provided on the sendmail
-# distribution as a sample only. To create your own configuration
-# file, create an appropriate domain file in ../domain, change the
-# `DOMAIN' macro below to reference that file, and copy the result
-# to a name of your own choosing.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)cs-sunos4.1.mc 8.5 (Berkeley) 6/3/97')
-OSTYPE(sunos4.1)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/cs-ultrix4.mc b/usr.sbin/sendmail/cf/cf/cs-ultrix4.mc
deleted file mode 100644
index 8888be7e934c..000000000000
--- a/usr.sbin/sendmail/cf/cf/cs-ultrix4.mc
+++ /dev/null
@@ -1,51 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for Ultrix 4.x.
-# It applies only to the Computer Science Division at Berkeley,
-# and should not be used elsewhere. It is provided on the sendmail
-# distribution as a sample only. To create your own configuration
-# file, create an appropriate domain file in ../domain, change the
-# `DOMAIN' macro below to reference that file, and copy the result
-# to a name of your own choosing.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)cs-ultrix4.mc 8.5 (Berkeley) 6/3/97')
-OSTYPE(ultrix4)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/generic-bsd4.4.mc b/usr.sbin/sendmail/cf/cf/generic-bsd4.4.mc
deleted file mode 100644
index 25783a324d70..000000000000
--- a/usr.sbin/sendmail/cf/cf/generic-bsd4.4.mc
+++ /dev/null
@@ -1,49 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a generic configuration file for 4.4 BSD-based systems,
-# including 4.4-Lite, BSDi, NetBSD, and FreeBSD.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)generic-bsd4.4.mc 8.2 (Berkeley) 3/23/96')
-OSTYPE(bsd4.4)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/generic-hpux10.mc b/usr.sbin/sendmail/cf/cf/generic-hpux10.mc
deleted file mode 100644
index 48828eb02467..000000000000
--- a/usr.sbin/sendmail/cf/cf/generic-hpux10.mc
+++ /dev/null
@@ -1,48 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a generic configuration file for HP-UX 9.x.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)generic-hpux10.mc 8.3 (Berkeley) 3/23/96')
-OSTYPE(hpux10)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/generic-hpux9.mc b/usr.sbin/sendmail/cf/cf/generic-hpux9.mc
deleted file mode 100644
index 3c89e4330000..000000000000
--- a/usr.sbin/sendmail/cf/cf/generic-hpux9.mc
+++ /dev/null
@@ -1,48 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a generic configuration file for HP-UX 9.x.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)generic-hpux9.mc 8.3 (Berkeley) 3/23/96')
-OSTYPE(hpux9)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/generic-nextstep3.3.mc b/usr.sbin/sendmail/cf/cf/generic-nextstep3.3.mc
deleted file mode 100644
index 7383c0ba0bcf..000000000000
--- a/usr.sbin/sendmail/cf/cf/generic-nextstep3.3.mc
+++ /dev/null
@@ -1,48 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a generic configuration file for NEXTSTEP 3.3 systems.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)generic-nextstep3.3.mc 8.2 (Berkeley) 3/23/96')
-OSTYPE(nextstep)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/generic-osf1.mc b/usr.sbin/sendmail/cf/cf/generic-osf1.mc
deleted file mode 100644
index bb74d18ab270..000000000000
--- a/usr.sbin/sendmail/cf/cf/generic-osf1.mc
+++ /dev/null
@@ -1,48 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a generic configuration file for OSF/1.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)generic-osf1.mc 8.3 (Berkeley) 3/23/96')
-OSTYPE(osf1)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/generic-solaris2.mc b/usr.sbin/sendmail/cf/cf/generic-solaris2.mc
deleted file mode 100644
index 21fab9fba6ba..000000000000
--- a/usr.sbin/sendmail/cf/cf/generic-solaris2.mc
+++ /dev/null
@@ -1,48 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a generic configuration file for SunOS 5.x (a.k.a. Solaris 2.x)
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)generic-solaris2.mc 8.3 (Berkeley) 3/23/96')
-OSTYPE(solaris2)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/generic-sunos4.1.mc b/usr.sbin/sendmail/cf/cf/generic-sunos4.1.mc
deleted file mode 100644
index eeff027a6ab8..000000000000
--- a/usr.sbin/sendmail/cf/cf/generic-sunos4.1.mc
+++ /dev/null
@@ -1,48 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a generic configuration file for SunOS 4.1.x.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)generic-sunos4.1.mc 8.3 (Berkeley) 3/23/96')
-OSTYPE(sunos4.1)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/generic-ultrix4.mc b/usr.sbin/sendmail/cf/cf/generic-ultrix4.mc
deleted file mode 100644
index dd30936d10ba..000000000000
--- a/usr.sbin/sendmail/cf/cf/generic-ultrix4.mc
+++ /dev/null
@@ -1,48 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a generic configuration file for Ultrix 4.x.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)generic-ultrix4.mc 8.3 (Berkeley) 3/23/96')
-OSTYPE(ultrix4)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/huginn.cs.mc b/usr.sbin/sendmail/cf/cf/huginn.cs.mc
deleted file mode 100644
index aad442b4d840..000000000000
--- a/usr.sbin/sendmail/cf/cf/huginn.cs.mc
+++ /dev/null
@@ -1,64 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for a specific
-# machine in the Computer Science Division at Berkeley, and should
-# not be used elsewhere. It is provided on the sendmail distribution
-# as a sample only.
-#
-# This file is for the backup CS Division mail server.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)huginn.cs.mc 8.7 (Berkeley) 3/23/96')
-OSTYPE(hpux9)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-MASQUERADE_AS(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-
-LOCAL_CONFIG
-DDBerkeley.EDU
-
-# hosts for which we accept and forward mail (must be in .Berkeley.EDU)
-CF CS
-FF/etc/sendmail.cw
-
-LOCAL_RULE_0
-R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ...
-R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ...
-
-R$* < @ $=F . $D . > $#local $: $1 use UDB
diff --git a/usr.sbin/sendmail/cf/cf/knecht.mc b/usr.sbin/sendmail/cf/cf/knecht.mc
deleted file mode 100644
index 71ae12b69bdc..000000000000
--- a/usr.sbin/sendmail/cf/cf/knecht.mc
+++ /dev/null
@@ -1,144 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is specific to Eric's home machine.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)knecht.mc 8.15 (Berkeley) 10/20/97')
-OSTYPE(bsd4.4)dnl
-DOMAIN(generic)dnl
-define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward+$h:$z/.forward')dnl
-define(`confDEF_USER_ID', `mailnull')dnl
-define(`confHOST_STATUS_DIRECTORY', `.hoststat')dnl
-define(`confTO_ICONNECT', `10s')dnl
-define(`confCOPY_ERRORS_TO', `Postmaster')dnl
-define(`confTO_QUEUEWARN', `8h')dnl
-define(`confPRIVACY_FLAGS', ``authwarnings,noexpn,novrfy'')dnl
-define(`LOCAL_MAILER_FLAGS', `rmn9P')dnl
-FEATURE(virtusertable)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-
-LOCAL_CONFIG
-# domains that are not us but which we will relay
-FR-o /etc/sendmail.cR
-
-# domain override table to accept unresolvable/reject resolvable domains
-Kdomaincheck hash -o /etc/domaincheck
-
-
-LOCAL_RULESETS
-
-######################################################################
-### LookUpDomain -- search for domain in domaincheck database
-###
-### Parameters:
-### <$1> -- key (domain name)
-### <$2> -- default (what to return if not found in db)
-### <$3> -- passthru (additional data passed through)
-######################################################################
-
-SLookUpDomain
-R<$+> <$+> <$*> $: < $( domaincheck $1 $: ? $) > <$1> <$2> <$3>
-R<OK> <$+> <$+> <$*> $@ <OK> < $3 >
-R<?> <$+.$+> <$+> <$*> $@ $>LookUpDomain <. $2> <$3> <$4>
-R<?> <$+> <$+> <$*> $@ <$2> <$3>
-R<$+> $* $#error $: $1
-
-
-######################################################################
-### LookUpAddress -- search for host address in domaincheck database
-###
-### Parameters:
-### <$1> -- key (dot quadded host address)
-### <$2> -- default (what to return if not found in db)
-### <$3> -- passthru (additional data passed through)
-######################################################################
-
-SLookUpAddress
-R<$+> <$+> <$*> $: < $( domaincheck $1 $: ? $) > <$1> <$2> <$3>
-R<OK> <$+> <$+> <$*> $@ <OK> < $3 >
-R<?> <$+.$-> <$+> <$*> $@ $>LookUpAddress <$1> <$3> <$4>
-R<?> <$+> <$+> <$*> $@ <$2> <$3>
-R<$+> $* $#error $: $1
-
-######################################################################
-### check_relay
-######################################################################
-
-Scheck_relay
-R$+ $| $+ $: $>LookUpDomain < $1 > <?> < $2 >
-R<?> < $+ > $: $>LookUpAddress < $1 > <OK> <>
-
-######################################################################
-### check_mail
-######################################################################
-
-Scheck_mail
-R<> $@ <OK>
-R$* $: <?> $>Parse0 $>3 $1 make domain canonical
-R<?> $* < @ $+ . > $* $: <OK> $1 < @ $2 > $3 pick default tag
-R<?> $* < @ $+ > $* $: <FAIL> $1 < @ $2 > $3 ... OK or FAIL
-R<$+> $* < @ $+ > $* $: $>LookUpDomain <$3> <$1> <>
-R<OK> $* $@ <OK>
-R<FAIL> $* $#error $: 451 Sender domain must resolve
-
-# handle case of no @domain on address
-R<?> $* $: < ? $&{client_name} > $1
-R<?> $* $@ <OK> ...local unqualed ok
-R<? $+> $* $#error $: 550 Domain name required
- ...remote is not
-R<$+> $* $#error $: $1 error from domaincheck
-
-######################################################################
-### check_rcpt
-######################################################################
-
-Scheck_rcpt
-# anything terminating locally is ok
-R$* $: $>Parse0 $>3 $1 strip local crud
-R$+ < @ $=w . > $@ OK
-R$+ < @ $* $=R . > $@ OK
-
-# anything originating locally is ok
-R$* $: $(dequote "" $&{client_name} $)
-R$=w $@ OK
-R$=R $@ OK
-R$@ $@ OK
-
-# anything else is bogus
-R$* $#error $: "550 Relaying Denied"
diff --git a/usr.sbin/sendmail/cf/cf/mail.cs.mc b/usr.sbin/sendmail/cf/cf/mail.cs.mc
deleted file mode 100644
index 02a3acf7321f..000000000000
--- a/usr.sbin/sendmail/cf/cf/mail.cs.mc
+++ /dev/null
@@ -1,65 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for a specific
-# machine in the Computer Science Division at Berkeley, and should
-# not be used elsewhere. It is provided on the sendmail distribution
-# as a sample only.
-#
-# This file is for the primary CS Division mail server.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)mail.cs.mc 8.10 (Berkeley) 3/23/96')
-OSTYPE(ultrix4)dnl
-DOMAIN(Berkeley.EDU)dnl
-MASQUERADE_AS(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-define(`confUSERDB_SPEC', ``/usr/local/lib/users.cs.db,/usr/local/lib/users.eecs.db'')dnl
-
-LOCAL_CONFIG
-DDBerkeley.EDU
-
-# hosts for which we accept and forward mail (must be in .Berkeley.EDU)
-CF CS
-FF/etc/sendmail.cw
-
-LOCAL_RULE_0
-R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ...
-R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ...
-
-R$* < @ $=F . $D . > $#local $: $1 use UDB
diff --git a/usr.sbin/sendmail/cf/cf/mail.eecs.mc b/usr.sbin/sendmail/cf/cf/mail.eecs.mc
deleted file mode 100644
index 756f5ddefd5d..000000000000
--- a/usr.sbin/sendmail/cf/cf/mail.eecs.mc
+++ /dev/null
@@ -1,65 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for a specific
-# machine in Electrical Engineering and Computer Sciences at Berkeley,
-# and should not be used elsewhere. It is provided on the sendmail
-# distribution as a sample only.
-#
-# This file is for the primary EECS mail server.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)mail.eecs.mc 8.10 (Berkeley) 3/23/96')
-OSTYPE(ultrix4)dnl
-DOMAIN(EECS.Berkeley.EDU)dnl
-MASQUERADE_AS(EECS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-define(`confUSERDB_SPEC', `/usr/local/lib/users.eecs.db,/usr/local/lib/users.cs.db,/usr/local/lib/users.coe.db')dnl
-
-LOCAL_CONFIG
-DDBerkeley.EDU
-
-# hosts for which we accept and forward mail (must be in .Berkeley.EDU)
-CF EECS
-FF/etc/sendmail.cw
-
-LOCAL_RULE_0
-R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ...
-R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ...
-
-R$* < @ $=F . $D . > $#local $: $1 use UDB
diff --git a/usr.sbin/sendmail/cf/cf/mailspool.cs.mc b/usr.sbin/sendmail/cf/cf/mailspool.cs.mc
deleted file mode 100644
index de0a7d7d1ad3..000000000000
--- a/usr.sbin/sendmail/cf/cf/mailspool.cs.mc
+++ /dev/null
@@ -1,58 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for a specific
-# machine in the Computer Science Division at Berkeley, and should
-# not be used elsewhere. It is provided on the sendmail distribution
-# as a sample only.
-#
-# This file is for our mail spool machine. For a while we were using
-# "root.machinename" instead of "root+machinename", so this is included
-# for back compatibility.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)mailspool.cs.mc 8.4 (Berkeley) 3/23/96')
-OSTYPE(sunos4.1)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-
-LOCAL_CONFIG
-CDroot sys-custodian
-
-LOCAL_RULE_3
-R$=D . $+ $1 + $2
diff --git a/usr.sbin/sendmail/cf/cf/python.cs.mc b/usr.sbin/sendmail/cf/cf/python.cs.mc
deleted file mode 100644
index e049d66185a6..000000000000
--- a/usr.sbin/sendmail/cf/cf/python.cs.mc
+++ /dev/null
@@ -1,63 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for a specific
-# machine in the Computer Science Division at Berkeley, and should
-# not be used elsewhere. It is provided on the sendmail distribution
-# as a sample only.
-#
-# This file is for a home machine that wants to masquerade as an
-# on-campus machine. Additionally, all addresses without a hostname
-# will be forwarded to that machine.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)python.cs.mc 8.4 (Berkeley) 3/23/96')
-OSTYPE(bsd4.4)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl
-MASQUERADE_AS(vangogh.CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-
-# accept mail sent to the domain head
-DDBostic.COM
-
-LOCAL_RULE_0
-# accept mail sent to the domain head
-R< @ $D . > : $* $@ $>7 $1 @here:... -> ...
-R$* $=O $* < @ $D . > $@ $>7 $1 $2 $3 ...@here -> ...
-R$* < @ $D . > $#local $: $1 user@here -> user
diff --git a/usr.sbin/sendmail/cf/cf/s2k-osf1.mc b/usr.sbin/sendmail/cf/cf/s2k-osf1.mc
deleted file mode 100644
index ed2d4887fb8d..000000000000
--- a/usr.sbin/sendmail/cf/cf/s2k-osf1.mc
+++ /dev/null
@@ -1,51 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for OSF/1.
-# It applies only to the Sequoia 2000 Project at Berkeley,
-# and should not be used elsewhere. It is provided on the sendmail
-# distribution as a sample only. To create your own configuration
-# file, create an appropriate domain file in ../domain, change the
-# `DOMAIN' macro below to reference that file, and copy the result
-# to a name of your own choosing.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)s2k-osf1.mc 8.5 (Berkeley) 6/3/97')
-OSTYPE(osf1)dnl
-DOMAIN(S2K.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/s2k-ultrix4.mc b/usr.sbin/sendmail/cf/cf/s2k-ultrix4.mc
deleted file mode 100644
index 12fb9602462c..000000000000
--- a/usr.sbin/sendmail/cf/cf/s2k-ultrix4.mc
+++ /dev/null
@@ -1,51 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for Ultrix 4.x.
-# It applies only to the Sequoia 2000 Project at Berkeley,
-# and should not be used elsewhere. It is provided on the sendmail
-# distribution as a sample only. To create your own configuration
-# file, create an appropriate domain file in ../domain, change the
-# `DOMAIN' macro below to reference that file, and copy the result
-# to a name of your own choosing.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)s2k-ultrix4.mc 8.5 (Berkeley) 6/3/97')
-OSTYPE(ultrix4)dnl
-DOMAIN(S2K.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/tcpproto.mc b/usr.sbin/sendmail/cf/cf/tcpproto.mc
deleted file mode 100644
index d023185ccbd8..000000000000
--- a/usr.sbin/sendmail/cf/cf/tcpproto.mc
+++ /dev/null
@@ -1,54 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is the prototype file for a configuration that supports nothing
-# but basic SMTP connections via TCP.
-#
-# You MUST change the `OSTYPE' macro to specify the operating system
-# on which this will run; this will set the location of various
-# support files for your operating system environment. You MAY
-# create a domain file in ../domain and reference it by adding a
-# `DOMAIN' macro after the `OSTYPE' macro. I recommend that you
-# first copy this to another file name so that new sendmail releases
-# will not trash your changes.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)tcpproto.mc 8.5 (Berkeley) 3/23/96')
-OSTYPE(unknown)
-FEATURE(nouucp)
-MAILER(local)
-MAILER(smtp)
diff --git a/usr.sbin/sendmail/cf/cf/ucbarpa.mc b/usr.sbin/sendmail/cf/cf/ucbarpa.mc
deleted file mode 100644
index 5fe99d00476d..000000000000
--- a/usr.sbin/sendmail/cf/cf/ucbarpa.mc
+++ /dev/null
@@ -1,51 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This machine has been decommissioned at Berkeley, and hence should
-# not be considered to be tested. This file is provided as an example
-# only, of how you might set up a joint SMTP/UUCP configuration. At
-# this point I recommend using `FEATURE(mailertable)' instead of
-# `SITECONFIG'. See also ucbvax.mc.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)ucbarpa.mc 8.4 (Berkeley) 3/23/96')
-DOMAIN(CS.Berkeley.EDU)dnl
-OSTYPE(bsd4.4)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-MAILER(uucp)dnl
-SITECONFIG(uucp.ucbarpa, ucbarpa, U)
diff --git a/usr.sbin/sendmail/cf/cf/uucpproto.mc b/usr.sbin/sendmail/cf/cf/uucpproto.mc
deleted file mode 100644
index 6a21156ed52a..000000000000
--- a/usr.sbin/sendmail/cf/cf/uucpproto.mc
+++ /dev/null
@@ -1,54 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is the prototype for a configuration that only supports UUCP
-# and does not have DNS support at all.
-#
-# You MUST change the `OSTYPE' macro to specify the operating system
-# on which this will run; this will set the location of various
-# support files for your operating system environment. You MAY
-# create a domain file in ../domain and reference it by adding a
-# `DOMAIN' macro after the `OSTYPE' macro. I recommend that you
-# first copy this to another file name so that new sendmail releases
-# will not trash your changes.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)uucpproto.mc 8.6 (Berkeley) 3/23/96')
-OSTYPE(unknown)
-FEATURE(nodns)dnl
-MAILER(local)dnl
-MAILER(uucp)dnl
diff --git a/usr.sbin/sendmail/cf/cf/vangogh.cs.mc b/usr.sbin/sendmail/cf/cf/vangogh.cs.mc
deleted file mode 100644
index 95a15e922ed9..000000000000
--- a/usr.sbin/sendmail/cf/cf/vangogh.cs.mc
+++ /dev/null
@@ -1,54 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This is a Berkeley-specific configuration file for a specific
-# machine in the Computer Science Division at Berkeley, and should
-# not be used elsewhere. It is provided on the sendmail distribution
-# as a sample only.
-#
-# This file is for the BSD development machine; it has some parameters
-# set up (to stress sendmail) and accepts mail for some other machines.
-#
-
-divert(0)dnl
-VERSIONID(`@(#)vangogh.cs.mc 8.5 (Berkeley) 3/23/96')
-DOMAIN(CS.Berkeley.EDU)dnl
-OSTYPE(bsd4.4)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-define(`MCI_CACHE_SIZE', 5)
-Cw okeeffe.CS.Berkeley.EDU
-Cw python.CS.Berkeley.EDU
diff --git a/usr.sbin/sendmail/cf/domain/Berkeley.EDU.m4 b/usr.sbin/sendmail/cf/domain/Berkeley.EDU.m4
deleted file mode 100644
index 2bad42bc3063..000000000000
--- a/usr.sbin/sendmail/cf/domain/Berkeley.EDU.m4
+++ /dev/null
@@ -1,45 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-divert(0)
-VERSIONID(`@(#)Berkeley.EDU.m4 8.9 (Berkeley) 10/5/95')
-DOMAIN(berkeley-only)dnl
-define(`BITNET_RELAY', `bitnet-relay.Berkeley.EDU')dnl
-define(`UUCP_RELAY', `uucp-relay.Berkeley.EDU')dnl
-define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')dnl
-define(`confCW_FILE', `-o /etc/sendmail.cw')dnl
-define(`confDONT_INIT_GROUPS', True)dnl
-FEATURE(redirect)dnl
-FEATURE(use_cw_file)dnl
-FEATURE(stickyhost)dnl
diff --git a/usr.sbin/sendmail/cf/domain/CS.Berkeley.EDU.m4 b/usr.sbin/sendmail/cf/domain/CS.Berkeley.EDU.m4
deleted file mode 100644
index 97ccfb208992..000000000000
--- a/usr.sbin/sendmail/cf/domain/CS.Berkeley.EDU.m4
+++ /dev/null
@@ -1,40 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-divert(0)
-VERSIONID(`@(#)CS.Berkeley.EDU.m4 8.2 (Berkeley) 4/21/95')
-DOMAIN(Berkeley.EDU)dnl
-HACK(cssubdomain)dnl
-define(`confUSERDB_SPEC',
- `/usr/sww/share/lib/users.cs.db,/usr/sww/share/lib/users.eecs.db')dnl
diff --git a/usr.sbin/sendmail/cf/domain/EECS.Berkeley.EDU.m4 b/usr.sbin/sendmail/cf/domain/EECS.Berkeley.EDU.m4
deleted file mode 100644
index a41fc7ed823a..000000000000
--- a/usr.sbin/sendmail/cf/domain/EECS.Berkeley.EDU.m4
+++ /dev/null
@@ -1,38 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-divert(0)
-VERSIONID(`@(#)EECS.Berkeley.EDU.m4 8.2 (Berkeley) 4/21/95')
-DOMAIN(Berkeley.EDU)dnl
-MASQUERADE_AS(EECS.Berkeley.EDU)dnl
diff --git a/usr.sbin/sendmail/cf/domain/S2K.Berkeley.EDU.m4 b/usr.sbin/sendmail/cf/domain/S2K.Berkeley.EDU.m4
deleted file mode 100644
index 4aed130b7ba2..000000000000
--- a/usr.sbin/sendmail/cf/domain/S2K.Berkeley.EDU.m4
+++ /dev/null
@@ -1,38 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-divert(0)
-VERSIONID(`@(#)S2K.Berkeley.EDU.m4 8.2 (Berkeley) 4/21/95')
-DOMAIN(CS.Berkeley.EDU)dnl
-MASQUERADE_AS(postgres.Berkeley.EDU)dnl
diff --git a/usr.sbin/sendmail/cf/domain/berkeley-only.m4 b/usr.sbin/sendmail/cf/domain/berkeley-only.m4
deleted file mode 100644
index ef710714ea9e..000000000000
--- a/usr.sbin/sendmail/cf/domain/berkeley-only.m4
+++ /dev/null
@@ -1,40 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-divert(0)
-VERSIONID(`@(#)unspecified-domain.m4 8.2 (Berkeley) 4/21/95')
-errprint(`*** ERROR: You are trying to use the Berkeley sample configuration')
-errprint(` files outside of the Computer Science Division at Berkeley.')
-errprint(` The configuration (.mc) files must be customized to reference')
-errprint(` domain files appropriate for your environment.')
diff --git a/usr.sbin/sendmail/cf/domain/generic.m4 b/usr.sbin/sendmail/cf/domain/generic.m4
deleted file mode 100644
index ca91f50f112e..000000000000
--- a/usr.sbin/sendmail/cf/domain/generic.m4
+++ /dev/null
@@ -1,47 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# The following is a generic domain file. You should be able to
-# use it anywhere. If you want to customize it, copy it to a file
-# named with your domain and make the edits; then, copy the appropriate
-# .mc files and change `DOMAIN(generic)' to reference your updated domain
-# files.
-#
-divert(0)
-VERSIONID(`@(#)generic.m4 8.3 (Berkeley) 3/24/96')
-define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')dnl
-FEATURE(redirect)dnl
-FEATURE(use_cw_file)dnl
diff --git a/usr.sbin/sendmail/cf/feature/bestmx_is_local.m4 b/usr.sbin/sendmail/cf/feature/bestmx_is_local.m4
deleted file mode 100644
index 3849623f051d..000000000000
--- a/usr.sbin/sendmail/cf/feature/bestmx_is_local.m4
+++ /dev/null
@@ -1,66 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)bestmx_is_local.m4 8.5 (Berkeley) 3/28/97')
-divert(-1)
-
-LOCAL_CONFIG
-# turn on bestMX lookup table
-Kbestmx bestmx
-
-# limit bestmx to these domains
-CB`'_ARG_
-
-LOCAL_NET_CONFIG
-
-# If we are the best MX for a site, then we want to accept
-# its mail as local. We assume we've already weeded out mail to
-# UUCP sites which are connected to us, which should also have
-# listed us as their best MX.
-#
-# Warning: this may generate a lot of extra DNS traffic -- a
-# lower cost method is to list all the expected best MX hosts
-# in $=w. This should be fine (and easier to administer) for
-# low to medium traffic hosts. If you use the limited bestmx
-# by passing in a set of possible domains it will improve things.
-
-ifelse(_ARG_, `', `', `#')dnl unlimited bestmx
-R$* < @ $* > $* $: $1 < @ $2 @@ $(bestmx $2 $) > $3
-ifelse(_ARG_, `', `#', `')dnl limit bestmx to $=B
-R$* < @ $* $=B . > $* $: $1 < @ $2 $3 . @@ $(bestmx $2 $3 . $) > $4
-R$* $=O $* < @ $* @@ $=w . > $* $@ $>97 $1 $2 $3
-R$* < @ $* @@ $=w . > $* $#local $: $1
-R$* < @ $* @@ $* > $* $: $1 < @ $2 > $4
diff --git a/usr.sbin/sendmail/cf/feature/genericstable.m4 b/usr.sbin/sendmail/cf/feature/genericstable.m4
deleted file mode 100644
index 50fbbd0f25fb..000000000000
--- a/usr.sbin/sendmail/cf/feature/genericstable.m4
+++ /dev/null
@@ -1,40 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)genericstable.m4 8.1 (Berkeley) 2/11/96')
-divert(-1)
-
-define(`GENERICS_TABLE', ifelse(_ARG_, `', `hash -o /etc/genericstable', `_ARG_'))dnl
diff --git a/usr.sbin/sendmail/cf/feature/limited_masquerade.m4 b/usr.sbin/sendmail/cf/feature/limited_masquerade.m4
deleted file mode 100644
index fc4f5eaf3fc8..000000000000
--- a/usr.sbin/sendmail/cf/feature/limited_masquerade.m4
+++ /dev/null
@@ -1,40 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)limited_masquerade.m4 8.1 (Berkeley) 2/11/96')
-divert(-1)
-
-define(`_LIMITED_MASQUERADE_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/local_procmail.m4 b/usr.sbin/sendmail/cf/feature/local_procmail.m4
deleted file mode 100644
index db0cc87964c3..000000000000
--- a/usr.sbin/sendmail/cf/feature/local_procmail.m4
+++ /dev/null
@@ -1,47 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1994 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)local_procmail.m4 8.6 (Berkeley) 10/20/96')
-divert(-1)
-
-define(`LOCAL_MAILER_PATH',
- ifelse(_ARG_, `',
- ifdef(`PROCMAIL_MAILER_PATH',
- PROCMAIL_MAILER_PATH,
- `/usr/local/bin/procmail'),
- _ARG_))
-define(`LOCAL_MAILER_FLAGS', `SPfhn9')
-define(`LOCAL_MAILER_ARGS', `procmail -Y -a $h -d $u')
diff --git a/usr.sbin/sendmail/cf/feature/masquerade_entire_domain.m4 b/usr.sbin/sendmail/cf/feature/masquerade_entire_domain.m4
deleted file mode 100644
index d94c007783b2..000000000000
--- a/usr.sbin/sendmail/cf/feature/masquerade_entire_domain.m4
+++ /dev/null
@@ -1,40 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)masquerade_entire_domain.m4 8.1 (Berkeley) 2/11/96')
-divert(-1)
-
-define(`_MASQUERADE_ENTIRE_DOMAIN_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/masquerade_envelope.m4 b/usr.sbin/sendmail/cf/feature/masquerade_envelope.m4
deleted file mode 100644
index 1e6010856ea6..000000000000
--- a/usr.sbin/sendmail/cf/feature/masquerade_envelope.m4
+++ /dev/null
@@ -1,40 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)masquerade_envelope.m4 8.1 (Berkeley) 7/9/95')
-divert(-1)
-
-define(`_MASQUERADE_ENVELOPE_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/notsticky.m4 b/usr.sbin/sendmail/cf/feature/notsticky.m4
deleted file mode 100644
index 027b8e3a51c0..000000000000
--- a/usr.sbin/sendmail/cf/feature/notsticky.m4
+++ /dev/null
@@ -1,42 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)notsticky.m4 8.3 (Berkeley) 5/29/95')
-#
-# This is now the default. Use ``FEATURE(stickyhost)'' if you want
-# the old default behaviour.
-#
-divert(-1)
diff --git a/usr.sbin/sendmail/cf/feature/nullclient.m4 b/usr.sbin/sendmail/cf/feature/nullclient.m4
deleted file mode 100644
index 6eaa8c1aeca8..000000000000
--- a/usr.sbin/sendmail/cf/feature/nullclient.m4
+++ /dev/null
@@ -1,72 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-ifdef(`SMTP_MAILER_FLAGS',, `define(`SMTP_MAILER_FLAGS', `')')
-define(_NULL_CLIENT_ONLY_, `1')
-ifelse(_ARG_, `', `errprint(`Feature "nullclient" requires argument')',
- `define(`MAIL_HUB', _ARG_)')
-POPDIVERT
-
-#
-# This is used only for relaying mail from a client to a hub when
-# that client does absolutely nothing else -- i.e., it is a "null
-# mailer". In this sense, it acts like the "R" option in Sun
-# sendmail.
-#
-
-VERSIONID(`@(#)nullclient.m4 8.7 (Berkeley) 2/11/96')
-
-PUSHDIVERT(6)
-# hub host (to which all mail is sent)
-DH`'ifdef(`MAIL_HUB', MAIL_HUB,
- `errprint(`MAIL_HUB not defined for nullclient feature')')
-ifdef(`MASQUERADE_NAME',, `define(`MASQUERADE_NAME', MAIL_HUB)')dnl
-
-# route-addr separators
-C: : ,
-POPDIVERT
-PUSHDIVERT(7)
-############################################
-### Null Client Mailer specification ###
-############################################
-
-ifdef(`confRELAY_MAILER',,
- `define(`confRELAY_MAILER', `nullclient')')dnl
-ifdef(`confFROM_HEADER',,
- `define(`confFROM_HEADER', <$g>)')dnl
-ifdef(`SMTP_MAILER_ARGS',, `define(`SMTP_MAILER_ARGS', `IPC $h')')dnl
-
-Mnullclient, P=[IPC], F=CONCAT(mDFMuXa, SMTP_MAILER_FLAGS),ifdef(`SMTP_MAILER_MAX', ` M=SMTP_MAILER_MAX,')
- A=SMTP_MAILER_ARGS
-POPDIVERT
diff --git a/usr.sbin/sendmail/cf/feature/redirect.m4 b/usr.sbin/sendmail/cf/feature/redirect.m4
deleted file mode 100644
index 27f235765359..000000000000
--- a/usr.sbin/sendmail/cf/feature/redirect.m4
+++ /dev/null
@@ -1,50 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)redirect.m4 8.5 (Berkeley) 8/17/96')
-divert(-1)
-
-
-PUSHDIVERT(3)
-# addresses sent to foo@host.REDIRECT will give a 551 error code
-R$* < @ $+ .REDIRECT. > $: $1 < @ $2 . REDIRECT . > < ${opMode} >
-R$* < @ $+ .REDIRECT. > <i> $: $1 < @ $2 . REDIRECT. >
-R$* < @ $+ .REDIRECT. > < $- > $# error $@ 5.1.1 $: "551 User has moved; please try " <$1@$2>
-POPDIVERT
-
-PUSHDIVERT(6)
-CPREDIRECT
-POPDIVERT
diff --git a/usr.sbin/sendmail/cf/feature/smrsh.m4 b/usr.sbin/sendmail/cf/feature/smrsh.m4
deleted file mode 100644
index 6b4faab25261..000000000000
--- a/usr.sbin/sendmail/cf/feature/smrsh.m4
+++ /dev/null
@@ -1,42 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)smrsh.m4 8.2 (Berkeley) 11/11/95')
-divert(-1)
-
-ifdef(`_MAILER_local_',
- `errprint(`*** FEATURE(smrsh) must occur before MAILER(local)')')dnl
-define(`LOCAL_SHELL_PATH', ifelse(_ARG_, `', `/usr/local/etc/smrsh', _ARG_))
diff --git a/usr.sbin/sendmail/cf/feature/stickyhost.m4 b/usr.sbin/sendmail/cf/feature/stickyhost.m4
deleted file mode 100644
index bdd9c9a729f0..000000000000
--- a/usr.sbin/sendmail/cf/feature/stickyhost.m4
+++ /dev/null
@@ -1,40 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)stickyhost.m4 8.1 (Berkeley) 11/12/94')
-divert(-1)
-
-define(`_STICKY_LOCAL_DOMAIN_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/use_ct_file.m4 b/usr.sbin/sendmail/cf/feature/use_ct_file.m4
deleted file mode 100644
index c33bbfd7833e..000000000000
--- a/usr.sbin/sendmail/cf/feature/use_ct_file.m4
+++ /dev/null
@@ -1,46 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)use_ct_file.m4 8.1 (Berkeley) 9/17/95')
-divert(-1)
-
-# if defined, the sendmail.cf will read the /etc/sendmail.ct file
-# to find the names of trusted users. There should only be a few
-# of these, and normally this is done directly in the .cf file.
-
-define(`_USE_CT_FILE_', `')
-
-divert(0)
diff --git a/usr.sbin/sendmail/cf/feature/virtusertable.m4 b/usr.sbin/sendmail/cf/feature/virtusertable.m4
deleted file mode 100644
index 91db88c25627..000000000000
--- a/usr.sbin/sendmail/cf/feature/virtusertable.m4
+++ /dev/null
@@ -1,40 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)virtusertable.m4 8.1 (Berkeley) 2/11/96')
-divert(-1)
-
-define(`VIRTUSER_TABLE', ifelse(_ARG_, `', `hash -o /etc/virtusertable', `_ARG_'))dnl
diff --git a/usr.sbin/sendmail/cf/m4/cf.m4 b/usr.sbin/sendmail/cf/m4/cf.m4
deleted file mode 100644
index 4e54f4142898..000000000000
--- a/usr.sbin/sendmail/cf/m4/cf.m4
+++ /dev/null
@@ -1,50 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983, 1995 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# This file is included so that multiple includes of cf.m4 will work
-#
-
-# figure out where the CF files live
-ifdef(`_CF_DIR_', `',
- `ifelse(__file__, `__file__',
- `define(`_CF_DIR_', `../')',
- `define(`_CF_DIR_',
- substr(__file__, 0, eval(len(__file__) - 8)))')')
-
-divert(0)dnl
-ifdef(`OSTYPE', `dnl',
-`include(_CF_DIR_`'m4/cfhead.m4)dnl
-VERSIONID(`@(#)cf.m4 8.24 (Berkeley) 8/16/95')')
diff --git a/usr.sbin/sendmail/cf/m4/version.m4 b/usr.sbin/sendmail/cf/m4/version.m4
deleted file mode 100644
index a2cbdc9144d7..000000000000
--- a/usr.sbin/sendmail/cf/m4/version.m4
+++ /dev/null
@@ -1,39 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-VERSIONID(`@(#)version.m4 8.8.8.1 (Berkeley) 10/24/97')
-#
-divert(0)
-# Configuration version number
-DZ8.8.8`'ifdef(`confCF_VERSION', `/confCF_VERSION')
diff --git a/usr.sbin/sendmail/cf/mailer/fax.m4 b/usr.sbin/sendmail/cf/mailer/fax.m4
deleted file mode 100644
index 77124650ee76..000000000000
--- a/usr.sbin/sendmail/cf/mailer/fax.m4
+++ /dev/null
@@ -1,57 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# This assumes you already have Sam Leffler's HylaFAX software.
-#
-# Tested with HylaFAX 4.0pl1
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-ifdef(`FAX_MAILER_ARGS',,
- `define(`FAX_MAILER_ARGS', faxmail -d $u@$h $f)')
-ifdef(`FAX_MAILER_PATH',,
- `define(`FAX_MAILER_PATH', /usr/local/bin/faxmail)')
-ifdef(`FAX_MAILER_MAX',,
- `define(`FAX_MAILER_MAX', 100000)')
-POPDIVERT
-####################################
-### FAX Mailer specification ###
-####################################
-
-VERSIONID(`@(#)fax.m4 8.6 (Berkeley) 7/6/97')
-
-Mfax, P=FAX_MAILER_PATH, F=DFMhu, S=14, R=24, M=FAX_MAILER_MAX, T=X-Phone/X-FAX/X-Unix,
- A=FAX_MAILER_ARGS
-
-LOCAL_CONFIG
-CPFAX
diff --git a/usr.sbin/sendmail/cf/mailer/local.m4 b/usr.sbin/sendmail/cf/mailer/local.m4
deleted file mode 100644
index 998778a0d0c4..000000000000
--- a/usr.sbin/sendmail/cf/mailer/local.m4
+++ /dev/null
@@ -1,94 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `rmn9')')
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/mail)')
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -d $u')')
-ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', `eu9')')
-ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', /bin/sh)')
-ifdef(`LOCAL_SHELL_ARGS',, `define(`LOCAL_SHELL_ARGS', `sh -c $u')')
-ifdef(`LOCAL_SHELL_DIR',, `define(`LOCAL_SHELL_DIR', `$z:/')')
-POPDIVERT
-
-##################################################
-### Local and Program Mailer specification ###
-##################################################
-
-VERSIONID(`@(#)local.m4 8.23 (Berkeley) 5/31/96')
-
-Mlocal, P=LOCAL_MAILER_PATH, F=CONCAT(`lsDFMAw5:/|@q', LOCAL_MAILER_FLAGS), S=10/30, R=20/40,
- _OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')_OPTINS(`LOCAL_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/X-Unix,
- A=LOCAL_MAILER_ARGS
-Mprog, P=LOCAL_SHELL_PATH, F=CONCAT(`lsDFMoq', LOCAL_SHELL_FLAGS), S=10/30, R=20/40, D=LOCAL_SHELL_DIR,
- _OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')T=X-Unix,
- A=LOCAL_SHELL_ARGS
-
-#
-# Envelope sender rewriting
-#
-S10
-R<@> $n errors to mailer-daemon
-R$+ $: $>50 $1 add local domain if needed
-R$* $: $>94 $1 do masquerading
-
-#
-# Envelope recipient rewriting
-#
-S20
-R$+ < @ $* > $: $1 strip host part
-
-#
-# Header sender rewriting
-#
-S30
-R<@> $n errors to mailer-daemon
-R$+ $: $>50 $1 add local domain if needed
-R$* $: $>93 $1 do masquerading
-
-#
-# Header recipient rewriting
-#
-S40
-R$+ $: $>50 $1 add local domain if needed
-ifdef(`_ALL_MASQUERADE_', `', `#')dnl
-R$* $: $>93 $1 do all-masquerading
-
-#
-# Common code to add local domain name (only if always-add-domain)
-#
-S50
-ifdef(`_ALWAYS_ADD_DOMAIN_', `', `#')dnl
-R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-ifdef(`_ALWAYS_ADD_DOMAIN_', `', `#')dnl
-R$+ $@ $1 < @ *LOCAL* > add local qualification
diff --git a/usr.sbin/sendmail/cf/mailer/phquery.m4 b/usr.sbin/sendmail/cf/mailer/phquery.m4
deleted file mode 100644
index ee359e09e532..000000000000
--- a/usr.sbin/sendmail/cf/mailer/phquery.m4
+++ /dev/null
@@ -1,51 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# Contributed by Kimmo Suominen <kim@tac.nyc.ny.us>.
-#
-
-ifdef(`PH_MAILER_PATH',, `define(`PH_MAILER_PATH', /usr/local/etc/phquery)')
-ifdef(`PH_MAILER_FLAGS',, `define(`PH_MAILER_FLAGS', `ehmu')')
-ifdef(`PH_MAILER_ARGS',, `define(`PH_MAILER_ARGS', `phquery -- $u')')
-
-POPDIVERT
-
-####################################
-### PH Mailer specification ###
-####################################
-
-VERSIONID(`@(#)phquery.m4 8.1 (Berkeley) 8/1/95')
-
-Mph, P=PH_MAILER_PATH, F=CONCAT(`nrDFM', PH_MAILER_FLAGS), S=10, R=20/40,
- A=PH_MAILER_ARGS
diff --git a/usr.sbin/sendmail/cf/mailer/pop.m4 b/usr.sbin/sendmail/cf/mailer/pop.m4
deleted file mode 100644
index 7e8ec0d22932..000000000000
--- a/usr.sbin/sendmail/cf/mailer/pop.m4
+++ /dev/null
@@ -1,53 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-ifdef(`POP_MAILER_PATH',, `define(`POP_MAILER_PATH', /usr/lib/mh/spop)')
-ifdef(`POP_MAILER_FLAGS',, `define(`POP_MAILER_FLAGS', `Penu')')
-ifdef(`POP_MAILER_ARGS',, `define(`POP_MAILER_ARGS', `pop $u')')
-
-POPDIVERT
-
-####################################
-### POP Mailer specification ###
-####################################
-
-VERSIONID(`@(#)pop.m4 8.6 (Berkeley) 2/12/96')
-
-Mpop, P=POP_MAILER_PATH, F=CONCAT(`lsDFMq', POP_MAILER_FLAGS), S=10, R=20/40, T=DNS/RFC822/X-Unix,
- A=POP_MAILER_ARGS
-
-LOCAL_CONFIG
-# POP mailer is a pseudo-domain
-CPPOP
diff --git a/usr.sbin/sendmail/cf/mailer/procmail.m4 b/usr.sbin/sendmail/cf/mailer/procmail.m4
deleted file mode 100644
index 0ea0717caa14..000000000000
--- a/usr.sbin/sendmail/cf/mailer/procmail.m4
+++ /dev/null
@@ -1,54 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-ifdef(`PROCMAIL_MAILER_PATH',,
- `ifdef(`PROCMAIL_PATH',
- `define(`PROCMAIL_MAILER_PATH', PROCMAIL_PATH)',
- `define(`PROCMAIL_MAILER_PATH', /usr/local/bin/procmail)')')
-ifdef(`PROCMAIL_MAILER_FLAGS',,
- `define(`PROCMAIL_MAILER_FLAGS', `SPhnu9')')
-ifdef(`PROCMAIL_MAILER_ARGS',,
- `define(`PROCMAIL_MAILER_ARGS', `procmail -Y -m $h $f $u')')
-
-POPDIVERT
-
-######################*****##############
-### PROCMAIL Mailer specification ###
-##################*****##################
-
-VERSIONID(`@(#)procmail.m4 8.6 (Berkeley) 4/30/97')
-
-Mprocmail, P=PROCMAIL_MAILER_PATH, F=CONCAT(`DFM', PROCMAIL_MAILER_FLAGS), S=11/31, R=21/31, T=DNS/RFC822/X-Unix,
- ifdef(`PROCMAIL_MAILER_MAX', `M=PROCMAIL_MAILER_MAX, ')A=PROCMAIL_MAILER_ARGS
diff --git a/usr.sbin/sendmail/cf/mailer/usenet.m4 b/usr.sbin/sendmail/cf/mailer/usenet.m4
deleted file mode 100644
index 2abf3b072dba..000000000000
--- a/usr.sbin/sendmail/cf/mailer/usenet.m4
+++ /dev/null
@@ -1,48 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-ifdef(`USENET_MAILER_PATH',, `define(`USENET_MAILER_PATH', /usr/lib/news/inews)')
-ifdef(`USENET_MAILER_FLAGS',, `define(`USENET_MAILER_FLAGS', `rlsDFMmn')')
-ifdef(`USENET_MAILER_ARGS',, `define(`USENET_MAILER_ARGS', `inews -m -h -n')')
-POPDIVERT
-####################################
-### USENET Mailer specification ###
-####################################
-
-VERSIONID(`@(#)usenet.m4 8.5 (Berkeley) 4/26/95')
-
-Musenet, P=USENET_MAILER_PATH, F=USENET_MAILER_FLAGS, S=10, R=20,
- _OPTINS(`USENET_MAILER_MAX', `M=', `, ')T=X-Usenet/X-Usenet/X-Unix,
- A=USENET_MAILER_ARGS $u
diff --git a/usr.sbin/sendmail/cf/ostype/aix2.m4 b/usr.sbin/sendmail/cf/ostype/aix2.m4
deleted file mode 100644
index 423393b5f7bb..000000000000
--- a/usr.sbin/sendmail/cf/ostype/aix2.m4
+++ /dev/null
@@ -1,41 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1995 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)aix2.m4 8.2 (Berkeley) 9/19/96')
-define(`LOCAL_MAILER_PATH', /bin/bellmail)dnl
-define(`LOCAL_MAILER_ARGS', mail $u)dnl
-define(`LOCAL_MAILER_FLAGS', `mn9')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/aix3.m4 b/usr.sbin/sendmail/cf/ostype/aix3.m4
deleted file mode 100644
index 153e1f6568c7..000000000000
--- a/usr.sbin/sendmail/cf/ostype/aix3.m4
+++ /dev/null
@@ -1,41 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)aix3.m4 8.6 (Berkeley) 9/19/96')
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail $u)')dnl
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `mn9')')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/aix4.m4 b/usr.sbin/sendmail/cf/ostype/aix4.m4
deleted file mode 100644
index 4dc33878f8fc..000000000000
--- a/usr.sbin/sendmail/cf/ostype/aix4.m4
+++ /dev/null
@@ -1,41 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1996 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)aix4.m4 8.1 (Berkeley) 11/13/96')
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail -F $g $u)')dnl
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `mn9')')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/altos.m4 b/usr.sbin/sendmail/cf/ostype/altos.m4
deleted file mode 100644
index 10c4da91d925..000000000000
--- a/usr.sbin/sendmail/cf/ostype/altos.m4
+++ /dev/null
@@ -1,49 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1996 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# Contributed by Tim Rice <tim@trr.metro.NET>.
-#
-
-divert(0)
-VERSIONID(`@(#)altos.m4 8.3 (Berkeley) 9/25/96')
-
-define(`ALIAS_FILE', /usr/lib/mail/aliases)dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/lmail)')dnl
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', mPuhCE9)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail $u')')dnl
-ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', Peu)')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/amdahl-uts.m4 b/usr.sbin/sendmail/cf/ostype/amdahl-uts.m4
deleted file mode 100644
index 3583746a9bc3..000000000000
--- a/usr.sbin/sendmail/cf/ostype/amdahl-uts.m4
+++ /dev/null
@@ -1,44 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)amdahl-uts.m4 8.4 (Berkeley) 9/25/96')
-divert(-1)
-
-define(`ALIAS_FILE', /etc/mail/aliases)
-ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/mail/sendmail.hf)')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `fSn9')')
-define(`confCW_FILE', /etc/mail/sendmail.cw)
diff --git a/usr.sbin/sendmail/cf/ostype/aux.m4 b/usr.sbin/sendmail/cf/ostype/aux.m4
deleted file mode 100644
index 0f515d150a86..000000000000
--- a/usr.sbin/sendmail/cf/ostype/aux.m4
+++ /dev/null
@@ -1,43 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)aux.m4 8.4 (Berkeley) 9/25/96')
-define(`ALIAS_FILE', /usr/lib/aliases)dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', mn9)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -d -r $f $u')')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/bsd4.3.m4 b/usr.sbin/sendmail/cf/ostype/bsd4.3.m4
deleted file mode 100644
index 546fd376c93c..000000000000
--- a/usr.sbin/sendmail/cf/ostype/bsd4.3.m4
+++ /dev/null
@@ -1,39 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)bsd4.3.m4 8.4 (Berkeley) 11/13/95')
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/bsd4.4.m4 b/usr.sbin/sendmail/cf/ostype/bsd4.4.m4
deleted file mode 100644
index 835e4d89c6c1..000000000000
--- a/usr.sbin/sendmail/cf/ostype/bsd4.4.m4
+++ /dev/null
@@ -1,42 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-#
-
-divert(0)
-VERSIONID(`@(#)bsd4.4.m4 8.4 (Berkeley) 11/13/95')
-ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/share/misc/sendmail.hf)')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/log/sendmail.st)')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/bsdi1.0.m4 b/usr.sbin/sendmail/cf/ostype/bsdi1.0.m4
deleted file mode 100644
index 8bc3c218b41e..000000000000
--- a/usr.sbin/sendmail/cf/ostype/bsdi1.0.m4
+++ /dev/null
@@ -1,38 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)bsdi1.0.m4 8.2 (Berkeley) 8/16/95')dnl
-include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
diff --git a/usr.sbin/sendmail/cf/ostype/bsdi2.0.m4 b/usr.sbin/sendmail/cf/ostype/bsdi2.0.m4
deleted file mode 100644
index a98ddc0d45c6..000000000000
--- a/usr.sbin/sendmail/cf/ostype/bsdi2.0.m4
+++ /dev/null
@@ -1,38 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)bsdi2.0.m4 8.1 (Berkeley) 8/16/95')dnl
-include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
diff --git a/usr.sbin/sendmail/cf/ostype/dgux.m4 b/usr.sbin/sendmail/cf/ostype/dgux.m4
deleted file mode 100644
index ec8f4b4ea277..000000000000
--- a/usr.sbin/sendmail/cf/ostype/dgux.m4
+++ /dev/null
@@ -1,41 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)dgux.m4 8.4 (Berkeley) 9/19/96')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', m9)')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
-LOCAL_CONFIG
-E_FORCE_MAIL_LOCAL_=yes
diff --git a/usr.sbin/sendmail/cf/ostype/domainos.m4 b/usr.sbin/sendmail/cf/ostype/domainos.m4
deleted file mode 100644
index 4af9906459ed..000000000000
--- a/usr.sbin/sendmail/cf/ostype/domainos.m4
+++ /dev/null
@@ -1,42 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)domainos.m4 8.3 (Berkeley) 9/25/96')
-divert(-1)
-
-define(`ALIAS_FILE', /usr/lib/aliases)
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')
diff --git a/usr.sbin/sendmail/cf/ostype/dynix3.2.m4 b/usr.sbin/sendmail/cf/ostype/dynix3.2.m4
deleted file mode 100644
index ffbe943e1912..000000000000
--- a/usr.sbin/sendmail/cf/ostype/dynix3.2.m4
+++ /dev/null
@@ -1,39 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)dynix3.2.m4 8.3 (Berkeley) 9/25/96')
-define(`ALIAS_FILE', /usr/lib/aliases)dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/gnuhurd.m4 b/usr.sbin/sendmail/cf/ostype/gnuhurd.m4
deleted file mode 100644
index 36766795ca1b..000000000000
--- a/usr.sbin/sendmail/cf/ostype/gnuhurd.m4
+++ /dev/null
@@ -1,41 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-#
-
-divert(0)
-VERSIONID(`@(#)gnuhurd.m4 8.1 (Berkeley) 3/8/97')
-ifdef(`HELP_FILE',, `define(`HELP_FILE', /share/misc/sendmail.hf)')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/log/sendmail.st)')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /libexec/mail.local)')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/hpux10.m4 b/usr.sbin/sendmail/cf/ostype/hpux10.m4
deleted file mode 100644
index c1d7e6946d3f..000000000000
--- a/usr.sbin/sendmail/cf/ostype/hpux10.m4
+++ /dev/null
@@ -1,51 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)hpux10.m4 8.8 (Berkeley) 9/25/96')
-
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
-define(`ALIAS_FILE', /etc/mail/aliases)dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /etc/mail/sendmail.st)')dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/share/lib/sendmail.hf)')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/rmail)')dnl
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `m9')')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
-ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', /usr/bin/sh)')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
-dnl
-dnl For maximum compability with HP-UX, use:
-dnl define(`confME_TOO', True)dnl
diff --git a/usr.sbin/sendmail/cf/ostype/hpux9.m4 b/usr.sbin/sendmail/cf/ostype/hpux9.m4
deleted file mode 100644
index 82e4f75ab7bb..000000000000
--- a/usr.sbin/sendmail/cf/ostype/hpux9.m4
+++ /dev/null
@@ -1,49 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)hpux9.m4 8.12 (Berkeley) 9/25/96')
-
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-define(`ALIAS_FILE', /usr/lib/aliases)dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/bin/rmail')')dnl
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `m9')')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
-dnl
-dnl For maximum compability with HP-UX, use:
-dnl define(`confME_TOO', True)dnl
diff --git a/usr.sbin/sendmail/cf/ostype/irix4.m4 b/usr.sbin/sendmail/cf/ostype/irix4.m4
deleted file mode 100644
index fb8eff720d4e..000000000000
--- a/usr.sbin/sendmail/cf/ostype/irix4.m4
+++ /dev/null
@@ -1,41 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)irix4.m4 8.7 (Berkeley) 9/25/96')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehm9)')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-define(`ALIAS_FILE', /usr/lib/aliases)dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/irix5.m4 b/usr.sbin/sendmail/cf/ostype/irix5.m4
deleted file mode 100644
index 89a2975adffd..000000000000
--- a/usr.sbin/sendmail/cf/ostype/irix5.m4
+++ /dev/null
@@ -1,61 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1995 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Contributed by Kari E. Hurtta <Kari.Hurtta@dionysos.fmi.fi>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# Notes:
-# - SGI's /etc/sendmail.cf defines also 'u' for local mailer flags -- you
-# perhaps don't want it.
-# - Perhaps is should also add define(`LOCAL_MAILER_CHARSET', iso-8859-1)
-# put some Asian sites may prefer otherwise -- or perhaps not.
-# - SGI's /etc/sendmail.cf seems use: A=mail -s -d $u
-# It seems work without that -s however.
-# - SGI's /etc/sendmail.cf set's default uid and gid to 998 (guest)
-# - In SGI seems that TZ variable is needed that correct time is marked to
-# syslog
-# - helpfile is in /etc/sendmail.hf in SGI's /etc/sendmail.cf
-#
-
-divert(0)
-VERSIONID(`@(#)irix5.m4 8.4 (Berkeley) 9/25/96')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehmu9)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
-define(`ALIAS_FILE', /etc/aliases)dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/sendmail.st)')dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/sendmail.hf)')dnl
-define(`confDEF_USER_ID', `998:998')dnl
-define(`confTIME_ZONE', USE_TZ)dnl
diff --git a/usr.sbin/sendmail/cf/ostype/irix6.m4 b/usr.sbin/sendmail/cf/ostype/irix6.m4
deleted file mode 100644
index 2304c1c57f66..000000000000
--- a/usr.sbin/sendmail/cf/ostype/irix6.m4
+++ /dev/null
@@ -1,61 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1995 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Contributed by Kari E. Hurtta <Kari.Hurtta@dionysos.fmi.fi>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-#
-# Notes:
-# - SGI's /etc/sendmail.cf defines also 'u' for local mailer flags -- you
-# perhaps don't want it.
-# - Perhaps is should also add define(`LOCAL_MAILER_CHARSET', iso-8859-1)
-# put some Asian sites may prefer otherwise -- or perhaps not.
-# - SGI's /etc/sendmail.cf seems use: A=mail -s -d $u
-# It seems work without that -s however.
-# - SGI's /etc/sendmail.cf set's default uid and gid to 998 (guest)
-# - In SGI seems that TZ variable is needed that correct time is marked to
-# syslog
-# - helpfile is in /etc/sendmail.hf in SGI's /etc/sendmail.cf
-#
-
-divert(0)
-VERSIONID(`@(#)irix6.m4 8.1 (Berkeley) 4/11/97')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehmu9)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
-define(`ALIAS_FILE', /etc/aliases)dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/sendmail.st)')dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/sendmail.hf)')dnl
-define(`confDEF_USER_ID', `998:998')dnl
-define(`confTIME_ZONE', USE_TZ)dnl
diff --git a/usr.sbin/sendmail/cf/ostype/isc4.1.m4 b/usr.sbin/sendmail/cf/ostype/isc4.1.m4
deleted file mode 100644
index 902f49a24978..000000000000
--- a/usr.sbin/sendmail/cf/ostype/isc4.1.m4
+++ /dev/null
@@ -1,48 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-#
-
-divert(0)
-VERSIONID(`@(#)isc4.1.m4 8.4 (Berkeley) 9/25/96')
-define(`ALIAS_FILE', /usr/lib/aliases)dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/lib/sendmail.hf)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail -s $u')')dnl
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `humS9')')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/lmail)')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -gC $h!rmail ($u)')')dnl
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/maxion.m4 b/usr.sbin/sendmail/cf/ostype/maxion.m4
deleted file mode 100644
index 63cc4961f60f..000000000000
--- a/usr.sbin/sendmail/cf/ostype/maxion.m4
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# Copyright (c) 1996 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# Concurrent Computer Corporation Maxion system support contributed
-# by Donald R. Laster Jr. <Laster@access.digex.com>.
-#
-
-divert(0)
-VERSIONID(`@(#)maxion.m4 8.3 (Berkeley) 9/25/96')
-
-define(`ALIAS_FILE', `/etc/ucbmail/aliases')dnl
-define(`HELP_FILE', `/etc/ucbmail/sendmail.hf')dnl
-define(`QUEUE_DIR', `/var/spool/mqueue')dnl
-define(`STATUS_FILE', `/var/adm/log/sendmail.st')dnl
-define(`LOCAL_MAILER_PATH', `/usr/bin/mail')dnl
-define(`LOCAL_MAILER_FLAGS',`rmn9')dnl
-define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
-define(`LOCAL_MAILER_ARGS', `mail $u')dnl
-define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl
-divert(-1)
diff --git a/usr.sbin/sendmail/cf/ostype/mklinux.m4 b/usr.sbin/sendmail/cf/ostype/mklinux.m4
deleted file mode 100644
index 00adedbb1ad7..000000000000
--- a/usr.sbin/sendmail/cf/ostype/mklinux.m4
+++ /dev/null
@@ -1,44 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# MkLinux support contributed by Paul DuBois <dubois@primate.wisc.edu>
-#
-
-divert(0)
-VERSIONID(`@(#)mklinux.m4 8.2 (Berkeley) 11/17/96')
-ifdef(`STATUS_FILE',,
- `define(`STATUS_FILE', /var/log/sendmail.st)')
-ifdef(`PROCMAIL_MAILER_PATH',,
- define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail'))
-FEATURE(local_procmail)
diff --git a/usr.sbin/sendmail/cf/ostype/nextstep.m4 b/usr.sbin/sendmail/cf/ostype/nextstep.m4
deleted file mode 100644
index 80139756c666..000000000000
--- a/usr.sbin/sendmail/cf/ostype/nextstep.m4
+++ /dev/null
@@ -1,45 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)nextstep.m4 8.8 (Berkeley) 6/18/97')
-define(`ALIAS_FILE', /etc/sendmail/aliases)dnl
-define(`confCW_FILE', /etc/sendmail/sendmail.cw)dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/lib/sendmail.hf)')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /etc/sendmail/sendmail.st)')dnl
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `rmnP9')')dnl
-ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', `euP')')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/osf1.m4 b/usr.sbin/sendmail/cf/ostype/osf1.m4
deleted file mode 100644
index ee73e4fef361..000000000000
--- a/usr.sbin/sendmail/cf/ostype/osf1.m4
+++ /dev/null
@@ -1,40 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)osf1.m4 8.4 (Berkeley) 9/25/96')
-define(`ALIAS_FILE', /usr/adm/sendmail/aliases)dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/adm/sendmail/sendmail.st)')dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/share/lib/sendmail.hf)')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/powerux.m4 b/usr.sbin/sendmail/cf/ostype/powerux.m4
deleted file mode 100644
index d0fd3dc28129..000000000000
--- a/usr.sbin/sendmail/cf/ostype/powerux.m4
+++ /dev/null
@@ -1,46 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)powerux.m4 8.1 (Berkeley) 1/16/97')
-
-define(`ALIAS_FILE', /etc/mail/aliases)dnl
-ifdef(`HELP_FILE',,`define(`HELP_FILE', /etc/mail/sendmail.hf)')dnl
-ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /etc/mail/sendmail.st)')dnl
-define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl
-define(`LOCAL_MAILER_FLAGS', `mn9')dnl
-define(`LOCAL_MAILER_ARGS', `rmail $u')dnl
-define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
-define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/ptx2.m4 b/usr.sbin/sendmail/cf/ostype/ptx2.m4
deleted file mode 100644
index cbe0f590a0a2..000000000000
--- a/usr.sbin/sendmail/cf/ostype/ptx2.m4
+++ /dev/null
@@ -1,46 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1994 Eric P. Allman
-# Copyright (c) 1994
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-# Support for DYNIX/ptx 2.x.
-
-divert(0)
-VERSIONID(`@(#)ptx2.m4 8.5 (Berkeley) 9/25/96')
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-define(`ALIAS_FILE', /usr/lib/aliases)dnl
-ifdef(`HELP_FILE',,`define(`HELP_FILE', /usr/lib/sendmail.hf)')dnl
-ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
-define(`LOCAL_MAILER_PATH', `/bin/mail')dnl
-define(`LOCAL_MAILER_FLAGS', `fmn9')dnl
-define(`LOCAL_SHELL_FLAGS', `eu')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/riscos4.5.m4 b/usr.sbin/sendmail/cf/ostype/riscos4.5.m4
deleted file mode 100644
index 96e3b16efee5..000000000000
--- a/usr.sbin/sendmail/cf/ostype/riscos4.5.m4
+++ /dev/null
@@ -1,42 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)riscos4.5.m4 8.4 (Berkeley) 9/25/96')
-
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
-define(`ALIAS_FILE', `/usr/lib/aliases')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', `/usr/spool/mqueue')')dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', `/usr/lib/sendmail.hf')')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/sco3.2.m4 b/usr.sbin/sendmail/cf/ostype/sco3.2.m4
deleted file mode 100644
index b74eb6f4208f..000000000000
--- a/usr.sbin/sendmail/cf/ostype/sco3.2.m4
+++ /dev/null
@@ -1,45 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)sco3.2.m4 8.4 (Berkeley) 9/25/96')
-define(`ALIAS_FILE', /usr/lib/mail/aliases)dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/lmail)')dnl
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', PuhCE9)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail $u')')dnl
-ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', Peu)')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/sinix.m4 b/usr.sbin/sendmail/cf/ostype/sinix.m4
deleted file mode 100644
index 278d4c84cec0..000000000000
--- a/usr.sbin/sendmail/cf/ostype/sinix.m4
+++ /dev/null
@@ -1,42 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1996 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)sinix.m4 8.2 (Berkeley) 9/13/97')
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
-define(`ALIAS_FILE', /etc/aliases)dnl
-define(`LOCAL_MAILER_PATH', `/bin/mail.local')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/sendmail.st)')dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/sendmail.hf)')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/solaris2.m4 b/usr.sbin/sendmail/cf/ostype/solaris2.m4
deleted file mode 100644
index e6553a8b664f..000000000000
--- a/usr.sbin/sendmail/cf/ostype/solaris2.m4
+++ /dev/null
@@ -1,46 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)solaris2.m4 8.9 (Berkeley) 9/25/96')
-divert(-1)
-
-define(`ALIAS_FILE', /etc/mail/aliases)
-ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/mail/sendmail.hf)')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /etc/mail/sendmail.st)')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `SnE9')')
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -f $g -d $u')')
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')
-define(`confCW_FILE', /etc/mail/sendmail.cw)
diff --git a/usr.sbin/sendmail/cf/ostype/solaris2.ml.m4 b/usr.sbin/sendmail/cf/ostype/solaris2.ml.m4
deleted file mode 100644
index 2ce5325158cc..000000000000
--- a/usr.sbin/sendmail/cf/ostype/solaris2.ml.m4
+++ /dev/null
@@ -1,51 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# This ostype file is suitable for use on Solaris 2.x systems that
-# have mail.local installed. It is my understanding that this is
-# standard as of Solaris 2.5.
-#
-
-divert(0)
-VERSIONID(`@(#)solaris2.ml.m4 8.2 (Berkeley) 9/25/96')
-divert(-1)
-
-define(`ALIAS_FILE', /etc/mail/aliases)
-ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/mail/sendmail.hf)')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /etc/mail/sendmail.st)')
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/usr/lib/mail.local')')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `fSmn9')')
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail.local -d $u')')
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')
-define(`confCW_FILE', /etc/mail/sendmail.cw)
diff --git a/usr.sbin/sendmail/cf/ostype/svr4.m4 b/usr.sbin/sendmail/cf/ostype/svr4.m4
deleted file mode 100644
index 3085db17fd32..000000000000
--- a/usr.sbin/sendmail/cf/ostype/svr4.m4
+++ /dev/null
@@ -1,45 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)svr4.m4 8.4 (Berkeley) 9/25/96')
-
-define(`ALIAS_FILE', /usr/ucblib/aliases)dnl
-ifdef(`HELP_FILE',,`define(`HELP_FILE', /usr/ucblib/sendmail.hf)')dnl
-ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /usr/ucblib/sendmail.st)')dnl
-define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl
-define(`LOCAL_MAILER_FLAGS', `rmn9')dnl
-define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
-define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl
diff --git a/usr.sbin/sendmail/cf/ostype/ultrix4.m4 b/usr.sbin/sendmail/cf/ostype/ultrix4.m4
deleted file mode 100644
index f6998e1c5cab..000000000000
--- a/usr.sbin/sendmail/cf/ostype/ultrix4.m4
+++ /dev/null
@@ -1,37 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)ultrix4.m4 8.2 (Berkeley) 7/2/94')
diff --git a/usr.sbin/sendmail/cf/ostype/unknown.m4 b/usr.sbin/sendmail/cf/ostype/unknown.m4
deleted file mode 100644
index 7aadbb505d4b..000000000000
--- a/usr.sbin/sendmail/cf/ostype/unknown.m4
+++ /dev/null
@@ -1,41 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-
-divert(0)
-VERSIONID(`@(#)unknown.m4 8.1 (Berkeley) 4/21/95')
-errprint(`*** ERROR: You have not specified a valid operating system type.')
-errprint(` Use the OSTYPE macro to select a valid system type. This')
-errprint(` is necessary in order to get the proper pathnames and flags')
-errprint(` appropriate for your environment.')
diff --git a/usr.sbin/sendmail/cf/ostype/uxpds.m4 b/usr.sbin/sendmail/cf/ostype/uxpds.m4
deleted file mode 100644
index 88e455bc78b0..000000000000
--- a/usr.sbin/sendmail/cf/ostype/uxpds.m4
+++ /dev/null
@@ -1,49 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# Definitions for UXP/DS (Fujitsu/ICL DS/90 series)
-# Diego R. Lopez, CICA (Seville). 1995
-#
-
-divert(0)
-VERSIONID(`@(#)uxpds.m4 8.3 (Berkeley) 9/25/96')
-
-define(`confDEF_GROUP_ID', `6')
-define(`ALIAS_FILE', /usr/ucblib/aliases)dnl
-ifdef(`HELP_FILE',,`define(`HELP_FILE', /usr/ucblib/sendmail.hf)')dnl
-ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /usr/ucblib/sendmail.st)')dnl
-define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl
-define(`LOCAL_MAILER_FLAGS', `rmn9')dnl
-define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
-define(`UUCP_MAILER_ARGS', `uux - -r -a$f -gmedium $h!rmail ($u)')dnl
diff --git a/usr.sbin/sendmail/cf/sh/makeinfo.sh b/usr.sbin/sendmail/cf/sh/makeinfo.sh
deleted file mode 100644
index 68b85d30c6a2..000000000000
--- a/usr.sbin/sendmail/cf/sh/makeinfo.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 1983 Eric P. Allman
-# Copyright (c) 1988, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# @(#)makeinfo.sh 8.6 (Berkeley) 8/6/95
-#
-
-usewhoami=0
-usehostname=0
-for p in `echo $PATH | sed 's/:/ /g'`
-do
- if [ "x$p" = "x" ]
- then
- p="."
- fi
- if [ -f $p/whoami ]
- then
- usewhoami=1
- if [ $usehostname -ne 0 ]
- then
- break;
- fi
- fi
- if [ -f $p/hostname ]
- then
- usehostname=1
- if [ $usewhoami -ne 0 ]
- then
- break;
- fi
- fi
-done
-if [ $usewhoami -ne 0 ]
-then
- user=`whoami`
-else
- user=$LOGNAME
-fi
-
-if [ $usehostname -ne 0 ]
-then
- host=`hostname`
-else
- host=`uname -n`
-fi
-echo '#####' built by $user@$host on `date`
-echo '#####' in `pwd` | sed 's/\/tmp_mnt//'
-echo '#####' using $1 as configuration include directory | sed 's/\/tmp_mnt//'
-echo "define(\`__HOST__', $host)dnl"
diff --git a/usr.sbin/sendmail/doc/changes/changes.ps b/usr.sbin/sendmail/doc/changes/changes.ps
deleted file mode 100644
index 5ba54a43edec..000000000000
--- a/usr.sbin/sendmail/doc/changes/changes.ps
+++ /dev/null
@@ -1,1092 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.08
-%%DocumentNeededResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Symbol
-%%DocumentSuppliedResources: procset grops 1.08 0
-%%Pages: 11
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.08 0
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/FL{
-currentgray exch setgray fill setgray
-}bind def
-/BL/fill load def
-/LW/setlinewidth load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Italic
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Symbol
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL
-792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron
-/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space
-/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft
-/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four
-/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C
-/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash
-/bracketright/circumflex/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q
-/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase
-/guillemotleft/guillemotright/bullet/florin/fraction/perthousand/dagger
-/daggerdbl/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar
-/section/dieresis/copyright/ordfeminine/guilsinglleft/logicalnot/minus
-/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu
-/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guilsinglright
-/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde
-/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute
-/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
-/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute
-/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve
-/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex
-/udieresis/yacute/thorn/ydieresis]def/Times-Bold@0 ENC0/Times-Bold RE
-/Times-Italic@0 ENC0/Times-Italic RE/Times-Roman@0 ENC0/Times-Roman RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 14/Times-Roman@0 SF(Changes in Sendmail V)196.615 141 Q(ersion 8*)-1.554 E
-/F1 10/Times-Roman@0 SF(Eric Allman)263.42 165 Q/F2 10/Times-Italic@0 SF
-(Univer)220.2 183 Q(sity of California, Berk)-.1 E(ele)-.1 E(y)-.3 E
-(Mammoth Pr)251.98 195 Q(oject)-.45 E F1(ABSTRA)262.085 227.4 Q(CT)-.4 E -1.11
-(Ve)112 243.6 S 1.709(rsion 8 of)1.11 F F2(sendmail)4.209 E F1 1.709
-(includes a number of major changes from pre)4.209 F 1.71(vious v)-.25 F
-(ersions.)-.15 E .701(This paper gi)112 255.6 R -.15(ve)-.25 G 3.201(sav).15 G
-.701(ery short history of)194.794 255.6 R F2(sendmail)3.201 E F1 3.201(,as)C .7
-(ummary of the major dif)329.82 255.6 R(ferences)-.25 E .953(between v)112
-267.6 R .954(ersion 5 \(the last publically a)-.15 F -.25(va)-.2 G .954
-(ilable v).25 F .954(ersion\) and v)-.15 F .954(ersion 8, and some dis-)-.15 F
-(cussion of future directions.)112 279.6 Q .48
-(In 1987, the author stopped major w)97 324 R .48(ork on)-.1 F F2(sendmail)2.98
-E F1 .48(due to other time committments, only to return)2.98 F(to acti)72 336 Q
-.3 -.15(ve w)-.25 H(ork in 1991.).05 E(This paper e)5 E(xplores wh)-.15 E 2.5
-(yw)-.05 G(ork resumed and what changes ha)277 336 Q .3 -.15(ve b)-.2 H
-(een made.).15 E .58(Section 1 gi)97 352.2 R -.15(ve)-.25 G 3.08(sas).15 G .58
-(hort history of)173.36 352.2 R F2(sendmail)3.08 E F1 .58(through v)3.08 F .58
-(ersion 5 and the moti)-.15 F -.25(va)-.25 G .58(tion behind w).25 F .58
-(orking on)-.1 F -.15(ve)72 364.2 S .126(rsion 8.).15 F .126
-(Section 2 has a rather detailed description of what has changed between v)
-5.126 F .125(ersion 5 and v)-.15 F .125(ersion 8.)-.15 F
-(The paper \214nishes of)72 376.2 Q 2.5(fw)-.25 G
-(ith some thoughts about what still needs to be done.)168.95 376.2 Q/F3 10
-/Times-Bold@0 SF 2.5(1. HIST)72 400.2 R(OR)-.18 E(Y)-.35 E F1 .151
-(As discussed else)112 416.4 R .151
-(where, [Allman83a, Allman83b, Allman&Amos85] sendmail has e)-.25 F .151
-(xisted in v)-.15 F(ar)-.25 E(-)-.2 E .405(ious forms since 1980.)87 428.4 R
-.405(It w)5.405 F .405(as released under the name)-.1 F F2(delivermail)2.905 E
-F1 .404(in 4BSD and 4.1BSD, and as)2.905 F F2(send-)2.904 E(mail)87 440.4 Q F1
-(in 4.2BSD.)2.5 E(It quickly became the dominant mail system for netw)5 E(ork)
--.1 E(ed UNIX systems.)-.1 E 1.569(Prior the release of 4.3BSD in No)112 456.6
-R -.15(ve)-.15 G 1.569(mber 1986, the author had left the Uni).15 F -.15(ve)
--.25 G 1.57(rsity for pri).15 F -.25(va)-.25 G(te).25 E(industry)87 468.6 Q
-3.347(,b)-.65 G .847(ut continued to do some w)129.777 468.6 R .847(ork on)-.1
-F F2(sendmail)3.347 E F1 .847(with acti)3.347 F .846(vity slo)-.25 F .846
-(wly trailing of)-.25 F 3.346(fu)-.25 G .846(ntil ef)445.204 468.6 R(fecti)-.25
-E -.15(ve)-.25 G(ly).15 E .255(stopping after February 1987.)87 480.6 R .255
-(There w)5.255 F .255(as minimal support done by man)-.1 F 2.756(yp)-.15 G .256
-(eople for se)389.796 480.6 R -.15(ve)-.25 G .256(ral years, until).15 F
-(July of 1991 when the original author)87 492.6 Q 2.5(,w)-.4 G
-(ho had returned the Uni)249.36 492.6 Q -.15(ve)-.25 G(rsity).15 E 2.5(,s)-.65
-G(tarted acti)379.4 492.6 Q .3 -.15(ve w)-.25 H(ork on it ag).05 E(ain.)-.05 E
-1.271(There were se)112 508.8 R -.15(ve)-.25 G 1.271(ral reasons for rene).15 F
-1.271(wed w)-.25 F 1.271(ork on)-.1 F F2(sendmail)3.771 E F1 6.271(.T)C 1.271
-(here w)369.549 508.8 R 1.27(as a desire at Berk)-.1 F(ele)-.1 E 3.77(yt)-.15 G
-(o)499 508.8 Q(con)87 520.8 Q -.15(ve)-.4 G .097
-(rt to a subdomained structure so that indi).15 F .098
-(viduals were identi\214ed by their subdomain rather than by)-.25 F 1.758
-(their indi)87 532.8 R 1.758(vidual w)-.25 F 1.758(orkstation; although possib\
-le in the old code, there were some problems, and the)-.1 F .66(author w)87
-544.8 R .66(as the ob)-.1 F .66(vious person to address them.)-.15 F .66
-(The Computer Systems Research Group \(CSRG\), the)5.66 F 1.89
-(group that produced the Berk)87 556.8 R(ele)-.1 E 4.39(yS)-.15 G(oftw)238.12
-556.8 Q 1.89(are Distrib)-.1 F 1.89(utions, w)-.2 F 1.89(as w)-.1 F 1.89
-(orking on 4.4BSD, and w)-.1 F 1.89(anted an)-.1 F .053
-(update to the mail system.)87 568.8 R .053(Bryan Costales w)5.053 F .053(as w)
--.1 F .053(orking on a book on)-.1 F F2(sendmail)2.553 E F1 .053(that w)2.553 F
-.053(as being re)-.1 F(vie)-.25 E(wed)-.25 E .923(by the author)87 580.8 R
-3.423(,w)-.4 G .923(hich encouraged him to mak)154.359 580.8 R 3.422(es)-.1 G
-.922(ome re)283.572 580.8 R 3.422(visions. And)-.25 F .922(the author w)3.422 F
-.922(anted to try to unify)-.1 F(some of the disparate v)87 592.8 Q(ersions of)
--.15 E F2(sendmail)2.5 E F1(that had been permitted to proliferate.)2.5 E .023
-(During the 1987\25591 f)112 609 R(allo)-.1 E 2.523(wp)-.25 G .023(eriod, man)
-228.482 609 R 2.523(yv)-.15 G .023(endors and outside v)283.498 609 R .023
-(olunteers had produced v)-.2 F .024(ariants of)-.25 F F2(sendmail)87 621 Q F1
-5.518(.P)C .517(erhaps the best kno)136.688 621 R .517(wn is the ID)-.25 F
-3.017(Av)-.4 G .517(ersion [ID)280.317 621 R 3.017(A87]. Originally)-.4 F .517
-(intended to be a ne)3.017 F 3.017(ws)-.25 G .517(et of)485.433 621 R .268
-(con\214guration \214les, ID)87 633 R 2.768(Ae)-.4 G .269(xpanded into a f)
-189.464 633 R .269(airly lar)-.1 F .269(ge set of patches for the code.)-.18 F
-.269(Originally produced in)5.269 F .471(Sweden, ID)87 645 R 2.971(Ad)-.4 G
--2.15 -.25(ev e)149.472 645 T .471(lopment passed to the Uni).25 F -.15(ve)-.25
-G .471(rsity of Illinois, and w).15 F .47(as widely used by the f)-.1 F .47
-(airly lar)-.1 F(ge)-.18 E .077
-(set of people who prefer to get and compile their o)87 657 R .077
-(wn source code rather than use v)-.25 F(endor)-.15 E .078(-supplied bina-)-.2
-F(ries.)87 669 Q .32 LW 76 678.6 72 678.6 DL 80 678.6 76 678.6 DL 84 678.6 80
-678.6 DL 88 678.6 84 678.6 DL 92 678.6 88 678.6 DL 96 678.6 92 678.6 DL 100
-678.6 96 678.6 DL 104 678.6 100 678.6 DL 108 678.6 104 678.6 DL 112 678.6 108
-678.6 DL 116 678.6 112 678.6 DL 120 678.6 116 678.6 DL 124 678.6 120 678.6 DL
-128 678.6 124 678.6 DL 132 678.6 128 678.6 DL 136 678.6 132 678.6 DL 140 678.6
-136 678.6 DL 144 678.6 140 678.6 DL 148 678.6 144 678.6 DL 152 678.6 148 678.6
-DL 156 678.6 152 678.6 DL 160 678.6 156 678.6 DL 164 678.6 160 678.6 DL 168
-678.6 164 678.6 DL 172 678.6 168 678.6 DL 176 678.6 172 678.6 DL 180 678.6 176
-678.6 DL 184 678.6 180 678.6 DL 188 678.6 184 678.6 DL 192 678.6 188 678.6 DL
-196 678.6 192 678.6 DL 200 678.6 196 678.6 DL 204 678.6 200 678.6 DL 208 678.6
-204 678.6 DL 212 678.6 208 678.6 DL 216 678.6 212 678.6 DL/F4 8/Times-Roman@0
-SF .045(*An earlier v)93.6 690.6 R .045(ersion of this paper w)-.12 F .044
-(as printed in the Proceedings of the 1994 A)-.08 F .044
-(UUG Queensland Summer T)-.44 F .044(echnical Conference,)-.56 F(Gate)72 700.2
-Q -.08(wa)-.2 G 2(yH).08 G(otel, Brisbane, March 1994.)107.928 700.2 Q F3
-(Changes in Sendmail V)72 756 Q(ersion 8)-1 E(1)499 756 Q EP
-%%Page: 2 2
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 294.65(2C)72 60 S(hanges in Sendmail V)378.87 60 Q
-(ersion 8)-1 E/F1 10/Times-Roman@0 SF .151
-(In about the same time frame, attempts were made to clean up and e)112 96 R
-.151(xtend the Simple Mail T)-.15 F(rans-)-.35 E .468
-(port Protocol \(SMTP\) [RFC821].)87 108 R .468(This in)5.468 F -.2(vo)-.4 G
-(lv).2 E .469(ed clari\214cations of some ambiguities in the protocol, and)-.15
-F .085(correction of some problem areas [RFC1123], as well as e)87 120 R .084
-(xtensions for additional functionality \(dubbed)-.15 F 1.052
-(Extended Simple Mail T)87 132 R 1.053
-(ransport Protocol, or ESMTP\) [RFC1425, RFC1426, RFC1427] and a richer)-.35 F
-1.376(set of semantics in the body of messages \(the Multipurpose Internet Mai\
-l Extensions, a.k.a. MIME\))87 144 R .497([RFC1521, RFC1344].)87 156 R .497
-(Neither the ID)5.497 F 2.998(Ag)-.4 G .498(roup nor most v)258.526 156 R .498
-(endors were modifying)-.15 F/F2 10/Times-Italic@0 SF(sendmail)2.998 E F1 .498
-(to conform)2.998 F 1.7(to these ne)87 168 R 4.2(ws)-.25 G 4.2(tandards. It)
-148.23 168 R 1.699(seemed clear that these were `)4.2 F 1.699(`good things')
--.74 F 4.199('t)-.74 G 1.699(hat should be encouraged.)394.483 168 R(Ho)87 180
-Q(we)-.25 E -.15(ve)-.25 G 1.635 -.4(r, s).15 H .835(ince no one w).4 F .835
-(as w)-.1 F .835(orking on a publically a)-.1 F -.25(va)-.2 G .835(ilable v).25
-F .836(ersion of)-.15 F F2(sendmail)3.336 E F1 .836(with these updates,)3.336 F
-(the)87 192 Q 2.5(yw)-.15 G(ere unlik)113.79 192 Q(ely to be widely deplo)-.1 E
-(yed an)-.1 E 2.5(yt)-.15 G(ime in the near future.)274.25 192 Q .466
-(There are, of course, other mail transport agents a)112 208.2 R -.25(va)-.2 G
-.465(ilable, such as).25 F F2 .465(MMDF zmailer smail)2.965 F F1(and)2.965 E F2
-(PP)2.965 E F1(Ho)87 220.2 Q(we)-.25 E -.15(ve)-.25 G .842 -.4(r, n).15 H .042
-(one of these seemed to be g).4 F .043(aining the prominence of)-.05 F F2
-(sendmail)2.543 E F1 2.543(;i)C 2.543(ta)390.518 220.2 S .043
-(ppeared that most compa-)400.281 220.2 R .238(nies w)87 232.2 R .238
-(ould not con)-.1 F -.15(ve)-.4 G .238(rt to another mail transport agent an)
-.15 F 2.737(yt)-.15 G .237(ime in the forseeable future.)327.438 232.2 R(Ho)
-5.237 E(we)-.25 E -.15(ve)-.25 G 1.037 -.4(r, t).15 H(he).4 E(y)-.15 E
-(might be persuaded to con)87 244.2 Q -.15(ve)-.4 G(rt to a ne).15 E(wer v)-.25
-E(ersion of)-.15 E F2(sendmail)2.5 E F1(.)A .841(All of these con)112 260.4 R
-.841(vinced the author to w)-.4 F .841(ork on a updated v)-.1 F .841(ersion of)
--.15 F F2(sendmail)3.342 E F1 .842(for public distrib)3.342 F(u-)-.2 E(tion.)87
-272.4 Q 1.024(The ne)112 288.6 R 3.524(wv)-.25 G 1.023(ersion of)155.858 288.6
-R F2(sendmail)3.523 E F1 1.023(is referred to as v)3.523 F 1.023
-(ersion eight \(V8\).)-.15 F -1.11(Ve)6.023 G 1.023(rsions six and se)1.11 F
--.15(ve)-.25 G 3.523(nw).15 G(ere)491.79 288.6 Q 1.281
-(skipped because of an agreement that all \214les in 4.4BSD w)87 300.6 R 1.281
-(ould be numbered as \2318.1\232.)-.1 F 1.282(Rather than)6.282 F(ha)87 312.6 Q
-2.05 -.15(ve a)-.2 H 4.25(ne).15 G 1.75(xternal v)127.76 312.6 R 1.75
-(ersion number that dif)-.15 F 1.75(fered from the \214le v)-.25 F 1.75
-(ersion numbers,)-.15 F F2(sendmail)4.25 E F1 1.75(just jumped)4.25 F
-(directly to V8.)87 324.6 Q F0 2.5(2. CHANGES)72 348.6 R(IN VERSION EIGHT)2.5 E
-F1 .138(The follo)112 364.8 R .139
-(wing is a summary of the changes between the last commonly a)-.25 F -.25(va)
--.2 G .139(ilable v).25 F .139(ersion of send-)-.15 F(mail from Berk)87 376.8 Q
-(ele)-.1 E 2.5(y\()-.15 G(5.67\) and the latest v)170.9 376.8 Q
-(ersion \(8.6.6\).)-.15 E(Man)112 393 Q 2.5(yo)-.15 G 2.5(ft)142.68 393 S
-(hese are ideas that had been tried in ID)151.29 393 Q(A, b)-.4 E(ut man)-.2 E
-2.5(yo)-.15 G 2.5(ft)363.27 393 S(hem were generalized in V8.)371.88 393 Q F0
-2.5(2.1. P)87 417 R(erf)-.2 E(ormance Enhancements)-.25 E F1 .549
-(Instead of closing SMTP connections immediately)127 433.2 R 3.049(,o)-.65 G
-.549(pen connections are cached for possible)342.135 433.2 R .029(future use.)
-102 445.2 R .029(There is a limit to the number of simultaneous open connectio\
-ns and the idle time of an)5.029 F(y)-.15 E(indi)102 457.2 Q
-(vidual connection.)-.25 E 1.219(This is of best help during queue processing \
-\(since there is the potential of man)127 473.4 R 3.719(yd)-.15 G(if)474.82
-473.4 Q(ferent)-.25 E 1.113(messages going to one site\), although it can also\
- help when processing MX records which aren')102 485.4 R(t)-.18 E
-(handled by MX Piggybacking.)102 497.4 Q 1.258(If tw)127 513.6 R 3.757(oh)-.1 G
-1.257(osts with dif)161.075 513.6 R 1.257
-(ferent names in a single message happen to ha)-.25 F 1.557 -.15(ve t)-.2 H
-1.257(he same set of MX).15 F .94(hosts, the)102 525.6 R 3.44(yc)-.15 G .94
-(an be sent in the same transaction.)153.45 525.6 R -1.11(Ve)5.94 G .94
-(rsion 8 notices this and tries to batch the mes-)1.11 F(sages.)102 537.6 Q
--.15(Fo)127 553.8 S 3.638(re).15 G 1.138(xample, if tw)148.668 553.8 R 3.637
-(os)-.1 G 1.137(ites `)216.42 553.8 R(`foo.com')-.74 E 3.637('a)-.74 G 1.137
-(nd `)286.914 553.8 R(`bar)-.74 E(.com')-.55 E 3.637('a)-.74 G 1.137
-(re both serv)352.408 553.8 R 1.137(ed by UUNET)-.15 F 3.637(,t)-.74 G(he)
-470.513 553.8 Q 3.637(yw)-.15 G(ill)495.66 553.8 Q(ha)102 565.8 Q .557 -.15
-(ve t)-.2 H .257(he same set of MX hosts and will be sent in one transaction.)
-.15 F .258(UUNET will then split the mes-)5.258 F(sage and send it to the tw)
-102 577.8 Q 2.5(oi)-.1 G(ndi)213.28 577.8 Q(vidual hosts.)-.25 E F0 2.5
-(2.2. RFC)87 601.8 R(1123 Changes)2.5 E F1 2.607(An)127 618 S .107
-(umber of changes ha)141.827 618 R .407 -.15(ve b)-.2 H .106(een made to mak)
-.15 F 2.606(es)-.1 G .106(endmail `)321.07 618 R .106
-(`conditionally compliant')-.74 F 2.606('\()-.74 G .106(that is, it)469.058 618
-R(satis\214es all of the MUST clauses and most b)102 630 Q
-(ut not all of the SHOULD clauses in RFC 1123\).)-.2 E
-(The major areas of change are \(numbers are RFC 1123 section numbers\):)127
-646.2 Q 26.5(\2475.2.7 Response)102 662.4 R .565(to RCPT command is f)3.065 F
-3.065(ast. Pre)-.1 F(viously)-.25 E 3.065(,s)-.65 G .565(endmail e)362.295
-662.4 R .565(xpanded all aliases as f)-.15 F(ar)-.1 E .686
-(as it could \212 this could tak)156 674.4 R 3.186(eav)-.1 G .685
-(ery long time, particularly if there were name serv)290.118 674.4 R(er)-.15 E
-3.891(delays. V)156 686.4 R 1.391(ersion 8 only checks for the e)-1.11 F 1.392
-(xistence of an alias and does the e)-.15 F(xpansion)-.15 E(later)156 698.4 Q
-5.176(.I)-.55 G 2.676(td)184.226 698.4 S .176
-(oes still do a DNS lookup if there is an e)194.682 698.4 R .175
-(xplicit host name in the RCPT com-)-.15 F(mand, b)156 710.4 Q
-(ut this time is bounded.)-.2 E EP
-%%Page: 3 3
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(3)499 60 Q
-/F1 10/Times-Roman@0 SF 26.5(\2475.2.8 Numeric)102 96 R .612
-(IP addresses are logged in Recei)3.112 F -.15(ve)-.25 G .613(d: lines.).15 F
-.613(This helps tracing spoofed mes-)5.613 F(sages.)156 108 Q 21.5
-(\2475.2.17 Self)102 124.2 R .127(domain literal is properly handled.)2.627 F
-(Pre)5.126 E(viously)-.25 E 2.626(,i)-.65 G 2.626(fs)368.196 124.2 S .126
-(omeone sent to user@[1.2.3.4],)378.042 124.2 R .12
-(where 1.2.3.4 is your IP address, the mail w)156 136.2 R .12
-(ould probably be rejected with a `)-.1 F(`con\214gu-)-.74 E(ration error')156
-148.2 Q 2.5('. V)-.74 F(ersion 8 can handle these addresses.)-1.11 E 26.5
-(\2475.3.2 Better)102 164.4 R 1.189(control o)3.69 F -.15(ve)-.15 G 3.689(ri)
-.15 G(ndi)240.088 164.4 Q 1.189(vidual timeouts.)-.25 F 1.189
-(RFC 821 speci\214ed no timeouts.)6.189 F 1.189(Older v)6.189 F(er)-.15 E(-)-.2
-E .002(sions of sendmail had a single timeout, typically set to tw)156 176.4 R
-2.502(oh)-.1 G 2.502(ours. V)398.142 176.4 R .002(ersion 8 allo)-1.11 F .002
-(ws the)-.25 F(con\214guration \214le to set timeouts for v)156 188.4 Q
-(arious SMTP commands indi)-.25 E(vidually)-.25 E(.)-.65 E 26.5
-(\2475.3.3 Error)102 204.6 R 1.06(messages are sent as From:<>.)3.56 F 1.059
-(This w)6.059 F 1.059(as ur)-.1 F 1.059(ged by RFC 821 and reiterated by)-.18 F
-.237(RFC 1123, b)156 216.6 R .237(ut older v)-.2 F .237(ersions of sendmail ne)
--.15 F -.15(ve)-.25 G 2.737(rr).15 G .237(eally did it properly)355.186 216.6 R
-5.237(.V)-.65 G .238(ersion 8 does.)448.254 216.6 R(Ho)156 228.6 Q(we)-.25 E
--.15(ve)-.25 G 1.934 -.4(r, s).15 H 1.134
-(ome systems cannot handle this perfectly le).4 F -.05(ga)-.15 G 3.633(la).05 G
-1.133(ddress; if necessary)402.941 228.6 R 3.633(,y)-.65 G(ou)494 228.6 Q
-(can create a special mailer that uses the `g' \215ag to disable this.)156
-240.6 Q 26.5(\2475.3.3 Error)102 256.8 R 3.212(messages are ne)5.712 F -.15(ve)
--.25 G 5.712(rs).15 G 3.212(ent to <>.)275.628 256.8 R(Pre)8.213 E(viously)-.25
-E 5.713(,s)-.65 G 3.213(endmail w)383.028 256.8 R 3.213(as happ)-.1 F 5.713(yt)
--.1 G 5.713(os)474.957 256.8 S(end)489.56 256.8 Q 6
-(responses-to-responses which sometimes resulted in responses-to-responses-to-)
-156 268.8 R(responses which resulted in ....)156 280.8 Q(you get the idea.)5 E
-26.5(\2475.3.3 Route-addrs)102 297 R .111(\(the ugly `)2.611 F
-(`<@hosta,@hostb:user@hostc>')-.74 E 2.611('s)-.74 G .111(yntax\) are pruned.)
-389.124 297 R .112(RFC 821)5.112 F(ur)156 309 Q 1.001
-(ged the use of this bletcherous syntax.)-.18 F 1
-(RFC 1123 has seen the light and of)6.001 F(\214cially)-.25 E 1.124
-(deprecates them, further ur)156 321 R 1.125(ging that you eliminate all b)-.18
-F 1.125(ut `)-.2 F(`user@hostc')-.74 E 3.625('s)-.74 G 1.125(hould you)462.595
-321 R(recei)156 333 Q 1.698 -.15(ve o)-.25 H 1.398(ne of these things.).15 F
--1.11(Ve)6.398 G 1.398(rsion 8 is slightly more generous than the standards)
-1.11 F .753(suggest; instead of stripping of)156 345 R 3.253(fa)-.25 G .753
-(ll the route addressees, it only strips hosts of)293.115 345 R 3.254(fu)-.25 G
-3.254(pt)487.966 345 S(o)499 345 Q 1.29(the one before the last one kno)156 357
-R 1.289(wn to DNS, thus allo)-.25 F 1.289(wing you to ha)-.25 F 1.589 -.15
-(ve p)-.2 H(seudo-hosts).15 E(such as foo.BITNET)156 369 Q 5(.T)-.74 G
-(he `R' option will turn this of)251.91 369 Q(f.)-.25 E
-(The areas in which sendmail is not `)102 385.2 Q(`unconditionally compliant')
--.74 E 2.5('a)-.74 G(re:)367.43 385.2 Q 26.5(\2475.2.6 Sendmail)102 401.4 R
-(does do header munging.)2.5 E 21.5(\2475.2.10 Sendmail)102 417.6 R(doesn')3.2
-E 3.2(ta)-.18 G -.1(lwa)233.88 417.6 S .7(ys use the e).1 F .701
-(xact SMTP message te)-.15 F .701(xt from RFC 821.)-.15 F .701(This is a)5.701
-F(rather silly requirement.)156 429.6 Q 19(\2475.3.1.1 Sendmail)102 445.8 R
-(doesn')3.512 E 3.512(tg)-.18 G 1.012
-(uarantee only one connect for each host on queue runs.)235.064 445.8 R
-(Connec-)6.011 E(tion caching gi)156 457.8 Q -.15(ve)-.25 G 2.5(sy).15 G
-(ou most of this, b)235.87 457.8 Q(ut it does not pro)-.2 E(vide a guarantee.)
--.15 E 19(\2475.3.1.1 Sendmail)102 474 R(doesn')2.843 E 2.843(ta)-.18 G -.1
-(lwa)233.166 474 S .343(ys pro).1 F .343(vide an adequate limit on concurrenc)
--.15 F 4.144 -.65(y. T)-.15 H .344(hat is, there can).65 F .757(be se)156 486 R
--.15(ve)-.25 G .757(ral independent sendmails running at once.).15 F .757
-(My feeling is that doing an abso-)5.757 F 1.047(lute limit w)156 498 R 1.047
-(ould be a mistak)-.1 F 3.547(e\()-.1 G 1.048(it might result in lost mail\).)
-284.302 498 R(Ho)6.048 E(we)-.25 E -.15(ve)-.25 G 1.848 -.4(r, i).15 H 3.548
-(fy).4 G 1.048(ou use the)461.354 498 R .801(XLA contrib)156 510 R .801
-(uted softw)-.2 F .801(are, most of this will be guaranteed \(b)-.1 F .801
-(ut I don')-.2 F 3.3(tg)-.18 G .8(uarantee the)454.61 510 R(guarantee\).)156
-522 Q F0 2.5(2.3. Extended)87 546 R(SMTP Support)2.5 E F1 -1.11(Ve)127 562.2 S
-.154(rsion 8 includes both sending and recei)1.11 F .155
-(ving support for Extended SMTP support as de\214ned)-.25 F .229(by RFC 1425 \
-\(basic\) and RFC 1427 \(SIZE\); and limited support for RFC 1426 \(BOD)102
-574.2 R 2.729(Y\). The)-.55 F(body)2.729 E .275(support is minimal because the\
- \2318BITMIME\232 body type is not currently adv)102 586.2 R 2.776
-(ertised. Although)-.15 F(such)2.776 E 3.076(ab)102 598.2 S .576
-(ody type will be accepted, it will not be correctly con)114.516 598.2 R -.15
-(ve)-.4 G .576(rted to 7 bits if speaking to a non-8-bit-).15 F(MIME a)102
-610.2 Q -.1(wa)-.15 G(re SMTP serv).1 E(er)-.15 E(.)-.55 E/F2 10/Times-Italic@0
-SF(Sendmail)127 626.4 Q F1 .287(tries to speak ESMTP if you ha)2.787 F .588
--.15(ve t)-.2 H .288(he `a' \215ag set in the \215ags for the mailer descrip-)
-.15 F(tor)102 638.4 Q 3.322(,o)-.4 G 3.322(ri)123.532 638.4 S 3.322(ft)132.964
-638.4 S .822(he other end adv)142.396 638.4 R .822(ertises the f)-.15 F .822
-(act that it speaks ESMTP)-.1 F 5.822(.T)-1.11 G .821
-(his is a non-standard adv)376.446 638.4 R(ertise-)-.15 E(ment:)102 650.4 Q F2
-(sendmail)2.98 E F1 .48(announces \231ESMTP spok)2.98 F .48
-(en here\232 during the initial connection message, and client)-.1 F .587
-(sendmails search for this message.)102 662.4 R .586
-(This creates some problems for some PC-based mailers, which)5.586 F
-(do not understand tw)102 674.4 Q
-(o-line greeting messages as required by RFC 821.)-.1 E EP
-%%Page: 4 4
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 294.65(4C)72 60 S(hanges in Sendmail V)378.87 60 Q
-(ersion 8)-1 E 2.5(2.4. Eight-Bit)87 96 R(Clean)2.5 E/F1 10/Times-Roman@0 SF
-(Pre)127 112.2 Q 1.263(vious v)-.25 F 1.263
-(ersions of sendmail used the 0200 bit for quoting.)-.15 F 1.264(This v)6.264 F
-1.264(ersion a)-.15 F -.2(vo)-.2 G 1.264(ids that use.).2 F(Ho)102 124.2 Q(we)
--.25 E -.15(ve)-.25 G 1.119 -.4(r, y).15 H .318
-(ou can set option `7' to get se).4 F -.15(ve)-.25 G 2.818(nb).15 G .318
-(it stripping for compatibility with RFC 821, which is)290.046 124.2 R 2.5(a7)
-102 136.2 S(-bit protocol.)113.94 136.2 Q(This option says `)5 E
-(`strip to 7 bits on input')-.74 E('.)-.74 E(Indi)127 152.4 Q .375
-(vidual mailers can still produce se)-.25 F -.15(ve)-.25 G 2.875(nb).15 G .376
-(it out put using the `7' mailer \215ag.)303.02 152.4 R .376(This \215ag says)
-5.376 F -.74(``)102 164.4 S(strip to 7 bits on output').74 E('.)-.74 E F0 2.5
-(2.5. User)87 188.4 R(Database)2.5 E F1 1.926
-(The User Database \(UDB\) is an as-yet e)127 204.6 R 1.926
-(xperimental attempt to pro)-.15 F 1.925(vide uni\214ed lar)-.15 F(ge-site)-.18
-E .396(name support.)102 216.6 R 1.996 -.8(We a)5.396 H .396
-(re installing it at Berk).8 F(ele)-.1 E .396(y; future v)-.15 F .396
-(ersions may sho)-.15 F 2.897(ws)-.25 G .397(igni\214cant modi\214cations.)
-406.373 216.6 R(Brie\215y)102 228.6 Q 3.583(,U)-.65 G 1.083
-(DB contains a database that is intended to contain all the per)142.433 228.6 R
-1.082(-user information for your)-.2 F -.1(wo)102 240.6 S .172
-(rkgroup, such as people').1 F 2.673(sf)-.55 G .173
-(ull names, their .plan information, their outgoing mail name, and their)222.29
-240.6 R(mail drop.)102 252.6 Q .438(The user database allo)127 268.8 R .438
-(ws you to map both incoming and outgoing addresses, much lik)-.25 F 2.937(eI)
--.1 G -.4(DA)487.46 268.8 S(.).4 E(Ho)102 280.8 Q(we)-.25 E -.15(ve)-.25 G
-1.799 -.4(r, t).15 H .999(he interf).4 F .999(ace is still better with ID)-.1 F
-.999(A; in particular)-.4 F 3.499(,t)-.4 G 1
-(he alias \214le with incoming/outgoing)355.55 280.8 R(marks pro)102 292.8 Q
-(vides better locality of information.)-.15 E F0 2.5(2.6. Impr)87 316.8 R -.1
-(ove)-.18 G 2.5(dB).1 G(IND Support)158.01 316.8 Q F1 .262
-(The BIND support, particularly for MX records, had a number of anno)127 333 R
-.261(ying `)-.1 F(`features')-.74 E 2.761('w)-.74 G(hich)486.78 333 Q(ha)102
-345 Q 1.212 -.15(ve b)-.2 H .912(een remo).15 F -.15(ve)-.15 G 3.412(di).15 G
-3.412(nt)187.116 345 S .912(his release.)198.308 345 R .912(In particular)5.912
-F 3.412(,t)-.4 G .912(hese more tightly bind \(pun intended\) the name)307.916
-345 R(serv)102 357 Q(er to sendmail, so that the name serv)-.15 E
-(er resolution rules are incorporated directly into sendmail.)-.15 E .688
-(The major change has been that the $[ ... $] operator didn')127 373.2 R 3.188
-(tf)-.18 G .688(ully qualify names that were in)376.41 373.2 R
-(DNS as A or MX records.)102 385.2 Q -1.11(Ve)5 G
-(rsion 8 does this quali\214cation.)1.11 E .429(This has pro)127 401.4 R -.15
-(ve)-.15 G 2.929(nt).15 G 2.929(ob)197.147 401.4 S 2.929(ea)210.076 401.4 S
-2.929(na)221.885 401.4 S(nno)234.254 401.4 Q .43
-(yance in Sun shops, who often still run without BIND support.)-.1 F(Ho)102
-413.4 Q(we)-.25 E -.15(ve)-.25 G 1.001 -.4(r, i).15 H 2.701(ti).4 G 2.701(sr)
-153.842 413.4 S .201
-(eally critical that this be supported, since MX records are mandatory)163.763
-413.4 R 5.2(.I)-.65 G 2.7(nS)450.26 413.4 S .2(unOS you)463.52 413.4 R .101
-(can choose either MX support or NIS support, b)102 425.4 R .101(ut not both.)
--.2 F .101(This is \214x)5.101 F .101(ed in Solaris, and some)-.15 F/F2 10
-/Times-Italic@0 SF(send-)2.602 E(mail)102 437.4 Q F1(support to allo)2.5 E 2.5
-(wt)-.25 G(his in SunOS should be forthcoming in a future release.)192.31 437.4
-Q F0 2.5(2.7. K)87 461.4 R(ey)-.25 E(ed Files)-.1 E F1 .242(Generalized k)127
-477.6 R -.15(ey)-.1 G .242(ed \214les is an idea tak).15 F .241
-(en directly from ID)-.1 F 2.741(As)-.4 G .241
-(endmail \(albeit with a completely)368.606 477.6 R(dif)102 489.6 Q
-(ferent implementation\).)-.25 E(The)5 E 2.5(yc)-.15 G(an be useful on lar)
-239.63 489.6 Q(ge sites.)-.18 E -1.11(Ve)127 505.8 S
-(rsion 8 includes the follo)1.11 E(wing b)-.25 E(uilt-in map classes:)-.2 E
-33.72(dbm Support)102 522 R(for the ndbm\(3\) library)2.5 E(.)-.65 E 33.17
-(hash Support)102 538.2 R 1.229(for the `)3.729 F(`Hash')-.74 E 3.729('t)-.74 G
-1.229(ype from the ne)261.636 538.2 R 3.729(wB)-.25 G(erk)345.732 538.2 Q(ele)
--.1 E 3.729(yd)-.15 G 1.229(b\(3\) library)383.641 538.2 R 6.23(.t)-.65 G 1.23
-(his library pro-)441.55 538.2 R 4.094(vides substantially better database sup\
-port than ndbm\(3\), including in-memory)156 550.2 R
-(caching, arbitrarily long k)156 562.2 Q -.15(ey)-.1 G 2.5(sa).15 G(nd v)279.89
-562.2 Q(alues, and better disk utilization.)-.25 E 31.51(btree Support)102
-578.4 R .547(for the `)3.047 F(`B-T)-.74 E(ree')-.35 E 3.047('t)-.74 G .547
-(ype from the ne)266.328 578.4 R 3.048(wB)-.25 G(erk)347.698 578.4 Q(ele)-.1 E
-3.048(yd)-.15 G .548(b\(3\) library)384.926 578.4 R 5.548(.B)-.65 G(-T)445.362
-578.4 Q .548(rees pro)-.35 F(vide)-.15 E .521(better clustering than Hashed \
-\214les if you are fetching lots of records that ha)156 590.4 R .821 -.15(ve s)
--.2 H(imilar).15 E -.1(ke)156 602.4 S(ys, such as searching a dictionary for w)
--.05 E(ords be)-.1 E(ginning with `)-.15 E(`detr')-.74 E('.)-.74 E 39.83
-(nis Support)102 618.6 R(for NIS \(a.k.a. YP\) maps.)2.5 E
-(NIS+ is not supported in this v)5 E(ersion.)-.15 E 34.83(host Support)102
-634.8 R(for DNS lookups.)2.5 E 19.84(dequote A)102 651 R -.74(``)2.642 G
-(pseudo-map').74 E 2.642('\()-.74 G .142(that is, once that does not ha)232.554
-651 R .442 -.15(ve a)-.2 H .442 -.15(ny ex).15 H .142(ternal data\) that allo)
-.15 F .142(ws a con-)-.25 F .099
-(\214guration \214le to break apart a quoted string in the address.)156 663 R
-.098(This is necessary primarily)5.098 F .726
-(for DECnet addresses, which often ha)156 675 R 1.026 -.15(ve q)-.2 H .726
-(uoted addresses that need to be unwrapped).15 F(on g)156 687 Q(ate)-.05 E -.1
-(wa)-.25 G(ys.).1 E EP
-%%Page: 5 5
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(5)499 60 Q
-2.5(2.8. Multi-W)87 96 R(ord Classes & Macr)-.75 E(os in Classes)-.18 E/F1 10
-/Times-Roman@0 SF(Classes can no)127 112.2 Q 2.5(wb)-.25 G 2.5(em)200.35 112.2
-S(ultiple w)215.07 112.2 Q 2.5(ords. F)-.1 F(or e)-.15 E(xample,)-.15 E
-(CShofmann.CS.Berk)142 128.4 Q(ele)-.1 E -.65(y.)-.15 G(EDU).65 E(allo)102
-144.6 Q 2.395(ws you to match the entire string `)-.25 F(`hofmann.CS.Berk)-.74
-E(ele)-.1 E -.65(y.)-.15 G(EDU').65 E 4.894('u)-.74 G 2.394
-(sing the single construct)399.878 144.6 R -.74(``)102 156.6 S($=S').74 E('.)
--.74 E(Class de\214nitions are no)127 172.8 Q 2.5(wa)-.25 G(llo)234.52 172.8 Q
-(wed to include macros \212 for e)-.25 E(xample:)-.15 E(Cw$k)142 189 Q(is le)
-102 205.2 Q -.05(ga)-.15 G(l.).05 E F0 2.5(2.9. IDENT)87 229.2 R(Pr)2.5 E
-(otocol Support)-.18 E F1 .633
-(The IDENT protocol as de\214ned in RFC 1413 [RFC1413] is supported.)127 245.4
-R(Ho)5.633 E(we)-.25 E -.15(ve)-.25 G 1.433 -.4(r, m).15 H(an).4 E 3.134(ys)
--.15 G(ys-)491.78 245.4 Q .909(tems ha)102 257.4 R 1.209 -.15(ve a T)-.2 H .909
-(CP/IP b).15 F .908
-(ug that renders this useless, and the feature must be turned of)-.2 F 3.408
-(f. Roughly)-.25 F 3.408(,i)-.65 G(f)500.67 257.4 Q 8.538
-(one of these system recei)102 269.4 R -.15(ve)-.25 G 11.038(sa\231).15 G 8.539
-(No route to host\232 message \(ICMP message)280.568 269.4 R(ICMP_UNREA)102
-281.4 Q .829(CH_HOST\) on)-.4 F/F2 10/Times-Italic@0 SF(any)3.329 E F1 .828
-(connection, all connections to that host are closed.)3.329 F .828
-(Some \214re-)5.828 F -.1(wa)102 293.4 S .087
-(lls return this error if you try to connect to the IDENT port, so you can').1
-F 2.587(tr)-.18 G(ecei)408.889 293.4 Q .387 -.15(ve e)-.25 H .087
-(mail from these).15 F 1.712(hosts on these systems.)102 305.4 R(It')6.712 E
-4.212(sp)-.55 G 1.712(ossible that if the \214re)228.62 305.4 R -.1(wa)-.25 G
-1.712(ll used a more speci\214c message \(such as).1 F(ICMP_UNREA)102 317.4 Q
-(CH_PR)-.4 E -1.88 -.4(OT O)-.4 H 72.325(COL, ICMP_UNREA).4 F(CH_POR)-.4 E
-74.825(To)-.6 G(r)500.67 317.4 Q(ICMP_UNREA)102 329.4 Q(CH_NET_PR)-.4 E
-(OHIB\) it w)-.4 E(ould w)-.1 E(ork, b)-.1 E(ut this hasn')-.2 E 2.5(tb)-.18 G
-(een v)375.62 329.4 Q(eri\214ed.)-.15 E .678(IDENT protocol support cannot be \
-used on 4.3BSD, Apollo DomainOS, Apple A/UX, Con-)127 345.6 R -.15(vex)102
-357.6 S .949(OS, Data General DG/UX, HP-UX, Sequent Dynix, or Ultrix 4.x, x).15
-F/F3 10/Symbol SF<a3>3.449 E F1 3.449(3. It)3.449 F .949(seems to w)3.449 F
-.949(ork on)-.1 F
-(4.4BSD, IBM AIX 3.x, OSF/1, SGI IRIX, Solaris, SunOS, and Ultrix 4.4.)102
-369.6 Q F0 2.5(2.10. Separate)87 393.6 R(En)2.5 E -.1(ve)-.4 G(lope/Header Pr)
-.1 E(ocessing)-.18 E F1 .854
-(Since the From: line is passed in separately from the en)127 409.8 R -.15(ve)
--.4 G .854(lope sender).15 F 3.354(,t)-.4 G .854(hese ha)420.978 409.8 R 1.154
--.15(ve b)-.2 H .854(oth been).15 F .427
-(made visible; the $g macro is set to the en)102 421.8 R -.15(ve)-.4 G .428
-(lope sender during processing of mailer ar).15 F .428(gument v)-.18 F(ec-)-.15
-E(tors and the header sender during processing of headers.)102 433.8 Q .085
-(It is also possible to specify separate per)127 450 R .085(-mailer en)-.2 F
--.15(ve)-.4 G .084(lope and header processing.).15 F .084(The Sender)5.084 F(-)
--.2 E -.55(RW)102 462 S 1.085(Set and RecipientR).55 F 1.085(Wset ar)-.55 F
-1.085(guments for mailers can be speci\214ed as `)-.18 F(`en)-.74 E -.15(ve)-.4
-G(lope/header').15 E 3.585('t)-.74 G 3.585(og)478.595 462 S -2.15 -.25(iv e)
-492.18 462 T(dif)102 474 Q(ferent re)-.25 E(writings for en)-.25 E -.15(ve)-.4
-G(lope v).15 E(ersus header addresses.)-.15 E F0 2.5(2.11. Owner)87 498 R
-(-List Pr)-.37 E(opagates to En)-.18 E -.1(ve)-.4 G(lope).1 E F1 1.168
-(When an alias has an associated o)127 514.2 R(wner)-.25 E 1.168
-(-list name, that alias is used to change the en)-.2 F -.15(ve)-.4 G(lope).15 E
-(sender address.)102 526.2 Q(This will cause do)5 E
-(wnstream errors to be returned to that o)-.25 E(wner)-.25 E(.)-.55 E 1.813
-(Some people \214nd this confusing because the en)127 542.4 R -.15(ve)-.4 G
-1.813(lope sender is what appears in the \214rst).15 F -.74(``)102 554.4 S
-(From_').74 E 3.127('l)-.74 G .627(ine in UNIX messages \(that is, the line be)
-146.417 554.4 R .627(ginning `)-.15 F(`From<space>')-.74 E 3.127('i)-.74 G .627
-(nstead of `)424.797 554.4 R(`From:')-.74 E(';)-.74 E .502
-(the latter is the header from, which)102 566.4 R F2(does)3.002 E F1 .503
-(indicate the sender of the message\).)3.002 F .503(In pre)5.503 F .503
-(vious v)-.25 F(ersions,)-.15 E F2(sendmail)102 578.4 Q F1 .057(has tried to a)
-2.557 F -.2(vo)-.2 G .057(id changing the en).2 F -.15(ve)-.4 G .056
-(lope sender for back compatibility with UNIX con).15 F -.15(ve)-.4 G(n-).15 E
-.177(tion; at this point that back compatibility is creating too man)102 590.4
-R 2.678(yp)-.15 G .178(roblems, and it is necessary to mo)357.972 590.4 R -.15
-(ve)-.15 G(forw)102 602.4 Q(ard into the 1980s.)-.1 E F0 2.5(2.12. Command)87
-626.4 R(Line Flags)2.5 E F1(The)127 642.6 Q F0<ad42>2.5 E F1
-(\215ag has been added to pass in body type information.)2.5 E(The)127 658.8 Q
-F0<ad70>3.057 E F1 .557
-(\215ag has been added to pass in protocol information that w)3.057 F .557
-(as pre)-.1 F .556(viously passed in by)-.25 F(de\214ning the)102 670.8 Q F0
-($r)2.5 E F1(and)2.5 E F0($s)2.5 E F1(macros.)2.5 E(The)127 687 Q F0<ad58>2.6 E
-F1 .1(\215ag has been added to allo)2.6 F 2.6(wl)-.25 G .1
-(ogging of all protocol in and out of sendmail for deb)279.89 687 R(ug-)-.2 E
-2.732(ging. Y)102 699 R .232(ou can set \231\255X \214lename\232 and a complet\
-e transcript will be logged in that \214le.)-1.1 F .231(This gets big)5.231 F
--.1(fa)102 711 S(st: the option is only for deb).1 E(ugging.)-.2 E EP
-%%Page: 6 6
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 294.65(6C)72 60 S(hanges in Sendmail V)378.87 60 Q
-(ersion 8)-1 E/F1 10/Times-Roman@0 SF(The)127 96 Q F0<ad71>4.006 E F1 1.507(\
-\215ag can limit limit a queue run to speci\214c recipients, senders, or queue\
- ids using)4.006 F
-(\255qRsubstring, \255qSsubstring, or \255qIsubstring respecti)102 108 Q -.15
-(ve)-.25 G(ly).15 E(.)-.65 E F0 2.5(2.13. New)87 132 R(Con\214guration Line T)
-2.5 E(ypes)-.74 E F1 .674(The `T' \(T)127 148.2 R .674
-(rusted users\) con\214guration line has been deleted.)-.35 F .674
-(It will still be accepted b)5.674 F .674(ut will)-.2 F(be ignored.)102 160.2 Q
-(The `K' line has been added to declare database maps.)127 176.4 Q
-(The `V' line has been added to declare the con\214guration v)127 192.6 Q
-(ersion le)-.15 E -.15(ve)-.25 G(l.).15 E(The `M' \(mailer\) line tak)127 208.8
-Q(es a D= \214eld to specify e)-.1 E -.15(xe)-.15 G(cution directory).15 E(.)
--.65 E F0 2.5(2.14. New)87 232.8 R(and Extended Options)2.5 E F1(Se)127 249 Q
--.15(ve)-.25 G .9(ral ne).15 F 3.4(wo)-.25 G .9(ptions ha)184.8 249 R 1.2 -.15
-(ve b)-.2 H .9(een added, man).15 F 3.4(yt)-.15 G 3.4(os)314.89 249 S .9
-(upport ne)327.18 249 R 3.4(wf)-.25 G .9(eatures, others to allo)379.83 249 R
-3.4(wt)-.25 G(uning)481.22 249 Q(that w)102 261 Q(as pre)-.1 E(viously a)-.25 E
--.25(va)-.2 G(ilable only by recompiling.).25 E(Brie\215y:)5 E 28.78(AT)102
-277.2 S .099(he alias \214le speci\214cation can no)144.11 277.2 R 2.599(wb)
--.25 G 2.599(eal)286.654 277.2 S .099(ist of alias \214les.)303.512 277.2 R
-.098(Also, the con\214guration can spec-)5.099 F(ify a class of \214le.)138
-289.2 Q -.15(Fo)5 G 2.5(re).15 G(xample, to search the NIS aliases, use \231O)
-232.13 289.2 Q(Anis:mail.aliases\232.)-.35 E 31(bI)102 305.4 S
-(nsist on a minimum number of disk blocks.)141.33 305.4 Q 29.33(CD)102 321.6 S
-(eli)145.22 321.6 Q -.15(ve)-.25 G .24(ry checkpoint interv).15 F 2.74
-(al. Checkpoint)-.25 F .24(the queue \(to a)2.74 F -.2(vo)-.2 G .24
-(id duplicate deli).2 F -.15(ve)-.25 G .24(ries\) e).15 F -.15(ve)-.25 G .24
-(ry C).15 F(addresses.)138 333.6 Q 29.89(ED)102 349.8 S(ef)145.22 349.8 Q .712
-(ault error message.)-.1 F .711
-(This message \(or the contents of the indicated \214le\) are prepended)5.712 F
-(to error messages.)138 361.8 Q 28.78(GE)102 378 S .785(nable GECOS matching.)
-144.11 378 R .785(If you can')5.785 F 3.285<748c>-.18 G .786
-(nd a local user name and this option is enabled,)307.51 378 R .59
-(do a sequential scan of the passwd \214le to match ag)138 390 R .589
-(ainst full names.)-.05 F(Pre)5.589 E .589(viously a compile)-.25 F(option.)138
-402 Q 31(hM)102 418.2 S(aximum hop count.)146.89 418.2 Q(Pre)5 E
-(viously this w)-.25 E(as compiled in.)-.1 E 32.67(IT)102 434.4 S
-(his option has been e)144.11 434.4 Q(xtended to allo)-.15 E 2.5(ws)-.25 G
-(etting of resolv)300.64 434.4 Q(er parameters.)-.15 E 33.22(jS)102 450.6 S
-(end errors in MIME-encapsulated format.)143.56 450.6 Q 32.11(JF)102 466.8 S
-(orw)143.41 466.8 Q(ard \214le path.)-.1 E(Where to search for .forw)5 E
-(ard \214les \212 def)-.1 E(aults to $HOME/.forw)-.1 E(ard.)-.1 E 31(kC)102 483
-S .05(onnection cache size.)144.67 483 R .05
-(The total number of connections that will be k)5.05 F .05(ept open at an)-.1 F
-2.55(yt)-.15 G(ime.)486.5 483 Q 28.78(KC)102 499.2 S 1.395
-(onnection cache lifetime.)144.67 499.2 R 1.395(The amount of time an)6.395 F
-3.895(yc)-.15 G 1.394(onnection will be permitted to sit)364.53 499.2 R(idle.)
-138 511.2 Q 33.22(lE)102 527.4 S .333(nable Errors-T)144.11 527.4 R .333
-(o: header)-.8 F 5.334(.T)-.55 G .334
-(hese headers violate RFC 1123; this option is included to pro-)252.89 527.4 R
-(vide back compatibility with old v)138 539.4 Q(ersions of sendmail.)-.15 E
-28.78(OI)102 555.6 S(ncoming daemon options \(e.g., use alternate SMTP port\).)
-141.33 555.6 Q 31(pP)102 571.8 S(ri)143.56 571.8 Q -.25(va)-.25 G .3 -.15(cy o)
-.25 H 2.5(ptions. These).15 F(can be used to mak)2.5 E 2.5(ey)-.1 G
-(our SMTP serv)322.22 571.8 Q(er less friendly)-.15 E(.)-.65 E 32.67(rT)102 588
-S .67(his option has been e)144.11 588 R .67(xtended to allo)-.15 F 3.17<778c>
--.25 G .67(ner grained control o)307 588 R -.15(ve)-.15 G 3.17(rt).15 G 3.17
-(imeouts. F)411.02 588 R .67(or e)-.15 F(xample,)-.15 E
-(you can set the timeout for SMTP commands indi)138 600 Q(vidually)-.25 E(.)
--.65 E 29.33(RD)102 616.2 S(on')145.22 616.2 Q 11.797(tp)-.18 G 9.297
-(rune route-addrs.)177.947 616.2 R(Normally)269.851 616.2 Q 11.797(,i)-.65 G
-11.797(fv)324.608 616.2 S 9.297(ersion 8 sees an address lik)344.585 616.2 R(e)
--.1 E 1.256("<@hostA,@hostB:user@hostC>, sendmail will try to strip of)138
-628.2 R 3.755(fa)-.25 G 3.755(sm)406.48 628.2 S 1.255(uch as it can \(up to)
-421.905 628.2 R(user@hostC\) as suggested by RFC 1123.)138 640.2 Q
-(This option disables that beha)5 E(viour)-.2 E(.)-.55 E 29.89(TT)102 656.4 S
-1.485(he \231Return T)144.11 656.4 R 3.985(oS)-.8 G 1.485
-(ender\232 timeout has been e)213.035 656.4 R 1.485(xtended to allo)-.15 F
-3.986(ws)-.25 G 1.486(peci\214cation of a w)399.942 656.4 R(arning)-.1 E .789
-(message interv)138 668.4 R .789
-(al, typically something on the order of four hours.)-.25 F .788
-(If a message cannot be)5.788 F(deli)138 680.4 Q -.15(ve)-.25 G 1.245
-(red in that interv).15 F 1.245(al, a w)-.25 F 1.245
-(arning message is sent back to the sender b)-.1 F 1.246(ut the message)-.2 F
-(continues to be tried.)138 692.4 Q 28.78(UU)102 708.6 S(ser database spec.)
-145.22 708.6 Q(This is still e)5 E(xperimental.)-.15 E EP
-%%Page: 7 7
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(7)499 60 Q
-/F1 10/Times-Roman@0 SF 28.78(VF)102 96 S .758(allback `)143.41 96 R(`MX')-.74
-E 3.258('h)-.74 G 3.258(ost. This)211.756 96 R .757
-(can be thought of as an MX host that applies to all addresses)3.258 F
-(that has a v)138 108 Q(ery high preference v)-.15 E
-(alue \(that is, use it only if e)-.25 E -.15(ve)-.25 G(rything else f).15 E
-(ails\).)-.1 E 28.78(wI)102 124.2 S 3.066(fs)141.33 124.2 S .566(et, assume th\
-at if you are the best MX host for a host, you should send directly to that)
-151.616 124.2 R 3.213(host. This)138 136.2 R .713
-(is intended for compatibility with UIUC sendmail, and may ha)3.213 F 1.013
--.15(ve s)-.2 H .712(ome use on).15 F(\214re)138 148.2 Q -.1(wa)-.25 G(lls.).1
-E 31(7D)102 164.4 S 2.758(on)145.22 164.4 S .258(ot run eight bit clean.)
-157.978 164.4 R -.7(Te)5.258 G(chnically).7 E 2.758(,y)-.65 G .258(ou ha)
-305.656 164.4 R .558 -.15(ve t)-.2 H 2.758(oa).15 G .259
-(ssert this option to be RFC 821 com-)354.68 164.4 R(patible.)138 176.4 Q F0
-2.5(2.15. New)87 200.4 R(Mailer De\214nitions)2.5 E F1 21.75(L= Set)102 216.6 R
-.93(the allo)3.43 F -.1(wa)-.25 G .93(ble line length.).1 F .93
-(In V5, the L mailer \215ag implied a line length limit of 990)5.93 F
-(characters; this is no)138 228.6 Q 2.5(ws)-.25 G(ettable to an arbitrary v)
-233.29 228.6 Q(alue.)-.25 E 17.86(F=a T)102 244.8 R(ry to use ESMTP)-.35 E 5
-(.I)-1.11 G 2.5(tw)222.65 244.8 S(ill f)235.15 244.8 Q
-(all back to SMTP if the initial EHLO pack)-.1 E(et is rejected.)-.1 E 17.3
-(F=b Ensure)102 261 R 2.5(ab)2.5 G(lank line at the end of messages.)180.21 261
-Q(Useful on the *\214le* mailer)5 E(.)-.55 E 17.86(F=c Strip)102 277.2 R .68(a\
-ll comments from addresses; this should only be used as a last resort when dea\
-ling)3.18 F(with crank)138 289.2 Q 2.5(ym)-.15 G(ailers.)195.62 289.2 Q 17.3
-(F=g Ne)102 305.4 R -.15(ve)-.25 G 2.88(ru).15 G .38
-(se the null sender as the en)169.91 305.4 R -.15(ve)-.4 G .379(lope sender).15
-F 2.879(,e)-.4 G -.15(ve)343.645 305.4 S 2.879(nw).15 G .379(hen running SMTP)
-368.034 305.4 R 5.379(.T)-1.11 G .379(his violates)458.341 305.4 R(RFC 1123.)
-138 317.4 Q 17.3(F=7 Strip)102 333.6 R(all output to this mailer to 7 bits.)2.5
-E 16.19(F=L Used)102 349.8 R .198
-(to set the line limit to 990 bytes for SMTP compatibility)2.697 F 5.198(.I)
--.65 G 2.698(tn)398.622 349.8 S .698 -.25(ow d)409.1 349.8 T .198
-(oes that only if the).25 F(L= k)138 361.8 Q -.15(ey)-.1 G
-(letter is not speci\214ed.).15 E
-(This \215ag is obsolete and should not be used.)5 E F0 2.5(2.16. New)87 385.8
-R(or Changed Pr)2.5 E(e-De\214ned Macr)-.18 E(os)-.18 E F1 23.5($k UUCP)102 402
-R(node name from uname\(2\).)2.5 E 20.72($m Domain)102 418.2 R
-(part of our full hostname.)2.5 E 23.5($_ RFC)102 434.4 R(1413-pro)2.5 E
-(vided sender address.)-.15 E 21.28($w Pre)102 450.6 R .148(viously w)-.25 F
-.148(as sometimes the full domain name, sometimes just the \214rst w)-.1 F
-2.647(ord. No)-.1 F 2.647(wg)-.25 G(uar)488.1 450.6 Q(-)-.2 E
-(anteed to be the \214rst w)138 462.6 Q
-(ord of the domain name \(i.e., the host name\).)-.1 E 25.72($j Pre)102 478.8 R
-.193(viously had to be de\214ned \212 it is no)-.25 F 2.693(wp)-.25 G .194
-(rede\214ned to be the full domain name, if that can)310.067 478.8 R
-(be determined.)138 490.8 Q(That is, it is equi)5 E -.25(va)-.25 G(lent to $w)
-.25 E(.$m.)-.65 E F0 2.5(2.17. New)87 514.8 R(and Changed Classes)2.5 E F1
-17.86($=k Initialized)102 531 R(to contain $k.)2.5 E 15.64($=w No)102 547.2 R
-3.069(wi)-.25 G .569
-(ncludes \231[1.2.3.4]\232 \(where 1.2.3.4 is your IP address\) to allo)163.039
-547.2 R 3.068(wt)-.25 G .568(he con\214guration \214le)422.314 547.2 R
-(to recognize your o)138 559.2 Q(wn IP address.)-.25 E F0 2.5(2.18. New)87
-583.2 R(Rewriting T)2.5 E(ok)-.92 E(ens)-.1 E F1(The)127 599.4 Q F0($&)3.25 E
-F1 .75(construct has been adopted from ID)3.25 F 3.25(At)-.4 G 3.25(od)322
-599.4 S .75(efer macro e)335.25 599.4 R -.25(va)-.25 G 3.25(luation. Normally)
-.25 F 3.25(,m)-.65 G(acros)482.9 599.4 Q .476
-(in rulesets are bound when the rule is \214rst parsed during startup.)102
-611.4 R .476(Some macros change during pro-)5.476 F .046
-(cessing and are uninteresting during startup.)102 623.4 R(Ho)5.046 E(we)-.25 E
--.15(ve)-.25 G .846 -.4(r, t).15 H .047
-(hat macro can be referenced using \231$&x\232 to).4 F(defer the e)102 635.4 Q
--.25(va)-.25 G(ulation of $x until the rule is processed.).25 E(The tok)127
-651.6 Q(ens)-.1 E F0($\()2.5 E F1(and)2.5 E F0($\))2.5 E F1(ha)2.5 E .3 -.15
-(ve b)-.2 H(een added to allo).15 E 2.5(ws)-.25 G(peci\214cation of map re)
-319.59 651.6 Q(writing.)-.25 E -1.11(Ve)127 667.8 S 1.499(rsion 8 allo)1.11 F
-(ws)-.25 E F0($@)3.999 E F1 1.499
-(on the Left Hand Side of an `R' line to match zero tok)3.999 F 3.998
-(ens. This)-.1 F(is)3.998 E(intended to be used to match the null input.)102
-679.8 Q EP
-%%Page: 8 8
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 294.65(8C)72 60 S(hanges in Sendmail V)378.87 60 Q
-(ersion 8)-1 E 2.5(2.19. Bigger)87 96 R(Defaults)2.5 E/F1 10/Times-Roman@0 SF
--1.11(Ve)127 112.2 S 1.283(rsion 8 allo)1.11 F 1.284
-(ws up to 100 rulesets instead of 30.)-.25 F 1.284
-(It is recommended that rulesets 0\2559 be)6.284 F(reserv)102 124.2 Q
-(ed for sendmail')-.15 E 2.5(sd)-.55 G(edicated use in future releases.)202.66
-124.2 Q(The total number of MX records that can be used has been raised to 20.)
-127 140.4 Q .335(The number of queued messages that can be handled at one time\
- has been raised from 600 to)127 156.6 R(1000.)102 168.6 Q F0 2.5(2.20. Differ)
-87 192.6 R(ent Default T)-.18 E(uning P)-.92 E(arameters)-.1 E F1 -1.11(Ve)127
-208.8 S .8(rsion 8 has changed the def)1.11 F .8
-(ault parameters for tuning queue costs to mak)-.1 F 3.3(et)-.1 G .8
-(he number of)449.08 208.8 R .712(recipients more important than the size of t\
-he message \(for small messages\).)102 220.8 R .712(This is reasonable if)5.712
-F(you are connected with reasonably f)102 232.8 Q(ast links.)-.1 E F0 2.5
-(2.21. A)87 256.8 R(uto-Quoting in Addr)-.5 E(esses)-.18 E F1(Pre)127 273 Q
-(viously)-.25 E 3.2(,t)-.65 G .701(he `)177.36 273 R .701
-(`Full Name <email address>')-.74 F 3.201('s)-.74 G .701(yntax w)322.025 273 R
-.701(ould generate incorrect protocol out-)-.1 F .006(put if `)102 285 R .006
-(`Full Name')-.74 F 2.506('h)-.74 G .006(ad special characters such as dot.)
-187.754 285 R .005(This v)5.006 F .005(ersion puts quotes around such names.)
--.15 F F0 2.5(2.22. Symbolic)87 309 R(Names On Err)2.5 E(or Mailer)-.18 E F1
-(Se)127 325.2 Q -.15(ve)-.25 G(ral names ha).15 E .3 -.15(ve b)-.2 H(een b).15
-E(uilt in to the $@ portion of the $#error mailer)-.2 E 5(.F)-.55 G(or e)428.96
-325.2 Q(xample:)-.15 E($#error $@NOHOST $: Host unkno)142 341.4 Q(wn)-.25 E
-(Prints the indicated message and sets the e)102 357.6 Q(xit status of)-.15 E
-/F2 10/Times-Italic@0 SF(sendmail)2.5 E F1(to)2.5 E/F3 9/Times-Roman@0 SF
-(EX_NOHOST)2.5 E F1(.)A F0 2.5(2.23. New)87 381.6 R(Built-In Mailers)2.5 E F1
--1 -.8(Tw o)127 397.8 T(ne)3.901 E 3.101(wm)-.25 G .601(ailers, *\214le* and *\
-include*, are included to de\214ne options when mailing to a \214le)174.822
-397.8 R(or a :include: \214le respecti)102 409.8 Q -.15(ve)-.25 G(ly).15 E 5
-(.P)-.65 G(re)232.88 409.8 Q(viously these were o)-.25 E -.15(ve)-.15 G
-(rloaded on the local mailer).15 E(.)-.55 E F0 2.5(2.24. SMTP)87 433.8 R
-(VRFY Doesn't Expand)2.5 E F1(Pre)127 450 Q 1.438(vious v)-.25 F 1.438
-(ersions of sendmail treated VRFY and EXPN the same.)-.15 F 1.437(In this v)
-6.437 F 1.437(ersion, VRFY)-.15 F(doesn')102 462 Q 2.5(te)-.18 G
-(xpand aliases or follo)138.05 462 Q 2.5(w.)-.25 G(forw)235.84 462 Q
-(ard \214les.)-.1 E .663(As an optimization, if you run with your def)127 478.2
-R .664(ault deli)-.1 F -.15(ve)-.25 G .664(ry mode being queue-only).15 F 3.164
-(,t)-.65 G .664(he RCPT)466.386 478.2 R 1.09
-(command will also not chase aliases and .forw)102 490.2 R 1.09(ard \214les.)
--.1 F 1.09(It will chase them when it processes the)6.09 F 2.5(queue. This)102
-502.2 R(speeds up RCPT processing.)2.5 E F0 2.5(2.25. [IPC])87 526.2 R
-(Mailers Allo)2.5 E 2.5(wM)-.1 G(ultiple Hosts)210.49 526.2 Q F1 .099
-(When an address resolv)127 542.4 R .099(es to a mailer that has `)-.15 F
-(`[IPC]')-.74 E 2.599('a)-.74 G 2.6(si)353.52 542.4 S .1(ts `)362.79 542.4 R
-(`P)-.74 E(ath')-.15 E .1(', the $@ part \(host name\))-.74 F .138
-(can be a colon-separated list of hosts instead of a single hostname.)102 554.4
-R .137(This asks sendmail to search the)5.137 F .16
-(list for the \214rst entry that is a)102 566.4 R -.25(va)-.2 G .16(ilable e)
-.25 F .161(xactly as though it were an MX record.)-.15 F .161
-(The intent is to route)5.161 F .738(internal traf)102 578.4 R .738
-(\214c through internal netw)-.25 F .738
-(orks without publishing an MX record to the net.)-.1 F .737(MX e)5.737 F
-(xpan-)-.15 E(sion is still done on the indi)102 590.4 Q(vidual items.)-.25 E
-F0 2.5(2.26. Aliases)87 614.4 R(Extended)2.5 E F1 .298
-(The implementation has been mer)127 630.6 R .298(ged with maps.)-.18 F .299
-(Among other things, this supports multiple)5.298 F
-(alias \214les and NIS-based aliases.)102 642.6 Q -.15(Fo)5 G 2.5(re).15 G
-(xample:)258.34 642.6 Q -.35(OA)142 658.8 S(/etc/aliases,nis:mail.aliases).35 E
-(will search \214rst the local database \231/etc/aliases\232 follo)102 675 Q
-(wed by the NIS map)-.25 E EP
-%%Page: 9 9
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(9)499 60 Q
-2.5(2.27. P)87 96 R(ortability and Security Enhancements)-.2 E/F1 10
-/Times-Roman@0 SF 2.5(An)127 112.2 S(umber of internal changes ha)141.72 112.2
-Q .3 -.15(ve b)-.2 H(een made to enhance portability).15 E(.)-.65 E(Se)127
-128.4 Q -.15(ve)-.25 G(ral \214x).15 E(es ha)-.15 E .3 -.15(ve b)-.2 H
-(een made to increase the paranoia f).15 E(actor)-.1 E(.)-.55 E .46
-(In particular)127 144.6 R 2.96(,t)-.4 G .46(he permissions required for .forw)
-184.45 144.6 R .46(ard and :include: \214les ha)-.1 F .76 -.15(ve b)-.2 H .46
-(een tightened up).15 F(considerably)102 156.6 Q 5.182(.V)-.65 G 2.683(5w)
-167.352 156.6 S .183(ould pretty much read an)182.155 156.6 R 2.683<798c>-.15 G
-.183(le it could get to as root, which e)295.96 156.6 R .183(xposed some secu-)
--.15 F 1.02(rity holes.)102 168.6 R 1.02
-(V8 insists that all directories leading up to the .forw)6.02 F 1.02
-(ard or :include: \214le be searchable)-.1 F .334
-(\("x" permission\) by the controlling user" \(de\214ned belo)102 180.6 R .335
-(w\), that the \214le itself be readable by the con-)-.25 F(trolling user)102
-192.6 Q 2.5(,a)-.4 G(nd that .forw)159.65 192.6 Q(ard \214les be o)-.1 E
-(wned by the user who is being forw)-.25 E(arded to or root.)-.1 E .565
-(The "controlling user" is the user on whose behalf the mail is being deli)127
-208.8 R -.15(ve)-.25 G 3.065(red. F).15 F .565(or e)-.15 F(xample,)-.15 E .459
-(if you mail to "user1" then the controlling user for ~user1/.forw)102 220.8 R
-.46(ard and an)-.1 F 2.96(ym)-.15 G .46(ailers in)416.94 220.8 R -.2(vo)-.4 G
--.1(ke).2 G 2.96(db).1 G 2.96(yt)481.04 220.8 S(hat)491.78 220.8 Q(.forw)102
-232.8 Q(ard \214le, including :include: \214les.)-.1 E(Pre)127 249 Q(viously)
--.25 E 2.816(,a)-.65 G -.15(ny)178.636 249 S .316
-(one who had a home directory could create a .forw).15 F .316(ard could forw)
--.1 F .316(ard to a pro-)-.1 F 2.965(gram. No)102 261 R 1.765 -.65(w, s)-.25 H
-.466(endmail checks to mak).65 F 2.966(es)-.1 G .466(ure that the)262.934 261 R
-2.966(yh)-.15 G -2.25 -.2(av e)321.672 261 T .466(an "appro)3.166 F -.15(ve)
--.15 G 2.966(ds).15 G .466(hell", that is, a shell listed)398.42 261 R
-(in the /etc/shells \214le.)102 273 Q F0 2.5(2.28. Miscellaneous)87 297 R
-(Fixes and Enhancements)2.5 E F1 4.03(An)127 313.2 S 1.53(umber of small b)
-143.25 313.2 R 1.53(ugs ha)-.2 F 1.53(ving to do with things lik)-.2 F 4.03(eb)
--.1 G 1.53(ackslash-escaped quotes inside of)364.72 313.2 R(comments ha)102
-325.2 Q .3 -.15(ve b)-.2 H(een \214x).15 E(ed.)-.15 E 1.552(The \214x)127 341.4
-R 1.552(ed size limit on header lines \(such as \231T)-.15 F 1.553
-(o:\232 and \231Cc:\232\) has been eliminated; those)-.8 F -.2(bu)102 353.4 S
--.25(ff).2 G(ers are dynamically allocated no).25 E -.65(w.)-.25 G .289(Sendma\
-il writes a /etc/sendmail.pid \214le with the current process id and the curre\
-nt in)127 369.6 R -.2(vo)-.4 G(cation).2 E(\215ags.)102 381.6 Q -1 -.8(Tw o)127
-397.8 T .218
-(people using the same program \(e.g., submit\) are considered "dif)3.518 F
-.219(ferent" so that duplicate)-.25 F .508(elimination doesn')102 409.8 R 3.008
-(td)-.18 G .508(elete one of them.)187.836 409.8 R -.15(Fo)5.508 G 3.008(re).15
-G .508(xample, tw)287.556 409.8 R 3.008(op)-.1 G .508(eople forw)345.412 409.8
-R .508(arding their email to |submit)-.1 F(will be treated as tw)102 421.8 Q
-2.5(or)-.1 G(ecipients.)193.27 421.8 Q .721(The mailstats program prints maile\
-r names and gets the location of the sendmail.st \214le from)127 438 R
-(/etc/sendmail.cf.)102 450 Q(Man)127 466.2 Q 2.5(ym)-.15 G(inor b)160.46 466.2
-Q(ugs ha)-.2 E .3 -.15(ve b)-.2 H(een \214x).15 E
-(ed, such as handling of backslashes inside of quotes.)-.15 E 2.5(Ah)127 482.4
-S(ook has been added to allo)141.72 482.4 Q 2.5(wr)-.25 G -.25(ew)260.89 482.4
-S(riting of local addresses after aliasing.).25 E F0 2.5(3. FUTURE)72 506.4 R
--.1(WO)2.5 G(RK).1 E F1 1.719(The pre)112 522.6 R 1.719
-(vious section describes)-.25 F/F2 10/Times-Italic@0 SF(sendmail)4.219 E F1
-1.719(as of v)4.219 F 1.719(ersion 8.6.6.)-.15 F 1.718
-(There is still much to be done.)6.719 F(Some high points are described belo)87
-534.6 Q 3.8 -.65(w. T)-.25 H(his list is by no means e).65 E(xhausti)-.15 E
--.15(ve)-.25 G(.).15 E F0 2.5(3.1. Full)87 558.6 R(MIME Support)2.5 E F1
-(Currently)127 574.8 Q F2(sendmail)3.305 E F1 .805(only supports se)3.305 F
--.15(ve)-.25 G 3.305(nb).15 G .805(it MIME messages.)297.005 574.8 R .806
-(Although it can pass eight bit)5.805 F .371(MIME messages, it cannot adv)102
-586.8 R .371(ertise that f)-.15 F .37
-(act because the standards say that the mail agent must be)-.1 F .26
-(able to do 8- to 7-bit con)102 598.8 R -.15(ve)-.4 G .26(rsion to ha).15 F
-.561 -.15(ve f)-.2 H .261(ull 8-bit support.).15 F .261(This requires f)5.261 F
-.261(ar more e)-.1 F(xtensi)-.15 E .561 -.15(ve m)-.25 H(odi\214-).15 E
-(cation of the message body than is currently supported.)102 610.8 Q .464
-(The best w)127 627 R .464(ay to do this w)-.1 F .463
-(ould be to support the general concept of an e)-.1 F .463(xternal `)-.15 F
-.463(`message \214l-)-.74 F(ter')102 639 Q 3.319('t)-.74 G .819
-(hat could do arbitrary modi\214cations of the message.)124.569 639 R .819
-(This w)5.819 F .82(ould allo)-.1 F 3.32(wM)-.25 G .82(IME con)427.37 639 R
--.15(ve)-.4 G .82(rsion as).15 F .63
-(well as such things as automatic encryption of messages sent o)102 651 R -.15
-(ve)-.15 G 3.129(re).15 G .629(xternal links.)379.264 651 R .629
-(This is probably)5.629 F(an e)102 663 Q(xtremely non-tri)-.15 E(vial change.)
--.25 E F0 2.5(3.2. Ser)87 687 R(vice Switch Abstraction)-.1 E F1 .369(Most mod\
-ern systems include some concept of a \231service switch\232 \212 for e)127
-703.2 R .37(xample, to look up)-.15 F .984
-(host names you can try DNS, NIS, NIS+, te)102 715.2 R .984
-(xt tables, NetInfo, or other services in some arbitrary)-.15 F EP
-%%Page: 10 10
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 287.15(10 Changes)72 60 R(in Sendmail V)2.5 E(ersion 8)
--1 E/F1 10/Times-Roman@0 SF(order)102 96 Q 5.174(.T)-.55 G .174
-(his is currently v)136.334 96 R .174(ery clumsy in)-.15 F/F2 10/Times-Italic@0
-SF(sendmail)2.674 E F1 2.674(,w)C .174
-(ith only limited control of the services pro)309.612 96 R(vided.)-.15 E F0 2.5
-(3.3. Mor)87 120 R 2.5(eC)-.18 G(ontr)139.86 120 Q(ol of Local Addr)-.18 E
-(esses)-.18 E F1 .943(Currently some addresses are declared as \231local\232 a\
-nd are handled specially \212 for e)127 136.2 R(xample,)-.15 E(the)102 148.2 Q
-3.455(ym)-.15 G .955(ay ha)130.305 148.2 R 1.255 -.15(ve .)-.2 H(forw).15 E
-.956(ard \214les, may be translated into program calls or \214le deli)-.1 F
--.15(ve)-.25 G .956(ries, and so forth.).15 F .311(These should be brok)102
-160.2 R .311(en out into separate \215ags to allo)-.1 F 2.811(wt)-.25 G .31
-(he local system administrator to ha)330.29 160.2 R .61 -.15(ve m)-.2 H(ore).15
-E(\214ne-grained control o)102 172.2 Q -.15(ve)-.15 G 2.5(ro).15 G(perations.)
-208.62 172.2 Q F0 2.5(3.4. Mor)87 196.2 R 2.5(eR)-.18 G(un-T)139.86 196.2 Q
-(ime Con\214guration Options)-.18 E F1 .016(There are man)127 212.4 R 2.516(yo)
--.15 G .016(ptions that are con\214gured at compile time, such as the method o\
-f \214le locking)197.148 212.4 R .719
-(and the use of the IDENT protocol [RFC1413].)102 224.4 R .719
-(These should be transfered to run time by adding)5.719 F(ne)102 236.4 Q 2.5
-(wo)-.25 G(ptions.)125.91 236.4 Q(Similarly)127 252.6 Q 3.413(,s)-.65 G .913
-(ome options are currently o)173.383 252.6 R -.15(ve)-.15 G .913
-(rloaded, that is, a single option controls more than).15 F(one thing.)102
-264.6 Q(These should probably be brok)5 E(en out into separate options.)-.1 E
-(This implies that options will change from single characters to w)127 280.8 Q
-(ords.)-.1 E F0 2.5(3.5. Mor)87 304.8 R 2.5(eC)-.18 G(on\214guration Contr)
-139.86 304.8 Q(ol Ov)-.18 E(er Err)-.1 E(ors)-.18 E F1(Currently)127 321 Q
-3.649(,t)-.65 G 1.148
-(he con\214guration \214le can generate an error message during parsing.)
-173.609 321 R(Ho)6.148 E(we)-.25 E -.15(ve)-.25 G 1.948 -.4(r, i).15 H(t).4 E
-.569(cannot tweak other operations, such as issuing a w)102 333 R .57
-(arning message to the system postmaster)-.1 F 5.57(.S)-.55 G(imi-)487.33 333 Q
-(larly)102 345 Q 2.558(,s)-.65 G .057
-(ome errors should not be triggered if the)128.628 345 R 2.557(ya)-.15 G .057
-(re in aliases during an alias \214le reb)302.237 345 R .057(uild, b)-.2 F .057
-(ut should)-.2 F(be triggered if that alias is actually used.)102 357 Q F0 2.5
-(3.6. Long)87 381 R -.92(Te)2.5 G(rm Host State).92 E F1(Currently)127 397.2 Q
-(,)-.65 E F2(sendmail)3.731 E F1 1.231
-(only remembers host status during a single queue run.)3.731 F 1.232
-(This should be)6.232 F(con)102 409.2 Q -.15(ve)-.4 G .492(rted to long term s\
-tatus stored on disk so it can be shared between instantiations of).15 F F2
-(sendmail)2.991 E F1(.)A .866(Entries will ha)102 421.2 R 1.167 -.15(ve t)-.2 H
-3.367(ob).15 G 3.367(et)190.666 421.2 S .867(imestamped so the)201.253 421.2 R
-3.367(yc)-.15 G .867(an time out.)290.084 421.2 R .867(This will allo)5.867 F
-(w)-.25 E F2(sendmail)3.367 E F1 .867(to implement)3.367 F -.15(ex)102 433.2 S
-(ponential back).15 E(of)-.1 E 2.5(fo)-.25 G 2.5(nq)188.7 433.2 S
-(ueue runs on a per)201.2 433.2 Q(-host basis.)-.2 E F0 2.5(3.7. Connection)87
-457.2 R(Contr)2.5 E(ol)-.18 E F1 .819(Modern netw)127 473.4 R .819(orks ha)-.1
-F 1.119 -.15(ve d)-.2 H(if).15 E .819(ferent types of connecti)-.25 F .818
-(vity than the past.)-.25 F .818(In particular)5.818 F 3.318(,t)-.4 G .818
-(he rising)468.462 473.4 R .636
-(prominence of dialup IP has created certain challenges for automated serv)102
-485.4 R 3.136(ers. It)-.15 F .636(is not uncommon)3.136 F .732(to try to mak)
-102 497.4 R 3.232(eac)-.1 G .732(onnection to a host and ha)175.27 497.4 R
-1.032 -.15(ve i)-.2 H 3.232(tf).15 G .732(ail, e)307.984 497.4 R -.15(ve)-.25 G
-3.232(nt).15 G .732(hough if you tried ag)348.208 497.4 R .732(ain it w)-.05 F
-.731(ould suc-)-.1 F 2.5(ceed. The)102 509.4 R
-(connection management could be a bit cle)2.5 E -.15(ve)-.25 G
-(rer to try to adapt to such situations.).15 E F0 2.5(3.8. Other)87 533.4 R
-(Caching)2.5 E F1 .074(When you do an MX record lookup, the name serv)127 549.6
-R .075(er automatically returns the IP addresses of)-.15 F .518
-(the associated MX serv)102 561.6 R 3.018(ers. This)-.15 F .518
-(information is currently ignored, and another query is done to get)3.018 F
-(this information.)102 573.6 Q(It should be cached to a)5 E -.2(vo)-.2 G(id e)
-.2 E(xcess name serv)-.15 E(er traf)-.15 E(\214c.)-.25 E F0 2.5(4. REFERENCES)
-72 597.6 R F1([Allman83a])87 613.8 Q .137(\231Sendmail \212 An Internetw)123
-625.8 R .137(ork Mail Router)-.1 F 4.037 -.7(.\232 E)-.55 H 2.638(.A).7 G 2.638
-(llman. In)327.58 625.8 R F2 .138(Unix Pr)2.638 F -.1(og)-.45 G -.15(ra).1 G
-(mmer).15 E(s')-.1 E 2.638(sM)-.4 G(anual,)463.582 625.8 Q F1(4.2)2.638 E(Berk)
-123 637.8 Q(ele)-.1 E 2.5(yS)-.15 G(oftw)166.91 637.8 Q(are Distrib)-.1 E
-(ution, v)-.2 E(olume 2C.)-.2 E(August 1983.)5 E([Allman83b])87 654 Q .384
-(\231Mail Systems and Addressing in 4.2BSD.)123 666 R 5.384<9a45>-.7 G 2.884
-(.A)311.544 666 S .383(llman In)324.148 666 R F2 .383(UNICOM Confer)2.883 F
-.383(ence Pr)-.37 F(oceedings.)-.45 E F1(San Die)123 678 Q(go, California.)-.15
-E(January 1983.)5 E([Allman&Amos85])87 694.2 Q -.74(``)123 706.2 S 1.145
-(Sendmail Re).74 F(visited.)-.25 E 5.125 -.74('' E)-.7 H 3.645(.A).74 G 1.145
-(llman and M. Amos.)241.215 706.2 R(In)6.145 E F2 1.145
-(Usenix Summer 1985 Confer)3.645 F 1.145(ence Pr)-.37 F(o-)-.45 E(ceedings.)123
-718.2 Q F1(Portland, Ore)5 E 2.5(gon. June)-.15 F(1985.)2.5 E EP
-%%Page: 11 11
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(11)494 60 Q
-/F1 10/Times-Roman@0 SF([ID)87 96 Q(A87])-.4 E/F2 10/Times-Italic@0 SF(Electr)
-1.97 E .983(onic Mail Addr)-.45 F .983(essing in Theory and Pr)-.37 F .982
-(actice with the ID)-.15 F 3.482(AS)-.35 G .982(endmail Enhancement Kit)398.156
-96 R .563(\(or The P)123 108 R(ostmaster')-.8 E 3.063(sL)-.4 G .563(ast W)
-215.989 108 R .564(ill and T)-.55 F(estament\).)-.92 E F1 .564(Lennart Lo)5.564
-F -.5(..)359.828 102 S 3.064(vstrand. Department)364.828 108 R .564
-(of Computer)3.064 F 1.267(and Information Science, Uni)123 120 R -.15(ve)-.25
-G 1.267(rsity of Link).15 F(o)-.1 E -.5(..)306.585 114 S 1.266
-(ping, Sweden, Report no. LiTH-ID)311.585 120 R(A-Ex-8715.)-.4 E(May 1987.)123
-132 Q([RFC821])87 148.2 Q F2(Simple Mail T)123 160.2 Q -.15(ra)-.55 G
-(nsport Pr).15 E(otocol.)-.45 E F1(J. Postel.)5 E(August 1982.)5 E([RFC1123])87
-176.4 Q F2(Requir)123 188.4 Q .163
-(ements for Internet Hosts \212 Application and Support.)-.37 F F1 .164
-(Internet Engineering T)5.164 F .164(ask F)-.8 F(orce,)-.15 E
-(R. Braden, Editor)123 200.4 Q 5(.O)-.55 G(ctober 1989.)207.72 200.4 Q
-([RFC1344])87 216.6 Q F2(Implications of MIME for Internet Mail Gate)123 228.6
-Q(ways.)-.15 E F1(N. Borenstein.)5 E(June 1992.)5 E([RFC1413])87 244.8 Q F2
-(Identi\214cation Pr)123 256.8 Q(otocol.)-.45 E F1(M. St. Johns.)5 E
-(February 1993.)5 E([RFC1425])87 273 Q F2 2.352(SMTP Service Extensions.)123
-285 R F1 2.352(J. Klensin, N. Freed, M. Rose, E. Stef)7.352 F 2.351
-(ferud, and D. Crock)-.25 F(er)-.1 E(.)-.55 E(February 1993.)123 297 Q
-([RFC1426])87 313.2 Q F2 .12(SMTP Service Extension for 8bit-MIMEtr)123 325.2 R
-(ansport.)-.15 E F1 .12(J. Klensin, N. Freed, M. Rose, E. Stef)5.12 F(ferud,)
--.25 E(and D. Crock)123 337.2 Q(er)-.1 E 5(.F)-.55 G(ebruary 1993.)196.78 337.2
-Q([RFC1427])87 353.4 Q F2 .813(SMTP Service Extension for Messa)123 365.4 R
-1.013 -.1(ge S)-.1 H .813(ize Declar).1 F(ation.)-.15 E F1 .813
-(J. Klensin, N. Freed, and K. Moore.)5.813 F(February 1993.)123 377.4 Q
-([RFC1521])87 393.6 Q F2 2.033
-(MIME \(Multipurpose Internet Mail Extensions\) P)123 405.6 R 2.033
-(art One: Mec)-.8 F 2.033(hanisms for Specifying and)-.15 F .933
-(Describing the F)123 417.6 R .933(ormat of Internet Messa)-1.05 F 1.133 -.1
-(ge B)-.1 H(odies.).1 E F1 .932(N. Borenstein and N. Freed.)5.932 F(September)
-5.932 E(1993.)123 429.6 Q EP
-%%Trailer
-end
-%%EOF
diff --git a/usr.sbin/sendmail/doc/op/op.ps b/usr.sbin/sendmail/doc/op/op.ps
deleted file mode 100644
index 355b3fc8c9a9..000000000000
--- a/usr.sbin/sendmail/doc/op/op.ps
+++ /dev/null
@@ -1,5944 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.08
-%%DocumentNeededResources: font Times-Bold
-%%+ font Times-Roman
-%%+ font Times-Italic
-%%+ font Symbol
-%%DocumentSuppliedResources: procset grops 1.08 0
-%%Pages: 69
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.08 0
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/FL{
-currentgray exch setgray fill setgray
-}bind def
-/BL/fill load def
-/LW/setlinewidth load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Italic
-%%IncludeResource: font Symbol
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL
-792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron
-/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space
-/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft
-/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four
-/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C
-/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash
-/bracketright/circumflex/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q
-/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase
-/guillemotleft/guillemotright/bullet/florin/fraction/perthousand/dagger
-/daggerdbl/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar
-/section/dieresis/copyright/ordfeminine/guilsinglleft/logicalnot/minus
-/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu
-/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guilsinglright
-/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde
-/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute
-/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
-/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute
-/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve
-/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex
-/udieresis/yacute/thorn/ydieresis]def/Times-Italic@0 ENC0/Times-Italic RE
-/Times-Roman@0 ENC0/Times-Roman RE/Times-Bold@0 ENC0/Times-Bold RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 16/Times-Bold@0 SF(SENDMAIL)244.888 143.4 Q/F1 12/Times-Bold@0 SF(INST)
-170.172 172.2 Q(ALLA)-1.08 E(TION AND OPERA)-1.14 E(TION GUIDE)-1.14 E/F2 10
-/Times-Roman@0 SF(Eric Allman)263.42 196.2 Q -.15(Pa)233.085 208.2 S
-(ng\346a Reference Systems).15 E(eric@Sendmail.ORG)245.205 220.2 Q -1.11(Ve)
-262.725 244.2 S(rsion 8.70)1.11 E -.15(Fo)236.965 268.2 S 2.5(rS).15 G
-(endmail V)258.765 268.2 Q(ersion 8.7)-1.11 E/F3 10/Times-Italic@0 SF(Sendmail)
-97 312.6 Q F2 .482(implements a general purpose internetw)2.982 F .482
-(ork mail routing f)-.1 F .481(acility under the UNIX\256 operat-)-.1 F .378
-(ing system.)72 324.6 R .378(It is not tied to an)5.378 F 2.878(yo)-.15 G .378
-(ne transport protocol \212 its function may be lik)208.214 324.6 R .378
-(ened to a crossbar switch,)-.1 F 1.036
-(relaying messages from one domain into another)72 336.6 R 6.036(.I)-.55 G
-3.536(nt)284.502 336.6 S 1.036
-(he process, it can do a limited amount of message)295.818 336.6 R .604(header\
- editing to put the message into a format that is appropriate for the recei)72
-348.6 R .604(ving domain.)-.25 F .604(All of this is)5.604 F
-(done under the control of a con\214guration \214le.)72 360.6 Q .711
-(Due to the requirements of \215e)97 376.8 R .711(xibility for)-.15 F F3
-(sendmail)3.211 E F2 3.211(,t)C .71(he con\214guration \214le can seem some)
-311.688 376.8 R .71(what unap-)-.25 F 2.893(proachable. Ho)72 388.8 R(we)-.25 E
--.15(ve)-.25 G 1.193 -.4(r, t).15 H .393(here are only a fe).4 F 2.893(wb)-.25
-G .394(asic con\214gurations for most sites, for which standard con\214gu-)
-253.381 388.8 R .646(ration \214les ha)72 400.8 R .946 -.15(ve b)-.2 H .646
-(een supplied.).15 F .645(Most other con\214gurations can be b)5.646 F .645
-(uilt by adjusting an e)-.2 F .645(xisting con\214gura-)-.15 F
-(tion \214les incrementally)72 412.8 Q(.)-.65 E F3(Sendmail)97 429 Q F2 .15
-(is based on RFC821 \(Simple Mail T)2.65 F .15
-(ransport Protocol\), RFC822 \(Internet Mail F)-.35 F .15(ormat Pro-)-.15 F
-.423(tocol\), RFC1123 \(Internet Host Requirements\), RFC1521 \(MIME\), RFC165\
-1 \(SMTP Service Extensions\),)72 441 R .994
-(and a series of as-yet-draft standards describing Deli)72 453 R -.15(ve)-.25 G
-.995(ry Status Noti\214cations \(DSNs\), a).15 F -.25(va)-.2 G .995
-(ilable from the).25 F 1.529
-(internet drafts sites as draft-ietf-notary-mime-deli)72 465 R -.15(ve)-.25 G
-(ry-).15 E F3(XX)A F2 1.528(.txt, draft-ietf-notary-mime-report-)B F3(XX)A F2
-1.528(.txt, draft-)B(ietf-notary-smtp-drpt-)72 477 Q F3(XX)A F2 1.93
-(.txt, and draft-ietf-notary-status-)B F3(XX)A F2 1.93(.txt \(replace)B F3(XX)
-4.43 E F2 1.93(by the latest draft number\).)4.43 F(Ho)72 489 Q(we)-.25 E -.15
-(ve)-.25 G .831 -.4(r, s).15 H(ince).4 E F3(sendmail)2.531 E F2 .031
-(is designed to w)2.531 F .031(ork in a wider w)-.1 F .03(orld, in man)-.1 F
-2.53(yc)-.15 G .03(ases it can be con\214gured to e)365.12 489 R(xceed)-.15 E
-(these protocols.)72 501 Q(These cases are described herein.)5 E(Although)97
-517.2 Q F3(sendmail)3.547 E F2 1.048(is intended to run without the need for m\
-onitoring, it has a number of features)3.547 F 1.972(that may be used to monit\
-or or adjust the operation under unusual circumstances.)72 529.2 R 1.972
-(These features are)6.972 F(described.)72 541.2 Q .816
-(Section one describes ho)97 557.4 R 3.316(wt)-.25 G 3.316(od)211.664 557.4 S
-3.316(oab)224.98 557.4 S(asic)246.052 557.4 Q F3(sendmail)3.316 E F2 3.317
-(installation. Section)3.317 F(tw)3.317 E 3.317(oe)-.1 G .817
-(xplains the day-to-day)412.936 557.4 R .283(information you should kno)72
-569.4 R 2.783(wt)-.25 G 2.783(om)196.772 569.4 S .282
-(aintain your mail system.)212.335 569.4 R .282(If you ha)5.282 F .582 -.15
-(ve a r)-.2 H(elati).15 E -.15(ve)-.25 G .282(ly normal site, these tw).15 F(o)
--.1 E .634(sections should contain suf)72 581.4 R .635
-(\214cient information for you to install)-.25 F F3(sendmail)3.135 E F2 .635
-(and k)3.135 F .635(eep it happ)-.1 F 4.435 -.65(y. S)-.1 H .635(ection three)
-.65 F .925(describes some parameters that may be safely tweak)72 593.4 R 3.425
-(ed. Section)-.1 F .925(four has information re)3.425 F -.05(ga)-.15 G .925
-(rding the com-).05 F .885(mand line ar)72 605.4 R 3.385(guments. Section)-.18
-F<8c76>3.385 E 3.385(ec)-.15 G .886
-(ontains the nitty-gritty information about the con\214guration \214le.)221.915
-605.4 R(This)5.886 E .005
-(section is for masochists and people who must write their o)72 617.4 R .004
-(wn con\214guration \214le.)-.25 F .004(Section six describes con-)5.004 F .886
-(\214guration that can be done at compile time.)72 629.4 R .886(Section se)
-5.886 F -.15(ve)-.25 G 3.386(ng).15 G -2.15 -.25(iv e)322.098 629.4 T 3.386
-(sab).25 G .886(rief description of dif)354.02 629.4 R .886(ferences in this)
--.25 F -.15(ve)72 641.4 S 1.62(rsion of).15 F F3(sendmail)4.12 E F2 6.62(.T)C
-1.62(he appendix)169.2 641.4 R 1.62(es gi)-.15 F 1.92 -.15(ve a b)-.25 H 1.619
-(rief b).15 F 1.619(ut detailed e)-.2 F 1.619
-(xplanation of a number of features not)-.15 F
-(described in the rest of the paper)72 653.4 Q(.)-.55 E/F4 10/Times-Bold@0 SF
--1.2(WA)97 669.6 S(RNING:)1.2 E F2(Se)3.267 E -.15(ve)-.25 G .767
-(ral major changes were introduced in v).15 F .767(ersion 8.7.)-.15 F -1.1(Yo)
-5.767 G 3.267(us)1.1 G .767(hould not attempt to use)404.26 669.6 R
-(this document for prior v)72 681.6 Q(ersions of)-.15 E F3(sendmail)2.5 E F2(.)
-A F4(Sendmail Installation and Operation Guide)72 756 Q(SMM:08-1)457.9 756 Q EP
-%%Page: 7 2
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-7)457.9 60 Q 2.5(1. B)72 96 R(ASIC INST)-.3 E(ALLA)-.9 E(TION)-.95 E/F1
-10/Times-Roman@0 SF .234(There are tw)112 112.2 R 2.733(ob)-.1 G .233
-(asic steps to installing)175.631 112.2 R/F2 10/Times-Italic@0 SF(sendmail)
-2.733 E F1 5.233(.T)C .233(he hard part is to b)317.076 112.2 R .233
-(uild the con\214guration table.)-.2 F 1.185(This is a \214le that)87 124.2 R
-F2(sendmail)3.686 E F1 1.186
-(reads when it starts up that describes the mailers it kno)3.686 F 1.186
-(ws about, ho)-.25 F 3.686(wt)-.25 G(o)499 124.2 Q .715(parse addresses, ho)87
-136.2 R 3.215(wt)-.25 G 3.215(or)178.315 136.2 S -.25(ew)189.86 136.2 S .715
-(rite the message header).25 F 3.215(,a)-.4 G .715(nd the settings of v)306.75
-136.2 R .714(arious options.)-.25 F .714(Although the)5.714 F .852
-(con\214guration table is quite comple)87 148.2 R .852
-(x, a con\214guration can usually be b)-.15 F .852(uilt by adjusting an e)-.2 F
-.852(xisting of)-.15 F(f-)-.25 E 1.078(the-shelf con\214guration.)87 160.2 R
-1.078(The second part is actually doing the installation, i.e., creating the n\
-ecessary)6.078 F(\214les, etc.)87 172.2 Q .192
-(The remainder of this section will describe the installation of)112 188.4 R F2
-(sendmail)2.692 E F1 .192(assuming you can use one)2.692 F 1.432(of the e)87
-200.4 R 1.432(xisting con\214gurations and that the standard installation para\
-meters are acceptable.)-.15 F 1.431(All path-)6.431 F 8.62(names and e)87 212.4
-R 8.62(xamples are gi)-.15 F -.15(ve)-.25 G 11.12(nf).15 G 8.62
-(rom the root of the)257.57 212.4 R F2(sendmail)378.16 212.4 Q F1 8.62
-(subtree, normally)425.39 212.4 R F2(/usr/sr)87 224.4 Q(c/usr)-.37 E
-(.sbin/sendmail)-1.11 E F1(on 4.4BSD.)2.5 E .543(If you are loading this of)112
-240.6 R 3.042(ft)-.25 G .542(he tape, continue with the ne)222.766 240.6 R .542
-(xt section.)-.15 F .542(If you ha)5.542 F .842 -.15(ve a r)-.2 H .542
-(unning binary).15 F
-(already on your system, you should probably skip to section 1.2.)87 252.6 Q F0
-2.5(1.1. Compiling)87 276.6 R(Sendmail)2.5 E F1(All)127 292.8 Q F2(sendmail)
-2.934 E F1 .434(source is in the)2.934 F F2(sr)2.934 E(c)-.37 E F1
-(subdirectory)2.934 E 5.434(.I)-.65 G 2.934(fy)321.652 292.8 S .435
-(ou are running on a 4.4BSD system, com-)332.916 292.8 R .179
-(pile by typing \231mak)102 304.8 R 2.679(e\232. On)-.1 F .179
-(other systems, you may ha)2.679 F .479 -.15(ve t)-.2 H 2.679(om).15 G(ak)
-350.719 304.8 Q 2.679(es)-.1 G .178(ome other adjustments.)371.068 304.8 R .178
-(On most)5.178 F(systems, you can do the appropriate compilation by typing)102
-316.8 Q(sh mak)142 333 Q(esendmail)-.1 E .364(This will lea)102 349.2 R .664
--.15(ve t)-.2 H .364(he binary in an appropriately named subdirectory).15 F
-5.364(.I)-.65 G 2.864(tw)377.37 349.2 S .364(orks for multiple object v)390.134
-349.2 R(er)-.15 E(-)-.2 E(sions compiled out of the same directory)102 361.2 Q
-(.)-.65 E F0 2.5(1.1.1. T)102 385.2 R(weaking the Mak)-.74 E(e\214le)-.1 E F2
-(Sendmail)142 401.4 Q F1 2.181(supports tw)4.681 F 4.681(od)-.1 G(if)247.053
-401.4 Q 2.181(ferent formats for the local \(on disk\) v)-.25 F 2.18
-(ersion of databases,)-.15 F(notably the)117 413.4 Q F2(aliases)2.5 E F1 2.5
-(database. At)2.5 F(least one of these should be de\214ned if at all possible.)
-2.5 E 39.5(NDBM The)117 429.6 R -.74(``)3.166 G(ne).74 E 3.166(wD)-.25 G(BM')
-240.432 429.6 Q 3.166('f)-.74 G .666(ormat, a)268.408 429.6 R -.25(va)-.2 G
-.666(ilable on nearly all systems around today).25 F 5.667(.T)-.65 G(his)492.33
-429.6 Q -.1(wa)189 441.6 S 3.541(st).1 G 1.041
-(he preferred format prior to 4.4BSD.)210.771 441.6 R 1.041(It allo)6.041 F
-1.041(ws such comple)-.25 F 3.54(xt)-.15 G 1.04(hings as)470.46 441.6 R
-(multiple databases and closing a currently open database.)189 453.6 Q 32.84
-(NEWDB The)117 469.8 R(ne)3.323 E 3.323(wd)-.25 G .824
-(atabase package from Berk)232.606 469.8 R(ele)-.1 E 4.624 -.65(y. I)-.15 H
-3.324(fy).65 G .824(ou ha)382.716 469.8 R 1.124 -.15(ve t)-.2 H .824
-(his, use it.).15 F .824(It allo)5.824 F(ws)-.25 E .839
-(long records, multiple open databases, real in-memory caching, and so forth.)
-189 481.8 R -1.1(Yo)189 493.8 S 3.581(uc)1.1 G 1.081
-(an de\214ne this in conjunction with one of the other tw)213.141 493.8 R 1.082
-(o; if you do, old)-.1 F .693(databases are read, b)189 505.8 R .693
-(ut when a ne)-.2 F 3.193(wd)-.25 G .693
-(atabase is created it will be in NEWDB)341.681 505.8 R 2.851(format. As)189
-517.8 R 2.851(an)2.851 G .351(asty hack, if you ha)249.763 517.8 R .652 -.15
-(ve N)-.2 H .352(EWDB, NDBM, and NIS de\214ned, and).15 F .952
-(if the alias \214le name includes the substring \231/yp/\232,)189 529.8 R F2
-(sendmail)3.451 E F1 .951(will create both)3.451 F(ne)189 541.8 Q 3.975(wa)-.25
-G 1.475(nd old v)213.825 541.8 R 1.475(ersions of the alias \214le during a)
--.15 F F2(ne)3.976 E(walias)-.15 E F1 3.976(command. This)3.976 F(is)3.976 E
-.711(required because the Sun NIS/YP system reads the DBM v)189 553.8 R .71
-(ersion of the alias)-.15 F 2.5(\214le. It')189 565.8 R 2.5(su)-.55 G
-(gly as sin, b)229.56 565.8 Q(ut it w)-.2 E(orks.)-.1 E 1.112
-(If neither of these are de\214ned,)117 582 R F2(sendmail)3.612 E F1 1.112
-(reads the alias \214le into memory on e)3.612 F -.15(ve)-.25 G 1.112(ry in).15
-F -.2(vo)-.4 G(cation.).2 E 1.043(This can be slo)117 594 R 3.543(wa)-.25 G
-1.043(nd should be a)195.352 594 R -.2(vo)-.2 G 3.543(ided. There).2 F 1.043
-(are also se)3.543 F -.15(ve)-.25 G 1.042(ral methods for remote database).15 F
-(access:)117 606 Q 53.39(NIS Sun')117 622.2 R 2.5(sN)-.55 G(etw)220.95 622.2 Q
-(ork Information Services \(formerly YP\).)-.1 E 28.94(NISPLUS Sun')117 638.4 R
-2.5(sN)-.55 G(IS+ services.)220.95 638.4 Q 26.73(NETINFO NeXT')117 654.6 R 2.5
-(sN)-.55 G(etInfo service.)230.38 654.6 Q 32.84(HESIOD Hesiod)117 670.8 R
-(service \(from Athena\).)2.5 E .042(Other compilation \215ags are set in conf\
-.h and should be prede\214ned for you unless you are porting)117 687 R(to a ne)
-117 699 Q 2.5(we)-.25 G -.4(nv)157.57 699 S(ironment.).4 E EP
-%%Page: 8 3
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 198.36(SMM:08-8 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E 2.5(1.1.2. Compilation)102 96 R
-(and installation)2.5 E/F1 10/Times-Roman@0 SF .309
-(After making the local system con\214guration described abo)142 112.2 R -.15
-(ve)-.15 G 2.808(,Y).15 G .308(ou should be able to com-)398.86 112.2 R
-(pile and install the system.)117 124.2 Q(The script \231mak)5 E
-(esendmail\232 is the best approach on most systems:)-.1 E(sh mak)157 140.4 Q
-(esendmail)-.1 E(This will use)117 156.6 Q/F2 10/Times-Italic@0 SF(uname)2.5 E
-F1(\(1\) to select the correct Mak)A(e\214le for your en)-.1 E(vironment.)-.4 E
--1.1(Yo)142 172.8 S 2.5(um)1.1 G(ay be able to install using)168.4 172.8 Q
-(sh mak)157 189 Q(esendmail install)-.1 E 3.346
-(This should install the binary in /usr/sbin and create links from /usr/bin/ne)
-117 205.2 R -.1(wa)-.25 G 3.346(liases and).1 F 1.577
-(/usr/bin/mailq to /usr/sbin/sendmail.)117 217.2 R 1.577
-(On 4.4BSD systems it will also format and install man)6.577 F(pages.)117 229.2
-Q F0 2.5(1.2. Con\214guration)87 253.2 R(Files)2.5 E F2(Sendmail)127 269.4 Q F1
-2.079(cannot operate without a con\214guration \214le.)4.579 F 2.079
-(The con\214guration de\214nes the mail)7.079 F(deli)102 281.4 Q -.15(ve)-.25 G
-.889(ry mechanisms understood at this site, ho).15 F 3.389(wt)-.25 G 3.389(oa)
-309.783 281.4 S .889(ccess them, ho)322.612 281.4 R 3.388(wt)-.25 G 3.388(of)
-396.128 281.4 S(orw)407.846 281.4 Q .888(ard email to remote)-.1 F .088
-(mail systems, and a number of tuning parameters.)102 293.4 R .088
-(This con\214guration \214le is detailed in the later por)5.088 F(-)-.2 E
-(tion of this document.)102 305.4 Q(The)127 321.6 Q F2(sendmail)2.764 E F1 .264
-(con\214guration can be daunting at \214rst.)2.764 F .264(The w)5.264 F .264
-(orld is comple)-.1 F .264(x, and the mail con-)-.15 F .108
-(\214guration re\215ects that.)102 333.6 R .108(The distrib)5.108 F .109
-(ution includes an m4-based con\214guration package that hides a lot)-.2 F
-(of the comple)102 345.6 Q(xity)-.15 E(.)-.65 E .47
-(These con\214guration \214les are simpler than old v)127 361.8 R .47
-(ersions lar)-.15 F .47(gely because the w)-.18 F .47(orld has become)-.1 F
-1.448(simpler; in particular)102 373.8 R 3.948(,t)-.4 G -.15(ex)197.604 373.8 S
-1.448(t-based host \214les are of).15 F 1.449(\214cially eliminated, ob)-.25 F
-1.449(viating the need to \231hide\232)-.15 F(hosts behind a re)102 385.8 Q
-(gistered internet g)-.15 E(ate)-.05 E -.1(wa)-.25 G -.65(y.).1 G .092(These \
-\214les also assume that most of your neighbors use domain-based UUCP addressi\
-ng; that)127 402 R .361(is, instead of naming hosts as \231host!user\232 the)
-102 414 R 2.861(yw)-.15 G .361(ill use \231host.domain!user\232.)299.435 414 R
-.361(The con\214guration \214les)5.361 F(can be customized to w)102 426 Q
-(ork around this, b)-.1 E(ut it is more comple)-.2 E(x.)-.15 E .658
-(Our con\214guration \214les are processed by)127 442.2 R F2(m4)3.158 E F1 .658
-(to f)3.158 F .657(acilitate local customization; the directory)-.1 F F2(cf)
-3.157 E F1 .396(of the)102 454.2 R F2(sendmail)2.896 E F1(distrib)2.896 E .396
-(ution directory contains the source \214les.)-.2 F .396
-(This directory contains se)5.396 F -.15(ve)-.25 G .397(ral sub-).15 F
-(directories:)102 466.2 Q 61.73(cf Both)102 482.4 R .56
-(site-dependent and site-independent descriptions of hosts.)3.06 F .56
-(These can be lit-)5.56 F .445(eral host names \(e.g., \231ucb)174 494.4 R -.25
-(va)-.15 G .445(x.mc\232\) when the hosts are g).25 F(ate)-.05 E -.1(wa)-.25 G
-.445(ys or more general).1 F 3.589(descriptions \(such as \231tcpproto.mc\232 \
-as a general description of an SMTP-)174 506.4 R .536(connected host or \231uu\
-cpproto.mc\232 as a general description of a UUCP-connected)174 518.4 R 3.291
-(host\). Files)174 530.4 R(ending)3.291 E F0(.mc)3.291 E F1(\(`)3.291 E .791
-(`Master Con\214guration')-.74 F .791('\) are the input descriptions; the)-.74
-F 2.14(output is in the corresponding)174 542.4 R F0(.cf)4.64 E F1 4.64
-(\214le. The)4.64 F 2.14(general structure of these \214les is)4.64 F
-(described belo)174 554.4 Q -.65(w.)-.25 G 39.5(domain Site-dependent)102 570.6
-R .428(subdomain descriptions.)2.928 F .428(These are tied to the w)5.428 F
-.428(ay your or)-.1 F -.05(ga)-.18 G(niza-).05 E .292(tion w)174 582.6 R .292
-(ants to do addressing.)-.1 F -.15(Fo)5.292 G 2.792(re).15 G(xample,)313.122
-582.6 Q F0(domain/cs.exposed.m4)2.792 E F1 .292(is our descrip-)2.792 F .443
-(tion for hosts in the CS.Berk)174 594.6 R(ele)-.1 E -.65(y.)-.15 G .443
-(EDU subdomain that w).65 F .442(ant their indi)-.1 F .442(vidual host-)-.25 F
-.962(name to be e)174 606.6 R .963(xternally visible;)-.15 F F0
-(domain/cs.hidden.m4)3.463 E F1 .963(is the same e)3.463 F .963(xcept that the)
--.15 F 2.628(hostname is hidden \(e)174 618.6 R -.15(ve)-.25 G 2.628
-(rything looks lik).15 F 5.128(ei)-.1 G 5.128(tc)362.038 618.6 S 2.627
-(omes from CS.Berk)374.386 618.6 R(ele)-.1 E -.65(y.)-.15 G(EDU\).).65 E
-(These are referenced using the)174 630.6 Q/F3 9/Times-Roman@0 SF(DOMAIN)2.5 E
-F0(m4)2.5 E F1(macro in the)2.5 E F0(.mc)2.5 E F1(\214le.)2.5 E 41.74
-(feature De\214nitions)102 646.8 R .728
-(of speci\214c features that some particular host in your site might w)3.228 F
-(ant.)-.1 E 2.467(These are referenced using the)174 658.8 R F3(FEA)4.966 E
-(TURE)-.999 E F0(m4)4.966 E F1 4.966(macro. An)4.966 F -.15(ex)4.966 G 2.466
-(ample feature is).15 F 1.316(use_cw_\214le \(which tells)174 670.8 R F2
-(sendmail)3.816 E F1 1.317(to read an /etc/sendmail.cw \214le on startup to)
-3.816 F(\214nd the set of local names\).)174 682.8 Q 50.62(hack Local)102 699 R
-1.886(hacks, referenced using the)4.387 F F3(HA)4.386 E(CK)-.36 E F0(m4)4.386 E
-F1 4.386(macro. T)4.386 F 1.886(ry to a)-.35 F -.2(vo)-.2 G 1.886(id these.).2
-F(The)6.886 E(point of ha)174 711 Q(ving them here is to mak)-.2 E 2.5(ei)-.1 G
-2.5(tc)325.91 711 S(lear that the)335.63 711 Q 2.5(ys)-.15 G(mell.)394.08 711 Q
-EP
-%%Page: 9 4
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-9)457.9 60 Q/F1 10/Times-Roman@0 SF 56.72(m4 Site-independent)102 96 R
-/F2 10/Times-Italic@0 SF(m4)2.538 E F1 .038(\(1\) include \214les that ha)B
-.338 -.15(ve i)-.2 H .038(nformation common to all con\214gu-).15 F
-(ration \214les.)174 108 Q
-(This can be thought of as a \231#include\232 directory)5 E(.)-.65 E 43.95
-(mailer De\214nitions)102 124.2 R .152(of mailers, referenced using the)2.653 F
-/F3 9/Times-Roman@0 SF(MAILER)2.652 E F0(m4)2.652 E F1 2.652(macro. The)2.652 F
-.152(mailer types)2.652 F 1.786(that are kno)174 136.2 R 1.787
-(wn in this distrib)-.25 F 1.787(ution are f)-.2 F 1.787
-(ax, local, smtp, uucp, and usenet.)-.1 F -.15(Fo)6.787 G(r).15 E -.15(ex)174
-148.2 S(ample, to include support for the UUCP-based mailers, use \231MAILER\(\
-uucp\)\232.).15 E 43.39(ostype De\214nitions)102 164.4 R 1.157(describing v)
-3.657 F 1.157(arious operating system en)-.25 F 1.156
-(vironments \(such as the loca-)-.4 F(tion of support \214les\).)174 176.4 Q
-(These are referenced using the)5 E F3(OSTYPE)2.5 E F0(m4)2.5 E F1(macro.)2.5 E
-60.61(sh Shell)102 192.6 R(\214les used by the)2.5 E F0(m4)2.5 E F1 -.2(bu)2.5
-G(ild process.).2 E -1.1(Yo)5 G 2.5(us)1.1 G(houldn')362.97 192.6 Q 2.5(th)-.18
-G -2.25 -.2(av e)404.18 192.6 T(to mess with these.)2.7 E 30.61
-(sitecon\214g Local)102 208.8 R .49
-(site con\214guration information, such as UUCP connecti)2.99 F(vity)-.25 E
-5.49(.T)-.65 G(he)450.61 208.8 Q 2.99(yn)-.15 G(ormally)472.89 208.8 Q
-(contain lists of site information, for e)174 220.8 Q(xample:)-.15 E
-(SITE\(contessa\))214 237 Q(SITE\(hoptoad\))214 249 Q(SITE\(nkainc\))214 261 Q
-(SITE\(well\))214 273 Q(The)174 289.2 Q 2.5(ya)-.15 G
-(re referenced using the SITECONFIG macro:)201.34 289.2 Q
-(SITECONFIG\(site.con\214g.\214le, name_of_site, X\))214 305.4 Q(where)174
-321.6 Q F2(X)2.704 E F1 .204(is the macro/class name to use.)2.704 F .203
-(It can be U \(indicating locally connected)5.204 F(hosts\) or one of W)174
-333.6 Q 2.5(,X)-.92 G 2.5(,o)259.73 333.6 S 2.5(rYf)269.73 333.6 S
-(or up to three remote UUCP hubs.)288.61 333.6 Q .756(If you are in a ne)127
-349.8 R 3.256(wd)-.25 G .756(omain \(e.g., a compan)214.036 349.8 R .757
-(y\), you will probably w)-.15 F .757(ant to create a cf/domain)-.1 F .871
-(\214le for your domain.)102 361.8 R .871
-(This consists primarily of relay de\214nitions: for e)5.871 F .87
-(xample, Berk)-.15 F(ele)-.1 E(y')-.15 E 3.37(sd)-.55 G(omain)479 361.8 Q .16
-(de\214nition de\214nes relays for BitNET)102 373.8 R 2.66(,C)-.74 G(SNET)
-257.61 373.8 Q 2.66(,a)-.74 G .16(nd UUCP)291.47 373.8 R 5.16(.O)-1.11 G 2.66
-(ft)344.57 373.8 S .16(hese, only the UUCP relay is particu-)353.34 373.8 R .46
-(larly speci\214c to Berk)102 385.8 R(ele)-.1 E 4.26 -.65(y. A)-.15 H .46
-(ll of these are internet-style domain names.).65 F .46(Please check to mak)
-5.46 F 2.96(ec)-.1 G(er)493.1 385.8 Q(-)-.2 E(tain the)102 397.8 Q 2.5(ya)-.15
-G(re reasonable for your domain.)143.51 397.8 Q 1.406(Subdomains at Berk)127
-414 R(ele)-.1 E 3.906(ya)-.15 G 1.407
-(re also represented in the cf/domain directory)235.678 414 R 6.407(.F)-.65 G
-1.407(or e)439.406 414 R 1.407(xample, the)-.15 F 1.491(domain cs-e)102 426 R
-1.491(xposed is the Computer Science subdomain with the local hostname sho)-.15
-F 1.49(wn to other)-.25 F 1.41(users; cs-hidden mak)102 438 R 1.411
-(es users appear to be from the CS.Berk)-.1 F(ele)-.1 E -.65(y.)-.15 G 1.411
-(EDU subdomain \(with no local).65 F 1.084(host information included\).)102 450
-R -1.1(Yo)6.084 G 3.584(uw)1.1 G 1.084(ill probably ha)246.336 450 R 1.384 -.15
-(ve t)-.2 H 3.584(ou).15 G 1.083(pdate this directory to be appropriate for)
-335.872 450 R(your domain.)102 462 Q -1.1(Yo)127 478.2 S 4.372(uw)1.1 G 1.872
-(ill ha)154.712 478.2 R 2.172 -.15(ve t)-.2 H 4.372(ou).15 G 1.872
-(se or create)207.478 478.2 R F0(.mc)4.372 E F1 1.872(\214les in the)4.372 F F2
-(cf/cf)4.372 E F1 1.873(subdirectory for your hosts.)4.373 F 1.873(This is)
-6.873 F(detailed in the cf/README \214le.)102 490.2 Q F0 2.5(1.3. Details)87
-514.2 R(of Installation Files)2.5 E F1
-(This subsection describes the \214les that comprise the)127 530.4 Q F2
-(sendmail)2.5 E F1(installation.)2.5 E F0 2.5(1.3.1. /usr/sbin/sendmail)102
-554.4 R F1 .079(The binary for)142 572.6 R F2(sendmail)2.579 E F1 .079
-(is located in /usr/sbin)2.579 F/F4 7/Times-Roman@0 SF(1)326.703 568.6 Q F1
-5.079(.I)330.203 572.6 S 2.579(ts)341.112 572.6 S .08(hould be setuid root.)
-350.361 572.6 R -.15(Fo)5.08 G 2.58(rs).15 G .08(ecurity rea-)458.11 572.6 R
-(sons, /, /usr)117 586.6 Q 2.5(,a)-.4 G(nd /usr/sbin should be o)171.6 586.6 Q
-(wned by root, mode 755)-.25 E F4(2)364.4 582.6 Q F1(.)367.9 586.6 Q F0 2.5
-(1.3.2. /etc/sendmail.cf)102 610.6 R F1 .699
-(This is the con\214guration \214le for)142 628.8 R F2(sendmail)3.199 E F4(3)
-311.744 624.8 Q F1 5.698(.T)315.244 628.8 S .698
-(his and /etc/sendmail.pid are the only non-)329.552 628.8 R .32 LW 76 638.4 72
-638.4 DL 80 638.4 76 638.4 DL 84 638.4 80 638.4 DL 88 638.4 84 638.4 DL 92
-638.4 88 638.4 DL 96 638.4 92 638.4 DL 100 638.4 96 638.4 DL 104 638.4 100
-638.4 DL 108 638.4 104 638.4 DL 112 638.4 108 638.4 DL 116 638.4 112 638.4 DL
-120 638.4 116 638.4 DL 124 638.4 120 638.4 DL 128 638.4 124 638.4 DL 132 638.4
-128 638.4 DL 136 638.4 132 638.4 DL 140 638.4 136 638.4 DL 144 638.4 140 638.4
-DL 148 638.4 144 638.4 DL 152 638.4 148 638.4 DL 156 638.4 152 638.4 DL 160
-638.4 156 638.4 DL 164 638.4 160 638.4 DL 168 638.4 164 638.4 DL 172 638.4 168
-638.4 DL 176 638.4 172 638.4 DL 180 638.4 176 638.4 DL 184 638.4 180 638.4 DL
-188 638.4 184 638.4 DL 192 638.4 188 638.4 DL 196 638.4 192 638.4 DL 200 638.4
-196 638.4 DL 204 638.4 200 638.4 DL 208 638.4 204 638.4 DL 212 638.4 208 638.4
-DL 216 638.4 212 638.4 DL/F5 5/Times-Roman@0 SF(1)93.6 648.8 Q/F6 8
-/Times-Roman@0 SF .385(This is usually /usr/sbin on 4.4BSD and ne)3.2 J .385
-(wer systems; man)-.2 F 2.385(ys)-.12 G .385(ystems install it in /usr/lib)
-302.966 652 R 4.384(.I)-.32 G .384(understand it is in /usr/ucblib on)398.744
-652 R(System V Release 4.)72 661.6 Q F5(2)93.6 672 Q F6 .15(Some v)3.2 J .15
-(endors ship them o)-.12 F .15
-(wned by bin; this creates a security hole that is not actually related to)-.2
-F/F7 8/Times-Italic@0 SF(sendmail)2.15 E F6 4.15(.O)C .149(ther important di-)
-447.262 675.2 R(rectories that should ha)72 684.8 Q .24 -.12(ve r)-.16 H
-(estricti).12 E .24 -.12(ve o)-.2 H(wnerships and permissions are /bin, /usr/b\
-in, /etc, /usr/etc, /lib, and /usr/lib)-.08 E(.)-.32 E F5(3)93.6 695.2 Q F6
-(Actually)3.2 I 2.276(,t)-.52 G .276(he pathname v)129.632 698.4 R .276
-(aries depending on the operating system; /etc is the preferred directory)-.2 F
-4.276(.S)-.52 G .277(ome older systems install it)415.332 698.4 R(in)72 708 Q
-/F8 8/Times-Bold@0 SF(/usr/lib/sendmail.cf)2 E F6 2(,a)C(nd I')153.344 708 Q
-.24 -.12(ve a)-.4 H(lso seen it in).12 E F8(/usr/ucblib)2 E F6(and)2 E F8
-(/etc/mail)2 E F6 4(.I)C 2(fy)313.928 708 S(ou w)322.592 708 Q(ant to mo)-.08 E
-.24 -.12(ve t)-.12 H(his \214le, change).12 E F7(sr)2 E(c/conf)-.296 E(.h)-.12
-E F6(.)A EP
-%%Page: 10 5
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-10 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
-(library \214le names compiled into)117 98 Q/F2 10/Times-Italic@0 SF(sendmail)
-2.5 E/F3 7/Times-Roman@0 SF(4)283.38 94 Q F1(.)286.88 98 Q .721
-(The con\214guration \214le is normally created using the distrib)142 114.2 R
-.721(ution \214les described abo)-.2 F -.15(ve)-.15 G 5.72(.I).15 G(f)500.67
-114.2 Q .64(you ha)117 126.2 R .94 -.15(ve a p)-.2 H .64
-(articularly unusual system con\214guration you may need to create a special v)
-.15 F(ersion.)-.15 E
-(The format of this \214le is detailed in later sections of this document.)117
-138.2 Q F0 2.5(1.3.3. /usr/bin/newaliases)102 162.2 R F1(The)142 178.4 Q F2(ne)
-2.5 E(waliases)-.15 E F1(command should just be a link to)2.5 E F2(sendmail)2.5
-E F1(:)A(rm \255f /usr/bin/ne)157 194.6 Q -.1(wa)-.25 G(liases).1 E
-(ln \255s /usr/sbin/sendmail /usr/bin/ne)157 206.6 Q -.1(wa)-.25 G(liases).1 E
-(This can be installed in whate)117 222.8 Q -.15(ve)-.25 G 2.5(rs).15 G
-(earch path you prefer for your system.)254.91 222.8 Q F0 2.5(1.3.4. /v)102
-246.8 R(ar/spool/mqueue)-.1 E F1 .218(The directory)142 263 R F2
-(/var/spool/mqueue)2.718 E F1 .217(should be created to hold the mail queue.)
-2.718 F .217(This directory)5.217 F(should be mode 700 and o)117 275 Q
-(wned by root.)-.25 E(The actual path of this directory is de\214ned in the)142
-291.2 Q F0(Q)2.5 E F1(option of the)2.5 E F2(sendmail.cf)2.5 E F1(\214le.)2.5 E
-F0 2.5(1.3.5. /etc/aliases*)102 315.2 R F1 1.492
-(The system aliases are held in \231/etc/aliases\232.)142 331.4 R 3.992(As)
-6.492 G 1.492(ample is gi)350.006 331.4 R -.15(ve)-.25 G 3.993(ni).15 G 3.993
-<6e99>417.694 331.4 S 1.493(lib/aliases\232 which)431.127 331.4 R
-(includes some aliases which)117 343.4 Q F2(must)2.5 E F1(be de\214ned:)2.5 E
-(cp lib/aliases /etc/aliases)157 359.6 Q F2(edit /etc/aliases)157 371.6 Q F1
--1.1(Yo)117 387.8 S 2.5(us)1.1 G(hould e)139.51 387.8 Q
-(xtend this \214le with an)-.15 E 2.5(ya)-.15 G
-(liases that are apropos to your system.)267.54 387.8 Q(Normally)142 404 Q F2
-(sendmail)3.61 E F1 1.109(looks at a v)3.61 F 1.109
-(ersion of these \214les maintained by the)-.15 F F2(dbm)3.609 E F1 1.109
-(\(3\) or)1.666 F F2(db)3.609 E F1(\(3\))1.666 E 3.46(routines. These)117 416 R
-.96(are stored either in \231/etc/aliases.dir\232 and \231/etc/aliases.pag\232\
- or \231/etc/aliases.db\232)3.46 F 1.022
-(depending on which database package you are using.)117 428 R 1.022
-(These can initially be created as empty)6.022 F(\214les, b)117 440 Q(ut the)
--.2 E 2.5(yw)-.15 G(ill ha)180.54 440 Q .3 -.15(ve t)-.2 H 2.5(ob).15 G 2.5(ei)
-227.69 440 S(nitialized promptly)237.41 440 Q 5(.T)-.65 G
-(hese should be mode 644:)326.76 440 Q(cp /de)157 456.2 Q
-(v/null /etc/aliases.dir)-.25 E(cp /de)157 468.2 Q(v/null /etc/aliases.pag)-.25
-E(chmod 644 /etc/aliases.*)157 480.2 Q(ne)157 492.2 Q -.1(wa)-.25 G(liases).1 E
-(The)117 508.4 Q F2(db)2.79 E F1 .29(routines preset the mode reasonably)2.79 F
-2.79(,s)-.65 G 2.79(ot)301.68 508.4 S .29(his step can be skipped.)312.25 508.4
-R .29(The actual path of this)5.29 F(\214le is de\214ned in the)117 520.4 Q F0
-(A)2.5 E F1(option of the)2.5 E F2(sendmail.cf)2.5 E F1(\214le.)2.5 E F0 2.5
-(1.3.6. /etc/r)102 544.4 R(c)-.18 E F1 .156
-(It will be necessary to start up the)142 560.6 R F2(sendmail)2.655 E F1 .155
-(daemon when your system reboots.)2.655 F .155(This dae-)5.155 F 1.537
-(mon performs tw)117 572.6 R 4.037(of)-.1 G 1.537
-(unctions: it listens on the SMTP sock)201.221 572.6 R 1.537
-(et for connections \(to recei)-.1 F 1.838 -.15(ve m)-.25 H(ail).15 E .442(fro\
-m a remote system\) and it processes the queue periodically to insure that mai\
-l gets deli)117 584.6 R -.15(ve)-.25 G(red).15 E(when hosts come up.)117 596.6
-Q .505(Add the follo)142 612.8 R .505(wing lines to \231/etc/rc\232 \(or \231/\
-etc/rc.local\232 as appropriate\) in the area where it)-.25 F
-(is starting up the daemons:)117 624.8 Q .32 LW 76 669.2 72 669.2 DL 80 669.2
-76 669.2 DL 84 669.2 80 669.2 DL 88 669.2 84 669.2 DL 92 669.2 88 669.2 DL 96
-669.2 92 669.2 DL 100 669.2 96 669.2 DL 104 669.2 100 669.2 DL 108 669.2 104
-669.2 DL 112 669.2 108 669.2 DL 116 669.2 112 669.2 DL 120 669.2 116 669.2 DL
-124 669.2 120 669.2 DL 128 669.2 124 669.2 DL 132 669.2 128 669.2 DL 136 669.2
-132 669.2 DL 140 669.2 136 669.2 DL 144 669.2 140 669.2 DL 148 669.2 144 669.2
-DL 152 669.2 148 669.2 DL 156 669.2 152 669.2 DL 160 669.2 156 669.2 DL 164
-669.2 160 669.2 DL 168 669.2 164 669.2 DL 172 669.2 168 669.2 DL 176 669.2 172
-669.2 DL 180 669.2 176 669.2 DL 184 669.2 180 669.2 DL 188 669.2 184 669.2 DL
-192 669.2 188 669.2 DL 196 669.2 192 669.2 DL 200 669.2 196 669.2 DL 204 669.2
-200 669.2 DL 208 669.2 204 669.2 DL 212 669.2 208 669.2 DL 216 669.2 212 669.2
-DL/F4 5/Times-Roman@0 SF(4)93.6 679.6 Q/F5 8/Times-Roman@0 SF .588
-(The system libraries can reference other \214les; in particular)3.2 J 2.589
-(,s)-.32 G .589(ystem library subroutines that)294.805 682.8 R/F6 8
-/Times-Italic@0 SF(sendmail)2.589 E F5 .589(calls probably reference)2.589 F F6
-(/etc/passwd)72 692.4 Q F5(and)2 E F6(/etc/r)2 E(esolv)-.296 E(.conf)-.592 E F5
-(.)A EP
-%%Page: 11 6
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-11)452.9 60 Q/F1 10/Times-Roman@0 SF
-(if [ \255f /usr/sbin/sendmail \255a \255f /etc/sendmail.cf ]; then)157 96 Q
-(\(cd /v)193 108 Q(ar/spool/mqueue; rm \255f [lnx]f*\))-.25 E
-(/usr/sbin/sendmail \255bd \255q30m &)193 120 Q(echo \255n ' sendmail' >/de)193
-132 Q(v/console)-.25 E<8c>157 144 Q .174
-(The \231cd\232 and \231rm\232 commands insure that all lock \214les ha)117
-160.2 R .473 -.15(ve b)-.2 H .173(een remo).15 F -.15(ve)-.15 G .173(d; e).15 F
-.173(xtraneous lock \214les)-.15 F .004
-(may be left around if the system goes do)117 172.2 R .005
-(wn in the middle of processing a message.)-.25 F .005(The line that)5.005 F
-2.294(actually in)117 184.2 R -.2(vo)-.4 G -.1(ke).2 G(s).1 E/F2 10
-/Times-Italic@0 SF(sendmail)4.794 E F1 2.294(has tw)4.794 F 4.794<6f8d>-.1 G
-2.293(ags: \231\255bd\232 causes it to listen on the SMTP port, and)272.94
-184.2 R(\231\255q30m\232 causes it to run the queue e)117 196.2 Q -.15(ve)-.25
-G(ry half hour).15 E(.)-.55 E .378(Some people use a more comple)142 212.4 R
-2.879(xs)-.15 G .379(tartup script, remo)285.209 212.4 R .379
-(ving zero length qf \214les and df \214les)-.15 F 1.121
-(for which there is no qf \214le.)117 224.4 R -.15(Fo)6.121 G 3.621(re).15 G
-1.12(xample, see Figure 1 for an e)262.868 224.4 R 1.12(xample of a comple)-.15
-F 3.62(xs)-.15 G(tartup)480.67 224.4 Q(script.)117 236.4 Q .755
-(If you are not running a v)142 252.6 R .755(ersion of UNIX that supports Berk)
--.15 F(ele)-.1 E 3.256(yT)-.15 G(CP/IP)416.722 252.6 Q 3.256(,d)-1.11 G 3.256
-(on)450.268 252.6 S .756(ot include)463.524 252.6 R(the)117 264.6 Q F0(\255bd)
-2.5 E F1(\215ag.)2.5 E F0 2.5(1.3.7. /usr/lib/sendmail.hf)102 288.6 R F1 2.078
-(This is the help \214le used by the SMTP)142 304.8 R F0(HELP)4.578 E F1 4.578
-(command. It)4.578 F 2.078(should be copied from)4.578 F
-(\231lib/sendmail.hf\232:)117 316.8 Q(cp lib/sendmail.hf /usr/lib)157 333 Q
-(The actual path of this \214le is de\214ned in the)117 349.2 Q F0(H)2.5 E F1
-(option of the)2.5 E F2(sendmail.cf)2.5 E F1(\214le.)2.5 E F0 2.5
-(1.3.8. /etc/sendmail.st)102 373.2 R F1 3.04
-(If you wish to collect statistics about your mail traf)142 389.4 R 3.04
-(\214c, you should create the \214le)-.25 F(\231/etc/sendmail.st\232:)117 401.4
-Q(cp /de)157 417.6 Q(v/null /etc/sendmail.st)-.25 E(chmod 666 /etc/sendmail.st)
-157 429.6 Q .716(This \214le does not gro)117 445.8 R 4.516 -.65(w. I)-.25 H
-3.216(ti).65 G 3.216(sp)231.506 445.8 S .716
-(rinted with the program \231mailstats/mailstats.c.)243.612 445.8 R 5.715<9a54>
--.7 G .715(he actual path)447.03 445.8 R(of this \214le is de\214ned in the)117
-457.8 Q F0(S)2.5 E F1(option of the)2.5 E F2(sendmail.cf)2.5 E F1(\214le.)2.5 E
-F0 2.5(1.3.9. /usr/bin/mailq)102 481.8 R F1(If)142 498 Q F2(sendmail)3.439 E F1
-.939(is in)3.439 F -.2(vo)-.4 G -.1(ke).2 G 3.439(da).1 G 3.439<7399>241.156
-498 S(mailq,)252.925 498 Q 3.439<9a69>-.7 G 3.439(tw)288.164 498 S .939
-(ill simulate the)301.603 498 R F0(\255bp)3.439 E F1 .94(\215ag \(i.e.,)3.44 F
-F2(sendmail)3.44 E F1 .94(will print)3.44 F
-(the contents of the mail queue; see belo)117 510 Q 2.5(w\). This)-.25 F
-(should be a link to /usr/sbin/sendmail.)2.5 E F0 2.5(2. NORMAL)72 534 R(OPERA)
-2.5 E(TIONS)-.95 E 2.5(2.1. The)87 558 R(System Log)2.5 E F1 1.511
-(The system log is supported by the)127 574.2 R F2(syslo)4.011 E(gd)-.1 E F1
-1.511(\(8\) program.)1.666 F 1.511(All messages from)6.511 F F2(sendmail)4.011
-E F1(are)4.011 E(logged under the)102 588.2 Q/F3 9/Times-Roman@0 SF(LOG_MAIL)
-2.5 E F1 -.1(fa)2.5 G(cility).1 E/F4 7/Times-Roman@0 SF(5)248.43 584.2 Q F1(.)
-251.93 588.2 Q F0 2.5(2.1.1. F)102 612.2 R(ormat)-.25 E F1 .574(Each line in t\
-he system log consists of a timestamp, the name of the machine that gener)142
-628.4 R(-)-.2 E .849(ated it \(for logging from se)117 640.4 R -.15(ve)-.25 G
-.849(ral machines o).15 F -.15(ve)-.15 G 3.349(rt).15 G .848
-(he local area netw)316.942 640.4 R .848(ork\), the w)-.1 F .848
-(ord \231sendmail:\232,)-.1 F(and a message)117 654.4 Q F4(6)174.76 650.4 Q F1
-5(.M)178.26 654.4 S(ost messages are a sequence of)194.65 654.4 Q F2(name)2.5 E
-F1(=)A F2(value)A F1(pairs.)2.5 E .32 LW 76 665.2 72 665.2 DL 80 665.2 76 665.2
-DL 84 665.2 80 665.2 DL 88 665.2 84 665.2 DL 92 665.2 88 665.2 DL 96 665.2 92
-665.2 DL 100 665.2 96 665.2 DL 104 665.2 100 665.2 DL 108 665.2 104 665.2 DL
-112 665.2 108 665.2 DL 116 665.2 112 665.2 DL 120 665.2 116 665.2 DL 124 665.2
-120 665.2 DL 128 665.2 124 665.2 DL 132 665.2 128 665.2 DL 136 665.2 132 665.2
-DL 140 665.2 136 665.2 DL 144 665.2 140 665.2 DL 148 665.2 144 665.2 DL 152
-665.2 148 665.2 DL 156 665.2 152 665.2 DL 160 665.2 156 665.2 DL 164 665.2 160
-665.2 DL 168 665.2 164 665.2 DL 172 665.2 168 665.2 DL 176 665.2 172 665.2 DL
-180 665.2 176 665.2 DL 184 665.2 180 665.2 DL 188 665.2 184 665.2 DL 192 665.2
-188 665.2 DL 196 665.2 192 665.2 DL 200 665.2 196 665.2 DL 204 665.2 200 665.2
-DL 208 665.2 204 665.2 DL 212 665.2 208 665.2 DL 216 665.2 212 665.2 DL/F5 5
-/Times-Roman@0 SF(5)93.6 675.6 Q/F6 8/Times-Roman@0 SF
-(Except on Ultrix, which does not support f)3.2 I(acilities in the syslog.)-.08
-E F5(6)93.6 689.2 Q F6(This format may v)3.2 I(ary slightly if your v)-.2 E
-(endor has changed the syntax.)-.12 E EP
-%%Page: 12 7
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-12 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E .4 LW 77 108 72 108 DL 79 108 74 108 DL
-84 108 79 108 DL 89 108 84 108 DL 94 108 89 108 DL 99 108 94 108 DL 104 108 99
-108 DL 109 108 104 108 DL 114 108 109 108 DL 119 108 114 108 DL 124 108 119 108
-DL 129 108 124 108 DL 134 108 129 108 DL 139 108 134 108 DL 144 108 139 108 DL
-149 108 144 108 DL 154 108 149 108 DL 159 108 154 108 DL 164 108 159 108 DL 169
-108 164 108 DL 174 108 169 108 DL 179 108 174 108 DL 184 108 179 108 DL 189 108
-184 108 DL 194 108 189 108 DL 199 108 194 108 DL 204 108 199 108 DL 209 108 204
-108 DL 214 108 209 108 DL 219 108 214 108 DL 224 108 219 108 DL 229 108 224 108
-DL 234 108 229 108 DL 239 108 234 108 DL 244 108 239 108 DL 249 108 244 108 DL
-254 108 249 108 DL 259 108 254 108 DL 264 108 259 108 DL 269 108 264 108 DL 274
-108 269 108 DL 279 108 274 108 DL 284 108 279 108 DL 289 108 284 108 DL 294 108
-289 108 DL 299 108 294 108 DL 304 108 299 108 DL 309 108 304 108 DL 314 108 309
-108 DL 319 108 314 108 DL 324 108 319 108 DL 329 108 324 108 DL 334 108 329 108
-DL 339 108 334 108 DL 344 108 339 108 DL 349 108 344 108 DL 354 108 349 108 DL
-359 108 354 108 DL 364 108 359 108 DL 369 108 364 108 DL 374 108 369 108 DL 379
-108 374 108 DL 384 108 379 108 DL 389 108 384 108 DL 394 108 389 108 DL 399 108
-394 108 DL 404 108 399 108 DL 409 108 404 108 DL 414 108 409 108 DL 419 108 414
-108 DL 424 108 419 108 DL 429 108 424 108 DL 434 108 429 108 DL 439 108 434 108
-DL 444 108 439 108 DL 449 108 444 108 DL 454 108 449 108 DL 459 108 454 108 DL
-464 108 459 108 DL 469 108 464 108 DL 474 108 469 108 DL 479 108 474 108 DL 484
-108 479 108 DL 489 108 484 108 DL 494 108 489 108 DL 499 108 494 108 DL 504 108
-499 108 DL/F1 10/Times-Roman@0 SF 2.5(#r)72 132 S(emo)82.83 132 Q .3 -.15(ve z)
--.15 H(ero length qf \214les).15 E(for qf)72 144 Q(\214le in qf*)-.25 E(do)72
-156 Q(if [ \255r $qf)108 168 Q(\214le ])-.25 E(then)108 180 Q(if [ ! \255s $qf)
-144 192 Q(\214le ])-.25 E(then)144 204 Q(echo \255n " <zero: $qf)180 216 Q
-(\214le>" > /de)-.25 E(v/console)-.25 E(rm \255f $qf)180 228 Q(\214le)-.25 E
-<8c>144 240 Q<8c>108 252 Q(done)72 264 Q 2.5(#r)72 276 S
-(ename tf \214les to be qf if the qf does not e)82.83 276 Q(xist)-.15 E(for tf)
-72 288 Q(\214le in tf*)-.25 E(do)72 300 Q(qf)108 312 Q(\214le=`echo $tf)-.25 E
-(\214le | sed ')-.25 E(s/t/q/'`)-.55 E(if [ \255r $tf)108 324 Q
-(\214le \255a ! \255f $qf)-.25 E(\214le ])-.25 E(then)108 336 Q
-(echo \255n " <reco)144 348 Q -.15(ve)-.15 G(ring: $tf).15 E(\214le>" > /de)
--.25 E(v/console)-.25 E(mv $tf)144 360 Q(\214le $qf)-.25 E(\214le)-.25 E(else)
-108 372 Q(echo \255n " <e)144 384 Q(xtra: $tf)-.15 E(\214le>" > /de)-.25 E
-(v/console)-.25 E(rm \255f $tf)144 396 Q(\214le)-.25 E<8c>108 408 Q(done)72 420
-Q 2.5(#r)72 432 S(emo)82.83 432 Q .3 -.15(ve d)-.15 H 2.5<668c>.15 G
-(les with no corresponding qf \214les)128.08 432 Q(for df)72 444 Q
-(\214le in df*)-.25 E(do)72 456 Q(qf)108 468 Q(\214le=`echo $df)-.25 E
-(\214le | sed ')-.25 E(s/d/q/'`)-.55 E(if [ \255r $df)108 480 Q
-(\214le \255a ! \255f $qf)-.25 E(\214le ])-.25 E(then)108 492 Q
-(echo \255n " <incomplete: $df)144 504 Q(\214le>" > /de)-.25 E(v/console)-.25 E
-(mv $df)144 516 Q(\214le `echo $df)-.25 E(\214le | sed ')-.25 E(s/d/D/'`)-.55 E
-<8c>108 528 Q(done)72 540 Q 2.5(#a)72 552 S(nnounce \214les that ha)83.94 552 Q
-.3 -.15(ve b)-.2 H(een sa).15 E -.15(ve)-.2 G 2.5(dd).15 G(uring disaster reco)
-229.32 552 Q -.15(ve)-.15 G(ry).15 E(for xf)72 564 Q(\214le in [A-Z]f*)-.25 E
-(do)72 576 Q(echo \255n " <panic: $xf)108 588 Q(\214le>" > /de)-.25 E
-(v/console)-.25 E(done)72 600 Q(Figure 1 \212 A comple)214.47 624 Q 2.5(xs)-.15
-G(tartup script)313.48 624 Q 77 636 72 636 DL 79 636 74 636 DL 84 636 79 636 DL
-89 636 84 636 DL 94 636 89 636 DL 99 636 94 636 DL 104 636 99 636 DL 109 636
-104 636 DL 114 636 109 636 DL 119 636 114 636 DL 124 636 119 636 DL 129 636 124
-636 DL 134 636 129 636 DL 139 636 134 636 DL 144 636 139 636 DL 149 636 144 636
-DL 154 636 149 636 DL 159 636 154 636 DL 164 636 159 636 DL 169 636 164 636 DL
-174 636 169 636 DL 179 636 174 636 DL 184 636 179 636 DL 189 636 184 636 DL 194
-636 189 636 DL 199 636 194 636 DL 204 636 199 636 DL 209 636 204 636 DL 214 636
-209 636 DL 219 636 214 636 DL 224 636 219 636 DL 229 636 224 636 DL 234 636 229
-636 DL 239 636 234 636 DL 244 636 239 636 DL 249 636 244 636 DL 254 636 249 636
-DL 259 636 254 636 DL 264 636 259 636 DL 269 636 264 636 DL 274 636 269 636 DL
-279 636 274 636 DL 284 636 279 636 DL 289 636 284 636 DL 294 636 289 636 DL 299
-636 294 636 DL 304 636 299 636 DL 309 636 304 636 DL 314 636 309 636 DL 319 636
-314 636 DL 324 636 319 636 DL 329 636 324 636 DL 334 636 329 636 DL 339 636 334
-636 DL 344 636 339 636 DL 349 636 344 636 DL 354 636 349 636 DL 359 636 354 636
-DL 364 636 359 636 DL 369 636 364 636 DL 374 636 369 636 DL 379 636 374 636 DL
-384 636 379 636 DL 389 636 384 636 DL 394 636 389 636 DL 399 636 394 636 DL 404
-636 399 636 DL 409 636 404 636 DL 414 636 409 636 DL 419 636 414 636 DL 424 636
-419 636 DL 429 636 424 636 DL 434 636 429 636 DL 439 636 434 636 DL 444 636 439
-636 DL 449 636 444 636 DL 454 636 449 636 DL 459 636 454 636 DL 464 636 459 636
-DL 469 636 464 636 DL 474 636 469 636 DL 479 636 474 636 DL 484 636 479 636 DL
-489 636 484 636 DL 494 636 489 636 DL 499 636 494 636 DL 504 636 499 636 DL .68
-(The tw)142 672 R 3.18(om)-.1 G .68
-(ost common lines are logged when a message is processed.)186.59 672 R .68
-(The \214rst logs the)5.68 F .376(receipt of a message; there will be e)117 684
-R .376(xactly one of these per message.)-.15 F .376(Some \214elds may be omit-)
-5.376 F(ted if the)117 696 Q 2.5(yd)-.15 G 2.5(on)164.9 696 S
-(ot contain interesting information.)177.4 696 Q(Fields are:)5 E 50.06
-(from The)117 712.2 R(en)2.5 E -.15(ve)-.4 G(lope sender address.).15 E EP
-%%Page: 13 8
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-13)452.9 60 Q/F1 10/Times-Roman@0 SF 53.95(size The)117 96 R
-(size of the message in bytes.)2.5 E 50.06(class The)117 112.2 R
-(class \(i.e., numeric precedence\) of the message.)2.5 E 58.39(pri The)117
-128.4 R(initial message priority \(used for queue sorting\).)2.5 E 45.06
-(nrcpts The)117 144.6 R 1.514(number of en)4.014 F -.15(ve)-.4 G 1.515
-(lope recipients for this message \(after aliasing and for).15 F(-)-.2 E -.1
-(wa)189 156.6 S(rding\).).1 E 45.05(msgid The)117 172.8 R
-(message id of the message \(from the header\).)2.5 E 48.39(proto The)117 189 R
-(protocol used to recei)2.5 E .3 -.15(ve t)-.25 H
-(his message \(e.g., ESMTP or UUCP\)).15 E 49.51(relay The)117 205.2 R
-(machine from which it w)2.5 E(as recei)-.1 E -.15(ve)-.25 G(d.).15 E .43
-(There is also one line logged per deli)117 221.4 R -.15(ve)-.25 G .43
-(ry attempt \(so there can be se).15 F -.15(ve)-.25 G .43
-(ral per message if deli).15 F(v-)-.25 E
-(ery is deferred or there are multiple recipients\).)117 233.4 Q(Fields are:)5
-E 61.72(to A)117 249.6 R(comma-separated list of the recipients to this mailer)
-2.5 E(.)-.55 E 41.73(ctladdr The)117 265.8 R -.74(``)2.726 G .226
-(controlling user').74 F .226
-(', that is, the name of the user whose credentials we use)-.74 F(for deli)189
-277.8 Q -.15(ve)-.25 G(ry).15 E(.)-.65 E 47.84(delay The)117 294 R 1.303
-(total delay between the time this message w)3.804 F 1.303(as recei)-.1 F -.15
-(ve)-.25 G 3.803(da).15 G 1.303(nd the time it)447.031 294 R -.1(wa)189 306 S
-2.5(sd).1 G(eli)211.95 306 Q -.15(ve)-.25 G(red.).15 E 42.84(xdelay The)117
-322.2 R .116(amount of time needed in this deli)2.615 F -.15(ve)-.25 G .116
-(ry attempt \(normally indicati).15 F .416 -.15(ve o)-.25 H 2.616(ft).15 G(he)
-494.56 322.2 Q(speed of the connection\).)189 334.2 Q 43.95(mailer The)117
-350.4 R(name of the mailer used to deli)2.5 E -.15(ve)-.25 G 2.5(rt).15 G 2.5
-(ot)348.57 350.4 S(his recipient.)358.85 350.4 Q 49.51(relay The)117 366.6 R
-(name of the host that actually accepted \(or rejected\) this recipient.)2.5 E
-55.61(stat The)117 382.8 R(deli)2.5 E -.15(ve)-.25 G(ry status.).15 E
-(Not all \214elds are present in all messages; for e)117 399 Q
-(xample, the relay is not listed for local deli)-.15 E -.15(ve)-.25 G(ries.).15
-E F0 2.5(2.1.2. Le)102 423 R -.1(ve)-.15 G(ls).1 E F1 .205(If you ha)142 439.2
-R -.15(ve)-.2 G/F2 10/Times-Italic@0 SF(syslo)2.855 E(gd)-.1 E F1 .205
-(\(8\) or an equi)1.666 F -.25(va)-.25 G .205
-(lent installed, you will be able to do logging.).25 F .204(There is)5.204 F
-2.787(al)117 451.2 S(ar)127.007 451.2 Q .287
-(ge amount of information that can be logged.)-.18 F .287
-(The log is arranged as a succession of le)5.287 F -.15(ve)-.25 G(ls.).15 E
-.651(At the lo)117 463.2 R .651(west le)-.25 F -.15(ve)-.25 G 3.151(lo).15 G
-.651(nly e)201.724 463.2 R .651(xtremely strange situations are logged.)-.15 F
-.65(At the highest le)5.651 F -.15(ve)-.25 G .65(l, e).15 F -.15(ve)-.25 G 3.15
-(nt).15 G(he)494.56 463.2 Q .825(most mundane and uninteresting e)117 475.2 R
--.15(ve)-.25 G .825(nts are recorded for posterity).15 F 5.826(.A)-.65 G 3.326
-(sac)400.266 475.2 S(on)419.688 475.2 Q -.15(ve)-.4 G .826(ntion, log le).15 F
--.15(ve)-.25 G(ls).15 E .201
-(under ten are considered generally \231useful;\232 log le)117 487.2 R -.15(ve)
--.25 G .201(ls abo).15 F .501 -.15(ve 6)-.15 H 2.701(4a).15 G .2(re reserv)
-381.57 487.2 R .2(ed for deb)-.15 F .2(ugging pur)-.2 F(-)-.2 E 2.5(poses. Le)
-117 499.2 R -.15(ve)-.25 G(ls from 11\25564 are reserv).15 E(ed for v)-.15 E
-(erbose information that some sites might w)-.15 E(ant.)-.1 E 2.5(Ac)142 515.4
-S(omplete description of the log le)156.16 515.4 Q -.15(ve)-.25 G(ls is gi).15
-E -.15(ve)-.25 G 2.5(ni).15 G 2.5(ns)340.35 515.4 S(ection 4.6.)351.74 515.4 Q
-F0 2.5(2.2. Dumping)87 539.4 R(State)2.5 E F1 -1.1(Yo)127 555.6 S 2.563(uc)1.1
-G .063(an ask)150.123 555.6 R F2(sendmail)2.563 E F1 .064
-(to log a dump of the open \214les and the connection cache by sending it a)
-2.563 F/F3 9/Times-Roman@0 SF(SIGUSR1)102 567.6 Q F1 2.5(signal. The)2.5 F
-(results are logged at)2.5 E F3(LOG_DEB)2.5 E(UG)-.09 E F1(priority)2.5 E(.)
--.65 E F0 2.5(2.3. The)87 591.6 R(Mail Queue)2.5 E F1 1.283
-(Sometimes a host cannot handle a message immediately)127 607.8 R 6.283(.F)-.65
-G 1.283(or e)374.224 607.8 R 1.283(xample, it may be do)-.15 F 1.282(wn or)-.25
-F -.15(ove)102 619.8 S .042(rloaded, causing it to refuse connections.).15 F
-.043(The sending host is then e)5.043 F .043(xpected to sa)-.15 F .343 -.15
-(ve t)-.2 H .043(his message).15 F(in its mail queue and attempt to deli)102
-631.8 Q -.15(ve)-.25 G 2.5(ri).15 G 2.5(tl)263.26 631.8 S(ater)271.32 631.8 Q
-(.)-.55 E .568
-(Under normal conditions the mail queue will be processed transparently)127 648
-R 5.568(.H)-.65 G -.25(ow)434.764 648 S -2.15 -.25(ev e).25 H 1.368 -.4(r, y)
-.25 H .568(ou may).4 F .993(\214nd that manual interv)102 660 R .993
-(ention is sometimes necessary)-.15 F 5.993(.F)-.65 G .993(or e)332.711 660 R
-.993(xample, if a major host is do)-.15 F .994(wn for a)-.25 F 1.699
-(period of time the queue may become clogged.)102 672 R(Although)6.699 E F2
-(sendmail)4.199 E F1 1.699(ought to reco)4.199 F -.15(ve)-.15 G 4.199(rg).15 G
-(racefully)468.46 672 Q(when the host comes up, you may \214nd performance una\
-cceptably bad in the meantime.)102 684 Q EP
-%%Page: 14 9
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-14 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E 2.5(2.3.1. Printing)102 96 R(the queue)
-2.5 E/F1 10/Times-Roman@0 SF .526
-(The contents of the queue can be printed using the)142 112.2 R/F2 10
-/Times-Italic@0 SF(mailq)3.026 E F1 .526(command \(or by specifying the)3.026 F
-F0(\255bp)117 124.2 Q F1(\215ag to)2.5 E F2(sendmail)2.5 E F1(\):)A(mailq)157
-140.4 Q 1.673(This will produce a listing of the queue id')117 156.6 R 1.673
-(s, the size of the message, the date the message)-.55 F
-(entered the queue, and the sender and recipients.)117 168.6 Q F0 2.5(2.3.2. F)
-102 192.6 R(or)-.25 E(cing the queue)-.18 E F2(Sendmail)142 208.8 Q F1 1.137
-(should run the queue automatically at interv)3.637 F 3.638(als. The)-.25 F
-1.138(algorithm is to read and)3.638 F .355
-(sort the queue, and then to attempt to process all jobs in order)117 220.8 R
-5.355(.W)-.55 G .355(hen it attempts to run the job,)384.37 220.8 R F2
-(sendmail)117 232.8 Q F1(\214rst checks to see if the job is lock)2.5 E 2.5
-(ed. If)-.1 F(so, it ignores the job)2.5 E(.)-.4 E .338
-(There is no attempt to insure that only one queue processor e)142 249 R .338
-(xists at an)-.15 F 2.838(yt)-.15 G .339(ime, since there)440.282 249 R .095
-(is no guarantee that a job cannot tak)117 261 R 2.595(ef)-.1 G(ore)272.07 261
-Q -.15(ve)-.25 G 2.595(rt).15 G 2.595(op)302.585 261 S .094(rocess \(ho)315.18
-261 R(we)-.25 E -.15(ve)-.25 G -.4(r,).15 G F2(sendmail)2.994 E F1 .094
-(does include heuris-)2.594 F 1.086
-(tics to try to abort jobs that are taking absurd amounts of time; technically)
-117 273 R 3.587(,t)-.65 G 1.087(his violates RFC)435.146 273 R .462(821, b)117
-285 R .461(ut is blessed by RFC 1123\).)-.2 F .461
-(Due to the locking algorithm, it is impossible for one job to)5.461 F 1.086
-(freeze the entire queue.)117 297 R(Ho)6.086 E(we)-.25 E -.15(ve)-.25 G 1.886
--.4(r, a).15 H 3.586(nu).4 G(ncooperati)279.346 297 Q 1.386 -.15(ve r)-.25 H
-1.086(ecipient host or a program recipient that).15 F(ne)117 309 Q -.15(ve)-.25
-G 3.351(rr).15 G .851(eturns can accumulate man)145.491 309 R 3.351(yp)-.15 G
-.851(rocesses in your system.)269.825 309 R(Unfortunately)5.851 E 3.351(,t)-.65
-G .85(here is no com-)439.52 309 R(pletely general w)117 321 Q(ay to solv)-.1 E
-2.5(et)-.15 G(his.)234.23 321 Q .082
-(In some cases, you may \214nd that a major host going do)142 337.2 R .083
-(wn for a couple of days may create)-.25 F 2.925(ap)117 349.2 S(rohibiti)
-129.365 349.2 Q -.15(ve)-.25 G .425(ly lar).15 F .425(ge queue.)-.18 F .424
-(This will result in)5.425 F F2(sendmail)2.924 E F1 .424
-(spending an inordinate amount of time)2.924 F 1.084(sorting the queue.)117
-361.2 R 1.084(This situation can be \214x)6.084 F 1.084(ed by mo)-.15 F 1.085
-(ving the queue to a temporary place and)-.15 F .023(creating a ne)117 373.2 R
-2.523(wq)-.25 G 2.523(ueue. The)182.629 373.2 R .022
-(old queue can be run later when the of)2.523 F .022
-(fending host returns to service.)-.25 F 1.6 -.8(To d)142 389.4 T 2.5(ot).8 G
-(his, it is acceptable to mo)170.09 389.4 Q .3 -.15(ve t)-.15 H
-(he entire queue directory:).15 E(cd /v)157 405.6 Q(ar/spool)-.25 E
-(mv mqueue omqueue; mkdir mqueue; chmod 700 mqueue)157 417.6 Q -1.1(Yo)117
-433.8 S 2.708(us)1.1 G .208(hould then kill the e)139.718 433.8 R .209
-(xisting daemon \(since it will still be processing in the old queue direc-)
--.15 F(tory\) and create a ne)117 445.8 Q 2.5(wd)-.25 G(aemon.)213.1 445.8 Q
-1.6 -.8(To r)142 462 T(un the old mail queue, run the follo).8 E(wing command:)
--.25 E(/usr/sbin/sendmail \255oQ/v)157 478.2 Q(ar/spool/omqueue \255q)-.25 E
-(The)117 494.4 Q F0(\255oQ)2.868 E F1 .367
-(\215ag speci\214es an alternate queue directory and the)2.868 F F0<ad71>2.867
-E F1 .367(\215ag says to just run e)2.867 F -.15(ve)-.25 G .367(ry job in).15 F
-.593(the queue.)117 506.4 R .593(If you ha)5.593 F .893 -.15(ve a t)-.2 H
-(endenc).15 E 3.093(yt)-.15 G -2.1 -.25(ow a)263.111 506.4 T .593(rd v).25 F
--.1(oy)-.2 G .593(eurism, you can use the).1 F F0<ad76>3.094 E F1 .594
-(\215ag to w)3.094 F .594(atch what is)-.1 F(going on.)117 518.4 Q
-(When the queue is \214nally emptied, you can remo)142 534.6 Q .3 -.15(ve t)
--.15 H(he directory:).15 E(rmdir /v)157 550.8 Q(ar/spool/omqueue)-.25 E F0 2.5
-(2.4. The)87 579 R(Ser)2.5 E(vice Switch)-.1 E F1 1.416(The implementation of \
-certain system services such as host and user name lookup is con-)127 595.2 R
-.335(trolled by the service switch.)102 607.2 R .336
-(If the host operating system supports such a switch)5.335 F F2(sendmail)2.836
-E F1 .336(will use)2.836 F(the nati)102 619.2 Q .3 -.15(ve ve)-.25 H 2.5
-(rsion. Ultrix,).15 F(Solaris, and DEC OSF/1 are e)2.5 E
-(xamples of such systems.)-.15 E .969(If the underlying operating system does \
-not support a service switch \(e.g., SunOS, HP-UX,)127 635.4 R .975(BSD\) then)
-102 647.4 R F2(sendmail)3.475 E F1 .975(will pro)3.475 F .975
-(vide a stub implementation.)-.15 F(The)5.975 E F0(Ser)3.475 E(viceSwitchFile)
--.1 E F1 .975(option points to)3.475 F .382(the name of a \214le that has the \
-service de\214nitions Each line has the name of a service and the possi-)102
-659.4 R(ble implementations of that service.)102 671.4 Q -.15(Fo)5 G 2.5(re).15
-G(xample, the \214le:)270.57 671.4 Q 12.94(hosts dns)142 687.6 R(\214les nis)
-2.5 E 6.84(aliases \214les)142 699.6 R(nis)2.5 E .328(will ask)102 715.8 R F2
-(sendmail)2.828 E F1 .328(to look for hosts in the Domain Name System \214rst.)
-2.828 F .329(If the requested host name is)5.329 F EP
-%%Page: 15 10
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-15)452.9 60 Q/F1 10/Times-Roman@0 SF .379
-(not found, it tries local \214les, and if that f)102 96 R .379
-(ails it tries NIS.)-.1 F(Similarly)5.379 E 2.879(,w)-.65 G .379
-(hen looking for aliases it will)385.166 96 R
-(try the local \214les \214rst follo)102 108 Q(wed by NIS.)-.25 E 1.269
-(Service switches are not completely inte)127 124.2 R 3.769(grated. F)-.15 F
-1.269(or e)-.15 F 1.269(xample, despite the f)-.15 F 1.27(act that the host)-.1
-F .294(entry listed in the abo)102 136.2 R .594 -.15(ve ex)-.15 H .293
-(ample speci\214es to look in NIS, on SunOS this w).15 F(on')-.1 E 2.793(th)
--.18 G .293(appen because the)430.664 136.2 R 1.398(system implementation of)
-102 148.2 R/F2 10/Times-Italic@0 SF -.1(ge)3.898 G(thostbyname).1 E F1 1.398
-(\(3\) doesn')1.666 F 3.898(tu)-.18 G 1.399(nderstand this.)327.856 148.2 R
-1.399(If there is enough demand)6.399 F F2(sendmail)102 160.2 Q F1 .015
-(may reimplement)2.515 F F2 -.1(ge)2.515 G(thostbyname).1 E F1(\(3\),)1.666 E
-F2 -.1(ge)2.515 G(thostbyaddr).1 E F1(\(3\),)1.666 E F2 -.1(ge)2.515 G(tpwent)
-.1 E F1 .014(\(3\), and the other system)1.666 F(routines that w)102 172.2 Q
-(ould be necessary to mak)-.1 E 2.5(et)-.1 G(his w)272.05 172.2 Q
-(ork seamlessly)-.1 E(.)-.65 E F0 2.5(2.5. The)87 196.2 R(Alias Database)2.5 E
-F1 .36(The alias database e)127 212.4 R .36(xists in tw)-.15 F 2.86(of)-.1 G
-2.861(orms. One)261.11 212.4 R .361(is a te)2.861 F .361
-(xt form, maintained in the \214le)-.15 F F2(/etc/aliases.)2.861 E F1
-(The aliases are of the form)102 224.4 Q(name: name1, name2, ...)142 240.6 Q
-(Only local names may be aliased; e.g.,)102 256.8 Q(eric@prep.ai.MIT)142 273 Q
-(.EDU: eric@CS.Berk)-.74 E(ele)-.1 E -.65(y.)-.15 G(EDU).65 E 1.088
-(will not ha)102 291.2 R 1.388 -.15(ve t)-.2 H 1.088(he desired ef).15 F 1.088
-(fect \(e)-.25 F 1.088(xcept on prep.ai.MIT)-.15 F 1.088(.EDU, and the)-.74 F
-3.588(yp)-.15 G 1.088(robably don')400.868 291.2 R 3.587(tw)-.18 G 1.087
-(ant me\))466.643 291.2 R/F3 7/Times-Roman@0 SF(7)498 287.2 Q F1(.)501.5 291.2
-Q .561(Aliases may be continued by starting an)102 303.2 R 3.061(yc)-.15 G .561
-(ontinuation lines with a space or a tab)277.697 303.2 R 5.562(.B)-.4 G .562
-(lank lines and)447.326 303.2 R(lines be)102 315.2 Q
-(ginning with a sharp sign \(\231#\232\) are comments.)-.15 E 1.478
-(The second form is processed by the)127 333.4 R F2(ndbm)3.978 E F1(\(3\))1.666
-E F3(8)321.472 329.4 Q F1(or)328.95 333.4 Q F2(db)3.978 E F1 1.478
-(\(3\) library)1.666 F 6.478(.T)-.65 G 1.478(his form is in the \214les)409.66
-333.4 R F2(/etc/aliases.dir)102 345.4 Q F1(and)3.028 E F2(/etc/aliases.pa)3.028
-E -.15(g.)-.1 G F1 .528(This is the form that)5.678 F F2(sendmail)3.029 E F1
-.529(actually uses to resolv)3.029 F 3.029(ea)-.15 G(liases.)479.28 345.4 Q
-(This technique is used to impro)102 357.4 Q .3 -.15(ve p)-.15 H(erformance.)
-.15 E(The control of search order is actually set by the service switch.)127
-373.6 Q(Essentially)5 E 2.5(,t)-.65 G(he entry)437.96 373.6 Q -.35(OA)142 389.8
-S(switch:aliases).35 E .927(is al)102 406 R -.1(wa)-.1 G .927(ys added as the \
-\214rst alias entry; also, the \214rst alias \214le name without a class \(e.g\
-., without).1 F .268
-(\231nis:\232 on the front\) will be used as the name of the \214le for a `)102
-418 R(`\214les')-.74 E 2.769('e)-.74 G .269(ntry in the aliases switch.)382.535
-418 R -.15(Fo)5.269 G(r).15 E -.15(ex)102 430 S
-(ample, if the con\214guration \214le contains).15 E -.35(OA)142 446.2 S
-(/etc/aliases).35 E(and the service switch contains)102 462.4 Q 6.84
-(aliases nis)142 478.6 R(\214les nisplus)2.5 E 2.449(then aliases will \214rst\
- be searched in the NIS database, then in /etc/aliases, then in the NIS+)102
-494.8 R(database.)102 506.8 Q -1.1(Yo)127 523 S 2.5(uc)1.1 G(an also use)150.06
-523 Q/F4 9/Times-Roman@0 SF(NIS)2.5 E F1(-based alias \214les.)A -.15(Fo)5 G
-2.5(re).15 G(xample, the speci\214cation:)305.069 523 Q -.35(OA)142 539.2 S
-(/etc/aliases).35 E -.35(OA)142 551.2 S(nis:mail.aliases@my).35 E(.nis.domain)
--.65 E 1.725(will \214rst search the /etc/aliases \214le and then the map name\
-d \231mail.aliases\232 in \231my)102 567.4 R(.nis.domain\232.)-.65 E -.8(Wa)102
-579.4 S .59(rning: if you b).8 F .59(uild your o)-.2 F(wn)-.25 E F4(NIS)3.09 E
-F1 .589(-based alias \214les, be sure to pro)B .589(vide the)-.15 F F0<ad6c>
-3.089 E F1 .589(\215ag to)3.089 F F2(mak)3.089 E(edbm)-.1 E F1(\(8\))A .159
-(to map upper case letters in the k)102 591.4 R -.15(ey)-.1 G 2.659(st).15 G
-2.659(ol)253.55 591.4 S -.25(ow)263.989 591.4 S .159
-(er case; otherwise, aliases with upper case letters in their).25 F(names w)102
-603.4 Q(on')-.1 E 2.5(tm)-.18 G(atch incoming addresses.)163.38 603.4 Q
-(Additional \215ags can be added after the colon e)127 619.6 Q(xactly lik)-.15
-E 2.5(ea)-.1 G F0(K)A F1(line \212 for e)2.5 E(xample:)-.15 E -.35(OA)142 635.8
-S(nis:\255N mail.aliases@my).35 E(.nis.domain)-.65 E
-(will search the appropriate NIS map and al)102 652 Q -.1(wa)-.1 G
-(ys include null bytes in the k).1 E -.15(ey)-.1 G(.)-.5 E .32 LW 76 665.2 72
-665.2 DL 80 665.2 76 665.2 DL 84 665.2 80 665.2 DL 88 665.2 84 665.2 DL 92
-665.2 88 665.2 DL 96 665.2 92 665.2 DL 100 665.2 96 665.2 DL 104 665.2 100
-665.2 DL 108 665.2 104 665.2 DL 112 665.2 108 665.2 DL 116 665.2 112 665.2 DL
-120 665.2 116 665.2 DL 124 665.2 120 665.2 DL 128 665.2 124 665.2 DL 132 665.2
-128 665.2 DL 136 665.2 132 665.2 DL 140 665.2 136 665.2 DL 144 665.2 140 665.2
-DL 148 665.2 144 665.2 DL 152 665.2 148 665.2 DL 156 665.2 152 665.2 DL 160
-665.2 156 665.2 DL 164 665.2 160 665.2 DL 168 665.2 164 665.2 DL 172 665.2 168
-665.2 DL 176 665.2 172 665.2 DL 180 665.2 176 665.2 DL 184 665.2 180 665.2 DL
-188 665.2 184 665.2 DL 192 665.2 188 665.2 DL 196 665.2 192 665.2 DL 200 665.2
-196 665.2 DL 204 665.2 200 665.2 DL 208 665.2 204 665.2 DL 212 665.2 208 665.2
-DL 216 665.2 212 665.2 DL/F5 5/Times-Roman@0 SF(7)93.6 675.6 Q/F6 8
-/Times-Roman@0 SF(Actually)3.2 I 2(,a)-.52 G .24 -.12(ny m)130.684 678.8 T
-(ailer that has the `).12 E 1.776 -.888(A' m)-.64 H(ailer \215ag set will perm\
-it aliasing; this is normally limited to the local mailer).888 E(.)-.44 E F5(8)
-93.6 689.2 Q F6(The)3.2 I/F7 8/Times-Italic@0 SF(gdbm)2 E F6
-(package probably w)2 E(orks as well.)-.08 E EP
-%%Page: 16 11
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-16 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E 2.5(2.5.1. Reb)102 96 R
-(uilding the alias database)-.2 E/F1 10/Times-Roman@0 SF .542(The DB or DBM v)
-142 112.2 R .542(ersion of the database may be reb)-.15 F .542(uilt e)-.2 F
-.542(xplicitly by e)-.15 F -.15(xe)-.15 G .542(cuting the com-).15 F(mand)117
-124.2 Q(ne)157 140.4 Q -.1(wa)-.25 G(liases).1 E(This is equi)117 156.6 Q -.25
-(va)-.25 G(lent to gi).25 E(ving)-.25 E/F2 10/Times-Italic@0 SF(sendmail)2.5 E
-F1(the)2.5 E F0(\255bi)2.5 E F1(\215ag:)2.5 E(/usr/sbin/sendmail \255bi)157
-172.8 Q 2.29(If the)142 193.2 R F0(Reb)4.79 E(uildAliases)-.2 E F1(\(old)4.79 E
-F0(D)4.79 E F1 4.79(\)o)C 2.29(ption is speci\214ed in the con\214guration,)
-280.19 193.2 R F2(sendmail)4.79 E F1(will)4.79 E(reb)117 205.2 Q .775
-(uild the alias database automatically if possible when it is out of date.)-.2
-F(Auto-reb)5.774 E .774(uild can be)-.2 F 1.853(dangerous on hea)117 217.2 R
-1.853(vily loaded machines with lar)-.2 F 1.853
-(ge alias \214les; if it might tak)-.18 F 4.354(em)-.1 G 1.854(ore than the)
-453.082 217.2 R(reb)117 229.2 Q 2.832(uild timeout \(option)-.2 F F0(AliasW)
-5.332 E(ait)-.65 E F1 5.332(,o)C(ld)275.538 229.2 Q F0(a)5.332 E F1 5.332(,w)C
-2.831(hich is normally \214v)308.702 229.2 R 5.331(em)-.15 G 2.831
-(inutes\) to reb)412.657 229.2 R 2.831(uild the)-.2 F
-(database, there is a chance that se)117 241.2 Q -.15(ve)-.25 G
-(ral processes will start the reb).15 E(uild process simultaneously)-.2 E(.)
--.65 E 1.77(If you ha)142 257.4 R 2.07 -.15(ve m)-.2 H 1.77
-(ultiple aliases databases speci\214ed, the).15 F F0(\255bi)4.27 E F1 1.77
-(\215ag reb)4.27 F 1.77(uilds all the database)-.2 F
-(types it understands \(for e)117 269.4 Q(xample, it can reb)-.15 E
-(uild NDBM databases b)-.2 E(ut not NIS databases\).)-.2 E F0 2.5(2.5.2. P)102
-293.4 R(otential pr)-.2 E(oblems)-.18 E F1 1.131
-(There are a number of problems that can occur with the alias database.)142
-309.6 R(The)6.13 E 3.63(ya)-.15 G 1.13(ll result)472.59 309.6 R 1.103(from a)
-117 321.6 R F2(sendmail)3.603 E F1 1.103(process accessing the DBM v)3.603 F
-1.103(ersion while it is only partially b)-.15 F 3.604(uilt. This)-.2 F(can)
-3.604 E 1.249(happen under tw)117 333.6 R 3.749(oc)-.1 G 1.248
-(ircumstances: One process accesses the database while another process is)
-199.237 333.6 R(reb)117 345.6 Q .518(uilding it, or the process reb)-.2 F .518
-(uilding the database dies \(due to being killed or a system crash\))-.2 F
-(before completing the reb)117 357.6 Q(uild.)-.2 E .401
-(Sendmail has three techniques to try to relie)142 373.8 R .701 -.15(ve t)-.25
-H .401(hese problems.).15 F .4(First, it ignores interrupts)5.401 F .045
-(while reb)117 385.8 R .045(uilding the database; this a)-.2 F -.2(vo)-.2 G
-.045(ids the problem of someone aborting the process lea).2 F .045(ving a)-.2 F
-.177(partially reb)117 397.8 R .177(uilt database.)-.2 F .177
-(Second, it locks the database source \214le during the reb)5.177 F .176
-(uild \212 b)-.2 F .176(ut that)-.2 F .812(may not w)117 409.8 R .812(ork o)-.1
-F -.15(ve)-.15 G 3.312(rN).15 G .812(FS or if the \214le is unwritable.)205.388
-409.8 R .813(Third, at the end of the reb)5.813 F .813(uild it adds an)-.2 F
-(alias of the form)117 421.8 Q(@: @)157 438 Q .336(\(which is not normally le)
-117 454.2 R -.05(ga)-.15 G 2.836(l\). Before).05 F F2(sendmail)2.836 E F1 .336
-(will access the database, it checks to insure that)2.836 F(this entry e)117
-468.2 Q(xists)-.15 E/F3 7/Times-Roman@0 SF(9)179.63 464.2 Q F1(.)183.13 468.2 Q
-F0 2.5(2.5.3. List)102 492.2 R -.1(ow)2.5 G(ners).1 E F1 .4
-(If an error occurs on sending to a certain address, say \231)142 508.4 R F2(x)
-A F1<9a2c>A F2(sendmail)2.901 E F1 .401(will look for an alias)2.901 F .418
-(of the form \231o)117 520.4 R(wner)-.25 E(-)-.2 E F2(x)A F1 2.918<9a74>C 2.918
-(or)212.632 520.4 S(ecei)223.88 520.4 Q .718 -.15(ve t)-.25 H .418(he errors.)
-.15 F .417(This is typically useful for a mailing list where the)5.418 F 1.116
-(submitter of the list has no control o)117 532.4 R -.15(ve)-.15 G 3.617(rt).15
-G 1.117(he maintenance of the list itself; in this case the list)288.4 532.4 R
-(maintainer w)117 544.4 Q(ould be the o)-.1 E(wner of the list.)-.25 E -.15(Fo)
-5 G 2.5(re).15 G(xample:)309.38 544.4 Q
-(unix-wizards: eric@ucbarpa, wnj@monet, nosuchuser)157 560.6 Q(,)-.4 E
-(sam@matisse)193 572.6 Q -.25(ow)157 584.6 S(ner).25 E
-(-unix-wizards: unix-wizards-request)-.2 E(unix-wizards-request: eric@ucbarpa)
-157 596.6 Q -.1(wo)117 612.8 S 1.959(uld cause \231eric@ucbarpa\232 to get the\
- error that will occur when someone sends to unix-).1 F
-(wizards due to the inclusion of \231nosuchuser\232 on the list.)117 624.8 Q
-.958(List o)142 641 R .958(wners also cause the en)-.25 F -.15(ve)-.4 G .959
-(lope sender address to be modi\214ed.).15 F .959(The contents of the)5.959 F
--.25(ow)117 653 S .429(ner alias are used if the).25 F 2.929(yp)-.15 G .429
-(oint to a single user)236.364 653 R 2.928(,o)-.4 G .428
-(therwise the name of the alias itself is used.)326.436 653 R -.15(Fo)117 665 S
-3.454(rt).15 G .954(his reason, and to obe)136.974 665 R 3.454(yI)-.15 G .954
-(nternet con)239.354 665 R -.15(ve)-.4 G .954(ntions, the \231o).15 F(wner)-.25
-E .955(-\232 address normally points at the)-.2 F .504(\231-request\232 addres\
-s; this causes messages to go out with the typical Internet con)117 677 R -.15
-(ve)-.4 G .503(ntion of using).15 F .32 LW 76 686.6 72 686.6 DL 80 686.6 76
-686.6 DL 84 686.6 80 686.6 DL 88 686.6 84 686.6 DL 92 686.6 88 686.6 DL 96
-686.6 92 686.6 DL 100 686.6 96 686.6 DL 104 686.6 100 686.6 DL 108 686.6 104
-686.6 DL 112 686.6 108 686.6 DL 116 686.6 112 686.6 DL 120 686.6 116 686.6 DL
-124 686.6 120 686.6 DL 128 686.6 124 686.6 DL 132 686.6 128 686.6 DL 136 686.6
-132 686.6 DL 140 686.6 136 686.6 DL 144 686.6 140 686.6 DL 148 686.6 144 686.6
-DL 152 686.6 148 686.6 DL 156 686.6 152 686.6 DL 160 686.6 156 686.6 DL 164
-686.6 160 686.6 DL 168 686.6 164 686.6 DL 172 686.6 168 686.6 DL 176 686.6 172
-686.6 DL 180 686.6 176 686.6 DL 184 686.6 180 686.6 DL 188 686.6 184 686.6 DL
-192 686.6 188 686.6 DL 196 686.6 192 686.6 DL 200 686.6 196 686.6 DL 204 686.6
-200 686.6 DL 208 686.6 204 686.6 DL 212 686.6 208 686.6 DL 216 686.6 212 686.6
-DL/F4 5/Times-Roman@0 SF(9)93.6 697 Q/F5 8/Times-Roman@0 SF(The)3.2 I/F6 8
-/Times-Bold@0 SF(AliasW)2 E(ait)-.52 E F5
-(option is required in the con\214guration for this action to occur)2 E 4(.T)
--.44 G(his should normally be speci\214ed.)352.228 700.2 Q EP
-%%Page: 17 12
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-17)452.9 60 Q/F1 10/Times-Roman@0 SF -.74(``)117 96 S/F2 10
-/Times-Italic@0 SF(list).74 E F1(-request')A 2.5('a)-.74 G 2.5(st)180.22 96 S
-(he return address.)189.39 96 Q F0 2.5(2.6. User)87 120 R(Inf)2.5 E
-(ormation Database)-.25 E F1 1.059(If you ha)127 136.2 R 1.359 -.15(ve a ve)-.2
-H 1.059(rsion of).15 F F2(sendmail)3.559 E F1 1.06
-(with the user information database compiled in, and you)3.559 F(ha)102 148.2 Q
-2.206 -.15(ve s)-.2 H 1.906(peci\214ed one or more databases using the).15 F F0
-(U)4.406 E F1 1.905(option, the databases will be searched for a)4.406 F F2
-(user)102 160.2 Q F1(:maildrop entry)A 5(.I)-.65 G 2.5(ff)191.34 160.2 S
-(ound, the mail will be sent to the speci\214ed address.)200.5 160.2 Q F0 2.5
-(2.7. P)87 184.2 R(er)-.2 E(-User F)-.37 E(orwarding \(.f)-.25 E
-(orward Files\))-.25 E F1 .12(As an alternati)127 200.4 R .42 -.15(ve t)-.25 H
-2.62(ot).15 G .12(he alias database, an)210.4 200.4 R 2.62(yu)-.15 G .121
-(ser may put a \214le with the name \231.forw)304.87 200.4 R .121
-(ard\232 in his)-.1 F .205(or her home directory)102 212.4 R 5.205(.I)-.65 G
-2.705(ft)199.92 212.4 S .205(his \214le e)208.735 212.4 R(xists,)-.15 E F2
-(sendmail)2.705 E F1 .205
-(redirects mail for that user to the list of addresses)2.705 F .908
-(listed in the .forw)102 224.4 R .908(ard \214le.)-.1 F -.15(Fo)5.908 G 3.408
-(re).15 G .908
-(xample, if the home directory for user \231mckusick\232 has a .forw)233.978
-224.4 R(ard)-.1 E(\214le with contents:)102 236.4 Q(mckusick@ernie)142 252.6 Q
-(kirk@calder)142 264.6 Q(then an)102 280.8 Q 2.5(ym)-.15 G(ail arri)146.29
-280.8 Q
-(ving for \231mckusick\232 will be redirected to the speci\214ed accounts.)-.25
-E(Actually)127 297 Q 3.375(,t)-.65 G .874
-(he con\214guration \214le de\214nes a sequence of \214lenames to check.)
-169.445 297 R .874(By def)5.874 F .874(ault, this is)-.1 F .687(the user')102
-309 R 3.187(s.)-.55 G(forw)146.424 309 Q .687(ard \214le, b)-.1 F .687
-(ut can be de\214ned to be more generally using the)-.2 F F0(J)3.187 E F1 3.188
-(option. If)3.188 F .688(you change)3.188 F .393(this, you will ha)102 321 R
-.693 -.15(ve t)-.2 H 2.893(oi).15 G .393
-(nform your user base of the change; .forw)193.065 321 R .393
-(ard is pretty well incorporated into)-.1 F(the collecti)102 333 Q .3 -.15
-(ve s)-.25 H(ubconscious.).15 E F0 2.5(2.8. Special)87 357 R(Header Lines)2.5 E
-F1(Se)127 373.2 Q -.15(ve)-.25 G 1.897(ral header lines ha).15 F 2.197 -.15
-(ve s)-.2 H 1.897
-(pecial interpretations de\214ned by the con\214guration \214le.).15 F(Others)
-6.898 E(ha)102 385.2 Q 1.206 -.15(ve i)-.2 H .906(nterpretations b).15 F .906
-(uilt into)-.2 F F2(sendmail)3.406 E F1 .905
-(that cannot be changed without changing the code.)3.406 F(These)5.905 E -.2
-(bu)102 397.2 S(iltins are described here.).2 E F0 2.5(2.8.1. Err)102 421.2 R
-(ors-T)-.18 E(o:)-.92 E F1 .22(If errors occur an)142 437.4 R .22
-(ywhere during processing, this header will cause error messages to go to)-.15
-F(the listed addresses.)117 449.4 Q(This is intended for mailing lists.)5 E
-.385(The Errors-T)142 465.6 R .385(o: header w)-.8 F .384
-(as created in the bad old days when UUCP didn')-.1 F 2.884(tu)-.18 G .384
-(nderstand the)450.016 465.6 R .889(distinction between an en)117 477.6 R -.15
-(ve)-.4 G .889(lope and a header; this w).15 F .889(as a hack to pro)-.1 F .89
-(vide what should no)-.15 F 3.39(wb)-.25 G(e)499.56 477.6 Q .81
-(passed as the en)117 489.6 R -.15(ve)-.4 G .81(lope sender address.).15 F .809
-(It should go a)5.81 F -.1(wa)-.15 G 4.609 -.65(y. I).1 H 3.309(ti).65 G 3.309
-(so)374.125 489.6 S .809(nly used if the)386.324 489.6 R F0(UseErr)3.309 E
-(orsT)-.18 E(o)-.92 E F1(option is set.)117 501.6 Q(The Errors-T)142 517.8 Q
-(o: header is of)-.8 E(\214cial deprecated and will go a)-.25 E -.1(wa)-.15 G
-2.5(yi).1 G 2.5(naf)392.3 517.8 S(uture release.)410.07 517.8 Q F0 2.5
-(2.8.2. A)102 541.8 R(ppar)-.25 E(ently-T)-.18 E(o:)-.92 E F1 .044
-(RFC 822 requires at least one recipient \214eld \(T)142 558 R .045
-(o:, Cc:, or Bcc: line\) in e)-.8 F -.15(ve)-.25 G .045(ry message.).15 F .045
-(If a)5.045 F .562
-(message comes in with no recipients listed in the message then)117 570 R F2
-(sendmail)3.062 E F1 .562(will adjust the header)3.062 F .085
-(based on the \231NoRecipientAction\232 option.)117 582 R .085
-(One of the possible actions is to add an \231)5.085 F(Apparently-)-.8 E -.8
-(To)117 594 S .08(:\232 header line for an).8 F 2.58(yr)-.15 G .08
-(ecipients it is a)218.36 594 R -.1(wa)-.15 G .08(re of.).1 F .08
-(This is not put in as a standard recipient line to)5.08 F -.1(wa)117 606 S
-(rn an).1 E 2.5(yr)-.15 G(ecipients that the list is not complete.)159.51 606 Q
-(The Apparently-T)142 622.2 Q(o: header is non-standard and is deprecated.)-.8
-E F0 2.5(2.8.3. Pr)102 646.2 R(ecedence)-.18 E F1 .425
-(The Precedence: header can be used as a crude control of message priority)142
-662.4 R 5.425(.I)-.65 G 2.925(tt)455.38 662.4 S .425(weaks the)463.865 662.4 R
-(sort order in the queue and can be con\214gured to change the message timeout\
- v)117 674.4 Q(alues.)-.25 E EP
-%%Page: 18 13
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-18 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E 2.5(2.9. IDENT)87 96 R(Pr)2.5 E
-(otocol Support)-.18 E/F1 10/Times-Italic@0 SF(Sendmail)127 112.2 Q/F2 10
-/Times-Roman@0 SF 1.835(supports the IDENT protocol as de\214ned in RFC 1413.)
-4.335 F 1.835(Although this enhances)6.835 F .289
-(identi\214cation of the author of an email message by doing a `)102 124.2 R
-.29(`call back')-.74 F 2.79('t)-.74 G 2.79(ot)396.17 124.2 S .29
-(he originating system to)406.74 124.2 R .469(include the o)102 136.2 R .469(w\
-ner of a particular TCP connection in the audit trail it is in no sense perfec\
-t; a deter)-.25 F(-)-.2 E 1.293(mined for)102 148.2 R 1.294
-(ger can easily spoof the IDENT protocol.)-.18 F 1.294(The follo)6.294 F 1.294
-(wing description is e)-.25 F 1.294(xcerpted from)-.15 F(RFC 1413:)102 160.2 Q
-2.5(6. Security)127 176.4 R(Considerations)2.5 E .006
-(The information returned by this protocol is at most as trustw)127 192.6 R
-(orth)-.1 E 2.505(ya)-.05 G 2.505(st)400.505 192.6 S .005(he host pro)409.68
-192.6 R .005(viding it OR)-.15 F .273(the or)127 204.6 R -.05(ga)-.18 G .273
-(nization operating the host.).05 F -.15(Fo)5.273 G 2.773(re).15 G .274
-(xample, a PC in an open lab has fe)295.308 204.6 R 2.774(wi)-.25 G 2.774(fa)
-448.612 204.6 S .574 -.15(ny c)459.156 204.6 T(ontrols).15 E .987(on it to pre)
-127 216.6 R -.15(ve)-.25 G .986(nt a user from ha).15 F .986
-(ving this protocol return an)-.2 F 3.486(yi)-.15 G .986
-(denti\214er the user w)378.056 216.6 R 3.486(ants. Lik)-.1 F(e-)-.1 E 1.441(w\
-ise, if the host has been compromised the information returned may be complete\
-ly erro-)127 228.6 R(neous and misleading.)127 240.6 Q .521(The Identi\214cati\
-on Protocol is not intended as an authorization or access control protocol.)127
-256.8 R(At)5.52 E 1.036(best, it pro)127 268.8 R 1.037
-(vides some additional auditing information with respect to TCP connections.)
--.15 F(At)6.037 E -.1(wo)127 280.8 S(rst, it can pro).1 E
-(vide misleading, incorrect, or maliciously incorrect information.)-.15 E 1.006
-(The use of the information returned by this protocol for other than auditing \
-is strongly dis-)127 297 R 2.697(couraged. Speci\214cally)127 309 R 2.697(,u)
--.65 G .197(sing Identi\214cation Protocol information to mak)228.114 309 R
-2.697(ea)-.1 G .197(ccess control deci-)429.186 309 R .514(sions - either as t\
-he primary method \(i.e., no other checks\) or as an adjunct to other methods)
-127 321 R(may result in a weak)127 333 Q(ening of normal host security)-.1 E(.)
--.65 E 1.778(An Identi\214cation serv)127 349.2 R 1.778(er may re)-.15 F -.15
-(ve)-.25 G 1.778(al information about users, entities, objects or processes).15
-F .337(which might normally be considered pri)127 361.2 R -.25(va)-.25 G 2.836
-(te. An).25 F .336(Identi\214cation serv)2.836 F .336(er pro)-.15 F .336
-(vides service which)-.15 F .806
-(is a rough analog of the CallerID services pro)127 373.2 R .806
-(vided by some phone companies and man)-.15 F 3.306(yo)-.15 G(f)500.67 373.2 Q
-1.398(the same pri)127 385.2 R -.25(va)-.25 G 1.698 -.15(cy c).25 H 1.398
-(onsiderations and ar).15 F 1.398
-(guments that apply to the CallerID service apply to)-.18 F 3.545
-(Identi\214cation. If)127 397.2 R 1.045(you w)3.545 F(ouldn')-.1 E 3.545(tr)
--.18 G 1.045(un a "\214nger" serv)260.33 397.2 R 1.046(er due to pri)-.15 F
--.25(va)-.25 G 1.346 -.15(cy c).25 H 1.046(onsiderations you may).15 F(not w)
-127 409.2 Q(ant to run this protocol.)-.1 E .377
-(In some cases your system may not w)102 425.4 R .377
-(ork properly with IDENT support due to a b)-.1 F .376(ug in the TCP/IP)-.2 F
-3.675(implementation. The)102 437.4 R 1.175
-(symptoms will be that for some hosts the SMTP connection will be closed)3.675
-F .566(almost immediately)102 449.4 R 5.566(.I)-.65 G 3.066(ft)192.482 449.4 S
-.565(his is true or if you do not w)201.658 449.4 R .565(ant to use IDENT)-.1 F
-3.065(,y)-.74 G .565(ou should set the IDENT)401.75 449.4 R
-(timeout to zero; this will disable the IDENT protocol.)102 461.4 Q F0 2.5
-(3. ARGUMENTS)72 485.4 R F2 .017(The complete list of ar)112 501.6 R .017
-(guments to)-.18 F F1(sendmail)2.517 E F2 .017
-(is described in detail in Appendix A.)2.517 F .018(Some important)5.018 F(ar)
-87 513.6 Q(guments are described here.)-.18 E F0 2.5(3.1. Queue)87 537.6 R
-(Inter)2.5 E -.1(va)-.1 G(l).1 E F2 .455(The amount of time between forking a \
-process to run through the queue is de\214ned by the)127 553.8 R F0<ad71>2.955
-E F2 2.675(\215ag. If)102 565.8 R .175(you run with deli)2.675 F -.15(ve)-.25 G
-.175(ry mode set to).15 F F0(i)2.675 E F2(or)2.675 E F0(b)2.675 E F2 .176
-(this can be relati)2.675 F -.15(ve)-.25 G .176(ly lar).15 F .176
-(ge, since it will only be rel-)-.18 F -.25(eva)102 577.8 S .207
-(nt when a host that w).25 F .207(as do)-.1 F .207(wn comes back up.)-.25 F
-.206(If you run in)5.207 F F0(q)2.706 E F2 .206(mode it should be relati)2.706
-F -.15(ve)-.25 G .206(ly short,).15 F 1.039(since it de\214nes the maximum amo\
-unt of time that a message may sit in the queue.)102 589.8 R 1.039
-(\(See also the)6.039 F(MinQueueAge option.\))102 601.8 Q 1.336
-(RFC 1123 section 5.3.1.1 says that this v)127 618 R 1.335
-(alue should be at least 30 minutes \(although that)-.25 F(probably doesn')102
-630 Q 2.5(tm)-.18 G(ak)179.59 630 Q 2.5(es)-.1 G(ense if you use `)199.76 630 Q
-(`queue-only')-.74 E 2.5('m)-.74 G(ode\).)329.08 630 Q F0 2.5(3.2. Daemon)87
-654 R(Mode)2.5 E F2 .084(If you allo)127 670.2 R 2.584(wi)-.25 G .084
-(ncoming mail o)181.162 670.2 R -.15(ve)-.15 G 2.585(ra).15 G 2.585(nI)263.605
-670.2 S .085(PC connection, you should ha)274.52 670.2 R .385 -.15(ve a d)-.2 H
-.085(aemon running.).15 F(This)5.085 E .07(should be set by your)102 682.2 R F1
-(/etc/r)2.57 E(c)-.37 E F2 .07(\214le using the)2.57 F F0(\255bd)2.57 E F2
-2.569(\215ag. The)2.57 F F0(\255bd)2.569 E F2 .069(\215ag and the)2.569 F F0
-<ad71>2.569 E F2 .069(\215ag may be combined)2.569 F(in one call:)102 694.2 Q
-(/usr/sbin/sendmail \255bd \255q30m)142 710.4 Q EP
-%%Page: 19 14
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-19)452.9 60 Q/F1 10/Times-Roman@0 SF .292(An alternati)127 96 R .592
--.15(ve a)-.25 H .292(pproach is to in).15 F -.2(vo)-.4 G .493 -.1(ke s).2 H
-.293(endmail from).1 F/F2 10/Times-Italic@0 SF(inetd)2.793 E F1 .293
-(\(8\) \(use the)B F0(\255bs)2.793 E F1 .293(\215ag to ask sendmail)2.793 F
-.255(to speak SMTP on its standard input and output\).)102 108 R .255(This w)
-5.255 F .255(orks and allo)-.1 F .255(ws you to wrap)-.25 F F2(sendmail)2.755 E
-F1 .255(in a)2.755 F 1.39(TCP wrapper program, b)102 120 R 1.39
-(ut may be a bit slo)-.2 F 1.39
-(wer since the con\214guration \214le has to be re-read on)-.25 F -2.15 -.25
-(ev e)102 132 T .556(ry message that comes in.).25 F .556
-(If you do this, you still need to ha)5.556 F .856 -.15(ve a)-.2 H F2(sendmail)
-3.206 E F1 .555(running to \215ush the)3.055 F(queue:)102 144 Q
-(/usr/sbin/sendmail \255q30m)142 160.2 Q F0 2.5(3.3. F)87 188.4 R(or)-.25 E
-(cing the Queue)-.18 E F1 .04(In some cases you may \214nd that the queue has \
-gotten clogged for some reason.)127 204.6 R -1.1(Yo)5.04 G 2.54(uc)1.1 G .04
-(an force)471.48 204.6 R 3.185(aq)102 216.6 S .685(ueue run using the)114.625
-216.6 R F0<ad71>3.184 E F1 .684(\215ag \(with no v)3.184 F 3.184(alue\). It)
--.25 F .684(is entertaining to use the)3.184 F F0<ad76>3.184 E F1 .684
-(\215ag \(v)3.184 F .684(erbose\) when)-.15 F(this is done to w)102 228.6 Q
-(atch what happens:)-.1 E(/usr/sbin/sendmail \255q \255v)142 244.8 Q -1.1(Yo)
-127 265.2 S 4.004(uc)1.1 G 1.504
-(an also limit the jobs to those with a particular queue identi\214er)151.564
-265.2 R 4.004(,s)-.4 G(ender)428.362 265.2 Q 4.004(,o)-.4 G 4.004(rr)461.676
-265.2 S(ecipient)472.34 265.2 Q .687(using one of the queue modi\214ers.)102
-277.2 R -.15(Fo)5.687 G 3.187(re).15 G .687(xample, \231\255qRberk)265.659
-277.2 R(ele)-.1 E .686(y\232 restricts the queue run to jobs that)-.15 F(ha)102
-289.2 Q .525 -.15(ve t)-.2 H .225(he string \231berk).15 F(ele)-.1 E .225
-(y\232 some)-.15 F .225(where in one of the recipient addresses.)-.25 F
-(Similarly)5.226 E 2.726<2c99>-.65 G .226(\255qSstring\232 lim-)441.184 289.2 R
-(its the run to particular senders and \231\255qIstring\232 limits it to parti\
-cular queue identi\214ers.)102 301.2 Q F0 2.5(3.4. Deb)87 325.2 R(ugging)-.2 E
-F1 1.365(There are a f)127 341.4 R 1.365(airly lar)-.1 F 1.365
-(ge number of deb)-.18 F 1.365(ug \215ags b)-.2 F 1.365(uilt into)-.2 F F2
-(sendmail)3.865 E F1 6.365(.E)C 1.365(ach deb)417.65 341.4 R 1.365
-(ug \215ag has a)-.2 F 1.116(number and a le)102 353.4 R -.15(ve)-.25 G 1.116
-(l, where higher le).15 F -.15(ve)-.25 G 1.116
-(ls means to print out more information.).15 F 1.116(The con)6.116 F -.15(ve)
--.4 G 1.116(ntion is).15 F .294(that le)102 365.4 R -.15(ve)-.25 G .294
-(ls greater than nine are \231absurd,).15 F 2.794<9a69>-.7 G .294(.e., the)
-274.018 365.4 R 2.794(yp)-.15 G .293(rint out so much information that you w)
-313.616 365.4 R(ouldn')-.1 E(t)-.18 E .691(normally w)102 377.4 R .692
-(ant to see them e)-.1 F .692(xcept for deb)-.15 F .692
-(ugging that particular piece of code.)-.2 F(Deb)5.692 E .692
-(ug \215ags are set)-.2 F(using the)102 389.4 Q F0<ad64>2.5 E F1
-(option; the syntax is:)2.5 E(deb)142 405.6 Q(ug-\215ag:)-.2 E F0<ad64>200.13
-405.6 Q F1(deb)2.5 E(ug-list)-.2 E(deb)142 417.6 Q 13.05(ug-list: deb)-.2 F
-(ug-option [ , deb)-.2 E(ug-option ]*)-.2 E(deb)142 429.6 Q -.28
-(ug-option: deb)-.2 F(ug-range [ . deb)-.2 E(ug-le)-.2 E -.15(ve)-.25 G 2.5(l])
-.15 G(deb)142 441.6 Q 3.07(ug-range: inte)-.2 F(ger | inte)-.15 E
-(ger \255 inte)-.15 E(ger)-.15 E(deb)142 453.6 Q(ug-le)-.2 E -.15(ve)-.25 G
-6.24(l: inte).15 F(ger)-.15 E(where spaces are for reading ease only)102 469.8
-Q 5(.F)-.65 G(or e)268.64 469.8 Q(xample,)-.15 E 34.99(\255d12 Set)142 486 R
-(\215ag 12 to le)2.5 E -.15(ve)-.25 G 2.5(l1).15 G 27.49(\255d12.3 Set)142 498
-R(\215ag 12 to le)2.5 E -.15(ve)-.25 G 2.5(l3).15 G 24.35(\255d3\25517 Set)142
-510 R(\215ags 3 through 17 to le)2.5 E -.15(ve)-.25 G 2.5(l1).15 G 16.85
-(\255d3\25517.4 Set)142 522 R(\215ags 3 through 17 to le)2.5 E -.15(ve)-.25 G
-2.5(l4).15 G -.15(Fo)102 538.2 S 4.066(rac).15 G 1.566(omplete list of the a)
-132.752 538.2 R -.25(va)-.2 G 1.565(ilable deb).25 F 1.565
-(ug \215ags you will ha)-.2 F 1.865 -.15(ve t)-.2 H 4.065(ol).15 G 1.565
-(ook at the code \(the)380.9 538.2 R 4.065(ya)-.15 G 1.565(re too)479.385 538.2
-R(dynamic to k)102 550.2 Q(eep this documentation up to date\).)-.1 E F0 2.5
-(3.5. Changing)87 574.2 R(the V)2.5 E(alues of Options)-.92 E F1
-(Options can be o)127 590.4 Q -.15(ve)-.15 G(rridden using the).15 E F0<ad6f>
-2.5 E F1(or)2.5 E F0<ad4f>2.5 E F1(command line \215ags.)2.5 E -.15(Fo)5 G 2.5
-(re).15 G(xample,)420.27 590.4 Q(/usr/sbin/sendmail \255oT2m)142 606.6 Q .02
-(sets the)102 622.8 R F0(T)2.52 E F1 .02(\(timeout\) option to tw)2.52 F 2.52
-(om)-.1 G .021(inutes for this run only; the equi)246.77 622.8 R -.25(va)-.25 G
-.021(lent line using the long option).25 F(name is)102 634.8 Q
-(/usr/sbin/sendmail -OQueueT)142 651 Q(imeout=2m)-.35 E .72(Some options ha)127
-671.4 R 1.02 -.15(ve s)-.2 H .72(ecurity implications.).15 F .72(Sendmail allo)
-5.72 F .72(ws you to set these, b)-.25 F .72(ut relinquishes)-.2 F EP
-%%Page: 20 15
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-20 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
-(its setuid root permissions thereafter)102 98 Q/F2 7/Times-Roman@0 SF(10)
-247.54 94 Q F1(.)254.54 98 Q F0 2.5(3.6. T)87 122 R(rying a Differ)-.74 E
-(ent Con\214guration File)-.18 E F1(An alternati)127 138.2 Q .3 -.15(ve c)-.25
-H(on\214guration \214le can be speci\214ed using the).15 E F0<ad43>2.5 E F1
-(\215ag; for e)2.5 E(xample,)-.15 E
-(/usr/sbin/sendmail \255Ctest.cf \255oQ/tmp/mqueue)142 154.4 Q .429
-(uses the con\214guration \214le)102 170.6 R/F3 10/Times-Italic@0 SF(test.cf)
-2.928 E F1 .428(instead of the def)2.928 F(ault)-.1 E F3(/etc/sendmail.cf)2.928
-E(.)-.15 E F1 .428(If the)5.428 F F0<ad43>2.928 E F1 .428(\215ag has no v)2.928
-F(alue)-.25 E(it def)102 182.6 Q(aults to)-.1 E F3(sendmail.cf)2.5 E F1
-(in the current directory)2.5 E(.)-.65 E F3(Sendmail)127 198.8 Q F1(gi)2.679 E
--.15(ve)-.25 G 2.679(su).15 G 2.679(pi)195.288 198.8 S .18
-(ts setuid root permissions when you use this \215ag, so it is common to use a)
-205.747 198.8 R .069(publicly writable directory \(such as /tmp\) as the spool\
- directory \(QueueDirectory or Q option\) while)102 210.8 R(testing.)102 222.8
-Q F0 2.5(3.7. Logging)87 246.8 R -.74(Tr)2.5 G(af\214c).74 E F1(Man)127 263 Q
-3.254(yS)-.15 G .754(MTP implementations do not fully implement the protocol.)
-158.994 263 R -.15(Fo)5.754 G 3.254(re).15 G .755(xample, some per)428.54 263 R
-(-)-.2 E 1.178(sonal computer based SMTPs do not understand continuation lines\
- in reply codes.)102 275 R 1.177(These can be)6.178 F -.15(ve)102 287 S .13
-(ry hard to trace.).15 F .13(If you suspect such a problem, you can set traf)
-5.13 F .13(\214c logging using the)-.25 F F0<ad58>2.63 E F1 2.63(\215ag. F)2.63
-F(or)-.15 E -.15(ex)102 299 S(ample,).15 E(/usr/sbin/sendmail \255X /tmp/traf)
-142 315.2 Q(\214c \255bd)-.25 E(will log all traf)102 331.4 Q
-(\214c in the \214le)-.25 E F3(/tmp/tr)2.5 E(af)-.15 E<8c63>-.18 E F1(.)A .998
-(This logs a lot of data v)127 347.6 R .997(ery quickly and should)-.15 F F0
-(NEVER)3.497 E F1 .997(be used during normal operations.)3.497 F .962(After st\
-arting up such a daemon, force the errant implementation to send a message to \
-your host.)102 359.6 R .609(All message traf)102 371.6 R .609
-(\214c in and out of)-.25 F F3(sendmail)3.109 E F1 3.109(,i)C .609
-(ncluding the incoming SMTP traf)281.882 371.6 R .608(\214c, will be logged in)
--.25 F(this \214le.)102 383.6 Q F0 2.5(3.8. T)87 407.6 R
-(esting Con\214guration Files)-.92 E F1 .643(When you b)127 423.8 R .644(uild \
-a con\214guration table, you can do a certain amount of testing using the \231\
-test)-.2 F(mode\232 of)102 435.8 Q F3(sendmail)2.5 E F1 5(.F)C(or e)191.01
-435.8 Q(xample, you could in)-.15 E -.2(vo)-.4 G -.1(ke).2 G F3(sendmail)2.6 E
-F1(as:)2.5 E(sendmail \255bt \255Ctest.cf)142 452 Q .448(which w)102 468.2 R
-.448(ould read the con\214guration \214le \231test.cf\232 and enter test mode.)
--.1 F .447(In this mode, you enter lines)5.447 F(of the form:)102 480.2 Q
-(rwset address)142 496.4 Q(where)102 512.6 Q F3(rwset)3.006 E F1 .506
-(is the re)3.006 F .506(writing set you w)-.25 F .506(ant to use and)-.1 F F3
-(addr)3.007 E(ess)-.37 E F1 .507(is an address to apply the set to.)3.007 F -.7
-(Te)5.507 G(st).7 E .794(mode sho)102 524.6 R .794(ws you the steps it tak)-.25
-F .794(es as it proceeds, \214nally sho)-.1 F .794
-(wing you the address it ends up with.)-.25 F -1.1(Yo)102 536.6 S 3.331(um)1.1
-G .832(ay use a comma separated list of rwsets for sequential application of r\
-ules to an input.)129.231 536.6 R -.15(Fo)5.832 G(r).15 E -.15(ex)102 548.6 S
-(ample:).15 E(3,1,21,4 monet:bollard)142 564.8 Q .622
-(\214rst applies ruleset three to the input \231monet:bollard.)102 581 R 5.622
-<9a52>-.7 G .622(uleset one is then applied to the output of)334.036 581 R
-(ruleset three, follo)102 593 Q(wed similarly by rulesets twenty-one and four)
--.25 E(.)-.55 E 1.084(If you need more detail, you can also use the \231\255d2\
-1\232 \215ag to turn on more deb)127 609.2 R 3.585(ugging. F)-.2 F(or)-.15 E
--.15(ex)102 621.2 S(ample,).15 E(sendmail \255bt \255d21.99)142 637.4 Q .689
-(turns on an incredible amount of information; a single w)102 653.6 R .688
-(ord address is probably going to print out)-.1 F(se)102 665.6 Q -.15(ve)-.25 G
-(ral pages w).15 E(orth of information.)-.1 E .32 LW 76 678.8 72 678.8 DL 80
-678.8 76 678.8 DL 84 678.8 80 678.8 DL 88 678.8 84 678.8 DL 92 678.8 88 678.8
-DL 96 678.8 92 678.8 DL 100 678.8 96 678.8 DL 104 678.8 100 678.8 DL 108 678.8
-104 678.8 DL 112 678.8 108 678.8 DL 116 678.8 112 678.8 DL 120 678.8 116 678.8
-DL 124 678.8 120 678.8 DL 128 678.8 124 678.8 DL 132 678.8 128 678.8 DL 136
-678.8 132 678.8 DL 140 678.8 136 678.8 DL 144 678.8 140 678.8 DL 148 678.8 144
-678.8 DL 152 678.8 148 678.8 DL 156 678.8 152 678.8 DL 160 678.8 156 678.8 DL
-164 678.8 160 678.8 DL 168 678.8 164 678.8 DL 172 678.8 168 678.8 DL 176 678.8
-172 678.8 DL 180 678.8 176 678.8 DL 184 678.8 180 678.8 DL 188 678.8 184 678.8
-DL 192 678.8 188 678.8 DL 196 678.8 192 678.8 DL 200 678.8 196 678.8 DL 204
-678.8 200 678.8 DL 208 678.8 204 678.8 DL 212 678.8 208 678.8 DL 216 678.8 212
-678.8 DL/F4 5/Times-Roman@0 SF(10)93.6 689.2 Q/F5 8/Times-Roman@0 SF .497
-(That is, it sets its ef)3.2 J(fecti)-.2 E .737 -.12(ve u)-.2 H .497
-(id to the real uid; thus, if you are e).12 F -.12(xe)-.12 G .497
-(cuting as root, as from root').12 F 2.497(sc)-.44 G .497
-(rontab \214le or during system)413.572 692.4 R
-(startup the root permissions will still be honored.)72 702 Q EP
-%%Page: 21 16
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-21)452.9 60 Q/F1 10/Times-Roman@0 SF -1.1(Yo)127 96 S 2.574(us)1.1 G
-.074(hould be w)149.584 96 R .074(arned that internally)-.1 F(,)-.65 E/F2 10
-/Times-Italic@0 SF(sendmail)2.575 E F1 .075
-(applies ruleset 3 to all addresses.)2.575 F .075(In test mode)5.075 F
-(you will ha)102 108 Q .3 -.15(ve t)-.2 H 2.5(od).15 G 2.5(ot)173.87 108 S
-(hat manually)184.15 108 Q 5(.F)-.65 G(or e)248.35 108 Q(xample, older v)-.15 E
-(ersions allo)-.15 E(wed you to use)-.25 E 2.5(0b)142 124.2 S
-(ruce@broadcast.son)154.5 124.2 Q -.65(y.)-.15 G(com).65 E(This v)102 140.4 Q
-(ersion requires that you use:)-.15 E(3,0 bruce@broadcast.son)142 156.6 Q -.65
-(y.)-.15 G(com).65 E(As of v)127 177 Q(ersion 8.7, some other syntax)-.15 E
-(es are a)-.15 E -.25(va)-.2 G(ilable in test mode:).25 E 5<832e>107 193.2 S
-1.666(Dxv)118 193.2 S .328(alue de\214nes macro)-1.916 F F2(x)2.828 E F1 .328
-(to ha)2.828 F .628 -.15(ve t)-.2 H .328(he indicated).15 F F2(value)2.828 E F1
-5.328(.T)C .328(his is useful when deb)346.134 193.2 R .327(ugging rules that)
--.2 F(use the)115.5 205.2 Q F0($&)2.5 E F2(x)A F1(syntax.)2.5 E 5<832e>107
-217.2 S 1.666(Ccv)118 217.2 S(alue adds the indicated)-1.916 E F2(value)2.5 E
-F1(to class)2.5 E F2(c)2.5 E F1(.)A 5<832e>107 229.2 S 1.666(Sr)118 229.2 S
-(uleset dumps the contents of the indicated ruleset.)-1.666 E 5<83ad>107 241.2
-S 1.666(dd)121.14 241.2 S(eb)-1.666 E(ug-spec is equi)-.2 E -.25(va)-.25 G
-(lent to the command-line \215ag.).25 E F0 2.5(4. TUNING)72 265.2 R F1 1.922
-(There are a number of con\214guration parameters you may w)112 281.4 R 1.922
-(ant to change, depending on the)-.1 F .367(requirements of your site.)87 293.4
-R .366(Most of these are set using an option in the con\214guration \214le.)
-5.367 F -.15(Fo)5.366 G 2.866(re).15 G(xample,)472.06 293.4 Q(the line \231O T)
-87 305.4 Q(imeout.queuereturn=5d\232 sets option \231T)-.35 E
-(imeout.queuereturn\232 to the v)-.35 E(alue \2315d\232 \(\214v)-.25 E 2.5(ed)
--.15 G(ays\).)476.47 305.4 Q .735(Most of these options ha)112 321.6 R 1.035
--.15(ve a)-.2 H .735(ppropriate def).15 F .735(aults for most sites.)-.1 F(Ho)
-5.735 E(we)-.25 E -.15(ve)-.25 G 1.535 -.4(r, s).15 H .735(ites ha).4 F .735
-(ving v)-.2 F .735(ery high)-.15 F .046(mail loads may \214nd the)87 333.6 R
-2.546(yn)-.15 G .046(eed to tune them as appropriate for their mail load.)
-193.47 333.6 R .045(In particular)5.045 F 2.545(,s)-.4 G .045(ites e)459.395
-333.6 R(xperi-)-.15 E 1.087(encing a lar)87 345.6 R 1.087
-(ge number of small messages, man)-.18 F 3.587(yo)-.15 G 3.588(fw)294.496 345.6
-S 1.088(hich are deli)308.634 345.6 R -.15(ve)-.25 G 1.088(red to man).15 F
-3.588(yr)-.15 G 1.088(ecipients, may \214nd)425.994 345.6 R(that the)87 357.6 Q
-2.5(yn)-.15 G(eed to adjust the parameters dealing with queue priorities.)
-129.07 357.6 Q .524(All v)112 373.8 R .524(ersions of)-.15 F F2(sendmail)3.024
-E F1 .524(prior to 8.7 had single character option names.)3.024 F .523
-(As of 8.7, options ha)5.524 F -.15(ve)-.2 G 1.215
-(long \(multi-character names\).)87 385.8 R 1.216
-(Although old short names are still accepted, most ne)6.215 F 3.716(wo)-.25 G
-1.216(ptions do not)449.338 385.8 R(ha)87 397.8 Q .3 -.15(ve s)-.2 H(hort equi)
-.15 E -.25(va)-.25 G(lents.).25 E .802
-(This section only describes the options you are most lik)112 414 R .802
-(ely to w)-.1 F .801(ant to tweak; read section 5 for)-.1 F(more details.)87
-426 Q F0 2.5(4.1. T)87 450 R(imeouts)-.18 E F1 .582(All time interv)127 466.2 R
-.583(als are set using a scaled syntax.)-.25 F -.15(Fo)5.583 G 3.083(re).15 G
-.583(xample, \23110m\232 represents ten minutes,)346.138 466.2 R
-(whereas \2312h30m\232 represents tw)102 478.2 Q 2.5(oa)-.1 G(nd a half hours.)
-241.3 478.2 Q(The full set of scales is:)5 E 16.11(ss)142 494.4 S(econds)165.89
-494.4 Q 12.22(mm)142 506.4 S(inutes)169.78 506.4 Q 15(hh)142 518.4 S(ours)167
-518.4 Q 15(dd)142 530.4 S(ays)167 530.4 Q 12.78(ww)142 542.4 S(eeks)169.22
-542.4 Q F0 2.5(4.1.1. Queue)102 570.6 R(inter)2.5 E -.1(va)-.1 G(l).1 E F1 .18
-(The ar)142 586.8 R .18(gument to the)-.18 F F0<ad71>2.68 E F1 .18
-(\215ag speci\214es ho)2.68 F 2.68(wo)-.25 G .18
-(ften a sub-daemon will run the queue.)319.25 586.8 R .18(This is)5.18 F .967
-(typically set to between \214fteen minutes and one hour)117 598.8 R 5.968(.R)
--.55 G .968(FC 1123 section 5.3.1.1 recommends)350.968 598.8 R
-(that this be at least 30 minutes.)117 610.8 Q F0 2.5(4.1.2. Read)102 634.8 R
-(timeouts)2.5 E F1 -.35(Ti)142 651 S 1.053(meouts all ha).35 F 1.352 -.15(ve o)
--.2 H 1.052(ption names \231T).15 F(imeout.)-.35 E F2(suboption)A F1 3.552
-(\232. The)B(recognized)3.552 E F2(suboption)3.552 E F1 1.052(s, their)B(def)
-117 663 Q(ault v)-.1 E(alues, and the minimum v)-.25 E(alues allo)-.25 E
-(wed by RFC 1123 section 5.3.2 are:)-.25 E 38.4(connect The)117 679.2 R .16
-(time to w)2.66 F .161(ait for an SMTP connection to open \(the)-.1 F F2
-(connect)2.661 E F1 .161(\(2\) system call\))B 1.154([0, unspeci\214ed].)189
-691.2 R 1.153(If zero, uses the k)6.153 F 1.153(ernel def)-.1 F 3.653(ault. In)
--.1 F 1.153(no case can this option)3.653 F -.15(ex)189 703.2 S .518
-(tend the timeout longer than the k).15 F .518(ernel pro)-.1 F .519(vides, b)
--.15 F .519(ut it can shorten it.)-.2 F(This)5.519 E .58(is to get around k)189
-715.2 R .579(ernels that pro)-.1 F .579
-(vide an absurdly long connection timeout \(90)-.15 F EP
-%%Page: 22 17
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-22 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
-(minutes in one case\).)189 96 Q 46.16(initial The)117 112.2 R -.1(wa)2.5 G
-(it for the initial 220 greeting message [5m, 5m].).1 E 52.28(helo The)117
-128.4 R -.1(wa)4.226 G 1.727
-(it for a reply from a HELO or EHLO command [5m, unspeci\214ed].).1 F .1
-(This may require a host name lookup, so \214v)189 140.4 R 2.6(em)-.15 G .1
-(inutes is probably a reasonable)380.29 140.4 R(minimum.)189 152.4 Q 46.72
-(mail\207 The)117 168.6 R -.1(wa)2.5 G
-(it for a reply from a MAIL command [10m, 5m].).1 E 48.95(rcpt\207 The)117
-184.8 R -.1(wa)3.481 G .981(it for a reply from a RCPT command [1h, 5m].).1 F
-.982(This should be long)5.982 F 1.556
-(because it could be pointing at a list that tak)189 196.8 R 1.556
-(es a long time to e)-.1 F 1.556(xpand \(see)-.15 F(belo)189 208.8 Q(w\).)-.25
-E 34.5(datainit\207 The)117 225 R -.1(wa)2.5 G(it for a reply from a D).1 E
--1.21 -1.11(AT A)-.4 H(command [5m, 2m].)3.61 E 25.62(datablock\207 The)117
-241.2 R -.1(wa)2.696 G .196
-(it for reading a data block \(that is, the body of the message\).).1 F .196
-([1h, 3m].)5.196 F .621
-(This should be long because it also applies to programs piping input to)189
-253.2 R/F2 10/Times-Italic@0 SF(send-)3.12 E(mail)189 265.2 Q F1(which ha)2.5 E
-.3 -.15(ve n)-.2 H 2.5(og).15 G(uarantee of promptness.)274.75 265.2 Q 30.06
-(data\214nal\207 The)117 281.4 R -.1(wa)2.806 G .306
-(it for a reply from the dot terminating a message.).1 F .306([1h, 10m].)5.306
-F .306(If this is)5.306 F .884
-(shorter than the time actually needed for the recei)189 293.4 R -.15(ve)-.25 G
-3.383(rt).15 G 3.383(od)412.881 293.4 S(eli)426.264 293.4 Q -.15(ve)-.25 G
-3.383(rt).15 G .883(he message,)454.797 293.4 R(duplicates will be generated.)
-189 305.4 Q(This is discussed in RFC 1047.)5 E 55.06(rset The)117 321.6 R -.1
-(wa)2.5 G(it for a reply from a RSET command [5m, unspeci\214ed].).1 E 53.94
-(quit The)117 337.8 R -.1(wa)2.5 G(it for a reply from a Q).1 E
-(UIT command [2m, unspeci\214ed].)-.1 E 50.61(misc The)117 354 R -.1(wa)2.76 G
-.261(it for a reply from miscellaneous \(b).1 F .261
-(ut short\) commands such as NOOP)-.2 F(\(no-operation\) and VERB \(go into v)
-189 366 Q(erbose mode\).)-.15 E([2m, unspeci\214ed].)5 E 25.06(command\207 In)
-117 382.2 R(serv)2.5 E(er SMTP)-.15 E 2.5(,t)-1.11 G(he time to w)259.4 382.2 Q
-(ait for another command.)-.1 E([1h, 5m].)5 E 49.5(ident The)117 400.4 R
-(timeout w)2.5 E(aiting for a reply to an IDENT query [30s)-.1 E/F3 7
-/Times-Roman@0 SF(11)413.86 396.4 Q F1 2.5(,u)420.86 400.4 S(nspeci\214ed].)
-430.86 400.4 Q -.15(Fo)117 416.6 S 4.609(rc).15 G 2.109
-(ompatibility with old con\214guration \214les, if no)139.789 416.6 R F2
-(suboption)4.608 E F1 2.108(is speci\214ed, all the timeouts)4.608 F(mark)117
-428.6 Q(ed with \207 are set to the indicated v)-.1 E(alue.)-.25 E(Man)142
-444.8 Q 2.5(yo)-.15 G 2.5(ft)172.68 444.8 S(he RFC 1123 minimum v)181.29 444.8
-Q .001(alues may well be too short.)-.25 F F2(Sendmail)5.001 E F1 -.1(wa)2.501
-G 2.501(sd).1 G .001(esigned to)463.169 444.8 R .712
-(the RFC 822 protocols, which did not specify read timeouts; hence, v)117 456.8
-R .711(ersions of)-.15 F F2(sendmail)3.211 E F1(prior)3.211 E .864(to v)117
-468.8 R .865(ersion 8.1 did not guarantee to reply to messages promptly)-.15 F
-5.865(.I)-.65 G 3.365(np)386.24 468.8 S(articular)399.605 468.8 Q 3.365(,a\231)
--.4 G .865(RCPT\232 com-)450.635 468.8 R .061
-(mand specifying a mailing list will e)117 480.8 R .061(xpand and v)-.15 F .06
-(erify the entire list; a lar)-.15 F .06(ge list on a slo)-.18 F 2.56(ws)-.25 G
-(ystem)480.11 480.8 Q .436(may easily tak)117 494.8 R 2.936(em)-.1 G .436
-(ore than \214v)190.698 494.8 R 2.936(em)-.15 G(inutes)252.126 494.8 Q F3(12)
-276.016 490.8 Q F1 5.436(.I)283.016 494.8 S .435
-(recommend a one hour timeout \212 since a commu-)297.218 494.8 R 1.365
-(nications f)117 506.8 R 1.366(ailure during the RCPT phase is rare, a long ti\
-meout is not onerous and may ulti-)-.1 F(mately help reduce netw)117 518.8 Q
-(ork load and duplicated messages.)-.1 E -.15(Fo)142 535 S 2.5(re).15 G
-(xample, the lines:)162.53 535 Q 2.5(OT)157 551.2 S(imeout.command=25m)172.48
-551.2 Q 2.5(OT)157 563.2 S(imeout.datablock=3h)172.48 563.2 Q .344
-(sets the serv)117 579.4 R .344(er SMTP command timeout to 25 minutes and the \
-input data block timeout to three)-.15 F(hours.)117 591.4 Q F0 2.5
-(4.1.3. Message)102 615.4 R(timeouts)2.5 E F1 .237
-(After sitting in the queue for a fe)142 631.6 R 2.737(wd)-.25 G .237
-(ays, a message will time out.)289.726 631.6 R .238(This is to insure that at)
-5.238 F .568(least the sender is a)117 643.6 R -.1(wa)-.15 G .568
-(re of the inability to send a message.).1 F .567
-(The timeout is typically set to \214v)5.568 F(e)-.15 E 2.599(days. It)117
-655.6 R .099(is sometimes considered con)2.599 F -.15(ve)-.4 G .099
-(nient to also send a w).15 F .1(arning message if the message is in)-.1 F .32
-LW 76 665.2 72 665.2 DL 80 665.2 76 665.2 DL 84 665.2 80 665.2 DL 88 665.2 84
-665.2 DL 92 665.2 88 665.2 DL 96 665.2 92 665.2 DL 100 665.2 96 665.2 DL 104
-665.2 100 665.2 DL 108 665.2 104 665.2 DL 112 665.2 108 665.2 DL 116 665.2 112
-665.2 DL 120 665.2 116 665.2 DL 124 665.2 120 665.2 DL 128 665.2 124 665.2 DL
-132 665.2 128 665.2 DL 136 665.2 132 665.2 DL 140 665.2 136 665.2 DL 144 665.2
-140 665.2 DL 148 665.2 144 665.2 DL 152 665.2 148 665.2 DL 156 665.2 152 665.2
-DL 160 665.2 156 665.2 DL 164 665.2 160 665.2 DL 168 665.2 164 665.2 DL 172
-665.2 168 665.2 DL 176 665.2 172 665.2 DL 180 665.2 176 665.2 DL 184 665.2 180
-665.2 DL 188 665.2 184 665.2 DL 192 665.2 188 665.2 DL 196 665.2 192 665.2 DL
-200 665.2 196 665.2 DL 204 665.2 200 665.2 DL 208 665.2 204 665.2 DL 212 665.2
-208 665.2 DL 216 665.2 212 665.2 DL/F4 5/Times-Roman@0 SF(11)93.6 675.6 Q/F5 8
-/Times-Roman@0 SF(On some systems the def)3.2 I
-(ault is zero to turn the protocol of)-.08 E 2(fe)-.2 G(ntirely)293.848 678.8 Q
-(.)-.52 E F4(12)93.6 689.2 Q F5 .212(This v)3.2 J .212
-(eri\214cation includes looking up e)-.12 F -.12(ve)-.2 G .212
-(ry address with the name serv).12 F .212(er; this in)-.12 F -.16(vo)-.32 G(lv)
-.16 E .212(es netw)-.12 F .213(ork delays, and can in some cases)-.08 F
-(can be considerable.)72 702 Q EP
-%%Page: 23 18
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-23)452.9 60 Q/F1 10/Times-Roman@0 SF .176(the queue longer than a fe)
-117 96 R 2.675(wh)-.25 G .175(ours \(assuming you normally ha)236.105 96 R .475
--.15(ve g)-.2 H .175(ood connecti).15 F .175(vity; if your mes-)-.25 F .645
-(sages normally took se)117 108 R -.15(ve)-.25 G .645(ral hours to send you w)
-.15 F(ouldn')-.1 E 3.145(tw)-.18 G .645(ant to do this because it w)355.055 108
-R(ouldn')-.1 E 3.145(tb)-.18 G(e)499.56 108 Q 3.871(an unusual e)117 120 R -.15
-(ve)-.25 G 6.371(nt\). These).15 F 3.871(timeouts are set using the)6.371 F F0
--.18(Ti)6.371 G(meout.queuer).18 E(etur)-.18 E(n)-.15 E F1(and)6.371 E F0 -.18
-(Ti)6.37 G(me-).18 E(out.queuewar)117 132 Q(n)-.15 E F1
-(options in the con\214guration \214le \(pre)2.5 E
-(viously both were set using the)-.25 E F0(T)2.5 E F1(option\).)2.5 E .106
-(Since these options are global, and since you can not kno)142 148.2 R(w)-.25 E
-/F2 10/Times-Italic@0 SF 2.606(ap)2.606 G(riori)393.822 148.2 Q F1(ho)2.607 E
-2.607(wl)-.25 G .107(ong another host)437.126 148.2 R .476
-(outside your domain will be do)117 160.2 R .475(wn, a \214v)-.25 F 2.975(ed)
--.15 G .475(ay timeout is recommended.)291.785 160.2 R .475(This allo)5.475 F
-.475(ws a recipient)-.25 F 1.579(to \214x the problem e)117 172.2 R -.15(ve)
--.25 G 4.079(ni).15 G 4.079(fi)222.545 172.2 S 4.079(to)232.734 172.2 S 1.579
-(ccurs at the be)244.593 172.2 R 1.58(ginning of a long week)-.15 F 4.08
-(end. RFC)-.1 F 1.58(1123 section)4.08 F
-(5.3.1.1 says that this parameter should be `)117 184.2 Q
-(`at least 4\2555 days')-.74 E('.)-.74 E(The)142 200.4 Q F0 -.18(Ti)2.923 G
-(meout.queuewar).18 E(n)-.15 E F1 -.25(va)2.923 G .423(lue can be piggyback).25
-F .422(ed on the)-.1 F F0(T)2.922 E F1 .422(option by indicating a time)2.922 F
-.845(after which a w)117 212.4 R .845(arning message should be sent; the tw)-.1
-F 3.346(ot)-.1 G .846(imeouts are separated by a slash.)349.104 212.4 R -.15
-(Fo)5.846 G(r).15 E -.15(ex)117 224.4 S(ample, the line).15 E -.4(OT)157 240.6
-S(5d/4h).4 E .972(causes email to f)117 256.8 R .971(ail after \214v)-.1 F
-3.471(ed)-.15 G .971(ays, b)245.329 256.8 R .971(ut a w)-.2 F .971
-(arning message will be sent after four hours.)-.1 F(This)5.971 E
-(should be lar)117 268.8 Q(ge enough that the message will ha)-.18 E .3 -.15
-(ve b)-.2 H(een tried se).15 E -.15(ve)-.25 G(ral times.).15 E F0 2.5(4.2. F)87
-292.8 R(orking During Queue Runs)-.25 E F1 .848(By setting the)127 309 R F0
--.25(Fo)3.348 G(rkEachJ).25 E(ob)-.15 E F1(\()3.348 E F0(Y)A F1 3.348(\)o)C
-(ption,)271.12 309 Q F2(sendmail)3.348 E F1 .849(will fork before each indi)
-3.348 F .849(vidual message)-.25 F .293(while running the queue.)102 321 R .293
-(This will pre)5.293 F -.15(ve)-.25 G(nt).15 E F2(sendmail)2.793 E F1 .293
-(from consuming lar)2.793 F .293(ge amounts of memory)-.18 F 2.792(,s)-.65 G(o)
-499 321 Q 1.11(it may be useful in memory-poor en)102 333 R 3.61
-(vironments. Ho)-.4 F(we)-.25 E -.15(ve)-.25 G 1.91 -.4(r, i).15 H 3.61(ft).4 G
-(he)359.95 333 Q F0 -.25(Fo)3.61 G(rkEachJ).25 E(ob)-.15 E F1 1.11
-(option is not set,)3.61 F F2(sendmail)102 345 Q F1 .085(will k)2.585 F .085
-(eep track of hosts that are do)-.1 F .084
-(wn during a queue run, which can impro)-.25 F .384 -.15(ve p)-.15 H
-(erformance).15 E(dramatically)102 357 Q(.)-.65 E(If the)127 373.2 Q F0 -.25
-(Fo)2.5 G(rkEachJ).25 E(ob)-.15 E F1(option is set,)2.5 E F2(sendmail)2.5 E F1
-(can not use connection caching.)2.5 E F0 2.5(4.3. Queue)87 397.2 R(Priorities)
-2.5 E F1(Ev)127 413.4 Q 1.128(ery message is assigned a priority when it is \
-\214rst instantiated, consisting of the message)-.15 F .286
-(size \(in bytes\) of)102 425.4 R .286(fset by the message class \(which is de\
-termined from the Precedence: header\) times)-.25 F .342(the \231w)102 437.4 R
-.342(ork class f)-.1 F .343
-(actor\232 and the number of recipients times the \231w)-.1 F .343
-(ork recipient f)-.1 F(actor)-.1 E 4.243 -.7(.\232 T)-.55 H .343(he priority).7
-F .073(is used to order the queue.)102 449.4 R .073
-(Higher numbers for the priority mean that the message will be processed)5.073
-F(later when running the queue.)102 461.4 Q .328
-(The message size is included so that lar)127 477.6 R .329
-(ge messages are penalized relati)-.18 F .629 -.15(ve t)-.25 H 2.829(os).15 G
-.329(mall messages.)443.121 477.6 R .285(The message class allo)102 489.6 R
-.285(ws users to send \231high priority\232 messages by including a \231Preced\
-ence:\232 \214eld)-.25 F .007(in their message; the v)102 501.6 R .007
-(alue of this \214eld is look)-.25 F .008(ed up in the)-.1 F F0(P)2.508 E F1
-.008(lines of the con\214guration \214le.)2.508 F .008(Since the)5.008 F 1.967
-(number of recipients af)102 513.6 R 1.967
-(fects the amount of load a message presents to the system, this is also)-.25 F
-(included into the priority)102 525.6 Q(.)-.65 E .53(The recipient and class f)
-127 541.8 R .53(actors can be set in the con\214guration \214le using the)-.1 F
-F0(RecipientF)3.03 E(actor)-.25 E F1(\()102 553.8 Q F0(y)A F1 3.443(\)a)C(nd)
-121.543 553.8 Q F0(ClassF)3.443 E(actor)-.25 E F1(\()3.442 E F0(z)A F1 3.442
-(\)o)C .942(ptions respecti)208.82 553.8 R -.15(ve)-.25 G(ly).15 E 5.942(.T)
--.65 G(he)298.534 553.8 Q 3.442(yd)-.15 G(ef)321.266 553.8 Q .942
-(ault to 30000 \(for the recipient f)-.1 F .942(actor\) and)-.1 F
-(1800 \(for the class f)102 565.8 Q 2.5(actor\). The)-.1 F
-(initial priority is:)2.5 E F2(pri)168.495 583.8 Q/F3 10/Symbol SF(=)3.16 E F2
-(msgsize)3.18 E F3(-)2.38 E F1(\()2.2 E F2(class).2 E F3<b4>2.47 E F0
-(ClassFactor\))2.2 E F3(+)2.2 E F1(\()2.2 E F2(nrcpt).36 E F3<b4>2.88 E F0
-(RecipientFactor\))2.2 E F1(\(Remember)102 601.8 Q 3.328(,h)-.4 G .828(igher v)
-159.638 601.8 R .828
-(alues for this parameter actually mean that the job will be treated with lo)
--.25 F(wer)-.25 E(priority)102 613.8 Q(.\))-.65 E 1.519(The priority of a job \
-can also be adjusted each time it is processed \(that is, each time an)127 630
-R .235(attempt is made to deli)102 642 R -.15(ve)-.25 G 2.736(ri).15 G .236
-(t\) using the \231w)211.938 642 R .236(ork time f)-.1 F(actor)-.1 E 1.636 -.7
-(,\232 s)-.4 H .236(et by the).7 F F0(RetryF)2.736 E(actor)-.25 E F1(\()2.736 E
-F0(Z)A F1 2.736(\)o)C 2.736(ption. This)457.924 642 R .367
-(is added to the priority)102 654 R 2.867(,s)-.65 G 2.867(oi)202.625 654 S
-2.867(tn)213.272 654 S .366
-(ormally decreases the precedence of the job, on the grounds that jobs)223.919
-654 R .137(that ha)102 666 R .437 -.15(ve f)-.2 H .137(ailed man).05 F 2.637
-(yt)-.15 G .137(imes will tend to f)193.598 666 R .137(ail ag)-.1 F .137
-(ain in the future.)-.05 F(The)5.137 E F0(RetryF)2.637 E(actor)-.25 E F1 .137
-(option def)2.637 F .138(aults to)-.1 F(90000.)102 678 Q EP
-%%Page: 24 19
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-24 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E 2.5(4.4. Load)87 96 R(Limiting)2.5 E/F1
-10/Times-Italic@0 SF(Sendmail)127 112.2 Q/F2 10/Times-Roman@0 SF .102
-(can be ask)2.602 F .101(ed to queue \(b)-.1 F .101(ut not deli)-.2 F -.15(ve)
--.25 G .101(r\) mail if the system load a).15 F -.15(ve)-.2 G .101
-(rage gets too high).15 F .483(using the)102 124.2 R F0(QueueLA)2.983 E F2(\()
-2.983 E F0(x)A F2 2.983(\)o)C 2.983(ption. When)206.152 124.2 R .483
-(the load a)2.983 F -.15(ve)-.2 G .483(rage e).15 F .483(xceeds the v)-.15 F
-.484(alue of the)-.25 F F0(QueueLA)2.984 E F2(option,)2.984 E .532(the deli)102
-136.2 R -.15(ve)-.25 G .532(ry mode is set to).15 F F0(q)3.032 E F2 .532
-(\(queue only\) if the)3.032 F F0(QueueF)3.032 E(actor)-.25 E F2(\()3.032 E F0
-(q)A F2 3.032(\)o)C .531(ption di)379.066 136.2 R .531(vided by the dif)-.25 F
-(ference)-.25 E .004(in the current load a)102 148.2 R -.15(ve)-.2 G .004
-(rage and the).15 F F0(QueueLA)2.504 E F2 .004(option plus one e)2.504 F .004
-(xceeds the priority of the message \212)-.15 F
-(that is, the message is queued if)102 160.2 Q(f:)-.25 E F1(pri)251.425 183.61
-Q F2(>)3.16 E F0(QueueFactor)287.21 176.61 Q F1(LA)276.475 190.61 Q/F3 10
-/Symbol SF(-)2.23 E F0(QueueLA)2.2 E F3(+)2.2 E .4 LW 354.625 181.01 275.895
-181.01 DL F2(1)349.625 190.61 Q(The)102 206.87 Q F0(QueueF)2.616 E(actor)-.25 E
-F2 .116(option def)2.616 F .116(aults to 600000, so each point of load a)-.1 F
--.15(ve)-.2 G .116(rage is w).15 F .116(orth 600000 priority)-.1 F
-(points \(as described abo)102 218.87 Q -.15(ve)-.15 G(\).).15 E -.15(Fo)127
-235.07 S 3.893(rd).15 G 1.393(rastic cases, the)149.633 235.07 R F0(RefuseLA)
-3.893 E F2(\()3.893 E F0(X)A F2 3.893(\)o)C 1.394(ption de\214nes a load a)
-288.228 235.07 R -.15(ve)-.2 G 1.394(rage at which).15 F F1(sendmail)3.894 E F2
-(will)3.894 E .69(refuse to accept netw)102 247.07 R .689(ork connections.)-.1
-F .689(Locally generated mail \(including incoming UUCP mail\) is)5.689 F
-(still accepted.)102 259.07 Q F0 2.5(4.5. Deli)87 283.07 R -.1(ve)-.1 G
-(ry Mode).1 E F2 .253(There are a number of deli)127 299.27 R -.15(ve)-.25 G
-.253(ry modes that).15 F F1(sendmail)2.753 E F2 .254
-(can operate in, set by the)2.753 F F0(Deli)2.754 E -.1(ve)-.1 G(ryMode).1 E F2
-(\()102 311.27 Q F0(d)A F2 3.599(\)c)C 1.099(on\214guration option.)122.259
-311.27 R 1.099(These modes specify ho)6.099 F 3.598(wq)-.25 G 1.098
-(uickly mail will be deli)324.142 311.27 R -.15(ve)-.25 G 3.598(red. Le).15 F
--.05(ga)-.15 G 3.598(lm).05 G(odes)485.67 311.27 Q(are:)102 323.27 Q 17.22(id)
-142 339.47 S(eli)167 339.47 Q -.15(ve)-.25 G 2.5(ri).15 G(nteracti)194.65
-339.47 Q -.15(ve)-.25 G(ly \(synchronously\)).15 E 15(bd)142 351.47 S(eli)167
-351.47 Q -.15(ve)-.25 G 2.5(ri).15 G 2.5(nb)194.65 351.47 S
-(ackground \(asynchronously\))207.15 351.47 Q 15(qq)142 363.47 S
-(ueue only \(don')167 363.47 Q 2.5(td)-.18 G(eli)240.42 363.47 Q -.15(ve)-.25 G
-(r\)).15 E 15(dd)142 375.47 S(efer delv)167 375.47 Q(ery attempts \(don')-.15 E
-2.5(td)-.18 G(eli)285.53 375.47 Q -.15(ve)-.25 G(r\)).15 E 1.273
-(There are tradeof)102 391.67 R 3.773(fs. Mode)-.25 F 1.273(\231i\232 gi)3.773
-F -.15(ve)-.25 G 3.773(st).15 G 1.273(he sender the quick)258.938 391.67 R
-1.273(est feedback, b)-.1 F 1.274(ut may slo)-.2 F 3.774(wd)-.25 G -.25(ow)
-462.146 391.67 S 3.774(ns).25 G(ome)486.78 391.67 Q .799
-(mailers and is hardly e)102 403.67 R -.15(ve)-.25 G 3.299(rn).15 G(ecessary)
-216.405 403.67 Q 5.799(.M)-.65 G .799(ode \231b\232 deli)266.814 403.67 R -.15
-(ve)-.25 G .799(rs promptly b).15 F .798(ut can cause lar)-.2 F .798
-(ge numbers of)-.18 F .223(processes if you ha)102 415.67 R .524 -.15(ve a m)
--.2 H .224(ailer that tak).15 F .224(es a long time to deli)-.1 F -.15(ve)-.25
-G 2.724(ram).15 G 2.724(essage. Mode)370.904 415.67 R .224
-(\231q\232 minimizes the)2.724 F .597(load on your machine, b)102 427.67 R .597
-(ut means that deli)-.2 F -.15(ve)-.25 G .596
-(ry may be delayed for up to the queue interv).15 F 3.096(al. Mode)-.25 F .039
-(\231d\232 is identical to mode \231q\232 e)102 439.67 R .039
-(xcept that it also pre)-.15 F -.15(ve)-.25 G .04
-(nts all the early map lookups from w).15 F .04(orking; it is)-.1 F .086
-(intended for `)102 451.67 R .086(`dial on demand')-.74 F 2.586('s)-.74 G .085
-(ites where DNS lookups might cost real mone)233.42 451.67 R 3.885 -.65(y. S)
--.15 H .085(ome simple error).65 F .817(messages \(e.g., host unkno)102 463.67
-R .817(wn during the SMTP protocol\) will be delayed using this mode.)-.25 F
-(Mode)5.818 E(\231b\232 is the usual def)102 475.67 Q(ault.)-.1 E .052(If you \
-run in mode \231q\232 \(queue only\), \231d\232 \(defer\), or \231b\232 \(deli)
-127 491.87 R -.15(ve)-.25 G 2.552(ri).15 G 2.552(nb)389.136 491.87 S
-(ackground\))401.688 491.87 Q F1(sendmail)2.551 E F2(will)2.551 E 1.391(not e)
-102 503.87 R 1.392(xpand aliases and follo)-.15 F 3.892(w.)-.25 G(forw)232.428
-503.87 Q 1.392(ard \214les upon initial receipt of the mail.)-.1 F 1.392
-(This speeds up the)6.392 F(response to RCPT commands.)102 515.87 Q
-(Mode \231i\232 cannot be used by the SMTP serv)5 E(er)-.15 E(.)-.55 E F0 2.5
-(4.6. Log)87 539.87 R(Le)2.5 E -.1(ve)-.15 G(l).1 E F2 .19(The le)127 556.07 R
--.15(ve)-.25 G 2.69(lo).15 G 2.69(fl)171.97 556.07 S .19(ogging can be set for)
-180.77 556.07 R F1(sendmail)2.689 E F2 5.189(.T)C .189(he def)317.996 556.07 R
-.189(ault using a standard con\214guration table)-.1 F(is le)102 568.07 Q -.15
-(ve)-.25 G 2.5(l9).15 G 5(.T)137.71 568.07 S(he le)151.32 568.07 Q -.15(ve)-.25
-G(ls are as follo).15 E(ws:)-.25 E 31(0N)102 584.27 S 2.5(ol)145.22 584.27 S
-(ogging.)155.5 584.27 Q 31(1S)102 600.47 S(erious system f)143.56 600.47 Q
-(ailures and potential security problems.)-.1 E 31(2L)102 616.67 S
-(ost communications \(netw)144.11 616.67 Q(ork problems\) and protocol f)-.1 E
-(ailures.)-.1 E 31(3O)102 632.87 S(ther serious f)145.22 632.87 Q(ailures.)-.1
-E 31(4M)102 649.07 S(inor f)146.89 649.07 Q(ailures.)-.1 E 31(5M)102 665.27 S
-(essage collection statistics.)146.89 665.27 Q 31(6C)102 681.47 S
-(reation of error messages, VRFY and EXPN commands.)144.67 681.47 Q 31(7D)102
-697.67 S(eli)145.22 697.67 Q -.15(ve)-.25 G(ry f).15 E
-(ailures \(host or user unkno)-.1 E(wn, etc.\).)-.25 E 31(8S)102 713.87 S
-(uccessful deli)143.56 713.87 Q -.15(ve)-.25 G(ries and alias database reb).15
-E(uilds.)-.2 E EP
-%%Page: 25 20
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-25)452.9 60 Q/F1 10/Times-Roman@0 SF 31(9M)102 96 S
-(essages being deferred \(due to a host being do)146.89 96 Q(wn, etc.\).)-.25 E
-23.5(10 Database)102 112.2 R -.15(ex)2.5 G(pansion \(alias, forw).15 E
-(ard, and userdb lookups\).)-.1 E 23.5(20 Logs)102 128.4 R .603
-(attempts to run lock)3.102 F .603(ed queue \214les.)-.1 F .603
-(These are not errors, b)5.603 F .603(ut can be useful to note if)-.2 F
-(your queue appears to be clogged.)138 140.4 Q 23.5(30 Lost)102 156.6 R
-(locks \(only if using lockf instead of \215ock\).)2.5 E(Additionally)102 172.8
-Q 2.717(,v)-.65 G .217(alues abo)161.877 172.8 R .516 -.15(ve 6)-.15 H 2.716
-(4a).15 G .216(re reserv)228.596 172.8 R .216(ed for e)-.15 F .216(xtremely v)
--.15 F .216(erbose deb)-.15 F .216(ugging output.)-.2 F .216(No normal site)
-5.216 F -.1(wo)102 184.8 S(uld e).1 E -.15(ve)-.25 G 2.5(rs).15 G(et these.)
-152.6 184.8 Q F0 2.5(4.7. File)87 208.8 R(Modes)2.5 E F1 .264
-(The modes used for \214les depend on what functionality you w)127 225 R .264
-(ant and the le)-.1 F -.15(ve)-.25 G 2.764(lo).15 G 2.764(fs)448.482 225 S .264
-(ecurity you)458.466 225 R(require.)102 237 Q F0 2.5(4.7.1. T)102 261 R 2.5(os)
--.92 G(uid or not to suid?)146.64 261 Q/F2 10/Times-Italic@0 SF(Sendmail)142
-277.2 Q F1 .934(can safely be made setuid to root.)3.434 F .934
-(At the point where it is about to)5.934 F F2 -.2(ex)3.433 G(ec).2 E F1 .933
-(\(2\) a)1.666 F(mailer)117 289.2 Q 2.582(,i)-.4 G 2.582(tc)150.012 289.2 S
-.082(hecks to see if the userid is zero; if so, it resets the userid and group\
-id to a def)159.814 289.2 R .083(ault \(set)-.1 F .577(by the)117 301.2 R F0(u)
-3.077 E F1(and)3.077 E F0(g)3.077 E F1 3.077(options\). \(This)3.077 F .576
-(can be o)3.076 F -.15(ve)-.15 G .576(rridden by setting the).15 F F0(S)3.076 E
-F1 .576(\215ag to the mailer for mailers)3.076 F 1.531
-(that are trusted and must be called as root.\))117 313.2 R(Ho)6.531 E(we)-.25
-E -.15(ve)-.25 G 2.331 -.4(r, t).15 H 1.532
-(his will cause mail processing to be).4 F(accounted \(using)117 325.2 Q F2(sa)
-2.5 E F1(\(8\)\) to root rather than to the user sending the mail.)1.666 E .339
-(If you don')142 341.4 R 2.839(tm)-.18 G(ak)200.887 341.4 Q(e)-.1 E F2
-(sendmail)2.839 E F1 .339(setuid to root, it will still run b)2.839 F .339
-(ut you lose a lot of functional-)-.2 F .007(ity and a lot of pri)117 353.4 R
--.25(va)-.25 G -.15(cy).25 G 2.507(,s)-.5 G .008(ince you')215.452 353.4 R .008
-(ll ha)-.1 F .308 -.15(ve t)-.2 H 2.508(om).15 G(ak)300.024 353.4 Q 2.508(et)
--.1 G .008(he queue directory w)319.092 353.4 R .008(orld readable.)-.1 F -1.1
-(Yo)5.008 G 2.508(uc)1.1 G(ould)486.22 353.4 Q .501(also mak)117 365.4 R(e)-.1
-E F2(sendmail)3.001 E F1 .501(setuid to some pseudo-user \(e.g., create a user\
- called \231sendmail\232 and mak)3.001 F(e)-.1 E F2(sendmail)117 377.4 Q F1
-1.533(setuid to that\) which will \214x the pri)4.033 F -.25(va)-.25 G 1.834
--.15(cy p).25 H 1.534(roblems b).15 F 1.534(ut not the functionality issues.)
--.2 F .642(Also, this isn')117 389.4 R 3.142(tag)-.18 G .641
-(uarantee of security: for e)192.448 389.4 R .641
-(xample, root occasionally sends mail, and the dae-)-.15 F
-(mon often runs as root.)117 401.4 Q F0 2.5(4.7.2. Should)102 425.4 R
-(my alias database be writable?)2.5 E F1 .058(At Berk)142 441.6 R(ele)-.1 E
-2.558(yw)-.15 G 2.558(eh)200.186 441.6 S -2.25 -.2(av e)212.184 441.6 T .058
-(the alias database \(/etc/aliases*\) mode 644.)2.758 F .058
-(While this is not as \215e)5.058 F(x-)-.15 E 1.719
-(ible as if the database were more 666, it a)117 453.6 R -.2(vo)-.2 G 1.718
-(ids potential security problems with a globally).2 F(writable database.)117
-465.6 Q 1.19(The database that)142 481.8 R F2(sendmail)3.69 E F1 1.191
-(actually used is represented by the tw)3.691 F 3.691<6f8c>-.1 G(les)429.118
-481.8 Q F2(aliases.dir)3.691 E F1(and)3.691 E F2(aliases.pa)117 493.8 Q(g)-.1 E
-F1 .159(\(both in /etc\) \(or)2.659 F F2(aliases.db)2.659 E F1 .159
-(if you are running with the ne)2.659 F 2.658(wB)-.25 G(erk)412.854 493.8 Q
-(ele)-.1 E 2.658(yd)-.15 G .158(atabase prim-)449.692 493.8 R(iti)117 505.8 Q
--.15(ve)-.25 G 3.606(s\). The).15 F 1.107
-(mode on these \214les should match the mode on /etc/aliases.)3.606 F(If)6.107
-E F2(aliases)3.607 E F1 1.107(is writable)3.607 F 1.624(and the DBM \214les \()
-117 517.8 R F2(aliases.dir)A F1(and)4.124 E F2(aliases.pa)4.124 E(g)-.1 E F1
-4.124(\)a)C 1.624(re not, users will be unable to re\215ect their)324.648 517.8
-R .719(desired changes through to the actual database.)117 529.8 R(Ho)5.719 E
-(we)-.25 E -.15(ve)-.25 G 1.519 -.4(r, i).15 H(f).4 E F2(aliases)3.219 E F1 .72
-(is read-only and the DBM)3.219 F(\214les are writable, a slightly sophisticat\
-ed user can arrange to steal mail an)117 541.8 Q(yw)-.15 E(ay)-.1 E(.)-.65 E
-.621(If your DBM \214les are not writable by the w)142 558 R .62
-(orld or you do not ha)-.1 F .92 -.15(ve a)-.2 H(uto-reb).15 E .62
-(uild enabled)-.2 F 3.028(\(with the)117 570 R F0 -.5(Au)5.528 G(toReb).5 E
-(uildAliases)-.2 E F1 3.028
-(option\), then you must be careful to reconstruct the alias)5.528 F
-(database each time you change the te)117 582 Q(xt v)-.15 E(ersion:)-.15 E(ne)
-157 598.2 Q -.1(wa)-.25 G(liases).1 E(If this step is ignored or for)117 614.4
-Q(gotten an)-.18 E 2.5(yi)-.15 G(ntended changes will also be ignored or for)
-273.32 614.4 Q(gotten.)-.18 E F0 2.5(4.8. Connection)87 638.4 R(Caching)2.5 E
-F1 .642(When processing the queue,)127 654.6 R F2(sendmail)3.142 E F1 .642
-(will try to k)3.142 F .642(eep the last fe)-.1 F 3.142(wo)-.25 G .642
-(pen connections open to)405.144 654.6 R -.2(avo)102 666.6 S
-(id startup and shutdo).2 E(wn costs.)-.25 E
-(This only applies to IPC connections.)5 E .286
-(When trying to open a connection the cache is \214rst searched.)127 682.8 R
-.287(If an open connection is found,)5.286 F .92
-(it is probed to see if it is still acti)102 694.8 R 1.22 -.15(ve b)-.25 H 3.42
-(ys).15 G .92(ending a)270.892 694.8 R/F3 9/Times-Roman@0 SF(NOOP)3.42 E F1
-3.42(command. It)3.42 F .92(is not an error if this f)3.42 F(ails;)-.1 E
-(instead, the connection is closed and reopened.)102 706.8 Q EP
-%%Page: 26 21
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-26 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF -1 -.8(Tw o)127
-96 T .408(parameters control the connection cache.)3.708 F(The)5.408 E F0
-(ConnectionCacheSize)2.908 E F1(\()2.908 E F0(k)A F1 2.908(\)o)C .408
-(ption de\214nes)452.202 96 R .145
-(the number of simultaneous open connections that will be permitted.)102 108 R
-.145(If it is set to zero, connections)5.145 F .212
-(will be closed as quickly as possible.)102 120 R .212(The def)5.212 F .212
-(ault is one.)-.1 F .213(This should be set as appropriate for your)5.212 F .63
-(system size; it will limit the amount of system resources that)102 132 R/F2 10
-/Times-Italic@0 SF(sendmail)3.129 E F1 .629(will use during queue runs.)3.129 F
-(Ne)102 144 Q -.15(ve)-.25 G 2.5(rs).15 G(et this higher than 4.)132.42 144 Q
-(The)127 160.2 Q F0(ConnectionCacheT)2.74 E(imeout)-.18 E F1(\()2.741 E F0(K)A
-F1 2.741(\)o)C .241(ption speci\214es the maximum time that an)281.692 160.2 R
-2.741(yc)-.15 G .241(ached con-)460.169 160.2 R .9
-(nection will be permitted to idle.)102 172.2 R .899(When the idle time e)5.9 F
-.899(xceeds this v)-.15 F .899(alue the connection is closed.)-.25 F .34
-(This number should be small \(under ten minutes\) to pre)102 184.2 R -.15(ve)
--.25 G .34(nt you from grabbing too man).15 F 2.84(yr)-.15 G(esources)469.57
-184.2 Q(from other hosts.)102 196.2 Q(The def)5 E(ault is \214v)-.1 E 2.5(em)
--.15 G(inutes.)257.57 196.2 Q F0 2.5(4.9. Name)87 220.2 R(Ser)2.5 E -.1(ve)-.1
-G 2.5(rA).1 G(ccess)172.33 220.2 Q F1 .104
-(Control of host address lookups is set by the)127 236.4 R F0(hosts)2.604 E F1
-.103(service entry in your service switch \214le.)2.603 F(If)5.103 E .99
-(you are on a system that has b)102 248.4 R .99
-(uilt-in service switch support \(e.g., Ultrix, Solaris, or DEC OSF/1\))-.2 F
-.336(then your system is probably con\214gured properly already)102 260.4 R
-5.335(.O)-.65 G(therwise,)347.885 260.4 Q F2(sendmail)2.835 E F1 .335
-(will consult the \214le)2.835 F F0(/etc/ser)102 272.4 Q(vice.switch)-.1 E F1
-2.5(,w)C(hich should be created.)191.04 272.4 Q F2(Sendmail)5 E F1
-(only uses tw)2.5 E 2.5(oe)-.1 G(ntries:)389.8 272.4 Q F0(hosts)2.5 E F1(and)
-2.5 E F0(aliases)2.5 E F1(.)A(Ho)127 288.6 Q(we)-.25 E -.15(ve)-.25 G .908 -.4
-(r, s).15 H .108(ome systems \(such as SunOS\) will do DNS lookups re).4 F -.05
-(ga)-.15 G .108(rdless of the setting of the).05 F 1.558(service switch entry)
-102 300.6 R 6.558(.I)-.65 G 4.058(np)196.834 300.6 S(articular)210.892 300.6 Q
-4.058(,t)-.4 G 1.558(he system routine)253.15 300.6 R F2 -.1(ge)4.058 G
-(thostbyname).1 E F1 1.558(\(3\) is used to look up host)B .461(names, and man)
-102 312.6 R 2.961(yv)-.15 G .461(endor v)180.293 312.6 R .461
-(ersions try some combination of DNS, NIS, and \214le lookup in /etc/hosts)-.15
-F .537(without consulting a service switch.)102 324.6 R F2(Sendmail)5.537 E F1
-(mak)3.037 E .536(es no attempt to w)-.1 F .536(ork around this problem, and)
--.1 F .27(the DNS lookup will be done an)102 336.6 R(yw)-.15 E(ay)-.1 E 5.27
-(.I)-.65 G 2.77(fy)264.36 336.6 S .271(ou do not ha)275.46 336.6 R .571 -.15
-(ve a n)-.2 H(ameserv).15 E .271(er con\214gured at all, such as at)-.15 F
-2.855(aU)102 348.6 S .355(UCP-only site,)116.515 348.6 R F2(sendmail)2.855 E F1
-.354
-(will get a \231connection refused\232 message when it tries to connect to the)
-2.855 F .622(name serv)102 360.6 R(er)-.15 E 5.622(.I)-.55 G 3.122(ft)161.964
-360.6 S(he)171.196 360.6 Q F0(hosts)3.122 E F1 .623
-(switch entry has the service \231dns\232 listed some)3.122 F .623
-(where in the list,)-.25 F F2(sendmail)3.123 E F1 .912
-(will interpret this to mean a temporary f)102 372.6 R .912
-(ailure and will queue the mail for later processing; other)-.1 F(-)-.2 E
-(wise, it ignores the name serv)102 384.6 Q(er data.)-.15 E .672
-(The same technique is used to decide whether to do MX lookups.)127 400.8 R
-.673(If you w)5.673 F .673(ant MX support,)-.1 F(you)102 412.8 Q F2(must)2.5 E
-F1(ha)2.5 E .3 -.15(ve \231)-.2 H(dns\232 listed as a service in the).15 E F0
-(hosts)2.5 E F1(switch entry)2.5 E(.)-.65 E(The)127 429 Q F0(Resolv)3.87 E
-(erOptions)-.1 E F1(\()3.87 E F0(I)A F1 3.869(\)o)C 1.369(ption allo)240.719
-429 R 1.369(ws you to tweak name serv)-.25 F 1.369(er options.)-.15 F 1.369
-(The command)6.369 F .892(line tak)102 441 R .892
-(es a series of \215ags as documented in)-.1 F F2 -.37(re)3.392 G(solver).37 E
-F1 .892(\(3\) \(with the leading \231RES_\232 deleted\).)B(Each)5.892 E
-(can be preceded by an optional `+' or `)102 453 Q/F3 10/Symbol SF(-)A F1 2.5
-('. F)B(or e)-.15 E(xample, the line)-.15 E 2.5(OR)142 469.2 S(esolv)158.39
-469.2 Q(erOptions=+AA)-.15 E(ONL)-.55 E(Y)-1 E F3(-)2.5 E F1(DNSRCH)A .862
-(turns on the AA)102 485.4 R(ONL)-.55 E 3.362(Y\()-1 G .862(accept authoritati)
-201.658 485.4 R 1.162 -.15(ve a)-.25 H .861(nswers only\) and turns of).15 F
-3.361(ft)-.25 G .861(he DNSRCH \(search the)402.827 485.4 R 2.039
-(domain path\) options.)102 497.4 R 2.039(Most resolv)7.039 F 2.039
-(er libraries def)-.15 F 2.039(ault DNSRCH, DEFN)-.1 F 2.039(AMES, and RECURSE)
--.35 F .503(\215ags on and all others of)102 509.4 R 3.003(f. Y)-.25 F .503
-(ou can also include \231HasW)-1.1 F .503
-(ildcardMX\232 to specify that there is a wild-)-.4 F 1.972
-(card MX record matching your domain; this turns of)102 521.4 R 4.472(fM)-.25 G
-4.473(Xm)344.188 521.4 S 1.973(atching when canonifying names,)363.661 521.4 R
-(which can lead to inappropriate canoni\214cations.)102 533.4 Q -1.11(Ve)127
-549.6 S 2.257(rsion le)1.11 F -.15(ve)-.25 G 4.757(l1c).15 G 2.256
-(on\214gurations turn DNSRCH and DEFN)200.301 549.6 R 2.256(AMES of)-.35 F
-4.756(fw)-.25 G 2.256(hen doing deli)424.898 549.6 R -.15(ve)-.25 G(ry).15 E
-2.06(lookups, b)102 561.6 R 2.06(ut lea)-.2 F 2.36 -.15(ve t)-.2 H 2.06
-(hem on e).15 F -.15(ve)-.25 G 2.06(rywhere else.).15 F -1.11(Ve)7.06 G 2.06
-(rsion 8 of)1.11 F F2(sendmail)4.56 E F1 2.06(ignores them when doing)4.56 F
-.313(canoni\214cation lookups \(that is, when using $[ ... $]\), and al)102
-573.6 R -.1(wa)-.1 G .313(ys does the search.).1 F .313(If you don')5.313 F
-2.812(tw)-.18 G(ant)491.78 573.6 Q(to do automatic name e)102 585.6 Q
-(xtension, don')-.15 E 2.5(tc)-.18 G(all $[ ... $].)261.93 585.6 Q .485
-(The search rules for $[ ... $] are some)127 601.8 R .485(what dif)-.25 F .485
-(ferent than usual.)-.25 F .486(If the name being look)5.485 F .486(ed up)-.1 F
-.11(has at least one dot, it al)102 613.8 R -.1(wa)-.1 G .11
-(ys tries the unmodi\214ed name \214rst.).1 F .109(If that f)5.109 F .109
-(ails, it tries the reduced search)-.1 F .124
-(path, and lastly tries the unmodi\214ed name \(b)102 625.8 R .124
-(ut only for names without a dot, since names with a dot)-.2 F(ha)102 637.8 Q
-.789 -.15(ve a)-.2 H .489(lready been tried\).).15 F .489(This allo)5.489 F
-.489(ws names such as `)-.25 F(`utc.CS')-.74 E 2.989('t)-.74 G 2.988(om)362.81
-637.8 S .488(atch the site in Czechoslo)378.578 637.8 R -.25(va)-.15 G(kia).25
-E 1.587(rather than the site in your local Computer Science department.)102
-649.8 R 1.588(It also prefers A and CN)6.587 F(AME)-.35 E .513(records o)102
-661.8 R -.15(ve)-.15 G 3.013(rM).15 G 3.013(Xr)163.816 661.8 S .513
-(ecords \212 that is, if it \214nds an MX record it mak)177.379 661.8 R .512
-(es note of it, b)-.1 F .512(ut k)-.2 F .512(eeps looking.)-.1 F 1.541(This w)
-102 673.8 R(ay)-.1 E 4.041(,i)-.65 G 4.041(fy)149.052 673.8 S 1.541(ou ha)
-161.423 673.8 R 1.841 -.15(ve a w)-.2 H 1.541
-(ildcard MX record matching your domain, it will not assume that all).15 F
-(names match.)102 685.8 Q 3.454 -.8(To c)127 702 T 1.853(ompletely turn of).8 F
-4.353(fa)-.25 G 1.853(ll name serv)231.123 702 R 1.853
-(er access on systems without service switch support)-.15 F .578
-(\(such as SunOS\) you will ha)102 714 R .878 -.15(ve t)-.2 H 3.078(or).15 G
-.579(ecompile with \255DN)245.406 714 R .579(AMED_BIND=0 and remo)-.35 F .879
--.15(ve \255)-.15 H .579(lresolv from).15 F EP
-%%Page: 27 22
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-27)452.9 60 Q/F1 10/Times-Roman@0 SF
-(the list of libraries to be searched when linking.)102 96 Q F0 2.5(4.10. Mo)87
-120 R(ving the P)-.1 E(er)-.2 E(-User F)-.37 E(orward Files)-.25 E F1 .772
-(Some sites mount each user')127 136.2 R 3.272(sh)-.55 G .772
-(ome directory from a local disk on their w)256.13 136.2 R .772
-(orkstation, so that)-.1 F .575(local access is f)102 148.2 R 3.075(ast. Ho)-.1
-F(we)-.25 E -.15(ve)-.25 G 1.375 -.4(r, t).15 H .575(he result is that .forw).4
-F .575(ard \214le lookups are slo)-.1 F 4.376 -.65(w. I)-.25 H 3.076(ns).65 G
-.576(ome cases, mail)439.248 148.2 R .216(can e)102 160.2 R -.15(ve)-.25 G
-2.716(nb).15 G 2.716(ed)144.792 160.2 S(eli)156.948 160.2 Q -.15(ve)-.25 G .216
-(red on machines inappropriately because of a \214le serv).15 F .216
-(er being do)-.15 F 2.716(wn. The)-.25 F(perfor)2.716 E(-)-.2 E
-(mance can be especially bad if you run the automounter)102 172.2 Q(.)-.55 E
-(The)127 188.4 Q F0 -.25(Fo)2.743 G(rwardP).25 E(ath)-.1 E F1(\()2.743 E F0(J)A
-F1 2.743(\)o)C .243(ption allo)224.859 188.4 R .243
-(ws you to set a path of forw)-.25 F .243(ard \214les.)-.1 F -.15(Fo)5.243 G
-2.743(re).15 G .244(xample, the con-)436.582 188.4 R(\214g \214le line)102
-200.4 Q 2.5(OF)142 216.6 S(orw)157.13 216.6 Q(ardP)-.1 E(ath=/v)-.15 E(ar/forw)
--.25 E(ard/$u:$z/.forw)-.1 E(ard.$w)-.1 E -.1(wo)102 232.8 S .208
-(uld \214rst look for a \214le with the same name as the user').1 F 2.707(sl)
--.55 G .207(ogin in /v)343.191 232.8 R(ar/forw)-.25 E .207
-(ard; if that is not found)-.1 F 1.17(\(or is inaccessible\) the \214le `)102
-244.8 R(`.forw)-.74 E(ard.)-.1 E/F2 10/Times-Italic@0 SF(mac)A(hinename)-.15 E
-F1 2.651 -.74('' i)D 3.671(nt).74 G 1.171(he user')337.014 244.8 R 3.671(sh)
--.55 G 1.171(ome directory is searched.)382.126 244.8 R(A)6.171 E(truly perv)
-102 256.8 Q(erse site could also search by sender by using $r)-.15 E 2.5(,$)-.4
-G(s, or $f.)343.07 256.8 Q .69(If you create a directory such as /v)127 273 R
-(ar/forw)-.25 E .69(ard, it should be mode 1777 \(that is, the stick)-.1 F 3.19
-(yb)-.15 G(it)498.44 273 Q(should be set\).)102 285 Q
-(Users should create the \214les mode 644.)5 E F0 2.5(4.11. Fr)87 309 R
-(ee Space)-.18 E F1 1.405(On systems that ha)127 325.2 R 1.705 -.15(ve o)-.2 H
-1.405(ne of the system calls in the).15 F F2(statfs)3.906 E F1 1.406(\(2\) f)B
-1.406(amily \(including)-.1 F F2(statvfs)3.906 E F1(and)3.906 E F2(ustat)102
-337.2 Q F1 .839(\), you can specify a minimum number of free blocks on the que\
-ue \214lesystem using the)B F0(Min-)3.339 E(Fr)102 349.2 Q(eeBlocks)-.18 E F1
-(\()2.553 E F0(b)A F1 2.553(\)o)C 2.553(ption. If)171.916 349.2 R .053
-(there are fe)2.553 F .053
-(wer than the indicated number of blocks free on the \214lesystem)-.25 F 1.355
-(on which the queue is mounted the SMTP serv)102 361.2 R 1.355
-(er will reject mail with the 452 error code.)-.15 F(This)6.354 E(in)102 373.2
-Q(vites the SMTP client to try ag)-.4 E(ain later)-.05 E(.)-.55 E(Be)127 389.4
-Q -.1(wa)-.25 G .746(re of setting this option too high; it can cause rejectio\
-n of email when that mail w).1 F(ould)-.1 E(be processed without dif)102 401.4
-Q(\214culty)-.25 E(.)-.65 E F0 2.5(4.12. Maximum)87 425.4 R(Message Size)2.5 E
-F1 2.078 -.8(To a)127 441.6 T -.2(vo).6 G .478(id o).2 F -.15(ve)-.15 G(r\215o)
-.15 E .478(wing your system with a lar)-.25 F .478(ge message, the)-.18 F F0
-(MaxMessageSize)2.977 E F1 .477(option can be)2.977 F .692
-(set to set an absolute limit on the size of an)102 453.6 R 3.193(yo)-.15 G
-.693(ne message.)294.176 453.6 R .693(This will be adv)5.693 F .693
-(ertised in the ESMTP)-.15 F(dialogue and check)102 465.6 Q
-(ed during message collection.)-.1 E F0 2.5(4.13. Pri)87 489.6 R -.1(va)-.1 G
-(cy Flags).1 E F1(The)127 505.8 Q F0(Pri)2.96 E -.1(va)-.1 G(cyOptions).1 E F1
-(\()2.96 E F0(p)A F1 2.96(\)o)C .46(ption allo)235.12 505.8 R .46
-(ws you to set certain `)-.25 F(`pri)-.74 E -.25(va)-.25 G -.15(cy).25 G 1.94
--.74('' \215).15 H 2.96(ags. Actually).74 F 2.96(,m)-.65 G(an)478.42 505.8 Q
-2.96(yo)-.15 G(f)500.67 505.8 Q .533(them don')102 517.8 R 3.033(tg)-.18 G
--2.15 -.25(iv e)153.996 517.8 T .533(you an)3.283 F 3.034(ye)-.15 G .534
-(xtra pri)208.496 517.8 R -.25(va)-.25 G -.15(cy).25 G 3.034(,r)-.5 G .534
-(ather just insisting that client SMTP serv)264.634 517.8 R .534
-(ers use the HELO)-.15 F 2.87
-(command before using certain commands or adding e)102 529.8 R 2.87
-(xtra headers to indicate possible spoof)-.15 F(attempts.)102 541.8 Q .123
-(The option tak)127 558 R .124(es a series of \215ag names; the \214nal pri)-.1
-F -.25(va)-.25 G .424 -.15(cy i).25 H 2.624(st).15 G .124(he inclusi)367.706
-558 R .424 -.15(ve o)-.25 H 2.624(ro).15 G 2.624(ft)434.058 558 S .124
-(hose \215ags.)442.792 558 R -.15(Fo)5.124 G(r).15 E -.15(ex)102 570 S(ample:)
-.15 E 2.5(OP)142 586.2 S(ri)157.28 586.2 Q -.25(va)-.25 G -.15(cy).25 G
-(Options=needmailhelo, noe).15 E(xpn)-.15 E .928(insists that the HELO or EHLO\
- command be used before a MAIL command is accepted and dis-)102 602.4 R
-(ables the EXPN command.)102 614.4 Q
-(The \215ags are detailed in section 5.1.6.)127 630.6 Q F0 2.5(4.14. Send)87
-654.6 R(to Me T)2.5 E(oo)-.92 E F1(Normally)127 670.8 Q(,)-.65 E F2(sendmail)
-3.423 E F1 .923(deletes the \(en)3.423 F -.15(ve)-.4 G .923
-(lope\) sender from an).15 F 3.423(yl)-.15 G .924(ist e)375.484 670.8 R 3.424
-(xpansions. F)-.15 F .924(or e)-.15 F .924(xample, if)-.15 F .761(\231matt\232\
- sends to a list that contains \231matt\232 as one of the members he w)102
-682.8 R(on')-.1 E 3.261(tg)-.18 G .761(et a cop)416.705 682.8 R 3.261(yo)-.1 G
-3.261(ft)462.488 682.8 S .761(he mes-)471.859 682.8 R 2.882(sage. If)102 694.8
-R(the)2.882 E F0<ad6d>2.882 E F1 .383
-(\(me too\) command line \215ag, or if the)2.882 F F0(MeT)2.883 E(oo)-.92 E F1
-(\()2.883 E F0(m)A F1 2.883(\)o)C .383(ption is set in the con\214guration)
-377.915 694.8 R(\214le, this beha)102 706.8 Q(viour is suppressed.)-.2 E
-(Some sites lik)5 E 2.5(et)-.1 G 2.5(or)305.31 706.8 S(un the)316.14 706.8 Q/F3
-9/Times-Roman@0 SF(SMTP)2.5 E F1(daemon with)2.5 E F0<ad6d>2.5 E F1(.)A EP
-%%Page: 28 23
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-28 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E 2.5(5. THE)72 96 R
-(WHOLE SCOOP ON THE CONFIGURA)2.5 E(TION FILE)-.95 E/F1 10/Times-Roman@0 SF
-(This section describes the con\214guration \214le in detail.)112 112.2 Q .648
-(There is one point that should be made clear immediately: the syntax of the c\
-on\214guration \214le is)112 128.4 R 1.076
-(designed to be reasonably easy to parse, since this is done e)87 140.4 R -.15
-(ve)-.25 G 1.077(ry time).15 F/F2 10/Times-Italic@0 SF(sendmail)3.577 E F1
-1.077(starts up, rather than)3.577 F(easy for a human to read or write.)87
-152.4 Q
-(On the \231future project\232 list is a con\214guration-\214le compiler)5 E(.)
--.55 E .243(The con\214guration \214le is or)112 168.6 R -.05(ga)-.18 G .243
-(nized as a series of lines, each of which be).05 F .243
-(gins with a single charac-)-.15 F .102
-(ter de\214ning the semantics for the rest of the line.)87 180.6 R .102
-(Lines be)5.102 F .102(ginning with a space or a tab are continuation)-.15 F
-1.323(lines \(although the semantics are not well de\214ned in man)87 192.6 R
-3.823(yp)-.15 G 3.822(laces\). Blank)340.61 192.6 R 1.322(lines and lines be)
-3.822 F(ginning)-.15 E(with a sharp symbol \(`#'\) are comments.)87 204.6 Q F0
-2.5(5.1. R)87 228.6 R(and S \212 Rewriting Rules)2.5 E F1 .465
-(The core of address parsing are the re)127 244.8 R .466(writing rules.)-.25 F
-.466(These are an ordered production system.)5.466 F F2(Sendmail)102 256.8 Q F1
-.19(scans through the set of re)2.69 F .19
-(writing rules looking for a match on the left hand side \(LHS\) of)-.25 F
-(the rule.)102 268.8 Q(When a rule matches, the address is replaced by the rig\
-ht hand side \(RHS\) of the rule.)5 E .921(There are se)127 285 R -.15(ve)-.25
-G .921(ral sets of re).15 F .921(writing rules.)-.25 F .921(Some of the re)
-5.921 F .922(writing sets are used internally and)-.25 F .36(must ha)102 297 R
-.66 -.15(ve s)-.2 H .36(peci\214c semantics.).15 F .359(Other re)5.359 F .359
-(writing sets do not ha)-.25 F .659 -.15(ve s)-.2 H .359
-(peci\214cally assigned semantics, and).15 F
-(may be referenced by the mailer de\214nitions or by other re)102 309 Q
-(writing sets.)-.25 E(The syntax of these tw)127 325.2 Q 2.5(oc)-.1 G
-(ommands are:)229.38 325.2 Q F0(S)142 341.4 Q F2(n)A F1 .248
-(Sets the current ruleset being collected to)102 357.6 R F2(n)2.748 E F1 5.248
-(.I)C 2.748(fy)287.284 357.6 S .248(ou be)298.362 357.6 R .249
-(gin a ruleset more than once it deletes the old)-.15 F(de\214nition.)102 369.6
-Q F0(R)142 385.8 Q F2(lhs rhs comments)A F1 1.185(The \214elds must be separat\
-ed by at least one tab character; there may be embedded spaces in the)102 402 R
-2.594(\214elds. The)102 414 R F2(lhs)2.594 E F1 .095
-(is a pattern that is applied to the input.)2.594 F .095
-(If it matches, the input is re)5.095 F .095(written to the)-.25 F F2(rhs)2.595
-E F1(.)A(The)102 426 Q F2(comments)2.5 E F1(are ignored.)2.5 E .755(Macro e)127
-442.2 R .755(xpansions of the form)-.15 F F0($)3.255 E F2(x)A F1 .755
-(are performed when the con\214guration \214le is read.)3.255 F(Expan-)5.755 E
-.283(sions of the form)102 454.2 R F0($&)2.783 E F2(x)A F1 .284
-(are performed at run time using a some)2.783 F .284
-(what less general algorithm.)-.25 F .284(This for)5.284 F
-(is intended only for referencing internally de\214ned macros such as)102 466.2
-Q F0($h)2.5 E F1(that are changed at runtime.)2.5 E F0 2.5(5.1.1. The)102 490.2
-R(left hand side)2.5 E F1 2.771(The left hand side of re)142 506.4 R 2.771
-(writing rules contains a pattern.)-.25 F 2.77(Normal w)7.771 F 2.77
-(ords are simply)-.1 F(matched directly)117 518.4 Q 5(.M)-.65 G
-(etasyntax is introduced using a dollar sign.)199.67 518.4 Q
-(The metasymbols are:)5 E F0($*)157 534.6 Q F1(Match zero or more tok)177.14
-534.6 Q(ens)-.1 E F0($+)157 546.6 Q F1(Match one or more tok)9.44 E(ens)-.1 E
-F0<24ad>157 558.6 Q F1(Match e)9.44 E(xactly one tok)-.15 E(en)-.1 E F0($=)157
-570.6 Q F2(x)A F1(Match an)5 E 2.5(yp)-.15 G(hrase in class)226.98 570.6 Q F2
-(x)2.5 E F0($~)157 582.6 Q F2(x)A F1(Match an)7.37 E 2.5(yw)-.15 G
-(ord not in class)229.1 582.6 Q F2(x)2.5 E F1 .131(If an)117 598.8 R 2.631(yo)
--.15 G 2.631(ft)148.212 598.8 S .131(hese match, the)156.953 598.8 R 2.631(ya)
--.15 G .132(re assigned to the symbol)231.066 598.8 R F0($)2.632 E F2(n)A F1
-.132(for replacement on the right hand side,)2.632 F(where)117 610.8 Q F2(n)2.5
-E F1(is the inde)2.5 E 2.5(xi)-.15 G 2.5(nt)202.67 610.8 S(he LHS.)212.95 610.8
-Q -.15(Fo)5 G 2.5(re).15 G(xample, if the LHS:)271.81 610.8 Q($\255:$+)157 627
-Q(is applied to the input:)117 643.2 Q(UCB)157 659.4 Q(ARP)-.35 E(A:eric)-.92 E
-(the rule will match, and the v)117 675.6 Q(alues passed to the RHS will be:)
--.25 E 7.5($1 UCB)157 691.8 R(ARP)-.35 E(A)-.92 E 7.5($2 eric)157 703.8 R EP
-%%Page: 29 24
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-29)452.9 60 Q/F1 10/Times-Roman@0 SF(Additionally)142 96 Q 2.705(,t)
--.65 G .204(he LHS can include)199.895 96 R F0($@)2.704 E F1 .204
-(to match zero tok)2.704 F 2.704(ens. This)-.1 F(is)2.704 E/F2 10
-/Times-Italic@0 SF(not)2.704 E F1 .204(bound to a)2.704 F F0($)2.704 E F2(n)A
-F1(on)2.704 E(the RHS, and is normally only used when it stands alone in order\
- to match the null input.)117 108 Q F0 2.5(5.1.2. The)102 132 R
-(right hand side)2.5 E F1 .648(When the left hand side of a re)142 148.2 R .649
-(writing rule matches, the input is deleted and replaced by)-.25 F 1.037
-(the right hand side.)117 160.2 R -.8(To)6.037 G -.1(ke).8 G 1.036
-(ns are copied directly from the RHS unless the).1 F 3.536(yb)-.15 G -.15(eg)
-430.772 160.2 S 1.036(in with a dollar).15 F 2.5(sign. Metasymbols)117 172.2 R
-(are:)2.5 E F0($)157 188.4 Q F2(n)A F1(Substitute inde\214nite tok)207.55 188.4
-Q(en)-.1 E F2(n)2.5 E F1(from LHS)2.5 E F0($[)157 200.4 Q F2(name)A F0($])A F1
-(Canonicalize)207.55 200.4 Q F2(name)2.5 E F0($\()157 212.4 Q F2(map k)A -.3
-(ey)-.1 G F0($@)2.8 E F2(ar)A(guments)-.37 E F0($:)2.5 E F2(default)A F0($\))
-2.5 E F1(Generalized k)207.55 224.4 Q -.15(ey)-.1 G(ed mapping function).15 E
-F0($>)157 236.4 Q F2(n)A F1(\231Call\232 ruleset)207.55 236.4 Q F2(n)2.5 E F0
-($#)157 248.4 Q F2(mailer)A F1(Resolv)207.55 248.4 Q 2.5(et)-.15 G(o)244.9
-248.4 Q F2(mailer)2.5 E F0($@)157 260.4 Q F2(host)A F1(Specify)207.55 260.4 Q
-F2(host)2.5 E F0($:)157 272.4 Q F2(user)A F1(Specify)207.55 272.4 Q F2(user)2.5
-E F1(The)142 292.8 Q F0($)3.136 E F2(n)A F1 .637
-(syntax substitutes the corresponding v)3.136 F .637(alue from a)-.25 F F0($+)
-3.137 E F1(,)A F0<24ad>3.137 E F1(,)A F0($*)3.137 E F1(,)A F0($=)3.137 E F1
-3.137(,o)C(r)448.489 292.8 Q F0($~)3.137 E F1 .637(match on)3.137 F(the LHS.)
-117 304.8 Q(It may be used an)5 E(ywhere.)-.15 E 2.706(Ah)142 321 S .206
-(ost name enclosed between)156.926 321 R F0($[)2.706 E F1(and)2.706 E F0($])
-2.706 E F1 .206(is look)2.706 F .205
-(ed up in the host database\(s\) and replaced)-.1 F 1.683
-(by the canonical name)117 335 R/F3 7/Times-Roman@0 SF(13)211.749 331 Q F1
-6.683(.F)218.749 335 S 1.683(or e)233.342 335 R 1.683
-(xample, \231$[ftp$]\232 might become \231ftp.CS.Berk)-.15 F(ele)-.1 E -.65(y.)
--.15 G 1.683(EDU\232 and).65 F 2.707(\231$[[128.32.130.2]$]\232 w)117 347 R
-2.707(ould become \231v)-.1 F(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G
-(EDU.).65 E<9a>-.7 E F2(Sendmail)7.707 E F1 2.706(recognizes it')5.206 F(s)-.55
-E(numeric IP address without calling the name serv)117 359 Q
-(er and replaces it with it')-.15 E 2.5(sc)-.55 G(anonical name.)424.3 359 Q
-(The)142 375.2 Q F0($\()3.003 E F1(...)3.003 E F0($\))5.503 E F1 .503
-(syntax is a more general form of lookup; it uses a named map instead of an)
-3.003 F .81(implicit map.)117 387.2 R .81(If no lookup is found, the indicated)
-5.81 F F2(default)3.309 E F1 .809(is inserted; if no def)3.309 F .809
-(ault is speci\214ed)-.1 F .775(and no lookup matches, the v)117 399.2 R .776
-(alue is left unchanged.)-.25 F(The)5.776 E F2(ar)3.276 E(guments)-.37 E F1
-.776(are passed to the map for)3.276 F(possible use.)117 411.2 Q(The)142 427.4
-Q F0($>)2.62 E F2(n)A F1 .119(syntax causes the remainder of the line to be su\
-bstituted as usual and then passed)2.62 F .586(as the ar)117 439.4 R .586
-(gument to ruleset)-.18 F F2(n)3.086 E F1 5.586(.T)C .586(he \214nal v)244.206
-439.4 R .586(alue of ruleset)-.25 F F2(n)3.087 E F1 .587
-(then becomes the substitution for this)3.087 F 3.075(rule. The)117 451.4 R F0
-($>)3.075 E F1 .575(syntax can only be used at the be)3.075 F .575
-(ginning of the right hand side; it can be only be)-.15 F(preceded by)117 463.4
-Q F0($@)2.5 E F1(or)2.5 E F0($:)2.5 E F1(.)A(The)142 479.6 Q F0($#)2.507 E F1
-.007(syntax should)2.507 F F2(only)2.507 E F1 .008
-(be used in ruleset zero or a subroutine of ruleset zero.)2.507 F .008
-(It causes)5.008 F -.25(eva)117 491.6 S .685
-(luation of the ruleset to terminate immediately).25 F 3.184(,a)-.65 G .684
-(nd signals to)329.502 491.6 R F2(sendmail)3.184 E F1 .684
-(that the address has)3.184 F(completely resolv)117 503.6 Q 2.5(ed. The)-.15 F
-(complete syntax is:)2.5 E F0($#)157 519.8 Q F2(mailer)A F0($@)2.5 E F2(host)A
-F0($:)2.5 E F2(user)A F1 1.394(This speci\214es the {mailer)117 536 R 3.894(,h)
--.4 G 1.394(ost, user} 3-tuple necessary to direct the mailer)234.466 536 R
-6.394(.I)-.55 G 3.894(ft)444.548 536 S 1.394(he mailer is)454.552 536 R .774
-(local the host part may be omitted)117 550 R F3(14)257.744 546 Q F1 5.774(.T)
-264.744 550 S(he)279.128 550 Q F2(mailer)3.274 E F1 .775(must be a single w)
-3.274 F .775(ord, b)-.1 F .775(ut the)-.2 F F2(host)3.275 E F1(and)3.275 E F2
-(user)3.275 E F1 .253(may be multi-part.)117 562 R .253(If the)5.253 F F2
-(mailer)2.753 E F1 .253(is the b)2.753 F .253(uiltin IPC mailer)-.2 F 2.753(,t)
--.4 G(he)354.733 562 Q F2(host)2.753 E F1 .253(may be a colon-separated list)
-2.753 F .5(of hosts that are searched in order for the \214rst w)117 574 R .5
-(orking address \(e)-.1 F .5(xactly lik)-.15 F 3(eM)-.1 G 3(Xr)437.47 574 S 3
-(ecords\). The)451.02 574 R F2(user)117 586 Q F1 .036(is later re)2.536 F .036
-(written by the mailer)-.25 F .036(-speci\214c en)-.2 F -.15(ve)-.4 G .036
-(lope re).15 F .036(writing set and assigned to the)-.25 F F0($u)2.536 E F1
-(macro.)2.536 E .492(As a special case, if the v)117 598 R .492(alue to)-.25 F
-F0($#)2.992 E F1 .492(is \231local\232 and the \214rst character of the)2.992 F
-F0($:)2.992 E F1 -.25(va)2.992 G .492(lue is \231@\232, the).25 F .017
-(\231@\232 is stripped of)117 610 R .017(f, and a \215ag is set in the address\
- descriptor that causes sendmail to not do rule-)-.25 F(set 5 processing.)117
-622 Q(Normally)142 638.2 Q 3.251(,ar)-.65 G .751
-(ule that matches is retried, that is, the rule loops until it f)196.452 638.2
-R 3.252(ails. A)-.1 F .752(RHS may)3.252 F 1.086(also be preceded by a)117
-650.2 R F0($@)3.586 E F1 1.085(or a)3.585 F F0($:)3.585 E F1 1.085
-(to change this beha)3.585 F(vior)-.2 E 6.085(.A)-.55 G F0($@)375.685 650.2 Q
-F1 1.085(pre\214x causes the ruleset to)3.585 F .32 LW 76 659.8 72 659.8 DL 80
-659.8 76 659.8 DL 84 659.8 80 659.8 DL 88 659.8 84 659.8 DL 92 659.8 88 659.8
-DL 96 659.8 92 659.8 DL 100 659.8 96 659.8 DL 104 659.8 100 659.8 DL 108 659.8
-104 659.8 DL 112 659.8 108 659.8 DL 116 659.8 112 659.8 DL 120 659.8 116 659.8
-DL 124 659.8 120 659.8 DL 128 659.8 124 659.8 DL 132 659.8 128 659.8 DL 136
-659.8 132 659.8 DL 140 659.8 136 659.8 DL 144 659.8 140 659.8 DL 148 659.8 144
-659.8 DL 152 659.8 148 659.8 DL 156 659.8 152 659.8 DL 160 659.8 156 659.8 DL
-164 659.8 160 659.8 DL 168 659.8 164 659.8 DL 172 659.8 168 659.8 DL 176 659.8
-172 659.8 DL 180 659.8 176 659.8 DL 184 659.8 180 659.8 DL 188 659.8 184 659.8
-DL 192 659.8 188 659.8 DL 196 659.8 192 659.8 DL 200 659.8 196 659.8 DL 204
-659.8 200 659.8 DL 208 659.8 204 659.8 DL 212 659.8 208 659.8 DL 216 659.8 212
-659.8 DL/F4 5/Times-Roman@0 SF(13)93.6 670.2 Q/F5 8/Times-Roman@0 SF
-(This is actually completely equi)3.2 I -.2(va)-.2 G(lent to $\(host).2 E/F6 8
-/Times-Italic@0 SF(hostname)2 E F5 2($\). In)B(particular)2 E 2(,a)-.32 G/F7 8
-/Times-Bold@0 SF($:)A F5(def)2 E(ault can be used.)-.08 E F4(14)93.6 683.8 Q F5
--.88(Yo)3.2 K 2.726(um).88 G .726(ay w)120.446 687 R .726
-(ant to use it for special \231per user\232 e)-.08 F 2.726(xtensions. F)-.12 F
-.726(or e)-.12 F .725
-(xample, in the address \231jgm+foo@CMU.EDU\232; the \231+foo\232)-.12 F(part \
-is not part of the user name, and is passed to the local mailer for local use.)
-72 696.6 Q EP
-%%Page: 30 25
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-30 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.46
-(return with the remainder of the RHS as the v)117 96 R 3.96(alue. A)-.25 F F0
-($:)3.96 E F1 1.46(pre\214x causes the rule to terminate)3.96 F(immediately)117
-108 Q 3.756(,b)-.65 G 1.256(ut the ruleset to continue; this can be used to a)
-177.406 108 R -.2(vo)-.2 G 1.256(id continued application of a).2 F 2.5
-(rule. The)117 120 R(pre\214x is stripped before continuing.)2.5 E(The)142
-136.2 Q F0($@)2.5 E F1(and)2.5 E F0($:)2.5 E F1(pre\214x)2.5 E
-(es may precede a)-.15 E F0($>)2.5 E F1(spec; for e)2.5 E(xample:)-.15 E 20.19
-(R$+ $:)157 152.4 R($>7 $1)2.5 E 1.256(matches an)117 168.6 R 1.256
-(ything, passes that to ruleset se)-.15 F -.15(ve)-.25 G 1.256
-(n, and continues; the).15 F F0($:)3.756 E F1 1.256(is necessary to a)3.756 F
--.2(vo)-.2 G 1.256(id an).2 F(in\214nite loop.)117 180.6 Q 1.205(Substitution \
-occurs in the order described, that is, parameters from the LHS are substi-)142
-196.8 R .219(tuted, hostnames are canonicalized, \231subroutines\232 are calle\
-d, and \214nally)117 208.8 R F0($#)2.719 E F1(,)A F0($@)2.719 E F1 2.72(,a)C
-(nd)448.64 208.8 Q F0($:)2.72 E F1 .22(are pro-)2.72 F(cessed.)117 220.8 Q F0
-2.5(5.1.3. Semantics)102 244.8 R(of r)2.5 E(ewriting rule sets)-.18 E F1 1.523
-(There are \214v)142 261 R 4.023(er)-.15 G -.25(ew)207.779 261 S 1.523
-(riting sets that ha).25 F 1.823 -.15(ve s)-.2 H 1.523(peci\214c semantics.).15
-F -.15(Fo)6.523 G 1.523(ur of these are related as).15 F
-(depicted by \214gure 1.)117 273 Q 1.029
-(Ruleset three should turn the address into \231canonical form.)142 289.2 R
-6.029<9a54>-.7 G 1.03(his form should ha)401.351 289.2 R 1.33 -.15(ve t)-.2 H
-(he).15 E(basic syntax:)117 301.2 Q(local-part@host-domain-spec)157 317.4 Q
-(Ruleset three is applied by)117 333.6 Q/F2 10/Times-Italic@0 SF(sendmail)2.5 E
-F1(before doing an)2.5 E(ything with an)-.15 E 2.5(ya)-.15 G(ddress.)396.39
-333.6 Q .302(If no \231@\232 sign is speci\214ed, then the host-domain-spec)142
-349.8 R F2(may)2.801 E F1 .301(be appended \(box \231D\232 in Fig-)2.801 F .577
-(ure 1\) from the sender address \(if the)117 361.8 R F0(C)3.077 E F1 .577
-(\215ag is set in the mailer de\214nition corresponding to the)3.077 F F2
-(sending)117 373.8 Q F1(mailer\).)2.5 E 1.021(Ruleset zero is applied after ru\
-leset three to addresses that are going to actually specify)142 390 R 3.663
-(recipients. It)117 402 R 1.163(must resolv)3.663 F 3.663(et)-.15 G 3.664(oa)
-232.602 402 S F2({mailer)A 3.664(,h)-1.11 G 1.164(ost, user})289.534 402 R F1
-3.664(triple. The)3.664 F F2(mailer)3.664 E F1 1.164(must be de\214ned in the)
-3.664 F .752(mailer de\214nitions from the con\214guration \214le.)117 414 R
-(The)5.751 E F2(host)3.251 E F1 .751(is de\214ned into the)3.251 F F0($h)3.251
-E F1 .751(macro for use in)3.251 F(the ar)117 426 Q(gv e)-.18 E
-(xpansion of the speci\214ed mailer)-.15 E(.)-.55 E .452(Rulesets one and tw)
-142 442.2 R 2.952(oa)-.1 G .452
-(re applied to all sender and recipient addresses respecti)235.918 442.2 R -.15
-(ve)-.25 G(ly).15 E 5.453(.T)-.65 G(he)489.71 442.2 Q(y)-.15 E
-(are applied before an)117 454.2 Q 2.5(ys)-.15 G
-(peci\214cation in the mailer de\214nition.)212.37 454.2 Q(The)5 E 2.5(ym)-.15
-G(ust ne)391.1 454.2 Q -.15(ve)-.25 G 2.5(rr).15 G(esolv)432.91 454.2 Q(e.)-.15
-E .4 LW 77 483.6 72 483.6 DL 79 483.6 74 483.6 DL 84 483.6 79 483.6 DL 89 483.6
-84 483.6 DL 94 483.6 89 483.6 DL 99 483.6 94 483.6 DL 104 483.6 99 483.6 DL 109
-483.6 104 483.6 DL 114 483.6 109 483.6 DL 119 483.6 114 483.6 DL 124 483.6 119
-483.6 DL 129 483.6 124 483.6 DL 134 483.6 129 483.6 DL 139 483.6 134 483.6 DL
-144 483.6 139 483.6 DL 149 483.6 144 483.6 DL 154 483.6 149 483.6 DL 159 483.6
-154 483.6 DL 164 483.6 159 483.6 DL 169 483.6 164 483.6 DL 174 483.6 169 483.6
-DL 179 483.6 174 483.6 DL 184 483.6 179 483.6 DL 189 483.6 184 483.6 DL 194
-483.6 189 483.6 DL 199 483.6 194 483.6 DL 204 483.6 199 483.6 DL 209 483.6 204
-483.6 DL 214 483.6 209 483.6 DL 219 483.6 214 483.6 DL 224 483.6 219 483.6 DL
-229 483.6 224 483.6 DL 234 483.6 229 483.6 DL 239 483.6 234 483.6 DL 244 483.6
-239 483.6 DL 249 483.6 244 483.6 DL 254 483.6 249 483.6 DL 259 483.6 254 483.6
-DL 264 483.6 259 483.6 DL 269 483.6 264 483.6 DL 274 483.6 269 483.6 DL 279
-483.6 274 483.6 DL 284 483.6 279 483.6 DL 289 483.6 284 483.6 DL 294 483.6 289
-483.6 DL 299 483.6 294 483.6 DL 304 483.6 299 483.6 DL 309 483.6 304 483.6 DL
-314 483.6 309 483.6 DL 319 483.6 314 483.6 DL 324 483.6 319 483.6 DL 329 483.6
-324 483.6 DL 334 483.6 329 483.6 DL 339 483.6 334 483.6 DL 344 483.6 339 483.6
-DL 349 483.6 344 483.6 DL 354 483.6 349 483.6 DL 359 483.6 354 483.6 DL 364
-483.6 359 483.6 DL 369 483.6 364 483.6 DL 374 483.6 369 483.6 DL 379 483.6 374
-483.6 DL 384 483.6 379 483.6 DL 389 483.6 384 483.6 DL 394 483.6 389 483.6 DL
-399 483.6 394 483.6 DL 404 483.6 399 483.6 DL 409 483.6 404 483.6 DL 414 483.6
-409 483.6 DL 419 483.6 414 483.6 DL 424 483.6 419 483.6 DL 429 483.6 424 483.6
-DL 434 483.6 429 483.6 DL 439 483.6 434 483.6 DL 444 483.6 439 483.6 DL 449
-483.6 444 483.6 DL 454 483.6 449 483.6 DL 459 483.6 454 483.6 DL 464 483.6 459
-483.6 DL 469 483.6 464 483.6 DL 474 483.6 469 483.6 DL 479 483.6 474 483.6 DL
-484 483.6 479 483.6 DL 489 483.6 484 483.6 DL 494 483.6 489 483.6 DL 499 483.6
-494 483.6 DL 504 483.6 499 483.6 DL(addr)91.915 578 Q 133.2 576 111.6 576 DL
-133.2 576 126 577.8 DL 133.2 576 126 574.2 DL(3)141.5 578 Q 133.2 565.2 133.2
-586.8 DL 154.8 565.2 133.2 565.2 DL 154.8 586.8 154.8 565.2 DL 133.2 586.8
-154.8 586.8 DL 176.4 576 154.8 576 DL 176.4 576 169.2 577.8 DL 176.4 576 169.2
-574.2 DL(D)183.59 578 Q 176.4 565.2 176.4 586.8 DL 198 565.2 176.4 565.2 DL 198
-586.8 198 565.2 DL 176.4 586.8 198 586.8 DL 219.6 576 198 576 DL 277.2 558
-255.6 558 DL 277.2 558 270 559.8 DL 277.2 558 270 556.2 DL(1)285.5 560 Q 277.2
-547.2 277.2 568.8 DL 298.8 547.2 277.2 547.2 DL 298.8 568.8 298.8 547.2 DL
-277.2 568.8 298.8 568.8 DL 320.4 558 298.8 558 DL 320.4 558 313.2 559.8 DL
-320.4 558 313.2 556.2 DL(S)328.42 560 Q 320.4 547.2 320.4 568.8 DL 342 547.2
-320.4 547.2 DL 342 568.8 342 547.2 DL 320.4 568.8 342 568.8 DL 363.6 558 342
-558 DL 277.2 594 255.6 594 DL 277.2 594 270 595.8 DL 277.2 594 270 592.2 DL(2)
-285.5 596 Q 277.2 583.2 277.2 604.8 DL 298.8 583.2 277.2 583.2 DL 298.8 604.8
-298.8 583.2 DL 277.2 604.8 298.8 604.8 DL 320.4 594 298.8 594 DL 320.4 594
-313.2 595.8 DL 320.4 594 313.2 592.2 DL(R)327.865 596 Q 320.4 583.2 320.4 604.8
-DL 342 583.2 320.4 583.2 DL 342 604.8 342 583.2 DL 320.4 604.8 342 604.8 DL
-363.6 594 342 594 DL 421.2 576 399.6 576 DL 421.2 576 414 577.8 DL 421.2 576
-414 574.2 DL(4)429.5 578 Q 421.2 565.2 421.2 586.8 DL 442.8 565.2 421.2 565.2
-DL 442.8 586.8 442.8 565.2 DL 421.2 586.8 442.8 586.8 DL 464.4 576 442.8 576 DL
-464.4 576 457.2 577.8 DL 464.4 576 457.2 574.2 DL(msg)466.865 578 Q 255.6 558
-219.6 576 DL 255.6 594 219.6 576 DL 399.6 576 363.6 558 DL 399.6 576 363.6 594
-DL 208.8 522 187.2 522 DL 208.8 522 201.6 523.8 DL 208.8 522 201.6 520.2 DL(0)
-217.1 524 Q 208.8 511.2 208.8 532.8 DL 230.4 511.2 208.8 511.2 DL 230.4 532.8
-230.4 511.2 DL 208.8 532.8 230.4 532.8 DL 252 522 230.4 522 DL 252 522 244.8
-523.8 DL 252 522 244.8 520.2 DL(resolv)265.69 524 Q(ed address)-.15 E 187.2 522
-162 576 DL(Figure 1 \212 Re)216.045 624 Q(writing set semantics)-.25 E 2.5
-(D\212s)209.35 636 S(ender domain addition)235.46 636 Q 2.5(S\212m)209.35 648 S
-(ailer)237.69 648 Q(-speci\214c sender re)-.2 E(writing)-.25 E 2.5(R\212m)
-209.35 660 S(ailer)238.8 660 Q(-speci\214c recipient re)-.2 E(writing)-.25 E 77
-672 72 672 DL 79 672 74 672 DL 84 672 79 672 DL 89 672 84 672 DL 94 672 89 672
-DL 99 672 94 672 DL 104 672 99 672 DL 109 672 104 672 DL 114 672 109 672 DL 119
-672 114 672 DL 124 672 119 672 DL 129 672 124 672 DL 134 672 129 672 DL 139 672
-134 672 DL 144 672 139 672 DL 149 672 144 672 DL 154 672 149 672 DL 159 672 154
-672 DL 164 672 159 672 DL 169 672 164 672 DL 174 672 169 672 DL 179 672 174 672
-DL 184 672 179 672 DL 189 672 184 672 DL 194 672 189 672 DL 199 672 194 672 DL
-204 672 199 672 DL 209 672 204 672 DL 214 672 209 672 DL 219 672 214 672 DL 224
-672 219 672 DL 229 672 224 672 DL 234 672 229 672 DL 239 672 234 672 DL 244 672
-239 672 DL 249 672 244 672 DL 254 672 249 672 DL 259 672 254 672 DL 264 672 259
-672 DL 269 672 264 672 DL 274 672 269 672 DL 279 672 274 672 DL 284 672 279 672
-DL 289 672 284 672 DL 294 672 289 672 DL 299 672 294 672 DL 304 672 299 672 DL
-309 672 304 672 DL 314 672 309 672 DL 319 672 314 672 DL 324 672 319 672 DL 329
-672 324 672 DL 334 672 329 672 DL 339 672 334 672 DL 344 672 339 672 DL 349 672
-344 672 DL 354 672 349 672 DL 359 672 354 672 DL 364 672 359 672 DL 369 672 364
-672 DL 374 672 369 672 DL 379 672 374 672 DL 384 672 379 672 DL 389 672 384 672
-DL 394 672 389 672 DL 399 672 394 672 DL 404 672 399 672 DL 409 672 404 672 DL
-414 672 409 672 DL 419 672 414 672 DL 424 672 419 672 DL 429 672 424 672 DL 434
-672 429 672 DL 439 672 434 672 DL 444 672 439 672 DL 449 672 444 672 DL 454 672
-449 672 DL 459 672 454 672 DL 464 672 459 672 DL 469 672 464 672 DL 474 672 469
-672 DL 479 672 474 672 DL 484 672 479 672 DL 489 672 484 672 DL 494 672 489 672
-DL 499 672 494 672 DL 504 672 499 672 DL EP
-%%Page: 31 26
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-31)452.9 60 Q/F1 10/Times-Roman@0 SF 1.266
-(Ruleset four is applied to all addresses in the message.)142 96 R 1.265
-(It is typically used to translate)6.265 F(internal to e)117 108 Q
-(xternal form.)-.15 E F0 2.5(5.1.4. IPC)102 132 R(mailers)2.5 E F1 1.332
-(Some special processing occurs if the ruleset zero resolv)142 148.2 R 1.333
-(es to an IPC mailer \(that is, a)-.15 F 1.179
-(mailer that has \231[IPC]\232 listed as the P)117 160.2 R 1.179(ath in the)
--.15 F F0(M)3.679 E F1 1.179(con\214guration line.)3.679 F 1.178
-(The host name passed)6.178 F .168(after \231$@\232 has MX e)117 172.2 R .168
-(xpansion performed; this looks the name up in DNS to \214nd alternate deli)
--.15 F(v-)-.25 E(ery sites.)117 184.2 Q(The host name can also be pro)142 200.4
-Q(vided as a dotted quad in square brack)-.15 E(ets; for e)-.1 E(xample:)-.15 E
-([128.32.149.78])157 216.6 Q(This causes direct con)117 232.8 Q -.15(ve)-.4 G
-(rsion of the numeric v).15 E(alue to a TCP/IP host address.)-.25 E .214(The h\
-ost name passed in after the \231$@\232 may also be a colon-separated list of \
-hosts.)142 249 R(Each)5.213 E .484(is separately MX e)117 261 R .484
-(xpanded and the results are concatenated to mak)-.15 F 2.985(e\()-.1 G .485
-(essentially\) one long MX)401.165 261 R 3.465(list. The)117 273 R .964
-(intent here is to create \231f)3.465 F(ak)-.1 E .964
-(e\232 MX records that are not published in DNS for pri)-.1 F -.25(va)-.25 G
-(te).25 E(internal netw)117 285 Q(orks.)-.1 E
-(As a \214nal special case, the host name can be passed in as a te)142 301.2 Q
-(xt string in square brack)-.15 E(ets:)-.1 E([ucb)157 317.4 Q -.25(va)-.15 G
-(x.berk).25 E(ele)-.1 E -.65(y.)-.15 G(edu]).65 E .312(This form a)117 333.6 R
--.2(vo)-.2 G .312(ids the MX mapping.).2 F F0(N.B.:)5.312 E/F2 10
-/Times-Italic@0 SF .313(This is intended only for situations wher)2.812 F 2.813
-(ey)-.37 G .313(ou have a)464.494 333.6 R .338(network \214r)117 345.6 R -.15
-(ew)-.37 G .337(all or other host that will do special pr).15 F .337
-(ocessing for all your mail, so that your MX)-.45 F -.37(re)117 357.6 S(cor).37
-E 3.958(dp)-.37 G 1.458(oints to a gate)151.878 357.6 R 1.458(way mac)-.15 F
-1.458(hine; this mac)-.15 F 1.459(hine could then do dir)-.15 F 1.459
-(ect delivery to mac)-.37 F(hines)-.15 E .09(within your local domain.)117
-369.6 R .09(Use of this featur)5.09 F 2.59(ed)-.37 G(ir)306.8 369.6 Q .09
-(ectly violates RFC 1123 section 5.3.5: it should)-.37 F(not be used lightly)
-117 381.6 Q(.)-.55 E F0 2.5(5.2. D)87 405.6 R 2.5<8a44>2.5 G(e\214ne Macr)
-136.44 405.6 Q(o)-.18 E F1 .081
-(Macros are named with a single character or with a w)127 421.8 R .082
-(ord in {braces}.)-.1 F .082(Single character names)5.082 F .45
-(may be selected from the entire ASCII set, b)102 433.8 R .45(ut user)-.2 F .45
-(-de\214ned macros should be selected from the set)-.2 F .446
-(of upper case letters only)102 445.8 R 5.446(.L)-.65 G -.25(ow)217.72 445.8 S
-.446(er case letters and special symbols are used internally).25 F 5.446(.L)
--.65 G .446(ong names)460.504 445.8 R(be)102 457.8 Q .913(ginning with a lo)
--.15 F .913(wer case letter or a punctuation character are reserv)-.25 F .912
-(ed for use by sendmail, so)-.15 F(user)102 469.8 Q
-(-de\214ned long macro names should be)-.2 E(gin with an upper case letter)-.15
-E(.)-.55 E(The syntax for macro de\214nitions is:)127 486 Q F0(D)142 502.2 Q F2
-1.666(xv)C(al)-1.666 E F1(where)102 518.4 Q F2(x)3.068 E F1 .568
-(is the name of the macro \(which may be a single character or a w)3.068 F .569
-(ord in braces\) and)-.1 F F2(val)3.069 E F1(is)3.069 E .479(the v)102 530.4 R
-.479(alue it should ha)-.25 F -.15(ve)-.2 G 5.479(.T).15 G .478
-(here should be no spaces gi)212.395 530.4 R -.15(ve)-.25 G 2.978(nt).15 G .478
-(hat do not actually belong in the macro)344.284 530.4 R -.25(va)102 542.4 S
-(lue.).25 E .494(Macros are interpolated using the construct)127 558.6 R F0($)
-2.994 E F2(x)A F1 2.994(,w)C(here)327.638 558.6 Q F2(x)2.994 E F1 .494
-(is the name of the macro to be inter)2.994 F(-)-.2 E 2.933(polated. This)102
-570.6 R .433(interpolation is done when the con\214guration \214le is read, e)
-2.933 F .432(xcept in)-.15 F F0(M)2.932 E F1 2.932(lines. The)2.932 F(spe-)
-2.932 E(cial construct)102 582.6 Q F0($&)2.5 E F2(x)A F1(can be used in)2.5 E
-F0(R)2.5 E F1(lines to get deferred interpolation.)2.5 E
-(Conditionals can be speci\214ed using the syntax:)127 598.8 Q($?x te)142 615 Q
-(xt1 $| te)-.15 E(xt2 $.)-.15 E 1.127(This interpolates)102 631.2 R F2(te)3.627
-E(xt1)-.2 E F1 1.127(if the macro)3.627 F F0($x)3.627 E F1 1.128(is set, and)
-3.628 F F2(te)3.628 E(xt2)-.2 E F1 3.628(otherwise. The)3.628 F 1.128
-(\231else\232 \()3.628 F F0($|)A F1 3.628(\)c)C 1.128(lause may be)449.534
-631.2 R(omitted.)102 643.2 Q(Lo)127 659.4 Q .58
-(wer case macro names are reserv)-.25 F .58(ed to ha)-.15 F .88 -.15(ve s)-.2 H
-.58(pecial semantics, used to pass information in).15 F 1.56(or out of)102
-671.4 R F2(sendmail)4.06 E F1 4.06(,a)C 1.561(nd special characters are reserv)
-190.73 671.4 R 1.561(ed to pro)-.15 F 1.561(vide conditionals, etc.)-.15 F
-1.561(Upper case)6.561 F(names \(that is,)102 683.4 Q F0($A)2.5 E F1(through)
-2.5 E F0($Z)2.5 E F1 2.5(\)a)C(re speci\214cally reserv)232.82 683.4 Q
-(ed for con\214guration \214le authors.)-.15 E 1.303(The follo)127 699.6 R
-1.303(wing macros are de\214ned and/or used internally by)-.25 F F2(sendmail)
-3.802 E F1 1.302(for interpolation into)3.802 F EP
-%%Page: 32 27
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-32 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(ar)102 98 Q(gv')
--.18 E 2.792(sf)-.55 G .292(or mailers or for other conte)132.382 98 R 2.793
-(xts. The)-.15 F .293(ones mark)2.793 F .293
-(ed \207 are information passed into sendmail)-.1 F/F2 7/Times-Roman@0 SF(15)
-494.5 94 Q F1(,)501.5 98 Q .036(the ones mark)102 110 R .036
-(ed \210 are information passed both in and out of sendmail, and the unmark)-.1
-F .035(ed macros are)-.1 F(passed out of sendmail b)102 122 Q
-(ut are not otherwise used internally)-.2 E 5(.T)-.65 G(hese macros are:)354.45
-122 Q 13.06($a The)102 138.2 R(origination date in RFC 822 format.)2.5 E
-(This is e)5 E(xtracted from the Date: line.)-.15 E 12.5($b The)102 154.4 R
-(current date in RFC 822 format.)2.5 E 13.06($c The)102 170.6 R .002
-(hop count.)2.502 F .002(This is a count of the number of Recei)5.002 F -.15
-(ve)-.25 G .003(d: lines plus the v).15 F .003(alue of the)-.25 F F0<ad68>2.503
-E F1(com-)2.503 E(mand line \215ag.)127 182.6 Q 12.5($d The)102 198.8 R
-(current date in UNIX \(ctime\) format.)2.5 E 8.06($e\207 \(Obsolete;)102 215 R
-1.814(use SmtpGreetingMessage option instead.\))4.314 F 1.814
-(The SMTP entry message.)6.814 F 1.814(This is)6.814 F 2.008
-(printed out when SMTP starts up.)127 227 R 2.008(The \214rst w)7.008 F 2.008
-(ord must be the)-.1 F F0($j)4.508 E F1 2.009(macro as speci\214ed by)4.508 F
-2.732(RFC821. Def)127 239 R .232(aults to \231$j Sendmail $v ready at $b\232.)
--.1 F .231(Commonly rede\214ned to include the con-)5.231 F(\214guration v)127
-251 Q(ersion number)-.15 E 2.5(,e)-.4 G
-(.g., \231$j Sendmail $v/$Z ready at $b\232)239.77 251 Q 14.17($f The)102 267.2
-R(en)2.5 E -.15(ve)-.4 G(lope sender \(from\) address.).15 E 12.5($g The)102
-283.4 R .017(sender address relati)2.517 F .317 -.15(ve t)-.25 H 2.517(ot).15 G
-.017(he recipient.)251.375 283.4 R -.15(Fo)5.017 G 2.517(re).15 G .018
-(xample, if)326.386 283.4 R F0($f)2.518 E F1 .018(is \231foo\232,)2.518 F F0
-($g)2.518 E F1 .018(will be \231host!foo\232,)2.518 F
-(\231foo@host.domain\232, or whate)127 295.4 Q -.15(ve)-.25 G 2.5(ri).15 G 2.5
-(sa)264.95 295.4 S(ppropriate for the recei)275.78 295.4 Q(ving mailer)-.25 E
-(.)-.55 E 12.5($h The)102 311.6 R(recipient host.)2.5 E
-(This is set in ruleset 0 from the $# \214eld of a parsed address.)5 E 14.72
-($i The)102 327.8 R(queue id, e.g., \231HAA12345\232.)2.5 E 9.72($j\210 The)102
-344 R(\231of)2.747 E .247(\214cial\232 domain name for this site.)-.25 F .247
-(This is fully quali\214ed if the full quali\214cation can be)5.247 F 3.093
-(found. It)127 356 R/F3 10/Times-Italic@0 SF(must)3.093 E F1 .594(be rede\214n\
-ed to be the fully quali\214ed domain name if your system is not con-)3.093 F
-(\214gured so that information can \214nd it automatically)127 368 Q(.)-.65 E
-12.5($k The)102 384.2 R(UUCP node name \(from the uname system call\).)2.5 E
-9.72($l\207 \(Obsolete;)102 400.4 R 1.282(use UnixFromLine option instead.\))
-3.782 F 1.282(The format of the UNIX from line.)6.282 F(Unless)6.281 E 1.409
-(you ha)127 412.4 R 1.709 -.15(ve c)-.2 H 1.409
-(hanged the UNIX mailbox format, you should not change the def).15 F 1.41
-(ault, which is)-.1 F(\231From $g)127 424.4 Q($d\232.)5 E 9.72($m The)102 440.6
-R .719(domain part of the)3.219 F F3 -.1(ge)3.219 G(thostname).1 E F1 .718
-(return v)3.219 F 3.218(alue. Under)-.25 F .718(normal circumstances,)3.218 F
-F0($j)3.218 E F1 .718(is equi)3.218 F(v-)-.25 E(alent to)127 452.6 Q F0($w)2.5
-E(.$m)-.7 E F1(.)A 7.5($n\207 The)102 468.8 R
-(name of the daemon \(for error messages\).)2.5 E(Def)5 E
-(aults to \231MAILER-D)-.1 E(AEMON\232.)-.4 E 7.5($o\207 \(Obsolete:)102 485 R
-.65(use OperatorChars option instead.\))3.15 F .651
-(The set of \231operators\232 in addresses.)5.651 F 3.151(Al)5.651 G .651
-(ist of)483.069 485 R .582(characters which will be considered tok)127 497 R
-.581(ens and which will separate tok)-.1 F .581(ens when doing pars-)-.1 F
-3.277(ing. F)127 509 R .777(or e)-.15 F .777(xample, if \231@\232 were in the)
--.15 F F0($o)3.278 E F1 .778(macro, then the input \231a@b\232 w)3.278 F .778
-(ould be scanned as)-.1 F .628(three tok)127 521 R .628(ens: \231a,)-.1 F 3.128
-<9a99>-.7 G(@,)204.724 521 Q 3.128<9a61>-.7 G .628(nd \231b)227.742 521 R 4.527
--.7(.\232 D)-.4 H(ef).7 E .627
-(aults to \231.:@[]\232, which is the minimum set necessary to)-.1 F .856(do R\
-FC 822 parsing; a richer set of operators is \231.:%@!/[]\232, which adds supp\
-ort for UUCP)127 533 R(,)-1.11 E(the %-hack, and X.400 addresses.)127 545 Q
-12.5($p Sendmail')102 561.2 R 2.5(sp)-.55 G(rocess id.)178.95 561.2 Q 7.5
-($q\207 Def)102 577.4 R .404(ault format of sender address.)-.1 F(The)5.404 E
-F0($q)2.903 E F1 .403(macro speci\214es ho)2.903 F 2.903(wa)-.25 G 2.903(na)
-388.955 577.4 S .403(ddress should appear in a)401.298 577.4 R 1.18
-(message when it is def)127 589.4 R 3.681(aulted. Def)-.1 F 1.181
-(aults to \231<$g>\232.)-.1 F 1.181(It is commonly rede\214ned to be \231$?x$x)
-6.181 F(<$g>$|$g$.)127 601.4 Q 5<9a6f>-.7 G 2.5<7299>186.52 601.4 S
-($g$?x \($x\)$.)196.79 601.4 Q(\232, corresponding to the follo)-.7 E(wing tw)
--.25 E 2.5(of)-.1 G(ormats:)403.21 601.4 Q(Eric Allman <eric@CS.Berk)167 617.6
-Q(ele)-.1 E -.65(y.)-.15 G(EDU>).65 E(eric@CS.Berk)167 629.6 Q(ele)-.1 E -.65
-(y.)-.15 G(EDU \(Eric Allman\)).65 E F3(Sendmail)127 645.8 Q F1
-(properly quotes names that ha)2.5 E .3 -.15(ve s)-.2 H
-(pecial characters if the \214rst form is used.).15 E 14.17($r Protocol)102 662
-R .977(used to recei)3.477 F 1.277 -.15(ve t)-.25 H .976(he message.).15 F .976
-(Set from the)5.976 F F0<ad70>3.476 E F1 .976
-(command line \215ag or by the SMTP)3.476 F(serv)127 674 Q(er code.)-.15 E .32
-LW 76 688.4 72 688.4 DL 80 688.4 76 688.4 DL 84 688.4 80 688.4 DL 88 688.4 84
-688.4 DL 92 688.4 88 688.4 DL 96 688.4 92 688.4 DL 100 688.4 96 688.4 DL 104
-688.4 100 688.4 DL 108 688.4 104 688.4 DL 112 688.4 108 688.4 DL 116 688.4 112
-688.4 DL 120 688.4 116 688.4 DL 124 688.4 120 688.4 DL 128 688.4 124 688.4 DL
-132 688.4 128 688.4 DL 136 688.4 132 688.4 DL 140 688.4 136 688.4 DL 144 688.4
-140 688.4 DL 148 688.4 144 688.4 DL 152 688.4 148 688.4 DL 156 688.4 152 688.4
-DL 160 688.4 156 688.4 DL 164 688.4 160 688.4 DL 168 688.4 164 688.4 DL 172
-688.4 168 688.4 DL 176 688.4 172 688.4 DL 180 688.4 176 688.4 DL 184 688.4 180
-688.4 DL 188 688.4 184 688.4 DL 192 688.4 188 688.4 DL 196 688.4 192 688.4 DL
-200 688.4 196 688.4 DL 204 688.4 200 688.4 DL 208 688.4 204 688.4 DL 212 688.4
-208 688.4 DL 216 688.4 212 688.4 DL/F4 5/Times-Roman@0 SF(15)93.6 698.8 Q/F5 8
-/Times-Roman@0 SF(As of v)3.2 I(ersion 8.6, all of these macros ha)-.12 E .24
--.12(ve r)-.16 H(easonable def).12 E 2(aults. Pre)-.08 F(vious v)-.2 E
-(ersions required that the)-.12 E 2(yb)-.12 G 2(ed)424.728 702 S(e\214ned.)
-434.28 702 Q EP
-%%Page: 33 28
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-33)452.9 60 Q/F1 10/Times-Roman@0 SF 13.61($s Sender')102 96 R 2.5(sh)
--.55 G(ost name.)168.94 96 Q(Set from the)5 E F0<ad70>2.5 E F1
-(command line \215ag or by the SMTP serv)2.5 E(er code.)-.15 E 14.72($t A)102
-112.2 R(numeric representation of the current time.)2.5 E 12.5($u The)102 128.4
-R(recipient user)2.5 E(.)-.55 E 12.5($v The)102 144.6 R -.15(ve)2.5 G
-(rsion number of the).15 E/F2 10/Times-Italic@0 SF(sendmail)2.5 E F1(binary)2.5
-E(.)-.65 E 5.28($w\210 The)102 160.8 R(hostname of this site.)2.5 E
-(This is the root name of this host \(b)5 E(ut see belo)-.2 E 2.5(wf)-.25 G
-(or ca)432.64 160.8 Q -.15(ve)-.2 G(ats\).).15 E 12.5($x The)102 177 R
-(full name of the sender)2.5 E(.)-.55 E 13.06($z The)102 193.2 R
-(home directory of the recipient.)2.5 E 12.5($_ The)102 209.4 R -.25(va)2.5 G
-(lidated sender address.).25 E .749
-(There are three types of dates that can be used.)127 225.6 R(The)5.749 E F0
-($a)3.249 E F1(and)3.249 E F0($b)3.249 E F1 .749(macros are in RFC 822 for)
-3.249 F(-)-.2 E(mat;)102 237.6 Q F0($a)3.214 E F1 .714(is the time as e)3.214 F
-.713(xtracted from the \231Date:\232 line of the message \(if there w)-.15 F
-.713(as one\), and)-.1 F F0($b)3.213 E F1(is)3.213 E .056
-(the current date and time \(used for postmarks\).)102 249.6 R .057
-(If no \231Date:\232 line is found in the incoming message,)5.056 F F0($a)102
-261.6 Q F1 .305(is set to the current time also.)2.805 F(The)5.305 E F0($d)
-2.805 E F1 .304(macro is equi)2.805 F -.25(va)-.25 G .304(lent to the).25 F F0
-($b)2.804 E F1 .304(macro in UNIX \(ctime\) for)2.804 F(-)-.2 E(mat.)102 273.6
-Q .238(The macros)127 289.8 R F0($w)2.738 E F1(,)A F0($j)2.738 E F1 2.738(,a)C
-(nd)212.372 289.8 Q F0($m)2.738 E F1 .238
-(are set to the identity of this host.)2.738 F F2(Sendmail)5.239 E F1 .239
-(tries to \214nd the fully)2.739 F .335
-(quali\214ed name of the host if at all possible; it does this by calling)102
-301.8 R F2 -.1(ge)2.834 G(thostname).1 E F1 .334(\(2\) to get the current)B
-.457(hostname and then passing that to)102 313.8 R F2 -.1(ge)2.957 G
-(thostbyname).1 E F1 .457(\(3\) which is supposed to return the canonical v)B
-(er)-.15 E(-)-.2 E .279(sion of that host name.)102 327.8 R/F3 7/Times-Roman@0
-SF(16)193.946 323.8 Q F1 .279(Assuming this is successful,)203.725 327.8 R F0
-($j)2.778 E F1 .278(is set to the fully quali\214ed name and)2.778 F F0($m)
-2.778 E F1(is)2.778 E .706(set to the domain part of the name \(e)102 339.8 R
--.15(ve)-.25 G .706(rything after the \214rst dot\).).15 F(The)5.706 E F0($w)
-3.206 E F1 .706(macro is set to the \214rst)3.206 F -.1(wo)102 351.8 S .359
-(rd \(e).1 F -.15(ve)-.25 G .358(rything before the \214rst dot\) if you ha).15
-F .658 -.15(ve a l)-.2 H -2.15 -.25(ev e).15 H 2.858(l5o).25 G 2.858(rh)345
-351.8 S .358(igher con\214guration \214le; otherwise, it)356.188 351.8 R .404
-(is set to the same v)102 363.8 R .405(alue as)-.25 F F0($j)2.905 E F1 5.405
-(.I)C 2.905(ft)229.965 363.8 S .405
-(he canoni\214cation is not successful, it is imperati)238.98 363.8 R .705 -.15
-(ve t)-.25 H .405(hat the con\214g).15 F(\214le set)102 377.8 Q F0($j)2.5 E F1
-(to the fully quali\214ed domain name)2.5 E F3(17)279.77 373.8 Q F1(.)286.77
-377.8 Q(The)127 394 Q F0($f)2.833 E F1 .333(macro is the id of the sender as o\
-riginally determined; when mailing to a speci\214c host)2.833 F(the)102 406 Q
-F0($g)3.224 E F1 .724(macro is set to the address of the sender)3.224 F F2 -.37
-(re)3.225 G .725(lative to the r).37 F(ecipient.)-.37 E F1 -.15(Fo)5.725 G
-3.225(re).15 G .725(xample, if I send to)423.61 406 R
-(\231bollard@matisse.CS.Berk)102 418 Q(ele)-.1 E -.65(y.)-.15 G .425
-(EDU\232 from the machine \231v).65 F(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)
--.15 G .424(EDU\232 the).65 F F0($f)2.924 E F1(macro)2.924 E
-(will be \231eric\232 and the)102 430 Q F0($g)2.5 E F1
-(macro will be \231eric@v)2.5 E(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G
-(EDU.).65 E<9a>-.7 E(The)127 446.2 Q F0($x)2.562 E F1 .062
-(macro is set to the full name of the sender)2.562 F 5.062(.T)-.55 G .062
-(his can be determined in se)338.824 446.2 R -.15(ve)-.25 G .063(ral w).15 F
-2.563(ays. It)-.1 F .63(can be passed as \215ag to)102 458.2 R F2(sendmail)3.13
-E F1 5.629(.I)C 3.129(tc)249.439 458.2 S .629(an be de\214ned in the)259.788
-458.2 R/F4 9/Times-Roman@0 SF -.315(NA)3.129 G(ME).315 E F1(en)3.129 E .629
-(vironment v)-.4 F 3.129(ariable. The)-.25 F(third)3.129 E .948
-(choice is the v)102 470.2 R .948
-(alue of the \231Full-Name:\232 line in the header if it e)-.25 F .949
-(xists, and the fourth choice is the)-.15 F .526
-(comment \214eld of a \231From:\232 line.)102 482.2 R .526(If all of these f)
-5.526 F .526(ail, and if the message is being originated locally)-.1 F(,)-.65 E
-(the full name is look)102 494.2 Q(ed up in the)-.1 E F2(/etc/passwd)2.5 E F1
-(\214le.)2.5 E 1.32(When sending, the)127 510.4 R F0($h)3.82 E F1(,)A F0($u)
-3.82 E F1 3.82(,a)C(nd)246.37 510.4 Q F0($z)3.82 E F1 1.321
-(macros get set to the host, user)3.82 F 3.821(,a)-.4 G 1.321
-(nd home directory \(if)414.777 510.4 R .517(local\) of the recipient.)102
-522.4 R .517(The \214rst tw)5.517 F 3.016(oa)-.1 G .516(re set from the)256.878
-522.4 R F0($@)3.016 E F1(and)3.016 E F0($:)3.016 E F1 .516(part of the re)3.016
-F .516(writing rules, respec-)-.25 F(ti)102 534.4 Q -.15(ve)-.25 G(ly).15 E(.)
--.65 E(The)127 550.6 Q F0($p)3.806 E F1(and)3.806 E F0($t)3.806 E F1 1.306(mac\
-ros are used to create unique strings \(e.g., for the \231Message-Id:\232 \214\
-eld\).)3.806 F(The)102 562.6 Q F0($i)3.252 E F1 .751(macro is set to the queue\
- id on this host; if put into the timestamp line it can be e)3.252 F(xtremely)
--.15 E .164(useful for tracking messages.)102 574.6 R(The)5.164 E F0($v)2.664 E
-F1 .164(macro is set to be the v)2.664 F .165(ersion number of)-.15 F F2
-(sendmail)2.665 E F1 2.665(;t)C .165(his is nor)463.87 574.6 R(-)-.2 E
-(mally put in timestamps and has been pro)102 586.6 Q -.15(ve)-.15 G 2.5(ne).15
-G(xtremely useful for deb)289.31 586.6 Q(ugging.)-.2 E(The)127 602.8 Q F0($c)
-3.548 E F1 1.048(\214eld is set to the \231hop count,)3.548 F 3.548<9a69>-.7 G
-1.048(.e., the number of times this message has been pro-)290.162 602.8 R 2.856
-(cessed. This)102 614.8 R .356(can be determined by the)2.856 F F0<ad68>2.856 E
-F1 .357(\215ag on the command line or by counting the timestamps)2.856 F
-(in the message.)102 626.8 Q(The)127 643 Q F0($r)2.833 E F1(and)2.833 E F0($s)
-2.833 E F1 .333(\214elds are set to the protocol used to communicate with)2.833
-F F2(sendmail)2.833 E F1 .333(and the send-)2.833 F .194(ing hostname.)102 655
-R(The)5.194 E 2.694(yc)-.15 G .194(an be set together using the)191.032 655 R
-F0<ad70>2.694 E F1 .194(command line \215ag or separately using the)2.694 F F0
-<ad4d>2.695 E F1(or)102 667 Q F0(\255oM)2.5 E F1(\215ags.)2.5 E .32 LW 76 676.6
-72 676.6 DL 80 676.6 76 676.6 DL 84 676.6 80 676.6 DL 88 676.6 84 676.6 DL 92
-676.6 88 676.6 DL 96 676.6 92 676.6 DL 100 676.6 96 676.6 DL 104 676.6 100
-676.6 DL 108 676.6 104 676.6 DL 112 676.6 108 676.6 DL 116 676.6 112 676.6 DL
-120 676.6 116 676.6 DL 124 676.6 120 676.6 DL 128 676.6 124 676.6 DL 132 676.6
-128 676.6 DL 136 676.6 132 676.6 DL 140 676.6 136 676.6 DL 144 676.6 140 676.6
-DL 148 676.6 144 676.6 DL 152 676.6 148 676.6 DL 156 676.6 152 676.6 DL 160
-676.6 156 676.6 DL 164 676.6 160 676.6 DL 168 676.6 164 676.6 DL 172 676.6 168
-676.6 DL 176 676.6 172 676.6 DL 180 676.6 176 676.6 DL 184 676.6 180 676.6 DL
-188 676.6 184 676.6 DL 192 676.6 188 676.6 DL 196 676.6 192 676.6 DL 200 676.6
-196 676.6 DL 204 676.6 200 676.6 DL 208 676.6 204 676.6 DL 212 676.6 208 676.6
-DL 216 676.6 212 676.6 DL/F5 5/Times-Roman@0 SF(16)93.6 687 Q/F6 8
-/Times-Roman@0 SF -.12(Fo)3.2 K 2(re).12 G(xample, on some systems)115.024
-690.2 Q/F7 8/Times-Italic@0 SF -.08(ge)2 G(thostname).08 E F6
-(might return \231foo\232 which w)2 E(ould be mapped to \231foo.bar)-.08 E
-(.com\232 by)-.44 E F7 -.08(ge)2 G(thostbyname).08 E F6(.)A F5(17)93.6 700.6 Q
-F6(Older v)3.2 I(ersions of sendmail didn')-.12 E 2(tp)-.144 G(re-de\214ne)
-211.88 703.8 Q/F8 8/Times-Bold@0 SF($j)2 E F6
-(at all, so up until 8.6, con\214g \214les)2 E F7(always)2 E F6
-(had to de\214ne)2 E F8($j)2 E F6(.)A EP
-%%Page: 34 29
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-34 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(The)127 96 Q F0
-($_)2.967 E F1 .467(is set to a v)2.967 F .467(alidated sender host name.)-.25
-F .466(If the sender is running an RFC 1413 compli-)5.467 F .384
-(ant IDENT serv)102 108 R .384(er and the recei)-.15 F -.15(ve)-.25 G 2.884(rh)
-.15 G .384(as the IDENT protocol turned on, it will include the user name)
-249.254 108 R(on that host.)102 120 Q F0 2.5(5.3. C)87 144 R
-(and F \212 De\214ne Classes)2.5 E F1 .66
-(Classes of phrases may be de\214ned to match on the left hand side of re)127
-160.2 R .659(writing rules, where a)-.25 F .192(\231phrase\232 is a sequence o\
-f characters that do not contain space characters.)102 172.2 R -.15(Fo)5.192 G
-2.692(re).15 G .192(xample a class of all)421.582 172.2 R 1.428(local names fo\
-r this site might be created so that attempts to send to oneself can be elimin\
-ated.)102 184.2 R .041(These can either be de\214ned directly in the con\214gu\
-ration \214le or read in from another \214le.)102 196.2 R .041(Classes are)
-5.041 F .649(named as a single letter or a w)102 208.2 R .649(ord in {braces}.)
--.1 F .649(Class names be)5.649 F .649(ginning with lo)-.15 F .648
-(wer case letters and)-.25 F .638(special characters are reserv)102 220.2 R
-.638(ed for system use.)-.15 F .639
-(Classes de\214ned in con\214g \214les may be gi)5.639 F -.15(ve)-.25 G 3.139
-(nn).15 G(ames)483.45 220.2 Q 1.05
-(from the set of upper case letters for short names or be)102 232.2 R 1.05
-(ginning with an upper case letter for long)-.15 F(names.)102 244.2 Q
-(The syntax is:)127 260.4 Q F0(C)142 276.6 Q/F2 10/Times-Italic@0 SF 1.666(cp)C
-(hr)-1.666 E(ase1 phr)-.15 E(ase2...)-.15 E F0(F)142 288.6 Q F2 1.666<638c>C
-(le)-1.666 E F1 .661(The \214rst form de\214nes the class)102 304.8 R F2(c)
-3.161 E F1 .661(to match an)3.161 F 3.161(yo)-.15 G 3.161(ft)300.1 304.8 S .661
-(he named w)309.371 304.8 R 3.161(ords. It)-.1 F .661
-(is permissible to split them)3.161 F(among multiple lines; for e)102 316.8 Q
-(xample, the tw)-.15 E 2.5(of)-.1 G(orms:)280.07 316.8 Q(CHmonet ucbmonet)142
-333 Q(and)102 349.2 Q(CHmonet)142 365.4 Q(CHucbmonet)142 377.4 Q(are equi)102
-393.6 Q -.25(va)-.25 G 2.5(lent. The).25 F -.74(``)2.5 G(F').74 E 2.5('f)-.74 G
-(orm reads the elements of the class)206.65 393.6 Q F2(c)2.5 E F1
-(from the named)2.5 E F2(\214le)2.5 E F1(.)A 1.339
-(Elements of classes can be accessed in rules using)127 409.8 R F0($=)3.839 E
-F1(or)3.839 E F0($~)3.839 E F1 6.339(.T)C(he)392.048 409.8 Q F0($~)3.839 E F1
-1.338(\(match entries not in)3.839 F(class\) only matches a single w)102 421.8
-Q(ord; multi-w)-.1 E(ord entries in the class are ignored in this conte)-.1 E
-(xt.)-.15 E 1.098(The class)127 438 R F0($=w)3.598 E F1 1.098
-(is set to be the set of all names this host is kno)3.598 F 1.098(wn by)-.25 F
-6.098(.T)-.65 G 1.098(his can be used to)428.506 438 R(match local hostnames.)
-102 450 Q(The class)127 466.2 Q F0($=k)2.5 E F1(is set to be the same as)2.5 E
-F0($k)2.5 E F1 2.5(,t)C(hat is, the UUCP node name.)297.69 466.2 Q(The class)
-127 482.4 Q F0($=m)2.5 E F1
-(is set to the set of domains by which this host is kno)2.5 E
-(wn, initially just)-.25 E F0($m)2.5 E F1(.)A .239(The class)127 498.6 R F0
-($=t)2.739 E F1 .239(is set to the set of trusted users by the)2.739 F F0(T)
-2.739 E F1 .239(con\214guration line.)2.739 F .239(If you w)5.239 F .239
-(ant to read)-.1 F(trusted users from a \214le use)102 510.6 Q F0(Ft)2.5 E F2
-(/\214le/name)A F1(.)A .635(The class)127 526.8 R F0($=n)3.135 E F1 .635
-(can be set to the set of MIME body types that can ne)3.135 F -.15(ve)-.25 G
-3.136(rb).15 G 3.136(ee)426.306 526.8 S .636(ight to se)438.322 526.8 R -.15
-(ve)-.25 G 3.136(nb).15 G(it)498.44 526.8 Q 2.76(encoded. It)102 538.8 R(def)
-2.76 E .26(aults to \231multipart/signed\232.)-.1 F .26
-(Message types \231message/*\232 and \231multipart/*\232 are ne)5.26 F -.15(ve)
--.25 G(r).15 E .942(encoded directly)102 550.8 R 5.942(.M)-.65 G .943
-(ultipart messages are al)185.994 550.8 R -.1(wa)-.1 G .943(ys handled recursi)
-.1 F -.15(ve)-.25 G(ly).15 E 5.943(.T)-.65 G .943(he handling of message/*)
-399.241 550.8 R .658(messages are controlled by class)102 562.8 R F0($=s)3.158
-E F1 5.658(.T)C .657(he class)266.618 562.8 R F0($=e)3.157 E F1 .657
-(contains the Content-T)3.157 F(ransfer)-.35 E .657(-Encodings that)-.2 F .007
-(can be 8)102 574.8 R/F3 10/Symbol SF<ae>A F1 2.507(7b)C .007(it encoded.)
-157.711 574.8 R .007
-(It is prede\214ned to contain \2317bit\232, \2318bit\232, and \231binary\232.)
-5.007 F .007(The class)5.007 F F0($=s)2.507 E F1(con-)2.508 E 1.52
-(tains the set of subtypes of message that can be treated recursi)102 586.8 R
--.15(ve)-.25 G(ly).15 E 6.52(.B)-.65 G 4.02(yd)398.58 586.8 S(ef)412.6 586.8 Q
-1.52(ault it contains only)-.1 F 3.213(\231rfc822\232. Other)102 598.8 R .713
-(\231message/*\232 types cannot be 8)3.213 F F3<ae>A F1 3.214(7b)C .714
-(it encoded.)319.862 598.8 R .714(If a message containing eight bit)5.714 F
-1.714(data is sent to a se)102 610.8 R -.15(ve)-.25 G 4.214(nb).15 G 1.714
-(it host, and that message cannot be encoded into se)206.314 610.8 R -.15(ve)
--.25 G 4.213(nb).15 G 1.713(its, it will be)448.851 610.8 R
-(stripped to 7 bits.)102 622.8 Q F2(Sendmail)127 639 Q F1 .182
-(can be compiled to allo)2.682 F 2.682(wa)-.25 G F2(scanf)A F1 .182
-(\(3\) string on the)B F0(F)2.682 E F1 2.683(line. This)2.683 F .183
-(lets you do simplistic)2.683 F .555(parsing of te)102 651 R .555(xt \214les.)
--.15 F -.15(Fo)5.555 G 3.055(re).15 G .554
-(xample, to read all the user names in your system)209.595 651 R F2
-(/etc/passwd)3.054 E F1 .554(\214le into a)3.054 F(class, use)102 663 Q
-(FL/etc/passwd %[^:])142 679.2 Q(which reads e)102 695.4 Q -.15(ve)-.25 G
-(ry line up to the \214rst colon.).15 E EP
-%%Page: 35 30
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-35)452.9 60 Q 2.5(5.4. M)87 96 R 2.5<8a44>2.5 G(e\214ne Mailer)138.66
-96 Q/F1 10/Times-Roman@0 SF(Programs and interf)127 112.2 Q
-(aces to mailers are de\214ned in this line.)-.1 E(The format is:)5 E F0(M)142
-128.4 Q/F2 10/Times-Italic@0 SF(name)A F1 2.5(,{)C F2(\214eld)182.9 128.4 Q F1
-(=)A F2(value)A F1(}*)1.666 E(where)102 144.6 Q F2(name)4.244 E F1 1.744(is th\
-e name of the mailer \(used internally only\) and the \231\214eld=name\232 pai\
-rs de\214ne)4.244 F(attrib)102 156.6 Q(utes of the mailer)-.2 E 5(.F)-.55 G
-(ields are:)205.13 156.6 Q -.15(Pa)142 172.8 S 51.87(th The).15 F
-(pathname of the mailer)2.5 E 47.83(Flags Special)142 184.8 R
-(\215ags for this mailer)2.5 E 41.73(Sender Re)142 196.8 R
-(writing set\(s\) for sender addresses)-.25 E 31.17(Recipient Re)142 208.8 R
-(writing set\(s\) for recipient addresses)-.25 E(Ar)142 220.8 Q 49.13(gv An)
--.18 F(ar)2.5 E(gument v)-.18 E(ector to pass to this mailer)-.15 E 55.61
-(Eol The)142 232.8 R(end-of-line string for this mailer)2.5 E 35.62
-(Maxsize The)142 244.8 R(maximum message length to this mailer)2.5 E 32.27
-(Linelimit The)142 256.8 R(maximum line length in the message body)2.5 E 31.18
-(Directory The)142 268.8 R -.1(wo)2.5 G(rking directory for the mailer).1 E
-42.84(Userid The)142 280.8 R(def)2.5 E(ault user and group id to run as)-.1 E
-50.62(Nice The)142 292.8 R(nice\(2\) increment for the mailer)2.5 E 38.95
-(Charset The)142 304.8 R(def)2.5 E(ault character set for 8-bit characters)-.1
-E -.8(Ty)142 316.8 S 49.75(pe The).8 F
-(MTS type information \(used for error messages\))2.5 E
-(Only the \214rst character of the \214eld name is check)102 333 Q(ed.)-.1 E
-.397(The follo)127 349.2 R .396
-(wing \215ags may be set in the mailer description.)-.25 F(An)5.396 E 2.896(yo)
--.15 G .396(ther \215ags may be used freely)386.77 349.2 R .075
-(to conditionally assign headers to messages destined for particular mailers.)
-102 361.2 R .075(Flags mark)5.075 F .075(ed with \207 are)-.1 F 1.193
-(not interpreted by the)102 373.2 R F2(sendmail)3.693 E F1 1.193
-(binary; these are the con)3.693 F -.15(ve)-.4 G 1.192
-(ntionally used to correlate to the \215ags).15 F .737(portion of the)102 385.2
-R F0(H)3.237 E F1 3.237(line. Flags)3.237 F(mark)3.237 E .737
-(ed with \210 apply to the mailers for the sender address rather than)-.1 F
-(the usual recipient mailers.)102 397.2 Q 15.56(aR)102 413.4 S .987(un Extende\
-d SMTP \(ESMTP\) protocol \(de\214ned in RFCs 1651, 1652, and 1653\).)128.67
-413.4 R .986(This \215ag)5.987 F(def)122 425.4 Q
-(aults on if the SMTP greeting message includes the w)-.1 E(ord \231ESMTP\232.)
--.1 E 12.78(AL)102 441.6 S .762
-(ook up the user part of the address in the alias database.)128.11 441.6 R .763
-(Normally this is only set for local)5.762 F(mailers.)122 453.6 Q 15(bF)102
-469.8 S .456(orce a blank line on the end of a message.)127.41 469.8 R .456
-(This is intended to w)5.456 F .456(ork around some stupid v)-.1 F(er)-.15 E(-)
--.2 E .361(sions of /bin/mail that require a blank line, b)122 481.8 R .362
-(ut do not pro)-.2 F .362(vide it themselv)-.15 F 2.862(es. It)-.15 F -.1(wo)
-2.862 G .362(uld not nor).1 F(-)-.2 E(mally be used on netw)122 493.8 Q
-(ork mail.)-.1 E 15.56(cD)102 510 S 2.663(on)129.22 510 S .163
-(ot include comments in addresses.)141.883 510 R .163
-(This should only be used if you ha)5.163 F .463 -.15(ve t)-.2 H 2.663(ow).15 G
-.163(ork around a)453.135 510 R 1.846
-(remote mailer that gets confused by comments.)122 522 R 1.846
-(This strips addresses of the form \231Phrase)6.846 F
-(<address>\232 or \231address \(Comment\)\232 do)122 534 Q
-(wn to just \231address\232.)-.25 E 5.83(C\210 If)102 550.2 R .214(mail is)
-2.714 F F2 -.37(re)2.714 G(ceived).37 E F1 .213
-(from a mailer with this \215ag set, an)2.713 F 2.713(ya)-.15 G .213
-(ddresses in the header that do not ha)348.169 550.2 R -.15(ve)-.2 G .97
-(an at sign \(\231@\232\) after being re)122 562.2 R .97
-(written by ruleset three will ha)-.25 F 1.27 -.15(ve t)-.2 H .97
-(he \231@domain\232 clause from).15 F(the sender en)122 574.2 Q -.15(ve)-.4 G
-(lope address tack).15 E(ed on.)-.1 E(This allo)5 E
-(ws mail with headers of the form:)-.25 E(From: usera@hosta)162 590.4 Q -.8(To)
-162 602.4 S 2.5(:u).8 G(serb@hostb, userc)182.59 602.4 Q(to be re)122 618.6 Q
-(written as:)-.25 E(From: usera@hosta)162 634.8 Q -.8(To)162 646.8 S 2.5(:u).8
-G(serb@hostb, userc@hosta)182.59 646.8 Q(automatically)122 663 Q 5(.H)-.65 G
--.25(ow)190.51 663 S -2.15 -.25(ev e).25 H .8 -.4(r, i).25 H 2.5(td).4 G(oesn')
-236.95 663 Q 2.5(tr)-.18 G(eally w)267.04 663 Q(ork reliably)-.1 E(.)-.65 E
-5.28(D\207 This)102 679.2 R(mailer w)2.5 E(ants a \231Date:\232 header line.)
--.1 E 15.56(eT)102 695.4 S .174(his mailer is e)128.11 695.4 R(xpensi)-.15 E
-.474 -.15(ve t)-.25 H 2.674(oc).15 G .173(onnect to, so try to a)237.03 695.4 R
--.2(vo)-.2 G .173(id connecting normally; an).2 F 2.673(yn)-.15 G .173
-(ecessary con-)449.687 695.4 R(nection will occur during a queue run.)122 707.4
-Q EP
-%%Page: 36 31
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-36 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 13.89(EE)102 96
-S(scape lines be)128.11 96 Q
-(ginning with \231From\232 in the message with a `>' sign.)-.15 E 16.67(fT)102
-112.2 S .19(he mailer w)128.11 112.2 R .19(ants a)-.1 F F0<ad66>2.69 E/F2 10
-/Times-Italic@0 SF(fr)2.69 E(om)-.45 E F1 .19(\215ag, b)2.69 F .19
-(ut only if this is a netw)-.2 F .19(ork forw)-.1 F .19
-(ard operation \(i.e., the mailer)-.1 F(will gi)122 124.2 Q .3 -.15(ve a)-.25 H
-2.5(ne).15 G(rror if the e)175.76 124.2 Q -.15(xe)-.15 G
-(cuting user does not ha).15 E .3 -.15(ve s)-.2 H(pecial permissions\).).15 E
-6.94(F\207 This)102 140.4 R(mailer w)2.5 E(ants a \231From:\232 header line.)
--.1 E 15(gN)102 156.6 S(ormally)129.22 156.6 Q(,)-.65 E F2(sendmail)4.893 E F1
-2.393(sends internally generated email \(e.g., error messages\) using the null)
-4.893 F 1.327(return address as required by RFC 1123.)122 168.6 R(Ho)6.327 E
-(we)-.25 E -.15(ve)-.25 G 2.127 -.4(r, s).15 H 1.327(ome mailers don').4 F
-3.827(ta)-.18 G 1.328(ccept a null return)427.537 168.6 R 3.311(address. If)122
-180.6 R(necessary)3.311 E 3.311(,y)-.65 G .811(ou can set the)219.303 180.6 R
-F0(g)3.311 E F1 .811(\215ag to pre)3.311 F -.15(ve)-.25 G(nt).15 E F2(sendmail)
-3.31 E F1 .81(from obe)3.31 F .81(ying the standards;)-.15 F 1.57
-(error messages will be sent as from the MAILER-D)122 192.6 R 1.57
-(AEMON \(actually)-.4 F 4.07(,t)-.65 G 1.57(he v)425.76 192.6 R 1.57
-(alue of the)-.25 F F0($n)4.07 E F1(macro\).)122 204.6 Q 15(hU)102 220.8 S
-(pper case should be preserv)129.22 220.8 Q(ed in host names for this mailer)
--.15 E(.)-.55 E 16.67(IT)102 237 S .475
-(his mailer will be speaking SMTP to another)128.11 237 R F2(sendmail)2.974 E
-F1 2.974<8a61>2.974 G 2.974(ss)370.066 237 S .474
-(uch it can use special protocol)380.82 237 R 3.632(features. This)122 249 R
-1.133(option is not required \(i.e., if this option is omitted the transmissio\
-n will still)3.632 F(operate successfully)122 261 Q 2.5(,a)-.65 G
-(lthough perhaps not as ef)211.6 261 Q(\214ciently as possible\).)-.25 E 15(kN)
-102 277.2 S 1.03(ormally when)129.22 277.2 R F2(sendmail)3.53 E F1 1.03
-(connects to a host via SMTP)3.53 F 3.529(,i)-1.11 G 3.529(tc)356.257 277.2 S
-1.029(hecks to mak)367.006 277.2 R 3.529(es)-.1 G 1.029(ure that this isn')
-433.593 277.2 R(t)-.18 E .562(accidently the same host name as might happen if)
-122 289.2 R F2(sendmail)3.062 E F1 .562(is miscon\214gured or if a long-haul)
-3.062 F(netw)122 301.2 Q 1.074(ork interf)-.1 F 1.074
-(ace is set in loopback mode.)-.1 F 1.073
-(This \215ag disables the loopback check.)6.074 F 1.073(It should)6.073 F
-(only be used under v)122 313.2 Q(ery unusual circumstances.)-.15 E 12.78(KC)
-102 329.4 S(urrently unimplemented.)128.67 329.4 Q(Reserv)5 E(ed for chunking.)
--.15 E 17.22(lT)102 345.6 S(his mailer is local \(i.e., \214nal deli)128.11
-345.6 Q -.15(ve)-.25 G(ry will be performed\).).15 E 13.89(LL)102 361.8 S .819
-(imit the line lengths as speci\214ed in RFC821.)128.11 361.8 R .82
-(This deprecated option should be replaced by)5.819 F(the)122 373.8 Q F0(L=)2.5
-E F1(mail declaration.)2.5 E -.15(Fo)5 G 2.5(rh).15 G(istoric reasons, the)
-245.04 373.8 Q F0(L)2.5 E F1(\215ag also sets the)2.5 E F0(7)2.5 E F1(\215ag.)
-2.5 E 12.22(mT)102 390 S .464
-(his mailer can send to multiple users on the same host in one transaction.)
-128.11 390 R .463(When a)5.463 F F0($u)2.963 E F1(macro)2.963 E .731
-(occurs in the)122 402 R F2(ar)3.231 E(gv)-.37 E F1 .732(part of the mailer de\
-\214nition, that \214eld will be repeated as necessary for all)3.231 F
-(qualifying users.)122 414 Q 3.61(M\207 This)102 430.2 R(mailer w)2.5 E
-(ants a \231Message-Id:\232 header line.)-.1 E 15(nD)102 446.4 S 2.5(on)129.22
-446.4 S(ot insert a UNIX-style \231From\232 line on the front of the message.)
-141.72 446.4 Q 15(oA)102 462.6 S -.1(lwa)129.22 462.6 S .816(ys run as the o).1
-F .816(wner of the recipient mailbox.)-.25 F(Normally)5.816 E F2(sendmail)3.316
-E F1 .816(runs as the sender for)3.316 F .198
-(locally generated mail or as \231daemon\232 \(actually)122 474.6 R 2.698(,t)
--.65 G .198(he user speci\214ed in the)321.576 474.6 R F0(u)2.698 E F1 .198
-(option\) when deli)2.698 F(v-)-.25 E .981(ering netw)122 486.6 R .981
-(ork mail.)-.1 F .981(The normal beha)5.981 F .981
-(viour is required by most local mailers, which will not)-.2 F(allo)122 498.6 Q
-2.52(wt)-.25 G .02(he en)149.27 498.6 R -.15(ve)-.4 G .021
-(lope sender address to be set unless the mailer is running as daemon.).15 F
-.021(This \215ag is)5.021 F(ignored if the)122 510.6 Q F0(S)2.5 E F1
-(\215ag is set.)2.5 E 15(pU)102 526.8 S .498(se the route-addr style re)129.22
-526.8 R -.15(ve)-.25 G .498(rse-path in the SMTP \231MAIL FR).15 F .497
-(OM:\232 command rather than just)-.4 F .385
-(the return address; although this is required in RFC821 section 3.1, man)122
-538.8 R 2.886(yh)-.15 G .386(osts do not process)427.012 538.8 R(re)122 550.8 Q
--.15(ve)-.25 G(rse-paths properly).15 E 5(.R)-.65 G -2.15 -.25(ev e)224.81
-550.8 T(rse-paths are of).25 E(\214cially discouraged by RFC 1123.)-.25 E 6.94
-(P\207 This)102 567 R(mailer w)2.5 E(ants a \231Return-P)-.1 E(ath:\232 line.)
--.15 E 16.67(rS)102 583.2 S(ame as)127.56 583.2 Q F0(f)2.5 E F1 2.5(,b)C
-(ut sends a)170.68 583.2 Q F0<ad72>2.5 E F1(\215ag.)2.5 E 16.11(sS)102 599.4 S
-(trip quote characters \(" and \\\) of)127.56 599.4 Q 2.5(fo)-.25 G 2.5(ft)
-266.07 599.4 S(he address before calling the mailer)274.68 599.4 Q(.)-.55 E
-14.44(SD)102 615.6 S(on')129.22 615.6 Q 3.332(tr)-.18 G .832
-(eset the userid before calling the mailer)151.812 615.6 R 5.831(.T)-.55 G .831
-(his w)328.433 615.6 R .831(ould be used in a secure en)-.1 F(vironment)-.4 E
-(where)122 627.6 Q F2(sendmail)3.317 E F1 .817(ran as root.)3.317 F .817
-(This could be used to a)5.817 F -.2(vo)-.2 G .817(id for).2 F .817
-(ged addresses.)-.18 F .817(If the)5.817 F F0(U=)3.317 E F1 .818(\214eld is)
-3.317 F .974(also speci\214ed, this \215ag causes the user id to al)122 639.6 R
--.1(wa)-.1 G .974(ys be set to that user and group \(instead of).1 F(lea)122
-651.6 Q(ving it as root\).)-.2 E 15(uU)102 667.8 S(pper case should be preserv)
-129.22 667.8 Q(ed in user names for this mailer)-.15 E(.)-.55 E 12.78(UT)102
-684 S(his mailer w)128.11 684 Q(ants UUCP-style \231From\232 lines with the ug\
-ly \231remote from <host>\232 on the end.)-.1 E 12.78(wT)102 700.2 S .565
-(he user must ha)128.11 700.2 R .865 -.15(ve a v)-.2 H .566
-(alid account on this machine, i.e., getpwnam must succeed.)-.1 F .566
-(If not, the)5.566 F(mail is bounced.)122 712.2 Q
-(This is required to get \231.forw)5 E(ard\232 capability)-.1 E(.)-.65 E EP
-%%Page: 37 32
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-37)452.9 60 Q/F1 10/Times-Roman@0 SF 7.5(x\207 This)102 96 R(mailer w)
-2.5 E(ants a \231Full-Name:\232 header line.)-.1 E 12.78(XT)102 112.2 S .972
-(his mailer w)128.11 112.2 R .972
-(ant to use the hidden dot algorithm as speci\214ed in RFC821; basically)-.1 F
-3.472(,a)-.65 G 1.272 -.15(ny l)475.678 112.2 T(ine).15 E(be)122 124.2 Q .796
-(ginning with a dot will ha)-.15 F 1.096 -.15(ve a)-.2 H 3.296(ne).15 G .797
-(xtra dot prepended \(to be stripped at the other end\).)267.742 124.2 R(This)
-5.797 E(insures that lines in the message containing a dot will not terminate \
-the message prematurely)122 136.2 Q(.)-.65 E 15(5I)102 152.4 S 2.717(fn)125.33
-152.4 S 2.717(oa)136.377 152.4 S .217(liases are found for this address, pass \
-the address through ruleset 5 for possible alternate)148.534 152.4 R 2.5
-(resolution. This)122 164.4 R(is intended to forw)2.5 E
-(ard the mail to an alternate deli)-.1 E -.15(ve)-.25 G(ry spot.).15 E 15(7S)
-102 180.6 S 1.14(trip all output to se)127.56 180.6 R -.15(ve)-.25 G 3.64(nb)
-.15 G 3.64(its. This)230.36 180.6 R 1.14(is the def)3.64 F 1.141(ault if the)
--.1 F F0(L)3.641 E F1 1.141(\215ag is set.)3.641 F 1.141
-(Note that clearing this)6.141 F .295(option is not suf)122 192.6 R .295
-(\214cient to get full eight bit data passed through)-.25 F/F2 10
-/Times-Italic@0 SF(sendmail)2.795 E F1 5.295(.I)C 2.795(ft)423.635 192.6 S(he)
-432.54 192.6 Q F0(7)2.795 E F1 .295(option is set,)2.795 F .716
-(this is essentially al)122 204.6 R -.1(wa)-.1 G .717
-(ys set, since the eighth bit w).1 F .717(as stripped on input.)-.1 F .717
-(Note that this option)5.717 F(will only impact messages that didn')122 216.6 Q
-2.5(th)-.18 G -2.25 -.2(av e)279.04 216.6 T(8)2.7 E/F3 10/Symbol SF<ae>A F1 2.5
-(7b)C(it MIME con)322.44 216.6 Q -.15(ve)-.4 G(rsions performed.).15 E 15(8I)
-102 232.8 S 3.783(fs)125.33 232.8 S 1.283(et, it is acceptable to send eight b\
-it data to this mailer; the usual attempt to do 8)136.333 232.8 R F3<ae>A F1
-3.782(7b)C(it)498.44 232.8 Q(MIME con)122 244.8 Q -.15(ve)-.4 G
-(rsions will be bypassed.).15 E 17.22(:C)102 261 S .982
-(heck addresses to see if the)128.67 261 R 3.482(yb)-.15 G -.15(eg)255.492 261
-S .982(in \231:include:\232; if the).15 F 3.482(yd)-.15 G .982(o, con)361.33
-261 R -.15(ve)-.4 G .982(rt them to the \231*include*\232).15 F(mailer)122 273
-Q(.)-.55 E 18(|C)102 289.2 S(heck addresses to see if the)128.67 289.2 Q 2.5
-(yb)-.15 G -.15(eg)249.6 289.2 S(in with a `|'; if the).15 E 2.5(yd)-.15 G
-(o, con)343.51 289.2 Q -.15(ve)-.4 G(rt them to the \231prog\232 mailer).15 E
-(.)-.55 E 17.22(/C)102 305.4 S(heck addresses to see if the)128.67 305.4 Q 2.5
-(yb)-.15 G -.15(eg)249.6 305.4 S(in with a `/'; if the).15 E 2.5(yd)-.15 G
-(o, con)344.29 305.4 Q -.15(ve)-.4 G(rt them to the \231*\214le*\232 mailer).15
-E(.)-.55 E 10.79(@L)102 321.6 S(ook up addresses in the user database.)128.11
-321.6 Q .268(Con\214guration \214les prior to le)127 337.8 R -.15(ve)-.25 G
-2.768(l6a).15 G .268(ssume the `)271.538 337.8 R -1.11(A')-.8 G 2.768(,`)1.11 G
-.268(w', `5', `:', `|', `/', and `@' options on the)334.862 337.8 R
-(mailer named \231local\232.)102 349.8 Q .306(The mailer with the special name\
- \231error\232 can be used to generate a user error)127 366 R 5.306(.T)-.55 G
-.306(he \(optional\))452.314 366 R .324(host \214eld is an e)102 378 R .323
-(xit status to be returned, and the user \214eld is a message to be printed.)
--.15 F .323(The e)5.323 F .323(xit sta-)-.15 F .891
-(tus may be numeric or one of the v)102 390 R .891(alues USA)-.25 F .891
-(GE, NOUSER, NOHOST)-.4 F 3.391(,U)-.74 G -.35(NA)409.869 390 S -1.35(VA)-1 G
-.891(ILABLE, SOFT)1.35 F(-)-.92 E -1.2(WA)102 402 S 1.573(RE, TEMPF)1.2 F 1.573
-(AIL, PR)-.74 F -1.88 -.4(OT O)-.4 H 1.573
-(COL, or CONFIG to return the corresponding EX_ e).4 F 1.572(xit code.)-.15 F
--.15(Fo)6.572 G(r).15 E -.15(ex)102 414 S(ample, the entry:).15 E
-($#error $@ NOHOST $: Host unkno)142 430.2 Q(wn in this domain)-.25 E .145(on \
-the RHS of a rule will cause the speci\214ed error to be generated and the \
-\231Host unkno)102 446.4 R .146(wn\232 e)-.25 F .146(xit sta-)-.15 F
-(tus to be returned if the LHS matches.)102 458.4 Q
-(This mailer is only functional in rulesets zero or \214v)5 E(e.)-.15 E .468
-(The mailer named \231local\232)127 474.6 R F2(must)2.968 E F1 .468
-(be de\214ned in e)2.968 F -.15(ve)-.25 G .468(ry con\214guration \214le.).15 F
-.468(This is used to deli)5.468 F -.15(ve)-.25 G(r).15 E .25
-(local mail, and is treated specially in se)102 486.6 R -.15(ve)-.25 G .25
-(ral w).15 F 2.75(ays. Additionally)-.1 F 2.75(,t)-.65 G .25
-(hree other mailers named \231prog\232,)369.43 486.6 R .942
-(\231*\214le*\232, and \231*include*\232 may be de\214ned to tune the deli)102
-498.6 R -.15(ve)-.25 G .942(ry of messages to programs, \214les, and).15 F
-(:include: lists respecti)102 510.6 Q -.15(ve)-.25 G(ly).15 E 5(.T)-.65 G(he)
-219 510.6 Q 2.5(yd)-.15 G(ef)240.79 510.6 Q(ault to:)-.1 E
-(Mprog, P=/bin/sh, F=lsD, A=sh \255c $u)142 526.8 Q(M*\214le*, P=/de)142 538.8
-Q(v/null, F=lsDFMPEu, A=FILE)-.25 E(M*include*, P=/de)142 550.8 Q
-(v/null, F=su, A=INCLUDE)-.25 E .615(The Sender and Recipient re)127 571.2 R
-.615(writing sets may either be a simple ruleset id or may be tw)-.25 F 3.116
-(oi)-.1 G(ds)495.11 571.2 Q .576(separated by a slash; if so, the \214rst re)
-102 583.2 R .575(writing set is applied to en)-.25 F -.15(ve)-.4 G .575
-(lope addresses and the second is).15 F(applied to headers.)102 595.2 Q .196
-(The Directory is actually a colon-separated path of directories to try)127
-611.4 R 5.197(.F)-.65 G .197(or e)413.019 611.4 R .197(xample, the de\214ni-)
--.15 F .104(tion \231D=$z:/\232 \214rst tries to e)102 623.4 R -.15(xe)-.15 G
-.104(cute in the recipient').15 F 2.604(sh)-.55 G .104
-(ome directory; if that is not a)315.196 623.4 R -.25(va)-.2 G .103
-(ilable, it tries to).25 F -.15(exe)102 635.4 S .816
-(cute in the root of the \214lesystem.).15 F .816
-(This is intended to be used only on the \231prog\232 mailer)5.816 F 3.317(,s)
--.4 G(ince)487.34 635.4 Q .368(some shells \(such as)102 647.4 R F2(csh)2.868 E
-F1 2.868(\)r)C .368(efuse to e)210.21 647.4 R -.15(xe)-.15 G .368(cute if the)
-.15 F 2.868(yc)-.15 G .367(annot read the home directory)311.29 647.4 R 5.367
-(.S)-.65 G .367(ince the queue)445.506 647.4 R
-(directory is not normally readable by unpri)102 659.4 Q(vile)-.25 E(ged users)
--.15 E F2(csh)2.5 E F1(scripts as recipients can f)2.5 E(ail.)-.1 E 1.862
-(The Userid speci\214es the def)127 675.6 R 1.863
-(ault user and group id to run as, o)-.1 F -.15(ve)-.15 G 1.863(rriding the).15
-F F0(DefaultUser)4.363 E F1 .287(option \(q.v)102 687.6 R 2.787(.\). If)-.65 F
-(the)2.787 E F0(S)2.787 E F1 .287(mailer \215ag is also speci\214ed, this is t\
-he user and group to run as in all circum-)2.787 F 2.587(stances. This)102
-699.6 R .088(may be gi)2.587 F -.15(ve)-.25 G 2.588(na).15 G(s)219.518 699.6 Q
-F2(user:gr)2.588 E(oup)-.45 E F1 .088
-(to set both the user and group id; either may be an inte)2.588 F(ger)-.15 E
-.541(or a symbolic name to be look)102 711.6 R .541(ed up in the)-.1 F F2
-(passwd)3.041 E F1(and)3.041 E F2(gr)3.041 E(oup)-.45 E F1 .541
-(\214les respecti)3.041 F -.15(ve)-.25 G(ly).15 E 5.541(.I)-.65 G 3.041(fo)
-432.657 711.6 S .541(nly a symbolic)444.028 711.6 R
-(user name is speci\214ed, the group id in the)102 723.6 Q F2(passwd)2.5 E F1
-(\214le for that user is used as the group id.)2.5 E EP
-%%Page: 38 33
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-38 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .545
-(The Charset \214eld is used when con)127 96 R -.15(ve)-.4 G .545
-(rting a message to MIME; this is the character set used).15 F .466
-(in the Content-T)102 108 R .466(ype: header)-.8 F 5.466(.I)-.55 G 2.966(ft)
-225.824 108 S .466(his is not set, the)234.9 108 R F0(DefaultCharset)2.966 E F1
-.465(option is used, and if that is not)2.965 F .257(set, the v)102 120 R .257
-(alue \231unkno)-.25 F .257(wn-8bit\232 is used.)-.25 F F0 -1.2(WA)5.257 G
-(RNING:)1.2 E F1 .257(this \214eld applies to the sender')2.757 F 2.758(sm)-.55
-G(ailer)453.614 120 Q 2.758(,n)-.4 G .258(ot the)481.242 120 R(recipient')102
-132 Q 2.702(sm)-.55 G(ailer)154.142 132 Q 5.202(.F)-.55 G .202(or e)184.474 132
-R .202(xample, if the en)-.15 F -.15(ve)-.4 G .201
-(lope sender address lists an address on the local netw).15 F(ork)-.1 E .48
-(and the recipient is on an e)102 144 R .48(xternal netw)-.15 F .48
-(ork, the character set will be set from the Charset= \214eld for)-.1 F
-(the local netw)102 156 Q(ork mailer)-.1 E 2.5(,n)-.4 G(ot that of the e)208.98
-156 Q(xternal netw)-.15 E(ork mailer)-.1 E(.)-.55 E .795(The T)127 172.2 R .795
-(ype= \214eld sets the type information used in MIME error messages as de\214n\
-ed by RFC)-.8 F .15(XXX \(not yet published\).)102 184.2 R .15
-(It is actually three v)5.15 F .151(alues separated by slashes: the MT)-.25 F
-.151(A-type \(that is, the)-.93 F .36(description of ho)102 196.2 R 2.86(wh)
--.25 G .359(osts are named\), the address type \(the description of e-mail add\
-resses\), and the)185.32 196.2 R .221
-(diagnostic type \(the description of error diagnostic codes\).)102 208.2 R
-.222(Each of these must be a re)5.221 F .222(gistered v)-.15 F(alue)-.25 E
-(or be)102 220.2 Q(gin with \231X\255\232.)-.15 E(The def)5 E
-(ault is \231dns/rfc822/smtp\232.)-.1 E F0 2.5(5.5. H)87 244.2 R 2.5<8a44>2.5 G
-(e\214ne Header)137 244.2 Q F1 1.136(The format of the header lines that)127
-260.4 R/F2 10/Times-Italic@0 SF(sendmail)3.636 E F1 1.135
-(inserts into the message are de\214ned by the)3.636 F F0(H)3.635 E F1 2.5
-(line. The)102 272.4 R(syntax of this line is:)2.5 E F0(H)142 288.6 Q F1([)A F0
-(?)A F2(m\215a)A(gs)-.1 E F0(?)A F1(])A F2(hname)A F0(:)A F2(htemplate)2.5 E F1
-1.058(Continuation lines in this spec are re\215ected directly into the outgoi\
-ng message.)102 304.8 R(The)6.058 E F2(htemplate)3.558 E F1(is)3.558 E 1.098
-(macro e)102 316.8 R 1.098(xpanded before insertion into the message.)-.15 F
-1.098(If the)6.098 F F2(m\215a)3.598 E(gs)-.1 E F1 1.097
-(\(surrounded by question marks\))3.597 F .161(are speci\214ed, at least one o\
-f the speci\214ed \215ags must be stated in the mailer de\214nition for this h\
-eader)102 328.8 R .192(to be automatically output.)102 340.8 R .191
-(If one of these headers is in the input it is re\215ected to the output re)
-5.192 F -.05(ga)-.15 G(rd-).05 E(less of these \215ags.)102 352.8 Q
-(Some headers ha)127 369 Q .3 -.15(ve s)-.2 H
-(pecial semantics that will be described later).15 E(.)-.55 E F0 2.5(5.6. O)87
-393 R 2.5<8a53>2.5 G(et Option)135.34 393 Q F1 .962(There are a number of glob\
-al options that can be set from a con\214guration \214le.)127 409.2 R .963
-(Options are)5.963 F .86(represented by full w)102 421.2 R .86
-(ords; some are also representable as single characters for back compatibility)
--.1 F(.)-.65 E(The syntax of this line is:)102 433.2 Q F0(O)142 449.4 Q F2
-(option)7.5 E F0(=)A F2(value)A F1 .562(This sets option)102 465.6 R F2(option)
-3.062 E F1 .562(to be)3.062 F F2(value)3.062 E F1 5.562(.N)C .562
-(ote that there)258.434 465.6 R F2(must)3.062 E F1 .562
-(be a space between the letter `O' and the)3.062 F(name of the option.)102
-477.6 Q(An older v)5 E(ersion is:)-.15 E F0(O)142 493.8 Q F2 1.666(ov)C(alue)
--1.666 E F1 .13(where the option)102 510 R F2(o)2.63 E F1 .13
-(is a single character)2.63 F 5.13(.D)-.55 G .13(epending on the option,)273.56
-510 R F2(value)2.63 E F1 .13(may be a string, an inte)2.63 F(ger)-.15 E(,)-.4 E
-2.5(ab)102 522 S(oolean \(with le)113.94 522 Q -.05(ga)-.15 G 2.5(lv).05 G
-(alues \231t\232, \231T\232, \231f\232, or \231F\232; the def)193.2 522 Q
-(ault is TR)-.1 E(UE\), or a time interv)-.4 E(al.)-.25 E
-(The options supported \(with the old, one character names in brack)127 538.2 Q
-(ets\) are:)-.1 E(AliasFile=)102 554.4 Q F2(spec, spec, ...)A F1 .439
-([A] Specify possible alias \214le\(s\).)174 566.4 R(Each)5.439 E F2(spec)2.939
-E F1 .439(should be in the format `)2.939 F(`)-.74 E F2(class)A F0(:)A F2
-(\214le)2.94 E F1 -.74('')C(where)174 578.4 Q F2(class)3.1 E F0(:)A F1 .599
-(is optional and def)3.099 F .599(aults to `)-.1 F(`implicit')-.74 E 3.099
-('. Depending)-.74 F .599(on ho)3.099 F(w)-.25 E F2(sendmail)3.099 E F1 .186
-(is compiled, v)174 590.4 R .187(alid classes are \231implicit\232 \(search th\
-rough a compiled-in list of alias)-.25 F 2.055
-(\214le types, for back compatibility\), \231hash\232 \(if)174 602.4 R/F3 9
-/Times-Roman@0 SF(NEWDB)4.555 E F1 2.055(is speci\214ed\), \231dbm\232 \(if)
-4.555 F F3(NDBM)174 614.4 Q F1 1.588(is speci\214ed\), \231stab\232 \(internal\
- symbol table \212 not normally used unless)4.088 F .075(you ha)174 626.4 R
-.375 -.15(ve n)-.2 H 2.575(oo).15 G .075
-(ther database lookup\), or \231nis\232 \(if)230.255 626.4 R F3(NIS)2.574 E F1
-.074(is speci\214ed\).)2.574 F .074(If a list of)5.074 F F2(spec)2.574 E F1(s)A
-(are pro)174 638.4 Q(vided,)-.15 E F2(sendmail)2.5 E F1(searches them in order)
-2.5 E(.)-.55 E(AliasW)102 654.6 Q(ait=)-.8 E F2(timeout)A F1 .14([a] If set, w)
-174 666.6 R .14(ait up to)-.1 F F2(timeout)2.64 E F1 .141(\(units def)2.641 F
-.141(ault to minutes\) for an \231@:@\232 entry to e)-.1 F(xist)-.15 E .518
-(in the alias database before starting up.)174 678.6 R .517
-(If it does not appear in the)5.517 F F2(timeout)3.017 E F1(inter)3.017 E(-)-.2
-E -.25(va)174 690.6 S 3.21(lr).25 G(eb)192.51 690.6 Q .71
-(uild the database \(if the)-.2 F F0 -.5(Au)3.21 G(toReb).5 E(uildAliases)-.2 E
-F1 .71(option is also set\) or issue a)3.21 F -.1(wa)174 702.6 S(rning.).1 E EP
-%%Page: 39 34
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-39)452.9 60 Q/F1 10/Times-Roman@0 SF(AutoReb)102 96 Q(uildAliases)-.2 E
-.128([D] If set, reb)174 108 R .128
-(uild the alias database if necessary and possible.)-.2 F .128
-(If this option is not)5.128 F(set,)174 120 Q/F2 10/Times-Italic@0 SF(sendmail)
-4.885 E F1 2.385(will ne)4.885 F -.15(ve)-.25 G 4.885(rr).15 G(eb)283.96 120 Q
-2.385(uild the alias database unless e)-.2 F 2.385(xplicitly requested)-.15 F
-(using)174 132 Q F0(\255bi)2.5 E F1 5(.N)C
-(ot recommended \212 can cause thrashing.)226.93 132 Q(BlankSub=)102 148.2 Q F2
-(c)A F1 1.255([B] Set the blank substitution character to)174 148.2 R F2(c)
-3.755 E F1 6.255(.U)C 1.255(nquoted spaces in addresses are)372.35 148.2 R
-(replaced by this character)174 160.2 Q 5(.D)-.55 G(ef)290.63 160.2 Q
-(aults to space \(i.e., no change is made\).)-.1 E 14.51(CheckAliases [n])102
-176.4 R -1.11(Va)2.5 G(lidate the RHS of aliases when reb)1.11 E
-(uilding the alias database.)-.2 E(CheckpointInterv)102 192.6 Q(al=)-.25 E F2
-(N)A F1 1.296([C] Checkpoints the queue e)174 204.6 R -.15(ve)-.25 G(ry).15 E
-F2(N)3.797 E F1(\(def)3.797 E 1.297(ault 10\) addresses sent.)-.1 F 1.297
-(If your system)6.297 F .747(crashes during deli)174 216.6 R -.15(ve)-.25 G
-.746(ry to a lar).15 F .746(ge list, this pre)-.18 F -.15(ve)-.25 G .746
-(nts retransmission to an).15 F 3.246(yb)-.15 G .746(ut the)480.754 216.6 R
-(last recipients.)174 228.6 Q(ClassF)102 244.8 Q(actor=)-.15 E F2(fact)A F1
-1.624([z] The indicated)4.29 F F2(fact)4.124 E F1 1.624
-(or is multiplied by the message class \(determined by the)B .719
-(Precedence: \214eld in the user header and the)174 256.8 R F0(P)3.219 E F1
-.718(lines in the con\214guration \214le\) and)3.218 F 2.637
-(subtracted from the priority)174 268.8 R 7.637(.T)-.65 G 2.637
-(hus, messages with a higher Priority: will be)307.768 268.8 R -.1(fa)174 280.8
-S -.2(vo)-.1 G 2.5(red. Def).2 F(aults to 1800.)-.1 E 3.95(ColonOkInAddr [no)
-102 297 R 4.679
-(short name] If set, colons are acceptable in e-mail addresses \(e.g.,)7.18 F
-3.54(\231host:user\232\). If)174 309 R 1.04(not set, colons indicate the be)
-3.54 F 1.04(ginning of a RFC 822 group con-)-.15 F 1.988
-(struct \(\231groupname: member1, member2, ... memberN;\232\).)174 321 R 1.987
-(Doubled colons are)6.987 F(al)174 333 Q -.1(wa)-.1 G 2.215(ys acceptable \(\
-\231nodename::user\232\) and proper route-addr nesting is under).1 F(-)-.2 E
-1.037(stood \(\231<@relay:user@host>\232\).)174 345 R 1.037
-(Furthermore, this option def)6.037 F 1.036(aults on if the con-)-.1 F .853
-(\214guration v)174 357 R .853(ersion le)-.15 F -.15(ve)-.25 G 3.353(li).15 G
-3.353(sl)274.059 357 S .853(ess than 6 \(for back compatibility\).)284.082 357
-R(Ho)5.854 E(we)-.25 E -.15(ve)-.25 G 1.654 -.4(r, i).15 H 3.354(tm).4 G(ust)
-492.33 357 Q(be of)174 369 Q 2.5(ff)-.25 G(or full compatibility with RFC 822.)
-203.18 369 Q(ConnectionCacheSize=)102 385.2 Q F2(N)A F1 .242
-([k] The maximum number of open connections that will be cached at a time.)174
-397.2 R(The)5.242 E(def)174 409.2 Q .385(ault is one.)-.1 F .386
-(This delays closing the current connection until either this in)5.386 F -.2
-(vo)-.4 G(ca-).2 E 1.192(tion of)174 421.2 R F2(sendmail)3.692 E F1 1.191
-(needs to connect to another host or it terminates.)3.692 F 1.191
-(Setting it to)6.191 F 2.046(zero def)174 433.2 R 2.046(aults to the old beha)
--.1 F(vior)-.2 E 4.546(,t)-.4 G 2.047
-(hat is, connections are closed immediately)322.496 433.2 R(.)-.65 E .266
-(Since this consumes \214le descriptors, the connection cache should be k)174
-445.2 R .265(ept small: 4)-.1 F(is probably a practical maximum.)174 457.2 Q
-(ConnectionCacheT)102 473.4 Q(imeout=)-.35 E F2(timeout)A F1 .708
-([K] The maximum amount of time a cached connection will be permitted to idle)
-174 485.4 R 1.083(without acti)174 497.4 R(vity)-.25 E 6.083(.I)-.65 G 3.583
-(ft)249.156 497.4 S 1.083(his time is e)258.849 497.4 R 1.082
-(xceeded, the connection is immediately closed.)-.15 F .417(This v)174 509.4 R
-.418(alue should be small \(on the order of ten minutes\).)-.25 F(Before)5.418
-E F2(sendmail)2.918 E F1 .418(uses a)2.918 F .508(cached connection, it al)174
-521.4 R -.1(wa)-.1 G .507(ys sends a RSET command to check the connection; if)
-.1 F .401(this f)174 533.4 R .401(ails, it reopens the connection.)-.1 F .401
-(This k)5.401 F .402(eeps your end from f)-.1 F .402(ailing if the other)-.1 F
-1.545(end times out.)174 545.4 R 1.545
-(The point of this option is to be a good netw)6.545 F 1.544(ork neighbor and)
--.1 F -.2(avo)174 557.4 S(id using up e).2 E(xcessi)-.15 E .3 -.15(ve r)-.25 H
-(esources on the other end.).15 E(The def)5 E(ault is \214v)-.1 E 2.5(em)-.15 G
-(inutes.)470.25 557.4 Q(DaemonPortOptions=)102 573.6 Q F2(options)A F1
-([O] Set serv)174 585.6 Q(er SMTP options.)-.15 E(The options are)5 E F2 -.1
-(ke)2.5 G(y=value)-.2 E F1 2.5(pairs. Kno)2.5 F(wn k)-.25 E -.15(ey)-.1 G 2.5
-(sa).15 G(re:)490.2 585.6 Q 52.83(Port Name/number)214 601.8 R
-(of listening port \(def)2.5 E(aults to "smtp"\))-.1 E 48.95(Addr Address)214
-613.8 R(mask \(def)2.5 E(aults IN)-.1 E(ADDR_ANY\))-.35 E -.15(Fa)214 625.8 S
-41.31(mily Address).15 F -.1(fa)2.5 G(mily \(def).1 E(aults to INET\))-.1 E
-44.5(Listen Size)214 637.8 R(of listen queue \(def)2.5 E(aults to 10\))-.1 E
-21.72(SndBufSize Size)214 649.8 R(of TCP send b)2.5 E(uf)-.2 E(fer)-.25 E 21.17
-(RcvBufSize Size)214 661.8 R(of TCP recei)2.5 E .3 -.15(ve b)-.25 H(uf)-.05 E
-(fer)-.25 E(The)174 678 Q F2(Addr)2.5 E F1
-(ess mask may be a numeric address in dot notation or a netw)A(ork name.)-.1 E
-(Def)102 694.2 Q(aultCharSet=)-.1 E F2 -.15(ch)C(ar).15 E(set)-.1 E F1 .16
-([no short name] When a message that has 8-bit characters b)174 706.2 R .161
-(ut is not in MIME for)-.2 F(-)-.2 E .495(mat is con)174 718.2 R -.15(ve)-.4 G
-.495(rted to MIME \(see the EightBitMode option\) a character set must be).15 F
-EP
-%%Page: 40 35
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-40 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .487
-(included in the Content-T)174 96 R .487(ype: header)-.8 F 5.487(.T)-.55 G .488
-(his character set is normally set from the)338.115 96 R .133
-(Charset= \214eld of the mailer descriptor)174 108 R 5.133(.I)-.55 G 2.633(ft)
-337.64 108 S .133(hat is not set, the v)346.383 108 R .133
-(alue of this option is)-.25 F 2.5(used. If)174 120 R
-(this option is not set, the v)2.5 E(alue \231unkno)-.25 E
-(wn-8bit\232 is used.)-.25 E(Def)102 136.2 Q(aultUser=)-.1 E/F2 10
-/Times-Italic@0 SF(user:gr)A(oup)-.45 E F1 .013([u] Set the def)174 148.2 R
-.013(ault userid for mailers to)-.1 F F2(user:gr)2.513 E(oup)-.45 E F1 5.013
-(.I)C(f)386.587 148.2 Q F2(gr)2.513 E(oup)-.45 E F1 .014(is omitted and)2.514 F
-F2(user)2.514 E F1(is)2.514 E 4.307(au)174 160.2 S 1.807
-(ser name \(as opposed to a numeric user id\) the def)187.747 160.2 R 1.806
-(ault group listed in the)-.1 F 1.153
-(/etc/passwd \214le for that user is used as the def)174 172.2 R 1.153
-(ault group.)-.1 F(Both)6.153 E F2(user)3.653 E F1(and)3.653 E F2(gr)3.653 E
-(oup)-.45 E F1 1.153(may be numeric.)174 184.2 R 1.152(Mailers without the)
-6.152 F F2(S)3.652 E F1 1.152(\215ag in the mailer de\214nition will run as)
-3.652 F .142(this user)174 198.2 R 5.142(.D)-.55 G(ef)222.064 198.2 Q .142
-(aults to 1:1.)-.1 F .142(The v)5.142 F .142(alue can also be gi)-.25 F -.15
-(ve)-.25 G 2.642(na).15 G 2.642(sas)400.612 198.2 S .142(ymbolic user name.)
-418.116 198.2 R/F3 7/Times-Roman@0 SF(18)497 194.2 Q F1(Deli)102 214.4 Q -.15
-(ve)-.25 G(ryMode=).15 E F2(x)A F1([d] Deli)4 E -.15(ve)-.25 G 2.5(ri).15 G 2.5
-(nm)223.03 214.4 S(ode)238.31 214.4 Q F2(x)2.5 E F1 5(.L)C -2.25 -.15(eg a)
-273.3 214.4 T 2.5(lm).15 G(odes are:)300.04 214.4 Q 17.22(iD)214 230.6 S(eli)
-241.22 230.6 Q -.15(ve)-.25 G 2.5(ri).15 G(nteracti)268.87 230.6 Q -.15(ve)-.25
-G(ly \(synchronously\)).15 E 15(bD)214 242.6 S(eli)241.22 242.6 Q -.15(ve)-.25
-G 2.5(ri).15 G 2.5(nb)268.87 242.6 S(ackground \(asynchronously\))281.37 242.6
-Q 15(qJ)214 254.6 S(ust queue the message \(deli)237.89 254.6 Q -.15(ve)-.25 G
-2.5(rd).15 G(uring queue run\))367.74 254.6 Q 15(dD)214 266.6 S(efer deli)
-241.22 266.6 Q -.15(ve)-.25 G(ry and all map lookups \(deli).15 E -.15(ve)-.25
-G 2.5(rd).15 G(uring queue run\))415.66 266.6 Q(Def)174 282.8 Q .712
-(aults to `)-.1 F(`b')-.74 E 3.212('i)-.74 G 3.212(fn)244.816 282.8 S 3.211(oo)
-256.358 282.8 S .711(ption is speci\214ed, `)269.569 282.8 R(`i')-.74 E 3.211
-('i)-.74 G 3.211(fi)365.093 282.8 S 3.211(ti)374.414 282.8 S 3.211(ss)383.185
-282.8 S .711(peci\214ed b)394.176 282.8 R .711(ut gi)-.2 F -.15(ve)-.25 G 3.211
-(nn).15 G 3.211(oa)474.869 282.8 S -.18(rg)487.52 282.8 S(u-).18 E .094
-(ment \(i.e., `)174 294.8 R(`Od')-.74 E 2.594('i)-.74 G 2.594(se)246.672 294.8
-S(qui)257.596 294.8 Q -.25(va)-.25 G .094(lent to `).25 F(`Odi')-.74 E 2.594
-('\). The)-.74 F F0<ad76>2.594 E F1 .094(command line \215ag sets this to)2.594
-F F0(i)2.594 E F1(.)A(DialDelay=)102 311 Q F2(sleeptime)A F1 .799
-([no short name] Dial-on-demand netw)174 323 R .798
-(ork connections can see timeouts if a con-)-.1 F .665
-(nection is opened before the call is set up.)174 335 R .665
-(If this is set to an interv)5.665 F .665(al and a con-)-.25 F .743
-(nection times out on the \214rst connection being attempted)174 347 R F2
-(sendmail)3.242 E F1 .742(will sleep for)3.242 F .31
-(this amount of time and try ag)174 359 R 2.81(ain. This)-.05 F .31(should gi)
-2.81 F .61 -.15(ve y)-.25 H .31(our system time to establish).15 F 1.543
-(the connection to your service pro)174 371 R(vider)-.15 E 6.543(.U)-.55 G
-1.543(nits def)354.188 371 R 1.542(ault to seconds, so \231DialDe-)-.1 F
-(lay=5\232 uses a \214v)174 383 Q 2.5(es)-.15 G(econd delay)251.7 383 Q 5(.D)
--.65 G(ef)313.81 383 Q(aults to zero \(no retry\).)-.1 E(DontExpandCnames)102
-399.2 Q .559([no short name] The standards say that all host addresses used in\
- a mail message)174 411.2 R 1.408(must be fully canonical.)174 423.2 R -.15(Fo)
-6.407 G 3.907(re).15 G 1.407(xample, if your host is named \231Cruft.F)302.668
-423.2 R(oo.ORG\232)-.15 E 1.462(and also has an alias of \231FTP)174 435.2 R
-(.F)-1.11 E 1.462(oo.ORG\232, the former name must be used at all)-.15 F 2.631
-(times. This)174 447.2 R .131
-(is enforced during host name canoni\214cation \($[ ... $] lookups\).)2.631 F
-.13(If this)5.13 F .661
-(option is set, the protocols are ignored and the \231wrong\232 thing is done.)
-174 459.2 R(Ho)5.662 E(we)-.25 E -.15(ve)-.25 G -.4(r,).15 G .455
-(the IETF is mo)174 471.2 R .455(ving to)-.15 F -.1(wa)-.25 G .455
-(rd changing this standard, so the beha).1 F .455(viour may become)-.2 F 3.009
-(acceptable. Please)174 483.2 R .509(note that hosts do)3.009 F .509
-(wnstream may still re)-.25 F .509(write the address to be)-.25 F
-(the true canonical name ho)174 495.2 Q(we)-.25 E -.15(ve)-.25 G -.55(r.).15 G
-6.17(DontInitGroups [no)102 511.4 R .25(short name] If set,)2.75 F F2(sendmail)
-2.75 E F1 .25(will a)2.75 F -.2(vo)-.2 G .25
-(id using the initgroups\(3\) call.).2 F .25(If you are)5.25 F .583(running NI\
-S, this causes a sequential scan of the groups.byname map, which can)174 523.4
-R .436(cause your NIS serv)174 535.4 R .436(er to be badly o)-.15 F -.15(ve)
--.15 G .435(rloaded in a lar).15 F .435(ge domain.)-.18 F .435
-(The cost of this)5.435 F .697(is that the only group found for users will be \
-their primary group \(the one in the)174 547.4 R(passw)174 559.4 Q 1.189
-(ord \214le\), which will mak)-.1 F 3.689<658c>-.1 G 1.189
-(le access permissions some)315.845 559.4 R 1.189(what more restric-)-.25 F(ti)
-174 571.4 Q -.15(ve)-.25 G 5(.H).15 G(as no ef)203.32 571.4 Q
-(fect on systems that don')-.25 E 2.5(th)-.18 G -2.25 -.2(av e)344.26 571.4 T
-(group lists.)2.7 E -1.61(DontPruneRoutes [R])102 587.6 R(Normally)3.905 E(,)
--.65 E F2(sendmail)3.905 E F1 1.405(tries to eliminate an)3.905 F 3.905(yu)-.15
-G 1.405(nnecessary e)372.465 587.6 R 1.405(xplicit routes when)-.15 F .155
-(sending an error message \(as discussed in RFC 1123 \247 5.2.6\).)174 599.6 R
--.15(Fo)5.154 G 2.654(re).15 G .154(xample, when)447.746 599.6 R
-(sending an error message to)174 611.6 Q(<@kno)214 627.8 Q(wn1,@kno)-.25 E
-(wn2,@kno)-.25 E(wn3:user@unkno)-.25 E(wn>)-.25 E F2(sendmail)174 644 Q F1
-1.155(will strip of)3.655 F 3.655(ft)-.25 G 1.155(he \231@kno)272.26 644 R
-(wn1,@kno)-.25 E 1.155(wn2\232 in order to mak)-.25 F 3.655(et)-.1 G 1.155
-(he route as)458.37 644 R .813(direct as possible.)174 656 R(Ho)5.813 E(we)-.25
-E -.15(ve)-.25 G 1.613 -.4(r, i).15 H 3.313(ft).4 G(he)306.435 656 Q F0(R)3.313
-E F1 .812(option is set, this will be disabled, and the)3.313 F .009
-(mail will be sent to the \214rst address in the route, e)174 668 R -.15(ve)
--.25 G 2.51(ni).15 G 2.51(fl)392.86 668 S .01(ater addresses are kno)401.48 668
-R(wn.)-.25 E(This may be useful if you are caught behind a \214re)174 680 Q -.1
-(wa)-.25 G(ll.).1 E .32 LW 76 689.6 72 689.6 DL 80 689.6 76 689.6 DL 84 689.6
-80 689.6 DL 88 689.6 84 689.6 DL 92 689.6 88 689.6 DL 96 689.6 92 689.6 DL 100
-689.6 96 689.6 DL 104 689.6 100 689.6 DL 108 689.6 104 689.6 DL 112 689.6 108
-689.6 DL 116 689.6 112 689.6 DL 120 689.6 116 689.6 DL 124 689.6 120 689.6 DL
-128 689.6 124 689.6 DL 132 689.6 128 689.6 DL 136 689.6 132 689.6 DL 140 689.6
-136 689.6 DL 144 689.6 140 689.6 DL 148 689.6 144 689.6 DL 152 689.6 148 689.6
-DL 156 689.6 152 689.6 DL 160 689.6 156 689.6 DL 164 689.6 160 689.6 DL 168
-689.6 164 689.6 DL 172 689.6 168 689.6 DL 176 689.6 172 689.6 DL 180 689.6 176
-689.6 DL 184 689.6 180 689.6 DL 188 689.6 184 689.6 DL 192 689.6 188 689.6 DL
-196 689.6 192 689.6 DL 200 689.6 196 689.6 DL 204 689.6 200 689.6 DL 208 689.6
-204 689.6 DL 212 689.6 208 689.6 DL 216 689.6 212 689.6 DL/F4 5/Times-Roman@0
-SF(18)93.6 700 Q/F5 8/Times-Roman@0 SF(The old)3.2 I/F6 8/Times-Bold@0 SF(g)2 E
-F5(option has been combined into the)2 E F6(DefaultUser)2 E F5(option.)2 E EP
-%%Page: 41 36
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-41)452.9 60 Q/F1 10/Times-Roman@0 SF(EightBitMode=)102 96 Q/F2 10
-/Times-Italic@0 SF(action)A F1 1.956([8] Set handling of eight-bit data.)174
-108 R 1.955(There are tw)6.955 F 4.455(ok)-.1 G 1.955
-(inds of eight-bit data: that)392.85 108 R 3.334(declared as such using the)174
-120 R F0(BOD)5.834 E(Y=8BITMIME)-.4 E F1 3.335(ESMTP declaration or the)5.835 F
-F0(\255B8BITMIME)174 132 Q F1 .948
-(command line \215ag, and undeclared 8-bit data, that is, input that)3.449 F
-1.18(just happens to be eight bits.)174 144 R 1.18
-(There are three basic operations that can happen:)6.18 F .996
-(undeclared 8-bit data can be automatically con)174 156 R -.15(ve)-.4 G .995
-(rted to 8BITMIME, undeclared).15 F .887
-(8-bit data can be passed as-is without con)174 168 R -.15(ve)-.4 G .887
-(rsion to MIME \(`).15 F .887(`just send 8')-.74 F .887('\), and)-.74 F 5.989
-(declared 8-bit data can be con)174 180 R -.15(ve)-.4 G 5.989
-(rted to 7-bits for transmission to a).15 F(non-8BITMIME mailer)174 192 Q 5(.T)
--.55 G(he possible)281.77 192 Q F2(action)2.5 E F1 2.5(sa)C(re:)364.82 192 Q
-11.11(sR)219 208.2 S(eject undeclared 8-bit data \(`)240.67 208.2 Q(`strict')
--.74 E('\))-.74 E 7.22(mC)219 220.2 S(on)240.67 220.2 Q -.15(ve)-.4 G
-(rt undeclared 8-bit data to MIME \(`).15 E(`mime')-.74 E('\))-.74 E 10(pP)219
-232.2 S(ass undeclared 8-bit data \(`)239.41 232.2 Q(`pass')-.74 E('\))-.74 E
-2.227(In all cases properly declared 8BITMIME data will be con)174 248.4 R -.15
-(ve)-.4 G 2.228(rted to 7BIT as).15 F(needed.)174 260.4 Q(ErrorHeader=)102
-276.6 Q F2(\214le-or)A(-messa)-.2 E -.1(ge)-.1 G F1 .486
-([E] Prepend error messages with the indicated message.)174 288.6 R .486
-(If it be)5.486 F .486(gins with a slash,)-.15 F .246(it is assumed to be the \
-pathname of a \214le containing a message \(this is the recom-)174 300.6 R .86
-(mended setting\).)174 312.6 R .86(Otherwise, it is a literal message.)5.86 F
-.86(The error \214le might contain)5.86 F 1.116
-(the name, email address, and/or phone number of a local postmaster who could)
-174 324.6 R(pro)174 336.6 Q .174(vide assistance in to end users.)-.15 F .173
-(If the option is missing or null, or if it names a)5.174 F
-(\214le which does not e)174 348.6 Q
-(xist or which is not readable, no message is printed.)-.15 E(ErrorMode=)102
-364.8 Q F2(x)A F1([e] Dispose of errors using mode)174 364.8 Q F2(x)2.5 E F1 5
-(.T)C(he v)325.91 364.8 Q(alues for)-.25 E F2(x)2.5 E F1(are:)2.5 E 15(pP)214
-381 S(rint error messages \(def)239.56 381 Q(ault\))-.1 E 15(qN)214 393 S 2.5
-(om)241.22 393 S(essages, just gi)256.5 393 Q .3 -.15(ve ex)-.25 H(it status)
-.15 E 12.22(mM)214 405 S(ail back errors)242.89 405 Q 12.78(wW)214 417 S
-(rite back errors \(mail if user not logged in\))243.44 417 Q 15.56(eM)214 429
-S(ail back errors and gi)242.89 429 Q .3 -.15(ve z)-.25 H(ero e).15 E
-(xit stat al)-.15 E -.1(wa)-.1 G(ys).1 E -.15(Fa)102 449.4 S(llbackMXhost=).15
-E F2(fallbac)A(khost)-.2 E F1 .796([V] If speci\214ed, the)174 461.4 R F2
-(fallbac)3.296 E(khost)-.2 E F1 .796(acts lik)3.296 F 3.296(eav)-.1 G .797
-(ery lo)359.608 461.4 R 3.297(wp)-.25 G .797(riority MX on e)398.722 461.4 R
--.15(ve)-.25 G .797(ry host.).15 F
-(This is intended to be used by sites with poor netw)174 473.4 Q(ork connecti)
--.1 E(vity)-.25 E(.)-.65 E -.15(Fo)102 489.6 S 16.88(rkEachJob [Y]).15 F .708
-(If set, deli)3.208 F -.15(ve)-.25 G 3.208(re).15 G .707
-(ach job that is run from the queue in a separate process.)252.792 489.6 R(Use)
-5.707 E .274(this option if you are short of memory)174 501.6 R 2.774(,s)-.65 G
-.274(ince the def)336.922 501.6 R .275(ault tends to consume consid-)-.1 F
-(erable amounts of memory while the queue is being processed.)174 513.6 Q -.15
-(Fo)102 529.8 S(rw).15 E(ardP)-.1 E(ath=)-.15 E F2(path)A F1 4.675
-([J] Set the path for searching for users' .forw)174 541.8 R 4.675
-(ard \214les.)-.1 F 4.675(The def)9.675 F 4.675(ault is)-.1 F(\231$z/.forw)174
-553.8 Q 3.23(ard\232. Some)-.1 F .731
-(sites that use the automounter may prefer to change this to)3.23 F(\231/v)174
-565.8 Q(ar/forw)-.25 E 1.696
-(ard/$u\232 to search a \214le with the same name as the user in a system)-.1 F
-(directory)174 577.8 Q 5.487(.I)-.65 G 2.987(tc)220.767 577.8 S .488
-(an also be set to a sequence of paths separated by colons;)230.974 577.8 R F2
-(sendmail)2.988 E F1 4.218
-(stops at the \214rst \214le it can successfully and safely open.)174 589.8 R
--.15(Fo)9.217 G 6.717(re).15 G(xample,)472.06 589.8 Q(\231/v)174 601.8 Q
-(ar/forw)-.25 E(ard/$u:$z/.forw)-.1 E .681(ard\232 will search \214rst in /v)
--.1 F(ar/forw)-.25 E(ard/)-.1 E F2(username)A F1 .682(and then)3.182 F(in)174
-613.8 Q F2(~username)2.5 E F1(/.forw)A(ard \(b)-.1 E
-(ut only if the \214rst \214le does not e)-.2 E(xist\).)-.15 E(HelpFile=)102
-630 Q F2(\214le)A F1([H] Specify the help \214le for SMTP)174 630 Q(.)-1.11 E
-(HoldExpensi)102 646.2 Q 8.54 -.15(ve [)-.25 H 1.394
-(c] If an outgoing mailer is mark).15 F 1.393(ed as being e)-.1 F(xpensi)-.15 E
--.15(ve)-.25 G 3.893(,d).15 G(on')415.294 646.2 Q 3.893(tc)-.18 G 1.393
-(onnect immedi-)439.557 646.2 R(ately)174 658.2 Q 5.267(.T)-.65 G .268
-(his requires that queueing be compiled in, since it will depend on a queue)
-206.667 658.2 R(run process to actually send the mail.)174 670.2 Q 24.51
-(IgnoreDots [i])102 686.4 R 1.172(Ignore dots in incoming messages.)3.672 F
-1.172(This is al)6.172 F -.1(wa)-.1 G 1.171(ys disabled \(that is, dots are).1
-F(al)174 698.4 Q -.1(wa)-.1 G(ys accepted\) when reading SMTP mail.).1 E EP
-%%Page: 42 37
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-42 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(LogLe)102 96 Q
--.15(ve)-.25 G(l=).15 E/F2 10/Times-Italic@0 SF(n)A F1([L] Set the def)174 96 Q
-(ault log le)-.1 E -.15(ve)-.25 G 2.5(lt).15 G(o)289.04 96 Q F2(n)2.5 E F1 5
-(.D)C(ef)316.26 96 Q(aults to 9.)-.1 E(M)102 112.2 Q F2 1.666(xv)C(alue)-1.666
-E F1 .255([no long v)174 112.2 R .255(ersion] Set the macro)-.15 F F2(x)2.755 E
-F1(to)2.755 E F2(value)2.755 E F1 5.255(.T)C .255
-(his is intended only for use from the)357.505 112.2 R(command line.)174 124.2
-Q(The)5 E F0<ad4d>2.5 E F1(\215ag is preferred.)2.5 E 11.17(MatchGECOS [G])102
-140.4 R(Allo)3.334 E 3.334(wf)-.25 G .834(uzzy matching on the GECOS \214eld.)
-222.628 140.4 R .833(If this \215ag is set, and the usual)5.833 F .867
-(user name lookups f)174 152.4 R .867
-(ail \(that is, there is no alias with this name and a)-.1 F F2 -.1(ge)3.368 G
-(tpwnam).1 E F1 -.1(fa)174 164.4 S 1.155(ils\), sequentially search the passw)
-.1 F 1.155(ord \214le for a matching entry in the GECOS)-.1 F 3.696
-(\214eld. This)174 176.4 R 1.196(also requires that MA)3.696 F 1.196
-(TCHGECOS be turned on during compilation.)-1.11 F
-(This option is not recommended.)174 188.4 Q(MaxHopCount=)102 204.6 Q F2(N)A F1
-1.238([h] The maximum hop count.)174 216.6 R 1.238(Messages that ha)6.238 F
-1.537 -.15(ve b)-.2 H 1.237(een processed more than).15 F F2(N)3.737 E F1
-(times are assumed to be in a loop and are rejected.)174 228.6 Q(Def)5 E
-(aults to 25.)-.1 E(MaxHostStatAge=)102 244.8 Q F2 -.1(age)C F1 .438
-([no short name] Not yet implemented.)174 256.8 R .438
-(This option speci\214es ho)5.438 F 2.939(wl)-.25 G .439(ong host status)
-443.672 256.8 R .36(information will be retained.)174 268.8 R -.15(Fo)5.36 G
-2.86(re).15 G .36(xample, if a host is found to be do)315.76 268.8 R .36
-(wn, connec-)-.25 F .246
-(tions to that host will not be retried for this interv)174 280.8 R 2.746
-(al. The)-.25 F .246(units def)2.746 F .246(ault to minutes.)-.1 F
-(MaxQueueRunSize=)102 297 Q F2(N)A F1 .677
-([no short name] The maximum number of jobs that will be processed in a single)
-174 309 R .501(queue run.)174 321 R .501
-(If not set, there is no limit on the size.)5.501 F .501(If you ha)5.501 F .802
--.15(ve ve)-.2 H .502(ry lar).15 F .502(ge queues)-.18 F .445(or a v)174 333 R
-.445(ery short queue run interv)-.15 F .445(al this could be unstable.)-.25 F
-(Ho)5.445 E(we)-.25 E -.15(ve)-.25 G 1.245 -.4(r, s).15 H .445
-(ince the \214rst).4 F F2(N)174 345 Q F1 1.115
-(jobs in queue directory order are run \(rather than the)3.615 F F2(N)3.615 E
-F1 1.115(highest priority jobs\))3.615 F .136
-(this should be set as high as possible to a)174 357 R -.2(vo)-.2 G .136
-(id \231losing\232 jobs that happen to f).2 F .136(all late)-.1 F
-(in the queue directory)174 369 Q(.)-.65 E(MeT)102 385.2 Q 40.86(oo [m])-.8 F
-(Send to me too, e)2.5 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(fIa)279.98 385.2 S 2.5
-(mi)296.08 385.2 S 2.5(na)309.14 385.2 S 2.5(na)321.08 385.2 S(lias e)333.02
-385.2 Q(xpansion.)-.15 E(MaxMessageSize=)102 401.4 Q F2(N)A F1 2.562
-([no short name] Specify the maximum message size to be adv)174 413.4 R 2.563
-(ertised in the)-.15 F(ESMTP EHLO response.)174 425.4 Q(Messages lar)5 E
-(ger than this will be rejected.)-.18 E(MinFreeBlocks=)102 441.6 Q F2(N)A F1
-1.539([b] Insist on at least)174 453.6 R F2(N)4.039 E F1 1.538
-(blocks free on the \214lesystem that holds the queue \214les)4.039 F .845
-(before accepting email via SMTP)174 465.6 R 5.846(.I)-1.11 G 3.346(ft)322.368
-465.6 S .846(here is insuf)331.824 465.6 R .846(\214cient space)-.25 F F2
-(sendmail)3.346 E F1(gi)3.346 E -.15(ve)-.25 G 3.346(sa).15 G
-(452 response to the MAIL command.)174 477.6 Q(This in)5 E
-(vites the sender to try ag)-.4 E(ain later)-.05 E(.)-.55 E(MinQueueAge=age)102
-493.8 Q .887([no short name] Don')174 505.8 R 3.387(tp)-.18 G .887(rocess an)
-274.018 505.8 R 3.387(yq)-.15 G .886(ueued jobs that ha)325.072 505.8 R 1.186
--.15(ve b)-.2 H .886(een in the queue less).15 F 1.899
-(than the indicated time interv)174 517.8 R 4.399(al. This)-.25 F 1.899
-(is intended to allo)4.399 F 4.399(wy)-.25 G 1.9(ou to get respon-)430.81 517.8
-R(si)174 529.8 Q -.15(ve)-.25 G .665(ness by processing the queue f).15 F .665
-(airly frequently without thrashing your system)-.1 F
-(by trying jobs too often.)174 541.8 Q(The def)5 E(ault units are minutes.)-.1
-E(NoRecipientAction)102 558 Q .554([no short name] The action to tak)174 570 R
-3.055(ew)-.1 G .555(hen you recei)325.25 570 R .855 -.15(ve a m)-.25 H .555
-(essage that has no v).15 F(alid)-.25 E .062(recipient headers \(T)174 582 R
-.062(o:, Cc:, Bcc:\).)-.8 F .062(It can be)5.062 F F0(None)2.561 E F1 .061
-(to pass the message on unmodi-)2.561 F .51
-(\214ed, which violates the protocol,)174 594 R F0(Add-T)3.01 E(o)-.92 E F1 .51
-(to add a T)3.01 F .51(o: header with an)-.8 F 3.01(yr)-.15 G(ecipients)468.45
-594 Q 4.41(it can \214nd in the en)174 606 R -.15(ve)-.4 G 4.41
-(lope \(which might e).15 F 4.41(xpose Bcc: recipients\),)-.15 F F0(Add-)6.91 E
--.25(Ap)174 618 S(par).25 E(ently-T)-.18 E(o)-.92 E F1 4.664
-(to add an Apparently-T)7.164 F 4.664(o: header \(this is only for back-)-.8 F
-.875(compatibility and is of)174 630 R .875(\214cially deprecated\),)-.25 F F0
-(Add-T)3.374 E(o-Undisclosed)-.92 E F1 .874(to add a header)3.374 F<9954>174
-642 Q 1.594(o: undisclosed-recipients:;\232 to mak)-.8 F 4.094(et)-.1 G 1.594
-(he header le)339.456 642 R -.05(ga)-.15 G 4.095(lw).05 G 1.595
-(ithout disclosing an)414.29 642 R(y-)-.15 E(thing, or)174 654 Q F0(Add-Bcc)2.5
-E F1(to add an empty Bcc: header)2.5 E(.)-.55 E 1.18(OldStyleHeaders [o])102
-670.2 R 1.713
-(Assume that the headers may be in old format, i.e., spaces delimit names.)
-4.214 F 1.068(This actually turns on an adapti)174 682.2 R 1.368 -.15(ve a)-.25
-H 1.068(lgorithm: if an).15 F 3.569(yr)-.15 G 1.069
-(ecipient address contains a)393.873 682.2 R 1.681
-(comma, parenthesis, or angle brack)174 694.2 R 1.681
-(et, it will be assumed that commas already)-.1 F -.15(ex)174 706.2 S 2.825
-(ist. If).15 F .325(this \215ag is not on, only commas delimit names.)2.825 F
-.325(Headers are al)5.325 F -.1(wa)-.1 G .325(ys out-).1 F
-(put with commas between the names.)174 718.2 Q(Def)5 E(aults to of)-.1 E(f.)
--.25 E EP
-%%Page: 43 38
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-43)452.9 60 Q/F1 10/Times-Roman@0 SF(OperatorChars=)102 96 Q/F2 10
-/Times-Italic@0 SF -.15(ch)C(arlist).15 E F1 1.438([$o macro] The list of char\
-acters that are considered to be \231operators\232, that is,)174 108 R .82
-(characters that delimit tok)174 120 R 3.32(ens. All)-.1 F .82
-(operator characters are tok)3.32 F .82(ens by themselv)-.1 F(es;)-.15 E .078
-(sequences of non-operator characters are also tok)174 132 R 2.578(ens. White)
--.1 F .078(space characters sep-)2.578 F .269(arate tok)174 144 R .269(ens b)
--.1 F .269(ut are not tok)-.2 F .269(ens themselv)-.1 F .269(es \212 for e)-.15
-F .269(xample, \231)-.15 F .27(AAA.BBB\232 has three)-.8 F(tok)174 156 Q .433
-(ens, b)-.1 F .433(ut \231)-.2 F .433(AAA BBB\232 has tw)-.8 F 2.933(o. If)-.1
-F .433(not set, OperatorChars def)2.933 F .433(aults to \231.)-.1 F 1.666(:@[])
-1.666 G<9a3b>-1.666 E(additionally)174 168 Q 2.5(,t)-.65 G
-(he characters \231\()228.91 168 Q 1.666(\)<>,;)1.666 G 2.5<9a61>-1.666 G
-(re al)331.25 168 Q -.1(wa)-.1 G(ys operators.).1 E(PostmasterCop)102 184.2 Q
-(y=)-.1 E F2(postmaster)A F1 .003
-([P] If set, copies of error messages will be sent to the named)174 196.2 R F2
-(postmaster)2.504 E F1 5.004(.O)C .004(nly the)476.496 196.2 R .627
-(header of the f)174 208.2 R .627(ailed message is sent.)-.1 F .626
-(Since most errors are user problems, this is)5.626 F .453
-(probably not a good idea on lar)174 220.2 R .453(ge sites, and ar)-.18 F .453
-(guably contains all sorts of pri)-.18 F -.25(va)-.25 G -.15(cy).25 G 1.979
-(violations, b)174 232.2 R 1.978
-(ut it seems to be popular with certain operating systems v)-.2 F(endors.)-.15
-E(Def)174 244.2 Q(aults to no postmaster copies.)-.1 E(Pri)102 260.4 Q -.25(va)
--.25 G -.15(cy).25 G(Options=).15 E F2(opt,opt,...)1.666 E F1 1.191
-([p] Set the pri)174 272.4 R -.25(va)-.25 G -.15(cy).25 G F2(opt)3.841 E F1
-3.691(ions. `)B(`Pri)-.74 E -.25(va)-.25 G -.15(cy).25 G 2.671 -.74('' i).15 H
-3.692(sr).74 G 1.192(eally a misnomer; man)352.028 272.4 R 3.692(yo)-.15 G
-3.692(ft)460.526 272.4 S 1.192(hese are)470.328 272.4 R .929(just a w)174 284.4
-R .928(ay of insisting on stricter adherence to the SMTP protocol.)-.1 F(The)
-5.928 E F2(opt)3.428 E F1(ions)A(can be selected from:)174 296.4 Q 40.26
-(public Allo)214 312.6 R 2.5(wo)-.25 G(pen access)314.01 312.6 Q 11.38
-(needmailhelo Insist)214 324.6 R(on HELO or EHLO command before MAIL)2.5 E
-(neede)214 336.6 Q 9.87(xpnhelo Insist)-.15 F
-(on HELO or EHLO command before EXPN)2.5 E(noe)214 348.6 Q 35.97(xpn Disallo)
--.15 F 2.5(wE)-.25 G(XPN entirely)326.23 348.6 Q 12.5(needvrfyhelo Insist)214
-360.6 R(on HELO or EHLO command before VRFY)2.5 E(no)214 372.6 Q 38.75
-(vrfy Disallo)-.15 F 2.5(wV)-.25 G(RFY entirely)327.34 372.6 Q 14.71
-(restrictmailq Restrict)214 384.6 R(mailq command)2.5 E 19.16
-(restrictqrun Restrict)214 396.6 R(\255q command line \215ag)2.5 E 24.16
-(noreceipts Don')214 408.6 R 2.5(tr)-.18 G(eturn success DSNs)310.74 408.6 Q
-(goa)214 420.6 Q -.1(wa)-.15 G 36.91(yD).1 G(isallo)288.98 420.6 Q 2.5(we)-.25
-G(ssentially all SMTP status queries)324.56 420.6 Q(authw)214 432.6 Q 11.48
-(arnings Put)-.1 F(X-Authentication-W)2.5 E(arning: headers in messages)-.8 E
-.485(The \231goa)174 448.8 R -.1(wa)-.15 G .485
-(y\232 pseudo-\215ag sets all \215ags e).1 F .486
-(xcept \231restrictmailq\232 and \231restrictqrun\232.)-.15 F 1.175(If mailq i\
-s restricted, only people in the same group as the queue directory can)174
-460.8 R .207(print the queue.)174 472.8 R .207
-(If queue runs are restricted, only root and the o)5.207 F .208
-(wner of the queue)-.25 F .066(directory can run the queue.)174 484.8 R .066
-(Authentication W)5.066 F .066(arnings add w)-.8 F .066(arnings about v)-.1 F
-(arious)-.25 E .77(conditions that may indicate attempts to spoof the mail sys\
-tem, such as using an)174 496.8 R(non-standard queue directory)174 508.8 Q(.)
--.65 E(QueueDirectory=)102 525 Q F2(dir)A F1([Q] Use the named)174 537 Q F2
-(dir)2.5 E F1(as the queue directory)2.5 E(.)-.65 E(QueueF)102 553.2 Q(actor=)
--.15 E F2(factor)A F1 .614([q] Use)174 565.2 R F2(factor)3.114 E F1 .613
-(as the multiplier in the map function to decide when to just queue)3.114 F
-.415(up jobs rather than run them.)174 577.2 R .415(This v)5.415 F .415
-(alue is di)-.25 F .415(vided by the dif)-.25 F .415(ference between the)-.25 F
-1.004(current load a)174 589.2 R -.15(ve)-.2 G 1.004(rage and the load a).15 F
--.15(ve)-.2 G 1.004(rage limit \().15 F F0(QueueLA)A F1 1.003
-(option\) to determine)3.503 F(the maximum message priority that will be sent.)
-174 601.2 Q(Def)5 E(aults to 600000.)-.1 E(QueueLA=)102 617.4 Q F2(LA)A F1 .164
-([x] When the system load a)174 617.4 R -.15(ve)-.2 G .165(rage e).15 F(xceeds)
--.15 E F2(LA)2.665 E F1 2.665(,j)C .165(ust queue messages \(i.e., don')367.265
-617.4 R 2.665(tt)-.18 G(ry)495.67 617.4 Q(to send them\).)174 629.4 Q(Def)5 E
-(aults to 8.)-.1 E(QueueSortOrder=)102 645.6 Q F2(algorithm)A F1 .097
-([no short name] Sets the)174 657.6 R F2(algorithm)2.597 E F1 .096
-(used for sorting the queue.)2.597 F .096(Only the \214rst char)5.096 F(-)-.2 E
-1.021(acter of the v)174 669.6 R 1.021(alue is used.)-.25 F(Le)6.021 E -.05(ga)
--.15 G 3.521(lv).05 G 1.021
-(alues are \231host\232 \(to order by the name of the)317.357 669.6 R .922(\
-\214rst host name of the \214rst recipient\) and \231priority\232 \(to order s\
-trictly by message)174 681.6 R 2.527(priority\). Host)174 693.6 R .027
-(ordering mak)2.527 F .028(es better use of the connection cache, b)-.1 F .028
-(ut may tend to)-.2 F .323(process lo)174 705.6 R 2.823(wp)-.25 G .322
-(riority messages that go to a single host o)229.386 705.6 R -.15(ve)-.15 G
-2.822(rh).15 G .322(igh priority messages)417.806 705.6 R 1.824(that go to se)
-174 717.6 R -.15(ve)-.25 G 1.824(ral hosts; it probably shouldn').15 F 4.325
-(tb)-.18 G 4.325(eu)376.345 717.6 S 1.825(sed on slo)390.11 717.6 R 4.325(wn)
--.25 G(etw)450.055 717.6 Q 1.825(ork links.)-.1 F EP
-%%Page: 44 39
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-44 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
-(Priority ordering is the def)174 96 Q(ault.)-.1 E(Resolv)102 112.2 Q
-(erOptions=)-.15 E/F2 10/Times-Italic@0 SF(options)A F1 .128([I] Set resolv)174
-124.2 R .127(er options.)-.15 F -1.11(Va)5.127 G .127(lues can be set using)
-1.11 F F0(+)2.627 E F2<8d61>A(g)-.1 E F1 .127(and cleared using)2.627 F F0<ad>
-2.627 E F2<8d61>A(g)-.1 E F1 2.627(;t)C(he)494.56 124.2 Q F2<8d61>174 136.2 Q
-(g)-.1 E F1 5.013(sc)C 2.513(an be \231deb)202.243 136.2 R 2.513
-(ug\232, \231aaonly\232, \231use)-.2 F 2.514
-(vc\232, \231primary\232, \231igntc\232, \231recurse\232, \231def-)-.25 F .867
-(names\232, \231stayopen\232, or \231dnsrch\232.)174 148.2 R .867
-(The string \231HasW)5.867 F .867(ildcardMX\232 \(without a)-.4 F F0(+)3.367 E
-F1(or)3.367 E F0<ad>174 160.2 Q F1 3.82(\)c)C 1.32
-(an be speci\214ed to turn of)191.29 160.2 R 3.82(fm)-.25 G 1.32(atching ag)
-311.72 160.2 R 1.32(ainst MX records when doing name)-.05 F(canoni\214cations.)
-174 172.2 Q F0(N.B.)5.918 E F1 .917
-(Prior to 8.7, this option indicated that the name serv)5.918 F .917(er be)-.15
-F 1.025(responding in order to accept addresses.)174 184.2 R 1.025
-(This has been replaced by checking to)6.025 F .078(see if the \231dns\232 met\
-hod is listed in the service switch entry for the \231hosts\232 service.)174
-196.2 R(SmtpGreetingMessage=)102 212.4 Q F2(messa)A -.1(ge)-.1 G F1 .344
-([$e macro] The message printed when the SMTP serv)174 224.4 R .345
-(er starts up.)-.15 F(Def)5.345 E .345(aults to \231$j)-.1 F
-(Sendmail $v ready at $b\232.)174 236.4 Q -.35(Ti)102 252.6 S(meout.).35 E F2
-(type)A F1(=)A F2(timeout)1.666 E F1 .297
-([r; subsumes old T option as well] Set timeout v)174 264.6 R 2.796(alues. The)
--.25 F .296(actual timeout is indi-)2.796 F 1.678(cated by the)174 276.6 R F2
-(type)4.178 E F1 6.678(.T)C 1.678(he recognized timeouts and their def)261.802
-276.6 R 1.679(ault v)-.1 F 1.679(alues, and their)-.25 F(minimum v)174 288.6 Q
-(alues speci\214ed in RFC 1123 section 5.3.2 are:)-.25 E 23.6(initial w)214
-304.8 R(ait for initial greeting message [5m, 5m])-.1 E 29.72(helo reply)214
-316.8 R(to HELO or EHLO command [5m, none])2.5 E 29.16(mail reply)214 328.8 R
-(to MAIL command [10m, 5m])2.5 E 31.39(rcpt reply)214 340.8 R
-(to RCPT command [1h, 5m])2.5 E 16.94(datainit reply)214 352.8 R(to D)2.5 E
--1.21 -1.11(AT A)-.4 H(command [5m, 2m])3.61 E 8.06(datablock data)214 364.8 R
-(block read [1h, 3m])2.5 E 12.5(data\214nal reply)214 376.8 R(to \214nal `)2.5
-E(`.)-.74 E 1.48 -.74('' i)-.7 H 2.5(nd).74 G(ata [1h, 10m])348.47 376.8 Q 32.5
-(rset reply)214 388.8 R(to RSET command [5m, none])2.5 E 31.38(quit reply)214
-400.8 R(to Q)2.5 E(UIT command [2m, none])-.1 E 28.05(misc reply)214 412.8 R
-(to NOOP and VERB commands [2m, none])2.5 E 26.94(ident IDENT)214 424.8 R
-(protocol timeout [30s, none])2.5 E 9.72(\214leopen\207 timeout)214 436.8 R
-(on opening .forw)2.5 E(ard and :include: \214les [60s, none])-.1 E 2.5
-(command\207 command)214 448.8 R(read [1h, 5m])2.5 E(queuereturn\207ho)214
-460.8 Q 2.5(wl)-.25 G(ong until a message is returned [5d, 5d])289.01 460.8 Q
-(queue)214 472.8 Q -.1(wa)-.25 G -1.58(rn\207 ho).1 F 2.5(wl)-.25 G
-(ong until a w)285.69 472.8 Q(arning is sent [none, none])-.1 E .893(All b)174
-489 R .893(ut those mark)-.2 F .893
-(ed with a dagger \(\207\) apply to client SMTP)-.1 F 5.892(.I)-1.11 G 3.392
-(ft)437.724 489 S .892(he message is)447.226 489 R .273(submitted using the)174
-501 R/F3 9/Times-Roman@0 SF(NO)2.773 E .523(TIFY SMTP)-.36 F F1 -.15(ex)2.773 G
-.273(tension, w).15 F .274(arning messages will only be sent)-.1 F(if)174 513 Q
-F3(NO)3.038 E(TIFY=DELA)-.36 E(Y)-.945 E F1 .538(is speci\214ed.)3.038 F .537
-(The queuereturn and queue)5.537 F -.1(wa)-.25 G .537(rn timeouts can be).1 F
-1.234(further quali\214ed with a tag based on the Precedence: \214eld in the m\
-essage; the)174 525 R(y)-.15 E 1.9(must be one of \231ur)174 537 R 1.9
-(gent\232 \(indicating a positi)-.18 F 2.2 -.15(ve n)-.25 H 1.9
-(on-zero precedence\) \231normal\232).15 F .251
-(\(indicating a zero precedence\), or \231non-ur)174 549 R .251
-(gent\232 \(indicating ne)-.18 F -.05(ga)-.15 G(ti).05 E .552 -.15(ve p)-.25 H
-(recedences\).).15 E -.15(Fo)174 561 S 4.423(re).15 G 1.923
-(xample, setting \231T)196.453 561 R(imeout.queue)-.35 E -.1(wa)-.25 G(rn.ur).1
-E 1.923(gent=1h\232 sets the w)-.18 F 1.922(arning timeout)-.1 F .222(for ur)
-174 573 R .223(gent messages only to one hour)-.18 F 5.223(.T)-.55 G .223
-(he def)336.749 573 R .223(ault if no precedence is indicated is)-.1 F
-(to set the timeout for all precedences.)174 585 Q(RecipientF)102 601.2 Q
-(actor=)-.15 E F2(fact)A F1 .638([y] The indicated)174 613.2 R F2(fact)3.137 E
-F1 .637(or is added to the priority \(thus)B F2(lowering)3.137 E F1 .637
-(the priority of the)3.137 F .23(job\) for each recipient, i.e., this v)174
-625.2 R .231(alue penalizes jobs with lar)-.25 F .231(ge numbers of recipi-)
--.18 F 2.5(ents. Def)174 637.2 R(aults to 30000.)-.1 E(RefuseLA=)102 653.4 Q F2
-(LA)A F1 1.012([X] When the system load a)174 653.4 R -.15(ve)-.2 G 1.012
-(rage e).15 F(xceeds)-.15 E F2(LA)3.512 E F1 3.512(,r)C 1.011
-(efuse incoming SMTP connec-)376.816 653.4 R 2.5(tions. Def)174 665.4 R
-(aults to 12.)-.1 E(RetryF)102 681.6 Q(actor=)-.15 E F2(fact)A F1 .771([Z] The)
-3.74 F F2(fact)3.271 E F1 .771(or is added to the priority e)B -.15(ve)-.25 G
-.772(ry time a job is processed.).15 F .772(Thus, each)5.772 F .994
-(time a job is processed, its priority will be decreased by the indicated v)174
-693.6 R 3.493(alue. In)-.25 F 1.107(most en)174 705.6 R 1.107
-(vironments this should be positi)-.4 F -.15(ve)-.25 G 3.608(,s).15 G 1.108
-(ince hosts that are do)357.354 705.6 R 1.108(wn are all too)-.25 F(often do)
-174 717.6 Q(wn for a long time.)-.25 E(Def)5 E(aults to 90000.)-.1 E EP
-%%Page: 45 40
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-45)452.9 60 Q/F1 10/Times-Roman@0 SF(Sa)102 96 Q -.15(ve)-.2 G 10.41
-(FromLine [f]).15 F(Sa)4.909 E 2.709 -.15(ve U)-.2 H 2.408
-(nix-style \231From\232 lines at the front of headers.).15 F 2.408
-(Normally the)7.408 F 4.908(ya)-.15 G(re)496.23 96 Q
-(assumed redundant and discarded.)174 108 Q(SendMIMEErrors)102 124.2 Q .815
-([j] If set, send error messages in MIME format \(see RFC1521 and RFC1344 for)
-174 136.2 R(details\).)174 148.2 Q(ServiceSwitchFile=)102 164.4 Q/F2 10
-/Times-Italic@0 SF(\214lename)A F1 1.533([no short name] If your host operatin\
-g system has a service switch abstraction)174 176.4 R .003(\(e.g., /etc/nsswit\
-ch.conf on Solaris or /etc/svc.conf on Ultrix and DEC OSF/1\) that)174 188.4 R
-.814(service will be consulted and this option is ignored.)174 200.4 R .814
-(Otherwise, this is the name)5.814 F 1.082(of a \214le that pro)174 212.4 R
-1.082(vides the list of methods used to implement particular services.)-.15 F
-1.069(The syntax is a series of lines, each of which is a sequence of w)174
-224.4 R 3.569(ords. The)-.1 F(\214rst)3.569 E -.1(wo)174 236.4 S 1.363
-(rd is the service name, and follo).1 F 1.363(wing w)-.25 F 1.364
-(ords are service types.)-.1 F 1.364(The services)6.364 F(that)174 248.4 Q F2
-(sendmail)4.11 E F1 1.61(consults directly are \231aliases\232 and \231hosts.)
-4.11 F 6.61<9a53>-.7 G 1.61(ervice types can be)422.81 248.4 R 1.754
-(\231dns\232, \231nis\232, \231nisplus\232, or \231\214les\232 \(with the ca)
-174 260.4 R -.15(ve)-.2 G 1.755(at that the appropriate support).15 F .791
-(must be compiled in before the service can be referenced\).)174 272.4 R .79
-(If ServiceSwitchFile)5.791 F 1.303(is not speci\214ed, it def)174 284.4 R
-1.303(aults to /etc/service.switch.)-.1 F 1.303(If that \214le does not e)6.303
-F 1.304(xist, the)-.15 F(def)174 296.4 Q(ault switch is:)-.1 E 20.28
-(aliases \214les)214 312.6 R 26.38(hosts dns)214 324.6 R(nis \214les)2.5 E
-(The def)174 340.8 Q(ault \214le is \231/etc/service.switch\232.)-.1 E(Se)102
-357 Q -.15(ve)-.25 G 12.12(nBitInput [7]).15 F .322(Strip input to se)2.822 F
--.15(ve)-.25 G 2.822(nb).15 G .321(its for compatibility with old systems.)
-274.93 357 R .321(This shouldn')5.321 F 2.821(tb)-.18 G(e)499.56 357 Q
-(necessary)174 369 Q(.)-.65 E(StatusFile=)102 385.2 Q F2(\214le)A F1 .299
-([S] Log summary statistics in the named)174 385.2 R F2(\214le)2.799 E F1 5.299
-(.I)C 2.799(fn)363.602 385.2 S .3(ot set, no summary statistics are)374.731
-385.2 R(sa)174 397.2 Q -.15(ve)-.2 G 3.775(d. This).15 F 1.275
-(\214le does not gro)3.775 F 3.775(wi)-.25 G 3.775(ns)308.82 397.2 S 3.775
-(ize. It)321.485 397.2 R 1.275(can be printed using the)3.775 F F2(mailstats)
-3.775 E F1(\(8\))A(program.)174 409.2 Q 28.4(SuperSafe [s])102 425.4 R .372
-(Be super)2.872 F .372(-safe when running things, i.e., al)-.2 F -.1(wa)-.1 G
-.373(ys instantiate the queue \214le, e).1 F -.15(ve)-.25 G(n).15 E .697
-(if you are going to attempt immediate deli)174 437.4 R -.15(ve)-.25 G(ry).15 E
-(.)-.65 E F2(Sendmail)5.697 E F1(al)3.197 E -.1(wa)-.1 G .697
-(ys instantiates the).1 F 2.688
-(queue \214le before returning control the client under an)174 449.4 R 5.188
-(yc)-.15 G 5.188(ircumstances. This)423.822 449.4 R(should really)174 461.4 Q
-F2(always)2.5 E F1(be set.)2.5 E -.7(Te)102 477.6 S(mpFileMode=).7 E F2(mode)A
-F1 .332([F] The \214le mode for queue \214les.)174 489.6 R .331
-(It is interpreted in octal by def)5.331 F 2.831(ault. Def)-.1 F .331(aults to)
--.1 F(0600.)174 501.6 Q -.35(Ti)102 517.8 S(meZoneSpec=).35 E F2(tzinfo)A F1
-.218([t] Set the local time zone info to)174 529.8 R F2(tzinfo)2.718 E F1 2.718
-<8a66>2.718 G .218(or e)351.168 529.8 R .218(xample, \231PST8PDT\232.)-.15 F
-(Actually)5.218 E 2.718(,i)-.65 G(f)500.67 529.8 Q 1.346
-(this is not set, the TZ en)174 541.8 R 1.346(vironment v)-.4 F 1.346
-(ariable is cleared \(so the system def)-.25 F 1.345(ault is)-.1 F .208
-(used\); if set b)174 553.8 R .208(ut null, the user')-.2 F 2.708(sT)-.55 G
-2.708(Zv)306.916 553.8 S .208(ariable is used, and if set and non-null the TZ)
-320.484 553.8 R -.25(va)174 565.8 S(riable is set to this v).25 E(alue.)-.25 E
--.35(Tr)102 582 S 5.96(yNullMXList [w]).35 F .114
-(If this system is the \231best\232 \(that is, lo)2.614 F .114
-(west preference\) MX for a gi)-.25 F -.15(ve)-.25 G 2.613(nh).15 G .113
-(ost, its)477.767 582 R 1.168(con\214guration rules should normally detect thi\
-s situation and treat that condition)174 594 R .258(specially by forw)174 606 R
-.258(arding the mail to a UUCP feed, treating it as local, or whate)-.1 F -.15
-(ve)-.25 G -.55(r.).15 G(Ho)174 618 Q(we)-.25 E -.15(ve)-.25 G 1.685 -.4(r, i)
-.15 H 3.385(ns).4 G .886(ome cases \(such as Internet \214re)230.54 618 R -.1
-(wa)-.25 G .886(lls\) you may w).1 F .886(ant to try to con-)-.1 F .07
-(nect directly to that host as though it had no MX records at all.)174 630 R
-.07(Setting this option)5.07 F(causes)174 642 Q F2(sendmail)3.013 E F1 .514
-(to try this.)3.013 F .514(The do)5.514 F .514
-(wnside is that errors in your con\214guration are)-.25 F(lik)174 654 Q 2.116
-(ely to be diagnosed as \231host unkno)-.1 F 2.116
-(wn\232 or \231message timed out\232 instead of)-.25 F
-(something more meaningful.)174 666 Q(This option is disrecommended.)5 E
-(UnixFromLine=)102 682.2 Q F2(fr)A(omline)-.45 E F1 .236
-([$l macro] De\214nes the format used when)174 694.2 R F2(sendmail)2.736 E F1
-.236(must add a UNIX-style From_)2.736 F 1.325(line \(that is, a line be)174
-706.2 R 1.325(ginning \231From<space>user\232\).)-.15 F(Def)6.324 E 1.324
-(aults to \231From $g)-.1 F($d\232.)6.324 E(Don')174 718.2 Q 2.645(tc)-.18 G
-.146(hange this unless your system uses a dif)204.235 718.2 R .146
-(ferent UNIX mailbox format \(v)-.25 F(ery)-.15 E EP
-%%Page: 46 41
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-46 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(unlik)174 96 Q
-(ely\).)-.1 E(UseErrorsT)102 112.2 Q 21.15(o[)-.8 G .826
-(l] If there is an \231Errors-T)177.33 112.2 R .826(o:\232 header)-.8 F 3.326
-(,s)-.4 G .826(end error messages to the addresses listed)332.414 112.2 R 3.134
-(there. The)174 124.2 R 3.134(yn)-.15 G .634(ormally go to the en)230.658 124.2
-R -.15(ve)-.4 G .635(lope sender).15 F 5.635(.U)-.55 G .635
-(se of this option causes)383.895 124.2 R/F2 10/Times-Italic@0 SF(send-)3.135 E
-(mail)174 136.2 Q F1(to violate RFC 1123.)2.5 E
-(This option is disrecommended and deprecated.)5 E(UserDatabaseSpec=)102 152.4
-Q F2(udbspec)A F1([U] The user database speci\214cation.)174 164.4 Q -1.11(Ve)
-102 180.6 S 37.29(rbose [v])1.11 F .561(Run in v)3.061 F .561(erbose mode.)-.15
-F .561(If this is set,)5.561 F F2(sendmail)3.061 E F1 .56(adjusts options)3.061
-F F0(HoldExpensi)3.06 E -.1(ve)-.1 G F1(\(old)174 192.6 Q F0(c)2.635 E F1 2.635
-(\)a)C(nd)207.59 192.6 Q F0(Deli)2.635 E -.1(ve)-.1 G(ryMode).1 E F1(\(old)
-2.635 E F0(d)2.635 E F1 2.635(\)s)C 2.635(ot)317.36 192.6 S .135
-(hat all mail is deli)327.775 192.6 R -.15(ve)-.25 G .136
-(red completely in a sin-).15 F 1.244
-(gle job so that you can see the entire deli)174 204.6 R -.15(ve)-.25 G 1.244
-(ry process.).15 F(Option)6.244 E F0 -1(Ve)3.743 G(rbose)1 E F1(should)3.743 E
-F2(ne)174 216.6 Q(ver)-.15 E F1(be set in the con\214guration \214le; it is in\
-tended for command line use only)2.5 E(.)-.65 E .108(All options can be speci\
-\214ed on the command line using the \255O or \255o \215ag, b)102 232.8 R .109
-(ut most will cause)-.2 F F2(send-)2.609 E(mail)102 244.8 Q F1 1.135
-(to relinquish its setuid permissions.)3.635 F 1.135
-(The options that will not cause this are MinFreeBlocks)6.135 F .513([b], Deli)
-102 256.8 R -.15(ve)-.25 G .513
-(ryMode [d], ErrorMode [e], IgnoreDots [i], LogLe).15 F -.15(ve)-.25 G 3.014
-(l[).15 G .514(L], MeT)369.118 256.8 R .514(oo [m], OldStyleHeaders)-.8 F .53
-([o], Pri)102 268.8 R -.25(va)-.25 G -.15(cy).25 G .53(Options [p], T).15 F .53
-(imeouts [r], SuperSafe [s], V)-.35 F .53(erbose [v], CheckpointInterv)-1.11 F
-.53(al [C], and Se)-.25 F(v-)-.25 E(enBitInput [7].)102 280.8 Q(Also, M \(de\
-\214ne macro\) when de\214ning the r or s macros is also considered \231safe\
-\232.)5 E F0 2.5(5.7. P)87 304.8 R 2.5<8a50>2.5 G -.18(re)134.22 304.8 S
-(cedence De\214nitions).18 E F1 -1.11(Va)127 321 S .164
-(lues for the \231Precedence:\232 \214eld may be de\214ned using the)1.11 F F0
-(P)2.664 E F1 .164(control line.)2.664 F .164(The syntax of this)5.164 F
-(\214eld is:)102 333 Q F0(P)142 349.2 Q F2(name)A F0(=)A F2(num)A F1 .384
-(When the)102 365.4 R F2(name)2.884 E F1 .384
-(is found in a \231Precedence:\232 \214eld, the message class is set to)2.884 F
-F2(num)2.883 E F1 5.383(.H)C .383(igher numbers)446.127 365.4 R .85
-(mean higher precedence.)102 377.4 R .85(Numbers less than zero ha)5.85 F 1.15
--.15(ve t)-.2 H .85(he special property that if an error occurs).15 F 1.551
-(during processing the body of the message will not be returned; this is e)102
-389.4 R 1.551(xpected to be used for)-.15 F<9962>102 401.4 Q .461
-(ulk\232 mail such as through mailing lists.)-.2 F .461(The def)5.461 F .461
-(ault precedence is zero.)-.1 F -.15(Fo)5.461 G 2.962(re).15 G .462
-(xample, our list of)429.284 401.4 R(precedences is:)102 413.4 Q
-(P\214rst-class=0)142 429.6 Q(Pspecial-deli)142 441.6 Q -.15(ve)-.25 G(ry=100)
-.15 E(Plist=\25530)142 453.6 Q(Pb)142 465.6 Q(ulk=\25560)-.2 E(Pjunk=\255100)
-142 477.6 Q 1.059(People writing mailing list e)102 493.8 R 1.058
-(xploders are encouraged to use \231Precedence: list\232.)-.15 F 1.058(Older v)
-6.058 F 1.058(ersions of)-.15 F F2(sendmail)102 505.8 Q F1 1.19
-(\(which discarded all error returns for ne)3.69 F -.05(ga)-.15 G(ti).05 E 1.49
--.15(ve p)-.25 H 1.19(recedences\) didn').15 F 3.69(tr)-.18 G 1.19
-(ecognize this name,)422.47 505.8 R(gi)102 517.8 Q .599(ving it a def)-.25 F
-.598(ault precedence of zero.)-.1 F .598(This allo)5.598 F .598
-(ws list maintainers to see error returns on both old)-.25 F(and ne)102 529.8 Q
-2.5(wv)-.25 G(ersions of)142.7 529.8 Q F2(sendmail)2.5 E F1(.)A F0 2.5(5.8. V)
-87 553.8 R 2.5<8a43>2.5 G(on\214guration V)136.44 553.8 Q(ersion Le)-1 E -.1
-(ve)-.15 G(l).1 E F1 3.181 -.8(To p)127 570 T(ro).8 E 1.581
-(vide compatibility with old con\214guration \214les, the)-.15 F F0(V)4.081 E
-F1 1.582(line has been added to de\214ne)4.082 F 1.11(some v)102 582 R 1.11
-(ery basic semantics of the con\214guration \214le.)-.15 F 1.11
-(These are not intended to be long term sup-)6.11 F .033(ports; rather)102 594
-R 2.533(,t)-.4 G(he)158.046 594 Q 2.533(yd)-.15 G .033
-(escribe compatibility features which will probably be remo)179.869 594 R -.15
-(ve)-.15 G 2.533(di).15 G 2.533(nf)435.903 594 S .034(uture releases.)446.766
-594 R F0(N.B.:)127 610.2 Q F1 .197(these v)2.697 F(ersion)-.15 E F2(le)2.697 E
-(vels)-.15 E F1(ha)2.697 E .496 -.15(ve n)-.2 H .196(othing to do with the v)
-.15 F(ersion)-.15 E F2(number)2.696 E F1 .196(on the \214les.)2.696 F -.15(Fo)
-5.196 G 2.696(re).15 G(xam-)483.45 610.2 Q(ple, as of this writing v)102 622.2
-Q(ersion 8 con\214g \214les \(speci\214cally)-.15 E 2.5(,8)-.65 G(.7\) used v)
-333.41 622.2 Q(ersion le)-.15 E -.15(ve)-.25 G 2.5(l6c).15 G(on\214gurations.)
-432.84 622.2 Q 1.102(\231Old\232 con\214guration \214les are de\214ned as v)127
-638.4 R 1.102(ersion le)-.15 F -.15(ve)-.25 G 3.602(lo).15 G 3.602(ne. V)
-353.006 638.4 R 1.102(ersion le)-1.11 F -.15(ve)-.25 G 3.602(lt).15 G 1.302 -.1
-(wo \214)430.622 638.4 T 1.103(les mak).1 F 3.603(et)-.1 G(he)494.56 638.4 Q
-(follo)102 650.4 Q(wing changes:)-.25 E 12.5(\(1\) Host)107 666.6 R .727(name \
-canoni\214cation \($[ ... $]\) appends a dot if the name is recognized; this g\
-i)3.227 F -.15(ve)-.25 G 3.226(st).15 G(he)494.56 666.6 Q 1.974
-(con\214g \214le a w)133.66 678.6 R 1.974(ay of \214nding out if an)-.1 F 1.974
-(ything matched.)-.15 F(\(Actually)6.974 E 4.475(,t)-.65 G 1.975
-(his just initializes the)413.345 678.6 R .739
-(\231host\232 map with the \231\255a.)133.66 690.6 R 5.739<9a8d>-.7 G .739
-(ag \212 you can reset it to an)251.445 690.6 R .738
-(ything you prefer by declaring the)-.15 F(map e)133.66 702.6 Q(xplicitly)-.15
-E(.\))-.65 E EP
-%%Page: 47 42
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-47)452.9 60 Q/F1 10/Times-Roman@0 SF 12.5(\(2\) Def)107 96 R .384
-(ault host name e)-.1 F .385(xtension is consistent throughout processing; v)
--.15 F .385(ersion le)-.15 F -.15(ve)-.25 G 2.885(lo).15 G .385(ne con\214gu-)
-458.345 96 R .83(rations turned of)133.66 108 R 3.33(fd)-.25 G .83(omain e)
-212.83 108 R .83
-(xtension \(that is, adding the local domain name\) during certain)-.15 F .4
-(points in processing.)133.66 120 R -1.11(Ve)5.4 G .4(rsion le)1.11 F -.15(ve)
--.25 G 2.9(lt).15 G .6 -.1(wo c)280.53 120 T .4(on\214gurations are e).1 F .4
-(xpected to include a trailing dot)-.15 F
-(to indicate that the name is already canonical.)133.66 132 Q 12.5(\(3\) Local)
-107 148.2 R .072(names that are not aliases are passed through a ne)2.572 F
-2.572(wd)-.25 G .072(istinguished ruleset \214v)372.752 148.2 R .072
-(e; this can)-.15 F 1.426(be used to append a local relay)133.66 160.2 R 6.426
-(.T)-.65 G 1.426(his beha)279.902 160.2 R 1.426(viour can be pre)-.2 F -.15(ve)
--.25 G 1.426(nted by resolving the local).15 F .209(name with an initial `@'.)
-133.66 172.2 R .209(That is, something that resolv)5.209 F .209
-(es to a local mailer and a user name)-.15 F 1.072
-(of \231vikki\232 will be passed through ruleset \214v)133.66 184.2 R 1.072
-(e, b)-.15 F 1.073(ut a user name of \231@vikki\232 will ha)-.2 F 1.373 -.15
-(ve t)-.2 H(he).15 E .417
-(`@' stripped, will not be passed through ruleset \214v)133.66 196.2 R .417
-(e, b)-.15 F .416(ut will otherwise be treated the same)-.2 F 1.702
-(as the prior e)133.66 208.2 R 4.202(xample. The)-.15 F -.15(ex)4.202 G 1.703
-(pectation is that this might be used to implement a polic).15 F(y)-.15 E .136
-(where mail sent to \231vikki\232 w)133.66 220.2 R .135
-(as handled by a central hub, b)-.1 F .135
-(ut mail sent to \231vikki@localhost\232)-.2 F -.1(wa)133.66 232.2 S 2.5(sd).1
-G(eli)156.61 232.2 Q -.15(ve)-.25 G(red directly).15 E(.)-.65 E -1.11(Ve)127
-248.4 S 1.382(rsion le)1.11 F -.15(ve)-.25 G 3.882(lt).15 G 1.382
-(hree \214les allo)187.134 248.4 R 3.882(w#i)-.25 G 1.382
-(nitiated comments on all lines.)266.292 248.4 R 1.383
-(Exceptions are backslash)6.383 F(escaped # marks and the $# syntax.)102 260.4
-Q -1.11(Ve)127 276.6 S 1.208(rsion le)1.11 F -.15(ve)-.25 G 3.708(lf).15 G
-1.208(our con\214gurations are completely equi)187.336 276.6 R -.25(va)-.25 G
-1.207(lent to le).25 F -.15(ve)-.25 G 3.707(lt).15 G 1.207
-(hree for historical rea-)411.249 276.6 R(sons.)102 288.6 Q -1.11(Ve)127 304.8
-S 1.234(rsion le)1.11 F -.15(ve)-.25 G 3.734<6c8c>.15 G 1.534 -.15(ve c)189.618
-304.8 T 1.234(on\214guration \214les change the def).15 F 1.234
-(ault de\214nition of)-.1 F F0($w)3.734 E F1 1.234(to be just the \214rst)3.734
-F(component of the hostname.)102 316.8 Q -1.11(Ve)127 333 S 1.589(rsion le)1.11
-F -.15(ve)-.25 G 4.089(ls).15 G 1.589(ix con\214guration \214les change man)
-188.658 333 R 4.088(yo)-.15 G 4.088(ft)342.272 333 S 1.588
-(he local processing options \(such as)352.47 333 R .48
-(aliasing and matching the be)102 345 R .481
-(ginning of the address for `|' characters\) to be mailer \215ags; this allo)
--.15 F(ws)-.25 E 1.345(\214ne-grained control o)102 357 R -.15(ve)-.15 G 3.845
-(rt).15 G 1.345(he special local processing.)210.435 357 R(Le)6.345 E -.15(ve)
--.25 G 3.845(ls).15 G 1.344(ix con\214guration \214les may also use)360.34 357
-R 1.221(long option names.)102 369 R(The)6.221 E F0(ColonOkInAddr)3.721 E F1
-1.221(option \(to allo)3.721 F 3.722(wc)-.25 G 1.222
-(olons in the local-part of addresses\))355.42 369 R(def)102 381 Q(aults)-.1 E
-F0(on)3.44 E F1 .94(for lo)3.44 F .94(wer numbered con\214guration \214les; th\
-e con\214guration \214le requires some additional)-.25 F
-(intelligence to properly handle the RFC 822 group construct.)102 393 Q(The)127
-409.2 Q F0(V)2.677 E F1 .177(line may ha)2.677 F .477 -.15(ve a)-.2 H 2.677(no)
-.15 G(ptional)231.022 409.2 Q F0(/)2.677 E/F2 10/Times-Italic@0 SF(vendor)A F1
-.178(to indicate that this con\214guration \214le uses modi\214ca-)2.677 F .865
-(tions speci\214c to a particular v)102 423.2 R(endor)-.15 E/F3 7/Times-Roman@0
-SF(19)246.986 419.2 Q F1 5.866(.Y)253.986 423.2 S .866(ou may use \231/Berk)
-268.472 423.2 R(ele)-.1 E .866(y\232 to emphasize that this con\214gura-)-.15 F
-(tion \214le uses the Berk)102 435.2 Q(ele)-.1 E 2.5(yd)-.15 G(ialect of)213.13
-435.2 Q F2(sendmail)2.5 E F1(.)A F0 2.5(5.9. K)87 459.2 R 2.5<8a4b>2.5 G
-(ey File Declaration)137.31 459.2 Q F1
-(Special maps can be de\214ned using the line:)127 475.4 Q
-(Kmapname mapclass ar)142 491.6 Q(guments)-.18 E(The)102 507.8 Q F2(mapname)
-2.751 E F1 .251(is the handle by which this map is referenced in the re)2.751 F
-.25(writing rules.)-.25 F(The)5.25 E F2(mapclass)2.75 E F1(is)2.75 E 1.889
-(the name of a type of map; these are compiled in to)102 519.8 R F2(sendmail)
-4.389 E F1 6.889(.T)C(he)384.013 519.8 Q F2(ar)4.389 E(guments)-.37 E F1 1.889
-(are interpreted)4.389 F .791(depending on the class; typically)102 531.8 R
-3.291(,t)-.65 G .791(here w)244.185 531.8 R .791(ould be a single ar)-.1 F .79
-(gument naming the \214le containing the)-.18 F(map.)102 543.8 Q
-(Maps are referenced using the syntax:)127 560 Q($\()142 576.2 Q F2(map k)2.5 E
--.3(ey)-.1 G F1($@)2.8 E F2(ar)2.5 E(guments)-.37 E F1($:)2.5 E F2(default)2.5
-E F1($\))2.5 E .64(where either or both of the)102 592.4 R F2(ar)3.14 E
-(guments)-.37 E F1(or)3.141 E F2(default)3.141 E F1 .641
-(portion may be omitted.)3.141 F(The)5.641 E F2 .641($@ ar)3.141 F(guments)-.37
-E F1(may)3.141 E 1.277(appear more than once.)102 604.4 R 1.277(The indicated)
-6.277 F F2 -.1(ke)3.777 G(y)-.2 E F1(and)3.776 E F2(ar)3.776 E(guments)-.37 E
-F1 1.276(are passed to the appropriate mapping)3.776 F 3.253(function. If)102
-616.4 R .753(it returns a v)3.253 F .753(alue, it replaces the input.)-.25 F
-.753(If it does not return a v)5.753 F .753(alue and the)-.25 F F2(default)
-3.253 E F1(is)3.253 E(speci\214ed, the)102 628.4 Q F2(default)2.5 E F1
-(replaces the input.)2.5 E(Otherwise, the input is unchanged.)5 E 1.042
-(During replacement of either a map v)127 644.6 R 1.042(alue or def)-.25 F
-1.042(ault the string \231%)-.1 F F2(n)A F1 3.542<9a28>C(where)417.414 644.6 Q
-F2(n)3.542 E F1 1.041(is a digit\) is)3.541 F .481
-(replaced by the corresponding)102 656.6 R F2(ar)2.981 E(gument)-.37 E F1 5.481
-(.A)C -.18(rg)280.385 656.6 S .482(ument zero is al).18 F -.1(wa)-.1 G .482
-(ys the database k).1 F -.15(ey)-.1 G 5.482(.F)-.5 G .482(or e)456.458 656.6 R
-(xample,)-.15 E(the rule)102 668.6 Q .32 LW 76 678.2 72 678.2 DL 80 678.2 76
-678.2 DL 84 678.2 80 678.2 DL 88 678.2 84 678.2 DL 92 678.2 88 678.2 DL 96
-678.2 92 678.2 DL 100 678.2 96 678.2 DL 104 678.2 100 678.2 DL 108 678.2 104
-678.2 DL 112 678.2 108 678.2 DL 116 678.2 112 678.2 DL 120 678.2 116 678.2 DL
-124 678.2 120 678.2 DL 128 678.2 124 678.2 DL 132 678.2 128 678.2 DL 136 678.2
-132 678.2 DL 140 678.2 136 678.2 DL 144 678.2 140 678.2 DL 148 678.2 144 678.2
-DL 152 678.2 148 678.2 DL 156 678.2 152 678.2 DL 160 678.2 156 678.2 DL 164
-678.2 160 678.2 DL 168 678.2 164 678.2 DL 172 678.2 168 678.2 DL 176 678.2 172
-678.2 DL 180 678.2 176 678.2 DL 184 678.2 180 678.2 DL 188 678.2 184 678.2 DL
-192 678.2 188 678.2 DL 196 678.2 192 678.2 DL 200 678.2 196 678.2 DL 204 678.2
-200 678.2 DL 208 678.2 204 678.2 DL 212 678.2 208 678.2 DL 216 678.2 212 678.2
-DL/F4 5/Times-Roman@0 SF(19)93.6 688.6 Q/F5 8/Times-Roman@0 SF .214
-(And of course, v)3.2 J .214(endors are encouraged to add themselv)-.12 F .214
-(es to the list of recognized v)-.12 F .214(endors by editing the routine)-.12
-F/F6 8/Times-Italic@0 SF(setvendor)2.214 E F5(in)2.214 E F6(conf)72 701.4 Q(.c)
--.12 E F5 4(.P)C(lease send e-mail to sendmail@CS.Berk)101.656 701.4 Q(ele)-.08
-E -.52(y.)-.12 G(EDU to re).52 E(gister your v)-.12 E(endor dialect.)-.12 E EP
-%%Page: 48 43
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-48 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(R$\255 ! $+)142
-96 Q($: $\(uucp $1 $@ $2 $: %1 @ %0 . UUCP $\))250 96 Q 1.269(Looks up the UUC\
-P name in a \(user de\214ned\) UUCP map; if not found it turns it into \231.UU\
-CP\232)102 112.2 R 2.5(form. The)102 124.2 R
-(database might contain records lik)2.5 E(e:)-.1 E(decv)142 140.4 Q 77.43
-(ax %1@%0.DEC.COM)-.25 F 72.19(research %1@%0.A)142 152.4 R(TT)-1.11 E(.COM)
--.74 E .741(The b)127 172.8 R .741(uilt in map with both name and class \231ho\
-st\232 is the host name canonicalization lookup.)-.2 F(Thus, the syntax:)102
-184.8 Q($\(host)142 201 Q/F2 10/Times-Italic@0 SF(hostname)2.5 E F1($\))A
-(is equi)102 217.2 Q -.25(va)-.25 G(lent to:).25 E($[)142 233.4 Q F2(hostname)A
-F1($])A(There are man)127 253.8 Q 2.5(yd)-.15 G(e\214ned classes.)197.1 253.8 Q
-51.72(dbm Database)102 270 R 1.623(lookups using the ndbm\(3\) library)4.123 F
-(.)-.65 E F2(Sendmail)6.623 E F1 1.623(must be compiled with)4.123 F F0(NDBM)
-174 282 Q F1(de\214ned.)2.5 E 49.51(btree Database)102 298.2 R 1.284
-(lookups using the btree interf)3.784 F 1.285(ace to the Berk)-.1 F(ele)-.1 E
-3.785(yd)-.15 G 1.285(b\(3\) library)425.99 298.2 R(.)-.65 E F2(Send-)6.285 E
-(mail)174 310.2 Q F1(must be compiled with)2.5 E F0(NEWDB)2.5 E F1(de\214ned.)
-2.5 E 51.17(hash Database)102 326.4 R .122(lookups using the hash interf)2.622
-F .122(ace to the Berk)-.1 F(ele)-.1 E 2.622(yd)-.15 G .121(b\(3\) library)
-413.868 326.4 R(.)-.65 E F2(Sendmail)5.121 E F1(must be compiled with)174 338.4
-Q F0(NEWDB)2.5 E F1(de\214ned.)2.5 E 57.83(nis NIS)102 354.6 R(lookups.)2.5 E
-F2(Sendmail)5 E F1(must be compiled with)2.5 E F0(NIS)2.5 E F1(de\214ned.)2.5 E
-41.16(nisplus NIS+)102 370.8 R(lookups.)3.733 E F2(Sendmail)6.233 E F1 1.233
-(must be compiled with)3.733 F F0(NISPLUS)3.733 E F1 3.733(de\214ned. The)3.733
-F(ar)3.733 E(gu-)-.18 E .495
-(ment is the name of the table to use for lookups, and the)174 382.8 R F0<ad6b>
-2.995 E F1(and)2.995 E F0<ad76>2.995 E F1 .495(\215ags may be)2.995 F
-(used to set the k)174 394.8 Q .3 -.15(ey a)-.1 H(nd v).15 E
-(alue columns respecti)-.25 E -.15(ve)-.25 G(ly).15 E(.)-.65 E 43.39
-(hesiod Hesiod)102 411 R(lookups.)2.5 E F2(Sendmail)5 E F1
-(must be compiled with)2.5 E F0(HESIOD)2.5 E F1(de\214ned.)2.5 E 41.17
-(netinfo NeXT)102 427.2 R(NetInfo lookups.)2.5 E F2(Sendmail)5 E F1
-(must be compiled with)2.5 E F0(NETINFO)2.5 E F1(de\214ned.)2.5 E(te)102 443.4
-Q 54.65(xt T)-.15 F -.15(ex)-.7 G 2.917<748c>.15 G .417(le lookups.)199.957
-443.4 R .417(The format of the te)5.417 F .418(xt \214le is de\214ned by the)
--.15 F F0<ad6b>2.918 E F1(\(k)2.918 E .718 -.15(ey \214)-.1 H .418(eld num-).15
-F(ber\),)174 455.4 Q F0<ad76>2.5 E F1(\(v)2.5 E(alue \214eld number\), and)-.25
-E F0<ad7a>2.5 E F1(\(\214eld delimiter\) \215ags.)2.5 E 53.39(stab Internal)102
-471.6 R(symbol table lookups.)2.5 E(Used internally for aliasing.)5 E 38.38
-(implicit Really)102 487.8 R .546
-(should be called \231alias\232 \212 this is used to get the def)3.046 F .546
-(ault lookups for alias)-.1 F(\214les, and is the def)174 499.8 Q
-(ault if no class is speci\214ed for alias \214les.)-.1 E 52.84(user Looks)102
-516 R .476(up users using)2.976 F F2 -.1(ge)2.976 G(tpwnam).1 E F1 2.976
-(\(3\). The)B F0<ad76>2.976 E F1 .477(\215ag can be used to specify the name)
-2.976 F .142
-(of the \214eld to return \(although this is normally used only to check the e)
-174 528 R .142(xistence of)-.15 F 2.5(au)174 540 S(ser\).)185.94 540 Q 52.83
-(host Canoni\214es)102 556.2 R .2(host domain names.)2.7 F(Gi)5.2 E -.15(ve)
--.25 G 2.7(nah).15 G .2(ost name it calls the name serv)343.68 556.2 R .2
-(er to \214nd)-.15 F(the canonical name for that host.)174 568.2 Q 32.85
-(sequence The)102 584.4 R(ar)3.35 E .849
-(guments on the `K' line are a list of maps; the resulting map searches the)
--.18 F(ar)174 596.4 Q .438
-(gument maps in order until it \214nds a match for the indicated k)-.18 F -.15
-(ey)-.1 G 5.439(.F)-.5 G .439(or e)456.501 596.4 R(xample,)-.15 E(if the k)174
-608.4 Q .3 -.15(ey d)-.1 H(e\214nition is:).15 E(Kmap1 ...)214 624.6 Q
-(Kmap2 ...)214 636.6 Q(Kseqmap sequence map1 map2)214 648.6 Q .968
-(then a lookup ag)174 664.8 R .968
-(ainst \231seqmap\232 \214rst does a lookup in map1.)-.05 F .968
-(If that is found, it)5.968 F(returns immediately)174 676.8 Q 5(.O)-.65 G
-(therwise, the same k)268.34 676.8 Q .3 -.15(ey i)-.1 H 2.5(su).15 G
-(sed for map2.)375.85 676.8 Q 43.39(switch Much)102 693 R(lik)2.8 E 2.8(et)-.1
-G .3(he \231sequence\232 map e)220.61 693 R .301
-(xcept that the order of maps is determined by the)-.15 F .392(service switch.)
-174 705 R .392(The ar)5.392 F .391
-(gument is the name of the service to be look)-.18 F .391(ed up; the v)-.1 F
-(al-)-.25 E 1.492
-(ues from the service switch are appended to the map name to create ne)174 717
-R 3.993(wm)-.25 G(ap)494.56 717 Q EP
-%%Page: 49 44
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-49)452.9 60 Q/F1 10/Times-Roman@0 SF 2.5(names. F)174 96 R(or e)-.15 E
-(xample, consider the k)-.15 E .3 -.15(ey d)-.1 H(e\214nition:).15 E
-(Kali switch aliases)214 112.2 Q(together with the service switch entry:)174
-128.4 Q 78.84(aliases nis)214 144.6 R(\214les)2.5 E 1.633
-(This causes a query ag)174 160.8 R 1.633
-(ainst the map \231ali\232 to search maps named \231ali.nis\232 and)-.05 F
-(\231ali.\214les\232 in that order)174 172.8 Q(.)-.55 E 37.84(dequote Strip)102
-189 R .96(double quotes \("\) from a name.)3.46 F .961
-(It does not strip backslashes, and will not)5.961 F .173
-(strip quotes if the resulting string w)174 201 R .172
-(ould contain unscannable syntax \(that is, basic)-.1 F .386(errors lik)174 213
-R 2.886(eu)-.1 G .386(nbalanced angle brack)222.992 213 R .386
-(ets; more sophisticated errors such as unkno)-.1 F(wn)-.25 E .252
-(hosts are not check)174 225 R 2.752(ed\). The)-.1 F .251
-(intent is for use when trying to accept mail from sys-)2.752 F
-(tems such as DECnet that routinely quote odd syntax such as)174 237 Q
-("49ers::ubell")214 253.2 Q 2.5(At)174 269.4 S
-(ypical usage is probably something lik)186.5 269.4 Q(e:)-.1 E
-(Kdequote dequote)214 285.6 Q(...)214 309.6 Q 88.19(R$\255 $:)214 333.6 R
-($\(dequote $1 $\))2.5 E(R$\255 $+)214 345.6 Q($: $>3 $1 $2)322 345.6 Q
-(Care must be tak)174 361.8 Q(en to pre)-.1 E -.15(ve)-.25 G(nt une).15 E
-(xpected results; for e)-.15 E(xample,)-.15 E("|someprogram < input > output")
-214 378 Q 1.31(will ha)174 394.2 R 1.61 -.15(ve q)-.2 H 1.31(uotes stripped, b)
-.15 F 1.31(ut the result is probably not what you had in mind.)-.2 F -.15(Fo)
-174 406.2 S(rtunately these cases are rare.).15 E .488
-(Most of these accept as ar)127 422.4 R .488
-(guments the same optional \215ags and a \214lename \(or a mapname for)-.18 F
-.31(NIS; the \214lename is the root of the database path, so that \231.db\232 \
-or some other e)102 434.4 R .31(xtension appropriate)-.15 F
-(for the database type will be added to get the actual database name\).)102
-446.4 Q(Kno)5 E(wn \215ags are:)-.25 E 58.86(\255o Indicates)102 462.6 R 1.147
-(that this map is optional \212 that is, if it cannot be opened, no error is)
-3.648 F(produced, and)174 474.6 Q/F2 10/Times-Italic@0 SF(sendmail)2.5 E F1
-(will beha)2.5 E .3 -.15(ve a)-.2 H 2.5(si).15 G 2.5(ft)333.9 474.6 S(he map e)
-342.51 474.6 Q(xisted b)-.15 E(ut w)-.2 E(as empty)-.1 E(.)-.65 E .647
-(\255N, \255O)102 490.8 R .647(If neither)174.647 490.8 R F0<ad4e>3.147 E F1
-(or)3.147 E F0<ad4f>3.147 E F1 .647(are speci\214ed,)3.147 F F2(sendmail)3.147
-E F1 .647(uses an adapti)3.147 F .947 -.15(ve a)-.25 H .648(lgorithm to decide)
-.15 F .108(whether or not to look for null bytes on the end of k)174 502.8 R
--.15(ey)-.1 G 2.608(s. It).15 F .107(starts by trying both; if)2.608 F .819
-(it \214nds an)174 514.8 R 3.319(yk)-.15 G 1.119 -.15(ey w)228.157 514.8 T .819
-(ith a null byte it ne).15 F -.15(ve)-.25 G 3.319(rt).15 G .82(ries ag)345.83
-514.8 R .82(ain without a null byte and vice)-.05 F -.15(ve)174 526.8 S 2.828
-(rsa. If).15 F F0<ad4e>2.828 E F1 .328(is speci\214ed it ne)2.828 F -.15(ve)
--.25 G 2.828(rt).15 G .328(ries without a null byte and if)311.696 526.8 R F0
-<ad4f>2.827 E F1 .327(is speci\214ed it)2.827 F(ne)174 538.8 Q -.15(ve)-.25 G
-2.886(rt).15 G .386(ries with a null byte.)201.476 538.8 R .386
-(Setting one of these can speed matches b)5.386 F .386(ut are ne)-.2 F -.15(ve)
--.25 G(r).15 E(necessary)174 550.8 Q 5.546(.I)-.65 G 3.046(fb)223.596 550.8 S
-(oth)234.972 550.8 Q F0<ad4e>3.046 E F1(and)3.046 E F0<ad4f>3.046 E F1 .545
-(are speci\214ed,)3.045 F F2(sendmail)3.045 E F1 .545(will ne)3.045 F -.15(ve)
--.25 G 3.045(rt).15 G .545(ry an)442.52 550.8 R 3.045(ym)-.15 G(atches)479.01
-550.8 Q(at all \212 that is, e)174 562.8 Q -.15(ve)-.25 G
-(rything will appear to f).15 E(ail.)-.1 E<ad61>102 579 Q F2(x)A F1 1.356
-(Append the string)174 579 R F2(x)3.856 E F1 1.357(on successful matches.)3.856
-F -.15(Fo)6.357 G 3.857(re).15 G 1.357(xample, the def)382.852 579 R(ault)-.1 E
-F2(host)3.857 E F1(map)3.857 E(appends a dot on successful matches.)174 591 Q
-60.53(\255f Do)102 607.2 R(not fold upper to lo)2.5 E
-(wer case before looking up the k)-.25 E -.15(ey)-.1 G(.)-.5 E 56.08
-(\255m Match)102 623.4 R .4(only \(without replacing the v)2.9 F 2.899
-(alue\). If)-.25 F .399(you only care about the e)2.899 F .399(xistence of)-.15
-F 7.306(ak)174 635.4 S 5.107 -.15(ey a)190.646 635.4 T 4.807(nd not the v).15 F
-4.807(alue \(as you might when searching the NIS map)-.25 F 1.947
-(\231hosts.byname\232 for e)174 647.4 R 1.947(xample\), this \215ag pre)-.15 F
--.15(ve)-.25 G 1.947(nts the map from substituting the).15 F -.25(va)174 659.4
-S 2.849(lue. Ho).25 F(we)-.25 E -.15(ve)-.25 G 1.149 -.4(r, T).15 H .349
-(he \255a ar).4 F .349(gument is still appended on a match, and the def)-.18 F
-.35(ault is)-.1 F(still tak)174 671.4 Q(en if the match f)-.1 E(ails.)-.1 E
-<ad6b>102 687.6 Q F2 -.1(ke)C(ycol)-.2 E F1(The k)174 687.6 Q .3 -.15(ey c)-.1
-H(olumn name \(for NIS+\) or number \(for te).15 E(xt lookups\).)-.15 E<ad76>
-102 703.8 Q F2(valcol)A F1(The v)174 703.8 Q
-(alue column name \(for NIS+\) or number \(for te)-.25 E(xt lookups\).)-.15 E
-EP
-%%Page: 50 45
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-50 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF<ad7a>102 96 Q/F2
-10/Times-Italic@0 SF(delim)A F1 .219(The column delimiter \(for te)174 96 R
-.219(xt lookups\).)-.15 F .218(It can be a single character or one of the)5.219
-F 1.825(special strings \231)174 108 R 1.825(\\n\232 or \231)1.666 F 1.826
-(\\t\232 to indicate ne)1.666 F 1.826(wline or tab respecti)-.25 F -.15(ve)-.25
-G(ly).15 E 6.826(.I)-.65 G 4.326(fo)465.784 108 S(mitted)478.44 108 Q(entirely)
-174 120 Q 2.5(,t)-.65 G(he column separator is an)211.68 120 Q 2.5(ys)-.15 G
-(equence of whitespace.)325.12 120 Q<ad73>102 136.2 Q F2(spacesub)A F1 -.15(Fo)
-174 136.2 S 3.101(rt).15 G .601(he dequote map only)193.621 136.2 R 3.101(,t)
--.65 G .601(he character to use to replace space characters after a)286.755
-136.2 R(successful dequote.)174 148.2 Q(The)127 164.4 Q F2(dbm)3.356 E F1 .856
-(map appends the strings \231.pag\232 and \231.dir\232 to the gi)3.356 F -.15
-(ve)-.25 G 3.356<6e8c>.15 G .856(lename; the tw)399.052 164.4 R(o)-.1 E F2(db)
-3.356 E F1(-based)A(maps append \231.db\232.)102 176.4 Q -.15(Fo)5 G 2.5(re).15
-G(xample, the map speci\214cation)206.4 176.4 Q -.15(Ku)142 192.6 S
-(ucp dbm \255o \255N /usr/lib/uucpmap).15 E .21
-(speci\214es an optional map named \231uucp\232 of class \231dbm\232; it al)102
-208.8 R -.1(wa)-.1 G .21(ys has null bytes at the end of e).1 F -.15(ve)-.25 G
-(ry).15 E(string, and the data is located in /usr/lib/uucpmap.{dir)102 220.8 Q
-(,pag}.)-.4 E 1.094(The program)127 237 R F2(mak)3.594 E(emap)-.1 E F1 1.094
-(\(8\) can be used to b)B 1.094(uild an)-.2 F 3.594(yo)-.15 G 3.594(ft)347.736
-237 S 1.095(he three database-oriented maps.)357.44 237 R(It)6.095 E(tak)102
-249 Q(es the follo)-.1 E(wing \215ags:)-.25 E 60.53(\255f Do)102 265.2 R
-(not fold upper to lo)2.5 E(wer case in the map.)-.25 E 56.64(\255N Include)102
-281.4 R(null bytes in k)2.5 E -.15(ey)-.1 G(s.).15 E 58.86(\255o Append)102
-297.6 R(to an e)2.5 E(xisting \(old\) \214le.)-.15 E 60.53(\255r Allo)102 313.8
-R 3.669(wr)-.25 G 1.169(eplacement of e)205.749 313.8 R 1.168(xisting k)-.15 F
--.15(ey)-.1 G 1.168(s; normally).15 F 3.668(,r)-.65 G 1.168(e-inserting an e)
-371.63 313.8 R 1.168(xisting k)-.15 F 1.468 -.15(ey i)-.1 H 3.668(sa).15 G(n)
-499 313.8 Q(error)174 325.8 Q(.)-.55 E 58.86(\255v Print)102 342 R
-(what is happening.)2.5 E(The)102 358.2 Q F2(sendmail)3.605 E F1 1.105
-(daemon does not ha)3.605 F 1.405 -.15(ve t)-.2 H 3.605(ob).15 G 3.605(er)
-272.975 358.2 S 1.106(estarted to read the ne)284.35 358.2 R 3.606(wm)-.25 G
-1.106(aps as long as you change)394.88 358.2 R
-(them in place; \214le locking is used so that the maps w)102 372.2 Q(on')-.1 E
-2.5(tb)-.18 G 2.5(er)336.71 372.2 S(ead while the)346.98 372.2 Q 2.5(ya)-.15 G
-(re being updated.)412.09 372.2 Q/F3 7/Times-Roman@0 SF(20)481.24 368.2 Q F1
-(Ne)127 388.4 Q 2.5(wc)-.25 G(lasses can be added in the routine)152.57 388.4 Q
-F0(setupmaps)2.5 E F1(in \214le)2.5 E F0(conf)2.5 E(.c)-.15 E F1(.)A F0 2.5
-(5.10. The)87 412.4 R(User Database)2.5 E F1 .108(If you ha)127 428.6 R .408
--.15(ve a ve)-.2 H .109(rsion of).15 F F2(sendmail)2.609 E F1 .109
-(with the user database package compiled in, the handling of)2.609 F
-(sender and recipient addresses is modi\214ed.)102 440.6 Q
-(The location of this database is controlled with the)127 456.8 Q F0
-(UserDatabaseSpec)2.5 E F1(option.)2.5 E F0 2.5(5.10.1. Structur)102 480.8 R
-2.5(eo)-.18 G 2.5(ft)182.92 480.8 S(he user database)192.08 480.8 Q F1
-(The database is a sorted \(BT)142 497 Q(ree-based\) structure.)-.35 E
-(User records are stored with the k)5 E -.15(ey)-.1 G(:).15 E F2(user)157 513.2
-Q(-name)-.2 E F0(:)A F2(\214eld-name)A F1 .128
-(The sorted database format ensures that user records are clustered together)
-117 529.4 R 5.128(.M)-.55 G .128(eta-information is)432.492 529.4 R(al)117
-541.4 Q -.1(wa)-.1 G(ys stored with a leading colon.).1 E
-(Field names de\214ne both the syntax and semantics of the v)142 557.6 Q 2.5
-(alue. De\214ned)-.25 F(\214elds include:)2.5 E 33.39(maildrop The)117 573.8 R
-(deli)4.872 E -.15(ve)-.25 G 2.372(ry address for this user).15 F 7.372(.T)-.55
-G 2.373(here may be multiple v)349.472 573.8 R 2.373(alues of this)-.25 F 2.675
-(record. In)189 585.8 R(particular)2.675 E 2.675(,m)-.4 G .175
-(ailing lists will ha)284.095 585.8 R .475 -.15(ve o)-.2 H(ne).15 E F2(maildr)
-2.675 E(op)-.45 E F1 .175(record for each user)2.675 F(on the list.)189 597.8 Q
-30.06(mailname The)117 614 R 1.026(outgoing mailname for this user)3.526 F
-6.026(.F)-.55 G 1.027(or each outgoing name, there should)353.336 614 R .08
-(be an appropriate)189 626 R F2(maildr)2.58 E(op)-.45 E F1 .08
-(record for that name to allo)2.58 F 2.58(wr)-.25 G .08(eturn mail.)422.38 626
-R .08(See also)5.08 F F2(:default:mailname)189 638 Q F1(.)A 25.62
-(mailsender Changes)117 654.2 R(an)3.447 E 3.447(ym)-.15 G .947
-(ail sent to this address to ha)252.404 654.2 R 1.248 -.15(ve t)-.2 H .948
-(he indicated en).15 F -.15(ve)-.4 G .948(lope sender).15 F(.)-.55 E 2.736
-(This is intended for mailing lists, and will normally be the name of an)189
-666.2 R .32 LW 76 675.8 72 675.8 DL 80 675.8 76 675.8 DL 84 675.8 80 675.8 DL
-88 675.8 84 675.8 DL 92 675.8 88 675.8 DL 96 675.8 92 675.8 DL 100 675.8 96
-675.8 DL 104 675.8 100 675.8 DL 108 675.8 104 675.8 DL 112 675.8 108 675.8 DL
-116 675.8 112 675.8 DL 120 675.8 116 675.8 DL 124 675.8 120 675.8 DL 128 675.8
-124 675.8 DL 132 675.8 128 675.8 DL 136 675.8 132 675.8 DL 140 675.8 136 675.8
-DL 144 675.8 140 675.8 DL 148 675.8 144 675.8 DL 152 675.8 148 675.8 DL 156
-675.8 152 675.8 DL 160 675.8 156 675.8 DL 164 675.8 160 675.8 DL 168 675.8 164
-675.8 DL 172 675.8 168 675.8 DL 176 675.8 172 675.8 DL 180 675.8 176 675.8 DL
-184 675.8 180 675.8 DL 188 675.8 184 675.8 DL 192 675.8 188 675.8 DL 196 675.8
-192 675.8 DL 200 675.8 196 675.8 DL 204 675.8 200 675.8 DL 208 675.8 204 675.8
-DL 212 675.8 208 675.8 DL 216 675.8 212 675.8 DL/F4 5/Times-Roman@0 SF(20)93.6
-686.2 Q/F5 8/Times-Roman@0 SF .466(That is, don')3.2 J 2.466(tc)-.144 G .466
-(reate ne)148.294 689.4 R 2.466(wm)-.2 G .466(aps and then use)188.122 689.4 R
-/F6 8/Times-Italic@0 SF(mv)2.466 E F5 .466(\(1\) to mo)B .706 -.12(ve t)-.12 H
-.466(hem into place.).12 F .465(Since the maps are already open the ne)4.466 F
-2.465(wm)-.2 G(aps)493.336 689.4 Q(will ne)72 699 Q -.12(ve)-.2 G 2(rb).12 G 2
-(es)109.896 699 S(een.)118.56 699 Q EP
-%%Page: 51 46
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-51)452.9 60 Q/F1 10/Times-Roman@0 SF .655
-(appropriate -request address.)189 96 R .656(It is v)5.656 F .656
-(ery similar to the o)-.15 F(wner)-.25 E(-)-.2 E/F2 10/Times-Italic@0 SF(list)A
-F1 .656(syntax in the)3.156 F(alias \214le.)189 108 Q 33.95(fullname The)117
-124.2 R(full name of the user)2.5 E(.)-.55 E(of)117 140.4 Q 13.66
-(\214ce-address The)-.25 F(of)2.5 E(\214ce address for this user)-.25 E(.)-.55
-E(of)117 156.6 Q 19.21(\214ce-phone The)-.25 F(of)2.5 E
-(\214ce phone number for this user)-.25 E(.)-.55 E(of)117 172.8 Q(\214ce-f)-.25
-E 30.98(ax The)-.1 F(of)2.5 E(\214ce F)-.25 E(AX number for this user)-.74 E(.)
--.55 E 13.96(home-address The)117 189 R(home address for this user)2.5 E(.)-.55
-E 19.51(home-phone The)117 205.2 R(home phone number for this user)2.5 E(.)-.55
-E(home-f)117 221.4 Q 31.28(ax The)-.1 F(home F)2.5 E(AX number for this user)
--.74 E(.)-.55 E 41.73(project A)117 237.6 R .856
-(\(short\) description of the project this person is af)3.356 F .855
-(\214liated with.)-.25 F .855(In the Uni-)5.855 F -.15(ve)189 249.6 S
-(rsity this is often just the name of their graduate advisor).15 E(.)-.55 E
-52.28(plan A)117 265.8 R
-(pointer to a \214le from which plan information can be g)2.5 E(athered.)-.05 E
-.924(As of this writing, only a fe)142 282 R 3.424(wo)-.25 G 3.424(ft)273.208
-282 S .925(hese \214elds are actually being used by)282.742 282 R F2(sendmail)
-3.425 E F1(:)A F2(mail-)3.425 E(dr)117 294 Q(op)-.45 E F1(and)2.5 E F2
-(mailname)2.5 E F1 5(.A)C F2(\214ng)211.54 294 Q(er)-.1 E F1
-(program that uses the other \214elds is planned.)2.5 E F0 2.5(5.10.2. User)102
-318 R(database semantics)2.5 E F1 .996(When the re)142 334.2 R .995
-(writing rules submit an address to the local mailer)-.25 F 3.495(,t)-.4 G .995
-(he user name is passed)408.93 334.2 R .78(through the alias \214le.)117 346.2
-R .781
-(If no alias is found \(or if the alias points back to the same address\), the)
-5.78 F 1.778(name \(with \231:maildrop\232 appended\) is then used as a k)117
-358.2 R 2.077 -.15(ey i)-.1 H 4.277(nt).15 G 1.777(he user database.)375.985
-358.2 R 1.777(If no match)6.777 F
-(occurs \(or if the maildrop points at the same address\), forw)117 370.2 Q
-(arding is tried.)-.1 E .55(If the \214rst tok)142 386.4 R .551(en of the user\
- name returned by ruleset 0 is an \231@\232 sign, the user database)-.1 F .626
-(lookup is skipped.)117 398.4 R .625
-(The intent is that the user database will act as a set of def)5.626 F .625
-(aults for a cluster)-.1 F 1.533(\(in our case, the Computer Science Di)117
-410.4 R 1.533(vision\); mail sent to a speci\214c machine should ignore)-.25 F
-(these def)117 422.4 Q(aults.)-.1 E .351
-(When mail is sent, the name of the sending user is look)142 438.6 R .351
-(ed up in the database.)-.1 F .351(If that user)5.351 F .04
-(has a \231mailname\232 record, the v)117 450.6 R .041
-(alue of that record is used as their outgoing name.)-.25 F -.15(Fo)5.041 G
-2.541(re).15 G .041(xample, I)466.189 450.6 R(might ha)117 462.6 Q .3 -.15
-(ve a r)-.2 H(ecord:).15 E 48.29(eric:mailname Eric.Allman@CS.Berk)157 478.8 R
-(ele)-.1 E -.65(y.)-.15 G(EDU).65 E(This w)117 495 Q
-(ould cause my outgoing mail to be sent as Eric.Allman.)-.1 E .52
-(If a \231maildrop\232 is found for the user)142 511.2 R 3.019(,b)-.4 G .519
-(ut no corresponding \231mailname\232 record e)299.686 511.2 R .519(xists, the)
--.15 F 1.127(record \231:def)117 523.2 R 1.127(ault:mailname\232 is consulted.)
--.1 F 1.127(If present, this is the name of a host to o)6.127 F -.15(ve)-.15 G
-1.128(rride the).15 F .625(local host.)117 535.2 R -.15(Fo)5.625 G 3.125(re).15
-G .625(xample, in our case we w)185.515 535.2 R .625
-(ould set it to \231CS.Berk)-.1 F(ele)-.1 E -.65(y.)-.15 G 3.125(EDU\232. The)
-.65 F(ef)3.125 E .625(fect is that)-.25 F(an)117 547.2 Q .881(yone kno)-.15 F
-.882(wn in the database gets their outgoing mail stamped as \231user@CS.Berk)
--.25 F(ele)-.1 E -.65(y.)-.15 G(EDU\232,).65 E -.2(bu)117 559.2 S 2.5(tp).2 G
-(eople not listed in the database use the local hostname.)137.08 559.2 Q F0 2.5
-(5.10.3. Cr)102 585.2 R(eating the database)-.18 E/F3 7/Times-Bold@0 SF(21)
-228.2 581.2 Q F1 .375(The user database is b)142 601.4 R .375(uilt from a te)
--.2 F .375(xt \214le using the)-.15 F F2(mak)2.875 E(emap)-.1 E F1 .375
-(utility \(in the distrib)2.875 F .375(ution in)-.2 F 1.039(the mak)117 613.4 R
-1.039(emap subdirectory\).)-.1 F 1.039(The te)6.039 F 1.038
-(xt \214le is a series of lines corresponding to userdb records;)-.15 F 1.588
-(each line has a k)117 625.4 R 1.889 -.15(ey a)-.1 H 1.589(nd a v).15 F 1.589
-(alue separated by white space.)-.25 F 1.589(The k)6.589 F 1.889 -.15(ey i)-.1
-H 4.089(sa).15 G -.1(lwa)421.943 625.4 S 1.589(ys in the format).1 F
-(described abo)117 637.4 Q .3 -.15(ve \212 f)-.15 H(or e).15 E(xample:)-.15 E
-(eric:maildrop)157 653.6 Q .448
-(This \214le is normally installed in a system directory; for e)117 669.8 R
-.447(xample, it might be called)-.15 F F2(/etc/user)2.947 E(db)-.37 E F1(.)A
-.32 LW 76 679.4 72 679.4 DL 80 679.4 76 679.4 DL 84 679.4 80 679.4 DL 88 679.4
-84 679.4 DL 92 679.4 88 679.4 DL 96 679.4 92 679.4 DL 100 679.4 96 679.4 DL 104
-679.4 100 679.4 DL 108 679.4 104 679.4 DL 112 679.4 108 679.4 DL 116 679.4 112
-679.4 DL 120 679.4 116 679.4 DL 124 679.4 120 679.4 DL 128 679.4 124 679.4 DL
-132 679.4 128 679.4 DL 136 679.4 132 679.4 DL 140 679.4 136 679.4 DL 144 679.4
-140 679.4 DL 148 679.4 144 679.4 DL 152 679.4 148 679.4 DL 156 679.4 152 679.4
-DL 160 679.4 156 679.4 DL 164 679.4 160 679.4 DL 168 679.4 164 679.4 DL 172
-679.4 168 679.4 DL 176 679.4 172 679.4 DL 180 679.4 176 679.4 DL 184 679.4 180
-679.4 DL 188 679.4 184 679.4 DL 192 679.4 188 679.4 DL 196 679.4 192 679.4 DL
-200 679.4 196 679.4 DL 204 679.4 200 679.4 DL 208 679.4 204 679.4 DL 212 679.4
-208 679.4 DL 216 679.4 212 679.4 DL/F4 5/Times-Roman@0 SF(21)93.6 689.8 Q/F5 8
-/Times-Roman@0 SF .289(These instructions are kno)3.2 J .289
-(wn to be incomplete.)-.2 F 2.289(Af)4.289 G .289(uture v)266.464 693 R .289
-(ersion of the user database is planned including things such as \214n-)-.12 F
-(ger service \212 and good documentation.)72 702.6 Q EP
-%%Page: 52 47
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-52 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.6 -.8(To m)117
-96 T(ak).8 E 2.5(et)-.1 G(he database v)156.65 96 Q
-(ersion of the map, run the program:)-.15 E(mak)157 112.2 Q
-(emap btree /etc/userdb)-.1 E(.db < /etc/userdb)-.4 E .077
-(Then create a con\214g \214le that uses this.)117 128.4 R -.15(Fo)5.077 G
-2.577(re).15 G .077(xample, using the V8 M4 con\214guration, include the)
-296.531 128.4 R(follo)117 140.4 Q(wing line in your .mc \214le:)-.25 E
-(de\214ne\(\222confUSERDB_SPEC\264, /etc/userdb)157 156.6 Q(.db\))-.4 E F0 2.5
-(6. O)72 184.8 R(THER CONFIGURA)-.4 E(TION)-.95 E F1 .907
-(There are some con\214guration changes that can be made by recompiling)112 201
-R/F2 10/Times-Italic@0 SF(sendmail)3.407 E F1 5.907(.T)C .906(his section)
-460.594 201 R 1.139
-(describes what changes can be made and what has to be modi\214ed to mak)87 213
-R 3.639(et)-.1 G 3.639(hem. In)403.894 213 R 1.139(most cases this)3.639 F
-(should be unnecessary unless you are porting)87 225 Q F2(sendmail)2.5 E F1
-(to a ne)2.5 E 2.5(we)-.25 G -.4(nv)349.76 225 S(ironment.).4 E F0 2.5(6.1. P)
-87 249 R(arameters in sr)-.1 E(c/Mak)-.18 E(e\214le)-.1 E F1 .92
-(These parameters are intended to describe the compilation en)127 265.2 R .92
-(vironment, not site polic)-.4 F 2.22 -.65(y, a)-.15 H(nd).65 E
-(should normally be de\214ned in src/Mak)102 277.2 Q(e\214le.)-.1 E 39.5
-(NDBM If)102 293.4 R .664(set, the ne)3.164 F 3.164(wv)-.25 G .664
-(ersion of the DBM library that allo)240.406 293.4 R .665
-(ws multiple databases will be)-.25 F 2.543(used. If)174 305.4 R .042
-(neither NDBM nor NEWDB are set, a much less ef)2.543 F .042
-(\214cient method of alias)-.25 F(lookup is used.)174 317.4 Q 32.84(NEWDB If)
-102 333.6 R .141(set, use the ne)2.641 F 2.642(wd)-.25 G .142
-(atabase package from Berk)254.436 333.6 R(ele)-.1 E 2.642(y\()-.15 G .142
-(from 4.4BSD\).)385.814 333.6 R .142(This package)5.142 F .267
-(is substantially f)174 345.6 R .267(aster than DBM or NDBM.)-.1 F .267
-(If NEWDB and NDBM are both set,)5.267 F F2(sendmail)174 357.6 Q F1
-(will read DBM \214les, b)2.5 E(ut will create and use NEWDB \214les.)-.2 E
-53.39(NIS Include)102 373.8 R .119(support for NIS.)2.619 F .119
-(If set together with)5.119 F F2(both)2.619 E F1 .119(NEWDB and NDBM,)2.619 F
-F2(sendmail)2.62 E F1 .947(will create both DBM and NEWDB \214les if and only \
-if an alias \214le includes the)174 385.8 R 3.409
-(substring \231/yp/\232 in the name.)174 397.8 R 3.409
-(This is intended for compatibility with Sun)8.409 F(Microsystems')174 409.8 Q
-F2(mkalias)2.5 E F1(program used on YP masters.)2.5 E 28.94(NISPLUS Compile)102
-426 R(in support for NIS+.)2.5 E 26.73(NETINFO Compile)102 442.2 R
-(in support for NetInfo \(NeXT stations\).)2.5 E 32.84(HESIOD Compile)102 458.4
-R(in support for Hesiod.)2.5 E(_P)102 474.6 Q -1.11(AT)-.92 G(H_SENDMAILCF)1.11
-E(The pathname of the sendmail.cf \214le.)174 486.6 Q(_P)102 502.8 Q -1.11(AT)
--.92 G(H_SENDMAILPID)1.11 E(The pathname of the sendmail.pid \214le.)174 514.8
-Q 1.44(There are also se)127 531 R -.15(ve)-.25 G 1.439
-(ral compilation \215ags to indicate the en).15 F 1.439
-(vironment such as \231_AIX3\232 and)-.4 F 2.5(\231_SCO_unix_\232. See)102 543
-R(the READ_ME \214le for the latest scoop on these \215ags.)2.5 E F0 2.5
-(6.2. P)87 567 R(arameters in sr)-.1 E(c/conf)-.18 E(.h)-.15 E F1 -.15(Pa)127
-583.2 S .895(rameters and compilation options are de\214ned in conf.h.).15 F
-.896(Most of these need not normally)5.895 F .193(be tweak)102 595.2 R .192
-(ed; common parameters are all in sendmail.cf.)-.1 F(Ho)5.192 E(we)-.25 E -.15
-(ve)-.25 G .992 -.4(r, t).15 H .192(he sizes of certain primiti).4 F .492 -.15
-(ve ve)-.25 H(c-).15 E(tors, etc., are included in this \214le.)102 607.2 Q
-(The numbers follo)5 E(wing the parameters are their def)-.25 E(ault v)-.1 E
-(alue.)-.25 E 1.247(This document is not the best source of information for co\
-mpilation \215ags in conf.h \212 see)127 623.4 R
-(src/READ_ME or src/conf.h itself.)102 635.4 Q 1.91(MAXLINE [2048])102 651.6 R
-1.909(The maximum line length of an)190.31 651.6 R 4.409(yi)-.15 G 1.909
-(nput line.)338.276 651.6 R 1.909(If message lines e)6.909 F 1.909(xceed this)
--.15 F .575(length the)188.4 663.6 R 3.075(yw)-.15 G .575
-(ill still be processed correctly; ho)243.84 663.6 R(we)-.25 E -.15(ve)-.25 G
-1.375 -.4(r, h).15 H .575(eader lines, con\214gura-).4 F
-(tion \214le lines, alias lines, etc., must \214t within this limit.)188.4
-675.6 Q(MAXN)102 691.8 Q(AME [256])-.35 E(The maximum length of an)9.82 E 2.5
-(yn)-.15 G(ame, such as a host or a user name.)309.63 691.8 Q .231(MAXPV [40])
-102 708 R .231(The maximum number of parameters to an)188.631 708 R 2.731(ym)
--.15 G(ailer)376.458 708 Q 5.231(.T)-.55 G .23(his limits the number of)407.519
-708 R .375(recipients that may be passed in one transaction.)188.4 720 R .376
-(It can be set to an)5.376 F 2.876(ya)-.15 G(rbitrary)474.01 720 Q EP
-%%Page: 53 48
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-53)452.9 60 Q/F1 10/Times-Roman@0 SF .876(number abo)188.4 96 R 1.176
--.15(ve a)-.15 H .876(bout 10, since).15 F/F2 10/Times-Italic@0 SF(sendmail)
-3.376 E F1 .876(will break up a deli)3.376 F -.15(ve)-.25 G .875
-(ry into smaller).15 F .886(batches as needed.)188.4 108 R 3.386(Ah)5.886 G
-.887(igher number may reduce load on your system, ho)285.804 108 R(w-)-.25 E
--2.15 -.25(ev e)188.4 120 T -.55(r.).25 G(MAXA)102 136.2 Q -.18(TO)-1.11 G
-2.559(M[).18 G 8.26(100] The)159.369 136.2 R .059
-(maximum number of atoms \(tok)2.559 F .058(ens\) in a single address.)-.1 F
--.15(Fo)5.058 G 2.558(re).15 G .058(xample, the)457.282 136.2 R
-(address \231eric@CS.Berk)188.4 148.2 Q(ele)-.1 E -.65(y.)-.15 G(EDU\232 is se)
-.65 E -.15(ve)-.25 G 2.5(na).15 G(toms.)367.93 148.2 Q .112(MAXMAILERS [25])102
-164.4 R .112(The maximum number of mailers that may be de\214ned in the con\
-\214guration \214le.).02 F(MAXR)102 180.6 Q .401(WSETS [200])-.55 F .401
-(The maximum number of re).01 F .401(writing sets that may be de\214ned.)-.25 F
-.4(The \214rst half of)5.4 F .034(these are reserv)188.4 192.6 R .034
-(ed for numeric speci\214cation \(e.g., `)-.15 F(`S92')-.74 E .035
-('\), while the upper half)-.74 F .492(are reserv)188.4 204.6 R .492
-(ed for auto-numbering \(e.g., `)-.15 F(`Sfoo')-.74 E 2.992('\). Thus,)-.74 F
-.492(with a v)2.992 F .491(alue of 200 an)-.25 F(attempt to use `)188.4 216.6 Q
-(`S99')-.74 E 2.5('w)-.74 G(ill succeed, b)284.13 216.6 Q(ut `)-.2 E(`S100')
--.74 E 2.5('w)-.74 G(ill f)388.82 216.6 Q(ail.)-.1 E(MAXPRIORITIES [25])102
-232.8 Q 2.481(The maximum number of v)188.4 244.8 R 2.482
-(alues for the \231Precedence:\232 \214eld that may be)-.25 F
-(de\214ned \(using the)188.4 256.8 Q F0(P)2.5 E F1(line in sendmail.cf\).)2.5 E
-(MAXUSERENVIR)102 273 Q(ON [100])-.4 E .399
-(The maximum number of items in the user en)188.4 285 R .399
-(vironment that will be passed to)-.4 F(subordinate mailers.)188.4 297 Q
-(MAXMXHOSTS [20])102 313.2 Q
-(The maximum number of MX records we will accept for an)188.4 325.2 Q 2.5(ys)
--.15 G(ingle host.)439.03 325.2 Q .712(MAXALIASDB [12])102 341.4 R .712
-(The maximum number of alias databases that can be open at an).58 F 3.213(yt)
--.15 G 3.213(ime. Note)461.347 341.4 R
-(that there may also be an open \214le limit.)188.4 353.4 Q(MAXMAPST)102 369.6
-Q -.4(AC)-.93 G 2.5(K[).4 G(12])184.28 369.6 Q 1.65
-(The maximum number of maps that may be "stack)188.4 381.6 R 1.65(ed" in a)-.1
-F F0(sequence)4.15 E F1(class)4.15 E(map.)188.4 393.6 Q(MAXMIMEARGS [20])102
-409.8 Q .718(The maximum number of ar)188.4 421.8 R .718
-(guments in a MIME Content-T)-.18 F .718(ype: header; addi-)-.8 F(tional ar)
-188.4 433.8 Q(guments will be ignored.)-.18 E(MAXMIMENESTING [20])102 450 Q .4
-(The maximum depth to which MIME messages may be nested \(that is, nested)188.4
-462 R 1.344
-(Message or Multipart documents; this does not limit the number of compo-)188.4
-474 R(nents in a single Multipart document\).)188.4 486 Q 2.851(An)102 502.2 S
-.351(umber of other compilation options e)117.071 502.2 R 2.851(xist. These)
--.15 F .35(specify whether or not speci\214c code should be)2.851 F
-(compiled in.)102 514.2 Q(Ones mark)5 E(ed with \207 are 0/1 v)-.1 E(alued.)
--.25 E 36.69(NETINET\207 If)102 530.4 R .829
-(set, support for Internet protocol netw)3.329 F .829(orking is compiled in.)
--.1 F(Pre)5.829 E .83(vious v)-.25 F(er)-.15 E(-)-.2 E .178(sions of)188.4
-542.4 R F2(sendmail)2.678 E F1 .178(referred to this as)2.678 F/F3 9
-/Times-Roman@0 SF -.36(DA)2.678 G(EMON).36 E F1 2.677(;t)C .177
-(his old usage is no)381.715 542.4 R 2.677(wi)-.25 G(ncorrect.)468.74 542.4 Q
-(Def)188.4 554.4 Q 1.87(aults on; turn it of)-.1 F 4.37(fi)-.25 G 4.37(nt)
-292.67 554.4 S 1.87(he Mak)304.82 554.4 R 1.87(e\214le if your system doesn')
--.1 F 4.37(ts)-.18 G 1.87(upport the)461.3 554.4 R(Internet protocols.)188.4
-566.4 Q 43.35(NETISO\207 If)102 582.6 R .143
-(set, support for ISO protocol netw)2.643 F .142
-(orking is compiled in \(it may be appropri-)-.1 F
-(ate to #de\214ne this in the Mak)188.4 594.6 Q(e\214le instead of conf.h\).)
--.1 E 63.35(LOG If)102 610.8 R .5(set, the)3 F F2(syslo)3 E(g)-.1 E F1 .5
-(routine in use at some sites is used.)3 F .5(This mak)5.5 F .5(es an informa-)
--.1 F .504(tional log record for each message processed, and mak)188.4 622.8 R
-.504(es a higher priority log)-.1 F .052(record for internal system errors.)
-188.4 634.8 R F0(STR)5.052 E(ONGL)-.3 E 2.552(YR)-.92 G(ECOMMENDED)389.682
-634.8 Q F1 2.553<8a69>2.552 G 2.553(fy)483.117 634.8 S(ou)494 634.8 Q -.1(wa)
-188.4 646.8 S(nt no logging, turn it of).1 E 2.5(fi)-.25 G 2.5(nt)301.66 646.8
-S(he con\214guration \214le.)311.94 646.8 Q(MA)102 663 Q 11.12
-(TCHGECOS\207 Compile)-1.11 F 3.555(in the code to do `)6.055 F 3.555
-(`fuzzy matching')-.74 F 6.055('o)-.74 G 6.055(nt)404.22 663 S 3.555
-(he GECOS \214eld in)418.055 663 R 2.5(/etc/passwd. This)188.4 675 R
-(also requires that the)2.5 E F0(MatchGECOS)2.5 E F1(option be turned on.)2.5 E
--.35(NA)102 691.2 S 13.15(MED_BIND\207 Compile).35 F .412
-(in code to use the Berk)2.912 F(ele)-.1 E 2.913(yI)-.15 G .413
-(nternet Name Domain \(BIND\) serv)342.405 691.2 R .413(er to)-.15 F(resolv)
-188.4 703.2 Q 2.5(eT)-.15 G(CP/IP host names.)225.74 703.2 Q EP
-%%Page: 54 49
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-54 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(NO)102 96 Q
-38.76(TUNIX If)-.4 F .248
-(you are using a non-UNIX mail format, you can set this \215ag to turn of)2.748
-F 2.747(fs)-.25 G(pe-)491.23 96 Q
-(cial processing of UNIX-style \231From \232 lines.)188.4 108 Q -.1(QU)102
-124.2 S 50.12(EUE This).1 F 1.559
-(\215ag should be set to compile in the queueing code.)4.059 F 1.56
-(If this is not set,)6.56 F
-(mailers must accept the mail immediately or it will be returned to the sender)
-188.4 136.2 Q(.)-.55 E 57.78(SMTP If)102 152.4 R .756
-(set, the code to handle user and serv)3.256 F .756
-(er SMTP will be compiled in.)-.15 F .756(This is)5.756 F 2.507
-(only necessary if your machine has some mailer that speaks SMTP \(this)188.4
-164.4 R(means most machines e)188.4 176.4 Q -.15(ve)-.25 G(rywhere\).).15 E
-39.45(USERDB\207 Include)102 192.6 R(the)3.449 E F0(experimental)3.449 E F1
-(Berk)3.449 E(ele)-.1 E 3.449(yu)-.15 G .949(ser information database package.)
-341.356 192.6 R(This)5.948 E .27(adds a ne)188.4 204.6 R 2.77(wl)-.25 G -2.15
--.25(ev e)238.67 204.6 T 2.77(lo).25 G 2.77(fl)262.7 204.6 S .27(ocal name e)
-271.58 204.6 R .27(xpansion between aliasing and forw)-.15 F 2.77(arding. It)
--.1 F(also uses the NEWDB package.)188.4 216.6 Q
-(This may change in future releases.)5 E(The follo)102 232.8 Q
-(wing options are normally turned on in per)-.25 E
-(-operating-system clauses in conf.h.)-.2 E(IDENTPR)102 249 Q -1.88 -.4(OT O)
--.4 H 19.61<8743>.4 G .376
-(ompile in the IDENT protocol as de\214ned in RFC 1413.)195.07 249 R .375
-(This def)5.375 F .375(aults on for)-.1 F 1.053(all systems e)188.4 261 R 1.053
-(xcept Ultrix, which apparently has the interesting \231feature\232 that)-.15 F
-.83(when it recei)188.4 273 R -.15(ve)-.25 G 3.33(sa\231).15 G .83
-(host unreachable\232 message it closes all open connections)270.18 273 R 1.921
-(to that host.)188.4 285 R 1.921(Since some \214re)6.921 F -.1(wa)-.25 G 1.922
-(ll g).1 F(ate)-.05 E -.1(wa)-.25 G 1.922(ys send this error code when you).1 F
-2.055
-(access an unauthorized port \(such as 113, used by IDENT\), Ultrix cannot)
-188.4 297 R(recei)188.4 309 Q .3 -.15(ve e)-.25 H(mail from such hosts.).15 E
-39.45(SYSTEM5 Set)102 325.2 R
-(all of the compilation parameters appropriate for System V)2.5 E(.)-1.29 E
-26.12(HASFLOCK\207 Use)102 341.4 R(Berk)2.844 E(ele)-.1 E(y-style)-.15 E F0
-(\215ock)2.844 E F1 .344(instead of System V)2.844 F F0(lockf)2.845 E F1 .345
-(to do \214le locking.)2.845 F .345(Due to)5.345 F .184
-(the highly unusual semantics of locks across forks in)188.4 353.4 R F0(lockf)
-2.684 E F1 2.684(,t)C .184(his should al)432.722 353.4 R -.1(wa)-.1 G(ys).1 E
-(be used if at all possible.)188.4 365.4 Q(HASINITGR)102 381.6 Q 4.86(OUPS Set)
--.4 F 1.284(this if your system has the)3.783 F/F2 10/Times-Italic@0 SF(initgr)
-3.784 E(oups\(\))-.45 E F1 1.284(call \(if you ha)3.784 F 1.584 -.15(ve m)-.2 H
-1.284(ultiple group).15 F 4.417(support\). This)188.4 393.6 R 1.917(is the def)
-4.417 F 1.917(ault if SYSTEM5 is)-.1 F F2(not)4.416 E F1 1.916
-(de\214ned or if you are on)4.416 F(HPUX.)188.4 405.6 Q(HASUN)102 421.8 Q 27.59
-(AME Set)-.35 F 1.148(this if you ha)3.648 F 1.448 -.15(ve t)-.2 H(he).15 E F2
-(uname)3.648 E F1 1.149(\(2\) system call \(or corresponding library rou-)B 2.5
-(tine\). Set)188.4 433.8 R(by def)2.5 E(ault if SYSTEM5 is set.)-.1 E(HASGETDT)
-102 450 Q(ABLESIZE)-.93 E(Set this if you ha)188.4 462 Q .3 -.15(ve t)-.2 H(he)
-.15 E F2 -.1(ge)2.5 G(tdtablesize).1 E F1(\(2\) system call.)A(HASW)102 478.2 Q
-22.89(AITPID Set)-1.2 F(this if you ha)2.5 E .3 -.15(ve t)-.2 H(he).15 E F2
-(haswaitpid)2.5 E F1(\(2\) system call.)A 37.22(SFS_TYPE The)102 494.4 R .517
-(mechanism that can be used to get \214le system capacity information.)3.017 F
-(The)5.516 E -.25(va)188.4 506.4 S .214(lues can be one of SFS_UST).25 F 2.435
--1.11(AT \()-.93 H .215(use the ustat\(2\) syscall\), SFS_4ARGS \(use)1.11 F
-.415(the four ar)188.4 518.4 R .415
-(gument statfs\(2\) syscall\), SFS_VFS \(use the tw)-.18 F 2.915(oa)-.1 G -.18
-(rg)435.165 518.4 S .415(ument statfs\(2\)).18 F .716
-(syscall including <sys/vfs.h>\), SFS_MOUNT \(use the tw)188.4 530.4 R 3.217
-(oa)-.1 G -.18(rg)434.863 530.4 S .717(ument statfs\(2\)).18 F 4.32
-(syscall including <sys/mount.h>\), SFS_ST)188.4 542.4 R -1.11(AT)-.93 G 4.32
-(FS \(use the tw)1.11 F 6.82(oa)-.1 G -.18(rg)470.85 542.4 S(ument).18 E 1.108
-(statfs\(2\) syscall including <sys/statfs.h>\), SFS_ST)188.4 554.4 R -1.11(AT)
--.93 G 1.109(VFS \(use the tw)1.11 F 3.609(oa)-.1 G -.18(rg)487.52 554.4 S(u-)
-.18 E 1.511
-(ment statfs\(2\) syscall including <sys/statvfs.h>\), or SFS_NONE \(no w)188.4
-566.4 R 1.511(ay to)-.1 F(get this information\).)188.4 578.4 Q 40.57
-(LA_TYPE The)102 594.6 R(load a)2.5 E -.15(ve)-.2 G(rage type.).15 E
-(Details are described belo)5 E -.65(w.)-.25 G .342(The are se)102 610.8 R -.15
-(ve)-.25 G .342(ral b).15 F .342(uilt-in w)-.2 F .342
-(ays of computing the load a)-.1 F -.15(ve)-.2 G(rage.).15 E F2(Sendmail)5.342
-E F1 .343(tries to auto-con\214gure them)2.842 F .267
-(based on imperfect guesses; you can select one using the)102 622.8 R F2(cc)
-2.766 E F1(option)2.766 E F0(\255DLA_TYPE=)2.766 E F2(type)A F1 2.766(,w)C
-(here)467.364 622.8 Q F2(type)2.766 E F1(is:)102 634.8 Q 48.91(LA_INT The)102
-651 R -.1(ke)3.452 G .952(rnel stores the load a).1 F -.15(ve)-.2 G .952
-(rage in the k).15 F .952(ernel as an array of long inte)-.1 F(gers.)-.15 E
-(The actual v)188.4 663 Q(alues are scaled by a f)-.25 E(actor FSCALE \(def)-.1
-E(ault 256\).)-.1 E(LA_SHOR)102 679.2 Q 35.89(TT)-.6 G .794(he k)194.51 679.2 R
-.794(ernel stores the load a)-.1 F -.15(ve)-.2 G .794(rage in the k).15 F .793
-(ernel as an array of short inte)-.1 F(gers.)-.15 E(The actual v)188.4 691.2 Q
-(alues are scaled by a f)-.25 E(actor FSCALE \(def)-.1 E(ault 256\).)-.1 E
-(LA_FLO)102 707.4 Q 37.03 -1.11(AT T)-.35 H .088(he k)1.11 F .088
-(ernel stores the load a)-.1 F -.15(ve)-.2 G .089(rage in the k).15 F .089
-(ernel as an array of double precision)-.1 F(\215oats.)188.4 719.4 Q EP
-%%Page: 55 50
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-55)452.9 60 Q/F1 10/Times-Roman@0 SF(LA_MA)102 96 Q 35.97(CH Use)-.4 F
-(MA)2.5 E(CH-style load a)-.4 E -.15(ve)-.2 G(rages.).15 E 39.45(LA_SUBR Call)
-102 112.2 R(the)2.5 E/F2 10/Times-Italic@0 SF -.1(ge)2.5 G(tloadavg).1 E F1
-(routine to get the load a)2.5 E -.15(ve)-.2 G(rage as an array of doubles.).15
-E(LA_ZER)102 128.4 Q 42.36(OA)-.4 G -.1(lwa)195.62 128.4 S
-(ys return zero as the load a).1 E -.15(ve)-.2 G 2.5(rage. This).15 F(is the f)
-2.5 E(allback case.)-.1 E .494(If type)102 144.6 R/F3 9/Times-Roman@0 SF
-(LA_INT)2.994 E F1(,)A F3(LA_SHOR)2.994 E(T)-.54 E F1 2.994(,o)C(r)224.806
-144.6 Q F3(LA_FLO)2.993 E -.999(AT)-.315 G F1 .493
-(is speci\214ed, you may also need to specify)3.992 F F3(_P)2.993 E -.999(AT)
--.828 G(H_UNIX).999 E F1 .948(\(the path to your system binary\) and)102 156.6
-R F3(LA_A)3.448 E(VENR)-1.215 E(UN)-.36 E F1 .949(\(the name of the v)3.448 F
-.949(ariable containing the load)-.25 F -2.25 -.2(av e)102 168.6 T
-(rage in the k).2 E(ernel; usually \231_a)-.1 E -.15(ve)-.2 G
-(nrun\232 or \231a).15 E -.15(ve)-.2 G(nrun\232\).).15 E F0 2.5
-(6.3. Con\214guration)87 192.6 R(in sr)2.5 E(c/conf)-.18 E(.c)-.15 E F1
-(The follo)127 208.8 Q(wing changes can be made in conf.c.)-.25 E F0 2.5
-(6.3.1. Built-in)102 232.8 R(Header Semantics)2.5 E F1 1.248
-(Not all header semantics are de\214ned in the con\214guration \214le.)142 249
-R 1.247(Header lines that should)6.247 F .305(only be included by certain mail\
-ers \(as well as other more obscure semantics\) must be speci\214ed)117 261 R
-.047(in the)117 273 R F2(HdrInfo)2.547 E F1 .047(table in)2.547 F F2(conf)2.547
-E(.c)-.15 E F1 5.047(.T)C .046
-(his table contains the header name \(which should be in all lo)246.842 273 R
-(wer)-.25 E(case\) and a set of header control \215ags \(described belo)117 285
-Q(w\), The \215ags are:)-.25 E(H_A)117 301.2 Q 30.97(CHECK Normally)-.4 F .007
-(when the check is made to see if a header line is compatible with)2.507 F
-2.941(am)203.4 313.2 S(ailer)218.561 313.2 Q(,)-.4 E F2(sendmail)2.941 E F1
-.441(will not delete an e)2.941 F .441(xisting line.)-.15 F .44
-(If this \215ag is set,)5.441 F F2(send-)2.94 E(mail)203.4 325.2 Q F1 .152
-(will delete e)2.652 F -.15(ve)-.25 G 2.652(ne).15 G .152
-(xisting header lines.)293.998 325.2 R .152
-(That is, if this bit is set and the)5.152 F 1.425(mailer does not ha)203.4
-337.2 R 1.725 -.15(ve \215)-.2 H 1.425
-(ag bits set that intersect with the required mailer).15 F 2.204
-(\215ags in the header de\214nition in sendmail.cf, the header line is)203.4
-349.2 R F2(always)4.704 E F1(deleted.)203.4 361.2 Q 51.13(H_EOH If)117 377.4 R
-.206(this header \214eld is set, treat it lik)2.706 F 2.706(eab)-.1 G .206
-(lank line, i.e., it will signal the end)363.95 377.4 R
-(of the header and the be)203.4 389.4 Q(ginning of the message te)-.15 E(xt.)
--.15 E 39.45(H_FORCE Add)117 405.6 R 2.038(this header entry e)4.538 F -.15(ve)
--.25 G 4.538(ni).15 G 4.538(fo)326.22 405.6 S 2.038(ne e)339.088 405.6 R 2.039
-(xisted in the message before.)-.15 F 2.039(If a)7.039 F 2.189
-(header entry does not ha)203.4 417.6 R 2.488 -.15(ve t)-.2 H 2.188
-(his bit set,).15 F F2(sendmail)4.688 E F1 2.188(will not add another)4.688 F
-.62(header line if a header line of this name already e)203.4 429.6 R 3.12
-(xisted. This)-.15 F -.1(wo)3.12 G .62(uld nor).1 F(-)-.2 E
-(mally be used to stamp the message by e)203.4 441.6 Q -.15(ve)-.25 G
-(ryone who handled it.).15 E(H_TRA)117 457.8 Q 39.3(CE If)-.4 F 1.044
-(set, this is a timestamp \(trace\) \214eld.)3.544 F 1.043
-(If the number of trace \214elds in a)6.043 F .705(message e)203.4 469.8 R .705
-(xceeds a preset amount the message is returned on the assump-)-.15 F
-(tion that it has an aliasing loop.)203.4 481.8 Q 46.67(H_RCPT If)117 498 R
-.332(set, this \214eld contains recipient addresses.)2.833 F .332
-(This is used by the)5.332 F F0<ad74>2.832 E F1 .332(\215ag to)2.832 F 1.349
-(determine who to send to when it is collecting recipients from the mes-)203.4
-510 R(sage.)203.4 522 Q(H_FR)117 538.2 Q 43.74(OM This)-.4 F 1.673
-(\215ag indicates that this \214eld speci\214es a sender)4.174 F 6.673(.T)-.55
-G 1.673(he order of these)432.061 538.2 R .898(\214elds in the)203.4 550.2 R F2
-(HdrInfo)3.398 E F1 .898(table speci\214es)3.398 F F2(sendmail)3.398 E F1 1.998
--.55('s p)D .898(reference for which \214eld).55 F
-(to return error messages to.)203.4 562.2 Q(H_ERR)117 578.4 Q(ORST)-.4 E 22.53
-(OA)-.18 G(ddresses in this header should recei)210.62 578.4 Q .3 -.15(ve e)
--.25 H(rror messages.).15 E 52.79(H_CTE This)117 594.6 R(header is a Content-T)
-2.5 E(ransfer)-.35 E(-Encoding header)-.2 E(.)-.55 E 40.01(H_CTYPE This)117
-610.8 R(header is a Content-T)2.5 E(ype header)-.8 E(.)-.55 E(H_STRIPV)117 627
-Q 25.25(AL Strip)-1.35 F(the v)2.5 E(alue from the header \(for Bcc:\).)-.25 E
-(Let')117 643.2 Q 2.5(sl)-.55 G(ook at a sample)142.28 643.2 Q F2(HdrInfo)2.5 E
-F1(speci\214cation:)2.5 E EP
-%%Page: 56 51
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-56 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(struct hdrinfo)
-157 96 Q(HdrInfo[] =)295.76 96 Q({)157 108 Q
-(/* originator \214elds, most to least signi\214cant)189.5 120 Q(*/)5 E 52.29
-("resent-sender", H_FR)177 132 R(OM,)-.4 E 58.95("resent-from", H_FR)177 144 R
-(OM,)-.4 E 79.5("sender", H_FR)177 156 R(OM,)-.4 E 86.16("from", H_FR)177 168 R
-(OM,)-.4 E 66.72("full-name", H_A)177 180 R(CHECK,)-.4 E 71.17
-("errors-to", H_FR)177 192 R -1.667(OM | H_ERR)-.4 F(ORST)-.4 E(O,)-.18 E
-(/* destination \214elds */)189.5 204 Q 97.82("to", H_RCPT)177 216 R(,)-.74 E
-70.61("resent-to", H_RCPT)177 228 R(,)-.74 E 96.72("cc", H_RCPT)177 240 R(,)
--.74 E 91.72("bcc", H_RCPT)177 252 R .833(|H).833 G(_STRIPV)-.833 E(AL,)-1.35 E
-(/* message identi\214cation and control */)189.5 264 Q 71.72
-("message", H_EOH,)177 276 R("te)177 288 Q 90.75(xt", H_EOH,)-.15 F
-(/* trace \214elds */)189.5 300 Q("recei)177 312 Q -.15(ve)-.25 G 72.13
-(d", H_TRA).15 F -1.667(CE | H_FORCE,)-.4 F(/* miscellaneous \214elds */)189.5
-324 Q("content-transfer)177 336 Q 2.5(-encoding", H_CTE,)-.2 F 55.61
-("content-type", H_CTYPE,)177 348 R 87.1(NULL, 0,)177 372 R(};)157 384 Q 2.435
-(This structure indicates that the \231T)117 400.2 R 2.435
-(o:\232, \231Resent-T)-.8 F 2.435
-(o:\232, and \231Cc:\232 \214elds all specify recipient)-.8 F 3.161
-(addresses. An)117 412.2 R 3.161<7999>-.15 G .662(Full-Name:\232 \214eld will \
-be deleted unless the required mailer \215ag \(indicated in)188.152 412.2 R
-.246(the con\214guration \214le\) is speci\214ed.)117 424.2 R .245
-(The \231Message:\232 and \231T)5.246 F -.15(ex)-.7 G .245
-(t:\232 \214elds will terminate the header;).15 F 1.936
-(these are used by random dissenters around the netw)117 436.2 R 1.936(ork w)
--.1 F 4.436(orld. The)-.1 F(\231Recei)4.436 E -.15(ve)-.25 G 1.937
-(d:\232 \214eld will).15 F(al)117 448.2 Q -.1(wa)-.1 G
-(ys be added, and can be used to trace messages.).1 E .446
-(There are a number of important points here.)142 464.4 R .445
-(First, header \214elds are not added automati-)5.446 F .656
-(cally just because the)117 476.4 R 3.156(ya)-.15 G .656(re in the)216.674
-476.4 R/F2 10/Times-Italic@0 SF(HdrInfo)3.157 E F1 .657(structure; the)3.157 F
-3.157(ym)-.15 G .657(ust be speci\214ed in the con\214guration)358.225 476.4 R
-.728(\214le in order to be added to the message.)117 488.4 R(An)5.727 E 3.227
-(yh)-.15 G .727(eader \214elds mentioned in the con\214guration \214le)312.988
-488.4 R -.2(bu)117 500.4 S 3.24(tn).2 G .74(ot mentioned in the)137.82 500.4 R
-F2(HdrInfo)3.24 E F1 .74(structure ha)3.24 F 1.04 -.15(ve d)-.2 H(ef).15 E .74
-(ault processing performed; that is, the)-.1 F 3.24(ya)-.15 G(re)496.23 500.4 Q
-1.375(added unless the)117 512.4 R 3.875(yw)-.15 G 1.375
-(ere in the message already)201.795 512.4 R 6.375(.S)-.65 G 1.374(econd, the)
-326.6 512.4 R F2(HdrInfo)3.874 E F1 1.374(structure only speci\214es)3.874 F
-.324
-(cliched processing; certain headers are processed specially by ad hoc code re)
-117 524.4 R -.05(ga)-.15 G .325(rdless of the sta-).05 F .481
-(tus speci\214ed in)117 536.4 R F2(HdrInfo)2.981 E F1 5.481(.F)C .481(or e)
-226.554 536.4 R .481
-(xample, the \231Sender:\232 and \231From:\232 \214elds are al)-.15 F -.1(wa)
--.1 G .48(ys scanned on).1 F(ARP)117 550.4 Q .751
-(ANET mail to determine the sender)-.92 F/F3 7/Times-Roman@0 SF(22)282.315
-546.4 Q F1 3.251(;t)289.315 550.4 S .75
-(his is used to perform the \231return to sender\232 func-)298.126 550.4 R
-2.976(tion. The)117 562.4 R .476(\231From:\232 and \231Full-Name:\232 \214elds\
- are used to determine the full name of the sender if)2.976 F
-(possible; this is stored in the macro)117 574.4 Q F0($x)2.5 E F1
-(and used in a number of w)2.5 E(ays.)-.1 E F0 2.5(6.3.2. Restricting)102 598.4
-R(Use of Email)2.5 E F1 .15
-(If it is necessary to restrict mail through a relay)142 614.6 R 2.649(,t)-.65
-G(he)339.755 614.6 Q F2 -.15(ch)2.649 G(ec).15 E(kcompat)-.2 E F1 .149
-(routine can be modi\214ed.)2.649 F .163(This routine is called for e)117 626.6
-R -.15(ve)-.25 G .163(ry recipient address.).15 F .163(It returns an e)5.163 F
-.163(xit status indicating the status of)-.15 F .895(the message.)117 638.6 R
-.895(The status)5.895 F/F4 9/Times-Roman@0 SF(EX_OK)3.395 E F1 .895
-(accepts the address,)3.395 F F4(EX_TEMPF)3.395 E(AIL)-.666 E F1 .895
-(queues the message for a)3.395 F .263(later try)117 650.6 R 2.763(,a)-.65 G
-.263(nd other v)157.696 650.6 R .264(alues \(commonly)-.25 F F4(EX_UN)2.764 E
--1.215(AVA)-.315 G(ILABLE)1.215 E F1 2.764(\)r)C .264(eject the message.)
-358.372 650.6 R .264(It is up to)5.264 F F2 -.15(ch)2.764 G(ec).15 E(k-)-.2 E
-(compat)117 662.6 Q F1 2.477(to print an error message \(using)4.978 F F2(usr)
-4.977 E(err)-.37 E F1 4.977(\)i)C 4.977(ft)331.418 662.6 S 2.477
-(he message is rejected.)342.505 662.6 R -.15(Fo)7.477 G 4.977(re).15 G
-(xample,)472.06 662.6 Q .32 LW 76 672.2 72 672.2 DL 80 672.2 76 672.2 DL 84
-672.2 80 672.2 DL 88 672.2 84 672.2 DL 92 672.2 88 672.2 DL 96 672.2 92 672.2
-DL 100 672.2 96 672.2 DL 104 672.2 100 672.2 DL 108 672.2 104 672.2 DL 112
-672.2 108 672.2 DL 116 672.2 112 672.2 DL 120 672.2 116 672.2 DL 124 672.2 120
-672.2 DL 128 672.2 124 672.2 DL 132 672.2 128 672.2 DL 136 672.2 132 672.2 DL
-140 672.2 136 672.2 DL 144 672.2 140 672.2 DL 148 672.2 144 672.2 DL 152 672.2
-148 672.2 DL 156 672.2 152 672.2 DL 160 672.2 156 672.2 DL 164 672.2 160 672.2
-DL 168 672.2 164 672.2 DL 172 672.2 168 672.2 DL 176 672.2 172 672.2 DL 180
-672.2 176 672.2 DL 184 672.2 180 672.2 DL 188 672.2 184 672.2 DL 192 672.2 188
-672.2 DL 196 672.2 192 672.2 DL 200 672.2 196 672.2 DL 204 672.2 200 672.2 DL
-208 672.2 204 672.2 DL 212 672.2 208 672.2 DL 216 672.2 212 672.2 DL/F5 5
-/Times-Roman@0 SF(22)93.6 682.6 Q/F6 8/Times-Roman@0 SF(Actually)3.2 I 2.631
-(,t)-.52 G .631
-(his is no longer true in SMTP; this information is contained in the en)132.487
-685.8 R -.12(ve)-.32 G 2.632(lope. The).12 F .632(older ARP)2.632 F .632
-(ANET protocols did)-.736 F(not completely distinguish en)72 695.4 Q -.12(ve)
--.32 G(lope from header).12 E(.)-.44 E EP
-%%Page: 57 52
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-57)452.9 60 Q/F1 10/Times-Italic@0 SF -.15(ch)117 96 S(ec).15 E
-(kcompat)-.2 E/F2 10/Times-Roman@0 SF(could read:)2.5 E/F3 9/Times-Roman@0 SF
-(int)157 111 Q(checkcompat\(to, e\))157 121.8 Q(re)175 132.6 Q
-(gister ADDRESS *to;)-.135 E(re)175 143.4 Q(gister ENVELOPE *e;)-.135 E({)157
-154.2 Q(re)175 165 Q(gister ST)-.135 E(AB *s;)-.837 E 2.25(s=s)175 186.6 S
-(tab\("pri)191.578 186.6 Q -.225(va)-.225 G(te", ST_MAILER, ST_FIND\);).225 E
-(if \(s != NULL && e\255>e_from.q_mailer != LocalMailer &&)175 197.4 Q
-(to->q_mailer == s->s_mailer\))184 208.2 Q({)175 219 Q(usrerr\("No pri)193
-229.8 Q -.225(va)-.225 G(te net mail allo).225 E(wed through this machine"\);)
--.225 E(return \(EX_UN)193 240.6 Q -1.215(AVA)-.315 G(ILABLE\);)1.215 E(})175
-251.4 Q(if \(MsgSize > 50000 && bitnset\(M_LOCALMAILER, to\255>q_mailer\)\))175
-262.2 Q({)175 273 Q(usrerr\("Message too lar)193 283.8 Q(ge for non-local deli)
--.162 E -.135(ve)-.225 G(ry"\);).135 E(e\255>e_\215ags |= EF_NORETURN;)193
-294.6 Q(return \(EX_UN)193 305.4 Q -1.215(AVA)-.315 G(ILABLE\);)1.215 E(})175
-316.2 Q(return \(EX_OK\);)175 327 Q(})157 337.8 Q F2 5.146(This w)117 354 R
-5.147(ould reject messages greater than 50000 bytes unless the)-.1 F 7.647(yw)
--.15 G 5.147(ere local.)436.506 354 R(The)488.45 354 Q F1(EF_NORETURN)117 366 Q
-F2 .942(\215ag can be set in)3.442 F F1(e)3.441 E/F4 10/Symbol SF<ae>A F1
-(e_\215a)A(gs)-.1 E F2 .941(to suppress the return of the actual body of the)
-3.441 F .128(message in the error return.)117 378 R .129
-(The actual use of this routine is highly dependent on the implemen-)5.129 F
-(tation, and use should be limited.)117 390 Q F0 2.5(6.3.3. Load)102 414 R -.6
--1(Av e)2.5 H(rage Computation)1 E F2 .18(The routine)142 430.2 R F1 -.1(ge)
-2.68 G(tla).1 E F2 .18
-(should return an approximation of the current system load a)2.68 F -.15(ve)-.2
-G .18(rage as an).15 F(inte)117 442.2 Q(ger)-.15 E 5(.T)-.55 G(here are se)
-157.68 442.2 Q -.15(ve)-.25 G(ral v).15 E
-(ersions included on compilation \215ags as described abo)-.15 E -.15(ve)-.15 G
-(.).15 E F0 2.5(6.3.4. New)102 466.2 R(Database Map Classes)2.5 E F2(Ne)142
-482.4 Q 2.875(wk)-.25 G .675 -.15(ey m)168.405 482.4 T .375(aps can be added b\
-y creating a class initialization function and a lookup func-).15 F 2.5
-(tion. These)117 494.4 R(are then added to the routine)2.5 E F1(setupmaps.)2.5
-E F2(The initialization function is called as)142 510.6 Q F1(xxx)157 526.8 Q F2
-(_map_init\(MAP *map, char *mapname, char *ar)A(gs\))-.18 E(The)117 543 Q F1
-(map)2.555 E F2 .055(is an internal data structure.)2.555 F(The)5.055 E F1
-(mapname)2.555 E F2 .054(is the name of the map \(used for error mes-)2.554 F
-2.819(sages\). The)117 555 R F1(ar)2.819 E(gs)-.37 E F2 .32(is a pointer to th\
-e rest of the con\214guration \214le line; \215ags and \214lenames can be)2.819
-F -.15(ex)117 567 S .675(tracted from this line.).15 F .675
-(The initialization function must return)5.675 F F3(TR)3.175 E(UE)-.36 E F2
-.674(if it successfully opened)3.174 F(the map,)117 579 Q F3 -.666(FA)2.5 G
-(LSE).666 E F2(otherwise.)2.5 E(The lookup function is called as)142 595.2 Q F1
-(xxx)157 611.4 Q F2(_map_lookup\(MAP *map, char b)A(uf[], int b)-.2 E
-(ufsize, char **a)-.2 E 1.3 -.65(v, i)-.2 H(nt *statp\)).65 E(The)117 627.6 Q
-F1(map)3.475 E F2 .975(de\214nes the map internally)3.475 F 5.975(.T)-.65 G
-.975(he parameters)277.18 627.6 R F1 -.2(bu)3.475 G(f).2 E F2(and)3.475 E F1
--.2(bu)3.475 G(fsize).2 E F2(ha)3.476 E 1.276 -.15(ve t)-.2 H .976(he input k)
-.15 F -.15(ey)-.1 G 5.976(.T)-.5 G(his)492.33 627.6 Q .043
-(may be \(and often is\) used destructi)117 639.6 R -.15(ve)-.25 G(ly).15 E
-5.043(.T)-.65 G(he)289.831 639.6 Q F1(av)2.543 E F2 .043(is a list of ar)2.543
-F .042(guments passed in from the re)-.18 F(write)-.25 E 3.654(line. The)117
-651.6 R 1.154(lookup function should return a pointer to the ne)3.654 F 3.655
-(wv)-.25 G 3.655(alue. IF)378.335 651.6 R 1.155(the map lookup f)3.655 F(ails,)
--.1 E F1(*statp)117 663.6 Q F2 1.272(should be set to an e)3.772 F 1.272
-(xit status code; in particular)-.15 F 3.772(,i)-.4 G 3.771(ts)357.652 663.6 S
-1.271(hould be set to)368.093 663.6 R F3(EX_TEMPF)3.771 E(AIL)-.666 E F2(if)
-3.771 E(reco)117 675.6 Q -.15(ve)-.15 G(ry is to be attempted by the higher le)
-.15 E -.15(ve)-.25 G 2.5(lc).15 G(ode.)308.76 675.6 Q EP
-%%Page: 58 53
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-58 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E 2.5(6.3.5. Queueing)102 96 R(Function)
-2.5 E/F1 10/Times-Roman@0 SF .782(The routine)142 112.2 R/F2 10/Times-Italic@0
-SF(shouldqueue)3.282 E F1 .783
-(is called to decide if a message should be queued or processed)3.283 F
-(immediately)117 124.2 Q 6.619(.T)-.65 G 1.618
-(ypically this compares the message priority to the current load a)180.779
-124.2 R -.15(ve)-.2 G 4.118(rage. The).15 F(def)117 136.2 Q
-(ault de\214nition is:)-.1 E(bool)157 152.4 Q(shouldqueue\(pri, ctime\))157
-164.4 Q(long pri;)175 176.4 Q(time_t ctime;)175 188.4 Q({)157 200.4 Q
-(if \(CurrentLA < QueueLA\))175 212.4 Q(return \(F)193 224.4 Q(ALSE\);)-.74 E
-(return \(pri > \(QueueF)175 236.4 Q
-(actor / \(CurrentLA \255 QueueLA + 1\)\)\);)-.15 E(})157 248.4 Q 2.062
-(If the current load a)117 264.6 R -.15(ve)-.2 G 2.062(rage \(global v).15 F
-(ariable)-.25 E F2(Curr)4.562 E(entLA)-.37 E F1 4.562(,w)C 2.062
-(hich is set before this function is)361.636 264.6 R 1.058
-(called\) is less than the lo)117 276.6 R 3.558(wt)-.25 G 1.058
-(hreshold load a)234.198 276.6 R -.15(ve)-.2 G 1.058(rage \(option).15 F F0(x)
-3.557 E F1 3.557(,v)C(ariable)375.526 276.6 Q F2(QueueLA)3.557 E F1(\),)A F2
-(shouldqueue)3.557 E F1(returns)117 288.6 Q/F3 9/Times-Roman@0 SF -.666(FA)
-2.586 G(LSE).666 E F1 .086(immediately \(that is, it should)2.586 F F2(not)
-2.586 E F1 2.586(queue\). If)2.586 F .086(the current load a)2.586 F -.15(ve)
--.2 G .087(rage e).15 F .087(xceeds the)-.15 F .588(high threshold load a)117
-300.6 R -.15(ve)-.2 G .588(rage \(option).15 F F0(X)3.087 E F1 3.087(,v)C
-(ariable)281.846 300.6 Q F2(RefuseLA)3.087 E F1(\),)A F2(shouldqueue)3.087 E F1
-(returns)3.087 E F3(TR)3.087 E(UE)-.36 E F1(immedi-)3.087 E(ately)117 312.6 Q
-7.125(.O)-.65 G 2.125
-(therwise, it computes the function based on the message priority)152.635 312.6
-R 4.626(,t)-.65 G 2.126(he queue f)438.208 312.6 R(actor)-.1 E(\(option)117
-324.6 Q F0(q)2.5 E F1 2.5(,g)C(lobal v)163.95 324.6 Q(ariable)-.25 E F2(QueueF)
-2.5 E(actor)-.75 E F1(\), and the current and threshold load a)A -.15(ve)-.2 G
-(rages.).15 E 1.067(An implementation wishing to tak)142 340.8 R 3.567(et)-.1 G
-1.066(he actual age of the message into account can also)293.625 340.8 R 1.41
-(use the)117 352.8 R F2(ctime)3.91 E F1(parameter)3.91 E 3.91(,w)-.4 G 1.41
-(hich is the time that the message w)229.15 352.8 R 1.41
-(as \214rst submitted to)-.1 F F2(sendmail)3.91 E F1(.)A .929(Note that the)117
-364.8 R F2(pri)3.428 E F1 .928
-(parameter is already weighted by the number of times the message has been)
-3.428 F .395(tried \(although this tends to lo)117 376.8 R .395
-(wer the priority of the message with time\); the e)-.25 F .395
-(xpectation is that)-.15 F(the)117 388.8 Q F2(ctime)2.674 E F1 -.1(wo)2.674 G
-.174(uld be used as an \231escape clause\232 to ensure that messages are e).1 F
--.15(ve)-.25 G .174(ntually processed.).15 F F0 2.5(6.3.6. Refusing)102 412.8 R
-(Incoming SMTP Connections)2.5 E F1 1.148(The function)142 429 R F2 -.37(re)
-3.648 G(fuseconnections).37 E F1(returns)3.648 E F3(TR)3.648 E(UE)-.36 E F1
-1.148(if incoming SMTP connections should be)3.648 F 3.564(refused. The)117 441
-R 1.063(current implementation is based e)3.563 F(xclusi)-.15 E -.15(ve)-.25 G
-1.063(ly on the current load a).15 F -.15(ve)-.2 G 1.063(rage and the).15 F
-(refuse load a)117 453 Q -.15(ve)-.2 G(rage option \(option).15 E F0(X)2.5 E F1
-2.5(,g)C(lobal v)273.56 453 Q(ariable)-.25 E F2(RefuseLA)2.5 E F1(\):)A(bool)
-157 469.2 Q(refuseconnections\(\))157 481.2 Q({)157 493.2 Q
-(return \(CurrentLA >= RefuseLA\);)175 505.2 Q(})157 517.2 Q 2.5(Am)117 533.4 S
-(ore cle)134.5 533.4 Q -.15(ve)-.25 G 2.5(ri).15 G
-(mplementation could look at more system resources.)179.08 533.4 Q F0 2.5
-(6.3.7. Load)102 557.4 R -.6 -1(Av e)2.5 H(rage Computation)1 E F1 .243
-(The routine)142 573.6 R F2 -.1(ge)2.743 G(tla).1 E F1 .243
-(returns the current load a)2.743 F -.15(ve)-.2 G .243
-(rage \(as a rounded inte).15 F 2.743(ger\). The)-.15 F(distrib)2.744 E(ution)
--.2 E 1.157(includes se)117 585.6 R -.15(ve)-.25 G 1.157
-(ral possible implementations.).15 F 1.157(If you are porting to a ne)6.157 F
-3.657(we)-.25 G -.4(nv)418.757 585.6 S 1.157(ironment you may).4 F
-(need to add some ne)117 599.6 Q 2.5(wt)-.25 G(weaks.)210.9 599.6 Q/F4 7
-/Times-Roman@0 SF(23)238.39 595.6 Q F0 2.5(6.4. Con\214guration)87 623.6 R
-(in sr)2.5 E(c/daemon.c)-.18 E F1 .4(The \214le)127 639.8 R F2(sr)2.9 E
-(c/daemon.c)-.37 E F1 .4
-(contains a number of routines that are dependent on the local netw)2.9 F(ork-)
--.1 E(ing en)102 651.8 Q 2.5(vironment. The)-.4 F -.15(ve)2.5 G
-(rsion supplied assumes you ha).15 E .3 -.15(ve B)-.2 H(SD style sock).15 E
-(ets.)-.1 E 2.16(In pre)127 668 R 2.16
-(vious releases, we recommended that you modify the routine)-.25 F F2
-(maphostname)4.66 E F1 2.16(if you)4.66 F -.1(wa)102 680 S 1.918
-(nted to generalize).1 F F0($[)4.418 E F1(...)4.418 E F0($])4.418 E F1 4.418
-(lookups. W)4.418 F 4.418(en)-.8 G 2.418 -.25(ow r)293.904 680 T 1.918
-(ecommend that you create a ne).25 F 4.419(wk)-.25 G -.15(ey)463.631 680 S
-1.919(ed map).15 F .32 LW 76 689.6 72 689.6 DL 80 689.6 76 689.6 DL 84 689.6 80
-689.6 DL 88 689.6 84 689.6 DL 92 689.6 88 689.6 DL 96 689.6 92 689.6 DL 100
-689.6 96 689.6 DL 104 689.6 100 689.6 DL 108 689.6 104 689.6 DL 112 689.6 108
-689.6 DL 116 689.6 112 689.6 DL 120 689.6 116 689.6 DL 124 689.6 120 689.6 DL
-128 689.6 124 689.6 DL 132 689.6 128 689.6 DL 136 689.6 132 689.6 DL 140 689.6
-136 689.6 DL 144 689.6 140 689.6 DL 148 689.6 144 689.6 DL 152 689.6 148 689.6
-DL 156 689.6 152 689.6 DL 160 689.6 156 689.6 DL 164 689.6 160 689.6 DL 168
-689.6 164 689.6 DL 172 689.6 168 689.6 DL 176 689.6 172 689.6 DL 180 689.6 176
-689.6 DL 184 689.6 180 689.6 DL 188 689.6 184 689.6 DL 192 689.6 188 689.6 DL
-196 689.6 192 689.6 DL 200 689.6 196 689.6 DL 204 689.6 200 689.6 DL 208 689.6
-204 689.6 DL 212 689.6 208 689.6 DL 216 689.6 212 689.6 DL/F5 5/Times-Roman@0
-SF(23)93.6 700 Q/F6 8/Times-Roman@0 SF
-(If you do, please send updates to sendmail@CS.Berk)3.2 I(ele)-.08 E -.52(y.)
--.12 G(EDU.).52 E EP
-%%Page: 59 54
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-59)452.9 60 Q/F1 10/Times-Roman@0 SF(instead.)102 96 Q F0 2.5
-(7. CHANGES)72 120 R(IN VERSION 8)2.5 E F1 .196(The follo)112 136.2 R .196
-(wing summarizes changes since the last commonly a)-.25 F -.25(va)-.2 G .196
-(ilable v).25 F .196(ersion of)-.15 F/F2 10/Times-Italic@0 SF(sendmail)2.695 E
-F1(\(5.67\).)2.695 E -.15(Fo)87 148.2 S 2.702(rad).15 G .202
-(etailed list, consult the \214le RELEASE_NO)115.584 148.2 R .203
-(TES in the root directory of the)-.4 F F2(sendmail)2.703 E F1(distrib)2.703 E
-(ution.)-.2 E F0 2.5(7.1. Connection)87 172.2 R(Caching)2.5 E F1 .398
-(Instead of closing SMTP connections immediately)127 188.4 R 2.897(,t)-.65 G
-.397(hose connections are cached for possible)339.005 188.4 R .597(future use.)
-102 200.4 R .597(The adv)5.597 F .597(ent of MX records made this ef)-.15 F
-(fecti)-.25 E .897 -.15(ve f)-.25 H .598
-(or mailing lists; in addition, substantial).15 F(performance impro)102 212.4 Q
--.15(ve)-.15 G(ments can be e).15 E(xpected for queue processing.)-.15 E F0 2.5
-(7.2. MX)87 236.4 R(Piggybacking)2.5 E F1 1.258(If tw)127 252.6 R 3.757(oh)-.1
-G 1.257(osts with dif)161.075 252.6 R 1.257
-(ferent names in a single message happen to ha)-.25 F 1.557 -.15(ve t)-.2 H
-1.257(he same set of MX).15 F .94(hosts, the)102 264.6 R 3.44(yc)-.15 G .94
-(an be sent in the same transaction.)153.45 264.6 R -1.11(Ve)5.94 G .94
-(rsion 8 notices this and tries to batch the mes-)1.11 F(sages.)102 276.6 Q F0
-2.5(7.3. RFC)87 300.6 R(1123 Compliance)2.5 E F1 3.463(An)127 316.8 S .963
-(umber of changes ha)142.683 316.8 R 1.262 -.15(ve b)-.2 H .962
-(een made to mak).15 F(e)-.1 E F2(sendmail)3.462 E F1 .962
-(\231conditionally compliant\232 \(that is,)3.462 F F2(sendmail)102 328.8 Q F1
-.049(satis\214es all of the \231MUST\232 clauses and most b)2.549 F .05
-(ut not all of the \231SHOULD\232 clauses in RFC)-.2 F(1123\).)102 340.8 Q
-(The major areas of change are \(numbers are RFC 1123 section numbers\):)127
-357 Q 15(5.2.7 Response)102 373.2 R(to RCPT command is f)2.5 E(ast.)-.1 E 15
-(5.2.8 Numeric)102 389.4 R(IP addresses are logged in Recei)2.5 E -.15(ve)-.25
-G(d: lines.).15 E 10(5.2.17 Self)102 405.6 R
-(domain literal is properly handled.)2.5 E 15(5.3.2 Better)102 421.8 R
-(control o)2.5 E -.15(ve)-.15 G 2.5(ri).15 G(ndi)220.02 421.8 Q
-(vidual timeouts.)-.25 E 15(5.3.3 Error)102 438 R
-(messages are sent as \231From:<>\232.)2.5 E 15(5.3.3 Error)102 454.2 R
-(messages are ne)2.5 E -.15(ve)-.25 G 2.5(rs).15 G(ent to \231<>\232.)246.28
-454.2 Q 15(5.3.3 Route-addrs)102 470.4 R(are pruned.)2.5 E(The areas in which)
-102 486.6 Q F2(sendmail)2.5 E F1(is not \231unconditionally compliant\232 are:)
-2.5 E(5.2.6)102 502.8 Q F2(Sendmail)139.5 502.8 Q F1(does do header munging.)
-2.5 E(5.2.10)102 519 Q F2(Sendmail)139.5 519 Q F1(doesn')2.5 E 2.5(ta)-.18 G
--.1(lwa)215.42 519 S(ys use the e).1 E(xact SMTP message te)-.15 E
-(xt as listed in RFC 821.)-.15 E(5.3.1.1)102 535.2 Q F2(Sendmail)139.5 535.2 Q
-F1(doesn')2.5 E 2.5(tg)-.18 G
-(uarantee only one connect for each host in queue runs.)215.98 535.2 Q(5.3.1.1)
-102 551.4 Q F2(Sendmail)139.5 551.4 Q F1(doesn')2.5 E 2.5(ta)-.18 G -.1(lwa)
-215.42 551.4 S(ys pro).1 E(vide adequate concurrenc)-.15 E 2.5(yl)-.15 G
-(imits.)366.54 551.4 Q F0 2.5(7.4. Extended)87 575.4 R(SMTP Support)2.5 E F1
--1.11(Ve)127 591.6 S .155(rsion 8 includes both sending and recei)1.11 F .154
-(ving support for Extended SMTP support as de\214ned)-.25 F(by RFC 1651 \(basi\
-c\) and RFC 1653 \(SIZE\); and limited support for RFC 1652 \(BOD)102 603.6 Q
-(Y\).)-.55 E F0 2.5(7.5. Eight-Bit)87 627.6 R(Clean)2.5 E F1(Pre)127 643.8 Q
-1.263(vious v)-.25 F 1.263(ersions of)-.15 F F2(sendmail)3.763 E F1 1.264
-(used the 0200 bit for quoting.)3.763 F 1.264(This v)6.264 F 1.264(ersion a)
--.15 F -.2(vo)-.2 G 1.264(ids that use.).2 F(Ho)102 655.8 Q(we)-.25 E -.15(ve)
--.25 G .8 -.4(r, f).15 H
-(or compatibility with RFC 822, you can set option `7' to get se).4 E -.15(ve)
--.25 G 2.5(nb).15 G(it stripping.)418.86 655.8 Q(Indi)127 672 Q
-(vidual mailers can still produce se)-.25 E -.15(ve)-.25 G 2.5(nb).15 G
-(it output using the `7' mailer \215ag.)300.77 672 Q F0 2.5(7.6. User)87 696 R
-(Database)2.5 E F1 1.073(The user database is an as-yet e)127 712.2 R 1.072
-(xperimental attempt to pro)-.15 F 1.072(vide uni\214ed lar)-.15 F 1.072
-(ge-site name sup-)-.18 F 2.5(port. W)102 724.2 R 2.5(ea)-.8 G
-(re installing it at Berk)145.63 724.2 Q(ele)-.1 E(y; future v)-.15 E
-(ersions may sho)-.15 E 2.5(ws)-.25 G(igni\214cant modi\214cations.)363.57
-724.2 Q EP
-%%Page: 60 55
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-60 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E 2.5(7.7. Impr)87 96 R -.1(ove)-.18 G
-2.5(dB).1 G(IND Support)158.01 96 Q/F1 10/Times-Roman@0 SF .489
-(The BIND support, particularly for MX records, had a number of anno)127 112.2
-R .49(ying \231features\232 which)-.1 F(ha)102 124.2 Q 1.212 -.15(ve b)-.2 H
-.912(een remo).15 F -.15(ve)-.15 G 3.412(di).15 G 3.412(nt)187.116 124.2 S .912
-(his release.)198.308 124.2 R .912(In particular)5.912 F 3.412(,t)-.4 G .912
-(hese more tightly bind \(pun intended\) the name)307.916 124.2 R(serv)102
-136.2 Q(er to)-.15 E/F2 10/Times-Italic@0 SF(sendmail)2.5 E F1 2.5(,s)C 2.5(ot)
-184.06 136.2 S(hat the name serv)194.34 136.2 Q
-(er resolution rules are incorporated directly into)-.15 E F0(sendmail)2.5 E F1
-(.)A F0 2.5(7.8. K)87 160.2 R(ey)-.25 E(ed Files)-.1 E F1 .365(Generalized k)
-127 176.4 R -.15(ey)-.1 G .365(ed \214les is an idea tak).15 F .365
-(en directly from)-.1 F/F3 9/Times-Roman@0 SF(ID)2.866 E(A)-.36 E F2(sendmail)
-2.866 E F1 .366(\(albeit with a completely)2.866 F(dif)102 188.4 Q
-(ferent implementation\).)-.25 E(The)5 E 2.5(yc)-.15 G(an be useful on lar)
-239.63 188.4 Q(ge sites.)-.18 E -1.11(Ve)127 204.6 S
-(rsion 8 also understands YP)1.11 E(.)-1.11 E F0 2.5(7.9. Multi-W)87 228.6 R
-(ord Classes)-.75 E F1(Classes can no)127 244.8 Q 2.5(wb)-.25 G 2.5(em)200.35
-244.8 S(ultiple w)215.07 244.8 Q 2.5(ords. F)-.1 F(or e)-.15 E(xample,)-.15 E
-(CShofmann.CS.Berk)142 261 Q(ele)-.1 E -.65(y.)-.15 G(EDU).65 E(allo)102 277.2
-Q 2.664(ws you to match the entire string \231hofmann.CS.Berk)-.25 F(ele)-.1 E
--.65(y.)-.15 G 2.663(EDU\232 using the single construct).65 F(\231$=S\232.)102
-289.2 Q F0 2.5(7.10. Deferr)87 313.2 R(ed Macr)-.18 E 2.5(oE)-.18 G(xpansion)
-189.94 313.2 Q F1(The)127 329.4 Q F0($&)2.5 E F2(x)A F1
-(construct has been adopted from)2.5 E F3(ID)2.5 E(A)-.36 E F1(.)A F0 2.5
-(7.11. IDENT)87 353.4 R(Pr)2.5 E(otocol Support)-.18 E F1
-(The IDENT protocol as de\214ned in RFC 1413 is supported.)127 369.6 Q F0 2.5
-(7.12. P)87 393.6 R(arsing Bug Fixes)-.1 E F1 4.03(An)127 409.8 S 1.53
-(umber of small b)143.25 409.8 R 1.53(ugs ha)-.2 F 1.53
-(ving to do with things lik)-.2 F 4.03(eb)-.1 G 1.53
-(ackslash-escaped quotes inside of)364.72 409.8 R(comments ha)102 421.8 Q .3
--.15(ve b)-.2 H(een \214x).15 E(ed.)-.15 E F0 2.5(7.13. Separate)87 445.8 R(En)
-2.5 E -.1(ve)-.4 G(lope/Header Pr).1 E(ocessing)-.18 E F1 .854
-(Since the From: line is passed in separately from the en)127 462 R -.15(ve)-.4
-G .854(lope sender).15 F 3.354(,t)-.4 G .854(hese ha)420.978 462 R 1.154 -.15
-(ve b)-.2 H .854(oth been).15 F .427(made visible; the)102 474 R F0($g)2.927 E
-F1 .427(macro is set to the en)2.927 F -.15(ve)-.4 G .428
-(lope sender during processing of mailer ar).15 F .428(gument v)-.18 F(ec-)-.15
-E(tors and the header sender during processing of headers.)102 486 Q .085
-(It is also possible to specify separate per)127 502.2 R .085(-mailer en)-.2 F
--.15(ve)-.4 G .084(lope and header processing.).15 F(The)5.084 E F0(S)2.584 E
-F1(ender)A(-)-.2 E -.55(RW)102 514.2 S .512(Set and).55 F F0(R)3.012 E F1
-(ecipientR)A .512(Wset ar)-.55 F .512
-(guments for mailers can be speci\214ed as)-.18 F F2(en)3.013 E(velope/header)
--.4 E F1 .513(to gi)3.013 F .813 -.15(ve d)-.25 H(if-).15 E(ferent re)102 526.2
-Q(writings for en)-.25 E -.15(ve)-.4 G(lope v).15 E(ersus header addresses.)
--.15 E F0 2.5(7.14. Owner)87 550.2 R(-List Pr)-.37 E(opagates to En)-.18 E -.1
-(ve)-.4 G(lope).1 E F1 1.001(When an alias has an associated o)127 566.4 R 1
-(wner\255list name, that alias is used to change the en)-.25 F -.15(ve)-.4 G
-(lope).15 E(sender address.)102 578.4 Q(This will cause do)5 E
-(wnstream errors to be returned to that o)-.25 E(wner)-.25 E(.)-.55 E F0 2.5
-(7.15. Dynamic)87 602.4 R(Header Allocation)2.5 E F1(The \214x)127 618.6 Q
-(ed size limit on header lines has been eliminated.)-.15 E F0 2.5(7.16. New)87
-642.6 R(Command Line Flags)2.5 E F1(The)127 658.8 Q F0<ad42>2.5 E F1
-(\215ag has been added to pass in body type information.)2.5 E(The)127 675 Q F0
-<ad70>2.5 E F1(\215ag has been added to pass in protocol information.)2.5 E
-(The)127 691.2 Q F0<ad58>2.6 E F1 .1(\215ag has been added to allo)2.6 F 2.6
-(wl)-.25 G .1(ogging of all protocol in and out of)279.89 691.2 R F2(sendmail)
-2.6 E F1 .1(for deb)2.6 F(ug-)-.2 E(ging.)102 703.2 Q EP
-%%Page: 61 56
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-61)452.9 60 Q/F1 10/Times-Roman@0 SF(The)127 96 Q F0<ad4f>2.5 E F1
-(\215ag simplies setting long-form options.)2.5 E F0 2.5(7.17. Enhanced)87 120
-R(Command Line Flags)2.5 E F1(The)127 136.2 Q F0<ad71>4.007 E F1 1.507(\215ag \
-can limit limit a queue run to speci\214c recipients, senders, or queue ids us\
-ing)4.007 F F0(\255qR)102 148.2 Q/F2 10/Times-Italic@0 SF(substring)A F0 2.5
-<2cad>C(qS)168.41 148.2 Q F2(substring)A F0 2.5(,o)C 2.5<72ad>226.76 148.2 S
-(qI)239.4 148.2 Q F2(substring)A F0 -.18(re)2.5 G(specti).18 E -.1(ve)-.1 G(ly)
-.1 E(.)-.7 E 2.5(7.18. New)87 172.2 R(and Old Con\214guration Line T)2.5 E
-(ypes)-.74 E F1(The)127 188.4 Q F0(K)2.5 E F1
-(line has been added to declare database maps.)2.5 E(The)127 204.6 Q F0(V)2.5 E
-F1(line has been added to declare the con\214guration v)2.5 E(ersion le)-.15 E
--.15(ve)-.25 G(l.).15 E(The)127 220.8 Q F0(M)2.796 E F1 .297(line has a \231D=\
-\232 \214eld that lets you change into a temporary directory while that mailer)
-2.796 F .581(is running.)102 232.8 R .581
-(It also has a \231U=\232 \214eld to allo)5.581 F 3.081(wy)-.25 G .58
-(ou to set the user and group id to be used when run-)289.85 232.8 R
-(ning the mailer)102 244.8 Q(.)-.55 E F0 2.5(7.19. New)87 268.8 R(Options)2.5 E
-F1(Se)127 285 Q -.15(ve)-.25 G .9(ral ne).15 F 3.4(wo)-.25 G .9(ptions ha)184.8
-285 R 1.2 -.15(ve b)-.2 H .9(een added, man).15 F 3.4(yt)-.15 G 3.4(os)314.89
-285 S .9(upport ne)327.18 285 R 3.4(wf)-.25 G .9(eatures, others to allo)379.83
-285 R 3.4(wt)-.25 G(uning)481.22 285 Q 1.187(that w)102 297 R 1.187(as pre)-.1
-F 1.187(viously a)-.25 F -.25(va)-.2 G 1.187(ilable only by recompiling.).25 F
-(The)6.186 E 3.686(ya)-.15 G 1.186(re described in detail in Section 5.1.5.)
-345.514 297 R(Brie\215y)102 309 Q(,)-.65 E 31(bI)102 325.2 S
-(nsist on a minimum number of disk blocks.)141.33 325.2 Q 29.33(CS)102 341.4 S
-(et checkpoint interv)143.56 341.4 Q(al.)-.25 E 29.89(ED)102 357.6 S(ef)145.22
-357.6 Q(ault error message.)-.1 E 28.78(GE)102 373.8 S(nable GECOS matching.)
-144.11 373.8 Q 31(hM)102 390 S(aximum hop count.)146.89 390 Q 33.22(jS)102
-406.2 S(end errors in MIME-encapsulated format.)143.56 406.2 Q 32.11(JF)102
-422.4 S(orw)143.41 422.4 Q(ard \214le path.)-.1 E 31(kC)102 438.6 S
-(onnection cache size)144.67 438.6 Q 28.78(KC)102 454.8 S
-(onnection cache lifetime.)144.67 454.8 Q 33.22(lE)102 471 S .333
-(nable Errors-T)144.11 471 R .333(o: header)-.8 F 5.334(.T)-.55 G .334
-(hese headers violate RFC 1123; this option is included to pro-)252.89 471 R
-(vide back compatibility with old v)138 483 Q(ersions of)-.15 E F2(sendmail)2.5
-E F1(.)A 28.78(OS)102 499.2 S
-(et incoming SMTP daemon options, such as an alternate SMTP port.)143.56 499.2
-Q 31(pP)102 515.4 S(ri)143.56 515.4 Q -.25(va)-.25 G .3 -.15(cy o).25 H
-(ptions.).15 E 29.33(RD)102 531.6 S(on')145.22 531.6 Q 2.5(tp)-.18 G
-(rune route-addrs.)168.65 531.6 Q 28.78(UU)102 547.8 S(ser database spec.)
-145.22 547.8 Q 28.78(VF)102 564 S(allback \231MX\232 host.)143.41 564 Q 28.78
-<7799>102 580.2 S(Best MX\232 handling technique.)142.44 580.2 Q 31(7D)102
-596.4 S 2.5(on)145.22 596.4 S(ot run eight bit clean.)157.72 596.4 Q 31(8E)102
-612.6 S(ight bit data handling mode.)144.11 612.6 Q F0 2.5(7.20. Extended)87
-636.6 R(Options)2.5 E F1(The)127 652.8 Q F0(r)3.764 E F1 1.264
-(\(read timeout\),)3.764 F F0(I)3.764 E F1 1.264(\(use BIND\), and)3.764 F F0
-(T)3.764 E F1 1.264(\(queue timeout\) options ha)3.764 F 1.564 -.15(ve b)-.2 H
-1.264(een e).15 F 1.264(xtended to)-.15 F(pass in more information.)102 664.8 Q
-F0 2.5(7.21. New)87 688.8 R(Mailer Flags)2.5 E F1(Se)127 705 Q -.15(ve)-.25 G
-(ral ne).15 E 2.5(wm)-.25 G(ailer \215ags ha)185.78 705 Q .3 -.15(ve b)-.2 H
-(een added.).15 E EP
-%%Page: 62 57
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-62 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 31.56(aT)102 96
-S .636(ry to use ESMTP when creating a connection.)143.76 96 R .636
-(If this is not set,)5.636 F/F2 10/Times-Italic@0 SF(sendmail)3.136 E F1 .636
-(will still try if)3.136 F .221(the other end hints that it kno)138 108 R .22
-(ws about ESMTP in its greeting message; this \215ag says to try)-.25 F -2.15
--.25(ev e)138 120 T 2.595(ni).25 G 2.595(fi)161.855 120 S 2.595(td)170.56 120 S
-(oesn')180.935 120 Q 2.595(th)-.18 G 2.595(int. If)212.79 120 R .095
-(the EHLO \(e)2.595 F .095(xtended hello\) command f)-.15 F(ails,)-.1 E F2
-(sendmail)2.596 E F1 -.1(fa)2.596 G .096(lls back to).1 F(old SMTP)138 132 Q(.)
--1.11 E 28.78(AT)102 148.2 S
-(ry the user part of addresses for this mailer as aliases.)143.76 148.2 Q 31
-(bE)102 164.4 S(nsure that there is a blank line at the end of all messages.)
-144.11 164.4 Q 31.56(cS)102 180.6 S .68(trip all comments from addresses; this\
- should only be used as a last resort when dealing)143.56 180.6 R(with crank)
-138 192.6 Q 2.5(ym)-.15 G(ailers.)195.62 192.6 Q 31(gN)102 208.8 S -2.15 -.25
-(ev e)145.22 208.8 T 2.64(ru).25 G .14(se the null sender as the en)169.67
-208.8 R -.15(ve)-.4 G .141(lope sender).15 F 2.641(,e)-.4 G -.15(ve)341.495
-208.8 S 2.641(nw).15 G .141(hen running SMTP)365.646 208.8 R 5.141(.A)-1.11 G
-.141(lthough this)456.349 208.8 R 1.521(violates RFC 1123, it may be necessary\
- when you must deal with some obnoxious old)138 220.8 R(hosts.)138 232.8 Q 31
-(kT)102 249 S(urn of)143.66 249 Q 2.5(ft)-.25 G
-(he loopback check in the HELO protocol; doing this may cause mailer loops.)
-176.18 249 Q 31(oA)102 265.2 S -.1(lwa)145.22 265.2 S
-(ys run the mailer as the recipient of the message.).1 E 28.78(wT)102 281.4 S
-(his user should ha)144.11 281.4 Q .3 -.15(ve a p)-.2 H(asswd \214le entry).15
-E(.)-.65 E 31(5T)102 297.6 S(ry ruleset 5 if no local aliases.)143.76 297.6 Q
-31(7S)102 313.8 S(trip all output to 7 bits.)143.56 313.8 Q 33.22(:C)102 330 S
-(heck for :include: \214les.)144.67 330 Q 34(|C)102 346.2 S
-(heck for |program addresses.)144.67 346.2 Q 33.22(/C)102 362.4 S
-(heck for /\214le addresses.)144.67 362.4 Q 26.79(@C)102 378.6 S
-(heck this user ag)144.67 378.6 Q(ainst the user database.)-.05 E F0 2.5
-(7.22. Long)87 402.6 R(Option Names)2.5 E F1 .856
-(All options can be speci\214ed using long names, and some ne)127 418.8 R 3.356
-(wo)-.25 G .856(ptions can only be speci\214ed)389.476 418.8 R
-(with long names.)102 430.8 Q F0 2.5(7.23. New)87 454.8 R(Pr)2.5 E
-(e-De\214ned Macr)-.18 E(os)-.18 E F1(The follo)127 471 Q
-(wing macros are pre-de\214ned:)-.25 E 23.5($k The)102 487.2 R
-(UUCP node name, nominally from)2.5 E F2(uname)2.5 E F1(\(2\) call.)A 20.72
-($m The)102 503.4 R(domain part of our full hostname.)2.5 E 23.5($_ The)102
-519.6 R(RFC 1413-pro)2.5 E(vided sender address.)-.15 E F0 2.5(7.24. New)87
-543.6 R(LHS T)2.5 E(ok)-.92 E(en)-.1 E F1 -1.11(Ve)127 559.8 S 1.376
-(rsion 8 allo)1.11 F(ws)-.25 E F0($@)3.876 E F1 1.376
-(on the Left Hand Side of an \231R\232 line to match zero tok)3.876 F 3.875
-(ens. This)-.1 F(is)3.875 E(intended to be used to match the null input.)102
-571.8 Q F0 2.5(7.25. Bigger)87 595.8 R(Defaults)2.5 E F1 -1.11(Ve)127 612 S
-1.283(rsion 8 allo)1.11 F 1.284(ws up to 100 rulesets instead of 30.)-.25 F
-1.284(It is recommended that rulesets 0\2559 be)6.284 F(reserv)102 624 Q
-(ed for)-.15 E F2(sendmail)2.5 E F1 1.1 -.55('s d)D
-(edicated use in future releases.).55 E
-(The total number of MX records that can be used has been raised to 20.)127
-640.2 Q .335(The number of queued messages that can be handled at one time has\
- been raised from 600 to)127 656.4 R(1000.)102 668.4 Q F0 2.5(7.26. Differ)87
-692.4 R(ent Default T)-.18 E(uning P)-.92 E(arameters)-.1 E F1 -1.11(Ve)127
-708.6 S .8(rsion 8 has changed the def)1.11 F .8
-(ault parameters for tuning queue costs to mak)-.1 F 3.3(et)-.1 G .8
-(he number of)449.08 708.6 R .712(recipients more important than the size of t\
-he message \(for small messages\).)102 720.6 R .712(This is reasonable if)5.712
-F EP
-%%Page: 63 58
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-63)452.9 60 Q/F1 10/Times-Roman@0 SF
-(you are connected with reasonably f)102 96 Q(ast links.)-.1 E F0 2.5(7.27. A)
-87 120 R(uto-Quoting in Addr)-.5 E(esses)-.18 E F1(Pre)127 136.2 Q(viously)-.25
-E 2.61(,t)-.65 G .111(he \231Full Name <email address>\232 syntax w)176.77
-136.2 R .111(ould generate incorrect protocol output)-.1 F
-(if \231Full Name\232 had special characters such as dot.)102 148.2 Q(This v)5
-E(ersion puts quotes around such names.)-.15 E F0 2.5(7.28. Symbolic)87 172.2 R
-(Names On Err)2.5 E(or Mailer)-.18 E F1(Se)127 188.4 Q -.15(ve)-.25 G
-(ral names ha).15 E .3 -.15(ve b)-.2 H(een b).15 E
-(uilt in to the $@ portion of the $#error mailer)-.2 E(.)-.55 E F0 2.5
-(7.29. SMTP)87 212.4 R(VRFY Doesn't Expand)2.5 E F1(Pre)127 228.6 Q 1.438
-(vious v)-.25 F 1.438(ersions of)-.15 F/F2 10/Times-Italic@0 SF(sendmail)3.938
-E F1 1.438(treated VRFY and EXPN the same.)3.938 F 1.437(In this v)6.437 F
-1.437(ersion, VRFY)-.15 F(doesn')102 240.6 Q 2.5(te)-.18 G
-(xpand aliases or follo)138.05 240.6 Q 2.5(w.)-.25 G(forw)235.84 240.6 Q
-(ard \214les.)-.1 E(EXPN still does.)5 E .681
-(As an optimization, if you run with your def)127 256.8 R .682(ault deli)-.1 F
--.15(ve)-.25 G .682(ry mode being queue-only or deli).15 F -.15(ve)-.25 G -.2
-(r-).15 G 1.582
-(in-background, the RCPT command will also not chase aliases and .forw)102
-268.8 R 1.582(ard \214les.)-.1 F 1.582(It will chase)6.582 F
-(them when it processes the queue.)102 280.8 Q F0 2.5(7.30. [IPC])87 304.8 R
-(Mailers Allo)2.5 E 2.5(wM)-.1 G(ultiple Hosts)210.49 304.8 Q F1 .447
-(When an address resolv)127 321 R .448
-(es to a mailer that has \231[IPC]\232 as its \231P)-.15 F .448
-(ath\232, the $@ part \(host name\))-.15 F .138
-(can be a colon-separated list of hosts instead of a single hostname.)102 333 R
-.137(This asks)5.137 F F2(sendmail)2.637 E F1 .137(to search the)2.637 F .16
-(list for the \214rst entry that is a)102 345 R -.25(va)-.2 G .16(ilable e).25
-F .161(xactly as though it were an MX record.)-.15 F .161
-(The intent is to route)5.161 F .738(internal traf)102 357 R .738
-(\214c through internal netw)-.25 F .738
-(orks without publishing an MX record to the net.)-.1 F .737(MX e)5.737 F
-(xpan-)-.15 E(sion is still done on the indi)102 369 Q(vidual items.)-.25 E F0
-2.5(7.31. Aliases)87 393 R(Extended)2.5 E F1 1.456
-(The implementation has been mer)127 409.2 R 1.457(ged with maps.)-.18 F 1.457
-(Among other things, this supports NIS-)6.457 F(based aliases.)102 421.2 Q F0
-2.5(7.32. P)87 445.2 R(ortability and Security Enhancements)-.2 E F1 2.5(An)127
-461.4 S(umber of internal changes ha)141.72 461.4 Q .3 -.15(ve b)-.2 H
-(een made to enhance portability).15 E(.)-.65 E(Se)127 477.6 Q -.15(ve)-.25 G
-(ral \214x).15 E(es ha)-.15 E .3 -.15(ve b)-.2 H
-(een made to increase the paranoia f).15 E(actor)-.1 E(.)-.55 E F0 2.5
-(7.33. Miscellaneous)87 501.6 R(Changes)2.5 E F2(Sendmail)127 517.8 Q F1
-(writes a)2.5 E F2(/etc/sendmail.pid)2.5 E F1
-(\214le with the current process id of the SMTP daemon.)2.5 E -1 -.8(Tw o)127
-534 T 1.647(people using the same program in their .forw)4.947 F 1.646
-(ard \214le are considered dif)-.1 F 1.646(ferent so that)-.25 F
-(duplicate elimination doesn')102 546 Q 2.5(td)-.18 G(elete one of them.)225.98
-546 Q(The)127 562.2 Q F2(mailstats)3.18 E F1 .681
-(program prints mailer names and gets the location of the)3.18 F F2
-(sendmail.st)3.181 E F1 .681(\214le from)3.181 F F2(/etc/sendmail.cf)102 574.2
-Q F1(.)A(Man)127 590.4 Q 2.5(ym)-.15 G(inor b)160.46 590.4 Q(ugs ha)-.2 E .3
--.15(ve b)-.2 H(een \214x).15 E
-(ed, such as handling of backslashes inside of quotes.)-.15 E 2.5(Ah)127 606.6
-S(ook \(ruleset 5\) has been added to allo)141.72 606.6 Q 2.5(wr)-.25 G -.25
-(ew)304.21 606.6 S(riting of local addresses after aliasing.).25 E F0 2.5(8. A)
-72 630.6 R(CKNO)-.55 E(WLEDGEMENTS)-.5 E F1(I')112 646.8 Q 2.037 -.15(ve w)-.5
-H(ork).05 E 1.737(ed on)-.1 F F2(sendmail)4.237 E F1 1.737(for man)4.237 F
-4.237(yy)-.15 G 1.737(ears, and man)267.502 646.8 R 4.237(ye)-.15 G(mplo)
-339.763 646.8 Q 1.737(yers ha)-.1 F 2.037 -.15(ve b)-.2 H 1.737
-(een remarkably patient).15 F .403(about letting me w)87 658.8 R .403
-(ork on a lar)-.1 F .403(ge project that w)-.18 F .404(as not part of my of)-.1
-F .404(\214cial job)-.25 F 5.404(.T)-.4 G .404(his includes time on the)407.384
-658.8 R .282(INGRES Project at the Uni)87 670.8 R -.15(ve)-.25 G .282
-(rsity of California at Berk).15 F(ele)-.1 E 1.582 -.65(y, a)-.15 H 2.782(tB)
-.65 G .282(ritton Lee, and ag)348.21 670.8 R .281(ain on the Mammoth)-.05 F
-(and T)87 682.8 Q(itan Projects at Berk)-.35 E(ele)-.1 E -.65(y.)-.15 G .453
-(Much of the second w)112 699 R -2.25 -.2(av e)-.1 H .453(of impro)3.153 F -.15
-(ve)-.15 G .453(ments should be credited to Bryan Costales of ICSI.).15 F .454
-(As he)5.454 F .781(passed me drafts of his book on)87 711 R F2(sendmail)3.281
-E F1 3.281(Iw)3.281 G .781(as inspired to start w)274.741 711 R .781
-(orking on things ag)-.1 F 3.281(ain. Bryan)-.05 F -.1(wa)3.281 G(s).1 E
-(also a)87 723 Q -.25(va)-.2 G(ilable to bounce ideas of).25 E 2.5(fo)-.25 G
-(f.)227.38 723 Q EP
-%%Page: 64 59
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-64 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(Man)112 96 Q
-2.856 -.65(y, m)-.15 H(an).65 E 4.056(yp)-.15 G 1.556(eople contrib)172.212 96
-R 1.556(uted chunks of code and ideas to)-.2 F/F2 10/Times-Italic@0 SF
-(sendmail)4.056 E F1 6.556(.I)C 4.056(th)418.476 96 S 1.557(as pro)430.312 96 R
--.15(ve)-.15 G 4.057(nt).15 G 4.057(ob)477.006 96 S 4.057(ea)491.063 96 S .464
-(group netw)87 108 R .464(ork ef)-.1 F 2.964(fort. V)-.25 F .464
-(ersion 8 in particular w)-1.11 F .463(as a group project.)-.1 F .463
-(The follo)5.463 F .463(wing people made notable)-.25 F(contrib)87 120 Q
-(utions:)-.2 E(John Beck, He)127 136.2 Q(wlett-P)-.25 E(ackard)-.15 E -.25(Ke)
-127 148.2 S(ith Bostic, CSRG, Uni).25 E -.15(ve)-.25 G
-(rsity of California, Berk).15 E(ele)-.1 E(y)-.15 E(Andre)127 160.2 Q 2.5(wC)
--.25 G(heng, Sun Microsystems)168.13 160.2 Q(Michael J. Corrig)127 172.2 Q
-(an, Uni)-.05 E -.15(ve)-.25 G(rsity of California, San Die).15 E(go)-.15 E
-(Bryan Costales, International Computer Science Institute)127 184.2 Q -.15(Pa)
-127 196.2 S -.5(..)132.298 190.2 S 2.5(r\()136.85 196.2 S(Pell\) Emanuelsson)
-146.01 196.2 Q(Craig Ev)127 208.2 Q(erhart, T)-.15 E(ransarc Corporation)-.35 E
--.8(To)127 220.2 S 2.5(mI).8 G -.25(va)150.92 220.2 S 2.5(rH).25 G
-(elbekkmo, Norwe)173.16 220.2 Q(gian School of Economics)-.15 E
-(Allan E. Johannesen, WPI)127 232.2 Q(Jonathan Kamens, OpenV)127 244.2 Q
-(ision T)-.6 E(echnologies, Inc.)-.7 E -.8(Ta)127 256.2 S
-(kahiro Kanbe, Fuji Xerox Information Systems Co., Ltd.).8 E(Brian Kantor)127
-268.2 Q 2.5(,U)-.4 G(ni)191.31 268.2 Q -.15(ve)-.25 G
-(rsity of California, San Die).15 E(go)-.15 E(Murray S. K)127 280.2 Q(uchera)
--.15 E(wy)-.15 E 2.5(,H)-.65 G(ookUp Communication Corp.)227.41 280.2 Q
-(Bruce Lilly)127 292.2 Q 2.5(,S)-.65 G(on)182.74 292.2 Q 2.5(yU)-.15 G(.S.)
-207.31 292.2 Q(Karl London)127 304.2 Q(Motonori Nakamura, Ritsumeikan Uni)127
-316.2 Q -.15(ve)-.25 G(rsity & K).15 E(yoto Uni)-.25 E -.15(ve)-.25 G(rsity).15
-E(John Gardiner Myers, Carne)127 328.2 Q(gie Mellon Uni)-.15 E -.15(ve)-.25 G
-(rsity).15 E(Neil Rick)127 340.2 Q(ert, Northern Illinois Uni)-.1 E -.15(ve)
--.25 G(rsity).15 E(Eric Schnoebelen, Con)127 352.2 Q .3 -.15(vex C)-.4 H
-(omputer Corp.).15 E(Eric W)127 364.2 Q(assenaar)-.8 E 2.5(,N)-.4 G
-(ational Institute for Nuclear and High Ener)200.49 364.2 Q(gy Ph)-.18 E
-(ysics, Amsterdam)-.05 E(Christophe W)127 376.2 Q(olfhugel, P)-.8 E
-(asteur Institute & Herv)-.15 E 2.5(eS)-.15 G(chauer Consultants \(P)330.05
-376.2 Q(aris\))-.15 E 3.219(Ia)87 392.4 S .719(pologize for an)97.989 392.4 R
-.719(yone I ha)-.15 F 1.019 -.15(ve o)-.2 H .719(mitted, misspelled, misattrib)
-.15 F .719(uted, or otherwise missed.)-.2 F .72(At this point, I)5.72 F 1.093
-(suspect that at least a hundred people ha)87 404.4 R 1.393 -.15(ve c)-.2 H
-(ontrib).15 E 1.093(uted code, and man)-.2 F 3.592(ym)-.15 G 1.092(ore ha)
-393.524 404.4 R 1.392 -.15(ve c)-.2 H(ontrib).15 E 1.092(uted ideas,)-.2 F
-1.533(comments, and encouragement.)87 416.4 R(I')6.534 E 1.834 -.15(ve t)-.5 H
-1.534(ried to list them in the RELEASE_NO).15 F 1.534(TES in the distrib)-.4 F
-(ution)-.2 E(directory)87 428.4 Q 5(.I)-.65 G(appreciate their contrib)135.78
-428.4 Q(ution as well.)-.2 E .743(Special thanks are reserv)112 444.6 R .743
-(ed for Michael Corrig)-.15 F .742(an and Christophe W)-.05 F .742
-(olfhugel, who besides being)-.8 F -.1(wo)87 456.6 S 5.714
-(nderful guinea pigs and contrib).1 F 5.714(utors ha)-.2 F 6.015 -.15(ve a)-.2
-H 5.715(lso consented to be added to the `).15 F(`send-)-.74 E(mail@CS.Berk)87
-468.6 Q(ele)-.1 E -.65(y.)-.15 G(EDU').65 E 3.335('l)-.74 G .835
-(ist and, by answering the b)199.005 468.6 R .835
-(ulk of the questions sent to that list, ha)-.2 F 1.134 -.15(ve f)-.2 H(reed)
-.15 E(me up to do other w)87 480.6 Q(ork.)-.1 E EP
-%%Page: 65 60
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 12/Times-Bold@0 SF 3(APPENDIX A)257.172 98.4 R(COMMAND LINE FLA)224.832
-141.6 Q(GS)-.66 E/F1 10/Times-Roman@0 SF(Ar)97 201 Q
-(guments must be presented with \215ags before addresses.)-.18 E
-(The \215ags are:)5 E<ad62>72 217.2 Q/F2 10/Times-Italic@0 SF(x)A F1
-(Set operation mode to)144 217.2 Q F2(x)2.5 E F1 5(.O)C(peration modes are:)
-253.71 217.2 Q 12.22(mD)184 233.4 S(eli)211.22 233.4 Q -.15(ve)-.25 G 2.5(rm)
-.15 G(ail \(def)243.87 233.4 Q(ault\))-.1 E 16.11(sS)184 245.4 S
-(peak SMTP on input side)209.56 245.4 Q 8.06(a\207 `)184 257.4 R -.8(`A)-.74 G
-(rpanet').8 E 2.5('m)-.74 G(ode \(get en)257.53 257.4 Q -.15(ve)-.4 G
-(lope sender information from header\)).15 E 15(dR)184 269.4 S(un as a daemon)
-210.67 269.4 Q 17.22(tR)184 281.4 S(un in test mode)210.67 281.4 Q 15(vJ)184
-293.4 S(ust v)207.89 293.4 Q(erify addresses, don')-.15 E 2.5(tc)-.18 G
-(ollect or deli)319.48 293.4 Q -.15(ve)-.25 G(r).15 E 17.22(iI)184 305.4 S
-(nitialize the alias database)207.33 305.4 Q 15(pP)184 317.4 S
-(rint the mail queue)209.56 317.4 Q<ad42>72 337.8 Q F2(type)A F1
-(Indicate body type.)144 337.8 Q<ad43>72 354 Q F2(\214le)A F1 .946(Use a dif)
-144 354 R .946(ferent con\214guration \214le.)-.25 F F2(Sendmail)5.946 E F1
-.946(runs as the in)3.446 F -.2(vo)-.4 G .946(king user \(rather than root\)).2
-F(when this \215ag is speci\214ed.)144 366 Q<ad64>72 382.2 Q F2(le)A(vel)-.15 E
-F1(Set deb)144 382.2 Q(ugging le)-.2 E -.15(ve)-.25 G(l.).15 E<ad66>72 398.4 Q
-F2(addr)2.5 E F1(The sender')144 398.4 Q 2.5(sm)-.55 G(achine address is)205.1
-398.4 Q F2(addr)2.5 E F1(.)A<ad46>72 414.6 Q F2(name)A F1
-(Sets the full name of this user to)144 414.6 Q F2(name)2.5 E F1(.)A<ad68>72
-430.8 Q F2(cnt)2.5 E F1 .726(Sets the \231hop count\232 to)144 430.8 R F2(cnt)
-3.226 E F1 5.725(.T)C .725
-(his represents the number of times this message has been)269.455 430.8 R .02
-(processed by)144 442.8 R F2(sendmail)2.52 E F1 .02(\(to the e)2.52 F .02
-(xtent that it is supported by the underlying netw)-.15 F(orks\).)-.1 E F2(Cnt)
-5.02 E F1 1.521
-(is incremented during processing, and if it reaches MAXHOP \(currently 30\))
-144 454.8 R F2(sendmail)4.02 E F1(thro)144 466.8 Q(ws a)-.25 E -.1(wa)-.15 G
-2.5(yt).1 G(he message with an error)199.6 466.8 Q(.)-.55 E 58.86(\255n Don')72
-483 R 2.5(td)-.18 G 2.5(oa)174.65 483 S(liasing or forw)186.59 483 Q(arding.)
--.1 E<ad72>72 499.2 Q F2(addr)2.5 E F1(An obsolete form of)144 499.2 Q/F3 10
-/Times-Bold@0 SF<ad66>2.5 E F1(.)A<ad6f>72 515.4 Q F2 1.666(xv)C(alue)-1.666 E
-F1(Set option)144 515.4 Q F2(x)2.5 E F1(to the speci\214ed)2.5 E F2(value)2.5 E
-F1 5(.T)C(hese options are described in Section 5.6.)292.6 515.4 Q<ad4f>72
-531.6 Q F2(option)A F3(=)A F2(value)A F1(Set)6.22 E F2(option)5.173 E F1 2.674
-(to the speci\214ed)5.173 F F2(value)5.174 E F1 2.674
-(\(for long form option names\).)5.174 F 2.674(These options are)7.674 F
-(described in Section 5.6.)144 543.6 Q<ad4d>72 559.8 Q F2 1.666(xv)C 27.204
-(alue Set)-1.666 F(macr)2.5 E 2.5(oxt)-.45 G 2.5(ot)196.04 559.8 S
-(he speci\214ed value)206.32 559.8 Q(.)-.15 E F1<ad70>72 576 Q F2(pr)A(otocol)
--.45 E F1 .401(Set the sending protocol.)144 576 R .401
-(Programs are encouraged to set this.)5.401 F .4(The protocol \214eld can be)
-5.401 F .114(in the form)144 588 R F2(pr)2.614 E(otocol)-.45 E F3(:)A F2(host)A
-F1 .114(to set both the sending protocol and sending host.)2.614 F -.15(Fo)
-5.115 G 2.615(re).15 G(xample,)472.06 588 Q 2.147(\231\255pUUCP:uunet\232 sets\
- the sending protocol to UUCP and the sending host to uunet.)144 600 R .973
-(\(Some e)144 612 R .974
-(xisting programs use \255oM to set the r and s macros; this is equi)-.15 F
--.25(va)-.25 G .974(lent to using).25 F(\255p.\))144 624 Q<ad71>72 640.2 Q F2
-(time)A F1 -.35(Tr)144 640.2 S 3.168(yt).35 G 3.167(op)164.038 640.2 S .667
-(rocess the queued up mail.)177.205 640.2 R .667(If the time is gi)5.667 F -.15
-(ve)-.25 G .667(n, a).15 F F2(sendmail)3.167 E F1 .667(will run through the)
-3.167 F(queue at the speci\214ed interv)144 652.2 Q(al to deli)-.25 E -.15(ve)
--.25 G 2.5(rq).15 G(ueued mail; otherwise, it only runs once.)310.82 652.2 Q
-<ad71>72 668.4 Q F2(Xstring)A F1 .312
-(Run the queue once, limiting the jobs to those matching)144 668.4 R F2
-(Xstring)2.813 E F1 5.313(.T)C .313(he k)416.325 668.4 R .613 -.15(ey l)-.1 H
-(etter).15 E F2(X)2.813 E F1 .313(can be)2.813 F F3(I)144 680.4 Q F1 .671
-(to limit based on queue identi\214er)3.171 F(,)-.4 E F3(R)3.171 E F1 .67
-(to limit based on recipient, or)3.171 F F3(S)3.17 E F1 .67(to limit based on)
-3.17 F .32 LW 76 690 72 690 DL 80 690 76 690 DL 84 690 80 690 DL 88 690 84 690
-DL 92 690 88 690 DL 96 690 92 690 DL 100 690 96 690 DL 104 690 100 690 DL 108
-690 104 690 DL 112 690 108 690 DL 116 690 112 690 DL 120 690 116 690 DL 124 690
-120 690 DL 128 690 124 690 DL 132 690 128 690 DL 136 690 132 690 DL 140 690 136
-690 DL 144 690 140 690 DL 148 690 144 690 DL 152 690 148 690 DL 156 690 152 690
-DL 160 690 156 690 DL 164 690 160 690 DL 168 690 164 690 DL 172 690 168 690 DL
-176 690 172 690 DL 180 690 176 690 DL 184 690 180 690 DL 188 690 184 690 DL 192
-690 188 690 DL 196 690 192 690 DL 200 690 196 690 DL 204 690 200 690 DL 208 690
-204 690 DL 212 690 208 690 DL 216 690 212 690 DL/F4 8/Times-Roman@0 SF
-(\207Deprecated.)93.6 702 Q F3(Sendmail Installation and Operation Guide)72 756
-Q(SMM:08-65)452.9 756 Q EP
-%%Page: 66 61
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-66 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(sender)144 96 Q
-6.053(.A)-.55 G 1.054
-(particular queued job is accepted if one of the corresponding addresses con-)
-188.876 96 R(tains the indicated)144 108 Q/F2 10/Times-Italic@0 SF(string)2.5 E
-F1(.)A 61.08(\255t Read)72 124.2 R .752(the header for \231T)3.252 F .752
-(o:\232, \231Cc:\232, and \231Bcc:\232 lines, and send to e)-.8 F -.15(ve)-.25
-G .752(ryone listed in those).15 F 2.539(lists. The)144 136.2 R .039
-(\231Bcc:\232 line will be deleted before sending.)2.539 F(An)5.039 E 2.539(ya)
--.15 G .04(ddresses in the ar)385.31 136.2 R .04(gument v)-.18 F(ec-)-.15 E
-(tor will be deleted from the send list.)144 148.2 Q<ad58>72 164.4 Q F2(lo)3.18
-E(g\214le)-.1 E F1 .68(Log all traf)144.68 164.4 R .68(\214c in and out of)-.25
-F F2(sendmail)3.179 E F1 .679(in the indicated)3.179 F F2(lo)3.179 E(g\214le)
--.1 E F1 .679(for deb)3.179 F .679(ugging mailer prob-)-.2 F 2.5(lems. This)144
-176.4 R(produces a lot of data v)2.5 E
-(ery quickly and should be used sparingly)-.15 E(.)-.65 E .637
-(There are a number of options that may be speci\214ed as primiti)97 192.6 R
-.938 -.15(ve \215)-.25 H 3.138(ags. These).15 F .638(are the e, i, m, and v)
-3.138 F 2.5(options. Also,)72 204.6 R(the f option may be speci\214ed as the)
-2.5 E F0<ad73>2.5 E F1(\215ag.)2.5 E EP
-%%Page: 67 62
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 12/Times-Bold@0 SF 3(APPENDIX B)250.002 98.4 R -.12(QU)220.29 141.6 S
-(EUE FILE FORMA).12 E(TS)-1.14 E/F1 10/Times-Roman@0 SF .292
-(This appendix describes the format of the queue \214les.)97 201 R .292
-(These \214les li)5.292 F .592 -.15(ve i)-.25 H 2.792(nt).15 G .291
-(he directory de\214ned by the)395.636 201 R/F2 10/Times-Bold@0 SF(Q)72 213 Q
-F1(option in the)2.5 E/F3 10/Times-Italic@0 SF(sendmail.cf)2.5 E F1
-(\214le, usually)2.5 E F3(/var/spool/mqueue)2.5 E F1(or)2.5 E F3
-(/usr/spool/mqueue)2.5 E F1(.)A .229(All queue \214les ha)97 229.2 R .529 -.15
-(ve t)-.2 H .229(he name).15 F F3(x)2.729 E F2(f)1.666 E F3(AAA99999)A F1
-(where)2.73 E F3(AAA99999)2.73 E F1 .23(is the)2.73 F F3(id)2.73 E F1 .23
-(for this message and the)2.73 F F3(x)2.73 E F1 .23(is a)2.73 F 3.601
-(type. The)72 241.2 R 1.101
-(\214rst letter of the id encodes the hour of the day that the message w)3.601
-F 1.101(as recei)-.1 F -.15(ve)-.25 G 3.601(db).15 G 3.601(yt)451.798 241.2 S
-1.101(he system)463.179 241.2 R .551
-(\(with A being the hour between midnight and 1:00AM\).)72 253.2 R .552
-(All \214les with the same id collecti)5.552 F -.15(ve)-.25 G .552
-(ly de\214ne one).15 F(message.)72 265.2 Q(The types are:)97 281.4 Q 31(dT)72
-297.6 S(he data \214le.)114.11 297.6 Q(The message body \(e)5 E
-(xcluding the header\) is k)-.15 E(ept in this \214le.)-.1 E 31(qT)72 313.8 S
-(he queue control \214le.)114.11 313.8 Q
-(This \214le contains the information necessary to process the job)5 E(.)-.4 E
-33.22(tA)72 330 S .345(temporary \214le.)118.065 330 R .344
-(These are an image of the)5.345 F F2(qf)2.844 E F1 .344
-(\214le when it is being reb)2.844 F 2.844(uilt. It)-.2 F .344
-(should be renamed)2.844 F(to a)108 342 Q F2(qf)2.5 E F1(\214le v)2.5 E
-(ery quickly)-.15 E(.)-.65 E 31(xA)72 358.2 S .566(transcript \214le, e)118.286
-358.2 R .567(xisting during the life of a session sho)-.15 F .567(wing e)-.25 F
--.15(ve)-.25 G .567(rything that happens during that).15 F(session.)108 370.2 Q
-(The)97 386.4 Q F2(qf)3.334 E F1 .834
-(\214le is structured as a series of lines each be)3.334 F .833
-(ginning with a code letter)-.15 F 5.833(.T)-.55 G .833(he lines are as fol-)
-427.358 386.4 R(lo)72 398.4 Q(ws:)-.25 E 28.78(VT)72 414.6 S .819(he v)114.11
-414.6 R .819(ersion number of the queue \214le format, used to allo)-.15 F 3.32
-(wn)-.25 G -.25(ew)359.35 414.6 S F3(sendmail)3.57 E F1 .82
-(binaries to read queue)3.32 F .004(\214les created by older v)108 426.6 R
-2.504(ersions. Def)-.15 F .004(aults to v)-.1 F .004(ersion zero.)-.15 F .004
-(Must be the \214rst line of the \214le if present.)5.004 F 28.78(HA)72 442.8 S
-.329(header de\214nition.)118.049 442.8 R .329(There may be an)5.329 F 2.829
-(yn)-.15 G .329(umber of these lines.)274.283 442.8 R .33
-(The order is important: the)5.33 F 2.83(yr)-.15 G(epre-)483.46 442.8 Q .046
-(sent the order in the \214nal message.)108 454.8 R .046
-(These use the same syntax as header de\214nitions in the con\214gu-)5.046 F
-(ration \214le.)108 466.8 Q 29.33(CT)72 483 S .575(he controlling address.)
-114.11 483 R .575(The syntax is \231localuser:aliasname\232.)5.575 F .575
-(Recipient addresses follo)5.575 F .575(wing this)-.25 F 2.814
-(line will be \215agged so that deli)108 495 R -.15(ve)-.25 G 2.814
-(ries will be run as the).15 F F3(localuser)5.314 E F1 2.814
-(\(a user name from the)5.314 F .561(/etc/passwd \214le\);)108 507 R F3
-(aliasname)3.061 E F1 .561(is the name of the alias that e)3.061 F .562
-(xpanded to this address \(used for print-)-.15 F(ing messages\).)108 519 Q
-28.78(QT)72 535.2 S .798(he `)114.11 535.2 R .798(`original recipient')-.74 F
-.798(', speci\214ed by the ORCPT= \214eld in an ESMTP transaction.)-.74 F .797
-(Used e)5.797 F(xclu-)-.15 E(si)108 547.2 Q -.15(ve)-.25 G(ly for Deli).15 E
--.15(ve)-.25 G(ry Status Noti\214cations.).15 E
-(It applies only to the immediately follo)5 E(wing `R' line.)-.25 E 29.33(RA)72
-563.4 S .705(recipient address.)118.425 563.4 R .705
-(This will normally be completely aliased, b)5.705 F .705
-(ut is actually realiased when the)-.2 F .493(job is processed.)108 575.4 R
-.492(There will be one line for each recipient.)5.493 F -1.11(Ve)5.492 G .492
-(rsion 1 qf \214les also include a lead-)1.11 F .689(ing colon-terminated list\
- of \215ags, which can be `S' to return a message on successful \214nal deli)
-108 587.4 R(v-)-.25 E(ery)108 599.4 Q 3.328(,`)-.65 G .828
-(F' to return a message on f)129.278 599.4 R .828
-(ailure, `D' to return a message if the message is delayed, `B' to)-.1 F .94
-(indicate that the body should be returned, `N' to suppress returning the body)
-108 611.4 R 3.441(,a)-.65 G .941(nd `P' to declare)434.807 611.4 R(this as a `)
-108 623.4 Q(`primary')-.74 E 2.5('\()-.74 G
-(command line or SMTP-session\) address.)192.05 623.4 Q 30.44(ST)72 639.6 S
-(he sender address.)114.11 639.6 Q(There may only be one of these lines.)5 E
-29.89(TT)72 655.8 S(he job creation time.)114.11 655.8 Q
-(This is used to compute when to time out the job)5 E(.)-.4 E 30.44(PT)72 672 S
-.114(he current message priority)114.11 672 R 5.114(.T)-.65 G .113
-(his is used to order the queue.)236.666 672 R .113(Higher numbers mean lo)
-5.113 F .113(wer priori-)-.25 F 3.676(ties. The)108 684 R 1.176
-(priority changes as the message sits in the queue.)3.676 F 1.177
-(The initial priority depends on the)6.176 F
-(message class and the size of the message.)108 696 Q 27.11(MA)72 712.2 S 2.704
-(message. This)117.924 712.2 R .204(line is printed by the)2.704 F F3(mailq)
-2.704 E F1 .203(command, and is generally used to store status infor)2.704 F(-)
--.2 E 2.5(mation. It)108 724.2 R(can contain an)2.5 E 2.5(yt)-.15 G -.15(ex)
-219.78 724.2 S(t.).15 E F2(Sendmail Installation and Operation Guide)72 756 Q
-(SMM:08-67)452.9 756 Q EP
-%%Page: 68 63
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 193.36(SMM:08-68 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 30.44(FF)72 96 S
-.043(lag bits, represented as one letter per \215ag.)113.56 96 R .043
-(De\214ned \215ag bits are)5.043 F F0(r)2.543 E F1 .044
-(indicating that this is a response)2.544 F .143(message and)108 108 R F0(w)
-2.643 E F1 .143(indicating that a w)2.643 F .142
-(arning message has been sent announcing that the mail has been)-.1 F(delayed.)
-108 120 Q 28.78(NT)72 136.2 S(he total number of deli)114.11 136.2 Q -.15(ve)
--.25 G(ry attempts.).15 E 28.78(KT)72 152.4 S
-(he time \(as seconds since January 1, 1970\) of the last deli)114.11 152.4 Q
--.15(ve)-.25 G(ry attempt.).15 E 32.67(IT)72 168.6 S .724
-(he i-number of the data \214le; this can be used to reco)114.11 168.6 R -.15
-(ve)-.15 G 3.225(ry).15 G .725(our mail queue after a disastrous disk)350.23
-168.6 R(crash.)108 180.6 Q 31($A)72 196.8 S .83(macro de\214nition.)118.55
-196.8 R .83(The v)5.83 F .829
-(alues of certain macros \(as of this writing, only)-.25 F F0($r)3.329 E F1
-(and)3.329 E F0($s)3.329 E F1 3.329(\)a)C .829(re passed)466.241 196.8 R
-(through to the queue run phase.)108 208.8 Q 29.33(BT)72 225 S .924
-(he body type.)114.11 225 R .925(The remainder of the line is a te)5.924 F .925
-(xt string de\214ning the body type.)-.15 F .925(If this \214eld is)5.925 F
-.009(missing, the body type is assumed to be \231unde\214ned\232 and no specia\
-l processing is attempted.)108 237 R(Le)5.008 E -.05(ga)-.15 G(l).05 E -.25(va)
-108 249 S(lues are \2317BIT\232 and \2318BITMIME\232.).25 E 28.78(OT)72 265.2 S
-(he original MTS v)114.11 265.2 Q(alue \(from the ESMTP transaction\).)-.25 E
--.15(Fo)5 G 2.5(rD).15 G(eli)359.52 265.2 Q -.15(ve)-.25 G 2.5(rS).15 G
-(tatus Noti\214cations only)389.95 265.2 Q(.)-.65 E 29.89(ZT)72 281.4 S
-(he original en)114.11 281.4 Q -.15(ve)-.4 G
-(lope id \(from the ESMTP transaction\).).15 E -.15(Fo)5 G 2.5(rD).15 G(eli)
-360.88 281.4 Q -.15(ve)-.25 G 2.5(rS).15 G(tatus Noti\214cations only)391.31
-281.4 Q(.)-.65 E 4.072(As an e)97 297.6 R 4.072(xample, the follo)-.15 F 4.073
-(wing is a queue \214le sent to \231eric@mammoth.Berk)-.25 F(ele)-.1 E -.65(y.)
--.15 G 4.073(EDU\232 and).65 F(\231bostic@ok)72 311.6 Q(eef)-.1 E(fe.CS.Berk)
--.25 E(ele)-.1 E -.65(y.)-.15 G(EDU\232).65 E/F2 7/Times-Roman@0 SF(1)219.09
-307.6 Q F1(:)222.59 311.6 Q(P835771)112 327.8 Q(T404261372)112 339.8 Q(Seric)
-112 351.8 Q(Ceric:sendmail@v)112 363.8 Q(angogh.CS.Berk)-.25 E(ele)-.1 E -.65
-(y.)-.15 G(EDU).65 E(Reric@mammoth.Berk)112 375.8 Q(ele)-.1 E -.65(y.)-.15 G
-(EDU).65 E(Rbostic@ok)112 387.8 Q(eef)-.1 E(fe.CS.Berk)-.25 E(ele)-.1 E -.65
-(y.)-.15 G(EDU).65 E(H?P?return-path: <o)112 399.8 Q(wner)-.25 E(-sendmail@v)
--.2 E(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G(EDU>).65 E(Hrecei)112
-411.8 Q -.15(ve)-.25 G(d: by v).15 E(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)
--.15 G(EDU \(5.108/2.7\) id AAA06703;).65 E(Fri, 17 Jul 92 00:28:55 -0700)132
-423.8 Q(Hrecei)112 435.8 Q -.15(ve)-.25 G(d: from mail.CS.Berk).15 E(ele)-.1 E
--.65(y.)-.15 G(EDU by v).65 E(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G
-(EDU \(5.108/2.7\)).65 E(id AAA06698; Fri, 17 Jul 92 00:28:54 -0700)132 447.8 Q
-(Hrecei)112 459.8 Q -.15(ve)-.25 G(d: from [128.32.31.21] by mail.CS.Berk).15 E
-(ele)-.1 E -.65(y.)-.15 G(EDU \(5.96/2.5\)).65 E
-(id AA22777; Fri, 17 Jul 92 03:29:14 -0400)132 471.8 Q(Hrecei)112 483.8 Q -.15
-(ve)-.25 G(d: by foo.bar).15 E(.baz.de \(5.57/Ultrix3.0-C\))-.55 E
-(id AA22757; Fri, 17 Jul 92 09:31:25 GMT)132 495.8 Q(H?F?from: eric@foo.bar)112
-507.8 Q(.baz.de \(Eric Allman\))-.55 E(H?x?full-name: Eric Allman)112 519.8 Q
-(Hmessage-id: <9207170931.AA22757@foo.bar)112 531.8 Q(.baz.de>)-.55 E(HT)112
-543.8 Q(o: sendmail@v)-.8 E(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G(EDU)
-.65 E(Hsubject: this is an e)112 555.8 Q(xample message)-.15 E .657(This sho)72
-572 R .658(ws the person who sent the message, the submission time \(in second\
-s since January 1, 1970\), the)-.25 F(message priority)72 584 Q 2.5(,t)-.65 G
-(he message class, the recipients, and the headers for the message.)145.51 584
-Q .32 LW 76 669.2 72 669.2 DL 80 669.2 76 669.2 DL 84 669.2 80 669.2 DL 88
-669.2 84 669.2 DL 92 669.2 88 669.2 DL 96 669.2 92 669.2 DL 100 669.2 96 669.2
-DL 104 669.2 100 669.2 DL 108 669.2 104 669.2 DL 112 669.2 108 669.2 DL 116
-669.2 112 669.2 DL 120 669.2 116 669.2 DL 124 669.2 120 669.2 DL 128 669.2 124
-669.2 DL 132 669.2 128 669.2 DL 136 669.2 132 669.2 DL 140 669.2 136 669.2 DL
-144 669.2 140 669.2 DL 148 669.2 144 669.2 DL 152 669.2 148 669.2 DL 156 669.2
-152 669.2 DL 160 669.2 156 669.2 DL 164 669.2 160 669.2 DL 168 669.2 164 669.2
-DL 172 669.2 168 669.2 DL 176 669.2 172 669.2 DL 180 669.2 176 669.2 DL 184
-669.2 180 669.2 DL 188 669.2 184 669.2 DL 192 669.2 188 669.2 DL 196 669.2 192
-669.2 DL 200 669.2 196 669.2 DL 204 669.2 200 669.2 DL 208 669.2 204 669.2 DL
-212 669.2 208 669.2 DL 216 669.2 212 669.2 DL/F3 5/Times-Roman@0 SF(1)93.6
-679.6 Q/F4 8/Times-Roman@0 SF .719(This e)3.2 J .719(xample is contri)-.12 F
--.12(ve)-.2 G 2.719(da).12 G .719(nd probably inaccurate for your en)186.968
-682.8 R 2.719(vironment. Glance)-.32 F -.12(ove)2.718 G 2.718(ri).12 G 2.718
-(tt)384.998 682.8 S 2.718(og)392.164 682.8 S .718
-(et an idea; nothing can replace)402.882 682.8 R(looking at what your o)72
-692.4 Q(wn system generates.)-.2 E EP
-%%Page: 69 64
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 12/Times-Bold@0 SF 3(APPENDIX C)249.672 98.4 R(SUMMAR)198.282 141.6 Q 3(YO)
--.42 G 3(FS)274.182 141.6 S(UPPOR)291.186 141.6 Q 3(TF)-.48 G(ILES)350.37 141.6
-Q/F1 10/Times-Roman@0 SF 1.52(This is a summary of the support \214les that)97
-201 R/F2 10/Times-Italic@0 SF(sendmail)4.019 E F1 1.519(creates or generates.)
-4.019 F(Man)6.519 E 4.019(yo)-.15 G 4.019(ft)444.743 201 S 1.519(hese can be)
-454.872 201 R(changed by editing the sendmail.cf \214le; check there to \214nd\
- the actual pathnames.)72 213 Q(/usr/sbin/sendmail)72 229.2 Q(The binary of)144
-241.2 Q F2(sendmail)2.5 E F1(.)A(/usr/bin/ne)72 257.4 Q -.1(wa)-.25 G(liases).1
-E 3.734(Al)144 269.4 S 1.235
-(ink to /usr/sbin/sendmail; causes the alias database to be reb)157.734 269.4 R
-3.735(uilt. Running)-.2 F 1.235(this pro-)3.735 F(gram is completely equi)144
-281.4 Q -.25(va)-.25 G(lent to gi).25 E(ving)-.25 E F2(sendmail)2.5 E F1(the)
-2.5 E/F3 10/Times-Bold@0 SF(\255bi)2.5 E F1(\215ag.)2.5 E 13.38
-(/usr/bin/mailq Prints)72 297.6 R 3.703(al)3.703 G 1.203
-(isting of the mail queue.)181.966 297.6 R 1.202(This program is equi)6.203 F
--.25(va)-.25 G 1.202(lent to using the).25 F F3(\255bp)3.702 E F1 1.202
-(\215ag to)3.702 F F2(sendmail)144 309.6 Q F1(.)A 5.9(/etc/sendmail.cf The)72
-325.8 R(con\214guration \214le, in te)2.5 E(xtual form.)-.15 E
-(/usr/lib/sendmail.hf)72 342 Q(The SMTP help \214le.)144 354 Q 7
-(/etc/sendmail.st A)72 370.2 R(statistics \214le; need not be present.)2.5 E
-.89(/etc/sendmail.pid Created)72 386.4 R .318
-(in daemon mode; it contains the process id of the current SMTP daemon.)2.818 F
-.318(If you)5.318 F .338(use this in scripts; use `)144 398.4 R .338
-(`head \2551')-.74 F 2.838('t)-.74 G 2.838(og)285.786 398.4 S .338
-(et just the \214rst line; later v)298.624 398.4 R .337(ersions of)-.15 F F2
-(sendmail)2.837 E F1(may)2.837 E(add information to subsequent lines.)144 410.4
-Q 25.62(/etc/aliases The)72 426.6 R(te)2.5 E(xtual v)-.15 E
-(ersion of the alias \214le.)-.15 E(/etc/aliases.{pag,dir})72 442.8 Q
-(The alias \214le in)144 454.8 Q F2(dbm)2.5 E F1(\(3\) format.)1.666 E(/v)72
-471 Q(ar/spool/mqueue)-.25 E
-(The directory in which the mail queue and temporary \214les reside.)144 483 Q
-(/v)72 499.2 Q(ar/spool/mqueue/qf*)-.25 E
-(Control \(queue\) \214les for messages.)144 511.2 Q(/v)72 527.4 Q
-(ar/spool/mqueue/df*)-.25 E(Data \214les.)144 539.4 Q(/v)72 555.6 Q
-(ar/spool/mqueue/tf*)-.25 E -.7(Te)144 567.6 S(mporary v).7 E
-(ersions of the qf \214les, used during queue \214le reb)-.15 E(uild.)-.2 E(/v)
-72 583.8 Q(ar/spool/mqueue/xf*)-.25 E 2.5(At)144 595.8 S
-(ranscript of the current session.)156.5 595.8 Q F3
-(Sendmail Installation and Operation Guide)72 756 Q(SMM:08-69)452.9 756 Q EP
-%%Page: 2 65
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 198.36(SMM:08-2 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
-(This page intentionally left blank;)256.225 300 Q
-(replace it with a blank sheet for double-sided output.)218.6 312 Q EP
-%%Page: 3 66
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-3)457.9 60 Q/F1 12/Times-Roman@0 SF -1.116(TA)263.226 98.4 S
-(BLE OF CONTENTS)1.116 E/F2 10/Times-Roman@0 SF 2.5(1. B)72 124.8 R(ASIC INST)
--.35 E(ALLA)-.93 E 1.18(TION .................................................\
-..............................................................)-1.11 F(7)499
-124.8 Q 2.5(1.1. Compiling)87 139.2 R .43(Sendmail ...........................\
-..............................................................................\
-.....)2.5 F(7)499 139.2 Q 2.5(1.1.1. T)102 153.6 R(weaking the Mak)-.8 E 1.64(\
-e\214le ......................................................................\
-...........................)-.1 F(7)499 153.6 Q 2.5(1.1.2. Compilation)102 168
-R(and installation)2.5 E 28.5(................................................\
-........................................ 8)4.6 F 2.5(1.2. Con\214guration)87
-182.4 R .99(Files ............................................................\
-....................................................)2.5 F(8)499 182.4 Q 2.5
-(1.3. Details)87 196.8 R(of Installation Files)2.5 E 28.5(....................\
-..............................................................................\
-. 9)4.89 F 2.5(1.3.1. /usr/sbin/sendmail)102 211.2 R 28.5(....................\
-..............................................................................\
-....... 9)2.66 F 2.5(1.3.2. /etc/sendmail.cf)102 225.6 R 28.5(................\
-..............................................................................\
-.............. 9)4.9 F 2.5(1.3.3. /usr/bin/ne)102 240 R -.1(wa)-.25 G 2.19(lia\
-ses ..........................................................................\
-.............................).1 F(10)494 240 Q 2.5(1.3.4. /v)102 254.4 R 1.81
-(ar/spool/mqueue .............................................................\
-...........................................)-.25 F(10)494 254.4 Q 2.5
-(1.3.5. /etc/aliases*)102 268.8 R 23.5(.......................................\
-........................................................................... 10)
-4.62 F 2.5(1.3.6. /etc/rc)102 283.2 R 23.5(...................................\
-..............................................................................\
-........... 10)3.51 F 2.5(1.3.7. /usr/lib/sendmail.hf)102 297.6 R 23.5(.......\
-..............................................................................\
-.................. 11)2.94 F 2.5(1.3.8. /etc/sendmail.st)102 312 R 23.5(......\
-..............................................................................\
-......................... 11)3.5 F 2.5(1.3.9. /usr/bin/mailq)102 326.4 R 23.5(\
-..............................................................................\
-................................. 11)4.88 F 2.5(2. NORMAL)72 340.8 R(OPERA)2.5
-E 1.56(TIONS .................................................................\
-............................................)-1.11 F(11)494 340.8 Q 2.5
-(2.1. The)87 355.2 R(System Log)2.5 E 23.5(...................................\
-..............................................................................\
-... 11)4.89 F 2.5(2.1.1. F)102 369.6 R 2.26(ormat ............................\
-..............................................................................\
-................)-.15 F(11)494 369.6 Q 2.5(2.1.2. Le)102 384 R -.15(ve)-.25 G
-2.24(ls ......................................................................\
-.....................................................).15 F(13)494 384 Q 2.5
-(2.2. Dumping)87 398.4 R .72(State ...........................................\
-............................................................................)
-2.5 F(13)494 398.4 Q 2.5(2.3. The)87 412.8 R(Mail Queue)2.5 E 23.5(...........\
-..............................................................................\
-............................ 13)2.96 F 2.5(2.3.1. Printing)102 427.2 R
-(the queue)2.5 E 23.5(........................................................\
-................................................. 14)2.67 F 2.5(2.3.2. F)102
-441.6 R(orcing the queue)-.15 E 23.5(.........................................\
-................................................................ 14)3.94 F 2.5
-(2.4. The)87 456 R(Service Switch)2.5 E 23.5(.................................\
-..............................................................................\
-. 14)2.68 F 2.5(2.5. The)87 470.4 R(Alias Database)2.5 E 23.5(................\
-..............................................................................\
-.................. 15)2.69 F 2.5(2.5.1. Reb)102 484.8 R
-(uilding the alias database)-.2 E 23.5(.......................................\
-................................................ 16)4.27 F 2.5
-(2.5.2. Potential)102 499.2 R .72(problems ...................................\
-.....................................................................)2.5 F(16)
-494 499.2 Q 2.5(2.5.3. List)102 513.6 R -.25(ow)2.5 G 1.81(ners ..............\
-..............................................................................\
-.......................).25 F(16)494 513.6 Q 2.5(2.6. User)87 528 R
-(Information Database)2.5 E 23.5(.............................................\
-....................................................... 17)2.7 F 2.5(2.7. Per)
-87 542.4 R(-User F)-.2 E(orw)-.15 E(arding \(.forw)-.1 E(ard Files\))-.1 E 23.5
-(.............................................................................\
-...... 17)4.09 F 2.5(2.8. Special)87 556.8 R(Header Lines)2.5 E 23.5(.........\
-..............................................................................\
-...................... 17)2.97 F 2.5(2.8.1. Errors-T)102 571.2 R 2.09(o: .....\
-..............................................................................\
-..................................)-.8 F(17)494 571.2 Q 2.5
-(2.8.2. Apparently-T)102 585.6 R 2.09(o: .....................................\
-........................................................................)-.8 F
-(17)494 585.6 Q 2.5(2.8.3. Precedence)102 600 R 23.5(.........................\
-..............................................................................\
-............. 17)2.97 F 2.5(2.9. IDENT)87 614.4 R(Protocol Support)2.5 E 23.5(\
-..............................................................................\
-......................... 18)2.95 F 2.5(3. ARGUMENTS)72 628.8 R 23.5(.........\
-..............................................................................\
-........................................ 18)3.78 F 2.5(3.1. Queue)87 643.2 R
-(Interv)2.5 E 1.55(al ........................................................\
-...............................................................)-.25 F(18)494
-643.2 Q 2.5(3.2. Daemon)87 657.6 R 1.29(Mode .................................\
-..............................................................................\
-........)2.5 F(18)494 657.6 Q 2.5(3.3. F)87 672 R(orcing the Queue)-.15 E 23.5
-(.............................................................................\
-.................................... 19)4.22 F 2.5(3.4. Deb)87 686.4 R 1.76(ug\
-ging .........................................................................\
-....................................................)-.2 F(19)494 686.4 Q 2.5
-(3.5. Changing)87 700.8 R(the V)2.5 E(alues of Options)-1.11 E 23.5(..........\
-..............................................................................\
-.... 19)3.23 F 2.5(3.6. T)87 715.2 R(rying a Dif)-.35 E
-(ferent Con\214guration File)-.25 E 23.5(.....................................\
-.............................................. 20)4.67 F EP
-%%Page: 4 67
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 198.36(SMM:08-4 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 2.5
-(3.7. Logging)87 96 R -.35(Tr)2.5 G(af).35 E .5(\214c ........................\
-..............................................................................\
-................)-.25 F(20)494 96 Q 2.5(3.8. T)87 110.4 R
-(esting Con\214guration Files)-.7 E 23.5(.....................................\
-.............................................................. 20)4.19 F 2.5
-(4. TUNING)72 124.8 R 23.5(...................................................\
-..............................................................................\
-........ 21)2.68 F 2.5(4.1. T)87 139.2 R 1.07(imeouts ........................\
-..............................................................................\
-..........................)-.35 F(21)494 139.2 Q 2.5(4.1.1. Queue)102 153.6 R
-(interv)2.5 E 2.1(al .........................................................\
-.....................................................)-.25 F(21)494 153.6 Q 2.5
-(4.1.2. Read)102 168 R 1(timeouts ............................................\
-...................................................................)2.5 F(21)
-494 168 Q 2.5(4.1.3. Message)102 182.4 R 1.56(timeouts .......................\
-..............................................................................\
-....)2.5 F(22)494 182.4 Q 2.5(4.2. F)87 196.8 R(orking During Queue Runs)-.15 E
-23.5(.........................................................................\
-........................ 23)4.49 F 2.5(4.3. Queue)87 211.2 R .73(Priorities ..\
-..............................................................................\
-.....................................)2.5 F(23)494 211.2 Q 2.5(4.4. Load)87
-225.6 R .44(Limiting .........................................................\
-...............................................................)2.5 F(24)494
-225.6 Q 2.5(4.5. Deli)87 240 R -.15(ve)-.25 G(ry Mode).15 E 23.5(.............\
-..............................................................................\
-............................ 24)3.08 F 2.5(4.6. Log)87 254.4 R(Le)2.5 E -.15
-(ve)-.25 G 2.52(l.).15 G 23.5(................................................\
-..............................................................................\
- 24)153 254.4 R 2.5(4.7. File)87 268.8 R .72(Modes ...........................\
-..............................................................................\
-....................)2.5 F(25)494 268.8 Q 2.5(4.7.1. T)102 283.2 R 2.5(os)-.8 G
-(uid or not to suid?)146.2 283.2 Q 23.5(......................................\
-........................................................... 25)6.52 F 2.5
-(4.7.2. Should)102 297.6 R(my alias database be writable?)2.5 E 23.5
-(........................................................................ 25)
-5.47 F 2.5(4.8. Connection)87 312 R 1.56(Caching .............................\
-..............................................................................\
-...)2.5 F(25)494 312 Q 2.5(4.9. Name)87 326.4 R(Serv)2.5 E(er Access)-.15 E
-23.5(.........................................................................\
-..................................... 26)2.85 F 2.5(4.10. Mo)87 340.8 R
-(ving the Per)-.15 E(-User F)-.2 E(orw)-.15 E(ard Files)-.1 E 23.5(...........\
-......................................................................... 27)
-3.84 F 2.5(4.11. Free)87 355.2 R 1.85(Space ..................................\
-..............................................................................\
-...........)2.5 F(27)494 355.2 Q 2.5(4.12. Maximum)87 369.6 R(Message Size)2.5
-E 23.5(.......................................................................\
-.............................. 27)4.62 F 2.5(4.13. Pri)87 384 R -.25(va)-.25 G
-.3 -.15(cy F).25 H 1.93(lags .................................................\
-......................................................................).15 F
-(27)494 384 Q 2.5(4.14. Send)87 398.4 R(to Me T)2.5 E 2.08(oo ................\
-..............................................................................\
-.....................)-.8 F(27)494 398.4 Q 2.5(5. THE)72 412.8 R
-(WHOLE SCOOP ON THE CONFIGURA)2.5 E(TION FILE)-1.11 E 23.5
-(........................................................ 28)4.64 F 2.5(5.1. R)
-87 427.2 R(and S \212 Re)2.5 E(writing Rules)-.25 E 23.5(.....................\
-............................................................................. \
-28)4.3 F 2.5(5.1.1. The)102 441.6 R(left hand side)2.5 E 23.5(................\
-..............................................................................\
-........... 28)4.07 F 2.5(5.1.2. The)102 456 R(right hand side)2.5 E 23.5(....\
-..............................................................................\
-..................... 29)3.51 F 2.5(5.1.3. Semantics)102 470.4 R(of re)2.5 E
-(writing rule sets)-.25 E 23.5(...............................................\
-.................................... 30)4.6 F 2.5(5.1.4. IPC)102 484.8 R 1(mai\
-lers .........................................................................\
-..........................................)2.5 F(31)494 484.8 Q 2.5(5.2. D)87
-499.2 R 2.5<8a44>2.5 G(e\214ne Macro)136.44 499.2 Q 23.5(.....................\
-..............................................................................\
-............. 31)3.52 F 2.5(5.3. C)87 513.6 R(and F \212 De\214ne Classes)2.5 E
-23.5(.........................................................................\
-............................ 34)2.67 F 2.5(5.4. M)87 528 R 2.5<8a44>2.5 G
-(e\214ne Mailer)138.11 528 Q 23.5(............................................\
-................................................................... 35)3.79 F
-2.5(5.5. H)87 542.4 R 2.5<8a44>2.5 G(e\214ne Header)136.44 542.4 Q 23.5(......\
-..............................................................................\
-........................... 38)3.25 F 2.5(5.6. O)87 556.8 R 2.5<8a53>2.5 G
-(et Option)134.78 556.8 Q 23.5(...............................................\
-...................................................................... 38)3.22
-F 2.5(5.7. P)87 571.2 R 2.5<8a50>2.5 G(recedence De\214nitions)133.12 571.2 Q
-23.5(.........................................................................\
-......................... 46)2.96 F 2.5(5.8. V)87 585.6 R 2.5<8a43>2.5 G
-(on\214guration V)135.89 585.6 Q(ersion Le)-1.11 E -.15(ve)-.25 G 2.8(l.).15 G
-23.5(.........................................................................\
-............... 46)248 585.6 R 2.5(5.9. K)87 600 R 2.5<8a4b>2.5 G .3 -.15(ey F)
-136.19 600 T(ile Declaration).15 E 23.5(......................................\
-............................................................... 47)2.81 F 2.5
-(5.10. The)87 614.4 R(User Database)2.5 E 23.5(...............................\
-..............................................................................\
-. 50)4.92 F 2.5(5.10.1. Structure)102 628.8 R(of the user database)2.5 E 23.5(\
-..............................................................................\
-....... 50)2.7 F 2.5(5.10.2. User)102 643.2 R(database semantics)2.5 E 23.5(..\
-..............................................................................\
-............. 51)3.25 F 2.5(5.10.3. Creating)102 659.6 R(the database)2.5 E/F2
-7/Times-Roman@0 SF(21)220.59 655.6 Q F1 23.5(.................................\
-.............................................................. 51)230.5 659.6 R
-2.5(6. O)72 674 R(THER CONFIGURA)-.4 E 1.97(TION .............................\
-............................................................................)
--1.11 F(52)494 674 Q 2.5(6.1. P)87 688.4 R(arameters in src/Mak)-.15 E 1.55(e\
-\214le .......................................................................\
-.............................)-.1 F(52)494 688.4 Q 2.5(6.2. P)87 702.8 R
-(arameters in src/conf.h)-.15 E 23.5(.........................................\
-............................................................... 52)4.23 F 2.5
-(6.3. Con\214guration)87 717.2 R(in src/conf.c)2.5 E 23.5(....................\
-..............................................................................\
-.. 55)3.51 F EP
-%%Page: 5 68
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-5)457.9 60 Q/F1 10/Times-Roman@0 SF 2.5(6.3.1. Built-in)102 96 R
-(Header Semantics)2.5 E 23.5(.................................................\
-.......................................... 55)4.9 F 2.5(6.3.2. Restricting)102
-110.4 R(Use of Email)2.5 E 23.5(..............................................\
-................................................ 56)4.34 F 2.5(6.3.3. Load)102
-124.8 R -1.17 -.74(Av e)2.5 H(rage Computation).74 E 23.5(....................\
-...................................................................... 57)2.74
-F 2.5(6.3.4. Ne)102 139.2 R 2.5(wD)-.25 G(atabase Map Classes)157.85 139.2 Q
-23.5(.........................................................................\
-................ 57)4.89 F 2.5(6.3.5. Queueing)102 153.6 R 1.56(Function .....\
-..............................................................................\
-....................)2.5 F(58)494 153.6 Q 2.5(6.3.6. Refusing)102 168 R
-(Incoming SMTP Connections)2.5 E 23.5
-(....................................................................... 58)
-2.94 F 2.5(6.3.7. Load)102 182.4 R -1.17 -.74(Av e)2.5 H(rage Computation).74 E
-23.5(.........................................................................\
-................. 58)2.74 F 2.5(6.4. Con\214guration)87 196.8 R
-(in src/daemon.c)2.5 E 23.5(..................................................\
-............................................ 58)4.62 F 2.5(7. CHANGES)72 211.2
-R(IN VERSION 8)2.5 E 23.5(....................................................\
-...................................................... 59)4.9 F 2.5
-(7.1. Connection)87 225.6 R 1.56(Caching .....................................\
-.........................................................................)2.5 F
-(59)494 225.6 Q 2.5(7.2. MX)87 240 R 2.39(Piggybacking .......................\
-..............................................................................\
-............)2.5 F(59)494 240 Q 2.5(7.3. RFC)87 254.4 R(1123 Compliance)2.5 E
-23.5(.........................................................................\
-................................. 59)3.77 F 2.5(7.4. Extended)87 268.8 R
-(SMTP Support)2.5 E 23.5(.....................................................\
-.................................................. 59)2.94 F 2.5
-(7.5. Eight-Bit)87 283.2 R .44(Clean .........................................\
-.............................................................................)
-2.5 F(59)494 283.2 Q 2.5(7.6. User)87 297.6 R .47(Database ...................\
-..............................................................................\
-.......................)2.5 F(59)494 297.6 Q 2.5(7.7. Impro)87 312 R -.15(ve)
--.15 G 2.5(dB).15 G(IND Support)154.75 312 Q 23.5(............................\
-........................................................................... 60)
-3.81 F 2.5(7.8. K)87 326.4 R -.15(ey)-.25 G(ed Files).15 E 23.5(..............\
-..............................................................................\
-................................ 60)3.35 F 2.5(7.9. Multi-W)87 340.8 R
-(ord Classes)-.8 E 23.5(......................................................\
-......................................................... 60)3.47 F 2.5
-(7.10. Deferred)87 355.2 R(Macro Expansion)2.5 E 23.5(........................\
-......................................................................... 60)
-4.65 F 2.5(7.11. IDENT)87 369.6 R(Protocol Support)2.5 E 23.5(................\
-..............................................................................\
-....... 60)2.95 F 2.5(7.12. P)87 384 R(arsing Bug Fix)-.15 E .46(es ..........\
-..............................................................................\
-........................)-.15 F(60)494 384 Q 2.5(7.13. Separate)87 398.4 R(En)
-2.5 E -.15(ve)-.4 G(lope/Header Processing).15 E 23.5(........................\
-........................................................ 60)4.37 F 2.5
-(7.14. Owner)87 412.8 R(-List Propag)-.2 E(ates to En)-.05 E -.15(ve)-.4 G 1.27
-(lope ........................................................................\
-............).15 F(60)494 412.8 Q 2.5(7.15. Dynamic)87 427.2 R
-(Header Allocation)2.5 E 23.5(................................................\
-................................................ 60)3.25 F 2.5(7.16. Ne)87
-441.6 R 2.5(wC)-.25 G(ommand Line Flags)139.8 441.6 Q 23.5(...................\
-..............................................................................\
-. 60)3.2 F 2.5(7.17. Enhanced)87 456 R(Command Line Flags)2.5 E 23.5(.........\
-..............................................................................\
-.. 61)4.9 F 2.5(7.18. Ne)87 470.4 R 2.5(wa)-.25 G
-(nd Old Con\214guration Line T)137.57 470.4 Q .4(ypes ........................\
-......................................................)-.8 F(61)494 470.4 Q 2.5
-(7.19. Ne)87 484.8 R 2.5(wO)-.25 G .7(ptions .................................\
-..............................................................................\
-.........)140.35 484.8 R(61)494 484.8 Q 2.5(7.20. Extended)87 499.2 R 1.56(Opt\
-ions .........................................................................\
-.......................................)2.5 F(61)494 499.2 Q 2.5(7.21. Ne)87
-513.6 R 2.5(wM)-.25 G(ailer Flags)142.02 513.6 Q 23.5(........................\
-..............................................................................\
-.......... 61)4.04 F 2.5(7.22. Long)87 528 R(Option Names)2.5 E 23.5(.........\
-..............................................................................\
-..................... 62)4.34 F 2.5(7.23. Ne)87 542.4 R 2.5(wP)-.25 G
-(re-De\214ned Macros)138.69 542.4 Q 23.5(.....................................\
-............................................................... 62)4.06 F 2.5
-(7.24. Ne)87 556.8 R 2.5(wL)-.25 G(HS T)139.24 556.8 Q(ok)-.8 E 1.33(en ......\
-..............................................................................\
-..............................)-.1 F(62)494 556.8 Q 2.5(7.25. Bigger)87 571.2 R
-(Def)2.5 E(aults .............................................................\
-.......................................................)-.1 E(62)494 571.2 Q
-2.5(7.26. Dif)87 585.6 R(ferent Def)-.25 E(ault T)-.1 E(uning P)-.45 E 1.99(ar\
-ameters ......................................................................\
-............)-.15 F(62)494 585.6 Q 2.5(7.27. Auto-Quoting)87 600 R
-(in Addresses)2.5 E 23.5(.....................................................\
-............................................ 63)3.51 F 2.5(7.28. Symbolic)87
-614.4 R(Names On Error Mailer)2.5 E 23.5(.....................................\
-................................................. 63)4.91 F 2.5(7.29. SMTP)87
-628.8 R(VRFY Doesn')2.5 E 2.5(tE)-.18 G 1.18(xpand ...........................\
-.................................................................)209.88 628.8
-R(63)494 628.8 Q 2.5(7.30. [IPC])87 643.2 R(Mailers Allo)2.5 E 2.5(wM)-.25 G
-(ultiple Hosts)205.91 643.2 Q 23.5(...........................................\
-........................................ 63)3.75 F 2.5(7.31. Aliases)87 657.6 R
-1.29(Extended ................................................................\
-.................................................)2.5 F(63)494 657.6 Q 2.5
-(7.32. Portability)87 672 R(and Security Enhancements)2.5 E 23.5(.............\
-.................................................................. 63)2.68 F
-2.5(7.33. Miscellaneous)87 686.4 R 1.29(Changes ..............................\
-.........................................................................)2.5 F
-(63)494 686.4 Q 2.5(8. A)72 700.8 R(CKNO)-.4 E .1(WLEDGEMENTS ................\
-..............................................................................\
-..............)-.35 F(63)494 700.8 Q(Appendix A.)72 715.2 Q(COMMAND LINE FLA)5
-E 1.97(GS ....................................................................\
-.....................)-.4 F(65)494 715.2 Q EP
-%%Page: 6 69
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF 198.36(SMM:08-6 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(Appendix B.)72
-96 Q -.1(QU)5 G(EUE FILE FORMA).1 E 1.38(TS ..................................\
-..........................................................)-1.11 F(67)494 96 Q
-(Appendix C.)72 110.4 Q(SUMMAR)5 E 2.5(YO)-.65 G 2.5(FS)188.85 110.4 S(UPPOR)
-202.47 110.4 Q 2.5(TF)-.6 G 1.12(ILES ........................................\
-......................................)248.27 110.4 R(69)494 110.4 Q EP
-%%Trailer
-end
-%%EOF
diff --git a/usr.sbin/sendmail/mail.local/Makefile b/usr.sbin/sendmail/mail.local/Makefile
deleted file mode 100644
index e8556d8ea5c6..000000000000
--- a/usr.sbin/sendmail/mail.local/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 7/19/93
-
-PROG= mail.local
-MAN8= mail.local.0
-BINOWN= root
-BINMODE=4555
-INSTALLFLAGS=-fschg
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/sendmail/mail.local/mail.local.8 b/usr.sbin/sendmail/mail.local/mail.local.8
deleted file mode 100644
index 661615c462f8..000000000000
--- a/usr.sbin/sendmail/mail.local/mail.local.8
+++ /dev/null
@@ -1,105 +0,0 @@
-.\" Copyright (c) 1990, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)mail.local.8 8.2 (Berkeley) 12/11/93
-.\"
-.Dd December 11, 1993
-.Dt MAIL.LOCAL 8
-.Os
-.Sh NAME
-.Nm mail.local
-.Nd store mail in a mailbox
-.Sh SYNOPSIS
-.Nm mail.local
-.Op Fl f Ar from
-.Ar user ...
-.Sh DESCRIPTION
-.Nm Mail.local
-reads the standard input up to an end-of-file and appends it to each
-.Ar user's
-.Pa mail
-file.
-The
-.Ar user
-must be a valid user name.
-.Pp
-The options are as follows:
-.Bl -tag -width xxxfrom
-.It Fl f Ar from
-Specify the sender's name.
-.El
-.Pp
-Individual mail messages in the mailbox are delimited by an empty
-line followed by a line beginning with the string ``From ''.
-A line containing the string ``From '', the sender's name and a time stamp
-is prepended to each delivered mail message.
-A blank line is appended to each message.
-A greater-than character (``>'') is prepended to any line in the message
-which could be mistaken for a ``From '' delimiter line.
-.Pp
-The mail files are exclusively locked with
-.Xr flock 2
-while mail is appended.
-.Pp
-If the ``biff'' service is returned by
-.Xr getservbyname 3 ,
-the biff server is notified of delivered mail.
-.Pp
-The
-.Nm mail.local
-utility exits 0 on success, and >0 if an error occurs.
-.Sh ENVIRONMENT
-.Bl -tag -width indent
-.It Ev TZ
-Used to set the appropriate time zone on the timestamp.
-.El
-.Sh FILES
-.Bl -tag -width /tmp/local.XXXXXX -compact
-.It Pa /tmp/local.XXXXXX
-temporary files
-.It Pa /var/mail/user
-user's mailbox directory
-.El
-.Sh SEE ALSO
-.Xr mail 1 ,
-.Xr xsend 1 ,
-.Xr flock 2 ,
-.Xr getservbyname 3 ,
-.Xr comsat 8 ,
-.Xr sendmail 8
-.Sh HISTORY
-A superset of
-.Nm mail.local
-(handling mailbox reading as well as mail delivery)
-appeared in
-.At v7 .
-as the program
-.Nm mail .
diff --git a/usr.sbin/sendmail/mail.local/pathnames.h b/usr.sbin/sendmail/mail.local/pathnames.h
deleted file mode 100644
index 8e43925450f6..000000000000
--- a/usr.sbin/sendmail/mail.local/pathnames.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)pathnames.h 8.1 (Berkeley) 6/4/93
- */
-#include <paths.h>
-
-#define _PATH_LOCTMP "/tmp/local.XXXXXX"
diff --git a/usr.sbin/sendmail/mailstats/Makefile b/usr.sbin/sendmail/mailstats/Makefile
deleted file mode 100644
index d1a39961448d..000000000000
--- a/usr.sbin/sendmail/mailstats/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# @(#)Makefile 8.2 (Berkeley) 9/21/96
-
-PROG= mailstats
-MAN8= mailstats.0
-CFLAGS+=-I${.CURDIR}/../src
-
-.include "../../Makefile.inc"
-.include <bsd.prog.mk>
diff --git a/usr.sbin/sendmail/makemap/Makefile b/usr.sbin/sendmail/makemap/Makefile
deleted file mode 100644
index e64e0934c922..000000000000
--- a/usr.sbin/sendmail/makemap/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# @(#)Makefile 8.4 (Berkeley) 6/10/97
-
-PROG= makemap
-MAN8= makemap.0
-CFLAGS+=-I${.CURDIR}/../src -DNEWDB -DNOT_SENDMAIL
-
-SRCS= makemap.c safefile.c
-
-safefile.c: ${.CURDIR}/../src/safefile.c
- ln -s ${.CURDIR}/../src/safefile.c
-
-.include "../../Makefile.inc"
-.include <bsd.prog.mk>
diff --git a/usr.sbin/sendmail/praliases/Makefile b/usr.sbin/sendmail/praliases/Makefile
deleted file mode 100644
index 4285a5b2c315..000000000000
--- a/usr.sbin/sendmail/praliases/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# @(#)Makefile 8.2 (Berkeley) 9/21/96
-
-PROG= praliases
-MAN8= praliases.0
-CFLAGS+=-I${.CURDIR}/../src
-DPADD= ${LIBDBM}
-
-.include "../../Makefile.inc"
-.include <bsd.prog.mk>
diff --git a/usr.sbin/sendmail/praliases/praliases.c b/usr.sbin/sendmail/praliases/praliases.c
deleted file mode 100644
index 361edac6d242..000000000000
--- a/usr.sbin/sendmail/praliases/praliases.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 1983 Eric P. Allman
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char copyright[] =
-"@(#) Copyright (c) 1988, 1993\n\
- The Regents of the University of California. All rights reserved.\n";
-#endif /* not lint */
-
-#ifndef lint
-static char sccsid[] = "@(#)praliases.c 8.5 (Berkeley) 5/28/97";
-#endif /* not lint */
-
-#include <ndbm.h>
-#define NOT_SENDMAIL
-#include <sendmail.h>
-#ifdef NEWDB
-#include <db.h>
-#endif
-
-int
-main(argc, argv)
- int argc;
- char **argv;
-{
- extern char *optarg;
- extern int optind;
- DBM *dbp;
- datum content, key;
- char *filename;
- int ch;
-#ifdef NEWDB
- const DB *db;
- DBT newdbkey, newdbcontent;
- char buf[MAXNAME];
-#endif
-
- filename = "/etc/aliases";
- while ((ch = getopt(argc, argv, "f:")) != EOF)
- switch((char)ch) {
- case 'f':
- filename = optarg;
- break;
- case '?':
- default:
- (void)fprintf(stderr, "usage: praliases [-f file]\n");
- exit(EX_USAGE);
- }
- argc -= optind;
- argv += optind;
-
-#ifdef NEWDB
- if (strlen(filename) + 4 >= sizeof buf)
- {
- fprintf(stderr, "Alias filename too long: %.30s...\n", filename);
- exit(EX_USAGE);
- }
- (void) strcpy(buf, filename);
- (void) strcat(buf, ".db");
- if (db = dbopen(buf, O_RDONLY, 0444 , DB_HASH, NULL)) {
- if (!argc) {
- while(!db->seq(db, &newdbkey, &newdbcontent, R_NEXT))
- printf("%.*s:%.*s\n",
- newdbkey.size, newdbkey.data,
- newdbcontent.size, newdbcontent.data);
- }
- else for (; *argv; ++argv) {
- newdbkey.data = *argv;
- newdbkey.size = strlen(*argv) + 1;
- if (!db->get(db, &newdbkey, &newdbcontent, 0))
- printf("%s:%.*s\n", newdbkey.data,
- newdbcontent.size, newdbcontent.data);
- else
- printf("%s: No such key\n",
- newdbkey.data);
- }
- }
- else {
-#endif
- if ((dbp = dbm_open(filename, O_RDONLY, 0)) == NULL) {
- (void)fprintf(stderr,
- "praliases: %s: %s\n", filename, strerror(errno));
- exit(EX_OSFILE);
- }
- if (!argc)
- for (key = dbm_firstkey(dbp);
- key.dptr != NULL; key = dbm_nextkey(dbp)) {
- content = dbm_fetch(dbp, key);
- (void)printf("%.*s:%.*s\n",
- key.dsize, key.dptr,
- content.dsize, content.dptr);
- }
- else for (; *argv; ++argv) {
- key.dptr = *argv;
- key.dsize = strlen(*argv) + 1;
- content = dbm_fetch(dbp, key);
- if (!content.dptr)
- (void)printf("%s: No such key\n", key.dptr);
- else
- (void)printf("%s:%.*s\n", key.dptr,
- content.dsize, content.dptr);
- }
-#ifdef NEWDB
- }
-#endif
- exit(EX_OK);
-}
diff --git a/usr.sbin/sendmail/rmail/Makefile b/usr.sbin/sendmail/rmail/Makefile
deleted file mode 100644
index eb2fb4800850..000000000000
--- a/usr.sbin/sendmail/rmail/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 5/31/93
-
-PROG= rmail
-MAN8= rmail.0
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/sendmail/rmail/rmail.8 b/usr.sbin/sendmail/rmail/rmail.8
deleted file mode 100644
index 2079d4e9f8a7..000000000000
--- a/usr.sbin/sendmail/rmail/rmail.8
+++ /dev/null
@@ -1,71 +0,0 @@
-.\" Copyright (c) 1983, 1990 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)rmail.8 6.10 (Berkeley) 4/29/93
-.\"
-.Dd April 29, 1993
-.Dt RMAIL 8
-.Os BSD 4.2
-.Sh NAME
-.Nm rmail
-.Nd handle remote mail received via uucp
-.Sh SYNOPSIS
-.Nm rmail
-.Ar user ...
-.Sh DESCRIPTION
-.Nm Rmail
-interprets incoming mail received via
-.Xr uucp 1 ,
-collapsing ``From'' lines in the form generated
-by
-.Xr mail.local 8
-into a single line of the form ``return-path!sender'',
-and passing the processed mail on to
-.Xr sendmail 8 .
-.Pp
-.Nm Rmail
-is explicitly designed for use with
-.Xr uucp
-and
-.Xr sendmail .
-.Sh SEE ALSO
-.Xr uucp 1 ,
-.Xr mail.local 8 ,
-.Xr sendmail 8
-.Sh HISTORY
-The
-.Nm rmail
-program appeared in
-.Bx 4.2 .
-.Sh BUGS
-.Nm Rmail
-should not reside in
-.Pa /bin .
diff --git a/usr.sbin/sendmail/smrsh/Makefile b/usr.sbin/sendmail/smrsh/Makefile
deleted file mode 100644
index f2629a8c1926..000000000000
--- a/usr.sbin/sendmail/smrsh/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 7/2/95
-
-PROG= smrsh
-MAN8= smrsh.0
-CFLAGS+=-I${.CURDIR}/../src -DNDBM -DNEWDB
-
-.include "../../Makefile.inc"
-.include <bsd.prog.mk>
diff --git a/usr.sbin/sendmail/src/Makefile b/usr.sbin/sendmail/src/Makefile
deleted file mode 100644
index 0be76ad3ac7a..000000000000
--- a/usr.sbin/sendmail/src/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-# @(#)Makefile 8.8 (Berkeley) 3/28/97
-
-#########################################################################
-# This Makefile is for 4.4BSD only!!! For all other systems, use #
-# the "makesendmail" script. #
-#########################################################################
-
-PROG= sendmail
-
-# define the database format to use for aliases et al. Can be -DNEWDB (for
-# the new BSD database package -- this is preferred) or -DNDBM for the NDBM
-# database package. The old putrescent V7 DBM package is no longer
-# supported.
-# You can define both NEWDB and NDBM during a transition period; old
-# databases are read, but the new format will be used on any rebuilds. On
-# really gnarly systems, you can set this to null; it will crawl like a high
-# spiral snail, but it will work.
-DBMDEF= -DNEWDB
-
-CFLAGS+=-I${.CURDIR} ${DBMDEF} -DNETISO
-
-SRCS= alias.c arpadate.c clock.c collect.c conf.c convtime.c daemon.c \
- deliver.c domain.c envelope.c err.c headers.c macro.c main.c map.c \
- mci.c mime.c parseaddr.c queue.c readcf.c recipient.c safefile.c \
- savemail.c srvrsmtp.c stab.c stats.c sysexits.c trace.c udb.c \
- usersmtp.c util.c version.c
-DPADD=
-LDADD=
-MAN1= mailq.0 newaliases.0
-MAN5= aliases.0
-MAN8= sendmail.0
-LINKS= /usr/sbin/sendmail /usr/bin/newaliases \
- /usr/sbin/sendmail /usr/bin/mailq
-BINDIR= /usr/sbin
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-beforeinstall:
-# install -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
-# ${DESTDIR}/etc/sendmail.fc
- install -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${DESTDIR}/var/log/sendmail.st
- install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${.CURDIR}/sendmail.hf \
- ${DESTDIR}/usr/share/misc
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.386BSD b/usr.sbin/sendmail/src/Makefiles/Makefile.386BSD
deleted file mode 100644
index 10b27919def6..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.386BSD
+++ /dev/null
@@ -1,43 +0,0 @@
-# @(#)Makefile.386BSD 8.3 (Berkeley) 9/13/95
-
-PROG= sendmail
-
-# define the database format to use for aliases et al. Can be -DNEWDB (for
-# the new BSD database package -- this is preferred) or -DNDBM for the NDBM
-# database package. The old putrescent V7 DBM package is no longer
-# supported.
-# You can define both NEWDB and NDBM during a transition period; old
-# databases are read, but the new format will be used on any rebuilds. On
-# really gnarly systems, you can set this to null; it will crawl like a high
-# spiral snail, but it will work.
-DBMDEF= -DNEWDB
-
-CFLAGS+=-I${.CURDIR} ${DBMDEF} -DMIME
-
-SRCS= alias.c arpadate.c clock.c collect.c conf.c convtime.c daemon.c \
- deliver.c domain.c envelope.c err.c headers.c macro.c main.c map.c \
- mci.c mime.c parseaddr.c queue.c readcf.c recipient.c savemail.c \
- srvrsmtp.c stab.c stats.c sysexits.c trace.c udb.c usersmtp.c \
- util.c version.c
-DPADD=
-LDADD= $(LIBUTIL)
-MAN1= newaliases.0 mailq.0
-MAN5= aliases.0
-MAN8= sendmail.0
-LINKS= /usr/sbin/sendmail /usr/bin/newaliases \
- /usr/sbin/sendmail /usr/bin/mailq
-INSTALL=install
-BINDIR= /usr/sbin
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-beforeinstall:
-# ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
-# ${DESTDIR}/etc/sendmail.fc
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${DESTDIR}/var/log/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 ${.CURDIR}/sendmail.hf \
- ${DESTDIR}/usr/share/misc
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.A-UX b/usr.sbin/sendmail/src/Makefiles/Makefile.A-UX
deleted file mode 100644
index 6a303c07a691..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.A-UX
+++ /dev/null
@@ -1,113 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# @(#)Makefile.A-UX 8.12 (Berkeley) 9/13/95
-#
-# Tested on A/UX 3.1.
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-# If you are running A/UX prior to 3.1, delete -DNEWDB
-DBMDEF= -DNDBM -DNEWDB
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -D_POSIX_SOURCE
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-# If you are running A/UX prior to 3.1, delete -ldb
-LIBS= -ldbm -ldb -lposix -lmalloc
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do ; rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.AIX b/usr.sbin/sendmail/src/Makefiles/Makefile.AIX
deleted file mode 100644
index 2858b93a9033..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.AIX
+++ /dev/null
@@ -1,116 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on AIX 3.1.5 and 3.2.3e.
-#
-# @(#)Makefile.AIX 8.10 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-# you can use -O3 on AIX 3.2.4 or greater ONLY!
-O= -g
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNEWDB -DNIS
-#
-# If you did not install the NEWDB on your AIX platform, use:
-#DBMDEF=-DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -D_AIX3
-
-# see also conf.h for additional compilation flags
-
-# include directories
-#INCDIRS=-I/usr/sww/include
-
-# library directories
-#LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system -- add -ls if you define USEGETCONFATTR
-LIBS= -ldbm -ldb
-#
-# If you did not install the NEWDB on your AIX platform, use:
-#LIBS= -ldbm
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/sbin
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/etc
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/sbin/newaliases ${DESTDIR}/usr/sbin/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= system
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.Altos b/usr.sbin/sendmail/src/Makefiles/Makefile.Altos
deleted file mode 100644
index 2b37f922e61f..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.Altos
+++ /dev/null
@@ -1,109 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on Altos System V.
-#
-# @(#)Makefile.Altos 8.4 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF=
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DALTOS_SYS_V
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lsocket -lrpc
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.BSD-OS b/usr.sbin/sendmail/src/Makefiles/Makefile.BSD-OS
deleted file mode 100644
index 7b79abbf2a62..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.BSD-OS
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# This Makefile is for BSDI boxes running BSD-OS (formerly BSD-386).
-#
-# @(#)Makefile.BSD-OS 8.4 (Berkeley) 9/13/95
-#
-
-PROG= sendmail
-DBMDEF= -DNEWDB
-CFLAGS+=-I${.CURDIR} ${DBMDEF} -DNETISO
-
-SRCS= alias.c arpadate.c clock.c collect.c conf.c convtime.c daemon.c \
- deliver.c domain.c envelope.c err.c headers.c macro.c main.c map.c \
- mci.c mime.c parseaddr.c queue.c readcf.c recipient.c savemail.c \
- srvrsmtp.c stab.c stats.c sysexits.c trace.c udb.c usersmtp.c \
- util.c version.c
-DPADD= ${LIBUTIL} ${LIBKVM}
-LDADD= -lutil -lkvm
-MAN1= mailq.0 newaliases.0
-MAN5= aliases.0
-MAN8= sendmail.0
-LINKS= /usr/sbin/sendmail /usr/bin/newaliases \
- /usr/sbin/sendmail /usr/bin/mailq
-INSTALL=install
-BINDIR= /usr/sbin
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-beforeinstall:
-# ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
-# ${DESTDIR}/etc/sendmail.fc
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${DESTDIR}/var/log/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 ${.CURDIR}/sendmail.hf \
- ${DESTDIR}/usr/share/misc
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.BSD43 b/usr.sbin/sendmail/src/Makefiles/Makefile.BSD43
deleted file mode 100644
index 37423c7e06fc..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.BSD43
+++ /dev/null
@@ -1,128 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This is based on work from Jim Oldroyd -- I believe he was
-# using a fairly old Mt Xinu port.
-#
-# It should also work on UMIPS-BSD from MIPS, if you still have
-# any lying around.
-#
-# @(#)Makefile.BSD43 8.8 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DoldBSD43
-
-# see also conf.h for additional compilation flags
-
-# include directories
-#INCDIRS=-I/usr/sww/include
-
-# library directories
-#LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-LIBS= -ldbm -lresolv -ll
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-# additional pseudo-sources needed
-BEFORE= unistd.h stddef.h stdlib.h dirent.h sys/time.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-unistd.h stddef.h stdlib.h sys/time.h:
- cp /dev/null $@
-
-sys/time.h: sys
-
-sys:
- mkdir sys
-
-dirent.h:
- echo "#include <sys/dir.h>" > dirent.h
- echo "#define dirent direct" >> dirent.h
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.CLIX b/usr.sbin/sendmail/src/Makefiles/Makefile.CLIX
deleted file mode 100644
index debb2e1767f4..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.CLIX
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# This makefile is for clipper-based Intergraph systems running CLIX.
-# It and the defines supporting it in the source tree should be considered
-# alpha-quality and used at own risk.
-#
-# Porting done for CICNet, Inc., on behalf the Michigan State Department
-# of Natural Resources.
-#
-# --Paul Southworth <pauls@cic.net>
-#
-# @(#)Makefile.CLIX 8.5 (Berkeley) 9/13/95
-#
-
-# make sure the shell constructs below use the right shell
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-CC= gcc
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DCLIX
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS= -I/usr/include
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lnsl -lbsd
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD= getusershell.o
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/bin/newaliases ${DESTDIR}/usr/bin/mailq
-INSTALL=cp
-BINOWN= root
-BINGRP= mail
-BINMODE=6555
-
-ALL= sendmail # aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail #install-docs
-
-install-sendmail: sendmail
- #${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- ${INSTALL} sendmail ${BINDIR}
- chmod ${BINMODE} ${BINDIR}/sendmail
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- #${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- # ${STDIR}/sendmail.st
- ${INSTALL} /dev/null ${STDIR}/sendmail.st
- #${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
- ${INSTALL} sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail #aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.CSOS b/usr.sbin/sendmail/src/Makefiles/Makefile.CSOS
deleted file mode 100644
index 8cf32292ed86..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.CSOS
+++ /dev/null
@@ -1,114 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- which is fine since there is no nroff under CSOS.
-#
-# Contributed by Scott Bolte <scott@craycos.com>.
-#
-# @(#)Makefile.CSOS 8.6 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-# Contact CCC for new db support. If all goes well, it should be
-# available soon.
-#
-DBMDEF=
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-#INCDIRS=-I/usr/sww/include
-
-# loader options
-LDOPTS=
-
-# library directories
-#LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-#LIBS= -ldb -ldbm
-LIBS= -lnet
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=cpset
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-SHELL= /bin/sh
-
-ALL= sendmail
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail
-
-install-sendmail: sendmail
- ${INSTALL} sendmail ${BINDIR} ${BINMODE} ${BINOWN} ${BINGRP}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} /dev/null ${STDIR}/sendmail.st 644 ${BINOWN} ${BINGRP}
- ${INSTALL} sendmail.hf ${HFDIR} 444 ${BINOWN} ${BINGRP}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.ConvexOS b/usr.sbin/sendmail/src/Makefiles/Makefile.ConvexOS
deleted file mode 100644
index e158b17c95b2..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.ConvexOS
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on CxOS 11.0 beta 1 and 10.x.
-#
-# @(#)Makefile.ConvexOS 8.9 (Berkeley) 9/13/95
-#
-
-
-# use O=-O (usual) or O=-g (debugging)
-O= -g -D__STDC__ -d non_int_bit_field
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DYPCOMPAT -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-#INCDIRS=-I/usr/sww/include
-
-# library directories
-#LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-LIBS=
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.Dell b/usr.sbin/sendmail/src/Makefiles/Makefile.Dell
deleted file mode 100644
index ffce495d1e04..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.Dell
+++ /dev/null
@@ -1,117 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# Based on a Makefile for Dell SVR4 Issue 2.2 from Kimmo Suominen
-# <kim@grendel.lut.fi> -- I haven't tested this myself. It may
-# work on other SVR4 ports.
-#
-# @(#)Makefile.Dell 8.7 (Berkeley) 9/13/95
-#
-
-# make sure the shell constructs below use the right shell
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O2
-
-CC= gcc
-#DESTDIR=/usr/local/sendmail
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNEWDB -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -D__svr4__
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -ldb -ldbm -lresolv -lsocket -lnsl -lelf
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/ucblib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= mail
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.DomainOS b/usr.sbin/sendmail/src/Makefiles/Makefile.DomainOS
deleted file mode 100644
index 5f8417de40e3..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.DomainOS
+++ /dev/null
@@ -1,128 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on DomainOS 10.3.5
-#
-# @(#)Makefile.DomainOS 8.10 (Berkeley) 10/29/95
-#
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNDBM -DNEWDB -DYPCOMPAT -- use both plus YP compatility
-# -DNIS -- include client NIS support
-# The really old (V7) DBM library is no longer supported.
-# If YPCOMPAT is defined and /var/yp/Makefile exists, sendmail will build
-# both the NEWDB and DBM libraries (the DBM just for YP).
-#
-
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-# You might want to use the BIND 4.9 resolver library here
-#LIBS= -ldb
-LIBS= -lresolv
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-# additional pseudo-sources needed
-BEFORE= unistd.h dirent.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. -A nansi $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-unistd.h:
- cp /dev/null unistd.h
-
-dirent.h:
- echo "#include <sys/dir.h>" > dirent.h
- echo "#define dirent direct" >> dirent.h
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.Dynix b/usr.sbin/sendmail/src/Makefiles/Makefile.Dynix
deleted file mode 100644
index ee5a6ce36342..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.Dynix
+++ /dev/null
@@ -1,118 +0,0 @@
-#
-# Tested on Dynix 3.2.0.
-#
-# From Jim Davis <jdavis@cs.arizona.edu>.
-#
-# ``There is no strtol in libc (well there is in the 'att universe'
-# libc, but I couldn't figure out how to link that in), so I
-# got the Chris Torek strtol.c from bsd-sources on uunet and
-# compiled that. There is no native ndbm either; I couldn't
-# get db 1.72 to pass it's regression test, so I used gdbm-1.7
-# instead. I compiled it with gcc 1.40a. The -lseq is to pick
-# up getopt.''
-#
-# @(#)Makefile.Dynix 8.7 (Berkeley) 9/13/95
-#
-
-CC= gcc
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O -g
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lseq -lgdbm
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=strtol.o
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= staff # no kmem group,
-BINMODE=4555 # so not setgid
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.EWS-UX_V b/usr.sbin/sendmail/src/Makefiles/Makefile.EWS-UX_V
deleted file mode 100644
index 5eed83189723..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.EWS-UX_V
+++ /dev/null
@@ -1,132 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on NEC EWS-UX/V 4.2
-#
-# @(#)Makefile.EWS-UX_V 8.5 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# make sure that /usr/abiccs/bin/cc is used (do not use /usr/ucb/cc).
-#CC= /bin/cc -KOlimit=900
-CC= /usr/abiccs/bin/cc -KOlimit=900
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -Dnec_ews_svr4
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-# delete -l44bsd if you are not running BIND 4.9.x
-LIBS= ndbm.o -lsocket -lnsl -lelf -lresolv # -l44bsd # with NDBM
-#LIBS= -lsocket -lnsl -lelf -ldb -lresolv # -l44bsd # with NEWDB
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/ucblib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/var/ucblib
-
-# additional .o files needed
-OBJADD=
-
-# things to be made before compilation begins
-BEFORE= sysexits.h ndbm.h ndbm.o
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-sysexits.h:
- echo '#ifndef _LOCAL_SYSEXITS_H_' > sysexits.h;
- echo '#define _LOCAL_SYSEXITS_H_' >> sysexits.h;
- cat /usr/abiccs/ucbinclude/sysexits.h >> sysexits.h;
- echo '#endif /* _LOCAL_SYSEXITS_H_ */' >> sysexits.h;
-# ln -s /usr/abiccs/ucbinclude/sysexits.h .
-
-ndbm.h:
- ln -s /usr/abiccs/ucbinclude/ndbm.h .
-
-ndbm.o:
- ar x /usr/abiccs/ucblib/libucb.a ndbm.o
-# ar x /usr/ucblib/libucb.a ndbm.o
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.FreeBSD b/usr.sbin/sendmail/src/Makefiles/Makefile.FreeBSD
deleted file mode 100644
index a163f04ac4c3..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.FreeBSD
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# Makefile for FreeBSD
-#
-# @(#)Makefile.FreeBSD 8.4 (Berkeley) 9/13/95
-
-PROG= sendmail
-
-# define the database format to use for aliases et al. Can be -DNEWDB (for
-# the new BSD database package -- this is preferred) or -DNDBM for the NDBM
-# database package. The old putrescent V7 DBM package is no longer
-# supported.
-# You can define both NEWDB and NDBM during a transition period; old
-# databases are read, but the new format will be used on any rebuilds. On
-# really gnarly systems, you can set this to null; it will crawl like a high
-# spiral snail, but it will work.
-DBMDEF= -DNEWDB
-
-CFLAGS+=-I${.CURDIR} ${DBMDEF}
-
-SRCS= alias.c arpadate.c clock.c collect.c conf.c convtime.c daemon.c \
- deliver.c domain.c envelope.c err.c headers.c macro.c main.c map.c \
- mci.c mime.c parseaddr.c queue.c readcf.c recipient.c savemail.c \
- srvrsmtp.c stab.c stats.c sysexits.c trace.c udb.c usersmtp.c \
- util.c version.c
-DPADD=
-LDADD= $(LIBUTIL)
-#
-# FreeBSD 1.0 RELEASE has GNU man and doesn't need preformatted man pages anymore
-# (assuming you consider a slower "man" command a feature)
-#
-MAN1= mailq.1 newaliases.1
-MAN5= aliases.5
-MAN8= sendmail.8
-LINKS= /usr/sbin/sendmail /usr/bin/newaliases \
- /usr/sbin/sendmail /usr/bin/mailq
-INSTALL=install
-BINDIR= /usr/sbin
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-beforeinstall:
-# ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
-# ${DESTDIR}/etc/sendmail.fc
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${DESTDIR}/var/log/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 ${.CURDIR}/sendmail.hf \
- ${DESTDIR}/usr/share/misc
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.HP-UX b/usr.sbin/sendmail/src/Makefiles/Makefile.HP-UX
deleted file mode 100644
index 575dae388de5..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.HP-UX
+++ /dev/null
@@ -1,114 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on HP-UX 9.05 on 7xx series and HP-UX 9.04
-# on 8xx series.
-#
-# @(#)Makefile.HP-UX 8.14 (Berkeley) 11/1/95
-#
-
-CC= cc -Aa -D_HPUX_SOURCE
-
-# use O=-O (usual) or O=-g (debugging)
-# +O is OK on 7xx, and 300xx at 9.0
-O= +O1
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNEWDB -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-# delete -lresolv if you are not running BIND 4.9.x
-LIBS= -ldb -lndbm -lresolv
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/bin/newaliases ${DESTDIR}/usr/bin/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= mail
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- cpset sendmail ${BINDIR} ${BINMODE} ${BINOWN} ${BINGRP}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- cpset /dev/null ${STDIR}/sendmail.st 644 ${BINOWN} ${BINGRP}
- cpset sendmail.hf ${HFDIR} 444 ${BINOWN} ${BINGRP}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.HP-UX.10.x b/usr.sbin/sendmail/src/Makefiles/Makefile.HP-UX.10.x
deleted file mode 100644
index 993efedfd092..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.HP-UX.10.x
+++ /dev/null
@@ -1,114 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on HP-UX 10.x. Changes for 10.0 contributed
-# by John Beck of Hewlett-Packard.
-#
-# @(#)Makefile.HP-UX.10.x 8.8 (Berkeley) 11/1/95
-#
-
-CC= cc -Aa -D_HPUX_SOURCE
-
-# use O=-O (usual) or O=-g (debugging)
-# +O is OK on 7xx, and 300xx at 9.0
-O= +O3
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNEWDB -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DV4FS
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-# delete -lresolv if you are not running BIND 4.9.x
-LIBS= -ldb -lndbm -lresolv
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/sbin
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/etc/mail
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/share/lib
-
-# additional .o files needed
-OBJADD=
-
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/bin/newaliases ${DESTDIR}/usr/bin/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= mail
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- cpset sendmail ${BINDIR} ${BINMODE} ${BINOWN} ${BINGRP}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- cpset /dev/null ${STDIR}/sendmail.st 644 ${BINOWN} ${BINGRP}
- cpset sendmail.hf ${HFDIR} 444 ${BINOWN} ${BINGRP}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.IRIX b/usr.sbin/sendmail/src/Makefiles/Makefile.IRIX
deleted file mode 100644
index 2e2f3a196ff1..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.IRIX
+++ /dev/null
@@ -1,113 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on IRIX 4.0.4.
-#
-# @(#)Makefile.IRIX 8.10 (Berkeley) 9/13/95
-#
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-CC=gcc
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB (requires -ldb)
-# -DNIS -- include NIS support (requires -lsun)
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DIRIX
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lmld -lmalloc -lsun
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/bsd/newaliases ${DESTDIR}/usr/bsd/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -u ${BINOWN} -g ${BINGRP} -m ${BINMODE} -f ${BINDIR} sendmail
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- cp /dev/null ${STDIR}/sendmail.st
- chmod 644 ${STDIR}/sendmail.st
- chown ${BINOWN} ${STDIR}/sendmail.st
- chgrp ${BINGRP} ${STDIR}/sendmail.st
- ${INSTALL} -u ${BINOWN} -g ${BINGRP} -m 444 -f ${HFDIR} sendmail.hf
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.IRIX.5.x b/usr.sbin/sendmail/src/Makefiles/Makefile.IRIX.5.x
deleted file mode 100644
index cb1a7e886237..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.IRIX.5.x
+++ /dev/null
@@ -1,115 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# Tested on IRIX 5.3 by Kari E. Hurtta <Kari.Hurtta@fmi.fi>.
-#
-# @(#)Makefile.IRIX.5.x 8.7 (Berkeley) 9/26/95
-#
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB (requires -ldb)
-# -DNIS -- include NIS support (requires -lsun)
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-# N.B.: Include -D__BIT_TYPES_DEFINED__ if you use -DNEWDB!
-#
-DBMDEF= -DNDBM -DNIS
-#DBMDEF= -DNDBM -DNIS -DNEWDB -D__BIT_TYPES_DEFINED__
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DIRIX5
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lmld -lmalloc -lsun
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/bsd/newaliases ${DESTDIR}/usr/bsd/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -u ${BINOWN} -g ${BINGRP} -m ${BINMODE} -f ${BINDIR} sendmail
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- cp /dev/null ${STDIR}/sendmail.st
- chmod 644 ${STDIR}/sendmail.st
- chown ${BINOWN} ${STDIR}/sendmail.st
- chgrp ${BINGRP} ${STDIR}/sendmail.st
- ${INSTALL} -u ${BINOWN} -g ${BINGRP} -m 444 -f ${HFDIR} sendmail.hf
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.IRIX64 b/usr.sbin/sendmail/src/Makefiles/Makefile.IRIX64
deleted file mode 100644
index 1fec703a5ea5..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.IRIX64
+++ /dev/null
@@ -1,114 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on IRIX64 6.0.
-# Changes from Mark R. Levinson <ml@cvdev.rochester.edu>.
-#
-# @(#)Makefile.IRIX64 8.4 (Berkeley) 9/13/95
-#
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-CC=gcc
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB (requires -ldb)
-# -DNIS -- include NIS support (requires -lsun)
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DIRIX64
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lelf -lmalloc
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/bsd/newaliases ${DESTDIR}/usr/bsd/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -u ${BINOWN} -g ${BINGRP} -m ${BINMODE} -f ${BINDIR} sendmail
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- cp /dev/null ${STDIR}/sendmail.st
- chmod 644 ${STDIR}/sendmail.st
- chown ${BINOWN} ${STDIR}/sendmail.st
- chgrp ${BINGRP} ${STDIR}/sendmail.st
- ${INSTALL} -u ${BINOWN} -g ${BINGRP} -m 444 -f ${HFDIR} sendmail.hf
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.ISC b/usr.sbin/sendmail/src/Makefiles/Makefile.ISC
deleted file mode 100644
index 56f5131a37ec..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.ISC
+++ /dev/null
@@ -1,108 +0,0 @@
-#
-# Makefile for ISC (SunSoft) UNIX.
-#
-# Contributed by J.J. Bailey <jjb@jagware.bcc.com>
-#
-# @(#)Makefile.ISC 8.8 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DISC_UNIX -D_POSIX_SOURCE -D_SYSV3
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/local/include
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=-L/usr/local/lib
-
-# libraries required on your system
-LIBS= -lyp -lrpc -lndbm -linet -lcposix
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/spool/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.KSR b/usr.sbin/sendmail/src/Makefiles/Makefile.KSR
deleted file mode 100644
index c5995874f241..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.KSR
+++ /dev/null
@@ -1,112 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on KSR OS 1.2.2. Contributed by Todd C. Miller
-# <Todd.Miller@cs.colorado.edu>
-#
-# @(#)Makefile.KSR 8.2 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNEWDB -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib -L/usr/shlib -L/usr/lib
-
-# libraries required on your system
-# delete -lresolv if you are not running BIND 4.9.x
-LIBS= -ldbm -ldb -lresolv
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/sbin
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/adm/sendmail
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/share/lib
-
-# additional .o files needed
-OBJADD=
-
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${BINDIR}/newaliases ${BINDIR}/mailq
-INSTALL=installbsd
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDADD} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- cp /dev/null ${STDIR}/sendmail.st
- chmod 644 ${STDIR}/sendmail.st
- chown ${BINOWN}.${BINGRP} ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
- rm -f /usr/sbin/smtpd
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.LUNA b/usr.sbin/sendmail/src/Makefiles/Makefile.LUNA
deleted file mode 100644
index 29b2d58b0ce6..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.LUNA
+++ /dev/null
@@ -1,147 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# @(#)Makefile.LUNA 8.5 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-LIBS=
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-# additional pseudo-sources needed
-BEFORE= dirent.h stddef.h stdlib.h unistd.h limits.h time.h sys/time.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-dirent.h:
- echo "#include <sys/dir.h>" > dirent.h
- echo "#define dirent direct" >> dirent.h
-
-stddef.h unistd.h limits.h:
- if [ -f /usr/include/$@ ]; then \
- ln -s /usr/include/$@ .; \
- else \
- cp /dev/null $@; \
- fi
-
-stdlib.h:
- if [ -f /usr/include/stdlib.h ]; then \
- ln -s /usr/include/stdlib.h .; \
- else \
- if [ -f /usr/include/libc.h ]; then \
- ln -s /usr/include/libc.h stdlib.h; \
- else \
- cp /dev/null stdlib.h; \
- fi; \
- fi
-
-# just for UNIOS-B
-time.h:
- echo "#ifndef _LOCAL_TIME_H_" > time.h
- echo "#define _LOCAL_TIME_H_" >> time.h
- cat /usr/include/time.h >> time.h
- echo "#endif" >> time.h
-
-sys/time.h:
- -mkdir sys
- echo "#ifndef _LOCAL_SYS_TIME_H_" > sys/time.h
- echo "#define _LOCAL_SYS_TIME_H_" >> sys/time.h
- cat /usr/include/sys/time.h >> sys/time.h
- echo "#endif" >> sys/time.h
-
-NROFF= nroff -h
-
-aliases.0: aliases.5
- ${NROFF} -mandoc aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} -mandoc mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} -mandoc newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} -mandoc sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.Linux b/usr.sbin/sendmail/src/Makefiles/Makefile.Linux
deleted file mode 100644
index dc74ca81e01f..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.Linux
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on Linux 0.99p10.
-#
-# Linux doesn't really have standard places to install things, so this
-# Makefile is likely to require a lot of customization. Read it over
-# carefully before proceeding.
-#
-# If you don't want to install the Berkeley db package, remove -DNEWDB
-# from DBMDEF and -ldb from LIBS (but please consider installing it; see
-# the READ_ME file for details).
-#
-# This assumes libc 4.7.0 or later. If you have an earlier version of
-# the library, you may need to add -lbsd to LIBS *or* add -DHASSNPRINTF=0
-# to ENVDEF. If you are running libc < 4.4.4, you must use -DHASSNPRINTF=0
-# (or upgrade your libc -- an even better idea!).
-#
-# @(#)Makefile.Linux 8.15 (Berkeley) 9/26/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNEWDB
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/local/include
-
-# library directories
-LIBDIRS=-L/usr/local/lib
-
-# libraries required on your system
-LIBS= -lgdbm -ldb
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/sbin
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/etc
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-# additional pseudo-sources needed
-BEFORE=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/bin/newaliases ${DESTDIR}/usr/bin/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-unistd.h:
- cp /dev/null unistd.h
-
-dirent.h:
- echo "#include <sys/dir.h>" > dirent.h
- echo "#define dirent direct" >> dirent.h
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- cp /dev/null ${STDIR}/sendmail.st
- chmod 644 ${STDIR}/sendmail.st
- chown ${BINOWN} ${STDIR}/sendmail.st
- chgrp ${BINGRP} ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.Mach386 b/usr.sbin/sendmail/src/Makefiles/Makefile.Mach386
deleted file mode 100644
index b72826fb1d77..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.Mach386
+++ /dev/null
@@ -1,112 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# @(#)Makefile.Mach386 8.7 (Berkeley) 9/13/95
-#
-
-CC= gcc
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -ldbm
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.NCR3000 b/usr.sbin/sendmail/src/Makefiles/Makefile.NCR3000
deleted file mode 100644
index 894407b363f7..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.NCR3000
+++ /dev/null
@@ -1,113 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# NCR 3000 support from Kevin Darcy <kevin@tech.mis.cfc.com>
-# and Tom Moore <tmoore@fievel.DaytonOH.NCR.COM>.
-#
-# @(#)Makefile.NCR3000 8.11 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DNCR3000
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/include -I/usr/ucbinclude
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=-L/usr/ucblib
-
-# libraries required on your system
-LIBS= -lnsl -lnet -lsocket -lelf -lc -lucb
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/ucblib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/ucblib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-NROFF= /usr/ucb/nroff -h
-#NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.NEWS-OS.4.x b/usr.sbin/sendmail/src/Makefiles/Makefile.NEWS-OS.4.x
deleted file mode 100644
index 3add6acd22e7..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.NEWS-OS.4.x
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# @(#)Makefile.NEWS-OS.4.x 8.4 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-LIBS= -lmld
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.NEWS-OS.6.x b/usr.sbin/sendmail/src/Makefiles/Makefile.NEWS-OS.6.x
deleted file mode 100644
index 3bdd6a095d32..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.NEWS-OS.6.x
+++ /dev/null
@@ -1,133 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on NEWS-OS 6.0.3
-#
-# @(#)Makefile.NEWS-OS.6.x 8.5 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O=
-
-# make sure that /bin/cc is used (do not use /usr/ucb/cc).
-CC= /bin/cc
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-# define SYSLOG_BUFSIZE=256 if you have a problem on syslog buffer size
-# define SPT_TYPE=SPT_NONE if you are using NEWS-OS 6.0.1
-ENVDEF= -DSYSLOG_BUFSIZE=256 # -DSPT_TYPE=SPT_NONE
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-# delete -l44bsd if you are not running BIND 4.9.x
-# -lndbm can be used instead of ndbm.o with NEWS-OS 6.1 or later
-LIBS= ndbm.o -lelf -lsocket -lnsl -lresolv # -l44bsd # with NDBM
-#LIBS= -lelf -lsocket -lnsl -ldb -lresolv # -l44bsd # with NEWDB
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/etc
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-# things to be made before compilation begins
-BEFORE= sysexits.h ndbm.o
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-sysexits.h:
- ln -s /usr/ucbinclude/sysexits.h .
-
-ndbm.o:
- if [ ! -f /usr/include/ndbm.h ]; then \
- ln -s /usr/ucbinclude/ndbm.h .; \
- fi; \
- if [ -f /usr/lib/libndbm.a ]; then \
- ar x /usr/lib/libndbm.a ndbm.o; \
- else \
- ar x /usr/ucblib/libucb.a ndbm.o; \
- fi;
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.NEXTSTEP b/usr.sbin/sendmail/src/Makefiles/Makefile.NEXTSTEP
deleted file mode 100644
index 492cba18a682..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.NEXTSTEP
+++ /dev/null
@@ -1,128 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on NEXTSTEP 3.3.
-#
-# @(#)Makefile.NEXTSTEP 8.4 (Berkeley) 9/14/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# NEXTSTEP 3.1 and 3.2 only support m68k and i386
-ARCH= -arch m68k -arch i386 -arch hppa -arch sparc
-#ARCH= -arch m68k -arch i386
-
-COPTS= -Wno-precomp -pipe
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS -DNETINFO
-#DBMDEF= -DNDBM -DNEWDB -DNIS -DNETINFO
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DNeXT
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/local/include
-
-# library directories
-LIBDIRS=-L/usr/local/lib
-
-# libraries required on your system
-LIBS= -ldbm
-#LIBS= -ldbm -ldb
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/etc/sendmail
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-# additional pseudo-sources needed
-BEFORE= unistd.h dirent.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF} ${COPTS} ${ARCH}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} ${ARCH} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-unistd.h:
- cp /dev/null unistd.h
-
-dirent.h:
- echo "#include <sys/dir.h>" > dirent.h
- echo "#define dirent direct" >> dirent.h
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -s -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- cp /dev/null ${STDIR}/sendmail.st
- chown ${BINOWN}.${BINGRP} ${STDIR}/sendmail.st
- chmod 644 ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.NeXT b/usr.sbin/sendmail/src/Makefiles/Makefile.NeXT
deleted file mode 100644
index 5e3fa5f281fa..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.NeXT
+++ /dev/null
@@ -1,122 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on NeXT 2.1.
-#
-# @(#)Makefile.NeXT 8.10 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS -DNETINFO
-#DBMDEF= -DNDBM -DNEWDB -DNIS -DNETINFO
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DNeXT
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/local/include
-
-# library directories
-LIBDIRS=-L/usr/local/lib
-
-# libraries required on your system
-LIBS= -ldbm
-#LIBS= -ldbm -ldb
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/etc/sendmail
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-# additional pseudo-sources needed
-BEFORE= unistd.h dirent.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF} ${COPTS}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-unistd.h:
- cp /dev/null unistd.h
-
-dirent.h:
- echo "#include <sys/dir.h>" > dirent.h
- echo "#define dirent direct" >> dirent.h
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -s -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- cp /dev/null ${STDIR}/sendmail.st
- chown ${BINOWN}.${BINGRP} ${STDIR}/sendmail.st
- chmod 644 ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.NetBSD b/usr.sbin/sendmail/src/Makefiles/Makefile.NetBSD
deleted file mode 100644
index 9a6f36f2d82c..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.NetBSD
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# NetBSD Makefile
-#
-# @(#)Makefile.NetBSD 8.3 (Berkeley) 9/13/95
-# @Id: Makefile.NetBSD,v 1.3 1994/02/01 05:33:44 glass Exp $
-#
-
-PROG= sendmail
-
-# define the database format to use for aliases et al. Can be -DNEWDB (for
-# the new BSD database package -- this is preferred) or -DNDBM for the NDBM
-# database package. The old putrescent V7 DBM package is no longer
-# supported.
-# You can define both NEWDB and NDBM during a transition period; old
-# databases are read, but the new format will be used on any rebuilds. On
-# really gnarly systems, you can set this to null; it will crawl like a high
-# spiral snail, but it will work.
-DBMDEF= -DNEWDB -DNIS
-
-#nasty warning about gcc 2.4.x caused bugs
-CFLAGS=-I${.CURDIR} ${DBMDEF} -DNETISO
-#CFLAGS+=-I${.CURDIR} ${DBMDEF} -DNETISO
-
-SRCS= alias.c arpadate.c clock.c collect.c conf.c convtime.c daemon.c \
- deliver.c domain.c envelope.c err.c headers.c macro.c main.c map.c \
- mci.c mime.c parseaddr.c queue.c readcf.c recipient.c savemail.c \
- srvrsmtp.c stab.c stats.c sysexits.c trace.c udb.c usersmtp.c \
- util.c version.c
-MAN1= mailq.0 newaliases.0
-MAN5= aliases.0
-MAN8= sendmail.0
-LINKS= /usr/sbin/sendmail /usr/bin/newaliases \
- /usr/sbin/sendmail /usr/bin/mailq
-INSTALL=install
-BINDIR= /usr/sbin
-BINOWN= root
-BINMODE=4555
-
-beforeinstall:
-# ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
-# ${DESTDIR}/etc/sendmail.fc
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${DESTDIR}/var/log/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 ${.CURDIR}/sendmail.hf \
- ${DESTDIR}/usr/share/misc
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.NonStop-UX b/usr.sbin/sendmail/src/Makefiles/Makefile.NonStop-UX
deleted file mode 100644
index acb82156453b..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.NonStop-UX
+++ /dev/null
@@ -1,116 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# Tandem Support from Rick McCarty <mccarty@mpd.tandem.com>.
-# (I don't think this actually compiles cleanly -- I had trouble
-# integrating Rick's changes. EPA 6/94)
-#
-# @(#)Makefile.NonStop-UX 8.6 (Berkeley) 9/13/95
-#
-
-# make sure the shell constructs below use the right shell
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-CC= gcc
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DNonStop_UX_BXX -D_SVID
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/include -I/usr/ucbinclude
-
-# library directories
-LIBDIRS=-L/usr/ucblib
-
-# libraries required on your system
-LIBS= -lresolv -lsocket -lnsl -lelf -lucb
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/ucblib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= mail
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.OSF1 b/usr.sbin/sendmail/src/Makefiles/Makefile.OSF1
deleted file mode 100644
index de556d6d69ee..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.OSF1
+++ /dev/null
@@ -1,118 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on OSF/1 1.3
-#
-# @(#)Makefile.OSF1 8.9 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# native compiler requires -Olimit to optimize properly
-CC= cc -Olimit 1000
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNEWDB -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib -L/usr/shlib -L/usr/lib
-
-# libraries required on your system
-# delete -lresolv if you are not running BIND 4.9.x
-LIBS= -ldbm -ldb -lresolv
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/sbin
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/adm/sendmail
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/share/lib
-
-# additional .o files needed
-OBJADD=
-
-# additional link flags
-#LDADD= -non_shared
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${BINDIR}/newaliases ${BINDIR}/mailq
-INSTALL=installbsd
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDADD} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- cp /dev/null ${STDIR}/sendmail.st
- chmod 644 ${STDIR}/sendmail.st
- chown ${BINOWN}.${BINGRP} ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
- rm -f /usr/sbin/smtpd
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.PTX b/usr.sbin/sendmail/src/Makefiles/Makefile.PTX
deleted file mode 100644
index 2a6ffce153d4..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.PTX
+++ /dev/null
@@ -1,117 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# For Sequent DYNIX/ptx.
-#
-# From Tim "Pinball Wizard" Wright <timw@sequent.com>.
-#
-# @(#)Makefile.PTX 8.8 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -g
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-#INCDIRS=-I/usr/sww/include
-INCDIRS=
-
-# loader options
-LDOPTS=
-
-# library directories
-#LIBDIRS=-L/usr/sww/lib
-LIBDIRS=
-
-# libraries required on your system
-#LIBS= -ldb -ldbm
-LIBS= -lsocket -linet -lnsl -lseq
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/bin/newaliases ${DESTDIR}/usr/bin/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: $& ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.Paragon b/usr.sbin/sendmail/src/Makefiles/Makefile.Paragon
deleted file mode 100644
index d58119b72b18..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.Paragon
+++ /dev/null
@@ -1,114 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on OSF/1 1.3
-#
-# @(#)Makefile.Paragon 8.5 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib -L/usr/shlib -L/usr/lib
-
-# libraries required on your system
-LIBS= -ldbm
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/sbin
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/adm/sendmail
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/share/lib
-
-# additional .o files needed
-OBJADD=
-
-# additional link flags
-#LDADD= -non_shared
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${BINDIR}/newaliases ${BINDIR}/mailq
-INSTALL=installbsd
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDADD} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- cp /dev/null ${STDIR}/sendmail.st
- chmod 644 ${STDIR}/sendmail.st
- chown ${BINOWN}.${BINGRP} ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
- rm -f /usr/sbin/smtpd
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.RISCos b/usr.sbin/sendmail/src/Makefiles/Makefile.RISCos
deleted file mode 100644
index bbb507d1583f..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.RISCos
+++ /dev/null
@@ -1,122 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# For Mips RISC/os 4.52.
-#
-# @(#)Makefile.RISCos 8.11 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# be sure we are compiling in BSD mode
-CC= cc -systype bsd43 -Olimit 900
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DRISCOS
-
-# see also conf.h for additional compilation flags
-
-# include directories
-#INCDIRS=-I/usr/sww/include
-
-# library directories
-#LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-LIBS= -lmld
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/etc
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-# additional pseudo-sources needed
-BEFORE= stdlib.h dirent.h unistd.h stddef.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=/usr/bsd43/bin/install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-stdlib.h unistd.h stddef.h:
- cp /dev/null $@
-
-dirent.h:
- echo "#include <sys/dir.h>" > dirent.h
- echo "#define dirent direct" >> dirent.h
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.SCO b/usr.sbin/sendmail/src/Makefiles/Makefile.SCO
deleted file mode 100644
index c6ffaaf94f1d..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.SCO
+++ /dev/null
@@ -1,109 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on SCO.
-#
-# @(#)Makefile.SCO 8.8 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF=
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -D_SCO_unix_
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lsocket
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.SCO.3.2v4.2 b/usr.sbin/sendmail/src/Makefiles/Makefile.SCO.3.2v4.2
deleted file mode 100644
index 33289f62470b..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.SCO.3.2v4.2
+++ /dev/null
@@ -1,109 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# Tested on SCO rel 4.2 by Marian Durkovic <marian@svf.stuba.sk>.
-#
-# @(#)Makefile.SCO.3.2v4.2 8.2 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF=-DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -D_SCO_unix_4_2
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lsocket -lndbm
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.SVR4 b/usr.sbin/sendmail/src/Makefiles/Makefile.SVR4
deleted file mode 100644
index a6da0ba760ff..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.SVR4
+++ /dev/null
@@ -1,117 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# Based on a Makefile for Dell SVR4 Issue 2.2 from Kimmo Suominen
-# <kim@grendel.lut.fi> -- I haven't tested this myself. It may
-# work on other SVR4 ports.
-#
-# @(#)Makefile.SVR4 8.7 (Berkeley) 9/13/95
-#
-
-# make sure the shell constructs below use the right shell
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-CC= gcc
-#DESTDIR=/usr/local/sendmail
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNEWDB -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -D__svr4__
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -ldb -ldbm -lresolv -lsocket -lnsl -lelf
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/ucblib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= mail
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.Solaris b/usr.sbin/sendmail/src/Makefiles/Makefile.Solaris
deleted file mode 100644
index ccdffc5a19bd..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.Solaris
+++ /dev/null
@@ -1,124 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any significant work on sendmail).
-#
-# This has been tested on Solaris 2.1 and 2.2. If you are compiling
-# for Solaris 2.3, use Makefile.SunOS.5.x.
-#
-# @(#)Makefile.Solaris 8.15 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-# warning: do not use -O with versions of gcc prior to 2.6
-O= -O
-
-CC= gcc
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-# include -DSOLARIS_2_3 for version 2.3 and higher
-ENVDEF= -DSOLARIS
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-# delete -l44bsd if you are not running BIND 4.9.x
-LIBS= -lresolv -l44bsd -lsocket -lnsl -lelf
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/etc/mail
-
-# additional .o files needed
-OBJADD=
-
-# things to be made before compilation begins
-BEFORE= sysexits.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-sysexits.h:
- if [ -r /usr/ucbinclude/sysexits.h ]; \
- then \
- ln -s /usr/ucbinclude/sysexits.h; \
- fi
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS b/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS
deleted file mode 100644
index 61bb3d64e961..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS
+++ /dev/null
@@ -1,116 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on SunOS 4.1.[12].
-# For SunOS 4.0.3, add -DSUNOS403 to the ENVDEF macro, and
-# create empty files stdlib.h and stddef.h in your
-# compile directory.
-#
-# @(#)Makefile.SunOS 8.9 (Berkeley) 9/30/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNEWDB -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-# need to add -DSUNOS403 if you are on a SunOS 4.0.3 system
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# loader options
-LDOPTS= -Bstatic
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-LIBS= -ldb -lresolv
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/etc
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.4.0 b/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.4.0
deleted file mode 100644
index 083ac3aa2e31..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.4.0
+++ /dev/null
@@ -1,118 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any significant work on sendmail).
-#
-# You may find you need to find versions of some routines
-# such as strcasecmp in order to link this on SunOS 4.0.3.
-#
-# @(#)Makefile.SunOS.4.0 8.10 (Berkeley) 9/30/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNEWDB -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DSUNOS403
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# loader options
-LDOPTS= -Bstatic
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-LIBS= -ldb -lresolv
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/etc
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-BEFORE= stdlib.h stddef.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-stddef.h stdlib.h:
- cp /dev/null $@
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.1 b/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.1
deleted file mode 100644
index ccdffc5a19bd..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.1
+++ /dev/null
@@ -1,124 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any significant work on sendmail).
-#
-# This has been tested on Solaris 2.1 and 2.2. If you are compiling
-# for Solaris 2.3, use Makefile.SunOS.5.x.
-#
-# @(#)Makefile.Solaris 8.15 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-# warning: do not use -O with versions of gcc prior to 2.6
-O= -O
-
-CC= gcc
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-# include -DSOLARIS_2_3 for version 2.3 and higher
-ENVDEF= -DSOLARIS
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-# delete -l44bsd if you are not running BIND 4.9.x
-LIBS= -lresolv -l44bsd -lsocket -lnsl -lelf
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/etc/mail
-
-# additional .o files needed
-OBJADD=
-
-# things to be made before compilation begins
-BEFORE= sysexits.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-sysexits.h:
- if [ -r /usr/ucbinclude/sysexits.h ]; \
- then \
- ln -s /usr/ucbinclude/sysexits.h; \
- fi
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.2 b/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.2
deleted file mode 100644
index ccdffc5a19bd..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.2
+++ /dev/null
@@ -1,124 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any significant work on sendmail).
-#
-# This has been tested on Solaris 2.1 and 2.2. If you are compiling
-# for Solaris 2.3, use Makefile.SunOS.5.x.
-#
-# @(#)Makefile.Solaris 8.15 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-# warning: do not use -O with versions of gcc prior to 2.6
-O= -O
-
-CC= gcc
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-# include -DSOLARIS_2_3 for version 2.3 and higher
-ENVDEF= -DSOLARIS
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-# delete -l44bsd if you are not running BIND 4.9.x
-LIBS= -lresolv -l44bsd -lsocket -lnsl -lelf
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/etc/mail
-
-# additional .o files needed
-OBJADD=
-
-# things to be made before compilation begins
-BEFORE= sysexits.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-sysexits.h:
- if [ -r /usr/ucbinclude/sysexits.h ]; \
- then \
- ln -s /usr/ucbinclude/sysexits.h; \
- fi
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.3 b/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.3
deleted file mode 100644
index 125502c4dd31..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.3
+++ /dev/null
@@ -1,122 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on Solaris 2.3.
-#
-# @(#)Makefile.SunOS.5.3 8.16 (Berkeley) 10/20/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-# warning: do not use -O with versions of gcc prior to 2.6
-O= -O
-
-CC= gcc
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS -DNISPLUS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DSOLARIS=203
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-# delete -l44bsd if you are not running BIND 4.9.x
-LIBS= -lresolv -l44bsd -lsocket -lnsl -lelf
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/etc/mail
-
-# additional .o files needed
-OBJADD=
-
-# things to be made before compilation begins
-BEFORE= sysexits.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/bin/newaliases ${DESTDIR}/usr/bin/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-sysexits.h:
- if [ -r /usr/ucbinclude/sysexits.h ]; \
- then \
- ln -s /usr/ucbinclude/sysexits.h; \
- fi
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.4 b/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.4
deleted file mode 100644
index 272505a1ac35..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.4
+++ /dev/null
@@ -1,122 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on Solaris 2.4.
-#
-# @(#)Makefile.SunOS.5.4 8.17 (Berkeley) 10/20/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-# warning: do not use -O with versions of gcc prior to 2.6
-O= -O
-
-CC= gcc
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS -DNISPLUS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DSOLARIS=204
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-# delete -l44bsd if you are not running BIND 4.9.x
-LIBS= -lresolv -l44bsd -lsocket -lnsl -lelf
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/etc/mail
-
-# additional .o files needed
-OBJADD=
-
-# things to be made before compilation begins
-BEFORE= sysexits.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/bin/newaliases ${DESTDIR}/usr/bin/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-sysexits.h:
- if [ -r /usr/include/sysexits.h ]; \
- then \
- ln -s /usr/include/sysexits.h; \
- fi
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.5 b/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.5
deleted file mode 100644
index 67a47c890e89..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.SunOS.5.5
+++ /dev/null
@@ -1,122 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on Solaris 2.5.
-#
-# @(#)Makefile.SunOS.5.5 8.5 (Berkeley) 10/20/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-# warning: do not use -O with versions of gcc prior to 2.6
-O= -O
-
-CC= gcc
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS -DNISPLUS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DSOLARIS=205
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-# delete -l44bsd if you are not running BIND 4.9.x
-LIBS= -lresolv -l44bsd -lsocket -lnsl -lelf
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/etc/mail
-
-# additional .o files needed
-OBJADD=
-
-# things to be made before compilation begins
-BEFORE= sysexits.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/bin/newaliases ${DESTDIR}/usr/bin/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-sysexits.h:
- if [ -r /usr/include/sysexits.h ]; \
- then \
- ln -s /usr/include/sysexits.h; \
- fi
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.Titan b/usr.sbin/sendmail/src/Makefiles/Makefile.Titan
deleted file mode 100644
index 2419929b540d..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.Titan
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# @(#)Makefile.Titan 8.7 (Berkeley) 9/13/95
-#
-
-# put the compiler in BSD mode
-CC= cc -43
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -ldbm
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/share/misc
-
-# additional .o files needed
-OBJADD=
-
-# additional pseudo-sources needed
-BEFORE= stddef.h stdlib.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-stddef.h stdlib.h:
- cp /dev/null $@
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.ULTRIX b/usr.sbin/sendmail/src/Makefiles/Makefile.ULTRIX
deleted file mode 100644
index 0f3cd1d11750..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.ULTRIX
+++ /dev/null
@@ -1,117 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on Ultrix 4.2A and 4.3A.
-#
-# @(#)Makefile.ULTRIX 8.11 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# native compiler requires -Olimit to optimize properly
-CC= cc -Olimit 900
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNEWDB -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-# On Ultrix 4.4 and later, you can set IDENTPROTO=1.
-ENVDEF= -DIDENTPROTO=0
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-# delete -lresolv and -l44bsd if you are not running BIND 4.9.x
-LIBS= -ldb -lresolv -l44bsd
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.UMAX b/usr.sbin/sendmail/src/Makefiles/Makefile.UMAX
deleted file mode 100644
index f37c058f08ef..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.UMAX
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on Encore UMAX V
-#
-# @(#)Makefile.UMAX 8.7 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DUMAXV
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lyp -lrpc
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-# things to do before compilation
-BEFORE= stddef.h
-
-stddef.h:
- echo "#define _STDDEF_H" > stddef.h
- chmod 444 stddef.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.UNICOS b/usr.sbin/sendmail/src/Makefiles/Makefile.UNICOS
deleted file mode 100644
index f68e2857a0dd..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.UNICOS
+++ /dev/null
@@ -1,117 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# Should work with UNICOS 8.0. Note that you must also acquire
-# gdbm, as UNICOS does not have ndbm, and I had no luck at all
-# getting the Berkeley DB package to compile.
-# Douglas K. Rand, University of North Dakota
-# rand@aero.und.nodak.edu
-#
-# @(#)Makefile.UNICOS 8.4 (Berkeley) 9/13/95
-#
-
-# make sure the shell constructs below use the right shell
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DUNICOS
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/local/include
-
-# library directories
-LIBDIRS=-L/usr/local/lib
-
-# libraries required on your system
-LIBS=-lgdbm
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/etc/mail
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/etc/mail
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.UNIX_SV.4.x.i386 b/usr.sbin/sendmail/src/Makefiles/Makefile.UNIX_SV.4.x.i386
deleted file mode 100644
index 598bbc04c0c7..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.UNIX_SV.4.x.i386
+++ /dev/null
@@ -1,118 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# UnixWare 1.1 Makefile from John Warburton <jwarb@SACBH.com.au>.
-#
-# For UnixWare 2.x, use -DUNIXWARE2 in ENVDEF in place of -DUNIXWARE.
-#
-# @(#)Makefile.UNIX_SV.4.x.i386 8.6 (Berkeley) 9/26/95
-#
-
-# make sure the shell constructs below use the right shell
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-CC= gcc
-#DESTDIR=/usr/local/sendmail
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNEWDB -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -D__svr4__ -DUNIXWARE
-#ENVDEF= -D__svr4__ -DUNIXWARE2
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lc -ldbm -lresolv -lsocket -lnsl -lgen -lelf
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/ucblib
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= mail
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.UX4800 b/usr.sbin/sendmail/src/Makefiles/Makefile.UX4800
deleted file mode 100644
index 5ea295754c85..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.UX4800
+++ /dev/null
@@ -1,129 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# This has been tested on NEC UX4800.
-# Contributed by Kazuhisa Shimizu <shimizu@lang.csd.nes.nec.co.jp>.
-#
-# @(#)Makefile.UX4800 8.3 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# make sure that /usr/abiccs/bin/cc is used (do not use /usr/ucb/cc).
-#CC= /bin/cc -KOlimit=900
-CC= /usr/abiccs/bin/cc -KOlimit=900
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS # without NEWDB
-#DBMDEF= -DNEWDB -DNDBM -DNIS # with NEWDB
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DHASSNPRINTF=1
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/local/include
-
-# library directories
-LIBDIRS=-L/usr/local/lib
-
-# libraries required on your system
-# delete -l44bsd if you are not running BIND 4.9.x
-LIBS= -lsocket -lnsl -lelf -lresolv # -l44bsd # without NEWDB
-#LIBS= -lsocket -lnsl -lelf -ldb -lresolv # -l44bsd # with NEWDB
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/var/ucblib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/var/ucblib
-
-# additional .o files needed
-OBJADD=
-
-# things to be made before compilation begins
-BEFORE= sysexits.h ndbm.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-sysexits.h:
- echo '#ifndef _LOCAL_SYSEXITS_H_' > sysexits.h;
- echo '#define _LOCAL_SYSEXITS_H_' >> sysexits.h;
- cat /usr/abiccs/ucbinclude/sysexits.h >> sysexits.h;
- echo '#endif /* _LOCAL_SYSEXITS_H_ */' >> sysexits.h;
-
-ndbm.h:
- sed 's/void/char/' /usr/abiccs/include/ndbm.h > ndbm.h
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.UXPDS b/usr.sbin/sendmail/src/Makefiles/Makefile.UXPDS
deleted file mode 100644
index d4bfba47a38b..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.UXPDS
+++ /dev/null
@@ -1,130 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# Contributed by Diego R. Lopez <drlopez@cica.es>. Based on
-# Makefile.SVR4. I haven't tested this myself. It may
-# work on other SVR4 ports.
-#
-# @(#)Makefile.UXPDS 8.2 (Berkeley) 11/13/95
-#
-
-# make sure the shell constructs below use the right shell
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-#DESTDIR=/usr/local/sendmail
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DUXPDS
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/include -I/usr/ucbinclude
-
-# library directories
-LIBDIRS=-L/usr/ucblib
-
-# libraries required on your system
-LIBS= -ldbm -lresolv -lsocket -lnsl -lelf -lucb
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/ucblib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/ucblib
-
-# location and mode for man pages
-MAN1= /usr/share/man/bsd_man/cat1
-MAN4= /usr/share/man/bsd_man/cat4
-MANMODE=444
-
-# additional .o files needed
-OBJADD=
-
-# things to be made before compilation begins
-BEFORE=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-BINOWN= root
-BINGRP= mail
-BINMODE=6555
-INSTALL=/usr/ucb/install
-
-ALL= sendmail man-pages
-
-all: ${ALL}
-
-man-pages: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-NROFF= nroff -h
-
-aliases.0: aliases.5
- ${NROFF} -mandoc aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} -mandoc mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} -mandoc newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} -mandoc sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
- cp aliases.0 ${MAN4}/aliases.4
- chmod ${MANMODE} ${MAN4}/aliases.4
- cp mailq.0 ${MAN1}/mailq.1m
- chmod ${MANMODE} ${MAN1}/mailq.1m
- cp newaliases.0 ${MAN1}/newaliases.1m
- chmod ${MANMODE} ${MAN1}/newaliases.1m
- cp sendmail.0 ${MAN1}/sendmail.1m
- chmod ${MANMODE} ${MAN1}/sendmail.1m
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.Utah b/usr.sbin/sendmail/src/Makefiles/Makefile.Utah
deleted file mode 100644
index c5232b76cedb..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.Utah
+++ /dev/null
@@ -1,41 +0,0 @@
-# @(#)Makefile.Utah 8.3 (Berkeley) 9/13/95
-
-PROG= sendmail
-
-# define the database format to use for aliases et al. Can be -DNEWDB (for
-# the new BSD database package -- this is preferred) or -DNDBM for the NDBM
-# database package. The old putrescent V7 DBM package is no longer
-# supported.
-# You can define both NEWDB and NDBM during a transition period; old
-# databases are read, but the new format will be used on any rebuilds. On
-# really gnarly systems, you can set this to null; it will crawl like a high
-# spiral snail, but it will work.
-DBMDEF= -DNEWDB -DNDBM -DOLD_NEWDB
-
-CFLAGS+=-I${.CURDIR} ${DBMDEF} -Dsetpgid=setpgrp
-
-SRCS= alias.c arpadate.c clock.c collect.c conf.c convtime.c daemon.c \
- deliver.c domain.c envelope.c err.c headers.c macro.c main.c map.c \
- mci.c mci.c parseaddr.c queue.c readcf.c recipient.c savemail.c \
- srvrsmtp.c stab.c stats.c sysexits.c trace.c udb.c usersmtp.c \
- util.c version.c
-DPADD= ${LIBDBM} ${LIBCOMPAT}
-LDADD=
-MAN1= mailq.0 newaliases.0
-MAN5= aliases.0
-MAN8= sendmail.0
-LINKS= ${DESTDIR}/usr/sbin/sendmail ${DESTDIR}/usr/bin/newaliases \
- ${DESTDIR}/usr/sbin/sendmail ${DESTDIR}/usr/bin/mailq
-INSTALL=install
-BINDIR= /usr/sbin
-BINOWN= root
-BINGRP= kmem
-BINMODE=6555
-
-beforeinstall:
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${DESTDIR}/var/log/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 ${.CURDIR}/sendmail.hf \
- ${DESTDIR}/usr/share/misc
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.dgux b/usr.sbin/sendmail/src/Makefiles/Makefile.dgux
deleted file mode 100644
index a84aadfff393..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.dgux
+++ /dev/null
@@ -1,108 +0,0 @@
-#
-# Tested on DG/UX 5.4.2 by A. Bryan Curnutt <bryan@Stoner.COM>.
-# Updated for DG/UX 5.4.3 by Mark T. Robinson <mtr@ornl.gov>.
-#
-# @(#)Makefile.dgux 8.9 (Berkeley) 9/13/95
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-DBMDEF= -DNDBM -DNIS
-
-# environment definitions (e.g., -D_AIX3)
-# use DGUX_5_4_2 for versions prior to 5.4.3.
-ENVDEF=-DDGUX
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/sww/include
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-LIBS= -ldbm
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/bin
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/etc
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-INSTALL=install
-BINOWN= root
-BINGRP= bin
-BINMODE=6555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-install: install-sendmail install-docs
-
-install-sendmail: sendmail
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \
- ${STDIR}/sendmail.st
- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/Makefiles/Makefile.uts.systemV b/usr.sbin/sendmail/src/Makefiles/Makefile.uts.systemV
deleted file mode 100644
index df843fbc8316..000000000000
--- a/usr.sbin/sendmail/src/Makefiles/Makefile.uts.systemV
+++ /dev/null
@@ -1,189 +0,0 @@
-# This Makefile is designed to work on the old "make" program. It does
-# not use the obj subdirectory. It also does not install documentation
-# automatically -- think of it as a quick start for sites that have the
-# old make program (I recommend that you get and port the new make if you
-# are going to be doing any signficant work on sendmail).
-#
-# Makefile for an Amdahl 5890 running UTS System V 2.1.5 (SVr3)
-# By Janet Jackson <janet@dialix.oz.au> 1994-11-24
-# This has been tested on (uname -a output) uts bsuts systemV 2.1.5 5890
-#
-# @(#)Makefile.uts.systemV 8.4 (Berkeley) 6/20/95
-#
-
-# Sendmail 8 on UTS requires BIND 4.9's include files and lib44bsd and
-# libresolv libraries. The BIND version on UTS is much too old.
-#
-BINDPATH=../../../bind
-
-# use O=-O (usual) or O=-g (debugging)
-O= -g
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB
-# -DNIS -- include NIS support
-# The really old (V7) DBM library is no longer supported.
-# See READ_ME for a description of how these flags interact.
-#
-# Getting NIS working on UTS is possible (I did it!) but awkward.
-# And forget it unless you're behind some sort of a firewall.
-#
-DBMDEF= -DNIS -DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -D_UTS
-
-# see also conf.h for additional compilation flags
-
-# include directories
-# To find new BIND header files. This path assumes we are using "makesendmail".
-INCDIRS=-I${BINDPATH}/include -I${BINDPATH}/compat/include
-
-# loader options
-LDOPTS=
-
-# library directories
-# To find new libresolv.a. This path assumes we are using "makesendmail".
-LIBDIRS=-L${BINDPATH}/res -L${BINDPATH}/compat/lib
-
-# libraries required on your system
-LIBS= -lyp -lrpc -lresolv -l44bsd -lbsd -lsocket -la
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}/usr/lib
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/lib
-
-# additional .o files needed
-OBJADD=
-
-# things to do before compilation
-BEFORE= stddef.h
-
-################### end of user configuration flags ######################
-
-CFLAGS= -eft -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
- deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
- map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
- savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/lib/newaliases ${DESTDIR}/usr/lib/mailq
-BINOWN= root
-BINGRP= mail
-BINMODE=6555
-
-#ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-ALL= sendmail
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-stddef.h:
- echo "#include <sys/types.h>" > stddef.h
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-aliases.0: aliases.5
- ${NROFF} ${MANDOC} aliases.5 > aliases.0
-
-mailq.0: mailq.1
- ${NROFF} ${MANDOC} mailq.1 > mailq.0
-
-newaliases.0: newaliases.1
- ${NROFF} ${MANDOC} newaliases.1 > newaliases.0
-
-sendmail.0: sendmail.8
- ${NROFF} ${MANDOC} sendmail.8 > sendmail.0
-
-# new target to save original sendmail files before installation
-save-orig:
- if [ -f ${BINDIR}/sendmail.orig ]; then \
- echo "Error: original already saved" 1>&2; \
- exit 1; \
- else \
- /bin/mv ${BINDIR}/sendmail ${BINDIR}/sendmail.orig; \
- for i in ${LINKS}; do \
- if [ -h $$i ]; then \
- /bin/mv $$i $$i.orig; \
- fi; \
- done; \
- if [ -f ${STDIR}/sendmail.st ]; then \
- /bin/mv ${STDIR}/sendmail.st ${STDIR}/sendmail.st.orig; \
- fi; \
- if [ -f ${HFDIR}/sendmail.hf ]; then \
- /bin/mv ${HFDIR}/sendmail.hf ${HFDIR}/sendmail.hf.orig; \
- fi; \
- echo "Now run 'make install'." 1>&2; \
- echo "(To back out, run 'make backout'.)" 1>&2; \
- fi
-
-# new target to back out, ie, put back original files
-backout:
- if [ ! -f ${BINDIR}/sendmail.orig ]; then \
- echo "Error: original was not saved" 1>&2; \
- exit 1; \
- else \
- /bin/mv ${BINDIR}/sendmail.orig ${BINDIR}/sendmail; \
- for i in ${LINKS}; do \
- if [ -h $$i.orig ]; then \
- /bin/mv $$i.orig $$i; \
- else \
- rm -f $$i; \
- fi; \
- done; \
- if [ -f ${STDIR}/sendmail.st.orig ]; then \
- /bin/mv ${STDIR}/sendmail.st.orig ${STDIR}/sendmail.st; \
- else \
- rm -f ${STDIR}/sendmail.st; \
- fi; \
- if [ -f ${HFDIR}/sendmail.hf.orig ]; then \
- /bin/mv ${HFDIR}/sendmail.hf.orig ${HFDIR}/sendmail.hf; \
- else \
- rm -f ${HFDIR}/sendmail.hf; \
- fi; \
- echo "Now back out config file change if necessary." 1>&2; \
- fi
-
-#install: install-sendmail install-docs
-install: install-sendmail
-
-install-sendmail: sendmail
- if [ ! -f ${BINDIR}/sendmail.orig ]; then \
- echo "Error: Original not saved yet \
- (no ${BINDIR}/sendmail.orig)" 1>&2; \
- exit 1; \
- else \
- cpset -o sendmail ${BINDIR} ${BINMODE} ${BINOWN} ${BINGRP}; \
- for i in ${LINKS}; do \
- rm -f $$i; \
- ln ${BINDIR}/sendmail $$i; \
- done; \
- cpset -o /dev/null ${STDIR}/sendmail.st 644 ${BINOWN} ${BINGRP}; \
- cpset -o sendmail.hf ${HFDIR} 444 ${BINOWN} ${BINGRP}; \
- echo "Now install the new config file: \
- go to ../../cf/cf and run ./Install-dcd-config" 1>&2; \
- fi
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0
-
-clean:
- rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: sendmail.h conf.h
-
-depend:
diff --git a/usr.sbin/sendmail/src/aliases.5 b/usr.sbin/sendmail/src/aliases.5
deleted file mode 100644
index 351946750f66..000000000000
--- a/usr.sbin/sendmail/src/aliases.5
+++ /dev/null
@@ -1,107 +0,0 @@
-.\" Copyright (c) 1983, 1997 Eric P. Allman
-.\" Copyright (c) 1985, 1991, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)aliases.5 8.3 (Berkeley) 2/1/97
-.\"
-.Dd February 1, 1997
-.Dt ALIASES 5
-.Os BSD 4
-.Sh NAME
-.Nm aliases
-.Nd aliases file for sendmail
-.Sh SYNOPSIS
-.Nm aliases
-.Sh DESCRIPTION
-This file describes user
-.Tn ID
-aliases used by
-.Pa /usr/sbin/sendmail .
-The file resides in
-.Pa /etc
-and
-is formatted as a series of lines of the form
-.Bd -filled -offset indent
-name: name_1, name2, name_3, . . .
-.Ed
-.Pp
-The
-.Em name
-is the name to alias, and the
-.Em name_n
-are the aliases for that name.
-Lines beginning with white space are continuation lines.
-Lines beginning with
-.Ql #
-are comments.
-.Pp
-Aliasing occurs only on local names.
-Loops can not occur, since no message will be sent to any person more than once.
-.Pp
-After aliasing has been done, local and valid recipients who have a
-.Dq Pa .forward
-file in their home directory have messages forwarded to the
-list of users defined in that file.
-.Pp
-This is only the raw data file; the actual aliasing information is
-placed into a binary format in the file
-.Pa /etc/aliases.db
-using the program
-.Xr newaliases 1 .
-A
-.Xr newaliases
-command should be executed each time the aliases file is changed for the
-change to take effect.
-.Sh SEE ALSO
-.Xr newaliases 1 ,
-.Xr dbopen 3 ,
-.Xr dbm 3 ,
-.Xr sendmail 8
-.Rs
-.%T "SENDMAIL Installation and Operation Guide"
-.Re
-.Rs
-.%T "SENDMAIL An Internetwork Mail Router"
-.Re
-.Sh BUGS
-If you have compiled
-.Xr sendmail
-with DBM support instead of NEWDB,
-you may have encountered problems in
-.Xr dbm 3
-restricting a single alias to about 1000 bytes of information.
-You can get longer aliases by ``chaining''; that is, make the last name in
-the alias be a dummy name which is a continuation alias.
-.Sh HISTORY
-The
-.Nm
-file format appeared in
-.Bx 4.0 .
diff --git a/usr.sbin/sendmail/src/mailq.1 b/usr.sbin/sendmail/src/mailq.1
deleted file mode 100644
index b489f31b2c31..000000000000
--- a/usr.sbin/sendmail/src/mailq.1
+++ /dev/null
@@ -1,89 +0,0 @@
-.\" Copyright (c) 1983, 1997 Eric P. Allman
-.\" Copyright (c) 1985, 1990, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)mailq.1 8.5 (Berkeley) 2/1/97
-.\"
-.Dd February 1, 1997
-.Dt MAILQ 1
-.Os BSD 4
-.Sh NAME
-.Nm mailq
-.Nd print the mail queue
-.Sh SYNOPSIS
-.Nm mailq
-.Op Fl v
-.Sh DESCRIPTION
-.Nm Mailq
-prints a summary of the mail messages queued for future delivery.
-.Pp
-The first line printed for each message
-shows the internal identifier used on this host
-for the message,
-the size of the message in bytes,
-the date and time the message was accepted into the queue,
-and the envelope sender of the message.
-The second line shows the error message that caused this message
-to be retained in the queue;
-it will not be present if the message is being processed
-for the first time.
-The following lines show message recipients,
-one per line.
-.Pp
-.Nm Mailq
-is identical to
-.Dq Li "sendmail -bp" .
-.Pp
-The options are as follows:
-.Bl -tag -width Ds
-.It Fl v
-Print verbose information.
-This adds the priority of the message and
-a single character indicator (``+'' or blank)
-indicating whether a warning message has been sent
-on the first line of the message.
-Additionally, extra lines may be intermixed with the recipients
-indicating the ``controlling user'' information;
-this shows who will own any programs that are executed
-on behalf of this message
-and the name of the alias this command expanded from, if any.
-.El
-.Pp
-The
-.Nm mailq
-utility exits 0 on success, and >0 if an error occurs.
-.Sh SEE ALSO
-.Xr sendmail 8
-.Sh HISTORY
-The
-.Nm mailq
-command appeared in
-.Bx 4.0 .
diff --git a/usr.sbin/sendmail/src/makesendmail b/usr.sbin/sendmail/src/makesendmail
deleted file mode 100644
index a28e2f4cc4e2..000000000000
--- a/usr.sbin/sendmail/src/makesendmail
+++ /dev/null
@@ -1,331 +0,0 @@
-#!/bin/sh
-
-# Copyright (c) 1993, 1996-1997 Eric P. Allman
-# Copyright (c) 1993 The Regents of the University of California.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# @(#)makesendmail 8.45 (Berkeley) 4/12/97
-#
-
-#
-# A quick-and-dirty script to compile sendmail in the presence of
-# multiple architectures and Makefiles.
-#
-
-if [ "x${1-""}" = "x-m" ]
-then
- # show Makefile name only
- mflag=1
-else
- mflag=""
-fi
-
-#
-# Do heuristic guesses !ONLY! for machines that do not have uname
-#
-if [ -d /NextApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
-then
- # probably a NeXT box
- arch=`hostinfo | sed -n 's/.*Processor type: \([^ ]*\).*/\1/p'`
- os=NeXT
- rel=`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`
-elif [ -f /usr/sony/bin/machine -a -f /etc/osversion ]
-then
- # probably a Sony NEWS 4.x
- os=NEWS-OS
- rel=`awk '{ print $3}' /etc/osversion`
- arch=`/usr/sony/bin/machine`
-elif [ -d /usr/omron -a -f /bin/luna ]
-then
- # probably a Omron LUNA
- os=LUNA
- if [ -f /bin/luna1 ] && /bin/luna1
- then
- rel=unios-b
- arch=luna1
- elif [ -f /bin/luna2 ] && /bin/luna2
- then
- rel=Mach
- arch=luna2
- elif [ -f /bin/luna88k ] && /bin/luna88k
- then
- rel=Mach
- arch=luna88k
- fi
-fi
-
-if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
-then
- arch=`uname -m | sed -e 's/ //g'`
- os=`uname -s | sed -e 's/\//-/g' -e 's/ //g'`
- rel=`uname -r | sed -e 's/(/-/g' -e 's/)//g'`
-fi
-
-#
-# Tweak the values we have already got. PLEASE LIMIT THESE to
-# tweaks that are absolutely necessary because your system uname
-# routine doesn't return something sufficiently unique. Don't do
-# it just because you don't like the name that is returned. You
-# can combine the architecture name with the os name to create a
-# unique Makefile name.
-#
-
-# tweak machine architecture
-case $arch
-in
- sun4*) arch=sun4;;
-
- 9000/*) arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
-
- DS/907000) arch=ds90;;
-esac
-
-# tweak operating system type and release
-node=`uname -n | sed -e 's/\//-/g' -e 's/ //g'`
-if [ "$os" = "$node" -a "$arch" = "i386" -a "$rel" = 3.2 -a "`uname -v`" = 2 ]
-then
- # old versions of SCO UNIX set uname -s the same as uname -n
- os=SCO_SV
-fi
-if [ "$os" = "$node" -a "$rel" = 4.0 -a "$arch" = "3360,3430-R" ]
-then
- # AT&T/NCR Machines also set uname -s == uname -n
- if [ -d /usr/sadm/sysadm/add-ons/WIN-TCP ]
- then
- os=NCR.MP-RAS.2.x
- else
- os=NCR.MP-RAS.3.x
- fi
-fi
-
-case $os
-in
- DYNIX-ptx) os=PTX;;
- Paragon*) os=Paragon;;
- HP-UX) rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
- AIX) rel=`uname -v`
- if [ "$rel" = "2" ]
- then
- arch=""
- fi;;
- BSD-386) os=BSD-OS;;
- SCO_SV) os=SCO; rel=`uname -X | sed -n 's/Release = 3.2v//p'`;;
- UNIX_System_V) if [ "$arch" = "ds90" ]
- then
- os="UXPDS"
- rel=`uname -v | sed -e 's/\(V.*\)L.*/\1/'`
- fi;;
- SINIX-?) os=SINIX;;
-esac
-
-# get "base part" of operating system release
-rroot=`echo $rel | sed -e 's/\.[^.]*$//'`
-rbase=`echo $rel | sed -e 's/\..*//'`
-if [ "$rroot" = "$rbase" ]
-then
- rroot=$rel
-fi
-
-# heuristic tweaks to clean up names -- PLEASE LIMIT THESE!
-if [ "$os" = "unix" ]
-then
- # might be Altos System V
- case $rel
- in
- 5.3*) os=Altos;;
- esac
-elif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
-then
- # might be a DYNIX/ptx 2.x system, which has a broken uname
- if strings /lib/cpp | grep _SEQUENT_ > /dev/null
- then
- os=PTX
- fi
-elif [ -d /usr/nec ]
-then
- # NEC machine -- what is it running?
- if [ "$os" = "UNIX_System_V" ]
- then
- os=EWS-UX_V
- elif [ "$os" = "UNIX_SV" ]
- then
- os=UX4800
- fi
-elif [ "$arch" = "mips" ]
-then
- case $rel
- in
- 4_*)
- if [ `uname -v` = "UMIPS" ]
- then
- os=RISCos
- fi;;
- esac
-fi
-
-# see if there is a "user suffix" specified
-if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
-then
- sfx=""
-else
- sfx=".${SENDMAIL_SUFFIX}"
-fi
-
-echo "Configuration: os=$os, rel=$rel, rbase=$rbase, rroot=$rroot, arch=$arch, sfx=$sfx"
-
-# now try to find a reasonable object directory
-if [ -r obj.$os.$rel.$arch$sfx ]; then
- obj=obj.$os.$rel.$arch$sfx
-elif [ -r obj.$os.$rroot.$arch$sfx ]; then
- obj=obj.$os.$rroot.$arch$sfx
-elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
- obj=obj.$os.$rbase.x.$arch$sfx
-elif [ -r obj.$os.$rel$sfx ]; then
- obj=obj.$os.$rel$sfx
-elif [ -r obj.$os.$rbase.x$sfx ]; then
- obj=obj.$os.$rbase.x$sfx
-elif [ -r obj.$os.$arch$sfx ]; then
- obj=obj.$os.$arch$sfx
-elif [ -r obj.$rel.$arch$sfx ]; then
- obj=obj.$rel.$arch$sfx
-elif [ -r obj.$rbase.x.$arch$sfx ]; then
- obj=obj.$rbase.x.$arch$sfx
-elif [ -r obj.$os$sfx ]; then
- obj=obj.$os$sfx
-elif [ -r obj.$arch$sfx ]; then
- obj=obj.$arch$sfx
-elif [ -r obj.$rel$sfx ]; then
- obj=obj.$rel$sfx
-elif [ -r obj$sfx ]; then
- obj=obj$sfx
-else
- # no existing obj directory -- try to create one if Makefile found
- obj=obj.$os.$rel.$arch$sfx
- if [ -r Makefiles/Makefile.$os.$rel.$arch$sfx ]; then
- makefile=Makefile.$os.$rel.$arch$sfx
- elif [ -r Makefiles/Makefile.$os.$rel.$arch ]; then
- makefile=Makefile.$os.$rel.$arch
- elif [ -r Makefiles/Makefile.$os.$rroot.$arch$sfx ]; then
- makefile=Makefile.$os.$rroot.$arch$sfx
- elif [ -r Makefiles/Makefile.$os.$rroot.$arch ]; then
- makefile=Makefile.$os.$rroot.$arch
- elif [ -r Makefiles/Makefile.$os.$rbase.x.$arch$sfx ]; then
- makefile=Makefile.$os.$rbase.x.$arch$sfx
- elif [ -r Makefiles/Makefile.$os.$rbase.x.$arch ]; then
- makefile=Makefile.$os.$rbase.x.$arch
- elif [ -r Makefiles/Makefile.$os.$rel$sfx ]; then
- makefile=Makefile.$os.$rel$sfx
- elif [ -r Makefiles/Makefile.$os.$rel ]; then
- makefile=Makefile.$os.$rel
- elif [ -r Makefiles/Makefile.$os.$rroot$sfx ]; then
- makefile=Makefile.$os.$rroot$sfx
- elif [ -r Makefiles/Makefile.$os.$rroot ]; then
- makefile=Makefile.$os.$rroot
- elif [ -r Makefiles/Makefile.$os.$rbase.x$sfx ]; then
- makefile=Makefile.$os.$rbase.x$sfx
- elif [ -r Makefiles/Makefile.$os.$rbase.x ]; then
- makefile=Makefile.$os.$rbase.x
- elif [ -r Makefiles/Makefile.$os.$arch$sfx ]; then
- makefile=Makefile.$os.$arch$sfx
- elif [ -r Makefiles/Makefile.$os.$arch ]; then
- makefile=Makefile.$os.$arch
- elif [ -r Makefiles/Makefile.$rel.$arch$sfx ]; then
- makefile=Makefile.$rel.$arch$sfx
- elif [ -r Makefiles/Makefile.$rel.$arch ]; then
- makefile=Makefile.$rel.$arch
- elif [ -r Makefiles/Makefile.$rroot.$arch$sfx ]; then
- makefile=Makefile.$rroot.$arch$sfx
- elif [ -r Makefiles/Makefile.$rroot.$arch ]; then
- makefile=Makefile.$rroot.$arch
- elif [ -r Makefiles/Makefile.$rbase.x.$arch$sfx ]; then
- makefile=Makefile.$rbase.x.$arch$sfx
- elif [ -r Makefiles/Makefile.$rbase.x.$arch ]; then
- makefile=Makefile.$rbase.x.$arch
- elif [ -r Makefiles/Makefile.$os$sfx ]; then
- makefile=Makefile.$os$sfx
- elif [ -r Makefiles/Makefile.$os ]; then
- makefile=Makefile.$os
- elif [ -r Makefiles/Makefile.$arch$sfx ]; then
- makefile=Makefile.$arch$sfx
- elif [ -r Makefiles/Makefile.$arch ]; then
- makefile=Makefile.$arch
- elif [ -r Makefiles/Makefile.$rel$sfx ]; then
- makefile=Makefile.$rel$sfx
- elif [ -r Makefiles/Makefile.$rel ]; then
- makefile=Makefile.$rel
- elif [ -r Makefiles/Makefile.$rel$sfx ]; then
- makefile=Makefile.$rel$sfx
- else
- echo "Cannot determine how to support $arch.$os.$rel"
- exit 1
- fi
- if [ "$mflag" ]
- then
- echo "Will run in virgin $obj using $makefile"
- exit 0
- fi
- echo "Creating $obj using $makefile"
- mkdir $obj
- (cd $obj; ln -s ../*.[ch158] ../sendmail.hf .; ln -s ../Makefiles/$makefile Makefile)
- echo "Making dependencies in $obj"
- (cd $obj; ${MAKE-make} depend)
-fi
-
-if [ "$mflag" ]
-then
- makefile=`ls -l $obj/Makefile | sed 's/.* //'`
- if [ -z "$makefile" ]
- then
- echo "ERROR: $obj exists but has no Makefile"
- exit 1
- fi
- case $makefile
- in
- ../Makefiles/*)
- makefile=`echo $makefile | sed 's/...Makefiles.//'`
- echo "Will run in existing $obj using $makefile"
- ;;
-
- *)
- echo "Will run in existing $obj using custom $makefile"
- ;;
- esac
- exit 0
-fi
-
-echo "Making in $obj"
-cd $obj
-if [ $# = 0 ]
-then
- exec ${MAKE-make}
-else
- exec ${MAKE-make} "$@"
-fi
diff --git a/usr.sbin/sendmail/src/newaliases.1 b/usr.sbin/sendmail/src/newaliases.1
deleted file mode 100644
index 7168c1303f42..000000000000
--- a/usr.sbin/sendmail/src/newaliases.1
+++ /dev/null
@@ -1,69 +0,0 @@
-.\" Copyright (c) 1983, 1997 Eric P. Allman
-.\" Copyright (c) 1985, 1990, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)newaliases.1 8.5 (Berkeley) 2/1/97
-.\"
-.Dd February 1, 1997
-.Dt NEWALIASES 1
-.Os BSD 4
-.Sh NAME
-.Nm newaliases
-.Nd rebuild the data base for the mail aliases file
-.Sh SYNOPSIS
-.Nm newaliases
-.Sh DESCRIPTION
-.Nm Newaliases
-rebuilds the random access data base for the mail aliases file
-.Pa /etc/aliases .
-It must be run each time this file is changed in order
-for the change to take effect.
-.Pp
-.Nm Newaliases
-is identical to
-.Dq Li "sendmail -bi" .
-.Pp
-The
-.Nm newaliases
-utility exits 0 on success, and >0 if an error occurs.
-.Sh FILES
-.Bl -tag -width /etc/aliases -compact
-.It Pa /etc/aliases
-The mail aliases file
-.El
-.Sh SEE ALSO
-.Xr aliases 5 ,
-.Xr sendmail 8
-.Sh HISTORY
-The
-.Nm newaliases
-command appeared in
-.Bx 4.0 .
diff --git a/usr.sbin/sendmail/src/pathnames.h b/usr.sbin/sendmail/src/pathnames.h
deleted file mode 100644
index a364fbab33a7..000000000000
--- a/usr.sbin/sendmail/src/pathnames.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*-
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)pathnames.h 8.4 (Berkeley) 6/19/95
- */
-
-#ifndef _PATH_SENDMAILCF
-# if defined(USE_VENDOR_CF_PATH) && defined(_PATH_VENDOR_CF)
-# define _PATH_SENDMAILCF _PATH_VENDOR_CF
-# else
-# define _PATH_SENDMAILCF "/etc/sendmail.cf"
-# endif
-#endif
-
-#ifndef _PATH_SENDMAILPID
-# ifdef BSD4_4
-# define _PATH_SENDMAILPID "/var/run/sendmail.pid"
-# else
-# define _PATH_SENDMAILPID "/etc/sendmail.pid"
-# endif
-#endif
-
-#ifndef _PATH_HOSTS
-# define _PATH_HOSTS "/etc/hosts"
-#endif
diff --git a/usr.sbin/sendmail/src/stats.c b/usr.sbin/sendmail/src/stats.c
deleted file mode 100644
index cb0f9dd761db..000000000000
--- a/usr.sbin/sendmail/src/stats.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)stats.c 8.11 (Berkeley) 4/9/97";
-#endif /* not lint */
-
-# include "sendmail.h"
-# include "mailstats.h"
-
-struct statistics Stat;
-
-bool GotStats = FALSE; /* set when we have stats to merge */
-
-#define ONE_K 1000 /* one thousand (twenty-four?) */
-#define KBYTES(x) (((x) + (ONE_K - 1)) / ONE_K)
- /*
-** MARKSTATS -- mark statistics
-*/
-
-void
-markstats(e, to)
- register ENVELOPE *e;
- register ADDRESS *to;
-{
- if (to == NULL)
- {
- if (e->e_from.q_mailer != NULL)
- {
- Stat.stat_nf[e->e_from.q_mailer->m_mno]++;
- Stat.stat_bf[e->e_from.q_mailer->m_mno] +=
- KBYTES(e->e_msgsize);
- }
- }
- else
- {
- Stat.stat_nt[to->q_mailer->m_mno]++;
- Stat.stat_bt[to->q_mailer->m_mno] += KBYTES(e->e_msgsize);
- }
- GotStats = TRUE;
-}
- /*
-** POSTSTATS -- post statistics in the statistics file
-**
-** Parameters:
-** sfile -- the name of the statistics file.
-**
-** Returns:
-** none.
-**
-** Side Effects:
-** merges the Stat structure with the sfile file.
-*/
-
-void
-poststats(sfile)
- char *sfile;
-{
- register int fd;
- struct statistics stat;
- extern off_t lseek();
-
- if (sfile == NULL || !GotStats)
- return;
-
- (void) time(&Stat.stat_itime);
- Stat.stat_size = sizeof Stat;
-
- fd = safeopen(sfile, O_RDWR, 0644, SFF_REGONLY|SFF_NOLINK|SFF_OPENASROOT);
- if (fd < 0)
- {
- errno = 0;
- return;
- }
- if (read(fd, (char *) &stat, sizeof stat) == sizeof stat &&
- stat.stat_size == sizeof stat)
- {
- /* merge current statistics into statfile */
- register int i;
-
- for (i = 0; i < MAXMAILERS; i++)
- {
- stat.stat_nf[i] += Stat.stat_nf[i];
- stat.stat_bf[i] += Stat.stat_bf[i];
- stat.stat_nt[i] += Stat.stat_nt[i];
- stat.stat_bt[i] += Stat.stat_bt[i];
- }
- }
- else
- bcopy((char *) &Stat, (char *) &stat, sizeof stat);
-
- /* write out results */
- (void) lseek(fd, (off_t) 0, 0);
- (void) write(fd, (char *) &stat, sizeof stat);
- (void) close(fd);
-
- /* clear the structure to avoid future disappointment */
- bzero(&Stat, sizeof stat);
- GotStats = FALSE;
-}
diff --git a/usr.sbin/sendmail/src/sysexits.h b/usr.sbin/sendmail/src/sysexits.h
deleted file mode 100644
index 464cb11bab2d..000000000000
--- a/usr.sbin/sendmail/src/sysexits.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 1987, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)sysexits.h 8.1 (Berkeley) 6/2/93
- */
-
-#ifndef _SYSEXITS_H_
-#define _SYSEXITS_H_
-
-/*
- * SYSEXITS.H -- Exit status codes for system programs.
- *
- * This include file attempts to categorize possible error
- * exit statuses for system programs, notably delivermail
- * and the Berkeley network.
- *
- * Error numbers begin at EX__BASE to reduce the possibility of
- * clashing with other exit statuses that random programs may
- * already return. The meaning of the codes is approximately
- * as follows:
- *
- * EX_USAGE -- The command was used incorrectly, e.g., with
- * the wrong number of arguments, a bad flag, a bad
- * syntax in a parameter, or whatever.
- * EX_DATAERR -- The input data was incorrect in some way.
- * This should only be used for user's data & not
- * system files.
- * EX_NOINPUT -- An input file (not a system file) did not
- * exist or was not readable. This could also include
- * errors like "No message" to a mailer (if it cared
- * to catch it).
- * EX_NOUSER -- The user specified did not exist. This might
- * be used for mail addresses or remote logins.
- * EX_NOHOST -- The host specified did not exist. This is used
- * in mail addresses or network requests.
- * EX_UNAVAILABLE -- A service is unavailable. This can occur
- * if a support program or file does not exist. This
- * can also be used as a catchall message when something
- * you wanted to do doesn't work, but you don't know
- * why.
- * EX_SOFTWARE -- An internal software error has been detected.
- * This should be limited to non-operating system related
- * errors as possible.
- * EX_OSERR -- An operating system error has been detected.
- * This is intended to be used for such things as "cannot
- * fork", "cannot create pipe", or the like. It includes
- * things like getuid returning a user that does not
- * exist in the passwd file.
- * EX_OSFILE -- Some system file (e.g., /etc/passwd, /etc/utmp,
- * etc.) does not exist, cannot be opened, or has some
- * sort of error (e.g., syntax error).
- * EX_CANTCREAT -- A (user specified) output file cannot be
- * created.
- * EX_IOERR -- An error occurred while doing I/O on some file.
- * EX_TEMPFAIL -- temporary failure, indicating something that
- * is not really an error. In sendmail, this means
- * that a mailer (e.g.) could not create a connection,
- * and the request should be reattempted later.
- * EX_PROTOCOL -- the remote system returned something that
- * was "not possible" during a protocol exchange.
- * EX_NOPERM -- You did not have sufficient permission to
- * perform the operation. This is not intended for
- * file system problems, which should use NOINPUT or
- * CANTCREAT, but rather for higher level permissions.
- */
-
-#define EX_OK 0 /* successful termination */
-
-#define EX__BASE 64 /* base value for error messages */
-
-#define EX_USAGE 64 /* command line usage error */
-#define EX_DATAERR 65 /* data format error */
-#define EX_NOINPUT 66 /* cannot open input */
-#define EX_NOUSER 67 /* addressee unknown */
-#define EX_NOHOST 68 /* host name unknown */
-#define EX_UNAVAILABLE 69 /* service unavailable */
-#define EX_SOFTWARE 70 /* internal software error */
-#define EX_OSERR 71 /* system error (e.g., can't fork) */
-#define EX_OSFILE 72 /* critical OS file missing */
-#define EX_CANTCREAT 73 /* can't create (user) output file */
-#define EX_IOERR 74 /* input/output error */
-#define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */
-#define EX_PROTOCOL 76 /* remote error in protocol */
-#define EX_NOPERM 77 /* permission denied */
-#define EX_CONFIG 78 /* configuration error */
-
-#define EX__MAX 78 /* maximum listed value */
-
-#endif /* !_SYSEXITS_H_ */
diff --git a/usr.sbin/sendmail/src/trace.c b/usr.sbin/sendmail/src/trace.c
deleted file mode 100644
index 49a1ae014866..000000000000
--- a/usr.sbin/sendmail/src/trace.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (c) 1983, 1995-1997 Eric P. Allman
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)trace.c 8.6 (Berkeley) 2/1/97";
-#endif /* not lint */
-
-# include "sendmail.h"
-
-/*
-** TtSETUP -- set up for trace package.
-**
-** Parameters:
-** vect -- pointer to trace vector.
-** size -- number of flags in trace vector.
-** defflags -- flags to set if no value given.
-**
-** Returns:
-** none
-**
-** Side Effects:
-** environment is set up.
-*/
-
-u_char *tTvect;
-int tTsize;
-static char *DefFlags;
-
-void
-tTsetup(vect, size, defflags)
- u_char *vect;
- int size;
- char *defflags;
-{
- tTvect = vect;
- tTsize = size;
- DefFlags = defflags;
-}
- /*
-** TtFLAG -- process an external trace flag description.
-**
-** Parameters:
-** s -- the trace flag.
-**
-** Returns:
-** none.
-**
-** Side Effects:
-** sets/clears trace flags.
-*/
-
-void
-tTflag(s)
- register char *s;
-{
- unsigned int first, last;
- register unsigned int i;
-
- if (*s == '\0')
- s = DefFlags;
-
- for (;;)
- {
- /* find first flag to set */
- i = 0;
- while (isdigit(*s))
- i = i * 10 + (*s++ - '0');
- first = i;
-
- /* find last flag to set */
- if (*s == '-')
- {
- i = 0;
- while (isdigit(*++s))
- i = i * 10 + (*s - '0');
- }
- last = i;
-
- /* find the level to set it to */
- i = 1;
- if (*s == '.')
- {
- i = 0;
- while (isdigit(*++s))
- i = i * 10 + (*s - '0');
- }
-
- /* clean up args */
- if (first >= tTsize)
- first = tTsize - 1;
- if (last >= tTsize)
- last = tTsize - 1;
-
- /* set the flags */
- while (first <= last)
- tTvect[first++] = i;
-
- /* more arguments? */
- if (*s++ == '\0')
- return;
- }
-}
diff --git a/usr.sbin/sendmail/src/useful.h b/usr.sbin/sendmail/src/useful.h
deleted file mode 100644
index 59182febc15c..000000000000
--- a/usr.sbin/sendmail/src/useful.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 1995-1997 Eric P. Allman
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)useful.h 8.7 (Berkeley) 5/29/97
- */
-
-# include <sys/types.h>
-
-/* support for bool type */
-typedef int bool;
-#ifndef TRUE
-# define TRUE 1
-# define FALSE 0
-#endif
-
-# ifndef NULL
-# define NULL 0
-# endif /* NULL */
-
-/* bit hacking */
-# define bitset(bit, word) (((word) & (bit)) != 0)
-
-/* some simple functions */
-# ifndef max
-# define max(a, b) ((a) > (b) ? (a) : (b))
-# define min(a, b) ((a) < (b) ? (a) : (b))
-# endif
-
-/* assertions */
-# ifndef NASSERT
-# define ASSERT(expr, msg, parm)\
- if (!(expr))\
- {\
- fprintf(stderr, "assertion botch: %s:%d: ", __FILE__, __LINE__);\
- fprintf(stderr, msg, parm);\
- }
-# else /* NASSERT */
-# define ASSERT(expr, msg, parm)
-# endif /* NASSERT */
-
-/* sccs id's */
-# ifndef lint
-# ifdef __STDC__
-# define SCCSID(arg) static char SccsId[] = #arg;
-# else
-# define SCCSID(arg) static char SccsId[] = "arg";
-# endif
-# else
-# define SCCSID(arg)
-# endif
diff --git a/usr.sbin/sendmail/src/version.c b/usr.sbin/sendmail/src/version.c
deleted file mode 100644
index dc041baa38ac..000000000000
--- a/usr.sbin/sendmail/src/version.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 1983 Eric P. Allman
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)version.c 8.8.8.1 (Berkeley) 10/24/97";
-#endif /* not lint */
-
-char Version[] = "8.8.8";