summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Beckmann <debian@abeckmann.de>2012-10-01 19:58:38 +0200
committerAndreas Beckmann <debian@abeckmann.de>2012-10-01 19:58:38 +0200
commit6b71060b84a2d9111ec847e66cc5160aab8a45e8 (patch)
tree599eb55ae3e0ec0f95d829c185831f3027eec78b
parent6c193ce1dd1d07ebdc1372e38bc4908ab1c37705 (diff)
downloadsendmail-6b71060b84a2d9111ec847e66cc5160aab8a45e8.tar.gz
Imported Upstream version 8.9.3upstream/8.9.3
-rw-r--r--BuildTools/M4/depend/BSD.m48
-rw-r--r--BuildTools/M4/depend/CC-M.m48
-rw-r--r--BuildTools/M4/depend/NCR.m48
-rw-r--r--BuildTools/M4/depend/Solaris.m48
-rw-r--r--BuildTools/M4/depend/X11.m45
-rw-r--r--BuildTools/M4/depend/generic.m48
-rw-r--r--BuildTools/M4/header.m432
-rw-r--r--BuildTools/OS/386BSD7
-rw-r--r--BuildTools/OS/A-UX11
-rw-r--r--BuildTools/OS/AIX10
-rw-r--r--BuildTools/OS/AIX.218
-rw-r--r--BuildTools/OS/AIX.4.212
-rw-r--r--BuildTools/OS/AIX.4.312
-rw-r--r--BuildTools/OS/AIX.4.x10
-rw-r--r--BuildTools/OS/Altos12
-rw-r--r--BuildTools/OS/BSD-OS8
-rw-r--r--BuildTools/OS/BSD4321
-rw-r--r--BuildTools/OS/CLIX14
-rw-r--r--BuildTools/OS/CRAYT3E.2.0.x11
-rw-r--r--BuildTools/OS/CRAYTS.10.0.x11
-rw-r--r--BuildTools/OS/CSOS9
-rw-r--r--BuildTools/OS/ConvexOS11
-rw-r--r--BuildTools/OS/Dell15
-rw-r--r--BuildTools/OS/DomainOS18
-rw-r--r--BuildTools/OS/DomainOS.10.415
-rw-r--r--BuildTools/OS/Dynix13
-rw-r--r--BuildTools/OS/EWS-UX_V29
-rw-r--r--BuildTools/OS/FreeBSD3
-rw-r--r--BuildTools/OS/HP-UX12
-rw-r--r--BuildTools/OS/HP-UX.10.x11
-rw-r--r--BuildTools/OS/HP-UX.11.x11
-rw-r--r--BuildTools/OS/IRIX13
-rw-r--r--BuildTools/OS/IRIX.5.x13
-rw-r--r--BuildTools/OS/IRIX.6.535
-rw-r--r--BuildTools/OS/IRIX.6.x35
-rw-r--r--BuildTools/OS/IRIX64.6.034
-rw-r--r--BuildTools/OS/IRIX64.6.134
-rw-r--r--BuildTools/OS/IRIX64.6.535
-rw-r--r--BuildTools/OS/IRIX64.6.x35
-rw-r--r--BuildTools/OS/ISC10
-rw-r--r--BuildTools/OS/KSR7
-rw-r--r--BuildTools/OS/LUNA46
-rw-r--r--BuildTools/OS/Linux5
-rw-r--r--BuildTools/OS/Linux.ppc3
-rw-r--r--BuildTools/OS/Mach38611
-rw-r--r--BuildTools/OS/NCR.MP-RAS.2.x15
-rw-r--r--BuildTools/OS/NCR.MP-RAS.3.x15
-rw-r--r--BuildTools/OS/NEWS-OS.4.x14
-rw-r--r--BuildTools/OS/NEWS-OS.6.x28
-rw-r--r--BuildTools/OS/NEXTSTEP.4.x28
-rw-r--r--BuildTools/OS/NeXT.2.x20
-rw-r--r--BuildTools/OS/NeXT.3.x28
-rw-r--r--BuildTools/OS/NeXT.4.x29
-rw-r--r--BuildTools/OS/NetBSD4
-rw-r--r--BuildTools/OS/NetBSD.8.33
-rw-r--r--BuildTools/OS/NonStop-UX16
-rw-r--r--BuildTools/OS/OSF19
-rw-r--r--BuildTools/OS/OpenBSD3
-rw-r--r--BuildTools/OS/PTX10
-rw-r--r--BuildTools/OS/Paragon8
-rw-r--r--BuildTools/OS/PowerUX9
-rw-r--r--BuildTools/OS/QNX15
-rw-r--r--BuildTools/OS/RISCos25
-rw-r--r--BuildTools/OS/RISCos.4_025
-rw-r--r--BuildTools/OS/ReliantUNIX12
-rw-r--r--BuildTools/OS/Rhapsody16
-rw-r--r--BuildTools/OS/SCO9
-rw-r--r--BuildTools/OS/SCO.4.211
-rw-r--r--BuildTools/OS/SCO.5.x10
-rw-r--r--BuildTools/OS/SINIX12
-rw-r--r--BuildTools/OS/SVR414
-rw-r--r--BuildTools/OS/SunOS10
-rw-r--r--BuildTools/OS/SunOS.4.015
-rw-r--r--BuildTools/OS/SunOS.5.122
-rw-r--r--BuildTools/OS/SunOS.5.222
-rw-r--r--BuildTools/OS/SunOS.5.320
-rw-r--r--BuildTools/OS/SunOS.5.420
-rw-r--r--BuildTools/OS/SunOS.5.520
-rw-r--r--BuildTools/OS/SunOS.5.620
-rw-r--r--BuildTools/OS/SunOS.5.720
-rw-r--r--BuildTools/OS/SunOS.5.820
-rw-r--r--BuildTools/OS/Titan13
-rw-r--r--BuildTools/OS/ULTRIX10
-rw-r--r--BuildTools/OS/UMAX15
-rw-r--r--BuildTools/OS/UNICOS9
-rw-r--r--BuildTools/OS/UNIX_SV.4.x.i38614
-rw-r--r--BuildTools/OS/UX480024
-rw-r--r--BuildTools/OS/UXPDS.V1015
-rw-r--r--BuildTools/OS/UXPDS.V2022
-rw-r--r--BuildTools/OS/UnixWare.5.i38618
-rw-r--r--BuildTools/OS/dcosx.1.x.NILE6
-rw-r--r--BuildTools/OS/dgux10
-rw-r--r--BuildTools/OS/maxion14
-rw-r--r--BuildTools/OS/uts.systemV26
-rw-r--r--BuildTools/README110
-rw-r--r--BuildTools/Site/README16
-rwxr-xr-xBuildTools/bin/Build517
-rw-r--r--BuildTools/bin/configure.sh163
-rwxr-xr-xBuildTools/bin/find_m4.sh82
-rwxr-xr-xBuildTools/bin/install.sh128
-rw-r--r--FAQ13
-rw-r--r--KNOWNBUGS96
-rw-r--r--LICENSE89
-rw-r--r--Makefile26
-rw-r--r--README (renamed from READ_ME)231
-rw-r--r--RELEASE_NOTES979
-rw-r--r--cf/README615
-rwxr-xr-xcf/cf/Build28
-rw-r--r--cf/cf/Makefile48
-rw-r--r--cf/cf/Makefile.dist108
-rw-r--r--cf/cf/chez.cs.mc34
-rw-r--r--cf/cf/clientproto.mc34
-rw-r--r--cf/cf/cs-hpux10.mc34
-rw-r--r--cf/cf/cs-hpux9.mc34
-rw-r--r--cf/cf/cs-osf1.mc34
-rw-r--r--cf/cf/cs-solaris2.mc34
-rw-r--r--cf/cf/cs-sunos4.1.mc34
-rw-r--r--cf/cf/cs-ultrix4.mc34
-rw-r--r--cf/cf/generic-bsd4.4.cf (renamed from cf/cf/obj/generic-bsd4.4.cf)392
-rw-r--r--cf/cf/generic-bsd4.4.mc34
-rw-r--r--cf/cf/generic-hpux10.cf1062
-rw-r--r--cf/cf/generic-hpux10.mc34
-rw-r--r--cf/cf/generic-hpux9.cf (renamed from cf/cf/obj/generic-hpux9.cf)392
-rw-r--r--cf/cf/generic-hpux9.mc34
-rw-r--r--cf/cf/generic-nextstep3.3.mc34
-rw-r--r--cf/cf/generic-osf1.cf (renamed from cf/cf/obj/generic-osf1.cf)393
-rw-r--r--cf/cf/generic-osf1.mc34
-rw-r--r--cf/cf/generic-solaris2.cf (renamed from cf/cf/obj/generic-solaris2.cf)392
-rw-r--r--cf/cf/generic-solaris2.mc34
-rw-r--r--cf/cf/generic-sunos4.1.cf (renamed from cf/cf/obj/generic-sunos4.1.cf)393
-rw-r--r--cf/cf/generic-sunos4.1.mc34
-rw-r--r--cf/cf/generic-ultrix4.cf (renamed from cf/cf/obj/generic-ultrix4.cf)393
-rw-r--r--cf/cf/generic-ultrix4.mc34
-rw-r--r--cf/cf/huginn.cs.mc34
-rw-r--r--cf/cf/knecht.mc149
-rw-r--r--cf/cf/mail.cs.mc34
-rw-r--r--cf/cf/mail.eecs.mc34
-rw-r--r--cf/cf/mailspool.cs.mc34
-rw-r--r--cf/cf/python.cs.mc34
-rw-r--r--cf/cf/s2k-osf1.mc34
-rw-r--r--cf/cf/s2k-ultrix4.mc34
-rw-r--r--cf/cf/tcpproto.mc34
-rw-r--r--cf/cf/ucbarpa.mc34
-rw-r--r--cf/cf/ucbvax.mc34
-rw-r--r--cf/cf/uucpproto.mc37
-rw-r--r--cf/cf/vangogh.cs.mc34
-rw-r--r--cf/domain/Berkeley.EDU.m434
-rw-r--r--cf/domain/CS.Berkeley.EDU.m434
-rw-r--r--cf/domain/EECS.Berkeley.EDU.m434
-rw-r--r--cf/domain/S2K.Berkeley.EDU.m434
-rw-r--r--cf/domain/berkeley-only.m434
-rw-r--r--cf/domain/generic.m436
-rw-r--r--cf/feature/accept_unqualified_senders.m415
-rw-r--r--cf/feature/accept_unresolvable_domains.m415
-rw-r--r--cf/feature/access_db.m418
-rw-r--r--cf/feature/allmasquerade.m434
-rw-r--r--cf/feature/always_add_domain.m434
-rw-r--r--cf/feature/bestmx_is_local.m451
-rw-r--r--cf/feature/bitdomain.m449
-rw-r--r--cf/feature/blacklist_recipients.m418
-rw-r--r--cf/feature/domaintable.m441
-rw-r--r--cf/feature/genericstable.m440
-rw-r--r--cf/feature/limited_masquerade.m434
-rw-r--r--cf/feature/local_lmtp.m420
-rw-r--r--cf/feature/local_procmail.m434
-rw-r--r--cf/feature/loose_relay_check.m415
-rw-r--r--cf/feature/mailertable.m440
-rw-r--r--cf/feature/masquerade_entire_domain.m434
-rw-r--r--cf/feature/masquerade_envelope.m434
-rw-r--r--cf/feature/nocanonify.m434
-rw-r--r--cf/feature/nodns.m437
-rw-r--r--cf/feature/notsticky.m434
-rw-r--r--cf/feature/nouucp.m434
-rw-r--r--cf/feature/nullclient.m434
-rw-r--r--cf/feature/promiscuous_relay.m415
-rw-r--r--cf/feature/rbl.m415
-rw-r--r--cf/feature/redirect.m434
-rw-r--r--cf/feature/relay_based_on_MX.m415
-rw-r--r--cf/feature/relay_entire_domain.m415
-rw-r--r--cf/feature/relay_hosts_only.m415
-rw-r--r--cf/feature/relay_local_from.m415
-rw-r--r--cf/feature/smrsh.m439
-rw-r--r--cf/feature/stickyhost.m434
-rw-r--r--cf/feature/use_ct_file.m434
-rw-r--r--cf/feature/use_cw_file.m434
-rw-r--r--cf/feature/uucpdomain.m449
-rw-r--r--cf/feature/virtusertable.m440
-rw-r--r--cf/hack/cssubdomain.m434
-rw-r--r--cf/m4/cf.m434
-rw-r--r--cf/m4/cfhead.m444
-rw-r--r--cf/m4/nullrelay.m436
-rw-r--r--cf/m4/proto.m4669
-rw-r--r--cf/m4/version.m436
-rw-r--r--cf/mailer/cyrus.m415
-rw-r--r--cf/mailer/fax.m438
-rw-r--r--cf/mailer/local.m446
-rw-r--r--cf/mailer/mail11.m49
-rw-r--r--cf/mailer/phquery.m434
-rw-r--r--cf/mailer/pop.m434
-rw-r--r--cf/mailer/procmail.m434
-rw-r--r--cf/mailer/smtp.m436
-rw-r--r--cf/mailer/usenet.m434
-rw-r--r--cf/mailer/uucp.m434
-rw-r--r--cf/ostype/aix2.m435
-rw-r--r--cf/ostype/aix3.m435
-rw-r--r--cf/ostype/aix4.m435
-rw-r--r--cf/ostype/altos.m439
-rw-r--r--cf/ostype/amdahl-uts.m441
-rw-r--r--cf/ostype/aux.m439
-rw-r--r--cf/ostype/bsd4.3.m434
-rw-r--r--cf/ostype/bsd4.4.m438
-rw-r--r--cf/ostype/bsdi1.0.m434
-rw-r--r--cf/ostype/bsdi2.0.m434
-rw-r--r--cf/ostype/dgux.m435
-rw-r--r--cf/ostype/domainos.m439
-rw-r--r--cf/ostype/dynix3.2.m437
-rw-r--r--cf/ostype/gnuhurd.m439
-rw-r--r--cf/ostype/hpux10.m438
-rw-r--r--cf/ostype/hpux9.m439
-rw-r--r--cf/ostype/irix4.m439
-rw-r--r--cf/ostype/irix5.m443
-rw-r--r--cf/ostype/irix6.m443
-rw-r--r--cf/ostype/isc4.1.m441
-rw-r--r--cf/ostype/linux.m434
-rw-r--r--cf/ostype/maxion.m442
-rw-r--r--cf/ostype/mklinux.m436
-rw-r--r--cf/ostype/nextstep.m441
-rw-r--r--cf/ostype/osf1.m441
-rw-r--r--cf/ostype/powerux.m439
-rw-r--r--cf/ostype/ptx2.m441
-rw-r--r--cf/ostype/qnx.m421
-rw-r--r--cf/ostype/riscos4.5.m439
-rw-r--r--cf/ostype/sco-uw-2.1.m418
-rw-r--r--cf/ostype/sco3.2.m439
-rw-r--r--cf/ostype/sinix.m441
-rw-r--r--cf/ostype/solaris2.m441
-rw-r--r--cf/ostype/solaris2.ml.m441
-rw-r--r--cf/ostype/sunos3.5.m436
-rw-r--r--cf/ostype/sunos4.1.m436
-rw-r--r--cf/ostype/svr4.m441
-rw-r--r--cf/ostype/ultrix4.m436
-rw-r--r--cf/ostype/unixware7.m417
-rw-r--r--cf/ostype/unknown.m434
-rw-r--r--cf/ostype/uxpds.m441
-rw-r--r--cf/sh/makeinfo.sh34
-rw-r--r--contrib/converting.sun.configs2
-rw-r--r--contrib/doublebounce.pl232
-rwxr-xr-xcontrib/smcontrol.pl361
-rw-r--r--doc/changes/Makefile2
-rw-r--r--doc/changes/changes.me34
-rw-r--r--doc/changes/changes.ps1643
-rw-r--r--doc/intro/Makefile2
-rw-r--r--doc/intro/intro.me34
-rw-r--r--doc/intro/intro.ps2027
-rw-r--r--doc/op/Makefile2
-rw-r--r--doc/op/op.me1550
-rw-r--r--doc/op/op.ps9575
-rw-r--r--doc/usenix/Makefile2
-rw-r--r--doc/usenix/usenix.me2
-rw-r--r--doc/usenix/usenix.ps1514
l---------mail.local/Build1
-rw-r--r--mail.local/Makefile9
-rw-r--r--mail.local/Makefile.dist38
-rw-r--r--mail.local/Makefile.m4106
-rw-r--r--mail.local/README12
-rw-r--r--mail.local/mail.local.011
-rw-r--r--mail.local/mail.local.847
-rw-r--r--mail.local/mail.local.c671
-rw-r--r--mail.local/pathnames.h32
l---------mailstats/Build1
-rw-r--r--mailstats/Makefile8
-rw-r--r--mailstats/Makefile.dist78
-rw-r--r--mailstats/Makefile.m497
-rw-r--r--mailstats/mailstats.02
-rw-r--r--mailstats/mailstats.826
-rw-r--r--mailstats/mailstats.c151
l---------makemap/Build1
-rw-r--r--makemap/Makefile13
-rw-r--r--makemap/Makefile.dist90
-rw-r--r--makemap/Makefile.m4110
-rw-r--r--makemap/makemap.011
-rw-r--r--makemap/makemap.855
-rw-r--r--makemap/makemap.c403
l---------praliases/Build1
-rw-r--r--praliases/Makefile9
-rw-r--r--praliases/Makefile.dist85
-rw-r--r--praliases/Makefile.m4104
-rw-r--r--praliases/praliases.810
-rw-r--r--praliases/praliases.c374
l---------rmail/Build1
-rw-r--r--rmail/Makefile6
-rw-r--r--rmail/Makefile.m4105
-rw-r--r--rmail/rmail.026
-rw-r--r--rmail/rmail.838
-rw-r--r--rmail/rmail.c147
l---------smrsh/Build1
-rw-r--r--smrsh/Makefile8
-rw-r--r--smrsh/Makefile.dist76
-rw-r--r--smrsh/Makefile.m496
-rw-r--r--smrsh/README2
-rw-r--r--smrsh/smrsh.834
-rw-r--r--smrsh/smrsh.c35
l---------src/Build1
-rw-r--r--src/Makefile47
-rw-r--r--src/Makefile.m4152
-rw-r--r--src/Makefiles/Makefile.386BSD45
-rw-r--r--src/Makefiles/Makefile.A-UX115
-rw-r--r--src/Makefiles/Makefile.AIX117
-rw-r--r--src/Makefiles/Makefile.AIX.2122
-rw-r--r--src/Makefiles/Makefile.AIX.4117
-rw-r--r--src/Makefiles/Makefile.Altos122
-rw-r--r--src/Makefiles/Makefile.BSD-OS39
-rw-r--r--src/Makefiles/Makefile.BSD43129
-rw-r--r--src/Makefiles/Makefile.CLIX120
-rw-r--r--src/Makefiles/Makefile.CSOS115
-rw-r--r--src/Makefiles/Makefile.ConvexOS116
-rw-r--r--src/Makefiles/Makefile.Dell118
-rw-r--r--src/Makefiles/Makefile.DomainOS129
-rw-r--r--src/Makefiles/Makefile.Dynix119
-rw-r--r--src/Makefiles/Makefile.EWS-UX_V133
-rw-r--r--src/Makefiles/Makefile.FreeBSD52
-rw-r--r--src/Makefiles/Makefile.HP-UX115
-rw-r--r--src/Makefiles/Makefile.HP-UX.10.x115
-rw-r--r--src/Makefiles/Makefile.IRIX114
-rw-r--r--src/Makefiles/Makefile.IRIX.5.x112
-rw-r--r--src/Makefiles/Makefile.IRIX.6.x134
-rw-r--r--src/Makefiles/Makefile.IRIX64.6.0114
-rw-r--r--src/Makefiles/Makefile.IRIX64.6.1114
-rw-r--r--src/Makefiles/Makefile.IRIX64.6.x134
-rw-r--r--src/Makefiles/Makefile.ISC109
-rw-r--r--src/Makefiles/Makefile.KSR113
-rw-r--r--src/Makefiles/Makefile.LUNA148
-rw-r--r--src/Makefiles/Makefile.Linux137
-rw-r--r--src/Makefiles/Makefile.Linux.ppc139
-rw-r--r--src/Makefiles/Makefile.Mach386113
-rw-r--r--src/Makefiles/Makefile.NCR.MP-RAS.2.x114
-rw-r--r--src/Makefiles/Makefile.NCR.MP-RAS.3.x114
-rw-r--r--src/Makefiles/Makefile.NEWS-OS.4.x120
-rw-r--r--src/Makefiles/Makefile.NEWS-OS.6.x134
-rw-r--r--src/Makefiles/Makefile.NeXT.2.x123
-rw-r--r--src/Makefiles/Makefile.NeXT.3.x131
-rw-r--r--src/Makefiles/Makefile.NetBSD49
-rw-r--r--src/Makefiles/Makefile.NonStop-UX117
-rw-r--r--src/Makefiles/Makefile.OSF1119
-rw-r--r--src/Makefiles/Makefile.OpenBSD48
-rw-r--r--src/Makefiles/Makefile.PTX118
-rw-r--r--src/Makefiles/Makefile.Paragon116
-rw-r--r--src/Makefiles/Makefile.PowerUX126
-rw-r--r--src/Makefiles/Makefile.RISCos126
-rw-r--r--src/Makefiles/Makefile.RISCos.4_0132
-rw-r--r--src/Makefiles/Makefile.SCO110
-rw-r--r--src/Makefiles/Makefile.SCO.4.2110
-rw-r--r--src/Makefiles/Makefile.SCO.5.x111
-rw-r--r--src/Makefiles/Makefile.SINIX115
-rw-r--r--src/Makefiles/Makefile.SMP_DC.OSx.NILE118
-rw-r--r--src/Makefiles/Makefile.SVR4118
-rw-r--r--src/Makefiles/Makefile.SunOS117
-rw-r--r--src/Makefiles/Makefile.SunOS.4.0119
-rw-r--r--src/Makefiles/Makefile.SunOS.5.1124
-rw-r--r--src/Makefiles/Makefile.SunOS.5.2124
-rw-r--r--src/Makefiles/Makefile.SunOS.5.3123
-rw-r--r--src/Makefiles/Makefile.SunOS.5.4126
-rw-r--r--src/Makefiles/Makefile.SunOS.5.5124
-rw-r--r--src/Makefiles/Makefile.SunOS.5.6123
-rw-r--r--src/Makefiles/Makefile.Titan120
-rw-r--r--src/Makefiles/Makefile.ULTRIX118
-rw-r--r--src/Makefiles/Makefile.UMAX120
-rw-r--r--src/Makefiles/Makefile.UNICOS118
-rw-r--r--src/Makefiles/Makefile.UNIX_SV.4.x.i386119
-rw-r--r--src/Makefiles/Makefile.UX4800130
-rw-r--r--src/Makefiles/Makefile.UXPDS.V10142
-rw-r--r--src/Makefiles/Makefile.UXPDS.V20148
-rw-r--r--src/Makefiles/Makefile.Utah43
-rw-r--r--src/Makefiles/Makefile.dgux109
-rw-r--r--src/Makefiles/Makefile.dist112
-rw-r--r--src/Makefiles/Makefile.maxion116
-rw-r--r--src/Makefiles/Makefile.uts.systemV190
-rw-r--r--src/README (renamed from src/READ_ME)549
-rw-r--r--src/TRACEFLAGS2
-rw-r--r--src/alias.c110
-rw-r--r--src/aliases.02
-rw-r--r--src/aliases.536
-rw-r--r--src/arpadate.c43
-rw-r--r--src/clock.c48
-rw-r--r--src/collect.c127
-rw-r--r--src/conf.c1071
-rw-r--r--src/conf.h319
-rw-r--r--src/control.c356
-rw-r--r--src/convtime.c34
-rw-r--r--src/daemon.c320
-rw-r--r--src/deliver.c526
-rw-r--r--src/domain.c83
-rw-r--r--src/envelope.c53
-rw-r--r--src/err.c59
-rw-r--r--src/headers.c231
-rw-r--r--src/ldap_map.h35
-rw-r--r--src/macro.c42
-rw-r--r--src/mailq.02
-rw-r--r--src/mailq.136
-rw-r--r--src/mailstats.h41
-rw-r--r--src/main.c432
l---------[-rwxr-xr-x]src/makesendmail332
-rw-r--r--src/map.c1142
-rw-r--r--src/mci.c121
-rw-r--r--src/mime.c91
-rw-r--r--src/newaliases.02
-rw-r--r--src/newaliases.136
-rw-r--r--src/parseaddr.c211
-rw-r--r--src/pathnames.h32
-rw-r--r--src/queue.c256
-rw-r--r--src/readcf.c343
-rw-r--r--src/recipient.c193
-rw-r--r--src/safefile.c173
-rw-r--r--src/savemail.c80
-rw-r--r--src/sendmail.024
-rw-r--r--src/sendmail.848
-rw-r--r--src/sendmail.h196
-rw-r--r--src/sendmail.hf15
-rw-r--r--src/snprintf.c428
-rw-r--r--src/srvrsmtp.c160
-rw-r--r--src/stab.c36
-rw-r--r--src/stats.c68
-rw-r--r--src/sysexits.c36
-rw-r--r--src/trace.c40
-rw-r--r--src/udb.c283
-rw-r--r--src/useful.h34
-rw-r--r--src/usersmtp.c189
-rw-r--r--src/util.c586
-rw-r--r--src/version.c36
-rw-r--r--test/Results2
430 files changed, 26066 insertions, 25562 deletions
diff --git a/BuildTools/M4/depend/BSD.m4 b/BuildTools/M4/depend/BSD.m4
new file mode 100644
index 0000000..83827a7
--- /dev/null
+++ b/BuildTools/M4/depend/BSD.m4
@@ -0,0 +1,8 @@
+# @(#)BSD.m4 8.3 (Berkeley) 2/9/1998
+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/BuildTools/M4/depend/CC-M.m4 b/BuildTools/M4/depend/CC-M.m4
new file mode 100644
index 0000000..10d61b8
--- /dev/null
+++ b/BuildTools/M4/depend/CC-M.m4
@@ -0,0 +1,8 @@
+# @(#)CC-M.m4 8.2 (Berkeley) 2/19/1998
+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/BuildTools/M4/depend/NCR.m4 b/BuildTools/M4/depend/NCR.m4
new file mode 100644
index 0000000..22af77d
--- /dev/null
+++ b/BuildTools/M4/depend/NCR.m4
@@ -0,0 +1,8 @@
+# @(#)NCR.m4 8.3 (Berkeley) 2/19/1998
+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/BuildTools/M4/depend/Solaris.m4 b/BuildTools/M4/depend/Solaris.m4
new file mode 100644
index 0000000..bf245f6
--- /dev/null
+++ b/BuildTools/M4/depend/Solaris.m4
@@ -0,0 +1,8 @@
+# @(#)Solaris.m4 8.1 (Berkeley) 3/5/1998
+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/BuildTools/M4/depend/X11.m4 b/BuildTools/M4/depend/X11.m4
new file mode 100644
index 0000000..3afbfe9
--- /dev/null
+++ b/BuildTools/M4/depend/X11.m4
@@ -0,0 +1,5 @@
+# @(#)X11.m4 8.1 (Berkeley) 4/8/1998
+depend: ${BEFORE}
+ makedepend -- ${COPTS} -- *.c
+
+# End of X11.m4
diff --git a/BuildTools/M4/depend/generic.m4 b/BuildTools/M4/depend/generic.m4
new file mode 100644
index 0000000..330d4cf
--- /dev/null
+++ b/BuildTools/M4/depend/generic.m4
@@ -0,0 +1,8 @@
+# @(#)generic.m4 8.2 (Berkeley) 2/9/1998
+# 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/BuildTools/M4/header.m4 b/BuildTools/M4/header.m4
new file mode 100644
index 0000000..087cf0e
--- /dev/null
+++ b/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/1998
+#
+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/BuildTools/OS/386BSD b/BuildTools/OS/386BSD
new file mode 100644
index 0000000..cb6ea87
--- /dev/null
+++ b/BuildTools/OS/386BSD
@@ -0,0 +1,7 @@
+# @(#)386BSD 8.1 (Berkeley) 1/30/1998
+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/BuildTools/OS/A-UX b/BuildTools/OS/A-UX
new file mode 100644
index 0000000..3a23f36
--- /dev/null
+++ b/BuildTools/OS/A-UX
@@ -0,0 +1,11 @@
+# @(#)A-UX 8.4 (Berkeley) 3/12/1998
+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/BuildTools/OS/AIX b/BuildTools/OS/AIX
new file mode 100644
index 0000000..03d8407
--- /dev/null
+++ b/BuildTools/OS/AIX
@@ -0,0 +1,10 @@
+# @(#)AIX 8.6 (Berkeley) 3/12/1998
+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/BuildTools/OS/AIX.2 b/BuildTools/OS/AIX.2
new file mode 100644
index 0000000..8cec811
--- /dev/null
+++ b/BuildTools/OS/AIX.2
@@ -0,0 +1,18 @@
+# @(#)AIX.2 8.8 (Berkeley) 3/12/1998
+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/BuildTools/OS/AIX.4.2 b/BuildTools/OS/AIX.4.2
new file mode 100644
index 0000000..76916bb
--- /dev/null
+++ b/BuildTools/OS/AIX.4.2
@@ -0,0 +1,12 @@
+# @(#)AIX.4.2 8.7 (Berkeley) 1/22/1999
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX4=40200 ')
+define(`confOPTIMIZE', `-O3 -qstrict')
+define(`confLIBS', `-ldbm')
+define(`confLIBSEARCH', `db resolv 44bsd')
+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/BuildTools/OS/AIX.4.3 b/BuildTools/OS/AIX.4.3
new file mode 100644
index 0000000..00688c6
--- /dev/null
+++ b/BuildTools/OS/AIX.4.3
@@ -0,0 +1,12 @@
+# @(#)AIX.4.3 8.5 (Berkeley) 8/6/1998
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX4=40300 ')
+define(`confOPTIMIZE', `-O3 -qstrict')
+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/BuildTools/OS/AIX.4.x b/BuildTools/OS/AIX.4.x
new file mode 100644
index 0000000..a427d07
--- /dev/null
+++ b/BuildTools/OS/AIX.4.x
@@ -0,0 +1,10 @@
+# @(#)AIX.4.x 8.8 (Berkeley) 8/6/1998
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX4 ')
+define(`confOPTIMIZE', `-O3 -qstrict')
+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/BuildTools/OS/Altos b/BuildTools/OS/Altos
new file mode 100644
index 0000000..9865f9a
--- /dev/null
+++ b/BuildTools/OS/Altos
@@ -0,0 +1,12 @@
+# @(#)Altos 8.6 (Berkeley) 2/19/1998
+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/BuildTools/OS/BSD-OS b/BuildTools/OS/BSD-OS
new file mode 100644
index 0000000..67a6243
--- /dev/null
+++ b/BuildTools/OS/BSD-OS
@@ -0,0 +1,8 @@
+# @(#)BSD-OS 8.8 (Berkeley) 6/3/1998
+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/BuildTools/OS/BSD43 b/BuildTools/OS/BSD43
new file mode 100644
index 0000000..6a04bef
--- /dev/null
+++ b/BuildTools/OS/BSD43
@@ -0,0 +1,21 @@
+# @(#)BSD43 8.5 (Berkeley) 3/12/1998
+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/BuildTools/OS/CLIX b/BuildTools/OS/CLIX
new file mode 100644
index 0000000..35b67a6
--- /dev/null
+++ b/BuildTools/OS/CLIX
@@ -0,0 +1,14 @@
+# @(#)CLIX 8.8 (Berkeley) 3/12/1998
+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/BuildTools/OS/CRAYT3E.2.0.x b/BuildTools/OS/CRAYT3E.2.0.x
new file mode 100644
index 0000000..4455e51
--- /dev/null
+++ b/BuildTools/OS/CRAYT3E.2.0.x
@@ -0,0 +1,11 @@
+# @(#)CRAYT3E.2.0.x 8.1 (Berkeley) 4/21/1998
+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/BuildTools/OS/CRAYTS.10.0.x b/BuildTools/OS/CRAYTS.10.0.x
new file mode 100644
index 0000000..66e9ce1
--- /dev/null
+++ b/BuildTools/OS/CRAYTS.10.0.x
@@ -0,0 +1,11 @@
+# @(#)CRAYTS.10.0.x 8.1 (Berkeley) 1/22/1999
+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/BuildTools/OS/CSOS b/BuildTools/OS/CSOS
new file mode 100644
index 0000000..e39218e
--- /dev/null
+++ b/BuildTools/OS/CSOS
@@ -0,0 +1,9 @@
+# @(#)CSOS 8.5 (Berkeley) 2/8/1998
+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/BuildTools/OS/ConvexOS b/BuildTools/OS/ConvexOS
new file mode 100644
index 0000000..cdb81eb
--- /dev/null
+++ b/BuildTools/OS/ConvexOS
@@ -0,0 +1,11 @@
+# @(#)ConvexOS 8.6 (Berkeley) 3/12/1998
+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/BuildTools/OS/Dell b/BuildTools/OS/Dell
new file mode 100644
index 0000000..55fc051
--- /dev/null
+++ b/BuildTools/OS/Dell
@@ -0,0 +1,15 @@
+# @(#)Dell 8.8 (Berkeley) 3/12/1998
+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/BuildTools/OS/DomainOS b/BuildTools/OS/DomainOS
new file mode 100644
index 0000000..06b1e38
--- /dev/null
+++ b/BuildTools/OS/DomainOS
@@ -0,0 +1,18 @@
+# @(#)DomainOS 8.6 (Berkeley) 6/24/1998
+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/BuildTools/OS/DomainOS.10.4 b/BuildTools/OS/DomainOS.10.4
new file mode 100644
index 0000000..c8a4acf
--- /dev/null
+++ b/BuildTools/OS/DomainOS.10.4
@@ -0,0 +1,15 @@
+# @(#)DomainOS.10.4 8.1 (Berkeley) 6/24/1998
+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/BuildTools/OS/Dynix b/BuildTools/OS/Dynix
new file mode 100644
index 0000000..0da6fb5
--- /dev/null
+++ b/BuildTools/OS/Dynix
@@ -0,0 +1,13 @@
+# @(#)Dynix 8.7 (Berkeley) 2/26/1998
+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/BuildTools/OS/EWS-UX_V b/BuildTools/OS/EWS-UX_V
new file mode 100644
index 0000000..7875fdc
--- /dev/null
+++ b/BuildTools/OS/EWS-UX_V
@@ -0,0 +1,29 @@
+# @(#)EWS-UX_V 8.6 (Berkeley) 3/12/1998
+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/BuildTools/OS/FreeBSD b/BuildTools/OS/FreeBSD
new file mode 100644
index 0000000..baede69
--- /dev/null
+++ b/BuildTools/OS/FreeBSD
@@ -0,0 +1,3 @@
+# @(#)FreeBSD 8.5 (Berkeley) 3/12/1998
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confLIBS', `-lutil')
diff --git a/BuildTools/OS/HP-UX b/BuildTools/OS/HP-UX
new file mode 100644
index 0000000..2ba83c9
--- /dev/null
+++ b/BuildTools/OS/HP-UX
@@ -0,0 +1,12 @@
+# @(#)HP-UX 8.9 (Berkeley) 3/14/1998
+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/BuildTools/OS/HP-UX.10.x b/BuildTools/OS/HP-UX.10.x
new file mode 100644
index 0000000..5deacd0
--- /dev/null
+++ b/BuildTools/OS/HP-UX.10.x
@@ -0,0 +1,11 @@
+# @(#)HP-UX.10.x 8.10 (Berkeley) 3/21/1998
+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/BuildTools/OS/HP-UX.11.x b/BuildTools/OS/HP-UX.11.x
new file mode 100644
index 0000000..1717430
--- /dev/null
+++ b/BuildTools/OS/HP-UX.11.x
@@ -0,0 +1,11 @@
+# @(#)HP-UX.11.x 8.7 (Berkeley) 3/30/1998
+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/BuildTools/OS/IRIX b/BuildTools/OS/IRIX
new file mode 100644
index 0000000..ed5e3e2
--- /dev/null
+++ b/BuildTools/OS/IRIX
@@ -0,0 +1,13 @@
+# @(#)IRIX 8.7 (Berkeley) 3/12/1998
+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/BuildTools/OS/IRIX.5.x b/BuildTools/OS/IRIX.5.x
new file mode 100644
index 0000000..6d492a2
--- /dev/null
+++ b/BuildTools/OS/IRIX.5.x
@@ -0,0 +1,13 @@
+# @(#)IRIX.5.x 8.7 (Berkeley) 3/12/1998
+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/BuildTools/OS/IRIX.6.5 b/BuildTools/OS/IRIX.6.5
new file mode 100644
index 0000000..1b34f2e
--- /dev/null
+++ b/BuildTools/OS/IRIX.6.5
@@ -0,0 +1,35 @@
+# @(#)IRIX.6.5 8.2 (Berkeley) 4/24/1998
+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/BuildTools/OS/IRIX.6.x b/BuildTools/OS/IRIX.6.x
new file mode 100644
index 0000000..0424933
--- /dev/null
+++ b/BuildTools/OS/IRIX.6.x
@@ -0,0 +1,35 @@
+# @(#)IRIX.6.x 8.11 (Berkeley) 4/24/1998
+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/BuildTools/OS/IRIX64.6.0 b/BuildTools/OS/IRIX64.6.0
new file mode 100644
index 0000000..e8b2e3a
--- /dev/null
+++ b/BuildTools/OS/IRIX64.6.0
@@ -0,0 +1,34 @@
+# @(#)IRIX64.6.0 8.10 (Berkeley) 3/12/1998
+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/BuildTools/OS/IRIX64.6.1 b/BuildTools/OS/IRIX64.6.1
new file mode 100644
index 0000000..1183766
--- /dev/null
+++ b/BuildTools/OS/IRIX64.6.1
@@ -0,0 +1,34 @@
+# @(#)IRIX64.6.1 8.10 (Berkeley) 3/12/1998
+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/BuildTools/OS/IRIX64.6.5 b/BuildTools/OS/IRIX64.6.5
new file mode 100644
index 0000000..d0281f5
--- /dev/null
+++ b/BuildTools/OS/IRIX64.6.5
@@ -0,0 +1,35 @@
+# @(#)IRIX64.6.5 8.1 (Berkeley) 11/29/1998
+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/BuildTools/OS/IRIX64.6.x b/BuildTools/OS/IRIX64.6.x
new file mode 100644
index 0000000..f105edf
--- /dev/null
+++ b/BuildTools/OS/IRIX64.6.x
@@ -0,0 +1,35 @@
+# @(#)IRIX64.6.x 8.11 (Berkeley) 4/24/1998
+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/BuildTools/OS/ISC b/BuildTools/OS/ISC
new file mode 100644
index 0000000..58b8b78
--- /dev/null
+++ b/BuildTools/OS/ISC
@@ -0,0 +1,10 @@
+# @(#)ISC 8.5 (Berkeley) 3/12/1998
+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/BuildTools/OS/KSR b/BuildTools/OS/KSR
new file mode 100644
index 0000000..9169cba
--- /dev/null
+++ b/BuildTools/OS/KSR
@@ -0,0 +1,7 @@
+# @(#)KSR 8.4 (Berkeley) 3/12/1998
+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/BuildTools/OS/LUNA b/BuildTools/OS/LUNA
new file mode 100644
index 0000000..e4637c9
--- /dev/null
+++ b/BuildTools/OS/LUNA
@@ -0,0 +1,46 @@
+# @(#)LUNA 8.8 (Berkeley) 3/12/1998
+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/BuildTools/OS/Linux b/BuildTools/OS/Linux
new file mode 100644
index 0000000..306c9ef
--- /dev/null
+++ b/BuildTools/OS/Linux
@@ -0,0 +1,5 @@
+# @(#)Linux 8.4 (Berkeley) 3/22/1998
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confMANROOT', `/usr/man/man')
diff --git a/BuildTools/OS/Linux.ppc b/BuildTools/OS/Linux.ppc
new file mode 100644
index 0000000..e0712e3
--- /dev/null
+++ b/BuildTools/OS/Linux.ppc
@@ -0,0 +1,3 @@
+# @(#)Linux.ppc 8.3 (Berkeley) 2/12/1998
+define(`confHFDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
diff --git a/BuildTools/OS/Mach386 b/BuildTools/OS/Mach386
new file mode 100644
index 0000000..7ff806e
--- /dev/null
+++ b/BuildTools/OS/Mach386
@@ -0,0 +1,11 @@
+# @(#)Mach386 8.6 (Berkeley) 3/12/1998
+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/BuildTools/OS/NCR.MP-RAS.2.x b/BuildTools/OS/NCR.MP-RAS.2.x
new file mode 100644
index 0000000..bd76038
--- /dev/null
+++ b/BuildTools/OS/NCR.MP-RAS.2.x
@@ -0,0 +1,15 @@
+# @(#)NCR.MP-RAS.2.x 8.9 (Berkeley) 3/12/1998
+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/BuildTools/OS/NCR.MP-RAS.3.x b/BuildTools/OS/NCR.MP-RAS.3.x
new file mode 100644
index 0000000..7af9667
--- /dev/null
+++ b/BuildTools/OS/NCR.MP-RAS.3.x
@@ -0,0 +1,15 @@
+# @(#)NCR.MP-RAS.3.x 8.10 (Berkeley) 8/6/1998
+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', `-lresolv -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/BuildTools/OS/NEWS-OS.4.x b/BuildTools/OS/NEWS-OS.4.x
new file mode 100644
index 0000000..71aa4d4
--- /dev/null
+++ b/BuildTools/OS/NEWS-OS.4.x
@@ -0,0 +1,14 @@
+# @(#)NEWS-OS.4.x 8.6 (Berkeley) 3/12/1998
+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/BuildTools/OS/NEWS-OS.6.x b/BuildTools/OS/NEWS-OS.6.x
new file mode 100644
index 0000000..4e5c809
--- /dev/null
+++ b/BuildTools/OS/NEWS-OS.6.x
@@ -0,0 +1,28 @@
+# @(#)NEWS-OS.6.x 8.8 (Berkeley) 3/12/1998
+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/BuildTools/OS/NEXTSTEP.4.x b/BuildTools/OS/NEXTSTEP.4.x
new file mode 100644
index 0000000..b775813
--- /dev/null
+++ b/BuildTools/OS/NEXTSTEP.4.x
@@ -0,0 +1,28 @@
+# @(#)NEXTSTEP.4.x 8.1 (Berkeley) 3/21/1998
+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/BuildTools/OS/NeXT.2.x b/BuildTools/OS/NeXT.2.x
new file mode 100644
index 0000000..0a9d918
--- /dev/null
+++ b/BuildTools/OS/NeXT.2.x
@@ -0,0 +1,20 @@
+# @(#)NeXT.2.x 8.7 (Berkeley) 3/12/1998
+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/BuildTools/OS/NeXT.3.x b/BuildTools/OS/NeXT.3.x
new file mode 100644
index 0000000..f5e313d
--- /dev/null
+++ b/BuildTools/OS/NeXT.3.x
@@ -0,0 +1,28 @@
+# @(#)NeXT.3.x 8.7 (Berkeley) 3/12/1998
+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/BuildTools/OS/NeXT.4.x b/BuildTools/OS/NeXT.4.x
new file mode 100644
index 0000000..8736b74
--- /dev/null
+++ b/BuildTools/OS/NeXT.4.x
@@ -0,0 +1,29 @@
+# @(#)NeXT.4.x 8.9 (Berkeley) 7/15/1998
+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/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/BuildTools/OS/NetBSD b/BuildTools/OS/NetBSD
new file mode 100644
index 0000000..cd800ef
--- /dev/null
+++ b/BuildTools/OS/NetBSD
@@ -0,0 +1,4 @@
+# @(#)NetBSD 8.6 (Berkeley) 3/12/1998
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', ` -DNETISO')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/BuildTools/OS/NetBSD.8.3 b/BuildTools/OS/NetBSD.8.3
new file mode 100644
index 0000000..714de1e
--- /dev/null
+++ b/BuildTools/OS/NetBSD.8.3
@@ -0,0 +1,3 @@
+# @(#)NetBSD.8.3 8.6 (Berkeley) 3/12/1998
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', ` # -DNETISO')
diff --git a/BuildTools/OS/NonStop-UX b/BuildTools/OS/NonStop-UX
new file mode 100644
index 0000000..6ccdead
--- /dev/null
+++ b/BuildTools/OS/NonStop-UX
@@ -0,0 +1,16 @@
+# @(#)NonStop-UX 8.8 (Berkeley) 3/12/1998
+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/BuildTools/OS/OSF1 b/BuildTools/OS/OSF1
new file mode 100644
index 0000000..75fecfe
--- /dev/null
+++ b/BuildTools/OS/OSF1
@@ -0,0 +1,9 @@
+# @(#)OSF1 8.7 (Berkeley) 3/14/1998
+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/BuildTools/OS/OpenBSD b/BuildTools/OS/OpenBSD
new file mode 100644
index 0000000..423ab2d
--- /dev/null
+++ b/BuildTools/OS/OpenBSD
@@ -0,0 +1,3 @@
+# @(#)OpenBSD 8.5 (Berkeley) 3/12/1998
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', ` -DNETISO')
diff --git a/BuildTools/OS/PTX b/BuildTools/OS/PTX
new file mode 100644
index 0000000..7dd05ee
--- /dev/null
+++ b/BuildTools/OS/PTX
@@ -0,0 +1,10 @@
+# @(#)PTX 8.6 (Berkeley) 3/12/1998
+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/BuildTools/OS/Paragon b/BuildTools/OS/Paragon
new file mode 100644
index 0000000..868780f
--- /dev/null
+++ b/BuildTools/OS/Paragon
@@ -0,0 +1,8 @@
+# @(#)Paragon 8.3 (Berkeley) 3/12/1998
+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/BuildTools/OS/PowerUX b/BuildTools/OS/PowerUX
new file mode 100644
index 0000000..47ab87c
--- /dev/null
+++ b/BuildTools/OS/PowerUX
@@ -0,0 +1,9 @@
+# @(#)PowerUX 8.5 (Berkeley) 2/12/1998
+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/BuildTools/OS/QNX b/BuildTools/OS/QNX
new file mode 100644
index 0000000..a8a67fe
--- /dev/null
+++ b/BuildTools/OS/QNX
@@ -0,0 +1,15 @@
+# @(#)QNX 8.4 (Berkeley) 2/19/1998
+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/BuildTools/OS/RISCos b/BuildTools/OS/RISCos
new file mode 100644
index 0000000..4b2d79e
--- /dev/null
+++ b/BuildTools/OS/RISCos
@@ -0,0 +1,25 @@
+# @(#)RISCos 8.5 (Berkeley) 3/12/1998
+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/BuildTools/OS/RISCos.4_0 b/BuildTools/OS/RISCos.4_0
new file mode 100644
index 0000000..1557b8a
--- /dev/null
+++ b/BuildTools/OS/RISCos.4_0
@@ -0,0 +1,25 @@
+# @(#)RISCos.4_0 8.6 (Berkeley) 3/12/1998
+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/BuildTools/OS/ReliantUNIX b/BuildTools/OS/ReliantUNIX
new file mode 100644
index 0000000..67e3d25
--- /dev/null
+++ b/BuildTools/OS/ReliantUNIX
@@ -0,0 +1,12 @@
+# @(#)ReliantUNIX 8.1 (Berkeley) 1/22/1999
+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/BuildTools/OS/Rhapsody b/BuildTools/OS/Rhapsody
new file mode 100644
index 0000000..16cf89d
--- /dev/null
+++ b/BuildTools/OS/Rhapsody
@@ -0,0 +1,16 @@
+# @(#)Rhapsody 8.1 (Berkeley) 11/7/1998
+#
+# Wilfredo Sanchez <wsanchez@apple.com>:
+# We look a lot more like 4.4BSD than NeXTStep or OpenStep.
+#
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX -DNETINFO -DAUTO_NETINFO_ALIASES -DAUTO_NETINFO_HOSTS')
+define(`confENVDEF', `-DNETISO -traditional-cpp -pipe ${Extra_CC_Flags}')
+define(`confLDOPTS', `${Extra_LD_Flags}')
+define(`confOPTIMIZE', `-O3')
+define(`confHFDIR', `/usr/share/sendmail')
+define(`confMANOWN', `root')
+define(`confMANGRP', `wheel')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `wheel')
+define(`confSBINOWN', `root')
+define(`confSBINGRP', `wheel')
diff --git a/BuildTools/OS/SCO b/BuildTools/OS/SCO
new file mode 100644
index 0000000..e995052
--- /dev/null
+++ b/BuildTools/OS/SCO
@@ -0,0 +1,9 @@
+# @(#)SCO 8.3 (Berkeley) 2/8/1998
+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/BuildTools/OS/SCO.4.2 b/BuildTools/OS/SCO.4.2
new file mode 100644
index 0000000..0d458be
--- /dev/null
+++ b/BuildTools/OS/SCO.4.2
@@ -0,0 +1,11 @@
+# @(#)SCO.4.2 8.5 (Berkeley) 6/30/1998
+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/BuildTools/OS/SCO.5.x b/BuildTools/OS/SCO.5.x
new file mode 100644
index 0000000..d7fdc73
--- /dev/null
+++ b/BuildTools/OS/SCO.5.x
@@ -0,0 +1,10 @@
+# @(#)SCO.5.x 8.10 (Berkeley) 6/30/1998
+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/BuildTools/OS/SINIX b/BuildTools/OS/SINIX
new file mode 100644
index 0000000..3c27937
--- /dev/null
+++ b/BuildTools/OS/SINIX
@@ -0,0 +1,12 @@
+# @(#)SINIX 8.5 (Berkeley) 2/12/1998
+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/BuildTools/OS/SVR4 b/BuildTools/OS/SVR4
new file mode 100644
index 0000000..92cf101
--- /dev/null
+++ b/BuildTools/OS/SVR4
@@ -0,0 +1,14 @@
+# @(#)SVR4 8.6 (Berkeley) 3/12/1998
+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/BuildTools/OS/SunOS b/BuildTools/OS/SunOS
new file mode 100644
index 0000000..9db9569
--- /dev/null
+++ b/BuildTools/OS/SunOS
@@ -0,0 +1,10 @@
+# @(#)SunOS 8.6 (Berkeley) 3/12/1998
+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/BuildTools/OS/SunOS.4.0 b/BuildTools/OS/SunOS.4.0
new file mode 100644
index 0000000..0bcbc5f
--- /dev/null
+++ b/BuildTools/OS/SunOS.4.0
@@ -0,0 +1,15 @@
+# @(#)SunOS.4.0 8.6 (Berkeley) 3/12/1998
+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/BuildTools/OS/SunOS.5.1 b/BuildTools/OS/SunOS.5.1
new file mode 100644
index 0000000..fe39bb9
--- /dev/null
+++ b/BuildTools/OS/SunOS.5.1
@@ -0,0 +1,22 @@
+# @(#)SunOS.5.1 8.8 (Berkeley) 3/21/1998
+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/BuildTools/OS/SunOS.5.2 b/BuildTools/OS/SunOS.5.2
new file mode 100644
index 0000000..80bc087
--- /dev/null
+++ b/BuildTools/OS/SunOS.5.2
@@ -0,0 +1,22 @@
+# @(#)SunOS.5.2 8.8 (Berkeley) 3/21/1998
+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/BuildTools/OS/SunOS.5.3 b/BuildTools/OS/SunOS.5.3
new file mode 100644
index 0000000..dcee93e
--- /dev/null
+++ b/BuildTools/OS/SunOS.5.3
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.3 8.8 (Berkeley) 3/21/1998
+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/BuildTools/OS/SunOS.5.4 b/BuildTools/OS/SunOS.5.4
new file mode 100644
index 0000000..4a6b880
--- /dev/null
+++ b/BuildTools/OS/SunOS.5.4
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.4 8.10 (Berkeley) 3/21/1998
+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/BuildTools/OS/SunOS.5.5 b/BuildTools/OS/SunOS.5.5
new file mode 100644
index 0000000..64264d7
--- /dev/null
+++ b/BuildTools/OS/SunOS.5.5
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.5 8.11 (Berkeley) 3/21/1998
+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/BuildTools/OS/SunOS.5.6 b/BuildTools/OS/SunOS.5.6
new file mode 100644
index 0000000..da17de8
--- /dev/null
+++ b/BuildTools/OS/SunOS.5.6
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.6 8.10 (Berkeley) 3/21/1998
+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/BuildTools/OS/SunOS.5.7 b/BuildTools/OS/SunOS.5.7
new file mode 100644
index 0000000..962095d
--- /dev/null
+++ b/BuildTools/OS/SunOS.5.7
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.7 8.11 (Berkeley) 3/21/1998
+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/BuildTools/OS/SunOS.5.8 b/BuildTools/OS/SunOS.5.8
new file mode 100644
index 0000000..d20c13b
--- /dev/null
+++ b/BuildTools/OS/SunOS.5.8
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.8 8.1 (Berkeley) 1/17/1999
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=20800 ')
+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/BuildTools/OS/Titan b/BuildTools/OS/Titan
new file mode 100644
index 0000000..938b46d
--- /dev/null
+++ b/BuildTools/OS/Titan
@@ -0,0 +1,13 @@
+# @(#)Titan 8.5 (Berkeley) 3/12/1998
+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/BuildTools/OS/ULTRIX b/BuildTools/OS/ULTRIX
new file mode 100644
index 0000000..e9073f9
--- /dev/null
+++ b/BuildTools/OS/ULTRIX
@@ -0,0 +1,10 @@
+# @(#)ULTRIX 8.8 (Berkeley) 12/18/1998
+define(`confCC', `cc -Olimit 970')
+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/BuildTools/OS/UMAX b/BuildTools/OS/UMAX
new file mode 100644
index 0000000..078b827
--- /dev/null
+++ b/BuildTools/OS/UMAX
@@ -0,0 +1,15 @@
+# @(#)UMAX 8.5 (Berkeley) 3/12/1998
+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/BuildTools/OS/UNICOS b/BuildTools/OS/UNICOS
new file mode 100644
index 0000000..3b05dc0
--- /dev/null
+++ b/BuildTools/OS/UNICOS
@@ -0,0 +1,9 @@
+# @(#)UNICOS 8.7 (Berkeley) 2/26/1998
+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/BuildTools/OS/UNIX_SV.4.x.i386 b/BuildTools/OS/UNIX_SV.4.x.i386
new file mode 100644
index 0000000..b0e2753
--- /dev/null
+++ b/BuildTools/OS/UNIX_SV.4.x.i386
@@ -0,0 +1,14 @@
+# @(#)UNIX_SV.4.x.i386 8.6 (Berkeley) 3/12/1998
+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/BuildTools/OS/UX4800 b/BuildTools/OS/UX4800
new file mode 100644
index 0000000..7c1822a
--- /dev/null
+++ b/BuildTools/OS/UX4800
@@ -0,0 +1,24 @@
+# @(#)UX4800 8.8 (Berkeley) 3/12/1998
+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/BuildTools/OS/UXPDS.V10 b/BuildTools/OS/UXPDS.V10
new file mode 100644
index 0000000..438d88d
--- /dev/null
+++ b/BuildTools/OS/UXPDS.V10
@@ -0,0 +1,15 @@
+# @(#)UXPDS.V10 8.9 (Berkeley) 3/12/1998
+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/BuildTools/OS/UXPDS.V20 b/BuildTools/OS/UXPDS.V20
new file mode 100644
index 0000000..f2d0b37
--- /dev/null
+++ b/BuildTools/OS/UXPDS.V20
@@ -0,0 +1,22 @@
+# @(#)UXPDS.V20 8.8 (Berkeley) 3/12/1998
+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/BuildTools/OS/UnixWare.5.i386 b/BuildTools/OS/UnixWare.5.i386
new file mode 100644
index 0000000..77ca82d
--- /dev/null
+++ b/BuildTools/OS/UnixWare.5.i386
@@ -0,0 +1,18 @@
+# @(#)UnixWare.5.i386 8.2 (Berkeley) 10/15/1998
+#
+# System V Rel 5.x (a.k.a Unixware7 w/o BSD-Compatiblity Libs ie. native)
+# Contributed by Paul Gampe <paulg@apnic.net>
+#
+define(`confCC', `/usr/ccs/bin/cc')
+define(`confMAPDEF', `-DNDBM -DMAP_REGEX')
+define(`confENVDEF', `-D__svr5__')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confSHELL', `/usr/bin/sh')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/etc/mail')
+define(`confUBINDIR', `/etc/mail')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/BuildTools/OS/dcosx.1.x.NILE b/BuildTools/OS/dcosx.1.x.NILE
new file mode 100644
index 0000000..095de36
--- /dev/null
+++ b/BuildTools/OS/dcosx.1.x.NILE
@@ -0,0 +1,6 @@
+# @(#)dcosx.1.x.NILE 8.3 (Berkeley) 2/8/1998
+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/BuildTools/OS/dgux b/BuildTools/OS/dgux
new file mode 100644
index 0000000..66132c0
--- /dev/null
+++ b/BuildTools/OS/dgux
@@ -0,0 +1,10 @@
+# @(#)dgux 8.5 (Berkeley) 3/12/1998
+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/BuildTools/OS/maxion b/BuildTools/OS/maxion
new file mode 100644
index 0000000..0177911
--- /dev/null
+++ b/BuildTools/OS/maxion
@@ -0,0 +1,14 @@
+# @(#)maxion 8.6 (Berkeley) 3/12/1998
+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/BuildTools/OS/uts.systemV b/BuildTools/OS/uts.systemV
new file mode 100644
index 0000000..acee532
--- /dev/null
+++ b/BuildTools/OS/uts.systemV
@@ -0,0 +1,26 @@
+# @(#)uts.systemV 8.10 (Berkeley) 3/12/1998
+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/BuildTools/README b/BuildTools/README
new file mode 100644
index 0000000..6572616
--- /dev/null
+++ b/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/1998
diff --git a/BuildTools/Site/README b/BuildTools/Site/README
new file mode 100644
index 0000000..44e14e8
--- /dev/null
+++ b/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/1998
diff --git a/BuildTools/bin/Build b/BuildTools/bin/Build
new file mode 100755
index 0000000..f666a87
--- /dev/null
+++ b/BuildTools/bin/Build
@@ -0,0 +1,517 @@
+#!/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.94 (Berkeley) 1/23/1999
+#
+
+#
+# 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`;;
+
+ CRAYT3E|CRAYTS)
+ os=$arch;;
+
+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/BuildTools/bin/configure.sh b/BuildTools/bin/configure.sh
new file mode 100644
index 0000000..aff771c
--- /dev/null
+++ b/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/1998
+
+#
+# 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/BuildTools/bin/find_m4.sh b/BuildTools/bin/find_m4.sh
new file mode 100755
index 0000000..632e86f
--- /dev/null
+++ b/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/1998
+#
+
+# 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/BuildTools/bin/install.sh b/BuildTools/bin/install.sh
new file mode 100755
index 0000000..840aa33
--- /dev/null
+++ b/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/1998
+
+# 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/FAQ b/FAQ
index 522e7c8..b4cb2e6 100644
--- a/FAQ
+++ b/FAQ
@@ -1,11 +1,6 @@
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.
+available at http://www.sendmail.org/faq/ .
-An HTML version is also available at http://www.sendmail.org/faq/.
-
- --Eric Allman 19 June 1997
+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/KNOWNBUGS b/KNOWNBUGS
index c334fa4..85409a0 100644
--- a/KNOWNBUGS
+++ b/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
@@ -65,15 +65,18 @@ This list is not guaranteed to be complete.
* accept() problem on Linux.
- Apparently, the accept() in sendmail daemon loop can return ETIMEDOUT
- and cause sendmail to sleep for 5 seconds during which time no new
- connections will be accepted. An error is reported to syslog:
+ The accept() in sendmail daemon loop can return ETIMEDOUT. An
+ error is reported to syslog:
Jun 9 17:14:12 hostname sendmail[207]: NOQUEUE: SYSERR(root):
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 +106,80 @@ 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.
-
-(Version 8.25, last updated 6/13/97)
+* 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).
+
+* 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.
+
+* bestmx map with -z flag truncates the list of MX hosts
+
+ A bestmx map configured with the -z flag will truncate the list
+ of MX hosts. This prevents creation of strings which are too
+ long for ruleset parsing. This can have an adverse effect on the
+ relay_based_on_MX feature.
+
+* Saving to ~sender/dead.letter fails if su'ed to root
+
+ If ErrorMode is set to print and an error in sending mail occurs,
+ the normal action is to print a message to the screen and append
+ the message to a dead.letter file in the sender's home directory.
+ In the case where the sender is using su to act as root, the file
+ safety checks prevent sendmail from saving the dead.letter file
+ because the sender's uid and the current real uid do not match.
+
+* Berkeley DB 2.X race condition with fcntl() locking
+
+ There is a race condition for Berkeley DB 2.X databases on
+ operating systems which use fcntl() style locking, such as
+ Solaris. Sendmail locks the map before calling db_open() to
+ prevent others from modifying the map while it is being opened.
+ Unfortunately, Berkeley DB opens the map, closes it, and then
+ reopens it. fcntl() locking drops the lock when any file
+ descriptor pointing to the file is closed, even if it is a
+ different file descriptor than the one used to initially lock
+ the file. As a result there is a possibility that entries in a
+ map might not be found during a map rebuild. As a workaround,
+ you can use makemap to build a map with a new name and then
+ "mv" the new db file to replace the old one.
+
+* File open timeouts not available on hard mounted NFS file systems
+
+ Since SIGALRM does not interrupt an RPC call for hard mounted
+ NFS file systems, it is impossible to implement a timeout on a file
+ open operation. Therefore, while the NFS server is not responding,
+ attempts to open a file on that server will hang. Systems with
+ local mail delivery and NFS hard mounted home directories should be
+ avoided, as attempts to open the forward files could hang.
+
+(Version 8.36, last updated 2/4/1999)
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..d0ff63a
--- /dev/null
+++ b/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/1998)
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..98ad6e5
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,26 @@
+# @(#)Makefile.dist 8.2 (Berkeley) 2/17/1998
+
+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/READ_ME b/README
index 08b5aff..c7ff734 100644
--- a/READ_ME
+++ b/README
@@ -1,11 +1,11 @@
/*-
- * @(#)READ_ME 8.32 (Berkeley) 7/6/97
+ * @(#)README 8.51 (Berkeley) 1/25/1999
*/
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
@@ -13,13 +13,84 @@ There is a web site at http://WWW.Sendmail.ORG -- see that site for
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 **
-** for details about building a runtime configuration file. **
+** A new Build architecture is in place that allows you to **
+** use the "Build" shell script in any of the program **
+** directories. 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 +99,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 +144,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 +153,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 +180,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 +206,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 +221,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
@@ -145,6 +233,7 @@ Important RFCs for electronic mail are:
RFC1894 An Extensible Message Format for Delivery Status
Notifications
RFC1985 SMTP Service Extension for Remote Message Queue Starting
+ RFC2033 Local Mail Transfer Protocol
Other standards that may be of interest (but which are less directly
relevant to sendmail) are:
@@ -165,15 +254,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,57 +343,15 @@ 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
++-------------------------+
+| INTEROPERATION PROBLEMS |
++-------------------------+
-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.
+Microsoft Exchange Server 5.0
+ We have had a report that ``about 7% of messages from Sendmail
+ to Exchange were not being delivered with status messages of
+ "connection reset" and "I/O error".'' Upgrading Exchange from
+ Version 5.0 to Version 5.5 Service Pack 2 solved this problem.
+---------------------+
@@ -287,12 +360,12 @@ should be secured to avoid various possible security attacks.
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 +376,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/RELEASE_NOTES b/RELEASE_NOTES
index b3e1a8b..e50c3b5 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -1,11 +1,880 @@
SENDMAIL RELEASE NOTES
- @(#)RELEASE_NOTES 8.8.8.4 (Berkeley) 10/24/97
+ @(#)RELEASE_NOTES 8.9.3.1 (Berkeley) 2/4/1999
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.3/8.9.3 99/02/04
+ SECURITY: Limit message headers to a maximum of 32K bytes (total
+ of all headers in a single message) to prevent a denial of
+ service attack. This limit will be configurable in 8.10.
+ Problem noted by Michal Zalewski of the "Internet for
+ Schools" project (IdS).
+ Prevent segmentation fault on an LDAP lookup if the LDAP map
+ was closed due to an earlier failure. Problem noted by
+ Jeff Wasilko of smoe.org. Fix from Booker Bense of
+ Stanford University and Per Hedeland of Ericsson.
+ Preserve the order of the MIME headers in multipart messages
+ when performing the MIME header length check. This
+ will allow PGP signatures to function properly. Problem
+ noted by Lars Hecking of University College, Cork, Ireland.
+ If ruleset 5 rewrote the local address to an :include: directive,
+ the delivery would fail with an "aliasing/forwarding loop
+ broken" error. Problem noted by Eric C Hagberg of Morgan
+ Stanley. Fix from Per Hedeland of Ericsson.
+ Allow -T to work for bestmx maps. Fix from Aaron Schrab of
+ ExecPC Internet Systems.
+ During the transfer of a message in an SMTP transaction, if a
+ TCP timeout occurs, the message would be properly queued
+ for later retry but the failure would be logged as
+ "Illegal Seek" instead of a timeout. Problem noted by
+ Piotr Kucharski of the Warsaw School of Economics (SGH)
+ and Carles Xavier Munyoz Baldo of CTV Internet.
+ Prevent multiple deliveries on a self-referencing alias if the
+ F=w mailer flag is not set. Problem noted by Murray S.
+ Kucherawy of Concentric Network Corporation and Per
+ Hedeland of Ericsson.
+ Do not strip empty headers but if there is no value and a
+ default is defined in sendmail.cf, use the default.
+ Problem noted by Philip Guenther of Gustavus Adolphus
+ College and Christopher McCrory of Netus, Inc.
+ Don't inherit information about the sender (notably the full name)
+ in SMTP (-bs) mode, since this might be called from inetd.
+ Accept any 3xx reply code in response to DATA command instead of
+ requiring 354. This change will match the wording to be
+ published in the updated SMTP specification from the DRUMS
+ group of the IETF.
+ Portability:
+ AIX 4.2.0.2 ships with a /usr/lib/libbind.a which should
+ not be used. It conflicts with the resolver
+ built into libc.a. "bind" has been removed
+ from the confLIBSEARCH BuildTools variable.
+ Users who have installed BIND 8.X will have
+ to add it back in their site.config.m4 file.
+ Problem noted by Ole Holm Nielsen of the
+ Technical University of Denmark.
+ CRAY TS 10.0.x from Sven Nielsen of San Diego
+ Supercomputer Center.
+ Improved LDAP version 3 integration based on input
+ from Kurt D. Zeilenga of the OpenLDAP Foundation,
+ John Beck of Sun Microsystems, and Booker Bense
+ of Stanford University.
+ Linux doesn't have a standard way to get the timezone
+ between different releases. Back out the
+ change in 8.9.2 and don't attempt to derive
+ a timezone. Problem reported by Igor S. Livshits
+ of the University of Illinois at Urbana-Champaign
+ and Michael Dickens of Tetranet Communications.
+ Reliant UNIX, the new name for SINIX, from Gert-Jan Looy
+ of Siemens/SNI.
+ SunOS 5.8 from John Beck of Sun Microsystems.
+ CONFIG: SCO UnixWare 2.1 and 7.0 need TZ to get the proper
+ timezone. Problem noted by Petr Lampa of Technical
+ University of Brno.
+ CONFIG: Handle <@bestmx-host:user@otherhost> addressing properly
+ when using FEATURE(bestmx_is_local). Patch from Neil W.
+ Rickert of Northern Illinois University.
+ CONFIG: Properly handle source routed and %-hack addresses on
+ hosts which the mailertable remaps to local:. Patch from
+ Neil W. Rickert of Northern Illinois University.
+ CONFIG: Internal fixup of mailertable local: map value. Patch from
+ Larry Parmelee of Cornell University.
+ CONFIG: Only add back +detail from host portion of mailer triplet
+ on local mailer triplets if it was originally +detail.
+ Patch from Neil W. Rickert of Northern Illinois University.
+ CONFIG: The bestmx_is_local checking done in check_rcpt would
+ cause later checks to fail. Patch from Paul J Murphy of
+ MIDS Europe.
+ New files:
+ BuildTools/OS/CRAYTS.10.0.x
+ BuildTools/OS/ReliantUNIX
+ BuildTools/OS/SunOS.5.8
+
+8.9.2/8.9.2 98/12/30
+ SECURITY: Remove five second sleep on accepting daemon connections
+ due to an accept() failure. This sleep could be used
+ for a denial of service attack.
+ Do not silently ignore queue files with names which are too long.
+ Patch from Bryan Costales of InfoBeat, Inc.
+ Do not store failures closing an SMTP session in persistent
+ host status. Reported by Graeme Hewson of Oracle
+ Corporation UK.
+ Allow symbolic link forward files if they are in safe directories.
+ Problem noted by Andreas Schott of the Max Planck Society.
+ Missing columns in a text map could cause a segmentation fault.
+ Fix from David Lee of the University of Durham.
+ Note that for 8.9.X, PrivacyOptions=goaway also includes the
+ noetrn flag. This is scheduled to change in a future
+ version of sendmail. Problem noted by Theo Van Dinter of
+ Chrysalis Symbolic Designa and Alan Brown of Manawatu
+ Internet Services.
+ When trying to do host canonification in a Wildcard MX
+ environment, try an MX lookup of the hostname without the
+ default domain appended. Problem noted by Olaf Seibert of
+ Polderland Language & Speech Technology.
+ Reject SMTP RCPT To: commands with only comments (i.e.
+ 'RCPT TO: (comment)'. Problem noted by Earle Ake of
+ Hassler Communication Systems Technology, Inc.
+ Handle any number of %s in the LDAP filter spec. Patch from
+ Per Hedeland of Ericsson.
+ Clear ldapx open timeouts even if the map open failed to prevent
+ a segmentation fault. Patch from Wayne Knowles of the
+ National Institute of Water & Atmospheric Research Ltd.
+ Do not syslog envelope clone messages when using address
+ verification (-bv). Problem noted by Kari Hurtta of the
+ Finnish Meteorological Institute.
+ Continue to perform queue runs while in daemon mode even if the
+ daemon is rejecting connections due to a disk full
+ condition. Problem noted by JR Oldroyd of TerraNet
+ Internet Services.
+ Include full filename on installation of the sendmail.hf file
+ in case the $HFDIR directory does not exist. Problem
+ noted by Josef Svitak of Montana State University.
+ Close all maps when exiting the process with one exception.
+ Berkeley DB can use internal shared memory locking for
+ its memory pool. Closing a map opened by another process
+ will interfere with the shared memory and locks of the
+ parent process leaving things in a bad state. For
+ Berkeley DB, only close the map if the current process
+ is also the one that opened the map, otherwise only close
+ the map file descriptor. Thanks to Yoseff Francus of
+ Collective Technologies for volunteering his system for
+ extended testing.
+ Avoid null pointer dereference on XDEBUG output for SMTP reply
+ failures. Problem noted by Carlos Canau of EUnet Portugal.
+ On mailq and hoststat listings being piped to another program, such
+ as more, if the pipe closes (i.e. the user quits more),
+ stop sending output and exit. Patch from Allan E Johannesen
+ of Worcester Polytechnic Institute.
+ In accordance with the documentation, LDAP map lookup failures
+ are now considered temporary failures instead of permanent
+ failures unless the -t flag is used in the map definition.
+ Problem noted by Booker Bense of Stanford University and
+ Eric C. Hagberg of Morgan Stanley.
+ Fix by one error reporting on long alias names. Problem noted by
+ H. Paul Hammann of the Missouri Research and Education
+ Network.
+ Fix DontBlameSendmail=IncludeFileInUnsafeDirPath behavior. Problem
+ noted by Barry S. Finkel of Argonne National Laboratory.
+ When automatically converting from 8 bit to quoted printable MIME,
+ be careful not to miss a multi-part boundary if that
+ boundary is preceded by a boundary-like line. Problem
+ noted by Andreas Raschle of Ansid Inc. Fix from
+ Kari Hurtta of the Finnish Meteorological Institute.
+ Avoid bogus reporting of "LMTP tobuf overflow" when the buffer
+ has enough space for the additional address. Problem
+ noted by Steve Cliffe of the University of Wollongong.
+ Fix DontBlameSendmail=FileDeliveryToSymlink behavior. Problem
+ noted by Alex Vorobiev of Swarthmore College.
+ If the check_compat ruleset resolves to the $#discard mailer,
+ discard the current recipient. Unlike check_relay,
+ check_mail, and check_rcpt, the entire envelope is not
+ discarded. Problem noted by RZ D. Rahlfs. Fix from
+ Claus Assmann of Christian-Albrechts-University of Kiel.
+ Avoid segmentation fault when reading ServiceSwitchFile files with
+ bogus formatting. Patch from Kari Hurtta of the Finnish
+ Meteorological Institute.
+ Support Berkeley DB 2.6.4 API change.
+ OP.ME: Pages weren't properly output on duplexed printers. Fix
+ from Matthew Black of CSU Long Beach.
+ Portability:
+ Apple Rhapsody from Wilfredo Sanchez of Apple Computer, Inc.
+ Avoid a clash with IRIX 6.2 getopt.h and the UserDatabase
+ option structure. Problem noted by Ashley M.
+ Kirchner of Photo Craft Laboratories, Inc.
+ Break out IP address to hostname translation for
+ reading network interface addresses into
+ class 'w'. Patch from John Kennedy of
+ Cal State University, Chico.
+ AIX 4.x use -qstrict with -O3 to prevent the optimized
+ from changing the semantics of the compiled
+ program. From Simon Travaglia of the
+ University of Waikato, New Zealand.
+ FreeBSD 2.2.2 and later support setusercontext(). From
+ Peter Wemm of DIALix.
+ FreeBSD 3.x fix from Peter Wemm of DIALix.
+ IRIX 5.x has a syslog buffer size of 512 bytes. From
+ Nao NINOMIYA of Utsunomiya University.
+ IRIX 6.5 64-bit Build support.
+ LDAP Version 3 support from John Beck and Ravi Iyer
+ of Sun Microsystems.
+ Linux does not implement seteuid() properly. From
+ John Kennedy of Cal State University, Chico.
+ Linux timezone type was set improperly. From Takeshi Itoh
+ of Bits Co., Ltd.
+ NCR MP-RAS 3.x needs -lresolv for confLIBS. From
+ Tom J. Moore of NCR.
+ NeXT 4.x correction to man page path. From J. P. McCann
+ of E I A.
+ System V Rel 5.x (a.k.a UnixWare7 w/o BSD-Compatibility Libs)
+ from Paul Gampe of the Asia Pacific Network
+ Information Center.
+ ULTRIX now requires an optimization limit of 970 from
+ Allan E Johannesen of Worcester Polytechnic
+ Institute.
+ Fix extern declaration for sm_dopr(). Fix from Henk
+ van Oers of Algemeen Nederlands Persbureau.
+ CONFIG: Catch @hostname,user@anotherhost.domain as relaying.
+ Problem noted by Mark Rogov of AirMedia, Inc. Fix from
+ Claus Assmann of Christian-Albrechts-University of Kiel.
+ CONFIG: Do not refer to http://maps.vix.com/ on RBL rejections as
+ there are multiple RBL's available and the MAPS RBL may
+ not be the one in use. Suggested by Alan Brown of
+ Manawatu Internet Services.
+ CONFIG: Properly strip route addresses (i.e. @host1:user@host2)
+ when stripping down a recipient address to check for
+ relaying. Patch from Claus Assmann of
+ Christian-Albrechts-University of Kiel and Neil W Rickert
+ of Northern Illinois University.
+ CONFIG: Allow the access database to override RBL lookups. Patch
+ from Claus Assmann of Christian-Albrechts-University of
+ Kiel.
+ CONFIG: UnixWare 7 support from Phillip P. Porch of The Porch
+ Dot Com.
+ CONFIG: Fixed check for deferred delivery mode warning. Patch
+ from Claus Assmann of Christian-Albrechts-University of
+ Kiel and Per Hedeland of Ericsson.
+ CONFIG: If a recipient using % addressing is used, e.g.
+ user%site@othersite, and othersite's MX records are now
+ checked for local hosts if FEATURE(relay_based_on_MX) is
+ used. Problem noted by Alexander Litvin of Lucky Net Ltd.
+ Patch from Alexander Litvin of Lucky Net Ltd and
+ Claus Assmann of Christian-Albrechts-University of Kiel.
+ MAIL.LOCAL: Prevent warning messages from appearing in the LMTP
+ stream. Do not allow more than one response per recipient.
+ MAIL.LOCAL: Handle routed addresses properly when using LMTP. Fix
+ from John Beck of Sun Microsystems.
+ MAIL.LOCAL: Properly check for CRLF when using LMTP. Fix from
+ John Beck of Sun Microsystems.
+ MAIL.LOCAL: Substitute MAILER-DAEMON for the LMTP empty sender in
+ the envelope From header.
+ MAIL.LOCAL: Accept underscores in hostnames in LMTP mode.
+ Problem noted by Glenn A. Malling of Syracuse University.
+ MAILSTATS: Document msgsrej and msgsdis fields in the man page.
+ Problem noted by Richard Wong of Princeton University.
+ MAKEMAP: Build group list so group writable files are allowed with
+ the -s flag. Problem noted by Curt Sampson of Internet
+ Portal Services, Inc.
+ PRALIASES: Automatically handle alias files created without the
+ NULL byte at the end of the key. Patch from John Beck of
+ Sun Microsystems.
+ PRALIASES: Support Berkeley DB 2.6.4 API change.
+ New Files:
+ BuildTools/OS/IRIX64.6.5
+ BuildTools/OS/UnixWare.5.i386
+ cf/cf/unixware7.m4
+ contrib/smcontrol.pl
+ src/control.c
+
+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 PrivacyOptions 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.
+ New Files:
+ BuildTools/OS/DomainOS.10.4
+
+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
@@ -189,7 +1058,7 @@ summary of the changes in that release.
If the AllowBogusHELO option were set and an EHLO with a bad or
missing parameter were issued, the EHLO behaved like a HELO.
Load limiting never kicked in for incoming SMTP transactions if the
- DeliverMode=background and any recipient was an alias or
+ DeliveryMode=background and any recipient was an alias or
had a .forward file. From Nik Conwell of Boston University.
On some non-Posix systems, the decision of whether chown(2) permits
file giveaway was undefined. From Tetsu Ushijima of the
@@ -680,7 +1549,7 @@ summary of the changes in that release.
first" error message. Problem pointed out by Chris Thomas
of UCLA; patch from John Beck of SunSoft.
Handle "sendmail -bp -qSfoobar" properly if restrictqrun is set
- in PrivacyFlags. The -q shouldn't turn this command off.
+ in PrivacyOptions. The -q shouldn't turn this command off.
Problem noted by Murray Kucherawy of Pacific Bell Internet;
based on a patch from Gregory Neil Shapiro of WPI.
Don't consider SMTP reply codes 452 or 552 (exceeded storage allocation)
@@ -903,7 +1772,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 +1782,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 +1832,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 +1929,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 +2070,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.
@@ -1330,7 +2199,7 @@ summary of the changes in that release.
on a suggestion by Motonori Nakamura.
Add new value "time" for QueueSortOrder option; this causes the queue
to be sorted strictly by the time of submission. Note that
- this can cause very bad behaviour over slow lines (because
+ this can cause very bad behavior over slow lines (because
large jobs will tend to delay small jobs) and on nodes with
heavy traffic (because old things in the queue for hosts that
are down delay processing of new jobs). Also, this does not
@@ -1441,7 +2310,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)
@@ -1453,7 +2322,7 @@ summary of the changes in that release.
The Timeout.* options are not safe -- they can be used to create a
denial-of-service attack. Problem noted by Christophe
Wolfhugel.
- Don't send PostMasterCopy messages in the event of a "delayed"
+ Don't send PostmasterCopy messages in the event of a "delayed"
notification. Suggested by Barry Bouwsma.
Don't advertise "VERB" ESMTP extension if the "noexpn" privacy
option is set, since this disables VERB mode. Suggested
@@ -1461,7 +2330,7 @@ summary of the changes in that release.
Complain if the QueueDirectory (Q) option is not set. Problem noted
by Motonori Nakamura of Kyoto University.
Only queue messages on transient .forward open failures if there
- were no successful opens. The previous behaviour caused it
+ were no successful opens. The previous behavior caused it
to queue even if a "fall back" .forward was found. Problem
noted by Ann-Kian Yeo of the Dept. of Information Systems
and Computer Science (DISCS), NUS, Singapore.
@@ -1713,12 +2582,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,
- but the header name is kept. The old behaviour (always keep
+ only recipient header in the message, its value is tossed,
+ but the header name is kept. The old behavior (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,
@@ -1735,7 +2604,7 @@ summary of the changes in that release.
John Hawkinson of Panix.
An SMTP RCPT command referencing a host that gave a nameserver
timeout would return a 451 command (8.6 accepted it and
- queued it locally). Revert to the 8.6 behaviour in order
+ queued it locally). Revert to the 8.6 behavior in order
to simplify queue management for clustered systems. Suggested
by Gregory Neil Shapiro of WPI. The same problem could break
MH, which assumes that the SMTP session will succeed (tsk, tsk
@@ -1748,11 +2617,11 @@ summary of the changes in that release.
Hawkinson and Sam Hartman of MIT.
``452 Out of disk space for temp file'' messages weren't being
printed. Fix from David Perlin of Nanosoft.
- Don't advertise the ESMTP DSN extension if the SendMIMEErrors option
+ Don't advertise the ESMTP DSN extension if the SendMimeErrors option
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 +2648,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 +2682,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 +2826,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.
@@ -2089,7 +2958,7 @@ summary of the changes in that release.
t TimeZoneSpec
u DefaultUser
U UserDatabaseSpec
- V FallbackMXhost
+ V FallbackMXHost
v Verbose
w TryNullMXList
x QueueLA
@@ -2224,7 +3093,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
@@ -2254,7 +3123,7 @@ summary of the changes in that release.
or the sequence "\t" or "\n" for tab or newline.
These are for use by NIS+ and similar access methods.
Change maps to always strip quotes before lookups; the -q flag
- turns off this behaviour. Suggested by Motonori Nakamura.
+ turns off this behavior. Suggested by Motonori Nakamura.
Add "nisplus" map class. Takes -k and -v flags to choose the
key and value field names respectively. Code donated by
Sun Microsystems.
@@ -2658,8 +3527,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
@@ -2798,9 +3667,9 @@ summary of the changes in that release.
deals with 32 bit or 16 bit fields, such as IP
addresses or nameserver fields.''
DG/UX 5.4.3 from Mark T. Robinson <mtr@ornl.gov>. To
- get the old behaviour, use -DDGUX_5_4_2.
+ get the old behavior, use -DDGUX_5_4_2.
DG/UX hack: add _FORCE_MAIL_LOCAL_=yes environment
- variable to fix bogus /bin/mail behaviour.
+ variable to fix bogus /bin/mail behavior.
Tandem NonStop-UX from Rick McCarty <mccarty@mpd.tandem.com>.
This also cleans up some System V Release 4 compile
problems.
@@ -2837,12 +3706,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
@@ -2944,7 +3813,7 @@ summary of the changes in that release.
Received: header inserted into all messages. Suggested by
Gary Mills of the University of Manitoba.
CONFIG: Make "notsticky" the default; use FEATURE(stickyhost)
- to get the old behaviour. I did this upon observing
+ to get the old behavior. I did this upon observing
that almost everyone needed this feature, and that the
concept I was trying to make happen didn't work with
some user agents anyway. FEATURE(notsticky) still works,
@@ -2995,7 +3864,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
@@ -3018,7 +3887,7 @@ summary of the changes in that release.
would only work when locally addressed. Fix from
Edvard Tuinder of Cistron Internet Services.
CONFIG: use ${opMode} to avoid error on .REDIRECT addresses if option
- "n" (CheckAlaises) is set when rebuilding alias database.
+ "n" (CheckAliases) is set when rebuilding alias database.
Based on code contributed by Claude Marinier.
CONFIG: Allow mailertable to have values of the form
``error:code message''. The ``code'' is a status code
@@ -3210,7 +4079,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.
@@ -3325,7 +4194,7 @@ summary of the changes in that release.
this could in turn cause the sendmail.pid file to be
incorrect. A better approach might be to accept the
connection and give a 421 code, but that could break
- other mailers in mysterious ways and have paging behaviour
+ other mailers in mysterious ways and have paging behavior
implications.
Fix a glitch in TCP-level debugging that caused flag 16.101 to
set debugging on the wrong socket. From Eric Wassenaar.
@@ -3585,7 +4454,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>.
@@ -3630,14 +4499,14 @@ summary of the changes in that release.
this by putting "*" in /etc/shells. It also won't
permit world-writable :include: files to reference
programs or files (there's no way to disable this).
- These behaviours are only one level deep -- for
+ These behaviors are only one level deep -- for
example, it is legal for a world-writable :include:
file to reference an alias that writes a file, on
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
@@ -3973,7 +4842,7 @@ summary of the changes in that release.
Non-root use of -C flag, dangerous -f flags, and use of -oQ
by non-root users were not put into
X-Authentication-Warning:s as intended because the
- config file hadn't set the PrivacyFlags yet. Fix
+ config file hadn't set the PrivacyOptions yet. Fix
from Sven-Ove Westberg of the University of Lulea.
Under very odd circumstances, the alias file rebuild code
could get confused as to whether a database was
@@ -3992,7 +4861,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
@@ -4051,7 +4920,7 @@ summary of the changes in that release.
term bug.
Fix a nasty bug causing core dumps when returning the "warning:
cannot deliver for N hours -- will keep trying" message;
- it only occurred if you had PostMasterCopy set and
+ it only occurred if you had PostmasterCopy set and
only on some architectures. Although sendmail would
keep trying, it would send error messages on each
queue interval. This is an important fix.
@@ -4140,7 +5009,7 @@ summary of the changes in that release.
Fix a bug that can cause qf files to be left around even after
an SMTP RSET command. Problem and fix from Michael
Corrigan.
- Don't send a PostMasterCopy to errors when the Precedence: is
+ Don't send a PostmasterCopy to errors when the Precedence: is
negative. Error reports still go to the envelope
sender address.
Add LA_SHORT for load averages.
@@ -4363,7 +5232,7 @@ summary of the changes in that release.
Support -M as equivalent to -oM on Ultrix -- apparently
DECnet calls sendmail with -MrDECnet -Ms<HOST> -bs
instead of using standard flags. Oh joy. This
- behaviour reported by Jon Giltner of University
+ behavior reported by Jon Giltner of University
of Colorado.
SGI IRIX -- this includes several changes that should
help other strict ANSI compilers.
@@ -4485,13 +5354,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 +5394,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 +5513,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.
@@ -4909,7 +5778,7 @@ summary of the changes in that release.
Fix compilation problem in getauthinfo() if IDENTPROTO is off.
Turn off DEFNAMES and DNSRCH when getting the hostsignature
(i.e., MX records) in level 1 configuration files; this
- matches the old behaviour. From Motonori Nakamura of
+ matches the old behavior. From Motonori Nakamura of
Kyoto University.
Improve error message printing -- if sent through an alias,
error messages include the name of the alias in the
@@ -4953,7 +5822,7 @@ summary of the changes in that release.
IDENT port (113). Thus, no email can be received from such
hosts. There is some evidence that versions of Ultrix before
4.3 do not have this problem. Thanks to Tom Ivar Helbekkmo
- for pointing out this behaviour to me and to Michael Corrigan
+ for pointing out this behavior to me and to Michael Corrigan
of U.C. San Diego for informing me about the HPUX problem.
Allow IPC mailers to return a colon-separated list of hosts in the
$@ clause; these are searched in order as though they were
@@ -5053,7 +5922,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.
@@ -5510,7 +6379,7 @@ summary of the changes in that release.
Add the "c" mailer flag -- this suppresses all comment parts of
addresses (requested by John Curran of NEARnet).
Have -v print prompts in -bt mode even if stdin is not a terminal
- (default behaviour is to be silent if not reading from
+ (default behavior is to be silent if not reading from
a terminal). Suggested by Bryan Costales, ICSI.
Move the metacharacters from C0 space (\001-\037) into C1 space
(\201-\237). This also fixes a bunch of potential bugs
@@ -5539,7 +6408,7 @@ summary of the changes in that release.
was suggested by Eric Wassenaar.
Use initgroups() in hpux, even though it's System-V based. The
HASINITGROUPS compile flag can set this on other systems.
- This HPUX behaviour was pointed out by Eric Wassenaar.
+ This HPUX behavior was pointed out by Eric Wassenaar.
6.23/6.6 93/02/16
Clean up handling of LogLevel to make it easier to figure out
@@ -5560,7 +6429,7 @@ summary of the changes in that release.
definition lines. Note that rulesets 1 and 2 are
still used for both addresses as before. Bruce Lilly
gave a convincing argument that RFC976 insists on
- this behaviour.
+ this behavior.
Added some time zones to arpatounix -- they may not be in the
standards, but they are in use. However, I may delete
arpatounix entirely -- there appears to be no reason
@@ -5681,7 +6550,7 @@ summary of the changes in that release.
6.9/6.1 93/01/13
Environment handling simplification/bug fix -- child processes
get a minimal, fixed environment. This avoids different
- behaviour in queue runs.
+ behavior in queue runs.
Handle commas inside comments properly.
Properly limit large messages submitted in -obq mode.
diff --git a/cf/README b/cf/README
index 184a353..392c36d 100644
--- a/cf/README
+++ b/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.186 (Berkeley) 2/3/1999
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
@@ -306,14 +293,15 @@ POP_MAILER_FLAGS [Penu] Flags added to POP mailer. Flags "lsDFM"
are always added.
POP_MAILER_ARGS [pop $u] The arguments passed to the POP mailer.
PROCMAIL_MAILER_PATH [/usr/local/bin/procmail] The path to the procmail
- program. This is also used by FEATURE(local_procmail).
+ program. This is also used by
+ FEATURE(`local_procmail').
PROCMAIL_MAILER_FLAGS [SPhnu9] Flags added to Procmail mailer. Flags
``DFM'' are always set. This is NOT used by
- FEATURE(local_procmail); tweak LOCAL_MAILER_FLAGS
+ FEATURE(`local_procmail'); tweak LOCAL_MAILER_FLAGS
instead.
PROCMAIL_MAILER_ARGS [procmail -Y -m $h $f $u] The arguments passed to
the Procmail mailer. This is NOT used by
- FEATURE(local_procmail); tweak LOCAL_MAILER_ARGS
+ FEATURE(`local_procmail'); tweak LOCAL_MAILER_ARGS
instead.
PROCMAIL_MAILER_MAX [undefined] If set, the maximum size message that
will be accepted by the procmail mailer.
@@ -325,9 +313,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 +327,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').
@@ -464,7 +455,7 @@ procmail An interface to procmail (does not come with sendmail).
This would arrange for (anything)@host.com to be sent
to person@other.host. Within the procmail script, $1 is
the name of the sender and $2 is the name of the recipient.
- If you use this with FEATURE(local_procmail), the FEATURE
+ If you use this with FEATURE(`local_procmail'), the FEATURE
should be listed first.
mail11 The DECnet mail11 mailer, useful only if you have the mail11
@@ -488,10 +479,10 @@ cyrus The cyrus and cyrusbb mailers. The cyrus mailer delivers to
The local mailer accepts addresses of the form "user+detail", where
the "+detail" is not used for mailbox matching but is available
-to certain local mail programs (in particular, see FEATURE(local_procmail)).
-For example, "eric", "eric+sendmail", and "eric+sww" all indicate
-the same user, but additional arguments <null>, "sendmail", and "sww"
-may be provided for use in sorting mail.
+to certain local mail programs (in particular, see
+FEATURE(`local_procmail')). For example, "eric", "eric+sendmail", and
+"eric+sww" all indicate the same user, but additional arguments <null>,
+"sendmail", and "sww" may be provided for use in sorting mail.
+----------+
@@ -501,13 +492,22 @@ may be provided for use in sorting mail.
Special features can be requested using the "FEATURE" macro. For
example, the .mc line:
- FEATURE(use_cw_file)
+ FEATURE(`use_cw_file')
tells sendmail that you want to have it read an /etc/sendmail.cw
file to get values for class $=w. The FEATURE may contain a single
optional parameter -- for example:
- FEATURE(mailertable, dbm /usr/lib/mailertable)
+ 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:
@@ -515,7 +515,8 @@ 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.
@@ -554,7 +555,9 @@ mailertable Include a "mailer table" which can be used to override
routing for particular domains. The argument of the
FEATURE may be the key definition. If none is specified,
the definition used is:
+
hash -o /etc/mailertable
+
Keys in this database are fully qualified domain names
or partial domains preceded by a dot -- for example,
"vangogh.CS.Berkeley.EDU" or ".CS.Berkeley.EDU".
@@ -562,7 +565,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
@@ -571,7 +583,9 @@ domaintable Include a "domain table" which can be used to provide
oldname.com to newname.com). The argument of the
FEATURE may be the key definition. If none is specified,
the definition used is:
+
hash -o /etc/domaintable
+
The key in this table is the domain name; the value is
the new (fully qualified) domain. Anything in the
domaintable is reflected into headers; that is, this
@@ -582,13 +596,17 @@ bitdomain Look up bitnet hosts in a table to try to turn them into
bitdomain program contributed by John Gardiner Myers.
The argument of the FEATURE may be the key definition; if
none is specified, the definition used is:
+
hash -o /etc/bitdomain.db
+
Keys are the bitnet hostname; values are the corresponding
internet hostname.
uucpdomain Similar feature for UUCP hosts. The default map definition
is:
+
hash -o /etc/uudomain.db
+
At the moment there is no automagic tool to build this
database.
@@ -637,30 +655,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:
+ The argument of FEATURE(`genericstable') may be the map
+ 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,
@@ -688,7 +708,7 @@ virtusertable A domain-specific form of aliasing, allowing multiple
A new definition can be specified as the second argument of
the FEATURE macro, such as
- FEATURE(virtusertable, dbm -o /etc/mail/virtusers)
+ FEATURE(`virtusertable', `dbm -o /etc/mail/virtusers')
nodns We aren't running DNS at our site (for example,
we are UUCP-only connected). It's hard to consider
@@ -705,9 +725,20 @@ 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.
+ Also, note that absolutely no anti-spam or anti-relaying
+ is done in a null client configuration. More information
+ can be found in the ANTI-SPAM CONFIGURATION CONTROL section.
+
+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;
@@ -722,18 +753,116 @@ 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; that
+ is, if an MX record for host foo.com points to your site,
+ you will accept and relay mail addressed to foo.com. See
+ description below for more information before using this
+ feature. Also, see the KNOWNBUGS entry regarding bestmx
+ map lookups.
+
+ FEATURE(`relay_based_on_MX') does not necessarily allow
+ routing of these messages which you expect to be allowed,
+ if route address syntax (or %-hack syntax) is used. If
+ this is a problem, add entries to the access-table or use
+ FEATURE(`loose_relay_check').
+
+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. Specifically,
+ they can send mail to your mail server that claims to be
+ from your domain (either directly or via a routed address),
+ and you will go ahead and relay it out to arbitrary hosts
+ on the Internet.
+
+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.
+-------+
@@ -770,7 +899,7 @@ the $=w class. This is a list of names by which you are known, and
anything sent to an address using a host name in this list will be
treated as local mail. You can do this in two ways: either create
the file /etc/sendmail.cw containing a list of your aliases (one per
-line), and use ``FEATURE(use_cw_file)'' in the .mc file, or add the
+line), and use ``FEATURE(`use_cw_file')'' in the .mc file, or add the
line:
Cw alias.host.name
@@ -915,7 +1044,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
@@ -996,7 +1125,7 @@ to read the list of names from the indicated file.
Normally only header addresses are masqueraded. If you want to
masquerade the envelope as well, use
- FEATURE(masquerade_envelope)
+ FEATURE(`masquerade_envelope')
There are always users that need to be "exposed" -- that is, their
internal site name should be displayed instead of the masquerade name.
@@ -1013,7 +1142,7 @@ without @host) to a relay host. For example, if you have a central
email server, you might relay to that host so that users don't have
to have .forward files or aliases. You can do this using
- define(`LOCAL_RELAY', mailer:hostname)
+ define(`LOCAL_RELAY', `mailer:hostname')
The ``mailer:'' can be omitted, in which case the mailer defaults to
"relay". There are some user names that you don't want relayed, perhaps
@@ -1029,16 +1158,16 @@ This adds users to class L; you could also use something like
If you want all incoming mail sent to a centralized hub, as for a
shared /var/spool/mail scheme, use
- define(`MAIL_HUB', mailer:hostname)
+ define(`MAIL_HUB', `mailer:hostname')
Again, ``mailer:'' defaults to "relay". If you define both LOCAL_RELAY
-and MAIL_HUB _AND_ you have FEATURE(stickyhost), unqualified names will
+and MAIL_HUB _AND_ you have FEATURE(`stickyhost'), unqualified names will
be sent to the LOCAL_RELAY and other local names will be sent to MAIL_HUB.
Names in $=L will be delivered locally, so you MUST have aliases or
.forward files for them.
For example, if you are on machine mastodon.CS.Berkeley.EDU and you have
-FEATURE(stickyhost), the following combinations of settings will have the
+FEATURE(`stickyhost'), the following combinations of settings will have the
indicated effects:
email sent to.... eric eric@mastodon.CS.Berkeley.EDU
@@ -1052,13 +1181,13 @@ mammoth.CS.Berkeley.EDU (aliasing done) (aliasing done)
Both LOCAL_RELAY and mail.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU
MAIL_HUB set as above (no local aliasing) (aliasing done)
-If you do not have FEATURE(stickyhost) set, then LOCAL_RELAY and
+If you do not have FEATURE(`stickyhost') set, then LOCAL_RELAY and
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 +1205,252 @@ 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 (that is, you will accept mail either to or from any
+host in your domain).
+
+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 for relay to domain.com. 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 (that is, they set up an
+MX record pointing to your mail server, and you will relay mail addressed
+to them without any prior arrangement). 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')
+
+Remember, since /etc/mail/access is a database, after creating the text
+file as described below, you must use makemap to create the database
+map. For example:
+
+ makemap hash /etc/mail/access < /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
+ 192.168.212 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
+192.168.212.* network.
+
+The value part of the map can contain:
+
+ OK Accept mail even if other rules in the
+ running ruleset would reject it, for example,
+ if the domain name is unresolvable.
+ RELAY Accept mail addressed to the indicated domain or
+ received from the indicated domain for relaying
+ through your SMTP server. RELAY also serves as
+ an implicit OK for the other checks.
+ REJECT Reject the sender or recipient with a general
+ purpose message.
+ DISCARD Discard the message completely using the
+ $#discard mailer. This only works for sender
+ addresses (i.e., it indicates that you should
+ discard anything received from the indicated
+ domain).
+ ### 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. Enabling this
+feature will keep you from sending mails to all addresses that
+have an error message or REJECT as value part in the access map.
+Taking the example from above:
+
+ spammer@aol.com REJECT
+ cyberspammer.com REJECT
+
+Mail can't be sent to spammer@aol.com or anyone at cyberspammer.com.
+
+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
+
+Users of FEATURE(`nullclient') who desire to use the anti-spam and
+anti-relaying capabilities should replace FEATURE(`nullclient', `mailhub')
+with:
+
+ undefine(`ALIAS_FILE')
+ define(`MAIL_HUB', `mailhub')
+ define(`SMART_HOST', `mailhub')
+ define(`confFORWARD_PATH', `')
+
+where mailhub is the fully qualified hostname for their mail server.
+The above rules will provide the relaying to the mailhub without local
+alias and forward file expansion. To match the other behavior of
+FEATURE(`nullclient'), you should also add these lines along with those
+listed above:
+
+ MASQUERADE_AS(`mailhub')
+ FEATURE(`allmasquerade')
+ FEATURE(`masquerade_envelope')
+
+
+--------------------------------+
| ADDING NEW MAILERS OR RULESETS |
+--------------------------------+
@@ -1089,7 +1464,7 @@ LOCAL_RULESETS respectively. For example:
...
LOCAL_RULESETS
- Scheck_relay
+ Smyruleset
...
@@ -1106,7 +1481,7 @@ hook to handle some special cases.
You can define a ``smart host'' that understands a richer address syntax
using:
- define(`SMART_HOST', mailer:hostname)
+ define(`SMART_HOST', `mailer:hostname')
In this case, the ``mailer:'' defaults to "relay". Any messages that
can't be handled using the usual UUCP rules are passed to this host.
@@ -1115,24 +1490,28 @@ If you are on a local SMTP-based net that connects to the outside
world via UUCP, you can use LOCAL_NET_CONFIG to add appropriate rules.
For example:
- define(`SMART_HOST', suucp:uunet)
+ define(`SMART_HOST', `suucp:uunet')
LOCAL_NET_CONFIG
R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3
This will cause all names that end in your domain name ($m) via
SMTP; anything else will be sent via suucp (smart UUCP) to uunet.
-If you have FEATURE(nocanonify), you may need to omit the dots after
+If you have FEATURE(`nocanonify'), you may need to omit the dots after
the $m. If you are running a local DNS inside your domain which is
not otherwise connected to the outside world, you probably want to
use:
- define(`SMART_HOST', smtp:fire.wall.com)
+ define(`SMART_HOST', `smtp:fire.wall.com')
LOCAL_NET_CONFIG
R$* < @ $* . > $* $#smtp $@ $2. $: $1 < @ $2. > $3
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? |
@@ -1156,7 +1535,7 @@ name. This is usually done using:
| USING MAILERTABLES |
+--------------------+
-To use FEATURE(mailertable), you will have to create an external
+To use FEATURE(`mailertable'), you will have to create an external
database containing the routing information for various domains.
For example, a mailertable file in text format might be:
@@ -1215,7 +1594,7 @@ is fairly easy.) The intent was to locate the default maildrop at
a site, but allow you to override this by sending to a specific host.
If you decide to set up the user database in this fashion, it is
-imperative that you not use FEATURE(stickyhost) -- otherwise,
+imperative that you not use FEATURE(`stickyhost') -- otherwise,
e-mail sent to Full.Name@local.host.name will be rejected.
To build the internal form of the user database, use:
@@ -1257,7 +1636,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,10 +1727,14 @@ 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.
- See also FEATURE(use_ct_file).
+ See also FEATURE(`use_ct_file').
confSMTP_MAILER - [esmtp] The mailer name used when
SMTP connectivity is required.
One of "smtp", "smtp8", or "esmtp".
@@ -1397,9 +1780,9 @@ confAUTO_REBUILD AutoRebuildAliases
file if needed.
confERROR_MODE ErrorMode [print] Error message mode.
confERROR_MESSAGE ErrorHeader [undefined] Error message header/file.
-confSAVE_FROM_LINES SafeFromLine Save extra leading From_ lines.
+confSAVE_FROM_LINES SaveFromLine 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 +1965,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 +2032,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 +2081,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/cf/cf/Build b/cf/cf/Build
new file mode 100755
index 0000000..3a91477
--- /dev/null
+++ b/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/1998
+#
+
+#
+# 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/cf/cf/Makefile b/cf/cf/Makefile
index 7450b2a..7d0f373 100644
--- a/cf/cf/Makefile
+++ b/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/1998
+#
+
#
# 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/cf/cf/Makefile.dist b/cf/cf/Makefile.dist
deleted file mode 100644
index 051e9d3..0000000
--- a/cf/cf/Makefile.dist
+++ /dev/null
@@ -1,108 +0,0 @@
-#
-# Makefile for configuration files.
-#
-# @(#)Makefile.dist 8.11 (Berkeley) 1/14/97
-#
-
-#
-# Create configuration files using "m4 ../m4/cf.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 knecht.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/cf/cf/chez.cs.mc b/cf/cf/chez.cs.mc
index 85f7e5c..a5334b5 100644
--- a/cf/cf/chez.cs.mc
+++ b/cf/cf/chez.cs.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.
#
#
@@ -45,7 +23,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)chez.cs.mc 8.6 (Berkeley) 3/23/96')
+VERSIONID(`@(#)chez.cs.mc 8.11 (Berkeley) 5/19/1998')
OSTYPE(bsd4.4)dnl
DOMAIN(CS.Berkeley.EDU)dnl
define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl
diff --git a/cf/cf/clientproto.mc b/cf/cf/clientproto.mc
index 7cbb352..b0fd9bd 100644
--- a/cf/cf/clientproto.mc
+++ b/cf/cf/clientproto.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.
#
#
@@ -49,7 +27,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)clientproto.mc 8.7 (Berkeley) 3/23/96')
+VERSIONID(`@(#)clientproto.mc 8.12 (Berkeley) 5/19/1998')
OSTYPE(unknown)
FEATURE(nullclient, mailhost.$m)
diff --git a/cf/cf/cs-hpux10.mc b/cf/cf/cs-hpux10.mc
index 898f360..0be009c 100644
--- a/cf/cf/cs-hpux10.mc
+++ b/cf/cf/cs-hpux10.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.
#
#
@@ -44,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cs-hpux10.mc 8.5 (Berkeley) 6/3/97')
+VERSIONID(`@(#)cs-hpux10.mc 8.10 (Berkeley) 5/19/1998')
OSTYPE(hpux10)dnl
DOMAIN(CS.Berkeley.EDU)dnl
define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl
diff --git a/cf/cf/cs-hpux9.mc b/cf/cf/cs-hpux9.mc
index 96ff7c8..9b5edfe 100644
--- a/cf/cf/cs-hpux9.mc
+++ b/cf/cf/cs-hpux9.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.
#
#
@@ -44,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cs-hpux9.mc 8.6 (Berkeley) 6/3/97')
+VERSIONID(`@(#)cs-hpux9.mc 8.11 (Berkeley) 5/19/1998')
OSTYPE(hpux9)dnl
DOMAIN(CS.Berkeley.EDU)dnl
define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl
diff --git a/cf/cf/cs-osf1.mc b/cf/cf/cs-osf1.mc
index 95bb7f2..230023c 100644
--- a/cf/cf/cs-osf1.mc
+++ b/cf/cf/cs-osf1.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.
#
#
@@ -44,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cs-osf1.mc 8.5 (Berkeley) 6/3/97')
+VERSIONID(`@(#)cs-osf1.mc 8.10 (Berkeley) 5/19/1998')
OSTYPE(osf1)dnl
DOMAIN(CS.Berkeley.EDU)dnl
MAILER(local)dnl
diff --git a/cf/cf/cs-solaris2.mc b/cf/cf/cs-solaris2.mc
index 515dd12..03fd5e2 100644
--- a/cf/cf/cs-solaris2.mc
+++ b/cf/cf/cs-solaris2.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.
#
#
@@ -44,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cs-solaris2.mc 8.4 (Berkeley) 6/3/97')
+VERSIONID(`@(#)cs-solaris2.mc 8.9 (Berkeley) 5/19/1998')
OSTYPE(solaris2)dnl
DOMAIN(CS.Berkeley.EDU)dnl
MAILER(local)dnl
diff --git a/cf/cf/cs-sunos4.1.mc b/cf/cf/cs-sunos4.1.mc
index 70f134f..3913639 100644
--- a/cf/cf/cs-sunos4.1.mc
+++ b/cf/cf/cs-sunos4.1.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.
#
#
@@ -44,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cs-sunos4.1.mc 8.5 (Berkeley) 6/3/97')
+VERSIONID(`@(#)cs-sunos4.1.mc 8.10 (Berkeley) 5/19/1998')
OSTYPE(sunos4.1)dnl
DOMAIN(CS.Berkeley.EDU)dnl
MAILER(local)dnl
diff --git a/cf/cf/cs-ultrix4.mc b/cf/cf/cs-ultrix4.mc
index 8888be7..a12b989 100644
--- a/cf/cf/cs-ultrix4.mc
+++ b/cf/cf/cs-ultrix4.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.
#
#
@@ -44,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cs-ultrix4.mc 8.5 (Berkeley) 6/3/97')
+VERSIONID(`@(#)cs-ultrix4.mc 8.10 (Berkeley) 5/19/1998')
OSTYPE(ultrix4)dnl
DOMAIN(CS.Berkeley.EDU)dnl
MAILER(local)dnl
diff --git a/cf/cf/obj/generic-bsd4.4.cf b/cf/cf/generic-bsd4.4.cf
index 94353f5..6d47493 100644
--- a/cf/cf/obj/generic-bsd4.4.cf
+++ b/cf/cf/generic-bsd4.4.cf
@@ -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.
#
######################################################################
@@ -37,35 +15,39 @@
#####
##### SENDMAIL CONFIGURATION FILE
#####
-##### built by gshapiro@knecht.Sendmail.ORG on Fri Oct 24 15:54:31 PDT 1997
-##### in /home/knecht/a/eric/src/sendmail/cf/cf
+##### built by gshapiro@knecht.sendmail.org on Thu Feb 4 16:39:22 PST 1999
+##### in /home/eric/src/sendmail/cf/cf
##### using ../ as configuration include directory
#####
######################################################################
######################################################################
-##### @(#)cfhead.m4 8.9 (Berkeley) 1/18/97 #####
-##### @(#)cf.m4 8.24 (Berkeley) 8/16/95 #####
-##### @(#)generic-bsd4.4.mc 8.2 (Berkeley) 3/23/96 #####
+##### @(#)cfhead.m4 8.23 (Berkeley) 10/6/1998 #####
+##### @(#)cf.m4 8.29 (Berkeley) 5/19/1998 #####
+##### @(#)generic-bsd4.4.mc 8.7 (Berkeley) 5/19/1998 #####
-##### @(#)bsd4.4.m4 8.4 (Berkeley) 11/13/95 #####
+##### @(#)bsd4.4.m4 8.10 (Berkeley) 10/6/1998 #####
-##### @(#)generic.m4 8.3 (Berkeley) 3/24/96 #####
+##### @(#)generic.m4 8.9 (Berkeley) 5/19/1998 #####
-##### @(#)redirect.m4 8.5 (Berkeley) 8/17/96 #####
+##### @(#)redirect.m4 8.10 (Berkeley) 5/19/1998 #####
-##### @(#)use_cw_file.m4 8.1 (Berkeley) 6/7/93 #####
+##### @(#)use_cw_file.m4 8.6 (Berkeley) 5/19/1998 #####
-##### @(#)proto.m4 8.151 (Berkeley) 7/31/97 #####
+##### @(#)proto.m4 8.243 (Berkeley) 2/2/1999 #####
-# level 7 config file format
-V7/Berkeley
+# level 8 config file format
+V8/Berkeley
+
+# override file safeties - setting this option compromises system security
+# need to set this now for the sake of class files
+#O DontBlameSendmail=safe
##################
# local info #
@@ -85,9 +67,6 @@ CP.
# "Smart" relay host (may be null)
DS
-# place to which unknown users should be forwarded
-#Kuser user -m -a<>
-#DLname_of_luser_relay
# operators that cannot be in local usernames (i.e., network indicators)
CO @ % !
@@ -98,17 +77,19 @@ C..
# a class with just a left bracket (for identifying domain literals)
C[[
-# Mailer table (overriding domains)
-#Kmailertable dbm /etc/mailertable
-# Domain table (adding domains)
-#Kdomaintable dbm /etc/domaintable
-# Generics table (mapping outgoing addresses)
-#Kgenerics dbm /etc/genericstable
-# Virtual user table (maps incoming users)
-#Kvirtuser dbm /etc/virtusertable
+
+
+
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OK> -T<TEMP>
+
+# Hosts that will permit relaying ($=R)
+FR-o /etc/mail/relay-domains
# who I send unqualified names to (null means deliver locally)
DR
@@ -135,7 +116,7 @@ DnMAILER-DAEMON
CPREDIRECT
# Configuration version number
-DZ8.8.8
+DZ8.9.3
###############
@@ -207,7 +188,7 @@ O HelpFile=/usr/share/misc/sendmail.hf
O SendMimeErrors=True
# Forward file search path
-O ForwardPath=$z/.forward.$w:$z/.forward
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
# open connection cache size
O ConnectionCacheSize=2
@@ -293,7 +274,7 @@ O StatusFile=/var/log/sendmail.st
#O TimeZoneSpec=
# default UID (can be username or userid:groupid)
-O DefaultUser=1:1
+#O DefaultUser=mailnull
# list of locations of user database file (null means no lookup)
#O UserDatabaseSpec=/etc/userdb
@@ -367,6 +348,15 @@ O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
# UNIX initial From header format (old $l macro)
O UnixFromLine=From $g $d
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
# delimiter (operator) characters (old $o macro)
O OperatorChars=.:%@!^/[]+
@@ -377,11 +367,22 @@ O OperatorChars=.:%@!^/[]+
#O UnsafeGroupWrites
# where do errors that occur when sending errors get sent?
-#O DoubleBounceAddress
+#O DoubleBounceAddress=postmaster
# what user id do we assume for the majority of the processing?
#O RunAsUser=sendmail
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=100
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces
+
+
+
+
+
+
###########################
# Message precedences #
###########################
@@ -506,15 +507,15 @@ R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [a.b.c.d]
R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
-# look up domains in the domain table
-#R$* < @ $+ > $* $: $1 < @ $(domaintable $2 $) > $3
+
+
# if really UUCP, handle it immediately
# try UUCP traffic as a local address
R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
-R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
# pass to name server to make hostname canonical
R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4
@@ -570,54 +571,55 @@ 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"
-
-# handle numeric address spec
-R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
-R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+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
-# handle virtual users
-#R$+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-#R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 + * @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-#R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-#R<@> $+ < @ $+ . > $: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-#R<@> $+ $: $1
-#R< error : $- $+ > $* $#error $@ $( dequote $1 $) $: $2
-#R< $+ > $+ < @ $+ > $: $>97 $1
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+
# short circuit local delivery so forwarded email works
-#R$+ . USENET < @ $=w . > $#usenet $: $1 handle usenet specially
R$=L < @ $=w . > $#local $: @ $1 special local names
R$+ < @ $=w . > $#local $: $1 regular local name
-# not local -- try mailer table lookup
-#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
# resolve remotely connected UUCP links (if any)
@@ -631,10 +633,6 @@ R$* < @ $* > $* $: $>95 < $S > $1 < @ $2 > $3 glue on smarthost name
# deal with other remote names
R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
-# if this is quoted, strip the quotes and try again
-R$+ $: $(dequote $1 $) strip quotes
-R$+ $=O $+ $@ $>97 $1 $2 $3 try again
-
# handle locally delivered names
R$=L $#local $: @ $1 special local names
R$+ $#local $: $1 regular local names
@@ -652,35 +650,22 @@ R$+ + $* $#local $@ + $2 $: $1 + *
# prepend an empty "forward host" on the front
R$+ $: <> $1
-# send unrecognized local users to a relay host
-#R< > $+ $: < $L . > $( user $1 $) look up user
-#R< $* > $+ <> $* $: < > $2 $3 found; strip $L
-#R< $* . > $+ $: < $1 > $2 strip extra dot
# 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$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
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 >
-###################################################################
-### Ruleset 90 -- try domain part of mailertable entry ###
-###################################################################
-
-S90
-#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
###################################################################
### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
@@ -688,7 +673,7 @@ S90
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
@@ -700,6 +685,10 @@ R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
###################################################################
SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>97 $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>97 $2 $3 $4
+
# strip trailing dot from any host name that may appear
R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
@@ -720,14 +709,6 @@ R< $+ > $* $#local $@ $2 $: $1
S93
-# handle generics database
-#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
# special case the users that should be exposed
R$=E < @ *LOCAL* > $@ $1 < @ $j . > leave exposed
@@ -746,7 +727,6 @@ R$* < @ $+ @ $+ > $* $: $1 < @ $3 . > $4 $M is not null
###################################################################
S94
-#R$+ $@ $>93 $1
R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
###################################################################
@@ -759,6 +739,177 @@ S98
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>
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>3 $1 make domain canonical
+R< @ $+ > : $* @ $* < @ $1 > : $2 % $3 change @ to % in src route
+R$* < @ $+ > : $* : $* $3 $1 < @ $2 > : $4 change to % hack.
+R$* < @ $+ > : $* $3 $1 < @ $2 >
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $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
+
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+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
+
+
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $1
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < $* $=P > $* $: <OK> $1 < @ $2 $3 > $4
+R<?> $* < @ $+ > $* $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > $3
+R<? $* <$->> $* < @ $+ > $*
+ $: <$2> $3 < @ $4 > $5
+
+# handle case of @localhost on address
+R<$+> $* < @localhost > $: < ? $&{client_name} > <$1> $2 < @localhost >
+R<$+> $* < @localhost.$m >
+ $: < ? $&{client_name} > <$1> $2 < @localhost.$m >
+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
+
+
+# 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"
+
+######################################################################
+### 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
+
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# anything terminating locally is ok
+R$+ < @ $=w > $@ OK
+R$+ < @ $* $=R > $@ OK
+
+
+# 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
+R$=w $@ OK
+R$* $=R $@ OK
+
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ OK originated locally
+R0 $@ OK originated locally
+R$=R $* $@ OK relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ OK ... and see if it is local
+
+
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
#
######################################################################
######################################################################
@@ -773,7 +924,7 @@ R$* < @ $+ .REDIRECT. > < $- > $# error $@ 5.1.1 $: "551 User has moved; please
### Local and Program Mailer specification ###
##################################################
-##### @(#)local.m4 8.23 (Berkeley) 5/31/96 #####
+##### @(#)local.m4 8.30 (Berkeley) 6/30/1998 #####
Mlocal, P=/usr/libexec/mail.local, F=lsDFMAw5:/|@qrmn9, S=10/30, R=20/40,
T=DNS/RFC822/X-Unix,
@@ -787,6 +938,7 @@ Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
#
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
@@ -801,6 +953,7 @@ R$+ < @ $* > $: $1 strip host part
#
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
@@ -809,20 +962,17 @@ R$* $: $>93 $1 do masquerading
#
S40
R$+ $: $>50 $1 add local domain if needed
-#R$* $: $>93 $1 do all-masquerading
#
# Common code to add local domain name (only if always-add-domain)
#
S50
-#R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-#R$+ $@ $1 < @ *LOCAL* > add local qualification
#####################################
### SMTP Mailer specification ###
#####################################
-##### @(#)smtp.m4 8.33 (Berkeley) 7/9/96 #####
+##### @(#)smtp.m4 8.38 (Berkeley) 5/19/1998 #####
Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
diff --git a/cf/cf/generic-bsd4.4.mc b/cf/cf/generic-bsd4.4.mc
index 25783a3..b097605 100644
--- a/cf/cf/generic-bsd4.4.mc
+++ b/cf/cf/generic-bsd4.4.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.
#
#
@@ -42,7 +20,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-bsd4.4.mc 8.2 (Berkeley) 3/23/96')
+VERSIONID(`@(#)generic-bsd4.4.mc 8.7 (Berkeley) 5/19/1998')
OSTYPE(bsd4.4)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
diff --git a/cf/cf/generic-hpux10.cf b/cf/cf/generic-hpux10.cf
new file mode 100644
index 0000000..e1c4192
--- /dev/null
+++ b/cf/cf/generic-hpux10.cf
@@ -0,0 +1,1062 @@
+#
+# 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.
+#
+#
+
+######################################################################
+######################################################################
+#####
+##### SENDMAIL CONFIGURATION FILE
+#####
+##### built by gshapiro@knecht.sendmail.org on Thu Feb 4 16:39:22 PST 1999
+##### in /home/eric/src/sendmail/cf/cf
+##### using ../ as configuration include directory
+#####
+######################################################################
+######################################################################
+
+##### @(#)cfhead.m4 8.23 (Berkeley) 10/6/1998 #####
+##### @(#)cf.m4 8.29 (Berkeley) 5/19/1998 #####
+##### @(#)generic-hpux10.mc 8.8 (Berkeley) 5/19/1998 #####
+
+##### @(#)hpux10.m4 8.14 (Berkeley) 10/6/1998 #####
+
+
+##### @(#)generic.m4 8.9 (Berkeley) 5/19/1998 #####
+
+##### @(#)redirect.m4 8.10 (Berkeley) 5/19/1998 #####
+
+
+
+
+##### @(#)use_cw_file.m4 8.6 (Berkeley) 5/19/1998 #####
+
+
+
+##### @(#)proto.m4 8.243 (Berkeley) 2/2/1999 #####
+
+
+# level 8 config file format
+V8/Berkeley
+
+# override file safeties - setting this option compromises system security
+# need to set this now for the sake of class files
+#O DontBlameSendmail=safe
+
+##################
+# local info #
+##################
+
+Cwlocalhost
+# file containing names of hosts for which we receive email
+Fw/etc/sendmail.cw
+
+# my official domain name
+# ... define this only if sendmail cannot automatically determine your domain
+#Dj$w.Foo.COM
+
+
+CP.
+
+# "Smart" relay host (may be null)
+DS
+
+
+# operators that cannot be in local usernames (i.e., network indicators)
+CO @ % !
+
+# a class with just dot (for identifying canonical names)
+C..
+
+# a class with just a left bracket (for identifying domain literals)
+C[[
+
+
+
+
+
+
+
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OK> -T<TEMP>
+
+# Hosts that will permit relaying ($=R)
+FR-o /etc/mail/relay-domains
+
+# who I send unqualified names to (null means deliver locally)
+DR
+
+# who gets all local email traffic ($R has precedence for unqualified names)
+DH
+
+# dequoting map
+Kdequote dequote
+
+# class E: names that should be exposed as from this host, even if we masquerade
+# class L: names that should be delivered locally, even if we have a relay
+# class M: domains that should be converted to $M
+#CL root
+CE root
+
+# who I masquerade as (null for no masquerading) (see also $=M)
+DM
+
+# my name for error messages
+DnMAILER-DAEMON
+
+
+CPREDIRECT
+
+# Configuration version number
+DZ8.9.3
+
+
+###############
+# Options #
+###############
+
+# strip message body to 7 bits on input?
+O SevenBitInput=False
+
+# 8-bit data handling
+O EightBitMode=pass8
+
+
+# wait for alias file rebuild (default units: minutes)
+O AliasWait=10
+
+# location of alias file
+O AliasFile=/etc/mail/aliases
+
+# minimum number of free blocks on filesystem
+O MinFreeBlocks=100
+
+# maximum message size
+#O MaxMessageSize=1000000
+
+# substitution for space (blank) characters
+O BlankSub=.
+
+# avoid connecting to "expensive" mailers on initial submission?
+O HoldExpensive=False
+
+# checkpoint queue runs after every N successful deliveries
+#O CheckpointInterval=10
+
+# default delivery mode
+O DeliveryMode=background
+
+# automatically rebuild the alias database?
+#O AutoRebuildAliases
+
+# error message header/file
+#O ErrorHeader=/etc/sendmail.oE
+
+# error mode
+#O ErrorMode=print
+
+# save Unix-style "From_" lines at top of header?
+#O SaveFromLine
+
+# temporary file mode
+O TempFileMode=0600
+
+# match recipients against GECOS field?
+#O MatchGECOS
+
+# maximum hop count
+#O MaxHopCount=17
+
+# location of help file
+O HelpFile=/usr/share/lib/sendmail.hf
+
+# ignore dots as terminators in incoming messages?
+#O IgnoreDots
+
+# name resolver options
+#O ResolverOptions=+AAONLY
+
+# deliver MIME-encapsulated error messages?
+O SendMimeErrors=True
+
+# Forward file search path
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
+
+# open connection cache size
+O ConnectionCacheSize=2
+
+# open connection cache timeout
+O ConnectionCacheTimeout=5m
+
+# persistent host status directory
+#O HostStatusDirectory=.hoststat
+
+# single thread deliveries (requires HostStatusDirectory)?
+#O SingleThreadDelivery
+
+# use Errors-To: header?
+O UseErrorsTo=False
+
+# log level
+O LogLevel=9
+
+# send to me too, even in an alias expansion?
+#O MeToo
+
+# verify RHS in newaliases?
+O CheckAliases=False
+
+# default messages to old style headers if no special punctuation?
+O OldStyleHeaders=True
+
+# SMTP daemon options
+#O DaemonPortOptions=Port=esmtp
+
+# privacy flags
+O PrivacyOptions=authwarnings
+
+# who (if anyone) should get extra copies of error messages
+#O PostMasterCopy=Postmaster
+
+# slope of queue-only function
+#O QueueFactor=600000
+
+# queue directory
+O QueueDirectory=/var/spool/mqueue
+
+# timeouts (many of these)
+#O Timeout.initial=5m
+#O Timeout.connect=5m
+#O Timeout.iconnect=5m
+#O Timeout.helo=5m
+#O Timeout.mail=10m
+#O Timeout.rcpt=1h
+#O Timeout.datainit=5m
+#O Timeout.datablock=1h
+#O Timeout.datafinal=1h
+#O Timeout.rset=5m
+#O Timeout.quit=2m
+#O Timeout.misc=2m
+#O Timeout.command=1h
+#O Timeout.ident=30s
+#O Timeout.fileopen=60s
+O Timeout.queuereturn=5d
+#O Timeout.queuereturn.normal=5d
+#O Timeout.queuereturn.urgent=2d
+#O Timeout.queuereturn.non-urgent=7d
+O Timeout.queuewarn=4h
+#O Timeout.queuewarn.normal=4h
+#O Timeout.queuewarn.urgent=1h
+#O Timeout.queuewarn.non-urgent=12h
+#O Timeout.hoststatus=30m
+
+# should we not prune routes in route-addr syntax addresses?
+#O DontPruneRoutes
+
+# queue up everything before forking?
+O SuperSafe=True
+
+# status file
+O StatusFile=/etc/mail/sendmail.st
+
+# time zone handling:
+# if undefined, use system default
+# if defined but null, use TZ envariable passed in
+# if defined and non-null, use that info
+O TimeZoneSpec=
+
+# default UID (can be username or userid:groupid)
+#O DefaultUser=mailnull
+
+# list of locations of user database file (null means no lookup)
+#O UserDatabaseSpec=/etc/userdb
+
+# fallback MX host
+#O FallbackMXhost=fall.back.host.net
+
+# if we are the best MX host for a site, try it directly instead of config err
+#O TryNullMXList
+
+# load average at which we just queue messages
+#O QueueLA=8
+
+# load average at which we refuse connections
+#O RefuseLA=12
+
+# maximum number of children we allow at one time
+#O MaxDaemonChildren=12
+
+# maximum number of new connections per second
+#O ConnectionRateThrottle=3
+
+# work recipient factor
+#O RecipientFactor=30000
+
+# deliver each queued job in a separate process?
+#O ForkEachJob
+
+# work class factor
+#O ClassFactor=1800
+
+# work time factor
+#O RetryFactor=90000
+
+# shall we sort the queue by hostname first?
+#O QueueSortOrder=priority
+
+# minimum time in queue before retry
+#O MinQueueAge=30m
+
+# default character set
+#O DefaultCharSet=iso-8859-1
+
+# service switch file (ignored on Solaris, Ultrix, OSF/1, others)
+#O ServiceSwitchFile=/etc/service.switch
+
+# hosts file (normally /etc/hosts)
+#O HostsFile=/etc/hosts
+
+# dialup line delay on connection failure
+#O DialDelay=10s
+
+# action to take if there are no recipients in the message
+#O NoRecipientAction=add-to-undisclosed
+
+# chrooted environment for writing to files
+#O SafeFileEnvironment=/arch
+
+# are colons OK in addresses?
+#O ColonOkInAddr
+
+# how many jobs can you process in the queue?
+#O MaxQueueRunSize=10000
+
+# shall I avoid expanding CNAMEs (violates protocols)?
+#O DontExpandCnames
+
+# SMTP initial login message (old $e macro)
+O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
+
+# UNIX initial From header format (old $l macro)
+O UnixFromLine=From $g $d
+
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
+# delimiter (operator) characters (old $o macro)
+O OperatorChars=.:%@!^/[]+
+
+# shall I avoid calling initgroups(3) because of high NIS costs?
+#O DontInitGroups
+
+# are group-writable :include: and .forward files (un)trustworthy?
+#O UnsafeGroupWrites
+
+# where do errors that occur when sending errors get sent?
+#O DoubleBounceAddress=postmaster
+
+# what user id do we assume for the majority of the processing?
+#O RunAsUser=sendmail
+
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=100
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces
+
+
+
+
+
+
+###########################
+# Message precedences #
+###########################
+
+Pfirst-class=0
+Pspecial-delivery=100
+Plist=-30
+Pbulk=-60
+Pjunk=-100
+
+#####################
+# Trusted users #
+#####################
+
+# this is equivalent to setting class "t"
+#Ft/etc/sendmail.ct
+Troot
+Tdaemon
+Tuucp
+
+#########################
+# Format of headers #
+#########################
+
+H?P?Return-Path: <$g>
+HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
+ $.by $j ($v/$Z)$?r with $r$. id $i$?u
+ for $u; $|;
+ $.$b
+H?D?Resent-Date: $a
+H?D?Date: $a
+H?F?Resent-From: $?x$x <$g>$|$g$.
+H?F?From: $?x$x <$g>$|$g$.
+H?x?Full-Name: $x
+# HPosted-Date: $a
+# H?l?Received-Date: $b
+H?M?Resent-Message-Id: <$t.$i@$j>
+H?M?Message-Id: <$t.$i@$j>
+#
+######################################################################
+######################################################################
+#####
+##### REWRITING RULES
+#####
+######################################################################
+######################################################################
+
+############################################
+### Ruleset 3 -- Name Canonicalization ###
+############################################
+S3
+
+# handle null input (translate to <@> special case)
+R$@ $@ <@>
+
+# strip group: syntax (not inside angle brackets!) and trailing semicolon
+R$* $: $1 <@> mark addresses
+R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
+R@ $* <@> $: @ $1 unmark @host:...
+R$* :: $* <@> $: $1 :: $2 unmark node::addr
+R:include: $* <@> $: :include: $1 unmark :include:...
+R$* [ $* : $* ] <@> $: $1 [ $2 : $3 ] unmark IPv6 addrs
+R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
+R$* : $* <@> $: $2 strip colon if marked
+R$* <@> $: $1 unmark
+R$* ; $1 strip trailing semi
+R$* < $* ; > $1 < $2 > bogus bracketed semi
+
+# null input now results from list:; syntax
+R$@ $@ :; <@>
+
+# strip angle brackets -- note RFC733 heuristic to get innermost item
+R$* $: < $1 > housekeeping <>
+R$+ < $* > < $2 > strip excess on left
+R< $* > $+ < $1 > strip excess on right
+R<> $@ < @ > MAIL FROM:<> case
+R< $+ > $: $1 remove housekeeping <>
+
+# make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later
+R@ $+ , $+ @ $1 : $2 change all "," to ":"
+
+# localize and dispose of route-based addresses
+R@ $+ : $+ $@ $>96 < @$1 > : $2 handle <route-addr>
+
+# find focus for list syntax
+R $+ : $* ; @ $+ $@ $>96 $1 : $2 ; < @ $3 > list syntax
+R $+ : $* ; $@ $1 : $2; list syntax
+
+# find focus for @ syntax addresses
+R$+ @ $+ $: $1 < @ $2 > focus on domain
+R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
+R$+ < @ $+ > $@ $>96 $1 < @ $2 > already canonical
+
+# do some sanity checking
+R$* < @ $* : $* > $* $1 < @ $2 $3 > $4 nix colons in addrs
+
+# convert old-style addresses to a domain-based address
+R$- ! $+ $@ $>96 $2 < @ $1 .UUCP > resolve uucp names
+R$+ . $- ! $+ $@ $>96 $3 < @ $1 . $2 > domain uucps
+R$+ ! $+ $@ $>96 $2 < @ $1 .UUCP > uucp subdomains
+
+# if we have % signs, take the rightmost one
+R$* % $* $1 @ $2 First make them all @s.
+R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
+R$* @ $* $@ $>96 $1 < @ $2 > Insert < > and finish
+
+# else we must be a local name
+R$* $@ $>96 $1
+
+
+################################################
+### Ruleset 96 -- bottom half of ruleset 3 ###
+################################################
+
+S96
+
+# handle special cases for local names
+R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
+R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
+R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain
+R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [a.b.c.d]
+R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
+R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
+
+
+
+
+
+# if really UUCP, handle it immediately
+
+# try UUCP traffic as a local address
+R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+
+# pass to name server to make hostname canonical
+R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4
+
+# local host aliases and pseudo-domains are always canonical
+R$* < @ $=w > $* $: $1 < @ $2 . > $3
+R$* < @ $j > $* $: $1 < @ $j . > $2
+R$* < @ $=M > $* $: $1 < @ $2 . > $3
+R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
+R$* < @ $* . . > $* $1 < @ $2 . > $3
+
+
+##################################################
+### Ruleset 4 -- Final Output Post-rewriting ###
+##################################################
+S4
+
+R$* <@> $@ handle <> and list:;
+
+# strip trailing dot off possibly canonical name
+R$* < @ $+ . > $* $1 < @ $2 > $3
+
+# eliminate internal code -- should never get this far!
+R$* < @ *LOCAL* > $* $1 < @ $j > $2
+
+# externalize local domain info
+R$* < $+ > $* $1 $2 $3 defocus
+R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
+R@ $* $@ @ $1 ... and exit
+
+# UUCP must always be presented in old form
+R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u
+
+# delete duplicate local names
+R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
+
+
+
+##############################################################
+### Ruleset 97 -- recanonicalize and call ruleset zero ###
+### (used for recursive calls) ###
+##############################################################
+
+S97
+R$* $: $>3 $1
+R$* $@ $>0 $1
+
+
+######################################
+### Ruleset 0 -- Parse Address ###
+######################################
+
+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<@> $@ <@> 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.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"
+
+# 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.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
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+
+
+# short circuit local delivery so forwarded email works
+R$=L < @ $=w . > $#local $: @ $1 special local names
+R$+ < @ $=w . > $#local $: $1 regular local name
+
+
+# resolve remotely connected UUCP links (if any)
+
+# resolve fake top level domains by forwarding to other hosts
+
+
+
+# pass names that still have a host to a smarthost (if defined)
+R$* < @ $* > $* $: $>95 < $S > $1 < @ $2 > $3 glue on smarthost name
+
+# deal with other remote names
+R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
+
+# handle locally delivered names
+R$=L $#local $: @ $1 special local names
+R$+ $#local $: $1 regular local names
+
+###########################################################################
+### Ruleset 5 -- special rewriting after aliases have been expanded ###
+###########################################################################
+
+S5
+
+# deal with plussed users so aliases work nicely
+R$+ + * $#local $@ $&h $: $1
+R$+ + $* $#local $@ + $2 $: $1 + *
+
+# prepend an empty "forward host" on the front
+R$+ $: <> $1
+
+
+# see if we have a relay or a hub
+R< > $+ $: < $H > $1 try hub
+R< > $+ $: < $R > $1 try relay
+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 <> $&h add +detail back in
+R$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
+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 >
+
+
+###################################################################
+### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
+###################################################################
+
+S95
+R< > $* $@ $1 strip off null relay
+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
+R< $=w > $* $@ $2 delete local host
+R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
+
+###################################################################
+### Ruleset CanonLocal -- canonify local: syntax ###
+###################################################################
+
+SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>97 $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>97 $2 $3 $4
+
+# strip trailing dot from any host name that may appear
+R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
+
+# handle local: syntax -- use old user, either with or without host
+R< > $* < @ $* > $* $#local $@ $1@$2 $: $1
+R< > $+ $#local $@ $1 $: $1
+
+# handle local:user@host syntax -- ignore host part
+R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
+
+# handle local:user syntax
+R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1
+R< $+ > $* $#local $@ $2 $: $1
+
+###################################################################
+### Ruleset 93 -- convert header names to masqueraded form ###
+###################################################################
+
+S93
+
+
+# special case the users that should be exposed
+R$=E < @ *LOCAL* > $@ $1 < @ $j . > leave exposed
+R$=E < @ $=M . > $@ $1 < @ $2 . >
+R$=E < @ $=w . > $@ $1 < @ $2 . >
+
+# handle domain-specific masquerading
+R$* < @ $=M . > $* $: $1 < @ $2 . @ $M > $3 convert masqueraded doms
+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
+
+###################################################################
+### Ruleset 94 -- convert envelope names to masqueraded form ###
+###################################################################
+
+S94
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+###################################################################
+### Ruleset 98 -- local part of ruleset zero (can be null) ###
+###################################################################
+
+S98
+
+# 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>
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>3 $1 make domain canonical
+R< @ $+ > : $* @ $* < @ $1 > : $2 % $3 change @ to % in src route
+R$* < @ $+ > : $* : $* $3 $1 < @ $2 > : $4 change to % hack.
+R$* < @ $+ > : $* $3 $1 < @ $2 >
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $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
+
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+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
+
+
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $1
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < $* $=P > $* $: <OK> $1 < @ $2 $3 > $4
+R<?> $* < @ $+ > $* $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > $3
+R<? $* <$->> $* < @ $+ > $*
+ $: <$2> $3 < @ $4 > $5
+
+# handle case of @localhost on address
+R<$+> $* < @localhost > $: < ? $&{client_name} > <$1> $2 < @localhost >
+R<$+> $* < @localhost.$m >
+ $: < ? $&{client_name} > <$1> $2 < @localhost.$m >
+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
+
+
+# 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"
+
+######################################################################
+### 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
+
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# anything terminating locally is ok
+R$+ < @ $=w > $@ OK
+R$+ < @ $* $=R > $@ OK
+
+
+# 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
+R$=w $@ OK
+R$* $=R $@ OK
+
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ OK originated locally
+R0 $@ OK originated locally
+R$=R $* $@ OK relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ OK ... and see if it is local
+
+
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
+#
+######################################################################
+######################################################################
+#####
+##### MAILER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+
+##################################################
+### Local and Program Mailer specification ###
+##################################################
+
+##### @(#)local.m4 8.30 (Berkeley) 6/30/1998 #####
+
+Mlocal, P=/usr/bin/rmail, F=lsDFMAw5:/|@qm9, S=10/30, R=20/40,
+ T=DNS/RFC822/X-Unix,
+ A=rmail -d $u
+Mprog, P=/usr/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
+ T=X-Unix,
+ A=sh -c $u
+
+#
+# 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
+
+#
+# Common code to add local domain name (only if always-add-domain)
+#
+S50
+
+#####################################
+### SMTP Mailer specification ###
+#####################################
+
+##### @(#)smtp.m4 8.38 (Berkeley) 5/19/1998 #####
+
+Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=IPC $h
+Mesmtp, P=[IPC], F=mDFMuXa, S=11/31, R=21, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=IPC $h
+Msmtp8, P=[IPC], F=mDFMuX8, S=11/31, R=21, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=IPC $h
+Mrelay, P=[IPC], F=mDFMuXa8, S=11/31, R=61, E=\r\n, L=2040,
+ T=DNS/RFC822/SMTP,
+ A=IPC $h
+
+#
+# envelope sender rewriting
+#
+S11
+R$+ $: $>51 $1 sender/recipient common
+R$* :; <@> $@ list:; special case
+R$* $: $>61 $1 qualify unqual'ed names
+R$+ $: $>94 $1 do masquerading
+
+
+#
+# envelope recipient rewriting --
+# also header recipient if not masquerading recipients
+#
+S21
+R$+ $: $>51 $1 sender/recipient common
+R$+ $: $>61 $1 qualify unqual'ed names
+
+
+#
+# header sender and masquerading header recipient rewriting
+#
+S31
+R$+ $: $>51 $1 sender/recipient common
+R:; <@> $@ list:; special case
+
+# do special header rewriting
+R$* <@> $* $@ $1 <@> $2 pass null host through
+R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
+R$* $: $>61 $1 qualify unqual'ed names
+R$+ $: $>93 $1 do masquerading
+
+
+#
+# convert pseudo-domain addresses to real domain addresses
+#
+S51
+
+# pass <route-addr>s through
+R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
+
+# output fake domains as user%fake@relay
+
+# do UUCP heuristics; note that these are shared with UUCP mailers
+R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
+R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
+
+# leave these in .UUCP form to avoid further tampering
+R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
+R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
+R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
+R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
+R$+ < @ $+ : $+ > $@ $1 < @ $3 > strip mailer: part
+R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY
+
+
+#
+# common sender and masquerading recipient rewriting
+#
+S61
+
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification
+
+
+#
+# relay mailer header masquerading recipient rewriting
+#
+S71
+
+R$+ $: $>61 $1
+R$+ $: $>93 $1
diff --git a/cf/cf/generic-hpux10.mc b/cf/cf/generic-hpux10.mc
index 48828eb..2000505 100644
--- a/cf/cf/generic-hpux10.mc
+++ b/cf/cf/generic-hpux10.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.
#
#
@@ -41,7 +19,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-hpux10.mc 8.3 (Berkeley) 3/23/96')
+VERSIONID(`@(#)generic-hpux10.mc 8.8 (Berkeley) 5/19/1998')
OSTYPE(hpux10)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
diff --git a/cf/cf/obj/generic-hpux9.cf b/cf/cf/generic-hpux9.cf
index c240a5e..7b1736c 100644
--- a/cf/cf/obj/generic-hpux9.cf
+++ b/cf/cf/generic-hpux9.cf
@@ -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.
#
######################################################################
@@ -37,36 +15,40 @@
#####
##### SENDMAIL CONFIGURATION FILE
#####
-##### built by gshapiro@knecht.Sendmail.ORG on Fri Oct 24 15:54:31 PDT 1997
-##### in /home/knecht/a/eric/src/sendmail/cf/cf
+##### built by gshapiro@knecht.sendmail.org on Thu Feb 4 16:39:22 PST 1999
+##### in /home/eric/src/sendmail/cf/cf
##### using ../ as configuration include directory
#####
######################################################################
######################################################################
-##### @(#)cfhead.m4 8.9 (Berkeley) 1/18/97 #####
-##### @(#)cf.m4 8.24 (Berkeley) 8/16/95 #####
-##### @(#)generic-hpux9.mc 8.3 (Berkeley) 3/23/96 #####
+##### @(#)cfhead.m4 8.23 (Berkeley) 10/6/1998 #####
+##### @(#)cf.m4 8.29 (Berkeley) 5/19/1998 #####
+##### @(#)generic-hpux9.mc 8.8 (Berkeley) 5/19/1998 #####
-##### @(#)hpux9.m4 8.12 (Berkeley) 9/25/96 #####
+##### @(#)hpux9.m4 8.19 (Berkeley) 10/6/1998 #####
-##### @(#)generic.m4 8.3 (Berkeley) 3/24/96 #####
+##### @(#)generic.m4 8.9 (Berkeley) 5/19/1998 #####
-##### @(#)redirect.m4 8.5 (Berkeley) 8/17/96 #####
+##### @(#)redirect.m4 8.10 (Berkeley) 5/19/1998 #####
-##### @(#)use_cw_file.m4 8.1 (Berkeley) 6/7/93 #####
+##### @(#)use_cw_file.m4 8.6 (Berkeley) 5/19/1998 #####
-##### @(#)proto.m4 8.151 (Berkeley) 7/31/97 #####
+##### @(#)proto.m4 8.243 (Berkeley) 2/2/1999 #####
-# level 7 config file format
-V7/Berkeley
+# level 8 config file format
+V8/Berkeley
+
+# override file safeties - setting this option compromises system security
+# need to set this now for the sake of class files
+#O DontBlameSendmail=safe
##################
# local info #
@@ -86,9 +68,6 @@ CP.
# "Smart" relay host (may be null)
DS
-# place to which unknown users should be forwarded
-#Kuser user -m -a<>
-#DLname_of_luser_relay
# operators that cannot be in local usernames (i.e., network indicators)
CO @ % !
@@ -99,17 +78,19 @@ C..
# a class with just a left bracket (for identifying domain literals)
C[[
-# Mailer table (overriding domains)
-#Kmailertable dbm /etc/mailertable
-# Domain table (adding domains)
-#Kdomaintable dbm /etc/domaintable
-# Generics table (mapping outgoing addresses)
-#Kgenerics dbm /etc/genericstable
-# Virtual user table (maps incoming users)
-#Kvirtuser dbm /etc/virtusertable
+
+
+
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OK> -T<TEMP>
+
+# Hosts that will permit relaying ($=R)
+FR-o /etc/mail/relay-domains
# who I send unqualified names to (null means deliver locally)
DR
@@ -136,7 +117,7 @@ DnMAILER-DAEMON
CPREDIRECT
# Configuration version number
-DZ8.8.8
+DZ8.9.3
###############
@@ -208,7 +189,7 @@ O HelpFile=/usr/lib/sendmail.hf
O SendMimeErrors=True
# Forward file search path
-O ForwardPath=$z/.forward.$w:$z/.forward
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
# open connection cache size
O ConnectionCacheSize=2
@@ -294,7 +275,7 @@ O StatusFile=/usr/lib/sendmail.st
O TimeZoneSpec=
# default UID (can be username or userid:groupid)
-O DefaultUser=1:1
+#O DefaultUser=mailnull
# list of locations of user database file (null means no lookup)
#O UserDatabaseSpec=/etc/userdb
@@ -368,6 +349,15 @@ O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
# UNIX initial From header format (old $l macro)
O UnixFromLine=From $g $d
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
# delimiter (operator) characters (old $o macro)
O OperatorChars=.:%@!^/[]+
@@ -378,11 +368,22 @@ O OperatorChars=.:%@!^/[]+
#O UnsafeGroupWrites
# where do errors that occur when sending errors get sent?
-#O DoubleBounceAddress
+#O DoubleBounceAddress=postmaster
# what user id do we assume for the majority of the processing?
#O RunAsUser=sendmail
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=100
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces
+
+
+
+
+
+
###########################
# Message precedences #
###########################
@@ -507,15 +508,15 @@ R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [a.b.c.d]
R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
-# look up domains in the domain table
-#R$* < @ $+ > $* $: $1 < @ $(domaintable $2 $) > $3
+
+
# if really UUCP, handle it immediately
# try UUCP traffic as a local address
R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
-R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
# pass to name server to make hostname canonical
R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4
@@ -571,54 +572,55 @@ 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"
-
-# handle numeric address spec
-R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
-R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+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
-# handle virtual users
-#R$+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-#R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 + * @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-#R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-#R<@> $+ < @ $+ . > $: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-#R<@> $+ $: $1
-#R< error : $- $+ > $* $#error $@ $( dequote $1 $) $: $2
-#R< $+ > $+ < @ $+ > $: $>97 $1
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+
# short circuit local delivery so forwarded email works
-#R$+ . USENET < @ $=w . > $#usenet $: $1 handle usenet specially
R$=L < @ $=w . > $#local $: @ $1 special local names
R$+ < @ $=w . > $#local $: $1 regular local name
-# not local -- try mailer table lookup
-#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
# resolve remotely connected UUCP links (if any)
@@ -632,10 +634,6 @@ R$* < @ $* > $* $: $>95 < $S > $1 < @ $2 > $3 glue on smarthost name
# deal with other remote names
R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
-# if this is quoted, strip the quotes and try again
-R$+ $: $(dequote $1 $) strip quotes
-R$+ $=O $+ $@ $>97 $1 $2 $3 try again
-
# handle locally delivered names
R$=L $#local $: @ $1 special local names
R$+ $#local $: $1 regular local names
@@ -653,35 +651,22 @@ R$+ + $* $#local $@ + $2 $: $1 + *
# prepend an empty "forward host" on the front
R$+ $: <> $1
-# send unrecognized local users to a relay host
-#R< > $+ $: < $L . > $( user $1 $) look up user
-#R< $* > $+ <> $* $: < > $2 $3 found; strip $L
-#R< $* . > $+ $: < $1 > $2 strip extra dot
# 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$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
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 >
-###################################################################
-### Ruleset 90 -- try domain part of mailertable entry ###
-###################################################################
-
-S90
-#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
###################################################################
### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
@@ -689,7 +674,7 @@ S90
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
@@ -701,6 +686,10 @@ R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
###################################################################
SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>97 $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>97 $2 $3 $4
+
# strip trailing dot from any host name that may appear
R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
@@ -721,14 +710,6 @@ R< $+ > $* $#local $@ $2 $: $1
S93
-# handle generics database
-#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
# special case the users that should be exposed
R$=E < @ *LOCAL* > $@ $1 < @ $j . > leave exposed
@@ -747,7 +728,6 @@ R$* < @ $+ @ $+ > $* $: $1 < @ $3 . > $4 $M is not null
###################################################################
S94
-#R$+ $@ $>93 $1
R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
###################################################################
@@ -760,6 +740,177 @@ S98
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>
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>3 $1 make domain canonical
+R< @ $+ > : $* @ $* < @ $1 > : $2 % $3 change @ to % in src route
+R$* < @ $+ > : $* : $* $3 $1 < @ $2 > : $4 change to % hack.
+R$* < @ $+ > : $* $3 $1 < @ $2 >
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $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
+
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+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
+
+
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $1
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < $* $=P > $* $: <OK> $1 < @ $2 $3 > $4
+R<?> $* < @ $+ > $* $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > $3
+R<? $* <$->> $* < @ $+ > $*
+ $: <$2> $3 < @ $4 > $5
+
+# handle case of @localhost on address
+R<$+> $* < @localhost > $: < ? $&{client_name} > <$1> $2 < @localhost >
+R<$+> $* < @localhost.$m >
+ $: < ? $&{client_name} > <$1> $2 < @localhost.$m >
+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
+
+
+# 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"
+
+######################################################################
+### 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
+
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# anything terminating locally is ok
+R$+ < @ $=w > $@ OK
+R$+ < @ $* $=R > $@ OK
+
+
+# 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
+R$=w $@ OK
+R$* $=R $@ OK
+
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ OK originated locally
+R0 $@ OK originated locally
+R$=R $* $@ OK relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ OK ... and see if it is local
+
+
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
#
######################################################################
######################################################################
@@ -774,7 +925,7 @@ R$* < @ $+ .REDIRECT. > < $- > $# error $@ 5.1.1 $: "551 User has moved; please
### Local and Program Mailer specification ###
##################################################
-##### @(#)local.m4 8.23 (Berkeley) 5/31/96 #####
+##### @(#)local.m4 8.30 (Berkeley) 6/30/1998 #####
Mlocal, P=/bin/rmail, F=lsDFMAw5:/|@qm9, S=10/30, R=20/40,
T=DNS/RFC822/X-Unix,
@@ -788,6 +939,7 @@ Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
#
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
@@ -802,6 +954,7 @@ R$+ < @ $* > $: $1 strip host part
#
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
@@ -810,20 +963,17 @@ R$* $: $>93 $1 do masquerading
#
S40
R$+ $: $>50 $1 add local domain if needed
-#R$* $: $>93 $1 do all-masquerading
#
# Common code to add local domain name (only if always-add-domain)
#
S50
-#R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-#R$+ $@ $1 < @ *LOCAL* > add local qualification
#####################################
### SMTP Mailer specification ###
#####################################
-##### @(#)smtp.m4 8.33 (Berkeley) 7/9/96 #####
+##### @(#)smtp.m4 8.38 (Berkeley) 5/19/1998 #####
Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
diff --git a/cf/cf/generic-hpux9.mc b/cf/cf/generic-hpux9.mc
index 3c89e43..531b4ee 100644
--- a/cf/cf/generic-hpux9.mc
+++ b/cf/cf/generic-hpux9.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.
#
#
@@ -41,7 +19,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-hpux9.mc 8.3 (Berkeley) 3/23/96')
+VERSIONID(`@(#)generic-hpux9.mc 8.8 (Berkeley) 5/19/1998')
OSTYPE(hpux9)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
diff --git a/cf/cf/generic-nextstep3.3.mc b/cf/cf/generic-nextstep3.3.mc
index 7383c0b..1511ce7 100644
--- a/cf/cf/generic-nextstep3.3.mc
+++ b/cf/cf/generic-nextstep3.3.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.
#
#
@@ -41,7 +19,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-nextstep3.3.mc 8.2 (Berkeley) 3/23/96')
+VERSIONID(`@(#)generic-nextstep3.3.mc 8.7 (Berkeley) 5/19/1998')
OSTYPE(nextstep)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
diff --git a/cf/cf/obj/generic-osf1.cf b/cf/cf/generic-osf1.cf
index 001c4bf..6cf9317 100644
--- a/cf/cf/obj/generic-osf1.cf
+++ b/cf/cf/generic-osf1.cf
@@ -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.
#
######################################################################
@@ -37,35 +15,40 @@
#####
##### SENDMAIL CONFIGURATION FILE
#####
-##### built by gshapiro@knecht.Sendmail.ORG on Fri Oct 24 15:54:32 PDT 1997
-##### in /home/knecht/a/eric/src/sendmail/cf/cf
+##### built by gshapiro@knecht.sendmail.org on Thu Feb 4 16:39:23 PST 1999
+##### in /home/eric/src/sendmail/cf/cf
##### using ../ as configuration include directory
#####
######################################################################
######################################################################
-##### @(#)cfhead.m4 8.9 (Berkeley) 1/18/97 #####
-##### @(#)cf.m4 8.24 (Berkeley) 8/16/95 #####
-##### @(#)generic-osf1.mc 8.3 (Berkeley) 3/23/96 #####
+##### @(#)cfhead.m4 8.23 (Berkeley) 10/6/1998 #####
+##### @(#)cf.m4 8.29 (Berkeley) 5/19/1998 #####
+##### @(#)generic-osf1.mc 8.8 (Berkeley) 5/19/1998 #####
-##### @(#)osf1.m4 8.4 (Berkeley) 9/25/96 #####
+##### @(#)osf1.m4 8.11 (Berkeley) 10/6/1998 #####
-##### @(#)generic.m4 8.3 (Berkeley) 3/24/96 #####
-##### @(#)redirect.m4 8.5 (Berkeley) 8/17/96 #####
+##### @(#)generic.m4 8.9 (Berkeley) 5/19/1998 #####
+##### @(#)redirect.m4 8.10 (Berkeley) 5/19/1998 #####
-##### @(#)use_cw_file.m4 8.1 (Berkeley) 6/7/93 #####
+##### @(#)use_cw_file.m4 8.6 (Berkeley) 5/19/1998 #####
-##### @(#)proto.m4 8.151 (Berkeley) 7/31/97 #####
+##### @(#)proto.m4 8.243 (Berkeley) 2/2/1999 #####
-# level 7 config file format
-V7/Berkeley
+
+# level 8 config file format
+V8/Berkeley
+
+# override file safeties - setting this option compromises system security
+# need to set this now for the sake of class files
+#O DontBlameSendmail=safe
##################
# local info #
@@ -85,9 +68,6 @@ CP.
# "Smart" relay host (may be null)
DS
-# place to which unknown users should be forwarded
-#Kuser user -m -a<>
-#DLname_of_luser_relay
# operators that cannot be in local usernames (i.e., network indicators)
CO @ % !
@@ -98,17 +78,19 @@ C..
# a class with just a left bracket (for identifying domain literals)
C[[
-# Mailer table (overriding domains)
-#Kmailertable dbm /etc/mailertable
-# Domain table (adding domains)
-#Kdomaintable dbm /etc/domaintable
-# Generics table (mapping outgoing addresses)
-#Kgenerics dbm /etc/genericstable
-# Virtual user table (maps incoming users)
-#Kvirtuser dbm /etc/virtusertable
+
+
+
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OK> -T<TEMP>
+
+# Hosts that will permit relaying ($=R)
+FR-o /etc/mail/relay-domains
# who I send unqualified names to (null means deliver locally)
DR
@@ -135,7 +117,7 @@ DnMAILER-DAEMON
CPREDIRECT
# Configuration version number
-DZ8.8.8
+DZ8.9.3
###############
@@ -207,7 +189,7 @@ O HelpFile=/usr/share/lib/sendmail.hf
O SendMimeErrors=True
# Forward file search path
-O ForwardPath=$z/.forward.$w:$z/.forward
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
# open connection cache size
O ConnectionCacheSize=2
@@ -293,7 +275,7 @@ O StatusFile=/usr/adm/sendmail/sendmail.st
#O TimeZoneSpec=
# default UID (can be username or userid:groupid)
-O DefaultUser=1:1
+O DefaultUser=daemon
# list of locations of user database file (null means no lookup)
#O UserDatabaseSpec=/etc/userdb
@@ -367,6 +349,15 @@ O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
# UNIX initial From header format (old $l macro)
O UnixFromLine=From $g $d
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
# delimiter (operator) characters (old $o macro)
O OperatorChars=.:%@!^/[]+
@@ -377,11 +368,22 @@ O OperatorChars=.:%@!^/[]+
#O UnsafeGroupWrites
# where do errors that occur when sending errors get sent?
-#O DoubleBounceAddress
+#O DoubleBounceAddress=postmaster
# what user id do we assume for the majority of the processing?
#O RunAsUser=sendmail
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=100
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces
+
+
+
+
+
+
###########################
# Message precedences #
###########################
@@ -506,15 +508,15 @@ R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [a.b.c.d]
R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
-# look up domains in the domain table
-#R$* < @ $+ > $* $: $1 < @ $(domaintable $2 $) > $3
+
+
# if really UUCP, handle it immediately
# try UUCP traffic as a local address
R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
-R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
# pass to name server to make hostname canonical
R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4
@@ -570,54 +572,55 @@ 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"
-
-# handle numeric address spec
-R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
-R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+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
-# handle virtual users
-#R$+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-#R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 + * @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-#R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-#R<@> $+ < @ $+ . > $: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-#R<@> $+ $: $1
-#R< error : $- $+ > $* $#error $@ $( dequote $1 $) $: $2
-#R< $+ > $+ < @ $+ > $: $>97 $1
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+
# short circuit local delivery so forwarded email works
-#R$+ . USENET < @ $=w . > $#usenet $: $1 handle usenet specially
R$=L < @ $=w . > $#local $: @ $1 special local names
R$+ < @ $=w . > $#local $: $1 regular local name
-# not local -- try mailer table lookup
-#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
# resolve remotely connected UUCP links (if any)
@@ -631,10 +634,6 @@ R$* < @ $* > $* $: $>95 < $S > $1 < @ $2 > $3 glue on smarthost name
# deal with other remote names
R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
-# if this is quoted, strip the quotes and try again
-R$+ $: $(dequote $1 $) strip quotes
-R$+ $=O $+ $@ $>97 $1 $2 $3 try again
-
# handle locally delivered names
R$=L $#local $: @ $1 special local names
R$+ $#local $: $1 regular local names
@@ -652,35 +651,22 @@ R$+ + $* $#local $@ + $2 $: $1 + *
# prepend an empty "forward host" on the front
R$+ $: <> $1
-# send unrecognized local users to a relay host
-#R< > $+ $: < $L . > $( user $1 $) look up user
-#R< $* > $+ <> $* $: < > $2 $3 found; strip $L
-#R< $* . > $+ $: < $1 > $2 strip extra dot
# 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$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
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 >
-###################################################################
-### Ruleset 90 -- try domain part of mailertable entry ###
-###################################################################
-
-S90
-#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
###################################################################
### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
@@ -688,7 +674,7 @@ S90
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
@@ -700,6 +686,10 @@ R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
###################################################################
SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>97 $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>97 $2 $3 $4
+
# strip trailing dot from any host name that may appear
R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
@@ -720,14 +710,6 @@ R< $+ > $* $#local $@ $2 $: $1
S93
-# handle generics database
-#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
# special case the users that should be exposed
R$=E < @ *LOCAL* > $@ $1 < @ $j . > leave exposed
@@ -746,7 +728,6 @@ R$* < @ $+ @ $+ > $* $: $1 < @ $3 . > $4 $M is not null
###################################################################
S94
-#R$+ $@ $>93 $1
R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
###################################################################
@@ -759,6 +740,177 @@ S98
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>
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>3 $1 make domain canonical
+R< @ $+ > : $* @ $* < @ $1 > : $2 % $3 change @ to % in src route
+R$* < @ $+ > : $* : $* $3 $1 < @ $2 > : $4 change to % hack.
+R$* < @ $+ > : $* $3 $1 < @ $2 >
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $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
+
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+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
+
+
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $1
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < $* $=P > $* $: <OK> $1 < @ $2 $3 > $4
+R<?> $* < @ $+ > $* $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > $3
+R<? $* <$->> $* < @ $+ > $*
+ $: <$2> $3 < @ $4 > $5
+
+# handle case of @localhost on address
+R<$+> $* < @localhost > $: < ? $&{client_name} > <$1> $2 < @localhost >
+R<$+> $* < @localhost.$m >
+ $: < ? $&{client_name} > <$1> $2 < @localhost.$m >
+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
+
+
+# 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"
+
+######################################################################
+### 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
+
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# anything terminating locally is ok
+R$+ < @ $=w > $@ OK
+R$+ < @ $* $=R > $@ OK
+
+
+# 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
+R$=w $@ OK
+R$* $=R $@ OK
+
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ OK originated locally
+R0 $@ OK originated locally
+R$=R $* $@ OK relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ OK ... and see if it is local
+
+
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
#
######################################################################
######################################################################
@@ -773,7 +925,7 @@ R$* < @ $+ .REDIRECT. > < $- > $# error $@ 5.1.1 $: "551 User has moved; please
### Local and Program Mailer specification ###
##################################################
-##### @(#)local.m4 8.23 (Berkeley) 5/31/96 #####
+##### @(#)local.m4 8.30 (Berkeley) 6/30/1998 #####
Mlocal, P=/bin/mail, F=lsDFMAw5:/|@qrmn9, S=10/30, R=20/40,
T=DNS/RFC822/X-Unix,
@@ -787,6 +939,7 @@ Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
#
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
@@ -801,6 +954,7 @@ R$+ < @ $* > $: $1 strip host part
#
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
@@ -809,20 +963,17 @@ R$* $: $>93 $1 do masquerading
#
S40
R$+ $: $>50 $1 add local domain if needed
-#R$* $: $>93 $1 do all-masquerading
#
# Common code to add local domain name (only if always-add-domain)
#
S50
-#R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-#R$+ $@ $1 < @ *LOCAL* > add local qualification
#####################################
### SMTP Mailer specification ###
#####################################
-##### @(#)smtp.m4 8.33 (Berkeley) 7/9/96 #####
+##### @(#)smtp.m4 8.38 (Berkeley) 5/19/1998 #####
Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
diff --git a/cf/cf/generic-osf1.mc b/cf/cf/generic-osf1.mc
index bb74d18..83858d1 100644
--- a/cf/cf/generic-osf1.mc
+++ b/cf/cf/generic-osf1.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.
#
#
@@ -41,7 +19,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-osf1.mc 8.3 (Berkeley) 3/23/96')
+VERSIONID(`@(#)generic-osf1.mc 8.8 (Berkeley) 5/19/1998')
OSTYPE(osf1)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
diff --git a/cf/cf/obj/generic-solaris2.cf b/cf/cf/generic-solaris2.cf
index 96d3b59..a4becb0 100644
--- a/cf/cf/obj/generic-solaris2.cf
+++ b/cf/cf/generic-solaris2.cf
@@ -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.
#
######################################################################
@@ -37,35 +15,39 @@
#####
##### SENDMAIL CONFIGURATION FILE
#####
-##### built by gshapiro@knecht.Sendmail.ORG on Fri Oct 24 15:54:33 PDT 1997
-##### in /home/knecht/a/eric/src/sendmail/cf/cf
+##### built by gshapiro@knecht.sendmail.org on Thu Feb 4 16:39:23 PST 1999
+##### in /home/eric/src/sendmail/cf/cf
##### using ../ as configuration include directory
#####
######################################################################
######################################################################
-##### @(#)cfhead.m4 8.9 (Berkeley) 1/18/97 #####
-##### @(#)cf.m4 8.24 (Berkeley) 8/16/95 #####
-##### @(#)generic-solaris2.mc 8.3 (Berkeley) 3/23/96 #####
+##### @(#)cfhead.m4 8.23 (Berkeley) 10/6/1998 #####
+##### @(#)cf.m4 8.29 (Berkeley) 5/19/1998 #####
+##### @(#)generic-solaris2.mc 8.8 (Berkeley) 5/19/1998 #####
-##### @(#)solaris2.m4 8.9 (Berkeley) 9/25/96 #####
+##### @(#)solaris2.m4 8.16 (Berkeley) 10/6/1998 #####
-##### @(#)generic.m4 8.3 (Berkeley) 3/24/96 #####
+##### @(#)generic.m4 8.9 (Berkeley) 5/19/1998 #####
-##### @(#)redirect.m4 8.5 (Berkeley) 8/17/96 #####
+##### @(#)redirect.m4 8.10 (Berkeley) 5/19/1998 #####
-##### @(#)use_cw_file.m4 8.1 (Berkeley) 6/7/93 #####
+##### @(#)use_cw_file.m4 8.6 (Berkeley) 5/19/1998 #####
-##### @(#)proto.m4 8.151 (Berkeley) 7/31/97 #####
+##### @(#)proto.m4 8.243 (Berkeley) 2/2/1999 #####
-# level 7 config file format
-V7/Berkeley
+# level 8 config file format
+V8/Berkeley
+
+# override file safeties - setting this option compromises system security
+# need to set this now for the sake of class files
+#O DontBlameSendmail=safe
##################
# local info #
@@ -85,9 +67,6 @@ CP.
# "Smart" relay host (may be null)
DS
-# place to which unknown users should be forwarded
-#Kuser user -m -a<>
-#DLname_of_luser_relay
# operators that cannot be in local usernames (i.e., network indicators)
CO @ % !
@@ -98,17 +77,19 @@ C..
# a class with just a left bracket (for identifying domain literals)
C[[
-# Mailer table (overriding domains)
-#Kmailertable dbm /etc/mailertable
-# Domain table (adding domains)
-#Kdomaintable dbm /etc/domaintable
-# Generics table (mapping outgoing addresses)
-#Kgenerics dbm /etc/genericstable
-# Virtual user table (maps incoming users)
-#Kvirtuser dbm /etc/virtusertable
+
+
+
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OK> -T<TEMP>
+
+# Hosts that will permit relaying ($=R)
+FR-o /etc/mail/relay-domains
# who I send unqualified names to (null means deliver locally)
DR
@@ -135,7 +116,7 @@ DnMAILER-DAEMON
CPREDIRECT
# Configuration version number
-DZ8.8.8
+DZ8.9.3
###############
@@ -207,7 +188,7 @@ O HelpFile=/etc/mail/sendmail.hf
O SendMimeErrors=True
# Forward file search path
-O ForwardPath=$z/.forward.$w:$z/.forward
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
# open connection cache size
O ConnectionCacheSize=2
@@ -293,7 +274,7 @@ O StatusFile=/etc/mail/sendmail.st
#O TimeZoneSpec=
# default UID (can be username or userid:groupid)
-O DefaultUser=1:1
+#O DefaultUser=mailnull
# list of locations of user database file (null means no lookup)
#O UserDatabaseSpec=/etc/userdb
@@ -367,6 +348,15 @@ O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
# UNIX initial From header format (old $l macro)
O UnixFromLine=From $g $d
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
# delimiter (operator) characters (old $o macro)
O OperatorChars=.:%@!^/[]+
@@ -377,11 +367,22 @@ O OperatorChars=.:%@!^/[]+
#O UnsafeGroupWrites
# where do errors that occur when sending errors get sent?
-#O DoubleBounceAddress
+#O DoubleBounceAddress=postmaster
# what user id do we assume for the majority of the processing?
#O RunAsUser=sendmail
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=100
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces
+
+
+
+
+
+
###########################
# Message precedences #
###########################
@@ -506,15 +507,15 @@ R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [a.b.c.d]
R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
-# look up domains in the domain table
-#R$* < @ $+ > $* $: $1 < @ $(domaintable $2 $) > $3
+
+
# if really UUCP, handle it immediately
# try UUCP traffic as a local address
R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
-R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
# pass to name server to make hostname canonical
R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4
@@ -570,54 +571,55 @@ 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"
-
-# handle numeric address spec
-R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
-R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+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
-# handle virtual users
-#R$+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-#R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 + * @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-#R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-#R<@> $+ < @ $+ . > $: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-#R<@> $+ $: $1
-#R< error : $- $+ > $* $#error $@ $( dequote $1 $) $: $2
-#R< $+ > $+ < @ $+ > $: $>97 $1
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+
# short circuit local delivery so forwarded email works
-#R$+ . USENET < @ $=w . > $#usenet $: $1 handle usenet specially
R$=L < @ $=w . > $#local $: @ $1 special local names
R$+ < @ $=w . > $#local $: $1 regular local name
-# not local -- try mailer table lookup
-#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
# resolve remotely connected UUCP links (if any)
@@ -631,10 +633,6 @@ R$* < @ $* > $* $: $>95 < $S > $1 < @ $2 > $3 glue on smarthost name
# deal with other remote names
R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
-# if this is quoted, strip the quotes and try again
-R$+ $: $(dequote $1 $) strip quotes
-R$+ $=O $+ $@ $>97 $1 $2 $3 try again
-
# handle locally delivered names
R$=L $#local $: @ $1 special local names
R$+ $#local $: $1 regular local names
@@ -652,35 +650,22 @@ R$+ + $* $#local $@ + $2 $: $1 + *
# prepend an empty "forward host" on the front
R$+ $: <> $1
-# send unrecognized local users to a relay host
-#R< > $+ $: < $L . > $( user $1 $) look up user
-#R< $* > $+ <> $* $: < > $2 $3 found; strip $L
-#R< $* . > $+ $: < $1 > $2 strip extra dot
# 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$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
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 >
-###################################################################
-### Ruleset 90 -- try domain part of mailertable entry ###
-###################################################################
-
-S90
-#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
###################################################################
### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
@@ -688,7 +673,7 @@ S90
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
@@ -700,6 +685,10 @@ R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
###################################################################
SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>97 $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>97 $2 $3 $4
+
# strip trailing dot from any host name that may appear
R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
@@ -720,14 +709,6 @@ R< $+ > $* $#local $@ $2 $: $1
S93
-# handle generics database
-#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
# special case the users that should be exposed
R$=E < @ *LOCAL* > $@ $1 < @ $j . > leave exposed
@@ -746,7 +727,6 @@ R$* < @ $+ @ $+ > $* $: $1 < @ $3 . > $4 $M is not null
###################################################################
S94
-#R$+ $@ $>93 $1
R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
###################################################################
@@ -759,6 +739,177 @@ S98
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>
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>3 $1 make domain canonical
+R< @ $+ > : $* @ $* < @ $1 > : $2 % $3 change @ to % in src route
+R$* < @ $+ > : $* : $* $3 $1 < @ $2 > : $4 change to % hack.
+R$* < @ $+ > : $* $3 $1 < @ $2 >
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $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
+
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+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
+
+
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $1
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < $* $=P > $* $: <OK> $1 < @ $2 $3 > $4
+R<?> $* < @ $+ > $* $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > $3
+R<? $* <$->> $* < @ $+ > $*
+ $: <$2> $3 < @ $4 > $5
+
+# handle case of @localhost on address
+R<$+> $* < @localhost > $: < ? $&{client_name} > <$1> $2 < @localhost >
+R<$+> $* < @localhost.$m >
+ $: < ? $&{client_name} > <$1> $2 < @localhost.$m >
+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
+
+
+# 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"
+
+######################################################################
+### 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
+
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# anything terminating locally is ok
+R$+ < @ $=w > $@ OK
+R$+ < @ $* $=R > $@ OK
+
+
+# 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
+R$=w $@ OK
+R$* $=R $@ OK
+
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ OK originated locally
+R0 $@ OK originated locally
+R$=R $* $@ OK relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ OK ... and see if it is local
+
+
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
#
######################################################################
######################################################################
@@ -773,7 +924,7 @@ R$* < @ $+ .REDIRECT. > < $- > $# error $@ 5.1.1 $: "551 User has moved; please
### Local and Program Mailer specification ###
##################################################
-##### @(#)local.m4 8.23 (Berkeley) 5/31/96 #####
+##### @(#)local.m4 8.30 (Berkeley) 6/30/1998 #####
Mlocal, P=/bin/mail, F=lsDFMAw5:/|@qSnE9, S=10/30, R=20/40,
T=DNS/RFC822/X-Unix,
@@ -787,6 +938,7 @@ Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
#
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
@@ -801,6 +953,7 @@ R$+ < @ $* > $: $1 strip host part
#
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
@@ -809,20 +962,17 @@ R$* $: $>93 $1 do masquerading
#
S40
R$+ $: $>50 $1 add local domain if needed
-#R$* $: $>93 $1 do all-masquerading
#
# Common code to add local domain name (only if always-add-domain)
#
S50
-#R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-#R$+ $@ $1 < @ *LOCAL* > add local qualification
#####################################
### SMTP Mailer specification ###
#####################################
-##### @(#)smtp.m4 8.33 (Berkeley) 7/9/96 #####
+##### @(#)smtp.m4 8.38 (Berkeley) 5/19/1998 #####
Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
diff --git a/cf/cf/generic-solaris2.mc b/cf/cf/generic-solaris2.mc
index 21fab9f..a696e01 100644
--- a/cf/cf/generic-solaris2.mc
+++ b/cf/cf/generic-solaris2.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.
#
#
@@ -41,7 +19,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-solaris2.mc 8.3 (Berkeley) 3/23/96')
+VERSIONID(`@(#)generic-solaris2.mc 8.8 (Berkeley) 5/19/1998')
OSTYPE(solaris2)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
diff --git a/cf/cf/obj/generic-sunos4.1.cf b/cf/cf/generic-sunos4.1.cf
index f7bba2a..cd1443f 100644
--- a/cf/cf/obj/generic-sunos4.1.cf
+++ b/cf/cf/generic-sunos4.1.cf
@@ -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.
#
######################################################################
@@ -37,35 +15,40 @@
#####
##### SENDMAIL CONFIGURATION FILE
#####
-##### built by gshapiro@knecht.Sendmail.ORG on Fri Oct 24 15:54:33 PDT 1997
-##### in /home/knecht/a/eric/src/sendmail/cf/cf
+##### built by gshapiro@knecht.sendmail.org on Thu Feb 4 16:39:23 PST 1999
+##### in /home/eric/src/sendmail/cf/cf
##### using ../ as configuration include directory
#####
######################################################################
######################################################################
-##### @(#)cfhead.m4 8.9 (Berkeley) 1/18/97 #####
-##### @(#)cf.m4 8.24 (Berkeley) 8/16/95 #####
-##### @(#)generic-sunos4.1.mc 8.3 (Berkeley) 3/23/96 #####
+##### @(#)cfhead.m4 8.23 (Berkeley) 10/6/1998 #####
+##### @(#)cf.m4 8.29 (Berkeley) 5/19/1998 #####
+##### @(#)generic-sunos4.1.mc 8.8 (Berkeley) 5/19/1998 #####
-##### @(#)sunos4.1.m4 8.1 (Berkeley) 6/7/93 #####
+##### @(#)sunos4.1.m4 8.7 (Berkeley) 5/19/1998 #####
-##### @(#)generic.m4 8.3 (Berkeley) 3/24/96 #####
-##### @(#)redirect.m4 8.5 (Berkeley) 8/17/96 #####
+##### @(#)generic.m4 8.9 (Berkeley) 5/19/1998 #####
+##### @(#)redirect.m4 8.10 (Berkeley) 5/19/1998 #####
-##### @(#)use_cw_file.m4 8.1 (Berkeley) 6/7/93 #####
+##### @(#)use_cw_file.m4 8.6 (Berkeley) 5/19/1998 #####
-##### @(#)proto.m4 8.151 (Berkeley) 7/31/97 #####
+##### @(#)proto.m4 8.243 (Berkeley) 2/2/1999 #####
-# level 7 config file format
-V7/Berkeley
+
+# level 8 config file format
+V8/Berkeley
+
+# override file safeties - setting this option compromises system security
+# need to set this now for the sake of class files
+#O DontBlameSendmail=safe
##################
# local info #
@@ -85,9 +68,6 @@ CP.
# "Smart" relay host (may be null)
DS
-# place to which unknown users should be forwarded
-#Kuser user -m -a<>
-#DLname_of_luser_relay
# operators that cannot be in local usernames (i.e., network indicators)
CO @ % !
@@ -98,17 +78,19 @@ C..
# a class with just a left bracket (for identifying domain literals)
C[[
-# Mailer table (overriding domains)
-#Kmailertable dbm /etc/mailertable
-# Domain table (adding domains)
-#Kdomaintable dbm /etc/domaintable
-# Generics table (mapping outgoing addresses)
-#Kgenerics dbm /etc/genericstable
-# Virtual user table (maps incoming users)
-#Kvirtuser dbm /etc/virtusertable
+
+
+
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OK> -T<TEMP>
+
+# Hosts that will permit relaying ($=R)
+FR-o /etc/mail/relay-domains
# who I send unqualified names to (null means deliver locally)
DR
@@ -135,7 +117,7 @@ DnMAILER-DAEMON
CPREDIRECT
# Configuration version number
-DZ8.8.8
+DZ8.9.3
###############
@@ -207,7 +189,7 @@ O HelpFile=/usr/lib/sendmail.hf
O SendMimeErrors=True
# Forward file search path
-O ForwardPath=$z/.forward.$w:$z/.forward
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
# open connection cache size
O ConnectionCacheSize=2
@@ -293,7 +275,7 @@ O StatusFile=/etc/sendmail.st
#O TimeZoneSpec=
# default UID (can be username or userid:groupid)
-O DefaultUser=1:1
+#O DefaultUser=mailnull
# list of locations of user database file (null means no lookup)
#O UserDatabaseSpec=/etc/userdb
@@ -367,6 +349,15 @@ O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
# UNIX initial From header format (old $l macro)
O UnixFromLine=From $g $d
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
# delimiter (operator) characters (old $o macro)
O OperatorChars=.:%@!^/[]+
@@ -377,11 +368,22 @@ O OperatorChars=.:%@!^/[]+
#O UnsafeGroupWrites
# where do errors that occur when sending errors get sent?
-#O DoubleBounceAddress
+#O DoubleBounceAddress=postmaster
# what user id do we assume for the majority of the processing?
#O RunAsUser=sendmail
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=100
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces
+
+
+
+
+
+
###########################
# Message precedences #
###########################
@@ -506,15 +508,15 @@ R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [a.b.c.d]
R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
-# look up domains in the domain table
-#R$* < @ $+ > $* $: $1 < @ $(domaintable $2 $) > $3
+
+
# if really UUCP, handle it immediately
# try UUCP traffic as a local address
R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
-R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
# pass to name server to make hostname canonical
R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4
@@ -570,54 +572,55 @@ 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"
-
-# handle numeric address spec
-R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
-R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+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
-# handle virtual users
-#R$+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-#R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 + * @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-#R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-#R<@> $+ < @ $+ . > $: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-#R<@> $+ $: $1
-#R< error : $- $+ > $* $#error $@ $( dequote $1 $) $: $2
-#R< $+ > $+ < @ $+ > $: $>97 $1
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+
# short circuit local delivery so forwarded email works
-#R$+ . USENET < @ $=w . > $#usenet $: $1 handle usenet specially
R$=L < @ $=w . > $#local $: @ $1 special local names
R$+ < @ $=w . > $#local $: $1 regular local name
-# not local -- try mailer table lookup
-#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
# resolve remotely connected UUCP links (if any)
@@ -631,10 +634,6 @@ R$* < @ $* > $* $: $>95 < $S > $1 < @ $2 > $3 glue on smarthost name
# deal with other remote names
R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
-# if this is quoted, strip the quotes and try again
-R$+ $: $(dequote $1 $) strip quotes
-R$+ $=O $+ $@ $>97 $1 $2 $3 try again
-
# handle locally delivered names
R$=L $#local $: @ $1 special local names
R$+ $#local $: $1 regular local names
@@ -652,35 +651,22 @@ R$+ + $* $#local $@ + $2 $: $1 + *
# prepend an empty "forward host" on the front
R$+ $: <> $1
-# send unrecognized local users to a relay host
-#R< > $+ $: < $L . > $( user $1 $) look up user
-#R< $* > $+ <> $* $: < > $2 $3 found; strip $L
-#R< $* . > $+ $: < $1 > $2 strip extra dot
# 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$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
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 >
-###################################################################
-### Ruleset 90 -- try domain part of mailertable entry ###
-###################################################################
-
-S90
-#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
###################################################################
### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
@@ -688,7 +674,7 @@ S90
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
@@ -700,6 +686,10 @@ R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
###################################################################
SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>97 $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>97 $2 $3 $4
+
# strip trailing dot from any host name that may appear
R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
@@ -720,14 +710,6 @@ R< $+ > $* $#local $@ $2 $: $1
S93
-# handle generics database
-#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
# special case the users that should be exposed
R$=E < @ *LOCAL* > $@ $1 < @ $j . > leave exposed
@@ -746,7 +728,6 @@ R$* < @ $+ @ $+ > $* $: $1 < @ $3 . > $4 $M is not null
###################################################################
S94
-#R$+ $@ $>93 $1
R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
###################################################################
@@ -759,6 +740,177 @@ S98
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>
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>3 $1 make domain canonical
+R< @ $+ > : $* @ $* < @ $1 > : $2 % $3 change @ to % in src route
+R$* < @ $+ > : $* : $* $3 $1 < @ $2 > : $4 change to % hack.
+R$* < @ $+ > : $* $3 $1 < @ $2 >
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $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
+
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+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
+
+
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $1
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < $* $=P > $* $: <OK> $1 < @ $2 $3 > $4
+R<?> $* < @ $+ > $* $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > $3
+R<? $* <$->> $* < @ $+ > $*
+ $: <$2> $3 < @ $4 > $5
+
+# handle case of @localhost on address
+R<$+> $* < @localhost > $: < ? $&{client_name} > <$1> $2 < @localhost >
+R<$+> $* < @localhost.$m >
+ $: < ? $&{client_name} > <$1> $2 < @localhost.$m >
+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
+
+
+# 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"
+
+######################################################################
+### 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
+
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# anything terminating locally is ok
+R$+ < @ $=w > $@ OK
+R$+ < @ $* $=R > $@ OK
+
+
+# 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
+R$=w $@ OK
+R$* $=R $@ OK
+
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ OK originated locally
+R0 $@ OK originated locally
+R$=R $* $@ OK relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ OK ... and see if it is local
+
+
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
#
######################################################################
######################################################################
@@ -773,7 +925,7 @@ R$* < @ $+ .REDIRECT. > < $- > $# error $@ 5.1.1 $: "551 User has moved; please
### Local and Program Mailer specification ###
##################################################
-##### @(#)local.m4 8.23 (Berkeley) 5/31/96 #####
+##### @(#)local.m4 8.30 (Berkeley) 6/30/1998 #####
Mlocal, P=/bin/mail, F=lsDFMAw5:/|@qrmn9, S=10/30, R=20/40,
T=DNS/RFC822/X-Unix,
@@ -787,6 +939,7 @@ Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
#
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
@@ -801,6 +954,7 @@ R$+ < @ $* > $: $1 strip host part
#
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
@@ -809,20 +963,17 @@ R$* $: $>93 $1 do masquerading
#
S40
R$+ $: $>50 $1 add local domain if needed
-#R$* $: $>93 $1 do all-masquerading
#
# Common code to add local domain name (only if always-add-domain)
#
S50
-#R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-#R$+ $@ $1 < @ *LOCAL* > add local qualification
#####################################
### SMTP Mailer specification ###
#####################################
-##### @(#)smtp.m4 8.33 (Berkeley) 7/9/96 #####
+##### @(#)smtp.m4 8.38 (Berkeley) 5/19/1998 #####
Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
diff --git a/cf/cf/generic-sunos4.1.mc b/cf/cf/generic-sunos4.1.mc
index eeff027..fc0de35 100644
--- a/cf/cf/generic-sunos4.1.mc
+++ b/cf/cf/generic-sunos4.1.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.
#
#
@@ -41,7 +19,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-sunos4.1.mc 8.3 (Berkeley) 3/23/96')
+VERSIONID(`@(#)generic-sunos4.1.mc 8.8 (Berkeley) 5/19/1998')
OSTYPE(sunos4.1)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
diff --git a/cf/cf/obj/generic-ultrix4.cf b/cf/cf/generic-ultrix4.cf
index b18ba2a..ea07878 100644
--- a/cf/cf/obj/generic-ultrix4.cf
+++ b/cf/cf/generic-ultrix4.cf
@@ -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.
#
######################################################################
@@ -37,35 +15,40 @@
#####
##### SENDMAIL CONFIGURATION FILE
#####
-##### built by gshapiro@knecht.Sendmail.ORG on Fri Oct 24 15:54:33 PDT 1997
-##### in /home/knecht/a/eric/src/sendmail/cf/cf
+##### built by gshapiro@knecht.sendmail.org on Thu Feb 4 16:39:23 PST 1999
+##### in /home/eric/src/sendmail/cf/cf
##### using ../ as configuration include directory
#####
######################################################################
######################################################################
-##### @(#)cfhead.m4 8.9 (Berkeley) 1/18/97 #####
-##### @(#)cf.m4 8.24 (Berkeley) 8/16/95 #####
-##### @(#)generic-ultrix4.mc 8.3 (Berkeley) 3/23/96 #####
+##### @(#)cfhead.m4 8.23 (Berkeley) 10/6/1998 #####
+##### @(#)cf.m4 8.29 (Berkeley) 5/19/1998 #####
+##### @(#)generic-ultrix4.mc 8.8 (Berkeley) 5/19/1998 #####
-##### @(#)ultrix4.m4 8.2 (Berkeley) 7/2/94 #####
+##### @(#)ultrix4.m4 8.8 (Berkeley) 5/19/1998 #####
-##### @(#)generic.m4 8.3 (Berkeley) 3/24/96 #####
-##### @(#)redirect.m4 8.5 (Berkeley) 8/17/96 #####
+##### @(#)generic.m4 8.9 (Berkeley) 5/19/1998 #####
+##### @(#)redirect.m4 8.10 (Berkeley) 5/19/1998 #####
-##### @(#)use_cw_file.m4 8.1 (Berkeley) 6/7/93 #####
+##### @(#)use_cw_file.m4 8.6 (Berkeley) 5/19/1998 #####
-##### @(#)proto.m4 8.151 (Berkeley) 7/31/97 #####
+##### @(#)proto.m4 8.243 (Berkeley) 2/2/1999 #####
-# level 7 config file format
-V7/Berkeley
+
+# level 8 config file format
+V8/Berkeley
+
+# override file safeties - setting this option compromises system security
+# need to set this now for the sake of class files
+#O DontBlameSendmail=safe
##################
# local info #
@@ -85,9 +68,6 @@ CP.
# "Smart" relay host (may be null)
DS
-# place to which unknown users should be forwarded
-#Kuser user -m -a<>
-#DLname_of_luser_relay
# operators that cannot be in local usernames (i.e., network indicators)
CO @ % !
@@ -98,17 +78,19 @@ C..
# a class with just a left bracket (for identifying domain literals)
C[[
-# Mailer table (overriding domains)
-#Kmailertable dbm /etc/mailertable
-# Domain table (adding domains)
-#Kdomaintable dbm /etc/domaintable
-# Generics table (mapping outgoing addresses)
-#Kgenerics dbm /etc/genericstable
-# Virtual user table (maps incoming users)
-#Kvirtuser dbm /etc/virtusertable
+
+
+
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OK> -T<TEMP>
+
+# Hosts that will permit relaying ($=R)
+FR-o /etc/mail/relay-domains
# who I send unqualified names to (null means deliver locally)
DR
@@ -135,7 +117,7 @@ DnMAILER-DAEMON
CPREDIRECT
# Configuration version number
-DZ8.8.8
+DZ8.9.3
###############
@@ -207,7 +189,7 @@ O HelpFile=/usr/lib/sendmail.hf
O SendMimeErrors=True
# Forward file search path
-O ForwardPath=$z/.forward.$w:$z/.forward
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
# open connection cache size
O ConnectionCacheSize=2
@@ -293,7 +275,7 @@ O StatusFile=/etc/sendmail.st
#O TimeZoneSpec=
# default UID (can be username or userid:groupid)
-O DefaultUser=1:1
+#O DefaultUser=mailnull
# list of locations of user database file (null means no lookup)
#O UserDatabaseSpec=/etc/userdb
@@ -367,6 +349,15 @@ O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
# UNIX initial From header format (old $l macro)
O UnixFromLine=From $g $d
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
# delimiter (operator) characters (old $o macro)
O OperatorChars=.:%@!^/[]+
@@ -377,11 +368,22 @@ O OperatorChars=.:%@!^/[]+
#O UnsafeGroupWrites
# where do errors that occur when sending errors get sent?
-#O DoubleBounceAddress
+#O DoubleBounceAddress=postmaster
# what user id do we assume for the majority of the processing?
#O RunAsUser=sendmail
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=100
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces
+
+
+
+
+
+
###########################
# Message precedences #
###########################
@@ -506,15 +508,15 @@ R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [a.b.c.d]
R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
-# look up domains in the domain table
-#R$* < @ $+ > $* $: $1 < @ $(domaintable $2 $) > $3
+
+
# if really UUCP, handle it immediately
# try UUCP traffic as a local address
R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
-R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
# pass to name server to make hostname canonical
R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4
@@ -570,54 +572,55 @@ 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"
-
-# handle numeric address spec
-R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
-R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+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
-# handle virtual users
-#R$+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-#R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 + * @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-#R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
-#R<@> $+ < @ $+ . > $: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-#R<@> $+ $: $1
-#R< error : $- $+ > $* $#error $@ $( dequote $1 $) $: $2
-#R< $+ > $+ < @ $+ > $: $>97 $1
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 still numeric: send
+
# short circuit local delivery so forwarded email works
-#R$+ . USENET < @ $=w . > $#usenet $: $1 handle usenet specially
R$=L < @ $=w . > $#local $: @ $1 special local names
R$+ < @ $=w . > $#local $: $1 regular local name
-# not local -- try mailer table lookup
-#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
# resolve remotely connected UUCP links (if any)
@@ -631,10 +634,6 @@ R$* < @ $* > $* $: $>95 < $S > $1 < @ $2 > $3 glue on smarthost name
# deal with other remote names
R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
-# if this is quoted, strip the quotes and try again
-R$+ $: $(dequote $1 $) strip quotes
-R$+ $=O $+ $@ $>97 $1 $2 $3 try again
-
# handle locally delivered names
R$=L $#local $: @ $1 special local names
R$+ $#local $: $1 regular local names
@@ -652,35 +651,22 @@ R$+ + $* $#local $@ + $2 $: $1 + *
# prepend an empty "forward host" on the front
R$+ $: <> $1
-# send unrecognized local users to a relay host
-#R< > $+ $: < $L . > $( user $1 $) look up user
-#R< $* > $+ <> $* $: < > $2 $3 found; strip $L
-#R< $* . > $+ $: < $1 > $2 strip extra dot
# 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$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
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 >
-###################################################################
-### Ruleset 90 -- try domain part of mailertable entry ###
-###################################################################
-
-S90
-#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
###################################################################
### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
@@ -688,7 +674,7 @@ S90
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
@@ -700,6 +686,10 @@ R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
###################################################################
SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>97 $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>97 $2 $3 $4
+
# strip trailing dot from any host name that may appear
R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
@@ -720,14 +710,6 @@ R< $+ > $* $#local $@ $2 $: $1
S93
-# handle generics database
-#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
# special case the users that should be exposed
R$=E < @ *LOCAL* > $@ $1 < @ $j . > leave exposed
@@ -746,7 +728,6 @@ R$* < @ $+ @ $+ > $* $: $1 < @ $3 . > $4 $M is not null
###################################################################
S94
-#R$+ $@ $>93 $1
R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
###################################################################
@@ -759,6 +740,177 @@ S98
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>
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>3 $1 make domain canonical
+R< @ $+ > : $* @ $* < @ $1 > : $2 % $3 change @ to % in src route
+R$* < @ $+ > : $* : $* $3 $1 < @ $2 > : $4 change to % hack.
+R$* < @ $+ > : $* $3 $1 < @ $2 >
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $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
+
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+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
+
+
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $1
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < $* $=P > $* $: <OK> $1 < @ $2 $3 > $4
+R<?> $* < @ $+ > $* $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > $3
+R<? $* <$->> $* < @ $+ > $*
+ $: <$2> $3 < @ $4 > $5
+
+# handle case of @localhost on address
+R<$+> $* < @localhost > $: < ? $&{client_name} > <$1> $2 < @localhost >
+R<$+> $* < @localhost.$m >
+ $: < ? $&{client_name} > <$1> $2 < @localhost.$m >
+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
+
+
+# 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"
+
+######################################################################
+### 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
+
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# anything terminating locally is ok
+R$+ < @ $=w > $@ OK
+R$+ < @ $* $=R > $@ OK
+
+
+# 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
+R$=w $@ OK
+R$* $=R $@ OK
+
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ OK originated locally
+R0 $@ OK originated locally
+R$=R $* $@ OK relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ OK ... and see if it is local
+
+
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
#
######################################################################
######################################################################
@@ -773,7 +925,7 @@ R$* < @ $+ .REDIRECT. > < $- > $# error $@ 5.1.1 $: "551 User has moved; please
### Local and Program Mailer specification ###
##################################################
-##### @(#)local.m4 8.23 (Berkeley) 5/31/96 #####
+##### @(#)local.m4 8.30 (Berkeley) 6/30/1998 #####
Mlocal, P=/bin/mail, F=lsDFMAw5:/|@qrmn9, S=10/30, R=20/40,
T=DNS/RFC822/X-Unix,
@@ -787,6 +939,7 @@ Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
#
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
@@ -801,6 +954,7 @@ R$+ < @ $* > $: $1 strip host part
#
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
@@ -809,20 +963,17 @@ R$* $: $>93 $1 do masquerading
#
S40
R$+ $: $>50 $1 add local domain if needed
-#R$* $: $>93 $1 do all-masquerading
#
# Common code to add local domain name (only if always-add-domain)
#
S50
-#R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-#R$+ $@ $1 < @ *LOCAL* > add local qualification
#####################################
### SMTP Mailer specification ###
#####################################
-##### @(#)smtp.m4 8.33 (Berkeley) 7/9/96 #####
+##### @(#)smtp.m4 8.38 (Berkeley) 5/19/1998 #####
Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
diff --git a/cf/cf/generic-ultrix4.mc b/cf/cf/generic-ultrix4.mc
index dd30936..6fed36e 100644
--- a/cf/cf/generic-ultrix4.mc
+++ b/cf/cf/generic-ultrix4.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.
#
#
@@ -41,7 +19,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-ultrix4.mc 8.3 (Berkeley) 3/23/96')
+VERSIONID(`@(#)generic-ultrix4.mc 8.8 (Berkeley) 5/19/1998')
OSTYPE(ultrix4)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
diff --git a/cf/cf/huginn.cs.mc b/cf/cf/huginn.cs.mc
index aad442b..a58d121 100644
--- a/cf/cf/huginn.cs.mc
+++ b/cf/cf/huginn.cs.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(`@(#)huginn.cs.mc 8.7 (Berkeley) 3/23/96')
+VERSIONID(`@(#)huginn.cs.mc 8.12 (Berkeley) 5/19/1998')
OSTYPE(hpux9)dnl
DOMAIN(CS.Berkeley.EDU)dnl
MASQUERADE_AS(CS.Berkeley.EDU)dnl
diff --git a/cf/cf/knecht.mc b/cf/cf/knecht.mc
index 71ae12b..4ba1471 100644
--- a/cf/cf/knecht.mc
+++ b/cf/cf/knecht.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.
#
#
@@ -38,7 +16,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)knecht.mc 8.15 (Berkeley) 10/20/97')
+VERSIONID(`@(#)knecht.mc 8.31 (Berkeley) 1/30/1999')
OSTYPE(bsd4.4)dnl
DOMAIN(generic)dnl
define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward+$h:$z/.forward')dnl
@@ -47,98 +25,47 @@ 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
-define(`LOCAL_MAILER_FLAGS', `rmn9P')dnl
-FEATURE(virtusertable)dnl
+FEATURE(virtusertable, `hash /etc/mail/virtusertable')dnl
+FEATURE(access_db)dnl
+FEATURE(local_lmtp)dnl
+define(`LOCAL_MAILER_FLAGS', CONCAT(LOCAL_MAILER_FLAGS,P))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
+#
+# 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
-######################################################################
-### 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)
-######################################################################
+SCheckTo
+R$={RejectToLocalparts}@$* $#error $: "553 Header error"
+R$*@$={RejectToDomains} $#error $: "553 Header error"
-SLookUpAddress
-R<$+> <$+> <$*> $: < $( domaincheck $1 $: ? $) > <$1> <$2> <$3>
-R<OK> <$+> <$+> <$*> $@ <OK> < $3 >
-R<?> <$+.$-> <$+> <$*> $@ $>LookUpAddress <$1> <$3> <$4>
-R<?> <$+> <$+> <$*> $@ <$2> <$3>
-R<$+> $* $#error $: $1
+HMessage-Id: $>CheckMessageId
-######################################################################
-### check_relay
-######################################################################
+SCheckMessageId
+R< $+ @ $+ > $@ OK
+R$* $#error $: "553 Header error"
-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"
+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/cf/cf/mail.cs.mc b/cf/cf/mail.cs.mc
index 02a3acf..8abd945 100644
--- a/cf/cf/mail.cs.mc
+++ b/cf/cf/mail.cs.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(`@(#)mail.cs.mc 8.10 (Berkeley) 3/23/96')
+VERSIONID(`@(#)mail.cs.mc 8.15 (Berkeley) 5/19/1998')
OSTYPE(ultrix4)dnl
DOMAIN(Berkeley.EDU)dnl
MASQUERADE_AS(CS.Berkeley.EDU)dnl
diff --git a/cf/cf/mail.eecs.mc b/cf/cf/mail.eecs.mc
index 756f5dd..6522141 100644
--- a/cf/cf/mail.eecs.mc
+++ b/cf/cf/mail.eecs.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(`@(#)mail.eecs.mc 8.10 (Berkeley) 3/23/96')
+VERSIONID(`@(#)mail.eecs.mc 8.15 (Berkeley) 5/19/1998')
OSTYPE(ultrix4)dnl
DOMAIN(EECS.Berkeley.EDU)dnl
MASQUERADE_AS(EECS.Berkeley.EDU)dnl
diff --git a/cf/cf/mailspool.cs.mc b/cf/cf/mailspool.cs.mc
index de0a7d7..08dcce6 100644
--- a/cf/cf/mailspool.cs.mc
+++ b/cf/cf/mailspool.cs.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.
#
#
@@ -45,7 +23,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)mailspool.cs.mc 8.4 (Berkeley) 3/23/96')
+VERSIONID(`@(#)mailspool.cs.mc 8.9 (Berkeley) 5/19/1998')
OSTYPE(sunos4.1)dnl
DOMAIN(CS.Berkeley.EDU)dnl
MAILER(local)dnl
diff --git a/cf/cf/python.cs.mc b/cf/cf/python.cs.mc
index e049d66..ddf4fc3 100644
--- a/cf/cf/python.cs.mc
+++ b/cf/cf/python.cs.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.
#
#
@@ -45,7 +23,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)python.cs.mc 8.4 (Berkeley) 3/23/96')
+VERSIONID(`@(#)python.cs.mc 8.9 (Berkeley) 5/19/1998')
OSTYPE(bsd4.4)dnl
DOMAIN(CS.Berkeley.EDU)dnl
define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl
diff --git a/cf/cf/s2k-osf1.mc b/cf/cf/s2k-osf1.mc
index ed2d488..6f1099a 100644
--- a/cf/cf/s2k-osf1.mc
+++ b/cf/cf/s2k-osf1.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.
#
#
@@ -44,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)s2k-osf1.mc 8.5 (Berkeley) 6/3/97')
+VERSIONID(`@(#)s2k-osf1.mc 8.10 (Berkeley) 5/19/1998')
OSTYPE(osf1)dnl
DOMAIN(S2K.Berkeley.EDU)dnl
MAILER(local)dnl
diff --git a/cf/cf/s2k-ultrix4.mc b/cf/cf/s2k-ultrix4.mc
index 12fb960..db8e455 100644
--- a/cf/cf/s2k-ultrix4.mc
+++ b/cf/cf/s2k-ultrix4.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.
#
#
@@ -44,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)s2k-ultrix4.mc 8.5 (Berkeley) 6/3/97')
+VERSIONID(`@(#)s2k-ultrix4.mc 8.10 (Berkeley) 5/19/1998')
OSTYPE(ultrix4)dnl
DOMAIN(S2K.Berkeley.EDU)dnl
MAILER(local)dnl
diff --git a/cf/cf/tcpproto.mc b/cf/cf/tcpproto.mc
index d023185..692a08f 100644
--- a/cf/cf/tcpproto.mc
+++ b/cf/cf/tcpproto.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.
#
#
@@ -47,7 +25,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)tcpproto.mc 8.5 (Berkeley) 3/23/96')
+VERSIONID(`@(#)tcpproto.mc 8.10 (Berkeley) 5/19/1998')
OSTYPE(unknown)
FEATURE(nouucp)
MAILER(local)
diff --git a/cf/cf/ucbarpa.mc b/cf/cf/ucbarpa.mc
index 5fe99d0..40bb6c2 100644
--- a/cf/cf/ucbarpa.mc
+++ b/cf/cf/ucbarpa.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.
#
#
@@ -42,7 +20,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)ucbarpa.mc 8.4 (Berkeley) 3/23/96')
+VERSIONID(`@(#)ucbarpa.mc 8.9 (Berkeley) 5/19/1998')
DOMAIN(CS.Berkeley.EDU)dnl
OSTYPE(bsd4.4)dnl
MAILER(local)dnl
diff --git a/cf/cf/ucbvax.mc b/cf/cf/ucbvax.mc
index 89a0f10..2395f82 100644
--- a/cf/cf/ucbvax.mc
+++ b/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/1998')
OSTYPE(bsd4.3)
DOMAIN(CS.Berkeley.EDU)
MASQUERADE_AS(CS.Berkeley.EDU)
diff --git a/cf/cf/uucpproto.mc b/cf/cf/uucpproto.mc
index 6a21156..a547d10 100644
--- a/cf/cf/uucpproto.mc
+++ b/cf/cf/uucpproto.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.
#
#
@@ -47,8 +25,9 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)uucpproto.mc 8.6 (Berkeley) 3/23/96')
+VERSIONID(`@(#)uucpproto.mc 8.12 (Berkeley) 5/19/1998')
OSTYPE(unknown)
-FEATURE(nodns)dnl
+FEATURE(promiscuous_relay)dnl
+FEATURE(accept_unresolvable_domains)dnl
MAILER(local)dnl
MAILER(uucp)dnl
diff --git a/cf/cf/vangogh.cs.mc b/cf/cf/vangogh.cs.mc
index 95a15e9..f60dca7 100644
--- a/cf/cf/vangogh.cs.mc
+++ b/cf/cf/vangogh.cs.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.
#
#
@@ -44,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)vangogh.cs.mc 8.5 (Berkeley) 3/23/96')
+VERSIONID(`@(#)vangogh.cs.mc 8.10 (Berkeley) 5/19/1998')
DOMAIN(CS.Berkeley.EDU)dnl
OSTYPE(bsd4.4)dnl
MAILER(local)dnl
diff --git a/cf/domain/Berkeley.EDU.m4 b/cf/domain/Berkeley.EDU.m4
index 2bad42b..85d5e5b 100644
--- a/cf/domain/Berkeley.EDU.m4
+++ b/cf/domain/Berkeley.EDU.m4
@@ -1,39 +1,17 @@
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.
#
divert(0)
-VERSIONID(`@(#)Berkeley.EDU.m4 8.9 (Berkeley) 10/5/95')
+VERSIONID(`@(#)Berkeley.EDU.m4 8.14 (Berkeley) 5/19/1998')
DOMAIN(berkeley-only)dnl
define(`BITNET_RELAY', `bitnet-relay.Berkeley.EDU')dnl
define(`UUCP_RELAY', `uucp-relay.Berkeley.EDU')dnl
diff --git a/cf/domain/CS.Berkeley.EDU.m4 b/cf/domain/CS.Berkeley.EDU.m4
index 97ccfb2..5609ce8 100644
--- a/cf/domain/CS.Berkeley.EDU.m4
+++ b/cf/domain/CS.Berkeley.EDU.m4
@@ -1,39 +1,17 @@
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.
#
divert(0)
-VERSIONID(`@(#)CS.Berkeley.EDU.m4 8.2 (Berkeley) 4/21/95')
+VERSIONID(`@(#)CS.Berkeley.EDU.m4 8.7 (Berkeley) 5/19/1998')
DOMAIN(Berkeley.EDU)dnl
HACK(cssubdomain)dnl
define(`confUSERDB_SPEC',
diff --git a/cf/domain/EECS.Berkeley.EDU.m4 b/cf/domain/EECS.Berkeley.EDU.m4
index a41fc7e..095fbc8 100644
--- a/cf/domain/EECS.Berkeley.EDU.m4
+++ b/cf/domain/EECS.Berkeley.EDU.m4
@@ -1,38 +1,16 @@
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.
#
divert(0)
-VERSIONID(`@(#)EECS.Berkeley.EDU.m4 8.2 (Berkeley) 4/21/95')
+VERSIONID(`@(#)EECS.Berkeley.EDU.m4 8.7 (Berkeley) 5/19/1998')
DOMAIN(Berkeley.EDU)dnl
MASQUERADE_AS(EECS.Berkeley.EDU)dnl
diff --git a/cf/domain/S2K.Berkeley.EDU.m4 b/cf/domain/S2K.Berkeley.EDU.m4
index 4aed130..a951f8b 100644
--- a/cf/domain/S2K.Berkeley.EDU.m4
+++ b/cf/domain/S2K.Berkeley.EDU.m4
@@ -1,38 +1,16 @@
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.
#
divert(0)
-VERSIONID(`@(#)S2K.Berkeley.EDU.m4 8.2 (Berkeley) 4/21/95')
+VERSIONID(`@(#)S2K.Berkeley.EDU.m4 8.7 (Berkeley) 5/19/1998')
DOMAIN(CS.Berkeley.EDU)dnl
MASQUERADE_AS(postgres.Berkeley.EDU)dnl
diff --git a/cf/domain/berkeley-only.m4 b/cf/domain/berkeley-only.m4
index ef71071..805bab6 100644
--- a/cf/domain/berkeley-only.m4
+++ b/cf/domain/berkeley-only.m4
@@ -1,39 +1,17 @@
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.
#
divert(0)
-VERSIONID(`@(#)unspecified-domain.m4 8.2 (Berkeley) 4/21/95')
+VERSIONID(`@(#)unspecified-domain.m4 8.7 (Berkeley) 5/19/1998')
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')
diff --git a/cf/domain/generic.m4 b/cf/domain/generic.m4
index ca91f50..93057d0 100644
--- a/cf/domain/generic.m4
+++ b/cf/domain/generic.m4
@@ -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.
#
#
@@ -41,7 +19,7 @@ divert(-1)
# files.
#
divert(0)
-VERSIONID(`@(#)generic.m4 8.3 (Berkeley) 3/24/96')
-define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')dnl
+VERSIONID(`@(#)generic.m4 8.9 (Berkeley) 5/19/1998')
+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/cf/feature/accept_unqualified_senders.m4 b/cf/feature/accept_unqualified_senders.m4
new file mode 100644
index 0000000..bf1b1e7
--- /dev/null
+++ b/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/1998')
+divert(-1)
+
+define(`_ACCEPT_UNQUALIFIED_SENDERS_', 1)
diff --git a/cf/feature/accept_unresolvable_domains.m4 b/cf/feature/accept_unresolvable_domains.m4
new file mode 100644
index 0000000..cbc4747
--- /dev/null
+++ b/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/1998')
+divert(-1)
+
+define(`_ACCEPT_UNRESOLVABLE_DOMAINS_', 1)
diff --git a/cf/feature/access_db.m4 b/cf/feature/access_db.m4
new file mode 100644
index 0000000..75b5551
--- /dev/null
+++ b/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/1998')
+divert(-1)
+
+define(`ACCESS_TABLE',
+ ifelse(_ARG_, `',
+ DATABASE_MAP_TYPE` -o /etc/mail/access',
+ `_ARG_'))dnl
diff --git a/cf/feature/allmasquerade.m4 b/cf/feature/allmasquerade.m4
index c7cbffa..ed622dc 100644
--- a/cf/feature/allmasquerade.m4
+++ b/cf/feature/allmasquerade.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)allmasquerade.m4 8.2 (Berkeley) 1/22/94')
+VERSIONID(`@(#)allmasquerade.m4 8.7 (Berkeley) 5/19/1998')
divert(-1)
diff --git a/cf/feature/always_add_domain.m4 b/cf/feature/always_add_domain.m4
index dd572c8..69092e3 100644
--- a/cf/feature/always_add_domain.m4
+++ b/cf/feature/always_add_domain.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)always_add_domain.m4 8.1 (Berkeley) 6/7/93')
+VERSIONID(`@(#)always_add_domain.m4 8.6 (Berkeley) 5/19/1998')
divert(-1)
define(`_ALWAYS_ADD_DOMAIN_', 1)
diff --git a/cf/feature/bestmx_is_local.m4 b/cf/feature/bestmx_is_local.m4
index 3849623..ec4c81c 100644
--- a/cf/feature/bestmx_is_local.m4
+++ b/cf/feature/bestmx_is_local.m4
@@ -1,48 +1,28 @@
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.
#
divert(0)
-VERSIONID(`@(#)bestmx_is_local.m4 8.5 (Berkeley) 3/28/97')
+VERSIONID(`@(#)bestmx_is_local.m4 8.14 (Berkeley) 1/25/1999')
divert(-1)
+define(_BESTMX_IS_LOCAL_, _ARG_)
+
LOCAL_CONFIG
# turn on bestMX lookup table
Kbestmx bestmx
-
+ifelse(_ARG_, `', `dnl',`
# limit bestmx to these domains
-CB`'_ARG_
+CB`'_ARG_')
LOCAL_NET_CONFIG
@@ -57,10 +37,13 @@ LOCAL_NET_CONFIG
# 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
+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 . > : $* $@ $>97 $3
R$* < @ $* @@ $=w . > $* $#local $: $1
R$* < @ $* @@ $* > $* $: $1 < @ $2 > $4
diff --git a/cf/feature/bitdomain.m4 b/cf/feature/bitdomain.m4
index 85c8cf0..7f9a181 100644
--- a/cf/feature/bitdomain.m4
+++ b/cf/feature/bitdomain.m4
@@ -1,49 +1,22 @@
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.
#
divert(0)
-VERSIONID(`@(#)bitdomain.m4 8.6 (Berkeley) 2/19/94')
+VERSIONID(`@(#)bitdomain.m4 8.14 (Berkeley) 10/6/1998')
divert(-1)
-
-PUSHDIVERT(6)
-Kbitdomain ifelse(_ARG_, `', `hash -o /etc/bitdomain', `_ARG_')
-POPDIVERT
-
-
-PUSHDIVERT(2)
-# handle BITNET mapping
-R$* < @ $+ .BITNET > $* $: $1 < @ $(bitdomain $2 $: $2.BITNET $) > $3
-POPDIVERT
+define(`BITDOMAIN_TABLE', ifelse(_ARG_, `',
+ ifdef(`_USE_ETC_MAIL_',
+ DATABASE_MAP_TYPE` -o /etc/mail/bitdomain',
+ DATABASE_MAP_TYPE` -o /etc/bitdomain'),
+ `_ARG_'))dnl
diff --git a/cf/feature/blacklist_recipients.m4 b/cf/feature/blacklist_recipients.m4
new file mode 100644
index 0000000..e3478d3
--- /dev/null
+++ b/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/1998')
+divert(-1)
+
+ifdef(`ACCESS_TABLE',
+ `define(`_BLACKLIST_RCPT_', 1)',
+ `errprint(`*** ERROR: FEATURE(blacklist_recipients) requires FEATURE(access_db)
+')')
diff --git a/cf/feature/domaintable.m4 b/cf/feature/domaintable.m4
index bfad1bc..e7303dc 100644
--- a/cf/feature/domaintable.m4
+++ b/cf/feature/domaintable.m4
@@ -1,40 +1,23 @@
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.
#
divert(0)
-VERSIONID(`@(#)domaintable.m4 8.2 (Berkeley) 8/9/93')
+VERSIONID(`@(#)domaintable.m4 8.9 (Berkeley) 10/6/1998')
divert(-1)
-define(`DOMAIN_TABLE', ifelse(_ARG_, `', `hash -o /etc/domaintable', `_ARG_'))dnl
+define(`DOMAIN_TABLE', ifelse(_ARG_, `',
+ ifdef(`_USE_ETC_MAIL_',
+ DATABASE_MAP_TYPE` -o /etc/mail/domaintable',
+ DATABASE_MAP_TYPE` -o /etc/domaintable'),
+ `_ARG_'))dnl
+
diff --git a/cf/feature/genericstable.m4 b/cf/feature/genericstable.m4
index 50fbbd0..654db5d 100644
--- a/cf/feature/genericstable.m4
+++ b/cf/feature/genericstable.m4
@@ -1,40 +1,22 @@
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.
#
divert(0)
-VERSIONID(`@(#)genericstable.m4 8.1 (Berkeley) 2/11/96')
+VERSIONID(`@(#)genericstable.m4 8.8 (Berkeley) 10/6/1998')
divert(-1)
-define(`GENERICS_TABLE', ifelse(_ARG_, `', `hash -o /etc/genericstable', `_ARG_'))dnl
+define(`GENERICS_TABLE', ifelse(_ARG_, `',
+ ifdef(`_USE_ETC_MAIL_',
+ DATABASE_MAP_TYPE` -o /etc/mail/genericstable',
+ DATABASE_MAP_TYPE` -o /etc/genericstable'),
+ `_ARG_'))dnl
diff --git a/cf/feature/limited_masquerade.m4 b/cf/feature/limited_masquerade.m4
index fc4f5ea..b036ae1 100644
--- a/cf/feature/limited_masquerade.m4
+++ b/cf/feature/limited_masquerade.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)limited_masquerade.m4 8.1 (Berkeley) 2/11/96')
+VERSIONID(`@(#)limited_masquerade.m4 8.6 (Berkeley) 5/19/1998')
divert(-1)
define(`_LIMITED_MASQUERADE_', 1)
diff --git a/cf/feature/local_lmtp.m4 b/cf/feature/local_lmtp.m4
new file mode 100644
index 0000000..f328ce5
--- /dev/null
+++ b/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/1998')
+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/cf/feature/local_procmail.m4 b/cf/feature/local_procmail.m4
index db0cc87..20618dd 100644
--- a/cf/feature/local_procmail.m4
+++ b/cf/feature/local_procmail.m4
@@ -1,40 +1,18 @@
divert(-1)
#
-# 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, 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(`@(#)local_procmail.m4 8.6 (Berkeley) 10/20/96')
+VERSIONID(`@(#)local_procmail.m4 8.11 (Berkeley) 5/19/1998')
divert(-1)
define(`LOCAL_MAILER_PATH',
diff --git a/cf/feature/loose_relay_check.m4 b/cf/feature/loose_relay_check.m4
new file mode 100644
index 0000000..988e441
--- /dev/null
+++ b/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/1998')
+divert(-1)
+
+define(`_LOOSE_RELAY_CHECK_', 1)
diff --git a/cf/feature/mailertable.m4 b/cf/feature/mailertable.m4
index fa39997..71a41ad 100644
--- a/cf/feature/mailertable.m4
+++ b/cf/feature/mailertable.m4
@@ -1,40 +1,22 @@
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.
#
divert(0)
-VERSIONID(`@(#)mailertable.m4 8.3 (Berkeley) 8/7/93')
+VERSIONID(`@(#)mailertable.m4 8.10 (Berkeley) 10/6/1998')
divert(-1)
-define(`MAILER_TABLE', ifelse(_ARG_, `', `hash -o /etc/mailertable', `_ARG_'))dnl
+define(`MAILER_TABLE', ifelse(_ARG_, `',
+ ifdef(`_USE_ETC_MAIL_',
+ DATABASE_MAP_TYPE` -o /etc/mail/mailertable',
+ DATABASE_MAP_TYPE` -o /etc/mailertable'),
+ `_ARG_'))dnl
diff --git a/cf/feature/masquerade_entire_domain.m4 b/cf/feature/masquerade_entire_domain.m4
index d94c007..4455b9a 100644
--- a/cf/feature/masquerade_entire_domain.m4
+++ b/cf/feature/masquerade_entire_domain.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)masquerade_entire_domain.m4 8.1 (Berkeley) 2/11/96')
+VERSIONID(`@(#)masquerade_entire_domain.m4 8.6 (Berkeley) 5/19/1998')
divert(-1)
define(`_MASQUERADE_ENTIRE_DOMAIN_', 1)
diff --git a/cf/feature/masquerade_envelope.m4 b/cf/feature/masquerade_envelope.m4
index 1e60108..276c7f4 100644
--- a/cf/feature/masquerade_envelope.m4
+++ b/cf/feature/masquerade_envelope.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)masquerade_envelope.m4 8.1 (Berkeley) 7/9/95')
+VERSIONID(`@(#)masquerade_envelope.m4 8.6 (Berkeley) 5/19/1998')
divert(-1)
define(`_MASQUERADE_ENVELOPE_', 1)
diff --git a/cf/feature/nocanonify.m4 b/cf/feature/nocanonify.m4
index 0157e6b..279a8ea 100644
--- a/cf/feature/nocanonify.m4
+++ b/cf/feature/nocanonify.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)nocanonify.m4 8.1 (Berkeley) 6/7/93')
+VERSIONID(`@(#)nocanonify.m4 8.6 (Berkeley) 5/19/1998')
divert(-1)
define(`_NO_CANONIFY_', 1)
diff --git a/cf/feature/nodns.m4 b/cf/feature/nodns.m4
index 465a5ae..5d383d5 100644
--- a/cf/feature/nodns.m4
+++ b/cf/feature/nodns.m4
@@ -1,40 +1,21 @@
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.
#
divert(0)
-VERSIONID(`@(#)nodns.m4 8.1 (Berkeley) 8/6/93')
+VERSIONID(`@(#)nodns.m4 8.9 (Berkeley) 10/6/1998')
divert(-1)
undefine(`confBIND_OPTS')dnl
+errprint(`FEATURE(nodns) is no-op.
+Use ServiceSwitchFile ('ifdef(`confSERVICE_SWITCH_FILE',confSERVICE_SWITCH_FILE,ifdef(`_USE_ETC_MAIL_',`/etc/mail/service.switch',`/etc/service.switch'))`) if your OS does not provide its own instead.
+')
diff --git a/cf/feature/notsticky.m4 b/cf/feature/notsticky.m4
index 027b8e3..5ba6b2f 100644
--- a/cf/feature/notsticky.m4
+++ b/cf/feature/notsticky.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)notsticky.m4 8.3 (Berkeley) 5/29/95')
+VERSIONID(`@(#)notsticky.m4 8.8 (Berkeley) 5/19/1998')
#
# This is now the default. Use ``FEATURE(stickyhost)'' if you want
# the old default behaviour.
diff --git a/cf/feature/nouucp.m4 b/cf/feature/nouucp.m4
index 8723437..7cf241f 100644
--- a/cf/feature/nouucp.m4
+++ b/cf/feature/nouucp.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)nouucp.m4 8.1 (Berkeley) 6/7/93')
+VERSIONID(`@(#)nouucp.m4 8.6 (Berkeley) 5/19/1998')
divert(-1)
define(`_NO_UUCP_', 1)
diff --git a/cf/feature/nullclient.m4 b/cf/feature/nullclient.m4
index 6eaa8c1..99346ae 100644
--- a/cf/feature/nullclient.m4
+++ b/cf/feature/nullclient.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(`SMTP_MAILER_FLAGS',, `define(`SMTP_MAILER_FLAGS', `')')
define(_NULL_CLIENT_ONLY_, `1')
@@ -45,7 +23,7 @@ POPDIVERT
# sendmail.
#
-VERSIONID(`@(#)nullclient.m4 8.7 (Berkeley) 2/11/96')
+VERSIONID(`@(#)nullclient.m4 8.12 (Berkeley) 5/19/1998')
PUSHDIVERT(6)
# hub host (to which all mail is sent)
diff --git a/cf/feature/promiscuous_relay.m4 b/cf/feature/promiscuous_relay.m4
new file mode 100644
index 0000000..cc3dae6
--- /dev/null
+++ b/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/1998')
+divert(-1)
+
+define(`_PROMISCUOUS_RELAY_', 1)
diff --git a/cf/feature/rbl.m4 b/cf/feature/rbl.m4
new file mode 100644
index 0000000..0284aa3
--- /dev/null
+++ b/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/1998')
+divert(-1)
+
+define(`_RBL_', ifelse(_ARG_, `', `rbl.maps.vix.com', `_ARG_'))dnl
diff --git a/cf/feature/redirect.m4 b/cf/feature/redirect.m4
index 27f2357..a9b333f 100644
--- a/cf/feature/redirect.m4
+++ b/cf/feature/redirect.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)redirect.m4 8.5 (Berkeley) 8/17/96')
+VERSIONID(`@(#)redirect.m4 8.10 (Berkeley) 5/19/1998')
divert(-1)
diff --git a/cf/feature/relay_based_on_MX.m4 b/cf/feature/relay_based_on_MX.m4
new file mode 100644
index 0000000..f19e89b
--- /dev/null
+++ b/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/1998')
+divert(-1)
+
+define(`_RELAY_MX_SERVED_', 1)
diff --git a/cf/feature/relay_entire_domain.m4 b/cf/feature/relay_entire_domain.m4
new file mode 100644
index 0000000..c932a70
--- /dev/null
+++ b/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/1998')
+divert(-1)
+
+define(`_RELAY_ENTIRE_DOMAIN_', 1)
diff --git a/cf/feature/relay_hosts_only.m4 b/cf/feature/relay_hosts_only.m4
new file mode 100644
index 0000000..35f7ab5
--- /dev/null
+++ b/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/1998')
+divert(-1)
+
+define(`_RELAY_HOSTS_ONLY_', 1)
diff --git a/cf/feature/relay_local_from.m4 b/cf/feature/relay_local_from.m4
new file mode 100644
index 0000000..ab040f6
--- /dev/null
+++ b/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/1998')
+divert(-1)
+
+define(`_RELAY_LOCAL_FROM_', 1)
diff --git a/cf/feature/smrsh.m4 b/cf/feature/smrsh.m4
index 6b4faab..3b44fa8 100644
--- a/cf/feature/smrsh.m4
+++ b/cf/feature/smrsh.m4
@@ -1,42 +1,23 @@
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.
#
divert(0)
-VERSIONID(`@(#)smrsh.m4 8.2 (Berkeley) 11/11/95')
+VERSIONID(`@(#)smrsh.m4 8.8 (Berkeley) 5/19/1998')
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_))
+define(`LOCAL_SHELL_PATH',
+ ifelse(_ARG_, `',
+ ifdef(`confEBINDIR', confEBINDIR, `/usr/libexec')`/smrsh',
+ _ARG_))
diff --git a/cf/feature/stickyhost.m4 b/cf/feature/stickyhost.m4
index bdd9c9a..1d0d1cd 100644
--- a/cf/feature/stickyhost.m4
+++ b/cf/feature/stickyhost.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)stickyhost.m4 8.1 (Berkeley) 11/12/94')
+VERSIONID(`@(#)stickyhost.m4 8.6 (Berkeley) 5/19/1998')
divert(-1)
define(`_STICKY_LOCAL_DOMAIN_', 1)
diff --git a/cf/feature/use_ct_file.m4 b/cf/feature/use_ct_file.m4
index c33bbfd..924dd06 100644
--- a/cf/feature/use_ct_file.m4
+++ b/cf/feature/use_ct_file.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)use_ct_file.m4 8.1 (Berkeley) 9/17/95')
+VERSIONID(`@(#)use_ct_file.m4 8.6 (Berkeley) 5/19/1998')
divert(-1)
# if defined, the sendmail.cf will read the /etc/sendmail.ct file
diff --git a/cf/feature/use_cw_file.m4 b/cf/feature/use_cw_file.m4
index 33b5ad5..5bbbf7b 100644
--- a/cf/feature/use_cw_file.m4
+++ b/cf/feature/use_cw_file.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)use_cw_file.m4 8.1 (Berkeley) 6/7/93')
+VERSIONID(`@(#)use_cw_file.m4 8.6 (Berkeley) 5/19/1998')
divert(-1)
# if defined, the sendmail.cf will read the /etc/sendmail.cw file
diff --git a/cf/feature/uucpdomain.m4 b/cf/feature/uucpdomain.m4
index 77cc97b..0c584aa 100644
--- a/cf/feature/uucpdomain.m4
+++ b/cf/feature/uucpdomain.m4
@@ -1,49 +1,22 @@
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.
#
divert(0)
-VERSIONID(`@(#)uucpdomain.m4 8.6 (Berkeley) 2/19/94')
+VERSIONID(`@(#)uucpdomain.m4 8.14 (Berkeley) 10/6/1998')
divert(-1)
-
-PUSHDIVERT(6)
-Kuudomain ifelse(_ARG_, `', `hash -o /etc/uudomain', `_ARG_')
-POPDIVERT
-
-
-PUSHDIVERT(2)
-# handle UUCP mapping
-R$* < @ $+ .UUCP > $* $: $1 < @ $(uudomain $2 $: $2.UUCP $) > $3
-POPDIVERT
+define(`UUDOMAIN_TABLE', ifelse(_ARG_, `',
+ ifdef(`_USE_ETC_MAIL_',
+ DATABASE_MAP_TYPE` -o /etc/mail/uudomain',
+ DATABASE_MAP_TYPE` -o /etc/uudomain'),
+ `_ARG_'))dnl
diff --git a/cf/feature/virtusertable.m4 b/cf/feature/virtusertable.m4
index 91db88c..316f7ea 100644
--- a/cf/feature/virtusertable.m4
+++ b/cf/feature/virtusertable.m4
@@ -1,40 +1,22 @@
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.
#
divert(0)
-VERSIONID(`@(#)virtusertable.m4 8.1 (Berkeley) 2/11/96')
+VERSIONID(`@(#)virtusertable.m4 8.8 (Berkeley) 10/6/1998')
divert(-1)
-define(`VIRTUSER_TABLE', ifelse(_ARG_, `', `hash -o /etc/virtusertable', `_ARG_'))dnl
+define(`VIRTUSER_TABLE', ifelse(_ARG_, `',
+ ifdef(`_USE_ETC_MAIL_',
+ DATABASE_MAP_TYPE` -o /etc/mail/virtusertable',
+ DATABASE_MAP_TYPE` -o /etc/virtusertable'),
+ `_ARG_'))dnl
diff --git a/cf/hack/cssubdomain.m4 b/cf/hack/cssubdomain.m4
index 4f270c0..6297d64 100644
--- a/cf/hack/cssubdomain.m4
+++ b/cf/hack/cssubdomain.m4
@@ -1,39 +1,17 @@
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.
#
divert(0)
-VERSIONID(`@(#)cssubdomain.m4 8.1 (Berkeley) 6/7/93')
+VERSIONID(`@(#)cssubdomain.m4 8.6 (Berkeley) 5/19/1998')
divert(2)
# find possible (old & new) versions of our name via short circuit hack
diff --git a/cf/m4/cf.m4 b/cf/m4/cf.m4
index 4e54f41..0b05809 100644
--- a/cf/m4/cf.m4
+++ b/cf/m4/cf.m4
@@ -1,36 +1,14 @@
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.
#
#
@@ -47,4 +25,4 @@ ifdef(`_CF_DIR_', `',
divert(0)dnl
ifdef(`OSTYPE', `dnl',
`include(_CF_DIR_`'m4/cfhead.m4)dnl
-VERSIONID(`@(#)cf.m4 8.24 (Berkeley) 8/16/95')')
+VERSIONID(`@(#)cf.m4 8.29 (Berkeley) 5/19/1998')')
diff --git a/cf/m4/cfhead.m4 b/cf/m4/cfhead.m4
index 6bef4c6..9a5ccd2 100644
--- a/cf/m4/cfhead.m4
+++ b/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,12 +96,16 @@ 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')')
# set up default values for options
-define(`ALIAS_FILE', `/etc/aliases')
+define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/aliases'))
define(`confMAILER_NAME', ``MAILER-DAEMON'')
define(`confFROM_LINE', `From $g $d')
define(`confOPERATORS', `.:%@!^/[]+')
@@ -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(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/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.23 (Berkeley) 10/6/1998')
diff --git a/cf/m4/nullrelay.m4 b/cf/m4/nullrelay.m4
index e8f9677..b71fd57 100644
--- a/cf/m4/nullrelay.m4
+++ b/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/1998')
#
# 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/cf/m4/proto.m4 b/cf/m4/proto.m4
index 78fa195..863b42c 100644
--- a/cf/m4/proto.m4
+++ b/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.243 (Berkeley) 2/2/1999')
MAILER(local)dnl
-# level 7 config file format
-V7/Berkeley
+# level 8 config file format
+V8/ifdef(`VENDOR_NAME', `VENDOR_NAME', `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)
@@ -207,7 +220,7 @@ ifdef(`_NULL_CLIENT_ONLY_', `dnl', `
_OPTION(AliasWait, `confALIAS_WAIT', 5m)
# location of alias file
-_OPTION(AliasFile, `ALIAS_FILE', /etc/aliases)
+_OPTION(AliasFile, `ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', /etc/mail/aliases, /etc/aliases))
')
# minimum number of free blocks on filesystem
_OPTION(MinFreeBlocks, `confMIN_FREE_BLOCKS', 100)
@@ -231,7 +244,7 @@ _OPTION(DeliveryMode, `confDELIVERY_MODE', background)
_OPTION(AutoRebuildAliases, `confAUTO_REBUILD')
# error message header/file
-_OPTION(ErrorHeader, `confERROR_MESSAGE', /etc/sendmail.oE)
+_OPTION(ErrorHeader, `confERROR_MESSAGE', ifdef(`_USE_ETC_MAIL_', /etc/mail/error-header, /etc/sendmail.oE))
# error mode
_OPTION(ErrorMode, `confERROR_MODE', print)
@@ -249,7 +262,7 @@ _OPTION(MatchGECOS, `confMATCH_GECOS')
_OPTION(MaxHopCount, `confMAX_HOP', 17)
# location of help file
-O HelpFile=ifdef(`HELP_FILE', HELP_FILE, /usr/lib/sendmail.hf)
+O HelpFile=ifdef(`HELP_FILE', HELP_FILE, ifdef(`_USE_ETC_MAIL_', /etc/mail/helpfile, /usr/lib/sendmail.hf))
# ignore dots as terminators in incoming messages?
_OPTION(IgnoreDots, `confIGNORE_DOTS')
@@ -338,7 +351,7 @@ _OPTION(DontPruneRoutes, `confDONT_PRUNE_ROUTES')
_OPTION(SuperSafe, `confSAFE_QUEUE')
# status file
-O StatusFile=ifdef(`STATUS_FILE', `STATUS_FILE', /etc/sendmail.st)
+O StatusFile=ifdef(`STATUS_FILE', `STATUS_FILE', ifdef(`_USE_ETC_MAIL_', /etc/mail/statistics, /etc/sendmail.st))
# time zone handling:
# if undefined, use system default
@@ -349,10 +362,10 @@ 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)
+_OPTION(UserDatabaseSpec, `confUSERDB_SPEC', ifdef(`_USE_ETC_MAIL_', /etc/mail/userdb, /etc/userdb))
# fallback MX host
_OPTION(FallbackMXhost, `confFALLBACK_MX', fall.back.host.net)
@@ -394,7 +407,7 @@ _OPTION(MinQueueAge, `confMIN_QUEUE_AGE', 30m)
_OPTION(DefaultCharSet, `confDEF_CHAR_SET', iso-8859-1)
# service switch file (ignored on Solaris, Ultrix, OSF/1, others)
-_OPTION(ServiceSwitchFile, `confSERVICE_SWITCH_FILE', /etc/service.switch)
+_OPTION(ServiceSwitchFile, `confSERVICE_SWITCH_FILE', ifdef(`_USE_ETC_MAIL_', /etc/mail/service.switch, /etc/service.switch))
# hosts file (normally /etc/hosts)
_OPTION(HostsFile, `confHOSTS_FILE', /etc/hosts)
@@ -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,34 @@ _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')
+
+ifdef(`confTRUSTED_USER',
+`# Trusted user for file ownership and starting the daemon
+O TrustedUser=confTRUSTED_USER
+')
+ifdef(`confCONTROL_SOCKET_NAME',
+`# Control socket for daemon management
+O ControlSocketName=confCONTROL_SOCKET_NAME
+')
+ifdef(`confMAX_MIME_HEADER_LENGTH',
+`# Maximum MIME header length to protect MUAs
+O MaxMimeHeaderLength=confMAX_MIME_HEADER_LENGTH
+')
+ifdef(`confMAX_HEADERS_LENGTH',
+`# Maximum length of the sum of all headers
+O MaxHeadersLength=confMAX_HEADERS_LENGTH
+')
+
###########################
# Message precedences #
###########################
@@ -453,7 +498,7 @@ Pjunk=-100
#####################
# this is equivalent to setting class "t"
-ifdef(`_USE_CT_FILE_', `', `#')Ft`'ifdef(`confCT_FILE', confCT_FILE, `/etc/sendmail.ct')
+ifdef(`_USE_CT_FILE_', `', `#')Ft`'ifdef(`confCT_FILE', confCT_FILE, ifdef(`_USE_ETC_MAIL_', `/etc/mail/trusted-users', `/etc/sendmail.ct'))
Troot
Tdaemon
ifdef(`_NO_UUCP_', `dnl', `Tuucp')
@@ -572,12 +617,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 +647,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 +714,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 +784,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 +844,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 +863,41 @@ 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$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
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 +905,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
@@ -849,6 +917,10 @@ R< $+ > $* $#_RELAY_ $@ $1 $: $2 use unqualified mailer
###################################################################
SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>97 $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>97 $2 $3 $4
+
# strip trailing dot from any host name that may appear
R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
@@ -869,33 +941,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 +977,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 +987,336 @@ R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
S98
undivert(3)dnl
+
+ifelse(substr(confDELIVERY_MODE,0,1), `d', `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')
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>3 $1 make domain canonical
+R< @ $+ > : $* @ $* < @ $1 > : $2 % $3 change @ to % in src route
+R$* < @ $+ > : $* : $* $3 $1 < @ $2 > : $4 change to % hack.
+R$* < @ $+ > : $* $3 $1 < @ $2 >
+
+######################################################################
+### 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$* $: <?> $>CanonAddr $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_MX_SERVED_', `dnl
+R<NO> $* < @ $+ > $: <MX> < : $(mxserved $2 $) : > < $1 < @$2 > >
+R<MX> < : $* <TEMP> : > $* $#error $@ 4.7.1 $: "450 Can not check MX records for recipient host " $1
+R<MX> < $* : $=w. : $* > < $+ > $: <RELAY> $4
+R<MX> < : $* : > < $+ > $: <NO> $2', `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 > <?> < $1 >
+R<?> < $+ > $: $1
+R<OK> < $* > $@ OK
+R<RELAY> < $* > $@ RELAY
+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
+# DNS based IP address spam lists
+R$* $: $&{client_addr}
+R$-.$-.$-.$- $: $(host $4.$3.$2.$1._RBL_. $: OK $)
+ROK $@ OK
+R$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused by blackhole site _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$* $: <?> $>CanonAddr $1
+R<?> $* < @ $+ . > <?> $1 < @ $2 > 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$* $: $>CanonAddr $1
+R$* < @ $* . > $1 < @ $2 > strip trailing dots',
+`R$* $: $>ParseRecipient $1 strip relayable hosts')
+
+ifdef(`_BESTMX_IS_LOCAL_',`dnl
+ifelse(_BESTMX_IS_LOCAL_, `', `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 . > $* $@ $>Basic_check_rcpt $1 $2 $3
+R$* < @ $* @@ $=w . > $* $: $1 < @ $3 > $4
+R$* < @ $* @@ $* > $* $: $1 < @ $2 > $4')
+
+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 $| $>CanonAddr $&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/cf/m4/version.m4 b/cf/m4/version.m4
index a2cbdc9..416488c 100644
--- a/cf/m4/version.m4
+++ b/cf/m4/version.m4
@@ -1,39 +1,17 @@
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.
#
-VERSIONID(`@(#)version.m4 8.8.8.1 (Berkeley) 10/24/97')
+VERSIONID(`@(#)version.m4 8.9.3.1 (Berkeley) 2/4/1999')
#
divert(0)
# Configuration version number
-DZ8.8.8`'ifdef(`confCF_VERSION', `/confCF_VERSION')
+DZ8.9.3`'ifdef(`confCF_VERSION', `/confCF_VERSION')
diff --git a/cf/mailer/cyrus.m4 b/cf/mailer/cyrus.m4
index 47a4a5a..567025f 100644
--- a/cf/mailer/cyrus.m4
+++ b/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/1998')
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/cf/mailer/fax.m4 b/cf/mailer/fax.m4
index 7712465..3ee94bd 100644
--- a/cf/mailer/fax.m4
+++ b/cf/mailer/fax.m4
@@ -1,40 +1,18 @@
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.
#
-# This assumes you already have Sam Leffler's HylaFAX software.
+# 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.
#
-# 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 assumes you already have Sam Leffler's HylaFAX software.
#
-# 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.
+# Tested with HylaFAX 4.0pl1
#
ifdef(`FAX_MAILER_ARGS',,
@@ -48,7 +26,7 @@ POPDIVERT
### FAX Mailer specification ###
####################################
-VERSIONID(`@(#)fax.m4 8.6 (Berkeley) 7/6/97')
+VERSIONID(`@(#)fax.m4 8.11 (Berkeley) 5/19/1998')
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
diff --git a/cf/mailer/local.m4 b/cf/mailer/local.m4
index 998778a..6b4b679 100644
--- a/cf/mailer/local.m4
+++ b/cf/mailer/local.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(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `rmn9')')
ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/mail)')
@@ -45,7 +23,7 @@ POPDIVERT
### Local and Program Mailer specification ###
##################################################
-VERSIONID(`@(#)local.m4 8.23 (Berkeley) 5/31/96')
+VERSIONID(`@(#)local.m4 8.30 (Berkeley) 6/30/1998')
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,
@@ -59,6 +37,7 @@ Mprog, P=LOCAL_SHELL_PATH, F=CONCAT(`lsDFMoq', LOCAL_SHELL_FLAGS), S=10/30, R=2
#
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
@@ -73,6 +52,7 @@ R$+ < @ $* > $: $1 strip host part
#
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
@@ -81,14 +61,14 @@ R$* $: $>93 $1 do masquerading
#
S40
R$+ $: $>50 $1 add local domain if needed
-ifdef(`_ALL_MASQUERADE_', `', `#')dnl
-R$* $: $>93 $1 do all-masquerading
+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
+ifdef(`_ALWAYS_ADD_DOMAIN_', `dnl
R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-ifdef(`_ALWAYS_ADD_DOMAIN_', `', `#')dnl
-R$+ $@ $1 < @ *LOCAL* > add local qualification
+R$+ $@ $1 < @ *LOCAL* > add local qualification',
+`dnl')
diff --git a/cf/mailer/mail11.m4 b/cf/mailer/mail11.m4
index a8781cf..222b53f 100644
--- a/cf/mailer/mail11.m4
+++ b/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/1998')
Mmail11, P=MAIL11_MAILER_PATH, F=MAIL11_MAILER_FLAGS, S=15, R=25,
A=MAIL11_MAILER_ARGS
diff --git a/cf/mailer/phquery.m4 b/cf/mailer/phquery.m4
index ee359e0..3e0891a 100644
--- a/cf/mailer/phquery.m4
+++ b/cf/mailer/phquery.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.
#
# Contributed by Kimmo Suominen <kim@tac.nyc.ny.us>.
#
@@ -45,7 +23,7 @@ POPDIVERT
### PH Mailer specification ###
####################################
-VERSIONID(`@(#)phquery.m4 8.1 (Berkeley) 8/1/95')
+VERSIONID(`@(#)phquery.m4 8.6 (Berkeley) 5/19/1998')
Mph, P=PH_MAILER_PATH, F=CONCAT(`nrDFM', PH_MAILER_FLAGS), S=10, R=20/40,
A=PH_MAILER_ARGS
diff --git a/cf/mailer/pop.m4 b/cf/mailer/pop.m4
index 7e8ec0d..0acea7d 100644
--- a/cf/mailer/pop.m4
+++ b/cf/mailer/pop.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(`POP_MAILER_PATH',, `define(`POP_MAILER_PATH', /usr/lib/mh/spop)')
@@ -43,7 +21,7 @@ POPDIVERT
### POP Mailer specification ###
####################################
-VERSIONID(`@(#)pop.m4 8.6 (Berkeley) 2/12/96')
+VERSIONID(`@(#)pop.m4 8.11 (Berkeley) 5/19/1998')
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
diff --git a/cf/mailer/procmail.m4 b/cf/mailer/procmail.m4
index 0ea0717..38b6d20 100644
--- a/cf/mailer/procmail.m4
+++ b/cf/mailer/procmail.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(`PROCMAIL_MAILER_PATH',,
@@ -48,7 +26,7 @@ POPDIVERT
### PROCMAIL Mailer specification ###
##################*****##################
-VERSIONID(`@(#)procmail.m4 8.6 (Berkeley) 4/30/97')
+VERSIONID(`@(#)procmail.m4 8.11 (Berkeley) 5/19/1998')
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/cf/mailer/smtp.m4 b/cf/mailer/smtp.m4
index c816c73..7545597 100644
--- a/cf/mailer/smtp.m4
+++ b/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/1998')
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/cf/mailer/usenet.m4 b/cf/mailer/usenet.m4
index 2abf3b0..1535751 100644
--- a/cf/mailer/usenet.m4
+++ b/cf/mailer/usenet.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(`USENET_MAILER_PATH',, `define(`USENET_MAILER_PATH', /usr/lib/news/inews)')
@@ -41,7 +19,7 @@ POPDIVERT
### USENET Mailer specification ###
####################################
-VERSIONID(`@(#)usenet.m4 8.5 (Berkeley) 4/26/95')
+VERSIONID(`@(#)usenet.m4 8.10 (Berkeley) 5/19/1998')
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,
diff --git a/cf/mailer/uucp.m4 b/cf/mailer/uucp.m4
index 023982f..badd307 100644
--- a/cf/mailer/uucp.m4
+++ b/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/1998')
#
# There are innumerable variations on the UUCP mailer. It really
diff --git a/cf/ostype/aix2.m4 b/cf/ostype/aix2.m4
index 423393b..2bda79c 100644
--- a/cf/ostype/aix2.m4
+++ b/cf/ostype/aix2.m4
@@ -1,41 +1,20 @@
divert(-1)
#
-# Copyright (c) 1995 Eric P. Allman
+# 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.
#
-# 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(`@(#)aix2.m4 8.2 (Berkeley) 9/19/96')
+VERSIONID(`@(#)aix2.m4 8.8 (Berkeley) 5/19/1998')
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/cf/ostype/aix3.m4 b/cf/ostype/aix3.m4
index 153e1f6..fb74d9e 100644
--- a/cf/ostype/aix3.m4
+++ b/cf/ostype/aix3.m4
@@ -1,41 +1,20 @@
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.
#
divert(0)
-VERSIONID(`@(#)aix3.m4 8.6 (Berkeley) 9/19/96')
+VERSIONID(`@(#)aix3.m4 8.12 (Berkeley) 5/19/1998')
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/cf/ostype/aix4.m4 b/cf/ostype/aix4.m4
index 4dc3387..24ff001 100644
--- a/cf/ostype/aix4.m4
+++ b/cf/ostype/aix4.m4
@@ -1,41 +1,20 @@
divert(-1)
#
-# Copyright (c) 1996 Eric P. Allman
+# 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.
#
-# 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(`@(#)aix4.m4 8.1 (Berkeley) 11/13/96')
+VERSIONID(`@(#)aix4.m4 8.7 (Berkeley) 5/19/1998')
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/cf/ostype/altos.m4 b/cf/ostype/altos.m4
index 10c4da9..4dcefa9 100644
--- a/cf/ostype/altos.m4
+++ b/cf/ostype/altos.m4
@@ -1,49 +1,28 @@
divert(-1)
#
-# Copyright (c) 1996 Eric P. Allman
+# 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.
#
-# 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.
#
# Contributed by Tim Rice <tim@trr.metro.NET>.
#
divert(0)
-VERSIONID(`@(#)altos.m4 8.3 (Berkeley) 9/25/96')
+VERSIONID(`@(#)altos.m4 8.10 (Berkeley) 10/6/1998')
-define(`ALIAS_FILE', /usr/lib/mail/aliases)dnl
+define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/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(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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/cf/ostype/amdahl-uts.m4 b/cf/ostype/amdahl-uts.m4
index 3583746..84d47cd 100644
--- a/cf/ostype/amdahl-uts.m4
+++ b/cf/ostype/amdahl-uts.m4
@@ -1,44 +1,23 @@
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.
#
divert(0)
-VERSIONID(`@(#)amdahl-uts.m4 8.4 (Berkeley) 9/25/96')
+VERSIONID(`@(#)amdahl-uts.m4 8.11 (Berkeley) 10/6/1998')
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(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/mail/sendmail.hf'))')
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')
ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `fSn9')')
-define(`confCW_FILE', /etc/mail/sendmail.cw)
+define(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/mail/sendmail.cw'))
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/cf/ostype/aux.m4 b/cf/ostype/aux.m4
index 0f515d1..8038cb5 100644
--- a/cf/ostype/aux.m4
+++ b/cf/ostype/aux.m4
@@ -1,43 +1,22 @@
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.
#
divert(0)
-VERSIONID(`@(#)aux.m4 8.4 (Berkeley) 9/25/96')
-define(`ALIAS_FILE', /usr/lib/aliases)dnl
+VERSIONID(`@(#)aux.m4 8.11 (Berkeley) 10/6/1998')
+define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/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(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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/cf/ostype/bsd4.3.m4 b/cf/ostype/bsd4.3.m4
index 546fd37..d0f3f8a 100644
--- a/cf/ostype/bsd4.3.m4
+++ b/cf/ostype/bsd4.3.m4
@@ -1,39 +1,17 @@
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.
#
divert(0)
-VERSIONID(`@(#)bsd4.3.m4 8.4 (Berkeley) 11/13/95')
+VERSIONID(`@(#)bsd4.3.m4 8.9 (Berkeley) 5/19/1998')
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/cf/ostype/bsd4.4.m4 b/cf/ostype/bsd4.4.m4
index 835e4d8..514bce8 100644
--- a/cf/ostype/bsd4.4.m4
+++ b/cf/ostype/bsd4.4.m4
@@ -1,42 +1,20 @@
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.
#
#
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
+VERSIONID(`@(#)bsd4.4.m4 8.10 (Berkeley) 10/6/1998')
+ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/share/misc/sendmail.hf'))')dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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/cf/ostype/bsdi1.0.m4 b/cf/ostype/bsdi1.0.m4
index 8bc3c21..08bd2a5 100644
--- a/cf/ostype/bsdi1.0.m4
+++ b/cf/ostype/bsdi1.0.m4
@@ -1,38 +1,16 @@
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.
#
divert(0)
-VERSIONID(`@(#)bsdi1.0.m4 8.2 (Berkeley) 8/16/95')dnl
+VERSIONID(`@(#)bsdi1.0.m4 8.7 (Berkeley) 5/19/1998')dnl
include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
diff --git a/cf/ostype/bsdi2.0.m4 b/cf/ostype/bsdi2.0.m4
index a98ddc0..6883eb0 100644
--- a/cf/ostype/bsdi2.0.m4
+++ b/cf/ostype/bsdi2.0.m4
@@ -1,38 +1,16 @@
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.
#
divert(0)
-VERSIONID(`@(#)bsdi2.0.m4 8.1 (Berkeley) 8/16/95')dnl
+VERSIONID(`@(#)bsdi2.0.m4 8.6 (Berkeley) 5/19/1998')dnl
include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
diff --git a/cf/ostype/dgux.m4 b/cf/ostype/dgux.m4
index ec8f4b4..2f25cd8 100644
--- a/cf/ostype/dgux.m4
+++ b/cf/ostype/dgux.m4
@@ -1,41 +1,20 @@
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.
#
divert(0)
-VERSIONID(`@(#)dgux.m4 8.4 (Berkeley) 9/19/96')
+VERSIONID(`@(#)dgux.m4 8.10 (Berkeley) 5/19/1998')
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/cf/ostype/domainos.m4 b/cf/ostype/domainos.m4
index 4af9906..9f4ea92 100644
--- a/cf/ostype/domainos.m4
+++ b/cf/ostype/domainos.m4
@@ -1,42 +1,21 @@
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.
#
divert(0)
-VERSIONID(`@(#)domainos.m4 8.3 (Berkeley) 9/25/96')
+VERSIONID(`@(#)domainos.m4 8.10 (Berkeley) 10/6/1998')
divert(-1)
-define(`ALIAS_FILE', /usr/lib/aliases)
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')
+define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')
ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/cf/ostype/dynix3.2.m4 b/cf/ostype/dynix3.2.m4
index ffbe943..3836446 100644
--- a/cf/ostype/dynix3.2.m4
+++ b/cf/ostype/dynix3.2.m4
@@ -1,39 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)dynix3.2.m4 8.3 (Berkeley) 9/25/96')
-define(`ALIAS_FILE', /usr/lib/aliases)dnl
+VERSIONID(`@(#)dynix3.2.m4 8.10 (Berkeley) 10/6/1998')
+define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/cf/ostype/gnuhurd.m4 b/cf/ostype/gnuhurd.m4
index 3676679..a8ed667 100644
--- a/cf/ostype/gnuhurd.m4
+++ b/cf/ostype/gnuhurd.m4
@@ -1,41 +1,20 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# 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.
#
-# 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(`@(#)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
+VERSIONID(`@(#)gnuhurd.m4 8.8 (Berkeley) 10/6/1998')
+ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/share/misc/sendmail.hf'))')dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/log/sendmail.st'))')dnl
ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /libexec/mail.local)')dnl
+define(`confEBINDIR', `/libexec')dnl
diff --git a/cf/ostype/hpux10.m4 b/cf/ostype/hpux10.m4
index c1d7e69..d349b54 100644
--- a/cf/ostype/hpux10.m4
+++ b/cf/ostype/hpux10.m4
@@ -1,45 +1,23 @@
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.
#
divert(0)
-VERSIONID(`@(#)hpux10.m4 8.8 (Berkeley) 9/25/96')
+VERSIONID(`@(#)hpux10.m4 8.14 (Berkeley) 10/6/1998')
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(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/mail/sendmail.st'))')dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/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
diff --git a/cf/ostype/hpux9.m4 b/cf/ostype/hpux9.m4
index 82e4f75..55f1b97 100644
--- a/cf/ostype/hpux9.m4
+++ b/cf/ostype/hpux9.m4
@@ -1,49 +1,28 @@
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.
#
divert(0)
-VERSIONID(`@(#)hpux9.m4 8.12 (Berkeley) 9/25/96')
+VERSIONID(`@(#)hpux9.m4 8.19 (Berkeley) 10/6/1998')
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(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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/cf/ostype/irix4.m4 b/cf/ostype/irix4.m4
index fb8eff7..aea6e9e 100644
--- a/cf/ostype/irix4.m4
+++ b/cf/ostype/irix4.m4
@@ -1,41 +1,20 @@
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.
#
divert(0)
-VERSIONID(`@(#)irix4.m4 8.7 (Berkeley) 9/25/96')
+VERSIONID(`@(#)irix4.m4 8.14 (Berkeley) 10/6/1998')
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(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/cf/ostype/irix5.m4 b/cf/ostype/irix5.m4
index 89a2975..426f002 100644
--- a/cf/ostype/irix5.m4
+++ b/cf/ostype/irix5.m4
@@ -1,38 +1,16 @@
divert(-1)
#
-# Copyright (c) 1995 Eric P. Allman
+# 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.
#
-# Contributed by Kari E. Hurtta <Kari.Hurtta@dionysos.fmi.fi>
+# 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.
#
-# 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 Kari E. Hurtta <Kari.Hurtta@dionysos.fmi.fi>
#
#
@@ -50,12 +28,13 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)irix5.m4 8.4 (Berkeley) 9/25/96')
+VERSIONID(`@(#)irix5.m4 8.11 (Berkeley) 10/6/1998')
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(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/aliases'))dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/sendmail.st'))')dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/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/cf/ostype/irix6.m4 b/cf/ostype/irix6.m4
index 2304c1c..d419202 100644
--- a/cf/ostype/irix6.m4
+++ b/cf/ostype/irix6.m4
@@ -1,38 +1,16 @@
divert(-1)
#
-# Copyright (c) 1995 Eric P. Allman
+# 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.
#
-# Contributed by Kari E. Hurtta <Kari.Hurtta@dionysos.fmi.fi>
+# 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.
#
-# 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 Kari E. Hurtta <Kari.Hurtta@dionysos.fmi.fi>
#
#
@@ -50,12 +28,13 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)irix6.m4 8.1 (Berkeley) 4/11/97')
+VERSIONID(`@(#)irix6.m4 8.8 (Berkeley) 10/6/1998')
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(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/aliases'))dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/sendmail.st'))')dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/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/cf/ostype/isc4.1.m4 b/cf/ostype/isc4.1.m4
index 902f49a..629835b 100644
--- a/cf/ostype/isc4.1.m4
+++ b/cf/ostype/isc4.1.m4
@@ -1,48 +1,27 @@
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.
#
#
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
+VERSIONID(`@(#)isc4.1.m4 8.11 (Berkeley) 10/6/1998')
+define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/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(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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/cf/ostype/linux.m4 b/cf/ostype/linux.m4
index 527b6fa..e1f7a92 100644
--- a/cf/ostype/linux.m4
+++ b/cf/ostype/linux.m4
@@ -1,38 +1,16 @@
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.
#
divert(0)
-VERSIONID(`@(#)linux.m4 8.2 (Berkeley) 8/21/93')
+VERSIONID(`@(#)linux.m4 8.7 (Berkeley) 5/19/1998')
define(`LOCAL_MAILER_PATH', /bin/mail.local)dnl
diff --git a/cf/ostype/maxion.m4 b/cf/ostype/maxion.m4
index 63cc496..a8ecfd0 100644
--- a/cf/ostype/maxion.m4
+++ b/cf/ostype/maxion.m4
@@ -1,50 +1,30 @@
+divert(-1)
#
-# Copyright (c) 1996 Eric P. Allman
+# 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.
#
-# 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.
#
# 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')
+VERSIONID(`@(#)maxion.m4 8.11 (Berkeley) 10/6/1998')
-define(`ALIAS_FILE', `/etc/ucbmail/aliases')dnl
-define(`HELP_FILE', `/etc/ucbmail/sendmail.hf')dnl
+define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/ucbmail/aliases'))dnl
+define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/ucbmail/sendmail.hf'))dnl
define(`QUEUE_DIR', `/var/spool/mqueue')dnl
-define(`STATUS_FILE', `/var/adm/log/sendmail.st')dnl
+define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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/cf/ostype/mklinux.m4 b/cf/ostype/mklinux.m4
index 00adedb..abcdbae 100644
--- a/cf/ostype/mklinux.m4
+++ b/cf/ostype/mklinux.m4
@@ -1,44 +1,22 @@
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.
#
# MkLinux support contributed by Paul DuBois <dubois@primate.wisc.edu>
#
divert(0)
-VERSIONID(`@(#)mklinux.m4 8.2 (Berkeley) 11/17/96')
+VERSIONID(`@(#)mklinux.m4 8.8 (Berkeley) 10/6/1998')
ifdef(`STATUS_FILE',,
- `define(`STATUS_FILE', /var/log/sendmail.st)')
+ `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/log/sendmail.st'))')
ifdef(`PROCMAIL_MAILER_PATH',,
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail'))
FEATURE(local_procmail)
diff --git a/cf/ostype/nextstep.m4 b/cf/ostype/nextstep.m4
index 8013975..ebe6957 100644
--- a/cf/ostype/nextstep.m4
+++ b/cf/ostype/nextstep.m4
@@ -1,45 +1,24 @@
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.
#
divert(0)
-VERSIONID(`@(#)nextstep.m4 8.8 (Berkeley) 6/18/97')
+VERSIONID(`@(#)nextstep.m4 8.15 (Berkeley) 10/6/1998')
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
+define(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/sendmail/sendmail.cw'))dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/lib/sendmail.hf'))')dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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/cf/ostype/osf1.m4 b/cf/ostype/osf1.m4
index ee73e4f..7fcf1cf 100644
--- a/cf/ostype/osf1.m4
+++ b/cf/ostype/osf1.m4
@@ -1,40 +1,19 @@
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.
#
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
+VERSIONID(`@(#)osf1.m4 8.11 (Berkeley) 10/6/1998')
+define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/adm/sendmail/aliases'))dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/adm/sendmail/sendmail.st'))')dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/share/lib/sendmail.hf'))')dnl
+define(`confDEF_USER_ID', `daemon')
diff --git a/cf/ostype/powerux.m4 b/cf/ostype/powerux.m4
index d0fd3dc..068bd8e 100644
--- a/cf/ostype/powerux.m4
+++ b/cf/ostype/powerux.m4
@@ -1,46 +1,25 @@
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.
#
divert(0)
-VERSIONID(`@(#)powerux.m4 8.1 (Berkeley) 1/16/97')
+VERSIONID(`@(#)powerux.m4 8.8 (Berkeley) 10/6/1998')
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
+ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/mail/sendmail.hf'))')dnl
+ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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/cf/ostype/ptx2.m4 b/cf/ostype/ptx2.m4
index cbe0f59..d564ead 100644
--- a/cf/ostype/ptx2.m4
+++ b/cf/ostype/ptx2.m4
@@ -1,46 +1,25 @@
divert(-1)
#
-# 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) 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.
#
# Support for DYNIX/ptx 2.x.
divert(0)
-VERSIONID(`@(#)ptx2.m4 8.5 (Berkeley) 9/25/96')
+VERSIONID(`@(#)ptx2.m4 8.12 (Berkeley) 10/6/1998')
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(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
+ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/lib/sendmail.hf'))')dnl
+ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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/cf/ostype/qnx.m4 b/cf/ostype/qnx.m4
new file mode 100644
index 0000000..91ed669
--- /dev/null
+++ b/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.8 (Berkeley) 10/6/1998')
+define(`QUEUE_DIR', /usr/spool/mqueue)dnl
+define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/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/cf/ostype/riscos4.5.m4 b/cf/ostype/riscos4.5.m4
index 96e3b16..c44a180 100644
--- a/cf/ostype/riscos4.5.m4
+++ b/cf/ostype/riscos4.5.m4
@@ -1,42 +1,21 @@
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.
#
divert(0)
-VERSIONID(`@(#)riscos4.5.m4 8.4 (Berkeley) 9/25/96')
+VERSIONID(`@(#)riscos4.5.m4 8.11 (Berkeley) 10/6/1998')
ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
-define(`ALIAS_FILE', `/usr/lib/aliases')dnl
+define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/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
+ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/lib/sendmail.hf'))')dnl
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/cf/ostype/sco-uw-2.1.m4 b/cf/ostype/sco-uw-2.1.m4
index ebce499..0de9bae 100644
--- a/cf/ostype/sco-uw-2.1.m4
+++ b/cf/ostype/sco-uw-2.1.m4
@@ -1,16 +1,26 @@
+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.8 (Berkeley) 1/25/1999')
-define(`ALIAS_FILE', /usr/lib/mail/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(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/mail/aliases'))dnl
+ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/ucblib/sendmail.hf'))')dnl
+ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/ucblib/sendmail.st'))')dnl
define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl
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
+define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/cf/ostype/sco3.2.m4 b/cf/ostype/sco3.2.m4
index b74eb6f..135fefa 100644
--- a/cf/ostype/sco3.2.m4
+++ b/cf/ostype/sco3.2.m4
@@ -1,45 +1,24 @@
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.
#
divert(0)
-VERSIONID(`@(#)sco3.2.m4 8.4 (Berkeley) 9/25/96')
-define(`ALIAS_FILE', /usr/lib/mail/aliases)dnl
+VERSIONID(`@(#)sco3.2.m4 8.11 (Berkeley) 10/6/1998')
+define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/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(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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/cf/ostype/sinix.m4 b/cf/ostype/sinix.m4
index 278d4c8..37d12d4 100644
--- a/cf/ostype/sinix.m4
+++ b/cf/ostype/sinix.m4
@@ -1,42 +1,21 @@
divert(-1)
#
-# Copyright (c) 1996 Eric P. Allman
+# 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.
#
-# 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(`@(#)sinix.m4 8.2 (Berkeley) 9/13/97')
+VERSIONID(`@(#)sinix.m4 8.9 (Berkeley) 10/6/1998')
ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
-define(`ALIAS_FILE', /etc/aliases)dnl
+define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/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
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/sendmail.st'))')dnl
+ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/sendmail.hf'))')dnl
+define(`confEBINDIR', `/usr/ucblib')dnl
diff --git a/cf/ostype/solaris2.m4 b/cf/ostype/solaris2.m4
index e6553a8..5a0e2a9 100644
--- a/cf/ostype/solaris2.m4
+++ b/cf/ostype/solaris2.m4
@@ -1,46 +1,25 @@
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.
#
divert(0)
-VERSIONID(`@(#)solaris2.m4 8.9 (Berkeley) 9/25/96')
+VERSIONID(`@(#)solaris2.m4 8.16 (Berkeley) 10/6/1998')
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(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/mail/sendmail.hf'))')
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/mail/sendmail.cw'))
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/cf/ostype/solaris2.ml.m4 b/cf/ostype/solaris2.ml.m4
index 2ce5325..f99cebb 100644
--- a/cf/ostype/solaris2.ml.m4
+++ b/cf/ostype/solaris2.ml.m4
@@ -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.
#
# This ostype file is suitable for use on Solaris 2.x systems that
# have mail.local installed. It is my understanding that this is
@@ -38,14 +16,15 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)solaris2.ml.m4 8.2 (Berkeley) 9/25/96')
+VERSIONID(`@(#)solaris2.ml.m4 8.9 (Berkeley) 10/6/1998')
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(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/mail/sendmail.hf'))')
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/mail/sendmail.cw'))
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/cf/ostype/sunos3.5.m4 b/cf/ostype/sunos3.5.m4
index fe76931..aeda272 100644
--- a/cf/ostype/sunos3.5.m4
+++ b/cf/ostype/sunos3.5.m4
@@ -1,37 +1,17 @@
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.
#
divert(0)
-VERSIONID(`@(#)sunos3.5.m4 8.1 (Berkeley) 6/7/93')
+VERSIONID(`@(#)sunos3.5.m4 8.7 (Berkeley) 5/19/1998')
+
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/cf/ostype/sunos4.1.m4 b/cf/ostype/sunos4.1.m4
index cfa7a9a..78648da 100644
--- a/cf/ostype/sunos4.1.m4
+++ b/cf/ostype/sunos4.1.m4
@@ -1,37 +1,17 @@
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.
#
divert(0)
-VERSIONID(`@(#)sunos4.1.m4 8.1 (Berkeley) 6/7/93')
+VERSIONID(`@(#)sunos4.1.m4 8.7 (Berkeley) 5/19/1998')
+
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/cf/ostype/svr4.m4 b/cf/ostype/svr4.m4
index 3085db1..d0de278 100644
--- a/cf/ostype/svr4.m4
+++ b/cf/ostype/svr4.m4
@@ -1,45 +1,24 @@
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.
#
divert(0)
-VERSIONID(`@(#)svr4.m4 8.4 (Berkeley) 9/25/96')
+VERSIONID(`@(#)svr4.m4 8.11 (Berkeley) 10/6/1998')
-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(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/ucblib/aliases'))dnl
+ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/ucblib/sendmail.hf'))')dnl
+ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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/cf/ostype/ultrix4.m4 b/cf/ostype/ultrix4.m4
index f6998e1..d10518a 100644
--- a/cf/ostype/ultrix4.m4
+++ b/cf/ostype/ultrix4.m4
@@ -1,37 +1,17 @@
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.
#
divert(0)
-VERSIONID(`@(#)ultrix4.m4 8.2 (Berkeley) 7/2/94')
+VERSIONID(`@(#)ultrix4.m4 8.8 (Berkeley) 5/19/1998')
+
+define(`confEBINDIR', `/usr/lib')dnl
diff --git a/cf/ostype/unixware7.m4 b/cf/ostype/unixware7.m4
new file mode 100644
index 0000000..a787307
--- /dev/null
+++ b/cf/ostype/unixware7.m4
@@ -0,0 +1,17 @@
+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(`@(#)unixware7.m4 8.2 (Berkeley) 1/25/1999')
+define(`ALIAS_FILE', `/etc/mail/aliases')dnl
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
+ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/mailer/sendmail.st'))')dnl
+define(`confEBINDIR', `/usr/lib')dnl
+define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/cf/ostype/unknown.m4 b/cf/ostype/unknown.m4
index 7aadbb5..629c31b 100644
--- a/cf/ostype/unknown.m4
+++ b/cf/ostype/unknown.m4
@@ -1,40 +1,18 @@
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.
#
divert(0)
-VERSIONID(`@(#)unknown.m4 8.1 (Berkeley) 4/21/95')
+VERSIONID(`@(#)unknown.m4 8.6 (Berkeley) 5/19/1998')
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')
diff --git a/cf/ostype/uxpds.m4 b/cf/ostype/uxpds.m4
index 88e455b..0f1d908 100644
--- a/cf/ostype/uxpds.m4
+++ b/cf/ostype/uxpds.m4
@@ -1,49 +1,28 @@
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.
#
# 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')
+VERSIONID(`@(#)uxpds.m4 8.10 (Berkeley) 10/6/1998')
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(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/ucblib/aliases'))dnl
+ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/ucblib/sendmail.hf'))')dnl
+ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/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/cf/sh/makeinfo.sh b/cf/sh/makeinfo.sh
index 68b85d3..c8621f4 100644
--- a/cf/sh/makeinfo.sh
+++ b/cf/sh/makeinfo.sh
@@ -1,38 +1,16 @@
#!/bin/sh
#
-# 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.
#
-# @(#)makeinfo.sh 8.6 (Berkeley) 8/6/95
+# @(#)makeinfo.sh 8.11 (Berkeley) 5/19/1998
#
usewhoami=0
diff --git a/contrib/converting.sun.configs b/contrib/converting.sun.configs
index 0fcd919..e6a3a9e 100644
--- a/contrib/converting.sun.configs
+++ b/contrib/converting.sun.configs
@@ -353,7 +353,7 @@ out of my makefile:
# -DNDBM -DNEWDB -DYPCOMPAT -- use both plus YP compatility
# -DNIS -- include client NIS support
# The really old (V7) DBM library is no longer supported.
- # See READ_ME for a description of how these flags interact.
+ # See README for a description of how these flags interact.
#DBMDEF= -DNDBM -DNEWDB
DBMDEF= -DNDBM -DNIS
diff --git a/contrib/doublebounce.pl b/contrib/doublebounce.pl
new file mode 100644
index 0000000..a853ec1
--- /dev/null
+++ b/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/contrib/smcontrol.pl b/contrib/smcontrol.pl
new file mode 100755
index 0000000..b5ef1f8
--- /dev/null
+++ b/contrib/smcontrol.pl
@@ -0,0 +1,361 @@
+#!/usr/local/bin/perl -w
+
+use FileHandle;
+use Socket;
+
+$sendmailDaemon = "/usr/sbin/sendmail -q30m -bd";
+
+##########################################################################
+#
+# &get_controlname -- read ControlSocketName option from sendmail.cf
+#
+# Parameters:
+# none.
+#
+# Returns:
+# control socket filename, undef if not found
+#
+
+sub get_controlname
+{
+ my $cn = undef;
+ my $qd = undef;
+
+ open(CF, "</etc/sendmail.cf") or return $cn;
+ while (<CF>)
+ {
+ chomp;
+ if (/^O ControlSocketName\s*=\s*([^#]+)$/o)
+ {
+ $cn = $1;
+ }
+ if (/^O QueueDirectory\s*=\s*([^#]+)$/o)
+ {
+ $qd = $1;
+ }
+ if (/^OQ([^#]+)$/o)
+ {
+ $qd = $1;
+ }
+ }
+ close(CF);
+ if (not defined $cn)
+ {
+ return undef;
+ }
+ if ($cn !~ /^\//o)
+ {
+ return undef if (not defined $qd);
+
+ $cn = $qd . "/" . $cn;
+ }
+ return $cn;
+}
+
+##########################################################################
+#
+# &do_command -- send command to sendmail daemon view control socket
+#
+# Parameters:
+# controlsocket -- filename for socket
+# command -- command to send
+#
+# Returns:
+# reply from sendmail daemon
+#
+
+sub do_command
+{
+ my $controlsocket = shift;
+ my $command = shift;
+ my $proto = getprotobyname('ip');
+ my @reply;
+
+ socket(SOCK, PF_UNIX, SOCK_STREAM, $proto) or return undef;
+
+ for ($i = 0; $i < 4; $i++)
+ {
+ if (!connect(SOCK, sockaddr_un($controlsocket)))
+ {
+ if ($i == 3)
+ {
+ close(SOCK);
+ return undef;
+ }
+ sleep 1;
+ next;
+ }
+ last;
+ }
+ autoflush SOCK 1;
+ print SOCK "$command\n";
+ @reply = <SOCK>;
+ close(SOCK);
+ return join '', @reply;
+}
+
+##########################################################################
+#
+# &sendmail_running -- check if sendmail is running via SMTP
+#
+# Parameters:
+# none
+#
+# Returns:
+# 1 if running, undef otherwise
+#
+
+sub sendmail_running
+{
+ my $port = getservbyname("smtp", "tcp") || 25;
+ my $proto = getprotobyname("tcp");
+ my $iaddr = inet_aton("localhost");
+ my $paddr = sockaddr_in($port, $iaddr);
+
+ socket(SOCK, PF_INET, SOCK_STREAM, $proto) or return undef;
+ if (!connect(SOCK, $paddr))
+ {
+ close(SOCK);
+ return undef;
+ }
+ autoflush SOCK 1;
+ while (<SOCK>)
+ {
+ if (/^(\d{3})([ -])/)
+ {
+ if ($1 != 220)
+ {
+ close(SOCK);
+ return undef;
+ }
+ }
+ else
+ {
+ close(SOCK);
+ return undef;
+ }
+ last if ($2 eq " ");
+ }
+ print SOCK "QUIT\n";
+ while (<SOCK>)
+ {
+ last if (/^\d{3} /);
+ }
+ close(SOCK);
+ return 1;
+}
+
+##########################################################################
+#
+# &munge_status -- turn machine readable status into human readable text
+#
+# Parameters:
+# raw -- raw results from sendmail daemon STATUS query
+#
+# Returns:
+# human readable text
+#
+
+sub munge_status
+{
+ my $raw = shift;
+ my $cooked = "";
+ my $daemonStatus = "";
+
+ if ($raw =~ /^(\d+)\/(\d+)$/mg)
+ {
+ $cooked .= "Current number of children: $1";
+ if ($2 > 0)
+ {
+ $cooked .= " (maximum $2)";
+ }
+ $cooked .= "\n";
+ }
+ while ($raw =~ /^(\d+) (.*)$/mg)
+ {
+ if (not $daemonStatus)
+ {
+ $daemonStatus = "(process $1) " . ucfirst($2) . "\n";
+ }
+ else
+ {
+ $cooked .= "Child Process $1 Status: $2\n";
+ }
+ }
+ return ($daemonStatus, $cooked);
+}
+
+##########################################################################
+#
+# &start_daemon -- fork off a sendmail daemon
+#
+# Parameters:
+# control -- control socket name
+#
+# Returns:
+# Error message or "OK" if successful
+#
+
+sub start_daemon
+{
+ my $control = shift;
+ my $pid;
+
+ if ($pid = fork)
+ {
+ my $exitstat;
+
+ waitpid $pid, 0 or return "Could not get status of created process: $!\n";
+ $exitstat = $? / 256;
+ if ($exitstat != 0)
+ {
+ return "sendmail daemon startup exited with exit value $exitstat";
+ }
+ }
+ elsif (defined $pid)
+ {
+ exec($main::sendmailDaemon);
+ die "Unable to start sendmail daemon: $!.\n";
+ }
+ else
+ {
+ return "Could not create new process: $!\n";
+ }
+ return "OK\n";
+}
+
+##########################################################################
+#
+# &stop_daemon -- stop the sendmail daemon using control socket
+#
+# Parameters:
+# control -- control socket name
+#
+# Returns:
+# Error message or status message
+#
+
+sub stop_daemon
+{
+ my $control = shift;
+ my $status;
+
+ if (not defined $control)
+ {
+ return "The control socket is not configured so the daemon can not be stopped.\n";
+ }
+ return &do_command($control, "SHUTDOWN");
+}
+
+##########################################################################
+#
+# &restart_daemon -- restart the sendmail daemon using control socket
+#
+# Parameters:
+# control -- control socket name
+#
+# Returns:
+# Error message or status message
+#
+
+sub restart_daemon
+{
+ my $control = shift;
+ my $status;
+
+ if (not defined $control)
+ {
+ return "The control socket is not configured so the daemon can not be restarted.";
+ }
+ return &do_command($control, "RESTART");
+}
+
+##########################################################################
+#
+# &help -- get help from the daemon using the control socket
+#
+# Parameters:
+# control -- control socket name
+#
+# Returns:
+# Error message or status message
+#
+
+sub help
+{
+ my $control = shift;
+ my $status;
+
+ if (not defined $control)
+ {
+ return "The control socket is not configured so the daemon can not be queried for help.";
+ }
+ return &do_command($control, "HELP");
+}
+
+my $command = shift;
+my $control = &get_controlname;
+my $status = undef;
+my $daemonStatus = undef;
+
+if (not defined $control)
+{
+ die "No control socket available.\n";
+}
+if (not defined $command)
+{
+ die "Usage: $0 command\n";
+}
+if ($command eq "status")
+{
+ $status = &do_command($control, "STATUS");
+ if (not defined $status)
+ {
+ # Not responding on control channel, query via SMTP
+ if (&sendmail_running)
+ {
+ $daemonStatus = "Sendmail is running but not answering status queries.";
+ }
+ else
+ {
+ $daemonStatus = "Sendmail does not appear to be running.";
+ }
+ }
+ else
+ {
+ # Munge control channel output
+ ($daemonStatus, $status) = &munge_status($status);
+ }
+}
+elsif (lc($command) eq "shutdown")
+{
+ $status = &stop_daemon($control);
+}
+elsif (lc($command) eq "restart")
+{
+ $status = &restart_daemon($control);
+}
+elsif (lc($command) eq "start")
+{
+ $status = &start_daemon($control);
+}
+elsif (lc($command) eq "help")
+{
+ $status = &help($control);
+}
+else
+{
+ die "Unrecognized command $command\n";
+}
+if (defined $daemonStatus)
+{
+ print "Daemon Status: $daemonStatus\n";
+}
+if (defined $status)
+{
+ print "$status\n";
+}
+else
+{
+ die "No response\n";
+}
diff --git a/doc/changes/Makefile b/doc/changes/Makefile
index 46447c2..76eaa39 100644
--- a/doc/changes/Makefile
+++ b/doc/changes/Makefile
@@ -1,4 +1,4 @@
-# @(#)Makefile 8.1 (Berkeley) 4/13/94
+# @(#)Makefile 8.1 (Berkeley) 4/13/1994
DIR= smm/09.sendmail
SRCS= changes.me
diff --git a/doc/changes/changes.me b/doc/changes/changes.me
index ee838bd..b963396 100644
--- a/doc/changes/changes.me
+++ b/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/1998
.\"
.\" ditroff -me -Pxx changes.me
.eh '%''Changes in Sendmail Version 8'
diff --git a/doc/changes/changes.ps b/doc/changes/changes.ps
index 5ba54a4..9f12530 100644
--- a/doc/changes/changes.ps
+++ b/doc/changes/changes.ps
@@ -1,16 +1,17 @@
%!PS-Adobe-3.0
-%%Creator: groff version 1.08
+%%Creator: groff version 1.10
+%%CreationDate: Tue Dec 29 09:59:23 1998
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Italic
%%+ font Times-Bold
%%+ font Symbol
-%%DocumentSuppliedResources: procset grops 1.08 0
+%%DocumentSuppliedResources: procset grops 1.10 0
%%Pages: 11
%%PageOrder: Ascend
%%Orientation: Portrait
%%EndComments
%%BeginProlog
-%%BeginResource: procset grops 1.08 0
+%%BeginResource: procset grops 1.10 0
/setpacking where{
pop
currentpacking
@@ -47,7 +48,7 @@ dup setfont
/MF{
findfont
[5 2 roll
-0 3 1 roll
+0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
@@ -56,6 +57,9 @@ dup setfont
/RES 0 def
/PL 0 def
/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
@@ -167,318 +171,334 @@ setpacking
%%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
+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/.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
+/.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
+/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
+/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)-3.351 F F2
+(sendmail)3.201 E F1 3.201(,as)C .7(ummary of the major dif)-3.201 F
+(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
+(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)-2.6 E .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)-3.08 F 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)
+(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
+(ith some thoughts about what still needs to be done.)-2.5 E/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
+(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)
+-3.547 F .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)-3.346 F(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)
+-2.756 F -.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
+(ho had returned the Uni)-2.5 E -.15(ve)-.25 G(rsity).15 E 2.5(,s)-.65 G
+(tarted acti)-2.5 E .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)-6.271 F 1.27
+(as a desire at Berk)-.1 F(ele)-.1 E 3.77(yt)-.15 G(o)-3.77 E(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 possible 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
+(group that produced the Berk)87 556.8 R(ele)-.1 E 4.39(yS)-.15 G(oftw)
+-4.39 E 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
+(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)-3.423 F 3.422(es)-.1 G .922(ome re)-3.422 F
+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)-2.523 F 2.523(yv)-.15 G .023(endors and outside v)-2.673 F
+.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)-5.518 F .517
+(wn is the ID)-.25 F 3.017(Av)-.4 G .517(ersion [ID)-3.167 F 3.017
+(A87]. Originally)-.4 F .517(intended to be a ne)3.017 F 3.017(ws)-.25 G
+.517(et of)-3.017 F .268(con\214guration \214les, ID)87 633 R 2.768(Ae)
+-.4 G .269(xpanded into a f)-2.918 F .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)-2.971 H
+.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
+(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
+(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.)-2 E F3
+(Changes in Sendmail V)72 756 Q(ersion 8)-1 E(1)294.65 E 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
+/F0 10/Times-Bold@0 SF 294.65(2C)72 60 S(hanges in Sendmail V)-294.65 E
(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
+(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
+(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 Mail 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)-2.998 F .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)-4.2 F 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.)-4.199 F(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)-2.5 E
+(ely to be widely deplo)-.1 E(yed an)-.1 E 2.5(yt)-.15 G
+(ime in the near future.)-2.5 E .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)-2.543 G .043(ppeared that most compa-)-2.543 F .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.)-2.737 F(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)-3.674 F 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)-3.523 E 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)-4.4 F
+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)-2.5 E(ersion \(8.6.6\).)-.15 E(Man)112 393 Q
+2.5(yo)-.15 G 2.5(ft)-2.5 G(hese are ideas that had been tried in ID)
+-2.5 E(A, b)-.4 E(ut man)-.2 E 2.5(yo)-.15 G 2.5(ft)-2.5 G
+(hem were generalized in V8.)-2.5 E 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)-3.049 F .029
+(future use.)102 445.2 R .029(There is a limit to the number of simultaneous open connections 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)-3.719 E(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)-3.757 F 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.)-3.44 F -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)-3.788 F
+3.637(os)-.1 G 1.137(ites `)-3.637 F(`foo.com')-.74 E 3.637('a)-.74 G
+1.137(nd `)-3.637 F(`bar)-.74 E(.com')-.55 E 3.637('a)-.74 G 1.137
+(re both serv)-3.637 F 1.137(ed by UUNET)-.15 F 3.637(,t)-.74 G(he)
+-3.637 E 3.637(yw)-.15 G(ill)-3.637 E(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)-2.5 E
+(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)-2.607 F .407 -.15(ve b)-.2
+H .106(een made to mak).15 F 2.606(es)-.1 G .106(endmail `)-2.606 F .106
+(`conditionally compliant')-.74 F 2.606('\()-.74 G .106(that is, it)
+-2.606 F(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)-3.065 F .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)-3.336 F(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)-5.176 G .176
+(oes still do a DNS lookup if there is an e)-2.676 F .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
+/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(3)
+294.65 E/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)-2.626 G
+.126(omeone sent to user@[1.2.3.4],)-2.626 F .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
+(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)-3.689
+E 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)-2.502 F .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
+(\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)-2.737 F 5.237(.V)-.65 G .238
+(ersion 8 does.)-6.347 F(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)-3.633 F 3.633
+(,y)-.65 G(ou)-3.633 E
+(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 <>.)-5.712 F(Pre)8.213 E
+(viously)-.25 E 5.713(,s)-.65 G 3.213(endmail w)-5.713 F 3.213(as happ)
+-.1 F 5.713(yt)-.1 G 5.713(os)-5.713 G(end)-5.713 E 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.)-2.611 F .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
+(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)-3.625 F(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)-3.253 F 3.254(fu)-.25
+G 3.254(pt)-3.254 G(o)-3.254 E 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)-5 E(f.)-.25 E
+(The areas in which sendmail is not `)102 385.2 Q
+(`unconditionally compliant')-.74 E 2.5('a)-.74 G(re:)-2.5 E 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)-3.2
+G .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.)-3.512 F
(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
+(ou most of this, b)-2.5 E(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)-2.843 G .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\).)-3.547 F(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)-3.548 F .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)-3.3 F(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)
+-3.076 F -.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)-3.322 G 3.322(ft)-3.322 G .822
+(he other end adv)-3.322 F .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
+(his is a non-standard adv)-5.822 F(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
+(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
@@ -486,607 +506,624 @@ SF(Sendmail)127 626.4 Q F1 .287(tries to speak ESMTP if you ha)2.787 F .588
%%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
+/F0 10/Times-Bold@0 SF 294.65(4C)72 60 S(hanges in Sendmail V)-294.65 E
+(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
+(it stripping for compatibility with RFC 821, which is)-2.818 F 2.5(a7)
+102 136.2 S(-bit protocol.)-2.5 E(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
+(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.)-2.875 F .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.)-2.897 F(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)-3.583 F
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
+(rkgroup, such as people').1 F 2.673(sf)-.55 G .173(ull names, their .plan information, their outgoing mail name, and their)
+-2.673 F(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)-2.937 G(.).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)-3.499 F(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)-2.5 E 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)-2.761 E
+(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)-3.412 G .912(his release.)-3.412 F .912
+(In particular)5.912 F 3.412(,t)-.4 G .912
+(hese more tightly bind \(pun intended\) the name)-3.412 F(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)-3.188 F
(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
+(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)-2.929 G 2.929(ea)-2.929 G 2.929
+(na)-2.929 G(nno)-2.929 E .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)-2.701 G .201
+(eally critical that this be supported, since MX records are mandatory)
+-2.701 F 5.2(.I)-.65 G 2.7(nS)-5.2 G .2(unOS you)-2.7 F .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.)-2.5 E 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
+(endmail \(albeit with a completely)-2.741 F(dif)102 489.6 Q
+(ferent implementation\).)-.25 E(The)5 E 2.5(yc)-.15 G
+(an be useful on lar)-2.5 E(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)-3.729 F 3.729(wB)-.25 G(erk)
+-3.729 E(ele)-.1 E 3.729(yd)-.15 G 1.229(b\(3\) library)-3.729 F 6.23
+(.t)-.65 G 1.23(his library pro-)-6.23 F 4.094(vides substantially better database support 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)-2.5 E(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)-3.047 F 3.048(wB)-.25 G(erk)
+-3.048 E(ele)-.1 E 3.048(yd)-.15 G .548(b\(3\) library)-3.048 F 5.548
+(.B)-.65 G(-T)-5.548 E .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)-2.642 F .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
+/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(5)
+294.65 E 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)-2.5 G(ultiple w)-2.5 E 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)-4.894 F -.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)-2.5 E(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-)-3.134 E .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)-3.408 E 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)-11.038 F
+(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
+(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)-2.587 E .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)-4.212 F -.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 4.316
+(COL, ICMP_UNREA).4 F(CH_POR)-.4 E 6.817(To)-.6 G 6.817(rI)-6.817 G
+(CMP_UNREA)-6.817 E(CH_NET_PR)-.4 E(O-)-.4 E(HIB\) it w)102 329.4 Q
+(ould w)-.1 E(ork, b)-.1 E(ut this hasn')-.2 E 2.5(tb)-.18 G(een v)-2.5
+E(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
+(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)-3.354
+F 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)-3.585 G -2.15 -.25
+(iv e)-3.585 H(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)-3.127 F .627(ginning `)
+-.15 F(`From<space>')-.74 E 3.127('i)-.74 G .627(nstead of `)-3.127 F
+(`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)-2.678 F
+-.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)-2.6 F
+(ug-)-.2 E 2.732(ging. Y)102 699 R .232(ou can set \231\255X \214lename\232 and a complete 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
+/F0 10/Times-Bold@0 SF 294.65(6C)72 60 S(hanges in Sendmail V)-294.65 E
+(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)-3.4 F 1.2 -.15(ve b)-.2 H .9
+(een added, man).15 F 3.4(yt)-.15 G 3.4(os)-3.4 G .9(upport ne)-3.4 F
+3.4(wf)-.25 G .9(eatures, others to allo)-3.4 F 3.4(wt)-.25 G(uning)-3.4
+E(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)-28.78 F 2.599(wb)-.25 G
+2.599(eal)-2.599 G .099(ist of alias \214les.)-2.599 F .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)-2.65 E
+(Anis:mail.aliases\232.)-.35 E 31(bI)102 305.4 S
+(nsist on a minimum number of disk blocks.)-31 E 29.33(CD)102 321.6 S
+(eli)-29.33 E -.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
+(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)-29.89 E
+.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.)-28.78 F .785(If you can')5.785 F 3.285<748c>-.18
+G .786(nd a local user name and this option is enabled,)-3.285 F .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
+(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.)-31 E(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
+(his option has been e)-32.67 E(xtended to allo)-.15 E 2.5(ws)-.25 G
+(etting of resolv)-2.5 E(er parameters.)-.15 E 33.22(jS)102 450.6 S
+(end errors in MIME-encapsulated format.)-33.22 E 32.11(JF)102 466.8 S
+(orw)-32.26 E(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.)-31 F .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.)-2.55 E 28.78(KC)102 499.2 S
+1.395(onnection cache lifetime.)-28.78 F 1.395(The amount of time an)
+6.395 F 3.895(yc)-.15 G 1.394(onnection will be permitted to sit)-3.895
+F(idle.)138 511.2 Q 33.22(lE)102 527.4 S .333(nable Errors-T)-33.22 F
+.333(o: header)-.8 F 5.334(.T)-.55 G .334
+(hese headers violate RFC 1123; this option is included to pro-)-5.334 F
+(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\).)-28.78 E 31
+(pP)102 571.8 S(ri)-31 E -.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)-2.5 E(er less friendly)-.15 E(.)-.65 E 32.67(rT)102 588
+S .67(his option has been e)-32.67 F .67(xtended to allo)-.15 F 3.17
+<778c>-.25 G .67(ner grained control o)-3.17 F -.15(ve)-.15 G 3.17(rt)
+.15 G 3.17(imeouts. F)-3.17 F .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')-29.33 E 11.797(tp)-.18 G 9.297
+(rune route-addrs.)-11.797 F(Normally)14.297 E 11.797(,i)-.65 G 11.797
+(fv)-11.797 G 9.297(ersion 8 sees an address lik)-11.947 F(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)-3.755 G 1.255(uch as it can \(up to)-3.755 F
+(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)-29.89 F 3.985(oS)-.8 G 1.485
+(ender\232 timeout has been e)-3.985 F 1.485(xtended to allo)-.15 F
+3.986(ws)-.25 G 1.486(peci\214cation of a w)-3.986 F(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
+(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.)-28.78 E(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
+/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(7)
+294.65 E/F1 10/Times-Roman@0 SF 28.78(VF)102 96 S .758(allback `)-28.93
+F(`MX')-.74 E 3.258('h)-.74 G 3.258(ost. This)-3.258 F .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
+(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)-28.78 G .566(et, assume that if you are the best MX host for a host, you should send directly to that)
+-3.066 F 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)-31 G .258
+(ot run eight bit clean.)-2.758 F -.7(Te)5.258 G(chnically).7 E 2.758
+(,y)-.65 G .258(ou ha)-2.758 F .558 -.15(ve t)-.2 H 2.758(oa).15 G .259
+(ssert this option to be RFC 821 com-)-2.758 F(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
+(characters; this is no)138 228.6 Q 2.5(ws)-.25 G
+(ettable to an arbitrary v)-2.5 E(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)-5 G(ill f)-2.5 E
+(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.)-2.5 E(Useful on the *\214le* mailer)
+5 E(.)-.55 E 17.86(F=c Strip)102 277.2 R .68(all comments from addresses; this should only be used as a last resort when dealing)
+3.18 F(with crank)138 289.2 Q 2.5(ym)-.15 G(ailers.)-2.5 E 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)-2.88 F -.15(ve)-.4 G .379(lope sender).15
+F 2.879(,e)-.4 G -.15(ve)-3.129 G 2.879(nw).15 G .379(hen running SMTP)
+-2.879 F 5.379(.T)-1.11 G .379(his violates)-5.379 F(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)-5.198 G .698 -.25(ow d)-2.698 H .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
+(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)-2.647 E(-)-.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
+(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)-2.693 F
+(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)
+-3.069 F 3.068(wt)-.25 G .568(he con\214guration \214le)-3.068 F
+(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)-3.25 G .75(efer macro e)-3.25 F -.25(va)-.25 G 3.25
+(luation. Normally).25 F 3.25(,m)-.65 G(acros)-3.25 E .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)-2.5 E(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
+(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
+/F0 10/Times-Bold@0 SF 294.65(8C)72 60 S(hanges in Sendmail V)-294.65 E
+(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
+(ed for sendmail')-.15 E 2.5(sd)-.55 G(edicated use in future releases.)
+-2.5 E
+(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
+(he number of)-3.3 F .712(recipients more important than the size of the 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 `)-3.2 F .701
+(`Full Name <email address>')-.74 F 3.201('s)-.74 G .701(yntax w)-3.201
+F .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.)-2.506 F .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)
+-5.15 E(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)
+-3.101 F(or a :include: \214le respecti)102 409.8 Q -.15(ve)-.25 G(ly)
+.15 E 5(.P)-.65 G(re)-5 E(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
+(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)-2.65 E 2.5(w.)-.25 G(forw)-2.5 E
+(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)-3.164 F
+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)
+-2.5 E 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)
+-2.599 G .1(ts `)-2.6 F(`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
+(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:)-2.65 E -.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
+/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(9)
+294.65 E 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)
+-2.5 E .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)-2.96 F .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)-5.182 G .183(ould pretty much read an)-2.783 F 2.683<798c>-.15 G
+.183(le it could get to as root, which e)-2.683 F .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
+(\("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)-2.5 E
+(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)-2.96 F -.2
+(vo)-.4 G -.1(ke).2 G 2.96(db).1 G 2.96(yt)-2.96 G(hat)-2.96 E(.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)-2.816 G .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)-2.966 F 2.966(yh)-.15 G -2.25 -.2(av e)-2.966 H .466
+(an "appro)3.166 F -.15(ve)-.15 G 2.966(ds).15 G .466
+(hell", that is, a shell listed)-2.966 F(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)-4.03 F 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)-4.03 F(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(Sendmail writes a /etc/sendmail.pid \214le with the current process id and the current 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.)-3.008 F -.15(Fo)
+5.508 G 3.008(re).15 G .508(xample, tw)-3.158 F 3.008(op)-.1 G .508
+(eople forw)-3.008 F .508(arding their email to |submit)-.1 F
+(will be treated as tw)102 421.8 Q 2.5(or)-.1 G(ecipients.)-2.5 E .721(The mailstats program prints mailer 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)-2.5 E(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)-2.5 E 2.5(wr)-.25 G -.25(ew)-2.5 G
+(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.)-3.305 F .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
+(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.)-3.319 F .819
+(This w)5.819 F .82(ould allo)-.1 F 3.32(wM)-.25 G .82(IME con)-3.32 F
-.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
+(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.)-3.279 F .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 modern 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
+/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)-5.174 F .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)-2.674 F(vided.)-.15 E F0
+2.5(3.3. Mor)87 120 R 2.5(eC)-.18 G(ontr)-2.5 E(ol of Local Addr)-.18 E
+(esses)-.18 E F1 .943(Currently some addresses are declared as \231local\232 and 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)
+-3.455 F 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)-2.811 F .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.)-2.5 E F0 2.5(3.4. Mor)87 196.2 R 2.5(eR)-.18 G
+(un-T)-2.5 E(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 of \214le locking)
+-2.516 F .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.)-2.5 E(Similarly)127 252.6 Q 3.413(,s)-.65
+G .913(ome options are currently o)-3.413 F -.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)-2.5 E(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.)
+-3.649 F(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
+(arning message to the system postmaster)-.1 F 5.57(.S)-.55 G(imi-)-5.57
+E(larly)102 345 Q 2.558(,s)-.65 G .057
+(ome errors should not be triggered if the)-2.558 F 2.557(ya)-.15 G .057
+(re in aliases during an alias \214le reb)-2.557 F .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
+(This should be)6.232 F(con)102 409.2 Q -.15(ve)-.4 G .492(rted to long term status 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)-3.367 G .867(imestamped so the)
+-3.367 F 3.367(yc)-.15 G .867(an time out.)-3.367 F .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)-2.5
+G(ueue runs on a per)-2.5 E(-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)-3.318 F .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)-3.232 F 1.032 -.15(ve i)-.2 H 3.232(tf).15
+G .732(ail, e)-3.332 F -.15(ve)-.25 G 3.232(nt).15 G .732
+(hough if you tried ag)-3.232 F .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
+(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)-2.638 F 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,)-2.638 E F1(4.2)2.638 E(Berk)123 637.8 Q(ele)-.1 E 2.5
+(yS)-.15 G(oftw)-2.5 E(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)-5.384 G .383(llman In)-2.884 F 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.)-3.645 F(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
+/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(11)
+289.65 E/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)-3.482 F .563(\(or The P)123 108 R
+(ostmaster')-.8 E 3.063(sL)-.4 G .563(ast W)-3.063 F .564(ill and T)-.55
+F(estament\).)-.92 E F1 .564(Lennart Lo)5.564 F -.5(..)-5 -6 O 3.064
+(vstrand. Department)1 6 N .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(..)-5 -6 O 1.266
+(ping, Sweden, Report no. LiTH-ID)1 6 N(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
+(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
+(R. Braden, Editor)123 200.4 Q 5(.O)-.55 G(ctober 1989.)-5 E([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
+([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.)-5 E([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
+(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/doc/intro/Makefile b/doc/intro/Makefile
index 939cd6c..6369a4a 100644
--- a/doc/intro/Makefile
+++ b/doc/intro/Makefile
@@ -1,4 +1,4 @@
-# @(#)Makefile 8.2 (Berkeley) 2/28/94
+# @(#)Makefile 8.2 (Berkeley) 2/28/1994
DIR= smm/09.sendmail
SRCS= intro.me
diff --git a/doc/intro/intro.me b/doc/intro/intro.me
index 0406bb1..03cfa33 100644
--- a/doc/intro/intro.me
+++ b/doc/intro/intro.me
@@ -1,36 +1,14 @@
-.\" 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.
.\"
-.\" @(#)intro.me 8.2 (Berkeley) 11/27/93
+.\" @(#)intro.me 8.7 (Berkeley) 5/19/1998
.\"
.\" pic -Pxx intro.me | ditroff -me -Pxx
.eh 'SMM:9-%''SENDMAIL \*- An Internetwork Mail Router'
diff --git a/doc/intro/intro.ps b/doc/intro/intro.ps
index 57c4216..62b686f 100644
--- a/doc/intro/intro.ps
+++ b/doc/intro/intro.ps
@@ -1,15 +1,16 @@
%!PS-Adobe-3.0
-%%Creator: groff version 1.08
+%%Creator: groff version 1.10
+%%CreationDate: Tue Dec 29 09:59:21 1998
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Italic
%%+ font Times-Bold
-%%DocumentSuppliedResources: procset grops 1.08 0
+%%DocumentSuppliedResources: procset grops 1.10 0
%%Pages: 13
%%PageOrder: Ascend
%%Orientation: Portrait
%%EndComments
%%BeginProlog
-%%BeginResource: procset grops 1.08 0
+%%BeginResource: procset grops 1.10 0
/setpacking where{
pop
currentpacking
@@ -46,7 +47,7 @@ dup setfont
/MF{
findfont
[5 2 roll
-0 3 1 roll
+0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
@@ -55,6 +56,9 @@ dup setfont
/RES 0 def
/PL 0 def
/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
@@ -165,1131 +169,1170 @@ setpacking
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Italic
%%IncludeResource: font Times-Bold
-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
+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/.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
+/.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
+/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(SENDMAIL \212 An Internetw)159.172 141 Q
-(ork Mail Router)-.14 E/F1 10/Times-Roman@0 SF(Eric Allman*)260.92 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.41(Routing mail through a heterogenous internet presents man)112 243.6 R
-3.91(yn)-.15 G 1.91 -.25(ew p)372.55 243.6 T 3.91(roblems. Among).25 F .297
+(ork Mail Router)-.14 E/F1 10/Times-Roman@0 SF(Eric Allman*)260.92 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.41
+(Routing mail through a heterogenous internet presents man)112 243.6 R
+3.91(yn)-.15 G 1.91 -.25(ew p)-3.91 H 3.91(roblems. Among).25 F .297
(the w)112 255.6 R .297(orst of these is that of address mapping.)-.1 F
-(Historically)5.297 E 2.797(,t)-.65 G .298(his has been handled on an)355.03
-255.6 R F2(ad hoc)112 267.6 Q F1 2.5(basis. Ho)2.5 F(we)-.25 E -.15(ve)-.25 G
-.8 -.4(r, t).15 H(his approach has become unmanageable as internets gro).4 E
--.65(w.)-.25 G .15(Sendmail acts a uni\214ed "post of)112 283.8 R .15
-(\214ce" to which all mail can be submitted.)-.25 F .15(Address inter)5.15 F(-)
--.2 E .426(pretation is controlled by a production system, which can parse bot\
-h domain-based ad-)112 295.8 R .423(dressing and old-style)112 307.8 R F2 .423
-(ad hoc)2.923 F F1 2.923(addresses. The)2.923 F .422(production system is po)
-2.922 F .422(werful enough to)-.25 F(re)112 319.8 Q 1.357(write addresses in t\
-he message header to conform to the standards of a number of)-.25 F 1.15
-(common tar)112 331.8 R 1.15(get netw)-.18 F 1.15
+(Historically)5.297 E 2.797(,t)-.65 G .298(his has been handled on an)
+-2.797 F F2(ad hoc)112 267.6 Q F1 2.5(basis. Ho)2.5 F(we)-.25 E -.15(ve)
+-.25 G .8 -.4(r, t).15 H
+(his approach has become unmanageable as internets gro).4 E -.65(w.)-.25
+G .15(Sendmail acts a uni\214ed "post of)112 283.8 R .15
+(\214ce" to which all mail can be submitted.)-.25 F .15(Address inter)
+5.15 F(-)-.2 E .426(pretation is controlled by a production system, which can parse both domain-based ad-)
+112 295.8 R .423(dressing and old-style)112 307.8 R F2 .423(ad hoc)2.923
+F F1 2.923(addresses. The)2.923 F .422(production system is po)2.922 F
+.422(werful enough to)-.25 F(re)112 319.8 Q 1.357(write addresses in the message header to conform to the standards of a number of)
+-.25 F 1.15(common tar)112 331.8 R 1.15(get netw)-.18 F 1.15
(orks, including old \(NCP/RFC733\) Arpanet, ne)-.1 F 3.65(w\()-.25 G
-(TCP/RFC822\))405.65 331.8 Q 1.119(Arpanet, UUCP)112 343.8 R 3.619(,a)-1.11 G
-1.119(nd Phonenet.)186.448 343.8 R 1.119(Sendmail also implements an SMTP serv)
-6.119 F(er)-.15 E 3.619(,m)-.4 G(essage)437.9 343.8 Q(queueing, and aliasing.)
-112 355.8 Q F2(Sendmail)97 400.2 Q F1 .501(implements a general internetw)3 F
-.501(ork mail routing f)-.1 F(acility)-.1 E 3.001(,f)-.65 G .501
-(eaturing aliasing and forw)369.847 400.2 R(arding,)-.1 E
-(automatic routing to netw)72 412.2 Q(ork g)-.1 E(ate)-.05 E -.1(wa)-.25 G
-(ys, and \215e).1 E(xible con\214guration.)-.15 E .624(In a simple netw)97
-428.4 R .624(ork, each node has an address, and resources can be identi\214ed \
-with a host-resource)-.1 F .374(pair; in particular)72 440.4 R 2.874(,t)-.4 G
-.374(he mail system can refer to users using a host-username pair)149.932 440.4
-R 5.374(.H)-.55 G .375(ost names and numbers)409.276 440.4 R(ha)72 452.4 Q .3
--.15(ve t)-.2 H 2.5(ob).15 G 2.5(ea)108.31 452.4 S
-(dministered by a central authority)119.69 452.4 Q 2.5(,b)-.65 G
-(ut usernames can be assigned locally to each host.)263.82 452.4 Q .649
+(TCP/RFC822\))-3.65 E 1.119(Arpanet, UUCP)112 343.8 R 3.619(,a)-1.11 G
+1.119(nd Phonenet.)-3.619 F 1.119(Sendmail also implements an SMTP serv)
+6.119 F(er)-.15 E 3.619(,m)-.4 G(essage)-3.619 E
+(queueing, and aliasing.)112 355.8 Q F2(Sendmail)97 400.2 Q F1 .501
+(implements a general internetw)3 F .501(ork mail routing f)-.1 F
+(acility)-.1 E 3.001(,f)-.65 G .501(eaturing aliasing and forw)-3.001 F
+(arding,)-.1 E(automatic routing to netw)72 412.2 Q(ork g)-.1 E(ate)-.05
+E -.1(wa)-.25 G(ys, and \215e).1 E(xible con\214guration.)-.15 E .624
+(In a simple netw)97 428.4 R .624(ork, each node has an address, and resources can be identi\214ed with a host-resource)
+-.1 F .374(pair; in particular)72 440.4 R 2.874(,t)-.4 G .374
+(he mail system can refer to users using a host-username pair)-2.874 F
+5.374(.H)-.55 G .375(ost names and numbers)-5.374 F(ha)72 452.4 Q .3
+-.15(ve t)-.2 H 2.5(ob).15 G 2.5(ea)-2.5 G
+(dministered by a central authority)-2.5 E 2.5(,b)-.65 G
+(ut usernames can be assigned locally to each host.)-2.7 E .649
(In an internet, multiple netw)97 468.6 R .649(orks with dif)-.1 F .649
(ferent characterstics and managements must communicate.)-.25 F .389
(In particular)72 480.6 R 2.889(,t)-.4 G .389
-(he syntax and semantics of resource identi\214cation change.)129.308 480.6 R
-.39(Certain special cases can be han-)5.389 F 1.033(dled tri)72 492.6 R 1.033
-(vially by)-.25 F F2 1.033(ad hoc)3.533 F F1 1.032(techniques, such as pro)
-3.533 F 1.032(viding netw)-.15 F 1.032
-(ork names that appear local to hosts on other)-.1 F(netw)72 504.6 Q 1.454
-(orks, as with the Ethernet at Xerox P)-.1 F 3.955(ARC. Ho)-.92 F(we)-.25 E
--.15(ve)-.25 G 4.755 -.4(r, t).15 H 1.455(he general case is e).4 F 1.455
-(xtremely comple)-.15 F 3.955(x. F)-.15 F(or)-.15 E -.15(ex)72 516.6 S .192
-(ample, some netw).15 F .192(orks require point-to-point routing, which simpli\
-\214es the database update problem since)-.1 F .618(only adjacent hosts must b\
-e entered into the system tables, while others use end-to-end addressing.)72
-528.6 R(Some)5.618 E(netw)72 540.6 Q .123(orks use a left-associati)-.1 F .423
--.15(ve s)-.25 H .123(yntax and others use a right-associati).15 F .423 -.15
-(ve s)-.25 H .123(yntax, causing ambiguity in mix).15 F(ed)-.15 E(addresses.)72
-552.6 Q .678(Internet standards seek to eliminate these problems.)97 568.8 R
-(Initially)5.678 E 3.178(,t)-.65 G .679(hese proposed e)353.134 568.8 R .679
-(xpanding the address)-.15 F .65(pairs to address triples, consisting of {netw)
-72 580.8 R .649(ork, host, resource} triples.)-.1 F(Netw)5.649 E .649
+(he syntax and semantics of resource identi\214cation change.)-2.889 F
+.39(Certain special cases can be han-)5.389 F 1.033(dled tri)72 492.6 R
+1.033(vially by)-.25 F F2 1.033(ad hoc)3.533 F F1 1.032
+(techniques, such as pro)3.533 F 1.032(viding netw)-.15 F 1.032
+(ork names that appear local to hosts on other)-.1 F(netw)72 504.6 Q
+1.454(orks, as with the Ethernet at Xerox P)-.1 F 3.955(ARC. Ho)-.92 F
+(we)-.25 E -.15(ve)-.25 G 4.755 -.4(r, t).15 H 1.455
+(he general case is e).4 F 1.455(xtremely comple)-.15 F 3.955(x. F)-.15
+F(or)-.15 E -.15(ex)72 516.6 S .192(ample, some netw).15 F .192(orks require point-to-point routing, which simpli\214es the database update problem since)
+-.1 F .618(only adjacent hosts must be entered into the system tables, while others use end-to-end addressing.)
+72 528.6 R(Some)5.618 E(netw)72 540.6 Q .123(orks use a left-associati)
+-.1 F .423 -.15(ve s)-.25 H .123(yntax and others use a right-associati)
+.15 F .423 -.15(ve s)-.25 H .123(yntax, causing ambiguity in mix).15 F
+(ed)-.15 E(addresses.)72 552.6 Q .678
+(Internet standards seek to eliminate these problems.)97 568.8 R
+(Initially)5.678 E 3.178(,t)-.65 G .679(hese proposed e)-3.178 F .679
+(xpanding the address)-.15 F .65
+(pairs to address triples, consisting of {netw)72 580.8 R .649
+(ork, host, resource} triples.)-.1 F(Netw)5.649 E .649
(ork numbers must be uni)-.1 F -.15(ve)-.25 G -.2(r-).15 G 1.452
-(sally agreed upon, and hosts can be assigned locally on each netw)72 592.8 R
-3.952(ork. The)-.1 F(user)3.952 E(-le)-.2 E -.15(ve)-.25 G 3.952(lp).15 G 1.452
-(resentation w)440.718 592.8 R(as)-.1 E 2.352(quickly e)72 604.8 R 2.352(xpand\
-ed to address domains, comprised of a local resource identi\214cation and a hi\
-erarchical)-.15 F .256(domain speci\214cation with a common static root.)72
-616.8 R .257(The domain technique separates the issue of ph)5.257 F .257
-(ysical v)-.05 F(er)-.15 E(-)-.2 E .807(sus logical addressing.)72 628.8 R -.15
-(Fo)5.807 G 3.307(re).15 G .807
-(xample, an address of the form \231eric@a.cc.berk)191.028 628.8 R(ele)-.1 E
--.65(y.)-.15 G .807(arpa\232 describes only the).65 F(logical or)72 640.8 Q
--.05(ga)-.18 G(nization of the address space.).05 E F2(Sendmail)97 657 Q F1
-.493(is intended to help bridge the g)2.992 F .493(ap between the totally)-.05
-F F2 .493(ad hoc)2.993 F F1 -.1(wo)2.993 G .493(rld of netw).1 F .493
-(orks that kno)-.1 F(w)-.25 E .855
+(sally agreed upon, and hosts can be assigned locally on each netw)72
+592.8 R 3.952(ork. The)-.1 F(user)3.952 E(-le)-.2 E -.15(ve)-.25 G 3.952
+(lp).15 G 1.452(resentation w)-3.952 F(as)-.1 E 2.352(quickly e)72 604.8
+R 2.352(xpanded to address domains, comprised of a local resource identi\214cation and a hierarchical)
+-.15 F .256(domain speci\214cation with a common static root.)72 616.8 R
+.257(The domain technique separates the issue of ph)5.257 F .257
+(ysical v)-.05 F(er)-.15 E(-)-.2 E .807(sus logical addressing.)72 628.8
+R -.15(Fo)5.807 G 3.307(re).15 G .807
+(xample, an address of the form \231eric@a.cc.berk)-3.457 F(ele)-.1 E
+-.65(y.)-.15 G .807(arpa\232 describes only the).65 F(logical or)72
+640.8 Q -.05(ga)-.18 G(nization of the address space.).05 E F2(Sendmail)
+97 657 Q F1 .493(is intended to help bridge the g)2.992 F .493
+(ap between the totally)-.05 F F2 .493(ad hoc)2.993 F F1 -.1(wo)2.993 G
+.493(rld of netw).1 F .493(orks that kno)-.1 F(w)-.25 E .855
(nothing of each other and the clean, tightly-coupled w)72 669 R .854
-(orld of unique netw)-.1 F .854(ork numbers.)-.1 F .854(It can accept old)5.854
-F .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/F3 8/Times-Roman@0 SF .557
-(*A considerable part of this w)93.6 690.6 R .557(ork w)-.08 F .557
-(as done while under the emplo)-.08 F 2.557(yo)-.08 G 2.556(ft)323.116 690.6 S
-.556(he INGRES Project at the Uni)330.56 690.6 R -.12(ve)-.2 G .556
-(rsity of California at).12 F(Berk)72 700.2 Q(ele)-.08 E 2(ya)-.12 G
-(nd at Britton Lee.)106.232 700.2 Q/F4 10/Times-Bold@0 SF
-(SENDMAIL \212 An Inter)72 756 Q(netw)-.15 E(ork Mail Router)-.1 E(SMM:9-1)
-462.9 756 Q EP
+(orld of unique netw)-.1 F .854(ork numbers.)-.1 F .854
+(It can accept old)5.854 F .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/F3 8/Times-Roman@0 SF .557(*A considerable part of this w)93.6
+690.6 R .557(ork w)-.08 F .557(as done while under the emplo)-.08 F
+2.557(yo)-.08 G 2.556(ft)-2.557 G .556(he INGRES Project at the Uni)
+-2.556 F -.12(ve)-.2 G .556(rsity of California at).12 F(Berk)72 700.2 Q
+(ele)-.08 E 2(ya)-.12 G(nd at Britton Lee.)-2 E/F4 10/Times-Bold@0 SF
+(SENDMAIL \212 An Inter)72 756 Q(netw)-.15 E(ork Mail Router)-.1 E
+(SMM:9-1)194.78 E EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF 192.28(SMM:9-2 SENDMAIL)72 60 R 2.5<8a41>2.5 G 2.5(nI)
-383.99 60 S(nter)395.94 60 Q(netw)-.15 E(ork Mail Router)-.1 E/F1 10
-/Times-Roman@0 SF .632(arbitrary address syntax)72 96 R .633(es, resolving amb\
-iguities using heuristics speci\214ed by the system administrator)-.15 F 3.133
-(,a)-.4 G(s)500.11 96 Q .348(well as domain-based addressing.)72 108 R .347
-(It helps guide the con)5.347 F -.15(ve)-.4 G .347
-(rsion of message formats between disparate net-).15 F -.1(wo)72 120 S 3.394
-(rks. In).1 F(short,)3.394 E/F2 10/Times-Italic@0 SF(sendmail)3.394 E F1 .894
-(is designed to assist a graceful transition to consistent internetw)3.394 F
-.895(ork addressing)-.1 F(schemes.)72 132 Q .153
-(Section 1 discusses the design goals for)97 160.2 R F2(sendmail)2.653 E F1
-5.153(.S)C .152(ection 2 gi)308.214 160.2 R -.15(ve)-.25 G 2.652(sa).15 G 2.652
-(no)370.76 160.2 S -.15(ve)383.262 160.2 S(rvie).15 E 2.652(wo)-.25 G 2.652(ft)
-422.724 160.2 S .152(he basic functions)431.486 160.2 R .644(of the system.)72
-172.2 R .644(In section 3, details of usage are discussed.)5.644 F .644
-(Section 4 compares)5.644 F F2(sendmail)3.144 E F1 .645(to other internet)3.144
-F(mail routers, and an e)72 184.2 Q -.25(va)-.25 G(luation of).25 E F2
-(sendmail)2.5 E F1(is gi)2.5 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(ns)283.3 184.2 S
-(ection 5, including future plans.)294.69 184.2 Q F0 2.5(1. DESIGN)72 208.2 R
-(GO)2.5 E(ALS)-.4 E F1(Design goals for)112 224.4 Q F2(sendmail)2.5 E F1
-(include:)2.5 E 12.5(\(1\) Compatibility)92 240.6 R 1.363(with the e)3.864 F
-1.363(xisting mail programs, including Bell v)-.15 F 1.363
-(ersion 6 mail, Bell v)-.15 F 1.363(ersion 7)-.15 F 1.202(mail [UNIX83], Berk)
-118.66 252.6 R(ele)-.1 E(y)-.15 E F2(Mail)3.702 E F1 1.202
-([Shoens79], BerkNet mail [Schmidt79], and hopefully UUCP)3.702 F(mail [No)
-118.66 264.6 Q(witz78a, No)-.25 E 2.5(witz78b]. ARP)-.25 F(ANET mail [Crock)
--.92 E(er77a, Postel77] w)-.1 E(as also required.)-.1 E 12.5(\(2\) Reliability)
-92 280.8 R 4.003(,i)-.65 G 4.003(nt)169.523 280.8 S 1.502
-(he sense of guaranteeing that e)181.306 280.8 R -.15(ve)-.25 G 1.502
-(ry message is correctly deli).15 F -.15(ve)-.25 G 1.502(red or at least).15 F
-.368
-(brought to the attention of a human for correct disposal; no message should e)
-118.66 292.8 R -.15(ve)-.25 G 2.868(rb).15 G 2.868(ec)452.252 292.8 S
-(ompletely)464 292.8 Q 2.541(lost. This)118.66 304.8 R .041(goal w)2.541 F .041
-(as considered essential because of the emphasis on mail in our en)-.1 F 2.54
-(vironment. It)-.4 F 1.754
-(has turned out to be one of the hardest goals to satisfy)118.66 316.8 R 4.255
-(,e)-.65 G 1.755(specially in the f)363.75 316.8 R 1.755(ace of the man)-.1 F
-(y)-.15 E .978(anomalous message formats produced by v)118.66 328.8 R .977
-(arious ARP)-.25 F .977(ANET sites.)-.92 F -.15(Fo)5.977 G 3.477(re).15 G .977
-(xample, certain sites)420.116 328.8 R .069
-(generate improperly formated addresses, occasionally causing error)118.66
-340.8 R .069(-message loops.)-.2 F .069(Some hosts)5.069 F .063(use blanks in \
-names, causing problems with UNIX mail programs that assume that an address is)
+/F0 10/Times-Bold@0 SF 192.28(SMM:9-2 SENDMAIL)72 60 R 2.5<8a41>2.5 G
+2.5(nI)-2.5 G(nter)-2.5 E(netw)-.15 E(ork Mail Router)-.1 E/F1 10
+/Times-Roman@0 SF .632(arbitrary address syntax)72 96 R .633(es, resolving ambiguities using heuristics speci\214ed by the system administrator)
+-.15 F 3.133(,a)-.4 G(s)-3.133 E .348(well as domain-based addressing.)
+72 108 R .347(It helps guide the con)5.347 F -.15(ve)-.4 G .347
+(rsion of message formats between disparate net-).15 F -.1(wo)72 120 S
+3.394(rks. In).1 F(short,)3.394 E/F2 10/Times-Italic@0 SF(sendmail)3.394
+E F1 .894
+(is designed to assist a graceful transition to consistent internetw)
+3.394 F .895(ork addressing)-.1 F(schemes.)72 132 Q .153
+(Section 1 discusses the design goals for)97 160.2 R F2(sendmail)2.653 E
+F1 5.153(.S)C .152(ection 2 gi)-5.153 F -.15(ve)-.25 G 2.652(sa).15 G
+2.652(no)-2.652 G -.15(ve)-2.802 G(rvie).15 E 2.652(wo)-.25 G 2.652(ft)
+-2.652 G .152(he basic functions)-2.652 F .644(of the system.)72 172.2 R
+.644(In section 3, details of usage are discussed.)5.644 F .644
+(Section 4 compares)5.644 F F2(sendmail)3.144 E F1 .645
+(to other internet)3.144 F(mail routers, and an e)72 184.2 Q -.25(va)
+-.25 G(luation of).25 E F2(sendmail)2.5 E F1(is gi)2.5 E -.15(ve)-.25 G
+2.5(ni).15 G 2.5(ns)-2.5 G(ection 5, including future plans.)-2.5 E F0
+2.5(1. DESIGN)72 208.2 R(GO)2.5 E(ALS)-.4 E F1(Design goals for)112
+224.4 Q F2(sendmail)2.5 E F1(include:)2.5 E 12.5(\(1\) Compatibility)92
+240.6 R 1.363(with the e)3.864 F 1.363
+(xisting mail programs, including Bell v)-.15 F 1.363
+(ersion 6 mail, Bell v)-.15 F 1.363(ersion 7)-.15 F 1.202
+(mail [UNIX83], Berk)118.66 252.6 R(ele)-.1 E(y)-.15 E F2(Mail)3.702 E
+F1 1.202([Shoens79], BerkNet mail [Schmidt79], and hopefully UUCP)3.702
+F(mail [No)118.66 264.6 Q(witz78a, No)-.25 E 2.5(witz78b]. ARP)-.25 F
+(ANET mail [Crock)-.92 E(er77a, Postel77] w)-.1 E(as also required.)-.1
+E 12.5(\(2\) Reliability)92 280.8 R 4.003(,i)-.65 G 4.003(nt)-4.003 G
+1.502(he sense of guaranteeing that e)-4.003 F -.15(ve)-.25 G 1.502
+(ry message is correctly deli).15 F -.15(ve)-.25 G 1.502
+(red or at least).15 F .368(brought to the attention of a human for correct disposal; no message should e)
+118.66 292.8 R -.15(ve)-.25 G 2.868(rb).15 G 2.868(ec)-2.868 G
+(ompletely)-2.868 E 2.541(lost. This)118.66 304.8 R .041(goal w)2.541 F
+.041(as considered essential because of the emphasis on mail in our en)
+-.1 F 2.54(vironment. It)-.4 F 1.754
+(has turned out to be one of the hardest goals to satisfy)118.66 316.8 R
+4.255(,e)-.65 G 1.755(specially in the f)-4.255 F 1.755(ace of the man)
+-.1 F(y)-.15 E .978(anomalous message formats produced by v)118.66 328.8
+R .977(arious ARP)-.25 F .977(ANET sites.)-.92 F -.15(Fo)5.977 G 3.477
+(re).15 G .977(xample, certain sites)-3.627 F .069
+(generate improperly formated addresses, occasionally causing error)
+118.66 340.8 R .069(-message loops.)-.2 F .069(Some hosts)5.069 F .063(use blanks in names, causing problems with UNIX mail programs that assume that an address is)
118.66 352.8 R .111(one w)118.66 364.8 R 2.611(ord. The)-.1 F .111
(semantics of some \214elds are interpreted slightly dif)2.611 F .112
-(ferently by dif)-.25 F .112(ferent sites.)-.25 F(In)5.112 E(summary)118.66
-376.8 Q 3.023(,t)-.65 G .523(he obscure features of the ARP)163.533 376.8 R
-.523(ANET mail protocol really)-.92 F F2(ar)3.023 E(e)-.37 E F1 .522
-(used and are dif)3.023 F(\214cult)-.25 E(to support, b)118.66 388.8 Q
-(ut must be supported.)-.2 E 12.5(\(3\) Existing)92 405 R(softw)2.938 E .438
-(are to do actual deli)-.1 F -.15(ve)-.25 G .439(ry should be used whene).15 F
--.15(ve)-.25 G 2.939(rp).15 G 2.939(ossible. This)387.654 405 R .439(goal deri)
-2.939 F -.15(ve)-.25 G 2.939(sa).15 G(s)500.11 405 Q
-(much from political and practical considerations as technical.)118.66 417 Q
-12.5(\(4\) Easy)92 433.2 R -.15(ex)2.899 G .399(pansion to f).15 F .399
-(airly comple)-.1 F 2.898(xe)-.15 G -.4(nv)261.064 433.2 S .398
-(ironments, including multiple connections to a single net-).4 F -.1(wo)118.66
-445.2 S .115
-(rk type \(such as with multiple UUCP or Ether nets [Metcalfe76]\).).1 F .115
-(This goal requires consid-)5.115 F .587(eration of the contents of an address\
- as well as its syntax in order to determine which g)118.66 457.2 R(ate)-.05 E
--.1(wa)-.25 G(y).1 E 1.018(to use.)118.66 469.2 R -.15(Fo)6.018 G 3.518(re).15
-G 1.018(xample, the ARP)173.354 469.2 R 1.019
-(ANET is bringing up the TCP protocol to replace the old NCP)-.92 F 4.791
-(protocol. No)118.66 481.2 R 2.291(host at Berk)4.791 F(ele)-.1 E 4.791(yr)-.15
-G 2.291(uns both TCP and NCP)256.235 481.2 R 4.791(,s)-1.11 G 4.79(oi)369.37
-481.2 S 4.79(ti)381.94 481.2 S 4.79(sn)392.29 481.2 S 2.29
-(ecessary to look at the)405.97 481.2 R(ARP)118.66 493.2 Q .016
-(ANET host name to determine whether to route mail to an NCP g)-.92 F(ate)-.05
-E -.1(wa)-.25 G 2.517(yo).1 G 2.517(raT)435.569 493.2 S .017(CP g)454.483 493.2
-R(ate)-.05 E -.1(wa)-.25 G -.65(y.).1 G 12.5(\(5\) Con\214guration)92 509.4 R
-.145(should not be compiled into the code.)2.645 F 2.645(As)5.145 G .145
-(ingle compiled program should be able)346.905 509.4 R .91(to run as is at an)
-118.66 521.4 R 3.41(ys)-.15 G .91
-(ite \(barring such basic changes as the CPU type or the operating system\).)
-200.63 521.4 R 2.61 -.8(We h)118.66 533.4 T -2.25 -.2(av e).8 H 1.009
-(found this seemingly unimportant goal to be critical in real life.)3.71 F
-1.009(Besides the simple)6.009 F .66(problems that occur when an)118.66 545.4 R
-3.16(yp)-.15 G .66(rogram gets recompiled in a dif)249.84 545.4 R .66
-(ferent en)-.25 F .66(vironment, man)-.4 F 3.16(ys)-.15 G(ites)490.11 545.4 Q
-(lik)118.66 557.4 Q 2.5(et)-.1 G 2.5<6f99>138.84 557.4 S(\214ddle\232 with an)
-150.78 557.4 Q(ything that the)-.15 E 2.5(yw)-.15 G(ill be recompiling an)
-282.42 557.4 Q(yw)-.15 E(ay)-.1 E(.)-.65 E(\(6\))92 573.6 Q F2(Sendmail)118.66
-573.6 Q F1 .184(must be able to let v)2.684 F .184
-(arious groups maintain their o)-.25 F .184(wn mailing lists, and let indi)-.25
-F(viduals)-.25 E(specify their o)118.66 585.6 Q(wn forw)-.25 E
-(arding, without modifying the system alias \214le.)-.1 E 12.5(\(7\) Each)92
-601.8 R .313(user should be able to specify which mailer to e)2.813 F -.15(xe)
--.15 G .313(cute to process mail being deli).15 F -.15(ve)-.25 G .314(red for)
+(ferently by dif)-.25 F .112(ferent sites.)-.25 F(In)5.112 E(summary)
+118.66 376.8 Q 3.023(,t)-.65 G .523(he obscure features of the ARP)
+-3.023 F .523(ANET mail protocol really)-.92 F F2(ar)3.023 E(e)-.37 E F1
+.522(used and are dif)3.023 F(\214cult)-.25 E(to support, b)118.66 388.8
+Q(ut must be supported.)-.2 E 12.5(\(3\) Existing)92 405 R(softw)2.938 E
+.438(are to do actual deli)-.1 F -.15(ve)-.25 G .439
+(ry should be used whene).15 F -.15(ve)-.25 G 2.939(rp).15 G 2.939
+(ossible. This)-2.939 F .439(goal deri)2.939 F -.15(ve)-.25 G 2.939(sa)
+.15 G(s)-2.939 E
+(much from political and practical considerations as technical.)118.66
+417 Q 12.5(\(4\) Easy)92 433.2 R -.15(ex)2.899 G .399(pansion to f).15 F
+.399(airly comple)-.1 F 2.898(xe)-.15 G -.4(nv)-2.898 G .398
+(ironments, including multiple connections to a single net-).4 F -.1(wo)
+118.66 445.2 S .115
+(rk type \(such as with multiple UUCP or Ether nets [Metcalfe76]\).).1 F
+.115(This goal requires consid-)5.115 F .587(eration of the contents of an address as well as its syntax in order to determine which g)
+118.66 457.2 R(ate)-.05 E -.1(wa)-.25 G(y).1 E 1.018(to use.)118.66
+469.2 R -.15(Fo)6.018 G 3.518(re).15 G 1.018(xample, the ARP)-3.668 F
+1.019(ANET is bringing up the TCP protocol to replace the old NCP)-.92 F
+4.791(protocol. No)118.66 481.2 R 2.291(host at Berk)4.791 F(ele)-.1 E
+4.791(yr)-.15 G 2.291(uns both TCP and NCP)-4.791 F 4.791(,s)-1.11 G
+4.79(oi)-4.791 G 4.79(ti)-4.79 G 4.79(sn)-4.79 G 2.29
+(ecessary to look at the)-4.79 F(ARP)118.66 493.2 Q .016
+(ANET host name to determine whether to route mail to an NCP g)-.92 F
+(ate)-.05 E -.1(wa)-.25 G 2.517(yo).1 G 2.517(raT)-2.517 G .017(CP g)
+-2.517 F(ate)-.05 E -.1(wa)-.25 G -.65(y.).1 G 12.5
+(\(5\) Con\214guration)92 509.4 R .145
+(should not be compiled into the code.)2.645 F 2.645(As)5.145 G .145
+(ingle compiled program should be able)-2.645 F .91(to run as is at an)
+118.66 521.4 R 3.41(ys)-.15 G .91(ite \(barring such basic changes as the CPU type or the operating system\).)
+-3.41 F 2.61 -.8(We h)118.66 533.4 T -2.25 -.2(av e).8 H 1.009
+(found this seemingly unimportant goal to be critical in real life.)3.71
+F 1.009(Besides the simple)6.009 F .66(problems that occur when an)
+118.66 545.4 R 3.16(yp)-.15 G .66(rogram gets recompiled in a dif)-3.16
+F .66(ferent en)-.25 F .66(vironment, man)-.4 F 3.16(ys)-.15 G(ites)
+-3.16 E(lik)118.66 557.4 Q 2.5(et)-.1 G 2.5<6f99>-2.5 G
+(\214ddle\232 with an)-2.5 E(ything that the)-.15 E 2.5(yw)-.15 G
+(ill be recompiling an)-2.5 E(yw)-.15 E(ay)-.1 E(.)-.65 E(\(6\))92 573.6
+Q F2(Sendmail)15 E F1 .184(must be able to let v)2.684 F .184
+(arious groups maintain their o)-.25 F .184
+(wn mailing lists, and let indi)-.25 F(viduals)-.25 E(specify their o)
+118.66 585.6 Q(wn forw)-.25 E
+(arding, without modifying the system alias \214le.)-.1 E 12.5
+(\(7\) Each)92 601.8 R .313
+(user should be able to specify which mailer to e)2.813 F -.15(xe)-.15 G
+.313(cute to process mail being deli).15 F -.15(ve)-.25 G .314(red for)
.15 F 3.098(him. This)118.66 613.8 R .598(feature allo)3.098 F .598
(ws users who are using specialized mailers that use a dif)-.25 F .598
(ferent format to)-.25 F -.2(bu)118.66 625.8 S .25(ild their en).2 F .25
(vironment without changing the system, and f)-.4 F .25
-(acilitates specialized functions \(such)-.1 F(as returning an \231I am on v)
-118.66 637.8 Q(acation\232 message\).)-.25 E 12.5(\(8\) Netw)92 654 R 1.553
-(ork traf)-.1 F 1.552(\214c should be minimized by batching addresses to a sin\
-gle host where possible,)-.25 F(without assistance from the user)118.66 666 Q
-(.)-.55 E .374(These goals moti)112 682.2 R -.25(va)-.25 G .374
+(acilitates specialized functions \(such)-.1 F
+(as returning an \231I am on v)118.66 637.8 Q(acation\232 message\).)
+-.25 E 12.5(\(8\) Netw)92 654 R 1.553(ork traf)-.1 F 1.552(\214c should be minimized by batching addresses to a single host where possible,)
+-.25 F(without assistance from the user)118.66 666 Q(.)-.55 E .374
+(These goals moti)112 682.2 R -.25(va)-.25 G .374
(ted the architecture illustrated in \214gure 1.).25 F .375
-(The user interacts with a mail gen-)5.375 F .491(erating and sending program.)
-87 694.2 R .491(When the mail is created, the generator calls)5.491 F F2
-(sendmail)2.99 E F1 2.99(,w)C .49(hich routes the)444.14 694.2 R .84
+(The user interacts with a mail gen-)5.375 F .491
+(erating and sending program.)87 694.2 R .491
+(When the mail is created, the generator calls)5.491 F F2(sendmail)2.99
+E F1 2.99(,w)C .49(hich routes the)-2.99 F .84
(message to the correct mailer\(s\).)87 706.2 R .841
(Since some of the senders may be netw)5.84 F .841(ork serv)-.1 F .841
-(ers and some of the)-.15 F(mailers may be netw)87 718.2 Q(ork clients,)-.1 E
-F2(sendmail)2.5 E F1(may be used as an internet mail g)2.5 E(ate)-.05 E -.1(wa)
--.25 G -.65(y.).1 G EP
+(ers and some of the)-.15 F(mailers may be netw)87 718.2 Q(ork clients,)
+-.1 E F2(sendmail)2.5 E F1(may be used as an internet mail g)2.5 E(ate)
+-.05 E -.1(wa)-.25 G -.65(y.).1 G EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(SENDMAIL \212 An Inter)72 60 Q(netw)-.15 E
-(ork Mail Router)-.1 E(SMM:9-3)462.9 60 Q .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(sender1)164.45 155.6 Q 144 135.6 144
-171.6 DL 216 135.6 144 135.6 DL 216 171.6 216 135.6 DL 144 171.6 216 171.6 DL
-(sender2)272.45 155.6 Q 252 135.6 252 171.6 DL 324 135.6 252 135.6 DL 324 171.6
-324 135.6 DL 252 171.6 324 171.6 DL(sender3)380.45 155.6 Q 360 135.6 360 171.6
-DL 432 135.6 360 135.6 DL 432 171.6 432 135.6 DL 360 171.6 432 171.6 DL 288
-207.6 288 171.6 DL 288 207.6 286.2 200.4 DL 288 207.6 289.8 200.4 DL(sendmail)
-269.945 227.6 Q 216 207.6 216 243.6 DL 360 207.6 216 207.6 DL 360 243.6 360
-207.6 DL 216 243.6 360 243.6 DL 288 279.6 288 243.6 DL 288 279.6 286.2 272.4 DL
-288 279.6 289.8 272.4 DL(mailer1)164.725 299.6 Q 144 279.6 144 315.6 DL 216
-279.6 144 279.6 DL 216 315.6 216 279.6 DL 144 315.6 216 315.6 DL(mailer2)
-272.725 299.6 Q 252 279.6 252 315.6 DL 324 279.6 252 279.6 DL 324 315.6 324
-279.6 DL 252 315.6 324 315.6 DL(mailer3)380.725 299.6 Q 360 279.6 360 315.6 DL
-432 279.6 360 279.6 DL 432 315.6 432 279.6 DL 360 315.6 432 315.6 DL 252 207.6
-180 171.6 DL 252 207.6 244.728 206.016 DL 252 207.6 246.384 202.776 DL 324
-207.6 396 171.6 DL 324 207.6 329.616 202.776 DL 324 207.6 331.272 206.016 DL
-180 279.6 252 243.6 DL 180 279.6 185.616 274.776 DL 180 279.6 187.272 278.016
-DL 396 279.6 324 243.6 DL 396 279.6 388.728 278.016 DL 396 279.6 390.384
-274.776 DL(Figure 1 \212 Sendmail System Structure.)208 346.8 Q 77 358.8 72
-358.8 DL 79 358.8 74 358.8 DL 84 358.8 79 358.8 DL 89 358.8 84 358.8 DL 94
-358.8 89 358.8 DL 99 358.8 94 358.8 DL 104 358.8 99 358.8 DL 109 358.8 104
-358.8 DL 114 358.8 109 358.8 DL 119 358.8 114 358.8 DL 124 358.8 119 358.8 DL
-129 358.8 124 358.8 DL 134 358.8 129 358.8 DL 139 358.8 134 358.8 DL 144 358.8
-139 358.8 DL 149 358.8 144 358.8 DL 154 358.8 149 358.8 DL 159 358.8 154 358.8
-DL 164 358.8 159 358.8 DL 169 358.8 164 358.8 DL 174 358.8 169 358.8 DL 179
-358.8 174 358.8 DL 184 358.8 179 358.8 DL 189 358.8 184 358.8 DL 194 358.8 189
-358.8 DL 199 358.8 194 358.8 DL 204 358.8 199 358.8 DL 209 358.8 204 358.8 DL
-214 358.8 209 358.8 DL 219 358.8 214 358.8 DL 224 358.8 219 358.8 DL 229 358.8
-224 358.8 DL 234 358.8 229 358.8 DL 239 358.8 234 358.8 DL 244 358.8 239 358.8
-DL 249 358.8 244 358.8 DL 254 358.8 249 358.8 DL 259 358.8 254 358.8 DL 264
-358.8 259 358.8 DL 269 358.8 264 358.8 DL 274 358.8 269 358.8 DL 279 358.8 274
-358.8 DL 284 358.8 279 358.8 DL 289 358.8 284 358.8 DL 294 358.8 289 358.8 DL
-299 358.8 294 358.8 DL 304 358.8 299 358.8 DL 309 358.8 304 358.8 DL 314 358.8
-309 358.8 DL 319 358.8 314 358.8 DL 324 358.8 319 358.8 DL 329 358.8 324 358.8
-DL 334 358.8 329 358.8 DL 339 358.8 334 358.8 DL 344 358.8 339 358.8 DL 349
-358.8 344 358.8 DL 354 358.8 349 358.8 DL 359 358.8 354 358.8 DL 364 358.8 359
-358.8 DL 369 358.8 364 358.8 DL 374 358.8 369 358.8 DL 379 358.8 374 358.8 DL
-384 358.8 379 358.8 DL 389 358.8 384 358.8 DL 394 358.8 389 358.8 DL 399 358.8
-394 358.8 DL 404 358.8 399 358.8 DL 409 358.8 404 358.8 DL 414 358.8 409 358.8
-DL 419 358.8 414 358.8 DL 424 358.8 419 358.8 DL 429 358.8 424 358.8 DL 434
-358.8 429 358.8 DL 439 358.8 434 358.8 DL 444 358.8 439 358.8 DL 449 358.8 444
-358.8 DL 454 358.8 449 358.8 DL 459 358.8 454 358.8 DL 464 358.8 459 358.8 DL
-469 358.8 464 358.8 DL 474 358.8 469 358.8 DL 479 358.8 474 358.8 DL 484 358.8
-479 358.8 DL 489 358.8 484 358.8 DL 494 358.8 489 358.8 DL 499 358.8 494 358.8
-DL 504 358.8 499 358.8 DL F0 2.5(2. O)72 394.8 R(VER)-.5 E(VIEW)-.55 E 2.5
-(2.1. System)87 418.8 R(Or)2.5 E(ganization)-.1 E/F2 10/Times-Italic@0 SF
-(Sendmail)127 435 Q F1 .874(neither interf)3.374 F .874
-(aces with the user nor does actual mail deli)-.1 F -.15(ve)-.25 G(ry).15 E
-5.873(.R)-.65 G(ather)431.241 435 Q 3.373(,i)-.4 G 3.373(tc)459.484 435 S .873
-(ollects a)470.077 435 R .619(message generated by a user interf)102 447 R .619
-(ace program \(UIP\) such as Berk)-.1 F(ele)-.1 E(y)-.15 E F2(Mail)3.12 E F1
-3.12(,M)C 3.12(S[)427.6 447 S(Crock)439.61 447 Q .62(er77b], or)-.1 F 1.428
-(MH [Borden79], edits the message as required by the destination netw)102 459 R
-1.427(ork, and calls appropriate)-.1 F .28(mailers to do mail deli)102 473 R
--.15(ve)-.25 G .281(ry or queueing for netw).15 F .281(ork transmission)-.1 F
-/F3 7/Times-Roman@0 SF(1)364.275 469 Q F1 5.281(.T)367.775 473 S .281
-(his discipline allo)381.666 473 R .281(ws the inser)-.25 F(-)-.2 E 1.354
-(tion of ne)102 485 R 3.854(wm)-.25 G 1.354(ailers at minimum cost.)161.642 485
-R 1.354(In this sense)6.354 F F2(sendmail)3.853 E F1 1.353
-(resembles the Message Processing)3.853 F(Module \(MPM\) of [Postel79b].)102
-497 Q F0 2.5(2.2. Interfaces)87 521 R(to the Outside W)2.5 E(orld)-.75 E F1
-.041(There are three w)127 537.2 R(ays)-.1 E F2(sendmail)2.541 E F1 .041
-(can communicate with the outside w)2.541 F .042(orld, both in recei)-.1 F .042
-(ving and)-.25 F 1.195(in sending mail.)102 549.2 R 1.194
-(These are using the con)6.194 F -.15(ve)-.4 G 1.194(ntional UNIX ar).15 F
-1.194(gument v)-.18 F 1.194(ector/return status, speaking)-.15 F(SMTP o)102
-561.2 Q -.15(ve)-.15 G 2.5(rap).15 G(air of UNIX pipes, and speaking SMTP o)
-162.53 561.2 Q -.15(ve)-.15 G 2.5(ra).15 G 2.5(ni)348.03 561.2 S
-(nterprocess\(or\) channel.)358.31 561.2 Q F0 2.5(2.2.1. Ar)102 585.2 R
-(gument v)-.1 E(ector/exit status)-.1 E F1 .52(This technique is the standard \
-UNIX method for communicating with the process.)142 601.4 R 3.02(Al)5.52 G(ist)
-494.55 601.4 Q .442(of recipients is sent in the ar)117 613.4 R .441(gument v)
--.18 F(ector)-.15 E 2.941(,a)-.4 G .441
-(nd the message body is sent on the standard input.)299.491 613.4 R(An)117
-625.4 Q .351(ything that the mailer prints is simply collected and sent back t\
-o the sender if there were an)-.15 F(y)-.15 E 2.621(problems. The)117 637.4 R
--.15(ex)2.621 G .121(it status from the mailer is collected after the message \
-is sent, and a diagnostic).15 F(is printed if appropriate.)117 649.4 Q .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(1)93.6 689.2 Q/F5 8
-/Times-Roman@0 SF -.12(ex)3.2 K(cept when mailing to a \214le, when).12 E/F6 8
-/Times-Italic@0 SF(sendmail)2 E F5(does the deli)2 E -.12(ve)-.2 G(ry directly)
-.12 E(.)-.52 E EP
+(ork Mail Router)-.1 E(SMM:9-3)194.78 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 216 171.6 MT 0 -36 RL -72 0 RL 0 36 RL CL ST
+/F1 10/Times-Roman@0 SF(sender1)164.45 155.8 Q 324 171.6 MT 0 -36 RL -72
+0 RL 0 36 RL CL ST(sender2)272.45 155.8 Q 432 171.6 MT 0 -36 RL -72 0 RL
+0 36 RL CL ST(sender3)380.45 155.8 Q 288 207.6 288 171.6 DL 288 207.6 MT
+-1.8 -7.2 RL 3.6 0 RL CL BL 288 207.6 MT -1.8 -7.2 RL 3.6 0 RL CL ST 360
+243.6 MT 0 -36 RL -144 0 RL 0 36 RL CL ST(sendmail)269.945 227.8 Q 288
+279.6 288 243.6 DL 288 279.6 MT -1.8 -7.2 RL 3.6 0 RL CL BL 288 279.6 MT
+-1.8 -7.2 RL 3.6 0 RL CL ST 216 315.6 MT 0 -36 RL -72 0 RL 0 36 RL CL ST
+(mailer1)164.725 299.8 Q 324 315.6 MT 0 -36 RL -72 0 RL 0 36 RL CL ST
+(mailer2)272.725 299.8 Q 432 315.6 MT 0 -36 RL -72 0 RL 0 36 RL CL ST
+(mailer3)380.725 299.8 Q 252 207.6 180 171.6 DL 252 207.6 MT -7.272
+-1.584 RL 1.584 -3.24 RL CL BL 252 207.6 MT -7.272 -1.584 RL 1.584 -3.24
+RL CL ST 324 207.6 396 171.6 DL 324 207.6 MT 5.616 -4.824 RL 1.584 3.24
+RL CL BL 324 207.6 MT 5.616 -4.824 RL 1.584 3.24 RL CL ST 180 279.6 252
+243.6 DL 180 279.6 MT 5.616 -4.824 RL 1.584 3.24 RL CL BL 180 279.6 MT
+5.616 -4.824 RL 1.584 3.24 RL CL ST 396 279.6 324 243.6 DL 396 279.6 MT
+-7.272 -1.584 RL 1.584 -3.24 RL CL BL 396 279.6 MT -7.272 -1.584 RL
+1.584 -3.24 RL CL ST(Figure 1 \212 Sendmail System Structure.)208 346.8
+Q 77 358.8 72 358.8 DL 79 358.8 74 358.8 DL 84 358.8 79 358.8 DL 89
+358.8 84 358.8 DL 94 358.8 89 358.8 DL 99 358.8 94 358.8 DL 104 358.8 99
+358.8 DL 109 358.8 104 358.8 DL 114 358.8 109 358.8 DL 119 358.8 114
+358.8 DL 124 358.8 119 358.8 DL 129 358.8 124 358.8 DL 134 358.8 129
+358.8 DL 139 358.8 134 358.8 DL 144 358.8 139 358.8 DL 149 358.8 144
+358.8 DL 154 358.8 149 358.8 DL 159 358.8 154 358.8 DL 164 358.8 159
+358.8 DL 169 358.8 164 358.8 DL 174 358.8 169 358.8 DL 179 358.8 174
+358.8 DL 184 358.8 179 358.8 DL 189 358.8 184 358.8 DL 194 358.8 189
+358.8 DL 199 358.8 194 358.8 DL 204 358.8 199 358.8 DL 209 358.8 204
+358.8 DL 214 358.8 209 358.8 DL 219 358.8 214 358.8 DL 224 358.8 219
+358.8 DL 229 358.8 224 358.8 DL 234 358.8 229 358.8 DL 239 358.8 234
+358.8 DL 244 358.8 239 358.8 DL 249 358.8 244 358.8 DL 254 358.8 249
+358.8 DL 259 358.8 254 358.8 DL 264 358.8 259 358.8 DL 269 358.8 264
+358.8 DL 274 358.8 269 358.8 DL 279 358.8 274 358.8 DL 284 358.8 279
+358.8 DL 289 358.8 284 358.8 DL 294 358.8 289 358.8 DL 299 358.8 294
+358.8 DL 304 358.8 299 358.8 DL 309 358.8 304 358.8 DL 314 358.8 309
+358.8 DL 319 358.8 314 358.8 DL 324 358.8 319 358.8 DL 329 358.8 324
+358.8 DL 334 358.8 329 358.8 DL 339 358.8 334 358.8 DL 344 358.8 339
+358.8 DL 349 358.8 344 358.8 DL 354 358.8 349 358.8 DL 359 358.8 354
+358.8 DL 364 358.8 359 358.8 DL 369 358.8 364 358.8 DL 374 358.8 369
+358.8 DL 379 358.8 374 358.8 DL 384 358.8 379 358.8 DL 389 358.8 384
+358.8 DL 394 358.8 389 358.8 DL 399 358.8 394 358.8 DL 404 358.8 399
+358.8 DL 409 358.8 404 358.8 DL 414 358.8 409 358.8 DL 419 358.8 414
+358.8 DL 424 358.8 419 358.8 DL 429 358.8 424 358.8 DL 434 358.8 429
+358.8 DL 439 358.8 434 358.8 DL 444 358.8 439 358.8 DL 449 358.8 444
+358.8 DL 454 358.8 449 358.8 DL 459 358.8 454 358.8 DL 464 358.8 459
+358.8 DL 469 358.8 464 358.8 DL 474 358.8 469 358.8 DL 479 358.8 474
+358.8 DL 484 358.8 479 358.8 DL 489 358.8 484 358.8 DL 494 358.8 489
+358.8 DL 499 358.8 494 358.8 DL 504 358.8 499 358.8 DL F0 2.5(2. O)72
+394.8 R(VER)-.5 E(VIEW)-.55 E 2.5(2.1. System)87 418.8 R(Or)2.5 E
+(ganization)-.1 E/F2 10/Times-Italic@0 SF(Sendmail)127 435 Q F1 .874
+(neither interf)3.374 F .874
+(aces with the user nor does actual mail deli)-.1 F -.15(ve)-.25 G(ry)
+.15 E 5.873(.R)-.65 G(ather)-5.873 E 3.373(,i)-.4 G 3.373(tc)-3.373 G
+.873(ollects a)-3.373 F .619(message generated by a user interf)102 447
+R .619(ace program \(UIP\) such as Berk)-.1 F(ele)-.1 E(y)-.15 E F2
+(Mail)3.12 E F1 3.12(,M)C 3.12(S[)-3.12 G(Crock)-3.12 E .62(er77b], or)
+-.1 F 1.428
+(MH [Borden79], edits the message as required by the destination netw)
+102 459 R 1.427(ork, and calls appropriate)-.1 F .28
+(mailers to do mail deli)102 473 R -.15(ve)-.25 G .281
+(ry or queueing for netw).15 F .281(ork transmission)-.1 F/F3 7
+/Times-Roman@0 SF(1)-4 I F1 5.281(.T)4 K .281(his discipline allo)-5.281
+F .281(ws the inser)-.25 F(-)-.2 E 1.354(tion of ne)102 485 R 3.854(wm)
+-.25 G 1.354(ailers at minimum cost.)-3.854 F 1.354(In this sense)6.354
+F F2(sendmail)3.853 E F1 1.353(resembles the Message Processing)3.853 F
+(Module \(MPM\) of [Postel79b].)102 497 Q F0 2.5(2.2. Interfaces)87 521
+R(to the Outside W)2.5 E(orld)-.75 E F1 .041(There are three w)127 537.2
+R(ays)-.1 E F2(sendmail)2.541 E F1 .041
+(can communicate with the outside w)2.541 F .042(orld, both in recei)-.1
+F .042(ving and)-.25 F 1.195(in sending mail.)102 549.2 R 1.194
+(These are using the con)6.194 F -.15(ve)-.4 G 1.194(ntional UNIX ar).15
+F 1.194(gument v)-.18 F 1.194(ector/return status, speaking)-.15 F
+(SMTP o)102 561.2 Q -.15(ve)-.15 G 2.5(rap).15 G
+(air of UNIX pipes, and speaking SMTP o)-2.5 E -.15(ve)-.15 G 2.5(ra).15
+G 2.5(ni)-2.5 G(nterprocess\(or\) channel.)-2.5 E F0 2.5(2.2.1. Ar)102
+585.2 R(gument v)-.1 E(ector/exit status)-.1 E F1 .52(This technique is the standard UNIX method for communicating with the process.)
+142 601.4 R 3.02(Al)5.52 G(ist)-3.02 E .442
+(of recipients is sent in the ar)117 613.4 R .441(gument v)-.18 F(ector)
+-.15 E 2.941(,a)-.4 G .441
+(nd the message body is sent on the standard input.)-2.941 F(An)117
+625.4 Q .351(ything that the mailer prints is simply collected and sent back to the sender if there were an)
+-.15 F(y)-.15 E 2.621(problems. The)117 637.4 R -.15(ex)2.621 G .121(it status from the mailer is collected after the message is sent, and a diagnostic)
+.15 F(is printed if appropriate.)117 649.4 Q .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(1)93.6 689.2 Q/F5
+8/Times-Roman@0 SF -.12(ex)3.2 K(cept when mailing to a \214le, when).12
+E/F6 8/Times-Italic@0 SF(sendmail)2 E F5(does the deli)2 E -.12(ve)-.2 G
+(ry directly).12 E(.)-.52 E EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF 192.28(SMM:9-4 SENDMAIL)72 60 R 2.5<8a41>2.5 G 2.5(nI)
-383.99 60 S(nter)395.94 60 Q(netw)-.15 E(ork Mail Router)-.1 E 2.5(2.2.2. SMTP)
-102 96 R -.1(ove)2.5 G 2.5(rp).1 G(ipes)186.52 96 Q/F1 10/Times-Roman@0 SF .774
-(The SMTP protocol [Postel82] can be used to run an interacti)142 112.2 R 1.074
--.15(ve l)-.25 H .774(ock-step interf).15 F .774(ace with)-.1 F .507
-(the mailer)117 124.2 R 5.507(.A)-.55 G .506(subprocess is still created, b)
-175.461 124.2 R .506(ut no recipient addresses are passed to the mailer via)-.2
-F .075(the ar)117 136.2 R .075(gument list.)-.18 F .075(Instead, the)5.075 F
+/F0 10/Times-Bold@0 SF 192.28(SMM:9-4 SENDMAIL)72 60 R 2.5<8a41>2.5 G
+2.5(nI)-2.5 G(nter)-2.5 E(netw)-.15 E(ork Mail Router)-.1 E 2.5
+(2.2.2. SMTP)102 96 R -.1(ove)2.5 G 2.5(rp).1 G(ipes)-2.5 E/F1 10
+/Times-Roman@0 SF .774
+(The SMTP protocol [Postel82] can be used to run an interacti)142 112.2
+R 1.074 -.15(ve l)-.25 H .774(ock-step interf).15 F .774(ace with)-.1 F
+.507(the mailer)117 124.2 R 5.507(.A)-.55 G .506
+(subprocess is still created, b)-2.5 F .506
+(ut no recipient addresses are passed to the mailer via)-.2 F .075
+(the ar)117 136.2 R .075(gument list.)-.18 F .075(Instead, the)5.075 F
2.575(ya)-.15 G .075
-(re passed one at a time in commands sent to the processes stan-)249.805 136.2
-R .19(dard input.)117 148.2 R(An)5.19 E .19(ything appearing on the standard o\
-utput must be a reply code in a special format.)-.15 F F0 2.5(2.2.3. SMTP)102
-172.2 R -.1(ove)2.5 G 2.5(ra).1 G 2.5(nI)185.96 172.2 S(PC connection)197.91
-172.2 Q F1 .366(This technique is similar to the pre)142 188.4 R .366
-(vious technique, e)-.25 F .366(xcept that it uses a 4.2bsd IPC chan-)-.15 F
-.953(nel [UNIX83].)117 200.4 R .953(This method is e)5.953 F .953
+(re passed one at a time in commands sent to the processes stan-)-2.575
+F .19(dard input.)117 148.2 R(An)5.19 E .19(ything appearing on the standard output must be a reply code in a special format.)
+-.15 F F0 2.5(2.2.3. SMTP)102 172.2 R -.1(ove)2.5 G 2.5(ra).1 G 2.5(nI)
+-2.5 G(PC connection)-2.5 E F1 .366
+(This technique is similar to the pre)142 188.4 R .366
+(vious technique, e)-.25 F .366(xcept that it uses a 4.2bsd IPC chan-)
+-.15 F .953(nel [UNIX83].)117 200.4 R .953(This method is e)5.953 F .953
(xceptionally \215e)-.15 F .952
-(xible in that the mailer need not reside on the)-.15 F(same machine.)117 212.4
-Q(It is normally used to connect to a sendmail process on another machine.)5 E
-F0 2.5(2.3. Operational)87 236.4 R(Description)2.5 E F1 .228(When a sender w)
-127 252.6 R .228(ants to send a message, it issues a request to)-.1 F/F2 10
-/Times-Italic@0 SF(sendmail)2.729 E F1 .229(using one of the three)2.729 F
-1.028(methods described abo)102 264.6 R -.15(ve)-.15 G(.).15 E F2(Sendmail)
-6.028 E F1 1.028(operates in tw)3.528 F 3.528(od)-.1 G 1.028(istinct phases.)
-325.706 264.6 R 1.028(In the \214rst phase, it collects)6.028 F .612
-(and stores the message.)102 276.6 R .612(In the second phase, message deli)
-5.612 F -.15(ve)-.25 G .612(ry occurs.).15 F .612(If there were errors during)
-5.612 F 1.59(processing during the second phase,)102 288.6 R F2(sendmail)4.09 E
-F1 1.59(creates and returns a ne)4.09 F 4.09(wm)-.25 G 1.59
-(essage describing the)415.84 288.6 R
-(error and/or returns an status code telling what went wrong.)102 300.6 Q F0
-2.5(2.3.1. Ar)102 324.6 R(gument pr)-.1 E(ocessing and addr)-.18 E(ess parsing)
--.18 E F1(If)142 340.8 Q F2(sendmail)3.321 E F1 .821
+(xible in that the mailer need not reside on the)-.15 F(same machine.)
+117 212.4 Q(It is normally used to connect to a sendmail process on another machine.)
+5 E F0 2.5(2.3. Operational)87 236.4 R(Description)2.5 E F1 .228
+(When a sender w)127 252.6 R .228
+(ants to send a message, it issues a request to)-.1 F/F2 10
+/Times-Italic@0 SF(sendmail)2.729 E F1 .229(using one of the three)2.729
+F 1.028(methods described abo)102 264.6 R -.15(ve)-.15 G(.).15 E F2
+(Sendmail)6.028 E F1 1.028(operates in tw)3.528 F 3.528(od)-.1 G 1.028
+(istinct phases.)-3.528 F 1.028(In the \214rst phase, it collects)6.028
+F .612(and stores the message.)102 276.6 R .612
+(In the second phase, message deli)5.612 F -.15(ve)-.25 G .612
+(ry occurs.).15 F .612(If there were errors during)5.612 F 1.59
+(processing during the second phase,)102 288.6 R F2(sendmail)4.09 E F1
+1.59(creates and returns a ne)4.09 F 4.09(wm)-.25 G 1.59
+(essage describing the)-4.09 F
+(error and/or returns an status code telling what went wrong.)102 300.6
+Q F0 2.5(2.3.1. Ar)102 324.6 R(gument pr)-.1 E(ocessing and addr)-.18 E
+(ess parsing)-.18 E F1(If)142 340.8 Q F2(sendmail)3.321 E F1 .821
(is called using one of the tw)3.321 F 3.322(os)-.1 G .822
-(ubprocess techniques, the ar)320.66 340.8 R .822(guments are \214rst)-.18 F
+(ubprocess techniques, the ar)-3.322 F .822(guments are \214rst)-.18 F
.797(scanned and option speci\214cations are processed.)117 352.8 R .796
-(Recipient addresses are then collected, either)5.796 F .717(from the command \
-line or from the SMTP RCPT command, and a list of recipients is created.)117
-364.8 R .347(Aliases are e)117 376.8 R .347
-(xpanded at this step, including mailing lists.)-.15 F .347(As much v)5.347 F
-.346(alidation as possible of the)-.25 F 1.001
+(Recipient addresses are then collected, either)5.796 F .717(from the command line or from the SMTP RCPT command, and a list of recipients is created.)
+117 364.8 R .347(Aliases are e)117 376.8 R .347
+(xpanded at this step, including mailing lists.)-.15 F .347(As much v)
+5.347 F .346(alidation as possible of the)-.25 F 1.001
(addresses is done at this step: syntax is check)117 388.8 R 1.002
(ed, and local addresses are v)-.1 F 1.002(eri\214ed, b)-.15 F 1.002
(ut detailed)-.2 F .709
-(checking of host names and addresses is deferred until deli)117 400.8 R -.15
-(ve)-.25 G(ry).15 E 5.708(.F)-.65 G(orw)388.946 400.8 Q .708
+(checking of host names and addresses is deferred until deli)117 400.8 R
+-.15(ve)-.25 G(ry).15 E 5.708(.F)-.65 G(orw)-5.858 E .708
(arding is also performed)-.1 F(as the local addresses are v)117 412.8 Q
(eri\214ed.)-.15 E F2(Sendmail)142 429 Q F1 .307
(appends each address to the recipient list after parsing.)2.807 F .307
-(When a name is aliased)5.307 F .322(or forw)117 441 R .322(arded, the old nam\
-e is retained in the list, and a \215ag is set that tells the deli)-.1 F -.15
-(ve)-.25 G .322(ry phase to).15 F .479(ignore this recipient.)117 453 R .479
-(This list is k)5.479 F .479(ept free from duplicates, pre)-.1 F -.15(ve)-.25 G
-.48(nting alias loops and duplicate).15 F(messages deli)117 465 Q -.15(ve)-.25
-G(rd to the same recipient, as might occur if a person is in tw).15 E 2.5(og)
--.1 G(roups.)428.12 465 Q F0 2.5(2.3.2. Message)102 489 R(collection)2.5 E F2
-(Sendmail)142 505.2 Q F1 .454(then collects the message.)2.954 F .454
-(The message should ha)5.454 F .754 -.15(ve a h)-.2 H .453(eader at the be).15
-F(ginning.)-.15 E .778(No formatting requirements are imposed on the message e)
-117 517.2 R .778(xcept that the)-.15 F 3.278(ym)-.15 G .778(ust be lines of te)
-427.708 517.2 R(xt)-.15 E .78(\(i.e., binary data is not allo)117 529.2 R 3.28
-(wed\). The)-.25 F .779(header is parsed and stored in memory)3.28 F 3.279(,a)
--.65 G .779(nd the body of)443.613 529.2 R(the message is sa)117 541.2 Q -.15
-(ve)-.2 G 2.5(di).15 G 2.5(nat)204.97 541.2 S(emporary \214le.)222.19 541.2 Q
+(When a name is aliased)5.307 F .322(or forw)117 441 R .322(arded, the old name is retained in the list, and a \215ag is set that tells the deli)
+-.1 F -.15(ve)-.25 G .322(ry phase to).15 F .479(ignore this recipient.)
+117 453 R .479(This list is k)5.479 F .479
+(ept free from duplicates, pre)-.1 F -.15(ve)-.25 G .48
+(nting alias loops and duplicate).15 F(messages deli)117 465 Q -.15(ve)
+-.25 G(rd to the same recipient, as might occur if a person is in tw).15
+E 2.5(og)-.1 G(roups.)-2.5 E F0 2.5(2.3.2. Message)102 489 R(collection)
+2.5 E F2(Sendmail)142 505.2 Q F1 .454(then collects the message.)2.954 F
+.454(The message should ha)5.454 F .754 -.15(ve a h)-.2 H .453
+(eader at the be).15 F(ginning.)-.15 E .778
+(No formatting requirements are imposed on the message e)117 517.2 R
+.778(xcept that the)-.15 F 3.278(ym)-.15 G .778(ust be lines of te)
+-3.278 F(xt)-.15 E .78(\(i.e., binary data is not allo)117 529.2 R 3.28
+(wed\). The)-.25 F .779(header is parsed and stored in memory)3.28 F
+3.279(,a)-.65 G .779(nd the body of)-3.279 F(the message is sa)117 541.2
+Q -.15(ve)-.2 G 2.5(di).15 G 2.5(nat)-2.5 G(emporary \214le.)-2.5 E
3.227 -.8(To s)142 557.4 T 1.627(implify the program interf).8 F 1.628
-(ace, the message is collected e)-.1 F -.15(ve)-.25 G 4.128(ni).15 G 4.128(fn)
-420.536 557.4 S 4.128(oa)432.994 557.4 S 1.628(ddresses were)446.562 557.4 R
--.25(va)117 569.4 S 2.5(lid. The).25 F(message will be returned with an error)
-2.5 E(.)-.55 E F0 2.5(2.3.3. Message)102 593.4 R(deli)2.5 E -.1(ve)-.1 G(ry).1
-E F1 -.15(Fo)142 609.6 S 2.618(re).15 G .117
-(ach unique mailer and host in the recipient list,)162.798 609.6 R F2(sendmail)
+(ace, the message is collected e)-.1 F -.15(ve)-.25 G 4.128(ni).15 G
+4.128(fn)-4.128 G 4.128(oa)-4.128 G 1.628(ddresses were)-4.128 F -.25
+(va)117 569.4 S 2.5(lid. The).25 F
+(message will be returned with an error)2.5 E(.)-.55 E F0 2.5
+(2.3.3. Message)102 593.4 R(deli)2.5 E -.1(ve)-.1 G(ry).1 E F1 -.15(Fo)
+142 609.6 S 2.618(re).15 G .117
+(ach unique mailer and host in the recipient list,)-2.618 F F2(sendmail)
2.617 E F1 .117(calls the appropriate mailer)2.617 F(.)-.55 E .619
-(Each mailer in)117 621.6 R -.2(vo)-.4 G .619(cation sends to all users recei)
-.2 F .619(ving the message on one host.)-.25 F .62(Mailers that only)5.62 F
-(accept one recipient at a time are handled properly)117 633.6 Q(.)-.65 E .47
-(The message is sent to the mailer using one of the same three interf)142 649.8
-R .47(aces used to submit a)-.1 F 1.465(message to sendmail.)117 661.8 R 1.465
-(Each cop)6.465 F 3.965(yo)-.1 G 3.965(ft)263.925 661.8 S 1.465
-(he message is prepended by a customized header)274 661.8 R 6.465(.T)-.55 G(he)
-494.56 661.8 Q 1.455(mailer status code is caught and check)117 673.8 R 1.455
-(ed, and a suitable error message gi)-.1 F -.15(ve)-.25 G 3.955(na).15 G 3.955
-(sa)448.115 673.8 S(ppropriate.)460.4 673.8 Q .589(The e)117 685.8 R .589(xit \
-code must conform to a system standard or a generic message \(\231Service una)
--.15 F -.25(va)-.2 G(ilable\232\)).25 E(is gi)117 697.8 Q -.15(ve)-.25 G(n.).15
-E EP
+(Each mailer in)117 621.6 R -.2(vo)-.4 G .619
+(cation sends to all users recei).2 F .619
+(ving the message on one host.)-.25 F .62(Mailers that only)5.62 F
+(accept one recipient at a time are handled properly)117 633.6 Q(.)-.65
+E .47
+(The message is sent to the mailer using one of the same three interf)
+142 649.8 R .47(aces used to submit a)-.1 F 1.465(message to sendmail.)
+117 661.8 R 1.465(Each cop)6.465 F 3.965(yo)-.1 G 3.965(ft)-3.965 G
+1.465(he message is prepended by a customized header)-3.965 F 6.465(.T)
+-.55 G(he)-6.465 E 1.455(mailer status code is caught and check)117
+673.8 R 1.455(ed, and a suitable error message gi)-.1 F -.15(ve)-.25 G
+3.955(na).15 G 3.955(sa)-3.955 G(ppropriate.)-3.955 E .589(The e)117
+685.8 R .589(xit code must conform to a system standard or a generic message \(\231Service una)
+-.15 F -.25(va)-.2 G(ilable\232\)).25 E(is gi)117 697.8 Q -.15(ve)-.25 G
+(n.).15 E EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(SENDMAIL \212 An Inter)72 60 Q(netw)-.15 E
-(ork Mail Router)-.1 E(SMM:9-5)462.9 60 Q 2.5(2.3.4. Queueing)102 96 R -.25(fo)
-2.5 G 2.5(rr).25 G(etransmission)192.4 96 Q/F1 10/Times-Roman@0 SF .209(If the\
- mailer returned an status that indicated that it might be able to handle the \
-mail later)142 112.2 R(,)-.4 E/F2 10/Times-Italic@0 SF(sendmail)117 124.2 Q F1
+(ork Mail Router)-.1 E(SMM:9-5)194.78 E 2.5(2.3.4. Queueing)102 96 R
+-.25(fo)2.5 G 2.5(rr).25 G(etransmission)-2.68 E/F1 10/Times-Roman@0 SF
+.209(If the mailer returned an status that indicated that it might be able to handle the mail later)
+142 112.2 R(,)-.4 E/F2 10/Times-Italic@0 SF(sendmail)117 124.2 Q F1
(will queue the mail and try ag)2.5 E(ain later)-.05 E(.)-.55 E F0 2.5
-(2.3.5. Retur)102 148.2 R 2.5(nt)-.15 G 2.5(os)165.73 148.2 S(ender)177.12
-148.2 Q F1 .588(If errors occur during processing,)142 164.4 R F2(sendmail)
-3.088 E F1 .589(returns the message to the sender for retrans-)3.088 F 3.133
-(mission. The)117 176.4 R .632(letter can be mailed back or written in the \
-\214le \231dead.letter\232 in the sender')3.133 F 3.132(sh)-.55 G(ome)486.78
-176.4 Q(directory)117 190.4 Q/F3 7/Times-Roman@0 SF(2)153.1 186.4 Q F1(.)156.6
-190.4 Q F0 2.5(2.4. Message)87 214.4 R(Header Editing)2.5 E F1 1.756
-(Certain editing of the message header occurs automatically)127 230.6 R 6.756
-(.H)-.65 G 1.756(eader lines can be inserted)391.456 230.6 R .41
+(2.3.5. Retur)102 148.2 R 2.5(nt)-.15 G 2.5(os)-2.5 G(ender)-2.5 E F1
+.588(If errors occur during processing,)142 164.4 R F2(sendmail)3.088 E
+F1 .589(returns the message to the sender for retrans-)3.088 F 3.133
+(mission. The)117 176.4 R .632(letter can be mailed back or written in the \214le \231dead.letter\232 in the sender')
+3.133 F 3.132(sh)-.55 G(ome)-3.132 E(directory)117 190.4 Q/F3 7
+/Times-Roman@0 SF(2)-4 I F1(.)4 I F0 2.5(2.4. Message)87 214.4 R
+(Header Editing)2.5 E F1 1.756
+(Certain editing of the message header occurs automatically)127 230.6 R
+6.756(.H)-.65 G 1.756(eader lines can be inserted)-6.756 F .41
(under control of the con\214guration \214le.)102 242.6 R .41
(Some lines can be mer)5.41 F .41(ged; for e)-.18 F .41
(xample, a \231From:\232 line and)-.15 F 2.5<6199>102 254.6 S
-(Full-name:\232 line can be mer)113.38 254.6 Q
-(ged under certain circumstances.)-.18 E F0 2.5(2.5. Con\214guration)87 278.6 R
-(File)2.5 E F1 .798(Almost all con\214guration information is read at runtime \
-from an ASCII \214le, encoding macro)127 294.8 R .679
-(de\214nitions \(de\214ning the v)102 306.8 R .678
-(alue of macros used internally\), header declarations \(telling sendmail the)
--.25 F 1.009(format of header lines that it will process specially)102 318.8 R
-3.509(,i)-.65 G 1.009(.e., lines that it will add or reformat\), mailer)320.398
-318.8 R .478(de\214nitions \(gi)102 330.8 R .478(ving information such as the \
-location and characteristics of each mailer\), and address)-.25 F(re)102 342.8
-Q .428(writing rules \(a limited production system to re)-.25 F .429
+(Full-name:\232 line can be mer)-2.5 E(ged under certain circumstances.)
+-.18 E F0 2.5(2.5. Con\214guration)87 278.6 R(File)2.5 E F1 .798(Almost all con\214guration information is read at runtime from an ASCII \214le, encoding macro)
+127 294.8 R .679(de\214nitions \(de\214ning the v)102 306.8 R .678(alue of macros used internally\), header declarations \(telling sendmail the)
+-.25 F 1.009(format of header lines that it will process specially)102
+318.8 R 3.509(,i)-.65 G 1.009
+(.e., lines that it will add or reformat\), mailer)-3.509 F .478
+(de\214nitions \(gi)102 330.8 R .478(ving information such as the location and characteristics of each mailer\), and address)
+-.25 F(re)102 342.8 Q .428
+(writing rules \(a limited production system to re)-.25 F .429
(write addresses which is used to parse and re)-.25 F(write)-.25 E
-(the addresses\).)102 354.8 Q 2.828 -.8(To i)127 371 T(mpro).8 E 1.528 -.15
-(ve p)-.15 H 1.228(erformance when reading the con\214guration \214le, a memor\
-y image can be pro-).15 F 2.5(vided. This)102 383 R(pro)2.5 E
-(vides a \231compiled\232 form of the con\214guration \214le.)-.15 E F0 2.5
-(3. USA)72 407 R(GE AND IMPLEMENT)-.55 E -.95(AT)-.9 G(ION).95 E 2.5(3.1. Ar)87
-431 R(guments)-.1 E F1(Ar)127 447.2 Q .376
-(guments may be \215ags and addresses.)-.18 F .377(Flags set v)5.377 F .377
-(arious processing options.)-.25 F -.15(Fo)5.377 G(llo).15 E .377(wing \215ag)
--.25 F(ar)102 459.2 Q .281(guments, address ar)-.18 F .281(guments may be gi)
--.18 F -.15(ve)-.25 G .281(n, unless we are running in SMTP mode.).15 F .28
-(Addresses fol-)5.28 F(lo)102 471.2 Q 2.5(wt)-.25 G(he syntax in RFC822 [Crock)
-122.03 471.2 Q(er82] for ARP)-.1 E(ANET address formats.)-.92 E
+(the addresses\).)102 354.8 Q 2.828 -.8(To i)127 371 T(mpro).8 E 1.528
+-.15(ve p)-.15 H 1.228(erformance when reading the con\214guration \214le, a memory image can be pro-)
+.15 F 2.5(vided. This)102 383 R(pro)2.5 E
+(vides a \231compiled\232 form of the con\214guration \214le.)-.15 E F0
+2.5(3. USA)72 407 R(GE AND IMPLEMENT)-.55 E -.95(AT)-.9 G(ION).95 E 2.5
+(3.1. Ar)87 431 R(guments)-.1 E F1(Ar)127 447.2 Q .376
+(guments may be \215ags and addresses.)-.18 F .377(Flags set v)5.377 F
+.377(arious processing options.)-.25 F -.15(Fo)5.377 G(llo).15 E .377
+(wing \215ag)-.25 F(ar)102 459.2 Q .281(guments, address ar)-.18 F .281
+(guments may be gi)-.18 F -.15(ve)-.25 G .281
+(n, unless we are running in SMTP mode.).15 F .28(Addresses fol-)5.28 F
+(lo)102 471.2 Q 2.5(wt)-.25 G(he syntax in RFC822 [Crock)-2.5 E
+(er82] for ARP)-.1 E(ANET address formats.)-.92 E
(In brief, the format is:)5 E 12.5(\(1\) An)107 487.4 R
-(ything in parentheses is thro)-.15 E(wn a)-.25 E -.1(wa)-.15 G 2.5(y\().1 G
-(as a comment\).)299.65 487.4 Q 12.5(\(2\) An)107 503.6 R .051
+(ything in parentheses is thro)-.15 E(wn a)-.25 E -.1(wa)-.15 G 2.5(y\()
+.1 G(as a comment\).)-2.5 E 12.5(\(2\) An)107 503.6 R .051
(ything in angle brack)-.15 F .051(ets \(\231<)-.1 F .051
-(>\232\) is preferred o)1.666 F -.15(ve)-.15 G 2.551(ra).15 G -.15(ny)348.064
-503.6 S .051(thing else.).15 F .051(This rule implements the)5.051 F(ARP)133.66
-515.6 Q(ANET standard that addresses of the form)-.92 E
-(user name <machine-address>)173.66 531.8 Q(will send to the electronic \231ma\
-chine-address\232 rather than the human \231user name.)133.66 548 Q<9a>-.7 E
-12.5(\(3\) Double)107 564.2 R 2.246(quotes \()4.746 F -2.754 2.5("\) q)2.5 H
-2.246(uote phrases; backslashes quote characters.)224.188 564.2 R 2.246
-(Backslashes are more)7.246 F(po)133.66 576.2 Q .654(werful in that the)-.25 F
-3.154(yw)-.15 G .655(ill cause otherwise equi)229.196 576.2 R -.25(va)-.25 G
-.655(lent phrases to compare dif).25 F .655(ferently \212 for)-.25 F -.15(ex)
-133.66 588.2 S(ample,).15 E F2(user)2.5 E F1(and)2.5 E F2("user")2.5 E F1
-(are equi)2.5 E -.25(va)-.25 G(lent, b).25 E(ut)-.2 E F2(\\user)2.5 E F1
-(is dif)2.5 E(ferent from either of them.)-.25 E -.15(Pa)127 604.4 S 1.12
-(rentheses, angle brack).15 F 1.12
-(ets, and double quotes must be properly balanced and nested.)-.1 F(The)6.12 E
-(re)102 618.4 Q(writing rules control remaining parsing)-.25 E F3(3)266.17
-614.4 Q F1(.)269.67 618.4 Q .32 LW 76 646 72 646 DL 80 646 76 646 DL 84 646 80
-646 DL 88 646 84 646 DL 92 646 88 646 DL 96 646 92 646 DL 100 646 96 646 DL 104
-646 100 646 DL 108 646 104 646 DL 112 646 108 646 DL 116 646 112 646 DL 120 646
-116 646 DL 124 646 120 646 DL 128 646 124 646 DL 132 646 128 646 DL 136 646 132
-646 DL 140 646 136 646 DL 144 646 140 646 DL 148 646 144 646 DL 152 646 148 646
-DL 156 646 152 646 DL 160 646 156 646 DL 164 646 160 646 DL 168 646 164 646 DL
-172 646 168 646 DL 176 646 172 646 DL 180 646 176 646 DL 184 646 180 646 DL 188
-646 184 646 DL 192 646 188 646 DL 196 646 192 646 DL 200 646 196 646 DL 204 646
-200 646 DL 208 646 204 646 DL 212 646 208 646 DL 216 646 212 646 DL/F4 5
-/Times-Roman@0 SF(2)93.6 656.4 Q/F5 8/Times-Roman@0 SF(Ob)3.2 I(viously)-.12 E
-2.226(,i)-.52 G 2.226(ft)135.246 659.6 S .226(he site gi)142.36 659.6 R .226(v\
-ing the error is not the originating site, the only reasonable option is to ma\
-il back to the sender)-.2 F 4.227(.A)-.44 G(lso,)492.664 659.6 Q .191
-(there are man)72 669.2 R 2.191(ym)-.12 G .19(ore error disposition options, b)
-128.213 669.2 R .19(ut the)-.16 F 2.19(yo)-.12 G .19(nly ef)255.514 669.2 R .19
-(fect the error message \212 the \231return to sender\232 function is al)-.2 F
--.08(wa)-.08 G .19(ys han-).08 F(dled in one of these tw)72 678.8 Q 2(ow)-.08 G
-(ays.)156.272 678.8 Q F4(3)93.6 689.2 Q F5
+(>\232\) is preferred o)1.666 F -.15(ve)-.15 G 2.551(ra).15 G -.15(ny)
+-2.551 G .051(thing else.).15 F .051(This rule implements the)5.051 F
+(ARP)133.66 515.6 Q(ANET standard that addresses of the form)-.92 E
+(user name <machine-address>)173.66 531.8 Q(will send to the electronic \231machine-address\232 rather than the human \231user name.)
+133.66 548 Q<9a>-.7 E 12.5(\(3\) Double)107 564.2 R 2.246(quotes \()
+4.746 F -2.754 2.5("\) q)2.5 H 2.246
+(uote phrases; backslashes quote characters.)-2.5 F 2.246
+(Backslashes are more)7.246 F(po)133.66 576.2 Q .654(werful in that the)
+-.25 F 3.154(yw)-.15 G .655(ill cause otherwise equi)-3.154 F -.25(va)
+-.25 G .655(lent phrases to compare dif).25 F .655(ferently \212 for)
+-.25 F -.15(ex)133.66 588.2 S(ample,).15 E F2(user)2.5 E F1(and)2.5 E F2
+("user")2.5 E F1(are equi)2.5 E -.25(va)-.25 G(lent, b).25 E(ut)-.2 E F2
+(\\user)2.5 E F1(is dif)2.5 E(ferent from either of them.)-.25 E -.15
+(Pa)127 604.4 S 1.12(rentheses, angle brack).15 F 1.12
+(ets, and double quotes must be properly balanced and nested.)-.1 F(The)
+6.12 E(re)102 618.4 Q(writing rules control remaining parsing)-.25 E F3
+(3)-4 I F1(.)4 I .32 LW 76 646 72 646 DL 80 646 76 646 DL 84 646 80 646
+DL 88 646 84 646 DL 92 646 88 646 DL 96 646 92 646 DL 100 646 96 646 DL
+104 646 100 646 DL 108 646 104 646 DL 112 646 108 646 DL 116 646 112 646
+DL 120 646 116 646 DL 124 646 120 646 DL 128 646 124 646 DL 132 646 128
+646 DL 136 646 132 646 DL 140 646 136 646 DL 144 646 140 646 DL 148 646
+144 646 DL 152 646 148 646 DL 156 646 152 646 DL 160 646 156 646 DL 164
+646 160 646 DL 168 646 164 646 DL 172 646 168 646 DL 176 646 172 646 DL
+180 646 176 646 DL 184 646 180 646 DL 188 646 184 646 DL 192 646 188 646
+DL 196 646 192 646 DL 200 646 196 646 DL 204 646 200 646 DL 208 646 204
+646 DL 212 646 208 646 DL 216 646 212 646 DL/F4 5/Times-Roman@0 SF(2)
+93.6 656.4 Q/F5 8/Times-Roman@0 SF(Ob)3.2 I(viously)-.12 E 2.226(,i)-.52
+G 2.226(ft)-2.226 G .226(he site gi)-2.226 F .226(ving the error is not the originating site, the only reasonable option is to mail back to the sender)
+-.2 F 4.227(.A)-.44 G(lso,)-4.227 E .191(there are man)72 669.2 R 2.191
+(ym)-.12 G .19(ore error disposition options, b)-2.191 F .19(ut the)-.16
+F 2.19(yo)-.12 G .19(nly ef)-2.19 F .19(fect the error message \212 the \231return to sender\232 function is al)
+-.2 F -.08(wa)-.08 G .19(ys han-).08 F(dled in one of these tw)72 678.8
+Q 2(ow)-.08 G(ays.)-2.08 E F4(3)93.6 689.2 Q F5
(Disclaimer: Some special processing is done after re)3.2 I
(writing local names; see belo)-.2 E -.52(w.)-.2 G EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF 192.28(SMM:9-6 SENDMAIL)72 60 R 2.5<8a41>2.5 G 2.5(nI)
-383.99 60 S(nter)395.94 60 Q(netw)-.15 E(ork Mail Router)-.1 E 2.5(3.2. Mail)87
-96 R(to Files and Pr)2.5 E(ograms)-.18 E/F1 10/Times-Roman@0 SF .609
-(Files and programs are le)127 112.2 R .609(gitimate message recipients.)-.15 F
-.609(Files pro)5.609 F .609(vide archi)-.15 F -.25(va)-.25 G 3.109(ls).25 G .61
-(torage of mes-)445.02 112.2 R .124
-(sages, useful for project administration and history)102 124.2 R 5.124(.P)-.65
-G .124(rograms are useful as recipients in a v)318.308 124.2 R .124(ariety of)
--.25 F .69(situations, for e)102 136.2 R .691(xample, to maintain a public rep\
-ository of systems messages \(such as the Berk)-.15 F(ele)-.1 E(y)-.15 E/F2 10
-/Times-Italic@0 SF(msgs)102 148.2 Q F1(program, or the MARS system [Sattle)2.5
-E(y78]\).)-.15 E(An)127 164.4 Q 3.188(ya)-.15 G .688(ddress passing through th\
-e initial parsing algorithm as a local address \(i.e, not appear)151.698 164.4
-R(-)-.2 E .276(ing to be a v)102 176.4 R .276
-(alid address for another mailer\) is scanned for tw)-.25 F 2.776(os)-.1 G .277
-(pecial cases.)362.128 176.4 R .277(If pre\214x)5.277 F .277(ed by a v)-.15 F
-(erti-)-.15 E .18(cal bar \(\231)102 188.4 R .833<7c9a>.833 G 2.68(\)t)-.833 G
-.179(he rest of the address is processed as a shell command.)156.456 188.4 R
-.179(If the user name be)5.179 F .179(gins with a)-.15 F(slash mark \(\231/)102
-200.4 Q(\232\) the name is used as a \214le name, instead of a login name.).833
+/F0 10/Times-Bold@0 SF 192.28(SMM:9-6 SENDMAIL)72 60 R 2.5<8a41>2.5 G
+2.5(nI)-2.5 G(nter)-2.5 E(netw)-.15 E(ork Mail Router)-.1 E 2.5
+(3.2. Mail)87 96 R(to Files and Pr)2.5 E(ograms)-.18 E/F1 10
+/Times-Roman@0 SF .609(Files and programs are le)127 112.2 R .609
+(gitimate message recipients.)-.15 F .609(Files pro)5.609 F .609
+(vide archi)-.15 F -.25(va)-.25 G 3.109(ls).25 G .61(torage of mes-)
+-3.109 F .124(sages, useful for project administration and history)102
+124.2 R 5.124(.P)-.65 G .124(rograms are useful as recipients in a v)
+-5.124 F .124(ariety of)-.25 F .69(situations, for e)102 136.2 R .691(xample, to maintain a public repository of systems messages \(such as the Berk)
+-.15 F(ele)-.1 E(y)-.15 E/F2 10/Times-Italic@0 SF(msgs)102 148.2 Q F1
+(program, or the MARS system [Sattle)2.5 E(y78]\).)-.15 E(An)127 164.4 Q
+3.188(ya)-.15 G .688(ddress passing through the initial parsing algorithm as a local address \(i.e, not appear)
+-3.188 F(-)-.2 E .276(ing to be a v)102 176.4 R .276
+(alid address for another mailer\) is scanned for tw)-.25 F 2.776(os)-.1
+G .277(pecial cases.)-2.776 F .277(If pre\214x)5.277 F .277(ed by a v)
+-.15 F(erti-)-.15 E .18(cal bar \(\231)102 188.4 R .833<7c9a>.833 G 2.68
+(\)t)-.833 G .179
+(he rest of the address is processed as a shell command.)-2.68 F .179
+(If the user name be)5.179 F .179(gins with a)-.15 F(slash mark \(\231/)
+102 200.4 Q
+(\232\) the name is used as a \214le name, instead of a login name.).833
E .241(Files that ha)127 216.6 R .541 -.15(ve s)-.2 H .241
(etuid or setgid bits set b).15 F .241(ut no e)-.2 F -.15(xe)-.15 G .241
-(cute bits set ha).15 F .541 -.15(ve t)-.2 H .241(hose bits honored if).15 F F2
-(send-)2.742 E(mail)102 228.6 Q F1(is running as root.)2.5 E F0 2.5
-(3.3. Aliasing,)87 252.6 R -.25(Fo)2.5 G(rwarding, Inclusion).25 E F2(Sendmail)
-127 268.8 Q F1 1.075(reroutes mail three w)3.575 F 3.575(ays. Aliasing)-.1 F
-1.074(applies system wide.)3.575 F -.15(Fo)6.074 G(rw).15 E 1.074(arding allo)
--.1 F 1.074(ws each)-.25 F .233
-(user to reroute incoming mail destined for that account.)102 280.8 R .233
-(Inclusion directs)5.233 F F2(sendmail)2.733 E F1 .233(to read a \214le for)
-2.733 F 2.5(al)102 292.8 S
-(ist of addresses, and is normally used in conjunction with aliasing.)111.72
-292.8 Q F0 2.5(3.3.1. Aliasing)102 316.8 R F1 1.554
-(Aliasing maps names to address lists using a system-wide \214le.)142 333 R
-1.553(This \214le is inde)6.553 F -.15(xe)-.15 G 4.053(dt).15 G(o)499 333 Q 1.1
-(speed access.)117 345 R 1.101(Only names that parse as local are allo)6.1 F
-1.101(wed as aliases; this guarantees a unique)-.25 F -.1(ke)117 357 S 2.5(y\()
--.05 G(since there are no nicknames for the local host\).)137.02 357 Q F0 2.5
-(3.3.2. F)102 381 R(orwarding)-.25 E F1 .651
+(cute bits set ha).15 F .541 -.15(ve t)-.2 H .241(hose bits honored if)
+.15 F F2(send-)2.742 E(mail)102 228.6 Q F1(is running as root.)2.5 E F0
+2.5(3.3. Aliasing,)87 252.6 R -.25(Fo)2.5 G(rwarding, Inclusion).25 E F2
+(Sendmail)127 268.8 Q F1 1.075(reroutes mail three w)3.575 F 3.575
+(ays. Aliasing)-.1 F 1.074(applies system wide.)3.575 F -.15(Fo)6.074 G
+(rw).15 E 1.074(arding allo)-.1 F 1.074(ws each)-.25 F .233
+(user to reroute incoming mail destined for that account.)102 280.8 R
+.233(Inclusion directs)5.233 F F2(sendmail)2.733 E F1 .233
+(to read a \214le for)2.733 F 2.5(al)102 292.8 S
+(ist of addresses, and is normally used in conjunction with aliasing.)
+-2.5 E F0 2.5(3.3.1. Aliasing)102 316.8 R F1 1.554
+(Aliasing maps names to address lists using a system-wide \214le.)142
+333 R 1.553(This \214le is inde)6.553 F -.15(xe)-.15 G 4.053(dt).15 G(o)
+-4.053 E 1.1(speed access.)117 345 R 1.101
+(Only names that parse as local are allo)6.1 F 1.101
+(wed as aliases; this guarantees a unique)-.25 F -.1(ke)117 357 S 2.5
+(y\()-.05 G(since there are no nicknames for the local host\).)-2.5 E F0
+2.5(3.3.2. F)102 381 R(orwarding)-.25 E F1 .651
(After aliasing, recipients that are local and v)142 397.2 R .651
-(alid are check)-.25 F .65(ed for the e)-.1 F .65(xistence of a \231.for)-.15 F
-(-)-.2 E -.1(wa)117 409.2 S .493(rd\232 \214le in their home directory).1 F
-5.493(.I)-.65 G 2.994(fi)264.178 409.2 S 2.994(te)273.282 409.2 S .494
-(xists, the message is)283.346 409.2 R F2(not)2.994 E F1 .494
-(sent to that user)2.994 F 2.994(,b)-.4 G .494(ut rather to)459.132 409.2 R .37
-(the list of users in that \214le.)117 421.2 R .37
-(Often this list will contain only one address, and the feature will be)5.37 F
-(used for netw)117 433.2 Q(ork mail forw)-.1 E(arding.)-.1 E -.15(Fo)142 449.4
-S(rw).15 E 1.151(arding also permits a user to specify a pri)-.1 F -.25(va)-.25
-G 1.152(te incoming mailer).25 F 6.152(.F)-.55 G 1.152(or e)437.346 449.4 R
-1.152(xample, for)-.15 F(-)-.2 E -.1(wa)117 461.4 S(rding to:).1 E -2.5 .833
-("| /)157 477.6 T(usr/local/ne)-.833 E(wmail myname")-.25 E(will use a dif)117
-493.8 Q(ferent incoming mailer)-.25 E(.)-.55 E F0 2.5(3.3.3. Inclusion)102
-517.8 R F1(Inclusion is speci\214ed in RFC 733 [Crock)142 534 Q(er77a] syntax:)
--.1 E(:Include: pathname)157 550.2 Q .391
+(alid are check)-.25 F .65(ed for the e)-.1 F .65
+(xistence of a \231.for)-.15 F(-)-.2 E -.1(wa)117 409.2 S .493
+(rd\232 \214le in their home directory).1 F 5.493(.I)-.65 G 2.994(fi)
+-5.493 G 2.994(te)-2.994 G .494(xists, the message is)-3.144 F F2(not)
+2.994 E F1 .494(sent to that user)2.994 F 2.994(,b)-.4 G .494
+(ut rather to)-3.194 F .37(the list of users in that \214le.)117 421.2 R
+.37
+(Often this list will contain only one address, and the feature will be)
+5.37 F(used for netw)117 433.2 Q(ork mail forw)-.1 E(arding.)-.1 E -.15
+(Fo)142 449.4 S(rw).15 E 1.151
+(arding also permits a user to specify a pri)-.1 F -.25(va)-.25 G 1.152
+(te incoming mailer).25 F 6.152(.F)-.55 G 1.152(or e)-6.302 F 1.152
+(xample, for)-.15 F(-)-.2 E -.1(wa)117 461.4 S(rding to:).1 E -2.5 .833
+("| /)157 477.6 T(usr/local/ne)-.833 E(wmail myname")-.25 E
+(will use a dif)117 493.8 Q(ferent incoming mailer)-.25 E(.)-.55 E F0
+2.5(3.3.3. Inclusion)102 517.8 R F1
+(Inclusion is speci\214ed in RFC 733 [Crock)142 534 Q(er77a] syntax:)-.1
+E(:Include: pathname)157 550.2 Q .391
(An address of this form reads the \214le speci\214ed by)117 566.4 R F2
(pathname)2.891 E F1 .391(and sends to all users listed in that)2.891 F
-(\214le.)117 578.4 Q .644(The intent is)142 594.6 R F2(not)3.144 E F1 .644
-(to support direct use of this feature, b)3.144 F .644
-(ut rather to use this as a subset of)-.2 F 2.5(aliasing. F)117 606.6 R(or e)
--.15 E(xample, an alias of the form:)-.15 E
-(project: :include:/usr/project/userlist)157 622.8 Q 1.93(is a method of letti\
-ng a project maintain a mailing list without interaction with the system)117
-639 R(administration, e)117 651 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)203.54 651
-S(he alias \214le is protected.)212.15 651 Q 2.024(It is not necessary to reb)
-142 667.2 R 2.024(uild the inde)-.2 F 4.524(xo)-.15 G 4.524(nt)317.822 667.2 S
-2.025(he alias database when a :include: list is)330.126 667.2 R(changed.)117
-679.2 Q EP
+(\214le.)117 578.4 Q .644(The intent is)142 594.6 R F2(not)3.144 E F1
+.644(to support direct use of this feature, b)3.144 F .644
+(ut rather to use this as a subset of)-.2 F 2.5(aliasing. F)117 606.6 R
+(or e)-.15 E(xample, an alias of the form:)-.15 E
+(project: :include:/usr/project/userlist)157 622.8 Q 1.93(is a method of letting a project maintain a mailing list without interaction with the system)
+117 639 R(administration, e)117 651 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5
+(ft)-2.5 G(he alias \214le is protected.)-2.5 E 2.024
+(It is not necessary to reb)142 667.2 R 2.024(uild the inde)-.2 F 4.524
+(xo)-.15 G 4.524(nt)-4.524 G 2.025
+(he alias database when a :include: list is)-4.524 F(changed.)117 679.2
+Q EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(SENDMAIL \212 An Inter)72 60 Q(netw)-.15 E
-(ork Mail Router)-.1 E(SMM:9-7)462.9 60 Q 2.5(3.4. Message)87 96 R(Collection)
-2.5 E/F1 10/Times-Roman@0 SF .857
+(ork Mail Router)-.1 E(SMM:9-7)194.78 E 2.5(3.4. Message)87 96 R
+(Collection)2.5 E/F1 10/Times-Roman@0 SF .857
(Once all recipient addresses are parsed and v)127 112.2 R .857
(eri\214ed, the message is collected.)-.15 F .856(The message)5.857 F
(comes in tw)102 124.2 Q 2.5(op)-.1 G
-(arts: a message header and a message body)162.73 124.2 Q 2.5(,s)-.65 G
-(eparated by a blank line.)343.42 124.2 Q
+(arts: a message header and a message body)-2.5 E 2.5(,s)-.65 G
+(eparated by a blank line.)-2.5 E
(The header is formatted as a series of lines of the form)127 140.4 Q
-(\214eld-name: \214eld-v)178 156.6 Q(alue)-.25 E(Field-v)102 172.8 Q 1.366
-(alue can be split across lines by starting the follo)-.25 F 1.366
-(wing lines with a space or a tab)-.25 F 6.366(.S)-.4 G(ome)486.78 172.8 Q .211
-(header \214elds ha)102 184.8 R .511 -.15(ve s)-.2 H .211
+(\214eld-name: \214eld-v)178 156.6 Q(alue)-.25 E(Field-v)102 172.8 Q
+1.366(alue can be split across lines by starting the follo)-.25 F 1.366
+(wing lines with a space or a tab)-.25 F 6.366(.S)-.4 G(ome)-6.366 E
+.211(header \214elds ha)102 184.8 R .511 -.15(ve s)-.2 H .211
(pecial internal meaning, and ha).15 F .511 -.15(ve a)-.2 H .211
(ppropriate special processing.).15 F .21(Other headers)5.21 F
(are simply passed through.)102 196.8 Q
(Some header \214elds may be added automatically)5 E 2.5(,s)-.65 G
-(uch as time stamps.)413.53 196.8 Q .86(The body is a series of te)127 213 R
-.861(xt lines.)-.15 F .861(It is completely uninterpreted and untouched, e)
-5.861 F .861(xcept that)-.15 F 1.43(lines be)102 225 R 1.43
-(ginning with a dot ha)-.15 F 1.729 -.15(ve t)-.2 H 1.429
-(he dot doubled when transmitted o).15 F -.15(ve)-.15 G 3.929(ra).15 G 3.929
-(nS)407.213 225 S 1.429(MTP channel.)421.702 225 R(This)6.429 E -.15(ex)102 237
-S(tra dot is stripped by the recei).15 E -.15(ve)-.25 G -.55(r.).15 G F0 2.5
-(3.5. Message)87 261 R(Deli)2.5 E -.1(ve)-.1 G(ry).1 E F1 .028
+(uch as time stamps.)-2.5 E .86(The body is a series of te)127 213 R
+.861(xt lines.)-.15 F .861
+(It is completely uninterpreted and untouched, e)5.861 F .861
+(xcept that)-.15 F 1.43(lines be)102 225 R 1.43(ginning with a dot ha)
+-.15 F 1.729 -.15(ve t)-.2 H 1.429(he dot doubled when transmitted o).15
+F -.15(ve)-.15 G 3.929(ra).15 G 3.929(nS)-3.929 G 1.429(MTP channel.)
+-3.929 F(This)6.429 E -.15(ex)102 237 S
+(tra dot is stripped by the recei).15 E -.15(ve)-.25 G -.55(r.).15 G F0
+2.5(3.5. Message)87 261 R(Deli)2.5 E -.1(ve)-.1 G(ry).1 E F1 .028
(The send queue is ordered by recei)127 277.2 R .029
(ving host before transmission to implement message batch-)-.25 F 3.07
(ing. Each)102 289.2 R .57(address is mark)3.07 F .57
-(ed as it is sent so rescanning the list is safe.)-.1 F .57(An ar)5.57 F .57
-(gument list is b)-.18 F .57(uilt as)-.2 F 1.138(the scan proceeds.)102 301.2 R
-1.139(Mail to \214les is detected during the scan of the send list.)6.139 F
-1.139(The interf)6.139 F 1.139(ace to the)-.1 F
-(mailer is performed using one of the techniques described in section 2.2.)102
-313.2 Q .996(After a connection is established,)127 329.4 R/F2 10
-/Times-Italic@0 SF(sendmail)3.496 E F1(mak)3.495 E .995(es the per)-.1 F .995
-(-mailer changes to the header and)-.2 F .236(sends the result to the mailer)
-102 341.4 R 5.236(.I)-.55 G 2.736(fa)228.406 341.4 S .537 -.15(ny m)238.912
-341.4 T .237(ail is rejected by the mailer).15 F 2.737(,a\215)-.4 G .237
-(ag is set to in)386.628 341.4 R -.2(vo)-.4 G .437 -.1(ke t).2 H .237
-(he return-).1 F(to-sender function after all deli)102 353.4 Q -.15(ve)-.25 G
-(ry completes.).15 E F0 2.5(3.6. Queued)87 377.4 R(Messages)2.5 E F1 .163
-(If the mailer returns a \231temporary f)127 393.6 R .163(ailure\232 e)-.1 F
-.162(xit status, the message is queued.)-.15 F 2.662(Ac)5.162 G .162
-(ontrol \214le is)455.336 393.6 R .85
+(ed as it is sent so rescanning the list is safe.)-.1 F .57(An ar)5.57 F
+.57(gument list is b)-.18 F .57(uilt as)-.2 F 1.138(the scan proceeds.)
+102 301.2 R 1.139
+(Mail to \214les is detected during the scan of the send list.)6.139 F
+1.139(The interf)6.139 F 1.139(ace to the)-.1 F(mailer is performed using one of the techniques described in section 2.2.)
+102 313.2 Q .996(After a connection is established,)127 329.4 R/F2 10
+/Times-Italic@0 SF(sendmail)3.496 E F1(mak)3.495 E .995(es the per)-.1 F
+.995(-mailer changes to the header and)-.2 F .236
+(sends the result to the mailer)102 341.4 R 5.236(.I)-.55 G 2.736(fa)
+-5.236 G .537 -.15(ny m)-2.736 H .237(ail is rejected by the mailer).15
+F 2.737(,a\215)-.4 G .237(ag is set to in)-2.737 F -.2(vo)-.4 G .437 -.1
+(ke t).2 H .237(he return-).1 F(to-sender function after all deli)102
+353.4 Q -.15(ve)-.25 G(ry completes.).15 E F0 2.5(3.6. Queued)87 377.4 R
+(Messages)2.5 E F1 .163(If the mailer returns a \231temporary f)127
+393.6 R .163(ailure\232 e)-.1 F .162(xit status, the message is queued.)
+-.15 F 2.662(Ac)5.162 G .162(ontrol \214le is)-2.662 F .85
(used to describe the recipients to be sent to and v)102 405.6 R .851
-(arious other parameters.)-.25 F .851(This control \214le is for)5.851 F(-)-.2
-E 1.011(matted as a series of lines, each describing a sender)102 417.6 R 3.511
-(,ar)-.4 G 1.011(ecipient, the time of submission, or some)333.494 417.6 R .776
-(other salient parameter of the message.)102 429.6 R .776
-(The header of the message is stored in the control \214le, so)5.776 F(that th\
-e associated data \214le in the queue is just the temporary \214le that w)102
-441.6 Q(as originally collected.)-.1 E F0 2.5(3.7. Con\214guration)87 465.6 R
-F1 .493(Con\214guration is controlled primarily by a con\214guration \214le re\
-ad at startup.)127 481.8 R F2(Sendmail)5.492 E F1(should)2.992 E
-(not need to be recomplied e)102 493.8 Q(xcept)-.15 E 12.5(\(1\) T)107 510 R
-2.5(oc)-.8 G(hange operating systems \(V6, V7/32V)150.91 510 Q 2.5(,4)-1.29 G
-(BSD\).)313.21 510 Q 12.5(\(2\) T)107 526.2 R 2.5(or)-.8 G(emo)149.8 526.2 Q .3
--.15(ve o)-.15 H 2.5(ri).15 G(nsert the DBM \(UNIX database\) library)192.27
-526.2 Q(.)-.65 E 12.5(\(3\) T)107 542.4 R 2.5(oc)-.8 G(hange ARP)150.91 542.4 Q
-(ANET reply codes.)-.92 E 12.5(\(4\) T)107 558.6 R 2.5(oa)-.8 G
-(dd headers \214elds requiring special processing.)150.91 558.6 Q .434
+(arious other parameters.)-.25 F .851(This control \214le is for)5.851 F
+(-)-.2 E 1.011(matted as a series of lines, each describing a sender)102
+417.6 R 3.511(,ar)-.4 G 1.011(ecipient, the time of submission, or some)
+-3.511 F .776(other salient parameter of the message.)102 429.6 R .776
+(The header of the message is stored in the control \214le, so)5.776 F(that the associated data \214le in the queue is just the temporary \214le that w)
+102 441.6 Q(as originally collected.)-.1 E F0 2.5(3.7. Con\214guration)
+87 465.6 R F1 .493(Con\214guration is controlled primarily by a con\214guration \214le read at startup.)
+127 481.8 R F2(Sendmail)5.492 E F1(should)2.992 E
+(not need to be recomplied e)102 493.8 Q(xcept)-.15 E 12.5(\(1\) T)107
+510 R 2.5(oc)-.8 G(hange operating systems \(V6, V7/32V)-2.5 E 2.5(,4)
+-1.29 G(BSD\).)-2.5 E 12.5(\(2\) T)107 526.2 R 2.5(or)-.8 G(emo)-2.5 E
+.3 -.15(ve o)-.15 H 2.5(ri).15 G
+(nsert the DBM \(UNIX database\) library)-2.5 E(.)-.65 E 12.5(\(3\) T)
+107 542.4 R 2.5(oc)-.8 G(hange ARP)-2.5 E(ANET reply codes.)-.92 E 12.5
+(\(4\) T)107 558.6 R 2.5(oa)-.8 G
+(dd headers \214elds requiring special processing.)-2.5 E .434
(Adding mailers or changing parsing \(i.e., re)102 574.8 R .435
-(writing\) or routing information does not require recom-)-.25 F(pilation.)102
-586.8 Q 1.317(If the mail is being sent by a local user)127 603 R 3.817(,a)-.4
-G 1.317(nd the \214le \231.mailcf\232 e)303.914 603 R 1.317
-(xists in the sender')-.15 F 3.817(sh)-.55 G(ome)486.78 603 Q(directory)102 615
-Q 2.721(,t)-.65 G .221(hat \214le is read as a con\214guration \214le after th\
-e system con\214guration \214le.)145.451 615 R .222(The primary use)5.222 F
-(of this feature is to add header lines.)102 627 Q 3.25(The con\214guration \
-\214le encodes macro de\214nitions, header de\214nitions, mailer de\214nitions\
-,)127 643.2 R(re)102 655.2 Q(writing rules, and options.)-.25 E F0 2.5
-(3.7.1. Macr)102 679.2 R(os)-.18 E F1 .332(Macros can be used in three w)142
-695.4 R 2.833(ays. Certain)-.1 F .333(macros transmit unstructured te)2.833 F
-.333(xtual informa-)-.15 F .07(tion into the mail system, such as the name)117
-707.4 R F2(sendmail)2.57 E F1 .07
-(will use to identify itself in error messages.)2.57 F 1.247
-(Other macros transmit information from)117 719.4 R F2(sendmail)3.747 E F1
-1.247(to the con\214guration \214le for use in creating)3.747 F EP
+(writing\) or routing information does not require recom-)-.25 F
+(pilation.)102 586.8 Q 1.317(If the mail is being sent by a local user)
+127 603 R 3.817(,a)-.4 G 1.317(nd the \214le \231.mailcf\232 e)-3.817 F
+1.317(xists in the sender')-.15 F 3.817(sh)-.55 G(ome)-3.817 E
+(directory)102 615 Q 2.721(,t)-.65 G .221(hat \214le is read as a con\214guration \214le after the system con\214guration \214le.)
+-2.721 F .222(The primary use)5.222 F
+(of this feature is to add header lines.)102 627 Q 3.25(The con\214guration \214le encodes macro de\214nitions, header de\214nitions, mailer de\214nitions,)
+127 643.2 R(re)102 655.2 Q(writing rules, and options.)-.25 E F0 2.5
+(3.7.1. Macr)102 679.2 R(os)-.18 E F1 .332
+(Macros can be used in three w)142 695.4 R 2.833(ays. Certain)-.1 F .333
+(macros transmit unstructured te)2.833 F .333(xtual informa-)-.15 F .07
+(tion into the mail system, such as the name)117 707.4 R F2(sendmail)
+2.57 E F1 .07(will use to identify itself in error messages.)2.57 F
+1.247(Other macros transmit information from)117 719.4 R F2(sendmail)
+3.747 E F1 1.247(to the con\214guration \214le for use in creating)3.747
+F EP
%%Page: 8 8
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF 192.28(SMM:9-8 SENDMAIL)72 60 R 2.5<8a41>2.5 G 2.5(nI)
-383.99 60 S(nter)395.94 60 Q(netw)-.15 E(ork Mail Router)-.1 E/F1 10
-/Times-Roman@0 SF .312(other \214elds \(such as ar)117 96 R .312(gument v)-.18
-F .312(ectors to mailers\); e.g., the name of the sender)-.15 F 2.811(,a)-.4 G
-.311(nd the host and)442.237 96 R .848(user of the recipient.)117 108 R .848
+/F0 10/Times-Bold@0 SF 192.28(SMM:9-8 SENDMAIL)72 60 R 2.5<8a41>2.5 G
+2.5(nI)-2.5 G(nter)-2.5 E(netw)-.15 E(ork Mail Router)-.1 E/F1 10
+/Times-Roman@0 SF .312(other \214elds \(such as ar)117 96 R .312
+(gument v)-.18 F .312(ectors to mailers\); e.g., the name of the sender)
+-.15 F 2.811(,a)-.4 G .311(nd the host and)-2.811 F .848
+(user of the recipient.)117 108 R .848
(Other macros are unused internally)5.848 F 3.348(,a)-.65 G .848
-(nd can be used as shorthand in the)361.142 108 R(con\214guration \214le.)117
+(nd can be used as shorthand in the)-3.348 F(con\214guration \214le.)117
120 Q F0 2.5(3.7.2. Header)102 144 R(declarations)2.5 E F1 .355
-(Header declarations inform)142 160.2 R/F2 10/Times-Italic@0 SF(sendmail)2.854
-E F1 .354(of the format of kno)2.854 F .354(wn header lines.)-.25 F(Kno)5.354 E
-.354(wledge of)-.25 F 2.5(af)117 172.2 S .5 -.25(ew h)127.27 172.2 T
-(eader lines is b).25 E(uilt into)-.2 E F2(sendmail)2.5 E F1 2.5(,s)C
-(uch as the \231From:\232 and \231Date:\232 lines.)284.59 172.2 Q 1.201(Most c\
-on\214gured headers will be automatically inserted in the outgoing message if \
-the)142 188.4 R(y)-.15 E(don')117 200.4 Q 2.5(te)-.18 G
-(xist in the incoming message.)144.72 200.4 Q
-(Certain headers are suppressed by some mailers.)5 E F0 2.5(3.7.3. Mailer)102
-224.4 R(declarations)2.5 E F1 1.756(Mailer declarations tell)142 240.6 R F2
-(sendmail)4.256 E F1 1.756(of the v)4.256 F 1.756(arious mailers a)-.25 F -.25
-(va)-.2 G 1.756(ilable to it.).25 F 1.755(The de\214nition)6.755 F .119
-(speci\214es the internal name of the mailer)117 252.6 R 2.619(,t)-.4 G .12
-(he pathname of the program to call, some \215ags associ-)285.183 252.6 R 2.036
-(ated with the mailer)117 264.6 R 4.536(,a)-.4 G 2.036(nd an ar)213.894 264.6 R
-2.036(gument v)-.18 F 2.036(ector to be used on the call; this v)-.15 F 2.035
-(ector is macro-)-.15 F -.15(ex)117 276.6 S(panded before use.).15 E F0 2.5
-(3.7.4. Addr)102 300.6 R(ess r)-.18 E(ewriting rules)-.18 E F1 .458
+(Header declarations inform)142 160.2 R/F2 10/Times-Italic@0 SF
+(sendmail)2.854 E F1 .354(of the format of kno)2.854 F .354
+(wn header lines.)-.25 F(Kno)5.354 E .354(wledge of)-.25 F 2.5(af)117
+172.2 S .5 -.25(ew h)-2.5 H(eader lines is b).25 E(uilt into)-.2 E F2
+(sendmail)2.5 E F1 2.5(,s)C
+(uch as the \231From:\232 and \231Date:\232 lines.)-2.5 E 1.201(Most con\214gured headers will be automatically inserted in the outgoing message if the)
+142 188.4 R(y)-.15 E(don')117 200.4 Q 2.5(te)-.18 G
+(xist in the incoming message.)-2.65 E
+(Certain headers are suppressed by some mailers.)5 E F0 2.5
+(3.7.3. Mailer)102 224.4 R(declarations)2.5 E F1 1.756
+(Mailer declarations tell)142 240.6 R F2(sendmail)4.256 E F1 1.756
+(of the v)4.256 F 1.756(arious mailers a)-.25 F -.25(va)-.2 G 1.756
+(ilable to it.).25 F 1.755(The de\214nition)6.755 F .119
+(speci\214es the internal name of the mailer)117 252.6 R 2.619(,t)-.4 G
+.12(he pathname of the program to call, some \215ags associ-)-2.619 F
+2.036(ated with the mailer)117 264.6 R 4.536(,a)-.4 G 2.036(nd an ar)
+-4.536 F 2.036(gument v)-.18 F 2.036
+(ector to be used on the call; this v)-.15 F 2.035(ector is macro-)-.15
+F -.15(ex)117 276.6 S(panded before use.).15 E F0 2.5(3.7.4. Addr)102
+300.6 R(ess r)-.18 E(ewriting rules)-.18 E F1 .458
(The heart of address parsing in)142 316.8 R F2(sendmail)2.959 E F1 .459
-(is a set of re)2.959 F .459(writing rules.)-.25 F .459(These are an ordered)
-5.459 F .561(list of pattern-replacement rules, \(some)117 328.8 R .561
-(what lik)-.25 F 3.061(eap)-.1 G .561(roduction system, e)328.867 328.8 R .56
+(is a set of re)2.959 F .459(writing rules.)-.25 F .459
+(These are an ordered)5.459 F .561
+(list of pattern-replacement rules, \(some)117 328.8 R .561(what lik)
+-.25 F 3.061(eap)-.1 G .561(roduction system, e)-3.061 F .56
(xcept that order is criti-)-.15 F 1.905
-(cal\), which are applied to each address.)117 340.8 R 1.905(The address is re)
-6.905 F 1.906(written te)-.25 F 1.906(xtually until it is either)-.15 F(re)117
-352.8 Q .308(written into a special canonical form \(i.e., a \(mailer)-.25 F
-2.807(,h)-.4 G .307(ost, user\) 3-tuple, such as {arpanet, usc-)342.118 352.8 R
-.64(isif, postel} representing the address \231postel@usc-isif\232\), or it f)
-117 364.8 R .641(alls of)-.1 F 3.141(ft)-.25 G .641(he end.)406.466 364.8 R
-.641(When a pattern)5.641 F(matches, the rule is reapplied until it f)117 376.8
-Q(ails.)-.1 E 1.222
-(The con\214guration \214le also supports the editing of addresses into dif)142
-393 R 1.221(ferent formats.)-.25 F -.15(Fo)6.221 G(r).15 E -.15(ex)117 405 S
-(ample, an address of the form:).15 E(ucsfcgl!tef)157 421.2 Q
+(cal\), which are applied to each address.)117 340.8 R 1.905
+(The address is re)6.905 F 1.906(written te)-.25 F 1.906
+(xtually until it is either)-.15 F(re)117 352.8 Q .308
+(written into a special canonical form \(i.e., a \(mailer)-.25 F 2.807
+(,h)-.4 G .307(ost, user\) 3-tuple, such as {arpanet, usc-)-2.807 F .64
+(isif, postel} representing the address \231postel@usc-isif\232\), or it f)
+117 364.8 R .641(alls of)-.1 F 3.141(ft)-.25 G .641(he end.)-3.141 F
+.641(When a pattern)5.641 F(matches, the rule is reapplied until it f)
+117 376.8 Q(ails.)-.1 E 1.222(The con\214guration \214le also supports the editing of addresses into dif)
+142 393 R 1.221(ferent formats.)-.25 F -.15(Fo)6.221 G(r).15 E -.15(ex)
+117 405 S(ample, an address of the form:).15 E(ucsfcgl!tef)157 421.2 Q
(might be mapped into:)117 437.4 Q(tef@ucsfcgl.UUCP)157 453.6 Q
(to conform to the domain syntax.)117 469.8 Q -.35(Tr)5 G
(anslations can also be done in the other direction.).35 E F0 2.5
-(3.7.5. Option)102 493.8 R(setting)2.5 E F1 1.168(There are se)142 510 R -.15
-(ve)-.25 G 1.169(ral options that can be set from the con\214guration \214le.)
-.15 F 1.169(These include the)6.169 F(pathnames of v)117 522 Q
-(arious support \214les, timeouts, def)-.25 E(ault modes, etc.)-.1 E F0 2.5
-(4. COMP)72 546 R(ARISON WITH O)-.74 E(THER MAILERS)-.4 E 2.5(4.1. Deli)87 570
-R -.1(ve)-.1 G(rmail).1 E F2(Sendmail)127 586.2 Q F1(is an outgro)2.5 E(wth of)
--.25 E F2(delivermail)2.5 E F1 5(.T)C(he primary dif)301.18 586.2 Q
-(ferences are:)-.25 E 12.5(\(1\) Con\214guration)107 602.4 R .273
-(information is not compiled in.)2.773 F .272(This change simpli\214es man)
-5.273 F 2.772(yo)-.15 G 2.772(ft)445.686 602.4 S .272(he problems)454.568 602.4
-R(of mo)133.66 614.4 Q(ving to other machines.)-.15 E(It also allo)5 E
-(ws easy deb)-.25 E(ugging of ne)-.2 E 2.5(wm)-.25 G(ailers.)413.89 614.4 Q
-12.5(\(2\) Address)107 630.6 R .681(parsing is more \215e)3.181 F 3.182
-(xible. F)-.15 F .682(or e)-.15 F(xample,)-.15 E F2(delivermail)3.182 E F1 .682
-(only supported one g)3.182 F(ate)-.05 E -.1(wa)-.25 G 3.182(yt).1 G(o)499
-630.6 Q(an)133.66 642.6 Q 2.817(yn)-.15 G(etw)155.767 642.6 Q .317
-(ork, whereas)-.1 F F2(sendmail)2.817 E F1 .317(can be sensiti)2.817 F .616
--.15(ve t)-.25 H 2.816(oh).15 G .316(ost names and reroute to dif)345.224 642.6
-R .316(ferent g)-.25 F(ate-)-.05 E -.1(wa)133.66 654.6 S(ys.).1 E 12.5(\(3\) F)
-107 670.8 R(orw)-.15 E 1.627(arding and :include: features eliminate the requi\
-rement that the system alias \214le be)-.1 F .074(writable by an)133.66 682.8 R
-2.574(yu)-.15 G .073
-(ser \(or that an update program be written, or that the system administration)
-203.442 682.8 R(mak)133.66 694.8 Q 2.5(ea)-.1 G(ll changes\).)162.16 694.8 Q
-(\(4\))107 711 Q F2(Sendmail)133.66 711 Q F1 .4
-(supports message batching across netw)2.9 F .401
-(orks when a message is being sent to mul-)-.1 F(tiple recipients.)133.66 723 Q
-EP
+(3.7.5. Option)102 493.8 R(setting)2.5 E F1 1.168(There are se)142 510 R
+-.15(ve)-.25 G 1.169
+(ral options that can be set from the con\214guration \214le.).15 F
+1.169(These include the)6.169 F(pathnames of v)117 522 Q
+(arious support \214les, timeouts, def)-.25 E(ault modes, etc.)-.1 E F0
+2.5(4. COMP)72 546 R(ARISON WITH O)-.74 E(THER MAILERS)-.4 E 2.5
+(4.1. Deli)87 570 R -.1(ve)-.1 G(rmail).1 E F2(Sendmail)127 586.2 Q F1
+(is an outgro)2.5 E(wth of)-.25 E F2(delivermail)2.5 E F1 5(.T)C
+(he primary dif)-5 E(ferences are:)-.25 E 12.5(\(1\) Con\214guration)107
+602.4 R .273(information is not compiled in.)2.773 F .272
+(This change simpli\214es man)5.273 F 2.772(yo)-.15 G 2.772(ft)-2.772 G
+.272(he problems)-2.772 F(of mo)133.66 614.4 Q(ving to other machines.)
+-.15 E(It also allo)5 E(ws easy deb)-.25 E(ugging of ne)-.2 E 2.5(wm)
+-.25 G(ailers.)-2.5 E 12.5(\(2\) Address)107 630.6 R .681
+(parsing is more \215e)3.181 F 3.182(xible. F)-.15 F .682(or e)-.15 F
+(xample,)-.15 E F2(delivermail)3.182 E F1 .682(only supported one g)
+3.182 F(ate)-.05 E -.1(wa)-.25 G 3.182(yt).1 G(o)-3.182 E(an)133.66
+642.6 Q 2.817(yn)-.15 G(etw)-2.817 E .317(ork, whereas)-.1 F F2
+(sendmail)2.817 E F1 .317(can be sensiti)2.817 F .616 -.15(ve t)-.25 H
+2.816(oh).15 G .316(ost names and reroute to dif)-2.816 F .316(ferent g)
+-.25 F(ate-)-.05 E -.1(wa)133.66 654.6 S(ys.).1 E 12.5(\(3\) F)107 670.8
+R(orw)-.15 E 1.627(arding and :include: features eliminate the requirement that the system alias \214le be)
+-.1 F .074(writable by an)133.66 682.8 R 2.574(yu)-.15 G .073(ser \(or that an update program be written, or that the system administration)
+-2.574 F(mak)133.66 694.8 Q 2.5(ea)-.1 G(ll changes\).)-2.5 E(\(4\))107
+711 Q F2(Sendmail)15 E F1 .4(supports message batching across netw)2.9 F
+.401(orks when a message is being sent to mul-)-.1 F(tiple recipients.)
+133.66 723 Q EP
%%Page: 9 9
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(SENDMAIL \212 An Inter)72 60 Q(netw)-.15 E
-(ork Mail Router)-.1 E(SMM:9-9)462.9 60 Q/F1 10/Times-Roman@0 SF 12.5(\(5\) A)
-107 96 R .875(mail queue is pro)3.375 F .874(vided in)-.15 F/F2 10
-/Times-Italic@0 SF(sendmail.)3.374 E F1 .874(Mail that cannot be deli)5.874 F
--.15(ve)-.25 G .874(red immediately b).15 F .874(ut can)-.2 F 1.063
-(potentially be deli)133.66 108 R -.15(ve)-.25 G 1.064
-(red later is stored in this queue for a later retry).15 F 6.064(.T)-.65 G
-1.064(he queue also pro-)427.218 108 R .896(vides a b)133.66 120 R(uf)-.2 E
-.896(fer ag)-.25 F .895
-(ainst system crashes; after the message has been collected it may be reli-)
--.05 F(ably redeli)133.66 132 Q -.15(ve)-.25 G(red e).15 E -.15(ve)-.25 G 2.5
-(ni).15 G 2.5(ft)224.22 132 S(he system crashes during the initial deli)232.83
-132 Q -.15(ve)-.25 G(ry).15 E(.)-.65 E(\(6\))107 148.2 Q F2(Sendmail)133.66
-148.2 Q F1 .197(uses the netw)2.696 F .197(orking support pro)-.1 F .197
-(vided by 4.2BSD to pro)-.15 F .197(vide a direct interf)-.15 F .197(ace net-)
--.1 F -.1(wo)133.66 160.2 S .07(rks such as the ARP).1 F .07
-(ANET and/or Ethernet using SMTP \(the Simple Mail T)-.92 F .07(ransfer Proto-)
--.35 F(col\) o)133.66 172.2 Q -.15(ve)-.15 G 2.5(raT).15 G(CP/IP connection.)
-184.73 172.2 Q F0 2.5(4.2. MMDF)87 196.2 R F1 .957(MMDF [Crock)127 212.4 R .957
-(er79] spans a wider problem set than)-.1 F F2(sendmail)3.458 E F1 5.958(.F)C
-.958(or e)395.058 212.4 R .958(xample, the domain of)-.15 F .721
-(MMDF includes a \231phone netw)102 224.4 R .721(ork\232 mailer)-.1 F 3.221(,w)
--.4 G(hereas)290.516 224.4 Q F2(sendmail)3.221 E F1 .721(calls on pree)3.221 F
-.72(xisting mailers in most)-.15 F(cases.)102 236.4 Q .175(MMDF and)127 252.6 R
-F2(sendmail)2.675 E F1 .175
-(both support aliasing, customized mailers, message batching, automatic)2.675 F
-(forw)102 264.6 Q .792(arding to g)-.1 F(ate)-.05 E -.1(wa)-.25 G .792
-(ys, queueing, and retransmission.).1 F .792(MMDF supports tw)5.792 F .792
-(o-stage timeout, which)-.1 F F2(sendmail)102 276.6 Q F1(does not support.)2.5
-E(The con\214guration for MMDF is compiled into the code)127 294.8 Q/F3 7
-/Times-Roman@0 SF(4)348.65 290.8 Q F1(.)352.15 294.8 Q .037
+(ork Mail Router)-.1 E(SMM:9-9)194.78 E/F1 10/Times-Roman@0 SF 12.5
+(\(5\) A)107 96 R .875(mail queue is pro)3.375 F .874(vided in)-.15 F/F2
+10/Times-Italic@0 SF(sendmail.)3.374 E F1 .874(Mail that cannot be deli)
+5.874 F -.15(ve)-.25 G .874(red immediately b).15 F .874(ut can)-.2 F
+1.063(potentially be deli)133.66 108 R -.15(ve)-.25 G 1.064
+(red later is stored in this queue for a later retry).15 F 6.064(.T)-.65
+G 1.064(he queue also pro-)-6.064 F .896(vides a b)133.66 120 R(uf)-.2 E
+.896(fer ag)-.25 F .895(ainst system crashes; after the message has been collected it may be reli-)
+-.05 F(ably redeli)133.66 132 Q -.15(ve)-.25 G(red e).15 E -.15(ve)-.25
+G 2.5(ni).15 G 2.5(ft)-2.5 G(he system crashes during the initial deli)
+-2.5 E -.15(ve)-.25 G(ry).15 E(.)-.65 E(\(6\))107 148.2 Q F2(Sendmail)15
+E F1 .197(uses the netw)2.696 F .197(orking support pro)-.1 F .197
+(vided by 4.2BSD to pro)-.15 F .197(vide a direct interf)-.15 F .197
+(ace net-)-.1 F -.1(wo)133.66 160.2 S .07(rks such as the ARP).1 F .07
+(ANET and/or Ethernet using SMTP \(the Simple Mail T)-.92 F .07
+(ransfer Proto-)-.35 F(col\) o)133.66 172.2 Q -.15(ve)-.15 G 2.5(raT).15
+G(CP/IP connection.)-2.5 E F0 2.5(4.2. MMDF)87 196.2 R F1 .957
+(MMDF [Crock)127 212.4 R .957(er79] spans a wider problem set than)-.1 F
+F2(sendmail)3.458 E F1 5.958(.F)C .958(or e)-6.108 F .958
+(xample, the domain of)-.15 F .721(MMDF includes a \231phone netw)102
+224.4 R .721(ork\232 mailer)-.1 F 3.221(,w)-.4 G(hereas)-3.221 E F2
+(sendmail)3.221 E F1 .721(calls on pree)3.221 F .72
+(xisting mailers in most)-.15 F(cases.)102 236.4 Q .175(MMDF and)127
+252.6 R F2(sendmail)2.675 E F1 .175
+(both support aliasing, customized mailers, message batching, automatic)
+2.675 F(forw)102 264.6 Q .792(arding to g)-.1 F(ate)-.05 E -.1(wa)-.25 G
+.792(ys, queueing, and retransmission.).1 F .792(MMDF supports tw)5.792
+F .792(o-stage timeout, which)-.1 F F2(sendmail)102 276.6 Q F1
+(does not support.)2.5 E
+(The con\214guration for MMDF is compiled into the code)127 294.8 Q/F3 7
+/Times-Roman@0 SF(4)-4 I F1(.)4 I .037
(Since MMDF does not consider backw)127 311 R .037
-(ards compatibility as a design goal, the address parsing)-.1 F(is simpler b)
-102 323 Q(ut much less \215e)-.2 E(xible.)-.15 E 1.159(It is some)127 341.2 R
-1.159(what harder to inte)-.25 F 1.159(grate a ne)-.15 F 3.659(wc)-.25 G
-(hannel)302.802 341.2 Q F3(5)329.462 337.2 Q F1 1.159(into MMDF)336.621 341.2 R
-6.16(.I)-.8 G 3.66(np)397.59 341.2 S(articular)411.25 341.2 Q 3.66(,M)-.4 G
-1.16(MDF must)459.22 341.2 R(kno)102 353.2 Q 3.225(wt)-.25 G .725(he location \
-and format of host tables for all channels, and the channel must speak a speci\
-al)129.975 353.2 R 2.525(protocol. This)102 365.2 R(allo)2.525 E .025
-(ws MMDF to do additional v)-.25 F .025(eri\214cation \(such as v)-.15 F .025
-(erifying host names\) at submis-)-.15 F(sion time.)102 377.2 Q 1.761
-(MMDF strictly separates the submission and deli)127 393.4 R -.15(ve)-.25 G
-1.761(ry phases.).15 F(Although)6.761 E F2(sendmail)4.261 E F1 1.76(has the)
-4.261 F .784(concept of each of these stages, the)102 405.4 R 3.284(ya)-.15 G
-.784(re inte)260.068 405.4 R .785(grated into one program, whereas in MMDF the)
--.15 F 3.285(ya)-.15 G(re)496.23 405.4 Q(split into tw)102 417.4 Q 2.5(op)-.1 G
-(rograms.)162.19 417.4 Q F0 2.5(4.3. Message)87 441.4 R(Pr)2.5 E
-(ocessing Module)-.18 E F1 .925
-(The Message Processing Module \(MPM\) discussed by Postel [Postel79b] matches)
+(ards compatibility as a design goal, the address parsing)-.1 F
+(is simpler b)102 323 Q(ut much less \215e)-.2 E(xible.)-.15 E 1.159
+(It is some)127 341.2 R 1.159(what harder to inte)-.25 F 1.159
+(grate a ne)-.15 F 3.659(wc)-.25 G(hannel)-3.659 E F3(5)-4 I F1 1.159
+(into MMDF)3.659 4 N 6.16(.I)-.8 G 3.66(np)-6.16 G(articular)-3.66 E
+3.66(,M)-.4 G 1.16(MDF must)-3.66 F(kno)102 353.2 Q 3.225(wt)-.25 G .725
+(he location and format of host tables for all channels, and the channel must speak a special)
+-3.225 F 2.525(protocol. This)102 365.2 R(allo)2.525 E .025
+(ws MMDF to do additional v)-.25 F .025(eri\214cation \(such as v)-.15 F
+.025(erifying host names\) at submis-)-.15 F(sion time.)102 377.2 Q
+1.761(MMDF strictly separates the submission and deli)127 393.4 R -.15
+(ve)-.25 G 1.761(ry phases.).15 F(Although)6.761 E F2(sendmail)4.261 E
+F1 1.76(has the)4.261 F .784(concept of each of these stages, the)102
+405.4 R 3.284(ya)-.15 G .784(re inte)-3.284 F .785
+(grated into one program, whereas in MMDF the)-.15 F 3.285(ya)-.15 G(re)
+-3.285 E(split into tw)102 417.4 Q 2.5(op)-.1 G(rograms.)-2.5 E F0 2.5
+(4.3. Message)87 441.4 R(Pr)2.5 E(ocessing Module)-.18 E F1 .925(The Message Processing Module \(MPM\) discussed by Postel [Postel79b] matches)
127 457.6 R F2(sendmail)3.425 E F1 1.364
-(closely in terms of its basic architecture.)102 469.6 R(Ho)6.364 E(we)-.25 E
--.15(ve)-.25 G 2.164 -.4(r, l).15 H(ik).4 E 3.864(eM)-.1 G(MDF)347.526 469.6 Q
-3.864(,t)-.8 G 1.365(he MPM includes the netw)377.54 469.6 R(ork)-.1 E(interf)
-102 481.6 Q(ace softw)-.1 E(are as part of its domain.)-.1 E .408
-(MPM also postulates a duple)127 497.8 R 2.907(xc)-.15 G .407
-(hannel to the recei)256.937 497.8 R -.15(ve)-.25 G 1.207 -.4(r, a).15 H 2.907
-(sd).4 G .407(oes MMDF)365.362 497.8 R 2.907(,t)-.8 G .407(hus allo)419.546
-497.8 R .407(wing simpler)-.25 F .302
-(handling of errors by the mailer than is possible in)102 509.8 R F2(sendmail)
-2.802 E F1 5.302(.W)C .302(hen a message queued by)362.24 509.8 R F2(sendmail)
-2.802 E F1 .23(is sent, an)102 521.8 R 2.73(ye)-.15 G .23
-(rrors must be returned to the sender by the mailer itself.)154.2 521.8 R .229
-(Both MPM and MMDF mail-)5.229 F .883(ers can return an immediate error respon\
-se, and a single error processor can create an appropriate)102 533.8 R
-(response.)102 545.8 Q 2.24
-(MPM prefers passing the message as a structured object, with type-length-v)127
-564 R 2.24(alue tuples)-.25 F F3(6)498 560 Q F1(.)501.5 564 Q .874(Such a con)
-102 576 R -.15(ve)-.4 G .874(ntion requires a much higher de).15 F .875
-(gree of cooperation between mailers than is required)-.15 F(by)102 588 Q F2
-(sendmail)2.796 E F1 5.296(.M)C .296(PM also assumes a uni)167.592 588 R -.15
-(ve)-.25 G .296(rsally agreed upon internet name space \(with each address).15
-F(in the form of a net-host-user tuple\), which)102 600 Q F2(sendmail)2.5 E F1
-(does not.)2.5 E .32 LW 76 642 72 642 DL 80 642 76 642 DL 84 642 80 642 DL 88
-642 84 642 DL 92 642 88 642 DL 96 642 92 642 DL 100 642 96 642 DL 104 642 100
-642 DL 108 642 104 642 DL 112 642 108 642 DL 116 642 112 642 DL 120 642 116 642
-DL 124 642 120 642 DL 128 642 124 642 DL 132 642 128 642 DL 136 642 132 642 DL
-140 642 136 642 DL 144 642 140 642 DL 148 642 144 642 DL 152 642 148 642 DL 156
-642 152 642 DL 160 642 156 642 DL 164 642 160 642 DL 168 642 164 642 DL 172 642
-168 642 DL 176 642 172 642 DL 180 642 176 642 DL 184 642 180 642 DL 188 642 184
-642 DL 192 642 188 642 DL 196 642 192 642 DL 200 642 196 642 DL 204 642 200 642
-DL 208 642 204 642 DL 212 642 208 642 DL 216 642 212 642 DL/F4 5/Times-Roman@0
-SF(4)93.6 652.4 Q/F5 8/Times-Roman@0 SF .179
-(Dynamic con\214guration tables are currently being considered for MMDF; allo)
+(closely in terms of its basic architecture.)102 469.6 R(Ho)6.364 E(we)
+-.25 E -.15(ve)-.25 G 2.164 -.4(r, l).15 H(ik).4 E 3.864(eM)-.1 G(MDF)
+-3.864 E 3.864(,t)-.8 G 1.365(he MPM includes the netw)-3.864 F(ork)-.1
+E(interf)102 481.6 Q(ace softw)-.1 E(are as part of its domain.)-.1 E
+.408(MPM also postulates a duple)127 497.8 R 2.907(xc)-.15 G .407
+(hannel to the recei)-2.907 F -.15(ve)-.25 G 1.207 -.4(r, a).15 H 2.907
+(sd).4 G .407(oes MMDF)-2.907 F 2.907(,t)-.8 G .407(hus allo)-2.907 F
+.407(wing simpler)-.25 F .302
+(handling of errors by the mailer than is possible in)102 509.8 R F2
+(sendmail)2.802 E F1 5.302(.W)C .302(hen a message queued by)-5.302 F F2
+(sendmail)2.802 E F1 .23(is sent, an)102 521.8 R 2.73(ye)-.15 G .23
+(rrors must be returned to the sender by the mailer itself.)-2.73 F .229
+(Both MPM and MMDF mail-)5.229 F .883(ers can return an immediate error response, and a single error processor can create an appropriate)
+102 533.8 R(response.)102 545.8 Q 2.24(MPM prefers passing the message as a structured object, with type-length-v)
+127 564 R 2.24(alue tuples)-.25 F F3(6)-4 I F1(.)4 I .874(Such a con)102
+576 R -.15(ve)-.4 G .874(ntion requires a much higher de).15 F .875
+(gree of cooperation between mailers than is required)-.15 F(by)102 588
+Q F2(sendmail)2.796 E F1 5.296(.M)C .296(PM also assumes a uni)-5.296 F
+-.15(ve)-.25 G .296
+(rsally agreed upon internet name space \(with each address).15 F
+(in the form of a net-host-user tuple\), which)102 600 Q F2(sendmail)2.5
+E F1(does not.)2.5 E .32 LW 76 642 72 642 DL 80 642 76 642 DL 84 642 80
+642 DL 88 642 84 642 DL 92 642 88 642 DL 96 642 92 642 DL 100 642 96 642
+DL 104 642 100 642 DL 108 642 104 642 DL 112 642 108 642 DL 116 642 112
+642 DL 120 642 116 642 DL 124 642 120 642 DL 128 642 124 642 DL 132 642
+128 642 DL 136 642 132 642 DL 140 642 136 642 DL 144 642 140 642 DL 148
+642 144 642 DL 152 642 148 642 DL 156 642 152 642 DL 160 642 156 642 DL
+164 642 160 642 DL 168 642 164 642 DL 172 642 168 642 DL 176 642 172 642
+DL 180 642 176 642 DL 184 642 180 642 DL 188 642 184 642 DL 192 642 188
+642 DL 196 642 192 642 DL 200 642 196 642 DL 204 642 200 642 DL 208 642
+204 642 DL 212 642 208 642 DL 216 642 212 642 DL/F4 5/Times-Roman@0 SF
+(4)93.6 652.4 Q/F5 8/Times-Roman@0 SF .179(Dynamic con\214guration tables are currently being considered for MMDF; allo)
3.2 J .18(wing the installer to select either compiled or dy-)-.2 F
-(namic tables.)72 665.2 Q F4(5)93.6 675.6 Q F5(The MMDF equi)3.2 I -.2(va)-.2 G
-(lent of a).2 E/F6 8/Times-Italic@0 SF(sendmail)2 E F5(\231mailer)2 E -.56
-<2e9a>-.44 G F4(6)93.6 689.2 Q F5(This is similar to the NBS standard.)3.2 I EP
+(namic tables.)72 665.2 Q F4(5)93.6 675.6 Q F5(The MMDF equi)3.2 I -.2
+(va)-.2 G(lent of a).2 E/F6 8/Times-Italic@0 SF(sendmail)2 E F5
+(\231mailer)2 E -.56<2e9a>-.44 G F4(6)93.6 689.2 Q F5
+(This is similar to the NBS standard.)3.2 I EP
%%Page: 10 10
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF 187.28(SMM:9-10 SENDMAIL)72 60 R 2.5<8a41>2.5 G 2.5(nI)
-383.99 60 S(nter)395.94 60 Q(netw)-.15 E(ork Mail Router)-.1 E 2.5(5. EV)72 96
-R(ALU)-1.35 E -.95(AT)-.6 G(IONS AND FUTURE PLANS).95 E/F1 10/Times-Italic@0 SF
-(Sendmail)112 112.2 Q/F2 10/Times-Roman@0 SF 1.851(is designed to w)4.351 F
-1.851(ork in a nonhomogeneous en)-.1 F 4.352(vironment. Ev)-.4 F 1.852
-(ery attempt is made to)-.15 F -.2(avo)87 124.2 S 1.037
-(id imposing unnecessary constraints on the underlying mailers.).2 F 1.036
-(This goal has dri)6.036 F -.15(ve)-.25 G 3.536(nm).15 G 1.036(uch of the)
-461.938 124.2 R 2.723(design. One)87 136.2 R .223(of the major problems has be\
-en the lack of a uniform address space, as postulated in [Pos-)2.723 F
-(tel79a] and [Postel79b].)87 148.2 Q 2.647(An)112 164.4 S .147(onuniform addre\
-ss space implies that a path will be speci\214ed in all addresses, either e)
-126.867 164.4 R(xplicitly)-.15 E .472
-(\(as part of the address\) or implicitly \(as with implied forw)87 176.4 R
-.473(arding to g)-.1 F(ate)-.05 E -.1(wa)-.25 G 2.973(ys\). This).1 F .473
-(restriction has the)2.973 F .493(unpleasant ef)87 188.4 R .493
-(fect of making replying to messages e)-.25 F .493(xceedingly dif)-.15 F .493
-(\214cult, since there is no one \231address\232)-.25 F(for an)87 200.4 Q 2.5
-(yp)-.15 G(erson, b)122.95 200.4 Q(ut only a w)-.2 E
-(ay to get there from where)-.1 E -.15(ve)-.25 G 2.5(ry).15 G(ou are.)324.7
-200.4 Q(Interf)112 216.6 Q .448(acing to mail programs that were not initially\
- intended to be applied in an internet en)-.1 F(viron-)-.4 E(ment has been ama\
-zingly successful, and has reduced the job to a manageable task.)87 228.6 Q F1
-(Sendmail)112 244.8 Q F2 2.906(has kno)5.406 F 2.906(wledge of a fe)-.25 F
-5.406(wd)-.25 G(if)271.126 244.8 Q 2.906(\214cult en)-.25 F 2.906(vironments b)
--.4 F 2.906(uilt in.)-.2 F 2.905(It generates ARP)7.906 F(ANET)-.92 E .648(FTP\
-/SMTP compatible error messages \(prepended with three-digit numbers [Neigus73\
-, Postel74, Pos-)87 256.8 R .771(tel82]\) as necessary)87 268.8 R 3.271(,o)-.65
-G .771(ptionally generates UNIX-style \231From\232 lines on the front of messa\
-ges for some)177.523 268.8 R 1.669(mailers, and kno)87 280.8 R 1.669(ws ho)-.25
-F 4.169(wt)-.25 G 4.169(op)195.666 280.8 S 1.669(arse the same lines on input.)
-209.835 280.8 R 1.67(Also, error handling has an option cus-)6.67 F
-(tomized for BerkNet.)87 292.8 Q 1.482(The decision to a)112 309 R -.2(vo)-.2 G
-1.482(id doing an).2 F 3.982(yt)-.15 G 1.481(ype of deli)254.222 309 R -.15(ve)
--.25 G 1.481(ry where possible \(e).15 F -.15(ve)-.25 G 1.481
-(n, or perhaps especially).15 F(,)-.65 E .574(local deli)87 321 R -.15(ve)-.25
-G .574(ry\) has turned out to be a good idea.).15 F(Ev)5.574 E .574
-(en with local deli)-.15 F -.15(ve)-.25 G(ry).15 E 3.074(,t)-.65 G .575
-(here are issues of the loca-)394.776 321 R .469(tion of the mailbox, the form\
-at of the mailbox, the locking protocol used, etc., that are best decided by)87
-333 R .038(other programs.)87 345 R .038(One surprisingly major anno)5.038 F
-.038(yance in man)-.1 F 2.538(yi)-.15 G .038
-(nternet mailers is that the location and for)333.684 345 R(-)-.2 E .138
-(mat of local mail is b)87 357 R .138(uilt in.)-.2 F .137
-(The feeling seems to be that local mail is so common that it should be ef)
+/F0 10/Times-Bold@0 SF 187.28(SMM:9-10 SENDMAIL)72 60 R 2.5<8a41>2.5 G
+2.5(nI)-2.5 G(nter)-2.5 E(netw)-.15 E(ork Mail Router)-.1 E 2.5(5. EV)72
+96 R(ALU)-1.35 E -.95(AT)-.6 G(IONS AND FUTURE PLANS).95 E/F1 10
+/Times-Italic@0 SF(Sendmail)112 112.2 Q/F2 10/Times-Roman@0 SF 1.851
+(is designed to w)4.351 F 1.851(ork in a nonhomogeneous en)-.1 F 4.352
+(vironment. Ev)-.4 F 1.852(ery attempt is made to)-.15 F -.2(avo)87
+124.2 S 1.037
+(id imposing unnecessary constraints on the underlying mailers.).2 F
+1.036(This goal has dri)6.036 F -.15(ve)-.25 G 3.536(nm).15 G 1.036
+(uch of the)-3.536 F 2.723(design. One)87 136.2 R .223(of the major problems has been the lack of a uniform address space, as postulated in [Pos-)
+2.723 F(tel79a] and [Postel79b].)87 148.2 Q 2.647(An)112 164.4 S .147(onuniform address space implies that a path will be speci\214ed in all addresses, either e)
+-2.647 F(xplicitly)-.15 E .472
+(\(as part of the address\) or implicitly \(as with implied forw)87
+176.4 R .473(arding to g)-.1 F(ate)-.05 E -.1(wa)-.25 G 2.973
+(ys\). This).1 F .473(restriction has the)2.973 F .493(unpleasant ef)87
+188.4 R .493(fect of making replying to messages e)-.25 F .493
+(xceedingly dif)-.15 F .493
+(\214cult, since there is no one \231address\232)-.25 F(for an)87 200.4
+Q 2.5(yp)-.15 G(erson, b)-2.5 E(ut only a w)-.2 E
+(ay to get there from where)-.1 E -.15(ve)-.25 G 2.5(ry).15 G(ou are.)
+-2.5 E(Interf)112 216.6 Q .448(acing to mail programs that were not initially intended to be applied in an internet en)
+-.1 F(viron-)-.4 E(ment has been amazingly successful, and has reduced the job to a manageable task.)
+87 228.6 Q F1(Sendmail)112 244.8 Q F2 2.906(has kno)5.406 F 2.906
+(wledge of a fe)-.25 F 5.406(wd)-.25 G(if)-5.406 E 2.906(\214cult en)
+-.25 F 2.906(vironments b)-.4 F 2.906(uilt in.)-.2 F 2.905
+(It generates ARP)7.906 F(ANET)-.92 E .648(FTP/SMTP compatible error messages \(prepended with three-digit numbers [Neigus73, Postel74, Pos-)
+87 256.8 R .771(tel82]\) as necessary)87 268.8 R 3.271(,o)-.65 G .771(ptionally generates UNIX-style \231From\232 lines on the front of messages for some)
+-3.271 F 1.669(mailers, and kno)87 280.8 R 1.669(ws ho)-.25 F 4.169(wt)
+-.25 G 4.169(op)-4.169 G 1.669(arse the same lines on input.)-4.169 F
+1.67(Also, error handling has an option cus-)6.67 F
+(tomized for BerkNet.)87 292.8 Q 1.482(The decision to a)112 309 R -.2
+(vo)-.2 G 1.482(id doing an).2 F 3.982(yt)-.15 G 1.481(ype of deli)
+-3.982 F -.15(ve)-.25 G 1.481(ry where possible \(e).15 F -.15(ve)-.25 G
+1.481(n, or perhaps especially).15 F(,)-.65 E .574(local deli)87 321 R
+-.15(ve)-.25 G .574(ry\) has turned out to be a good idea.).15 F(Ev)
+5.574 E .574(en with local deli)-.15 F -.15(ve)-.25 G(ry).15 E 3.074(,t)
+-.65 G .575(here are issues of the loca-)-3.074 F .469(tion of the mailbox, the format of the mailbox, the locking protocol used, etc., that are best decided by)
+87 333 R .038(other programs.)87 345 R .038(One surprisingly major anno)
+5.038 F .038(yance in man)-.1 F 2.538(yi)-.15 G .038
+(nternet mailers is that the location and for)-2.538 F(-)-.2 E .138
+(mat of local mail is b)87 357 R .138(uilt in.)-.2 F .137(The feeling seems to be that local mail is so common that it should be ef)
5.137 F<8c2d>-.25 E 3.045(cient. This)87 369 R .545
-(feeling is not born out by our e)3.045 F .545(xperience; on the contrary)-.15
-F 3.045(,t)-.65 G .545(he location and format of mail-)376.575 369 R(box)87 381
-Q(es seems to v)-.15 E(ary widely from system to system.)-.25 E .681
-(The ability to automatically generate a response to incoming mail \(by forw)
+(feeling is not born out by our e)3.045 F .545
+(xperience; on the contrary)-.15 F 3.045(,t)-.65 G .545
+(he location and format of mail-)-3.045 F(box)87 381 Q(es seems to v)
+-.15 E(ary widely from system to system.)-.25 E .681(The ability to automatically generate a response to incoming mail \(by forw)
112 397.2 R .68(arding mail to a pro-)-.1 F .435
(gram\) seems useful \(\231I am on v)87 409.2 R .435
(acation until late August....)-.25 F 2.935(\232\) b)-.7 F .435
-(ut can create problems such as forw)-.2 F(ard-)-.1 E .143(ing loops \(tw)87
-421.2 R 2.643(op)-.1 G .143(eople on v)152.609 421.2 R .143(acation whose prog\
-rams send notes back and forth, for instance\) if these pro-)-.25 F .732
-(grams are not well written.)87 433.2 R 3.232(Ap)5.732 G .732
-(rogram could be written to do standard tasks correctly)218.592 433.2 R 3.233
-(,b)-.65 G .733(ut this w)450.404 433.2 R(ould)-.1 E(solv)87 445.2 Q 2.5(et)
--.15 G(he general case.)113.24 445.2 Q .225
-(It might be desirable to implement some form of load limiting.)112 461.4 R
-2.725(Ia)5.225 G 2.724(mu)380.8 461.4 S(na)396.304 461.4 Q -.1(wa)-.15 G .224
-(re of an).1 F 2.724(ym)-.15 G .224(ail system)463.496 461.4 R
-(that addresses this problem, nor am I a)87 473.4 Q -.1(wa)-.15 G(re of an).1 E
-2.5(yr)-.15 G(easonable solution at this time.)294.05 473.4 Q .113(The con\214\
-guration \214le is currently practically inscrutable; considerable con)112
-489.6 R -.15(ve)-.4 G .114(nience could be real-).15 F(ized with a higher)87
-501.6 Q(-le)-.2 E -.15(ve)-.25 G 2.5(lf).15 G(ormat.)186.93 501.6 Q .778(It se\
-ems clear that common protocols will be changing soon to accommodate changing \
-require-)112 517.8 R 2.774(ments and en)87 529.8 R 5.274(vironments. These)-.4
-F 2.774(changes will include modi\214cations to the message header \(e.g.,)
-5.274 F .859([NBS80]\) or to the body of the message itself \(such as for mult\
-imedia messages [Postel80]\).)87 541.8 R(Experi-)5.859 E
-(ence indicates that these changes should be relati)87 553.8 Q -.15(ve)-.25 G
-(ly tri).15 E(vial to inte)-.25 E(grate into the e)-.15 E(xisting system.)-.15
-E .811(In tightly coupled en)112 570 R .812(vironments, it w)-.4 F .812
-(ould be nice to ha)-.1 F 1.112 -.15(ve a n)-.2 H .812(ame serv).15 F .812
-(er such as Grapvine [Bir)-.15 F(-)-.2 E .095(rell82] inte)87 582 R .095
-(grated into the mail system.)-.15 F .095(This w)5.095 F .095(ould allo)-.1 F
-2.594(was)-.25 G .094(ite such as \231Berk)330.768 582 R(ele)-.1 E .094
+(ut can create problems such as forw)-.2 F(ard-)-.1 E .143
+(ing loops \(tw)87 421.2 R 2.643(op)-.1 G .143(eople on v)-2.643 F .143
+(acation whose programs send notes back and forth, for instance\) if these pro-)
+-.25 F .732(grams are not well written.)87 433.2 R 3.232(Ap)5.732 G .732
+(rogram could be written to do standard tasks correctly)-3.232 F 3.233
+(,b)-.65 G .733(ut this w)-3.433 F(ould)-.1 E(solv)87 445.2 Q 2.5(et)
+-.15 G(he general case.)-2.5 E .225
+(It might be desirable to implement some form of load limiting.)112
+461.4 R 2.725(Ia)5.225 G 2.724(mu)-2.725 G(na)-2.724 E -.1(wa)-.15 G
+.224(re of an).1 F 2.724(ym)-.15 G .224(ail system)-2.724 F
+(that addresses this problem, nor am I a)87 473.4 Q -.1(wa)-.15 G
+(re of an).1 E 2.5(yr)-.15 G(easonable solution at this time.)-2.5 E
+.113(The con\214guration \214le is currently practically inscrutable; considerable con)
+112 489.6 R -.15(ve)-.4 G .114(nience could be real-).15 F
+(ized with a higher)87 501.6 Q(-le)-.2 E -.15(ve)-.25 G 2.5(lf).15 G
+(ormat.)-2.5 E .778(It seems clear that common protocols will be changing soon to accommodate changing require-)
+112 517.8 R 2.774(ments and en)87 529.8 R 5.274(vironments. These)-.4 F
+2.774
+(changes will include modi\214cations to the message header \(e.g.,)
+5.274 F .859([NBS80]\) or to the body of the message itself \(such as for multimedia messages [Postel80]\).)
+87 541.8 R(Experi-)5.859 E
+(ence indicates that these changes should be relati)87 553.8 Q -.15(ve)
+-.25 G(ly tri).15 E(vial to inte)-.25 E(grate into the e)-.15 E
+(xisting system.)-.15 E .811(In tightly coupled en)112 570 R .812
+(vironments, it w)-.4 F .812(ould be nice to ha)-.1 F 1.112 -.15(ve a n)
+-.2 H .812(ame serv).15 F .812(er such as Grapvine [Bir)-.15 F(-)-.2 E
+.095(rell82] inte)87 582 R .095(grated into the mail system.)-.15 F .095
+(This w)5.095 F .095(ould allo)-.1 F 2.594(was)-.25 G .094
+(ite such as \231Berk)-2.594 F(ele)-.1 E .094
(y\232 to appear as a single)-.15 F 2.606
-(host, rather than as a collection of hosts, and w)87 594 R 2.606(ould allo)-.1
-F 5.106(wp)-.25 G 2.606(eople to mo)352.786 594 R 2.906 -.15(ve t)-.15 H 2.606
-(ransparently among).15 F 1.664(machines without ha)87 606 R 1.664
-(ving to change their addresses.)-.2 F 1.664(Such a f)6.664 F 1.664(acility w)
--.1 F 1.663(ould require an automatically)-.1 F .428
-(updated database and some method of resolving con\215icts.)87 618 R .428
-(Ideally this w)5.428 F .428(ould be ef)-.1 F(fecti)-.25 E .728 -.15(ve e)-.25
-H -.15(ve)-.1 G 2.928(nw).15 G(ithout)480.66 618 Q .184
-(all hosts being under a single management.)87 630 R(Ho)5.184 E(we)-.25 E -.15
-(ve)-.25 G .984 -.4(r, i).15 H 2.684(ti).4 G 2.683(sn)317.576 630 S .183
-(ot clear whether this feature should be inte-)329.149 630 R
-(grated into the aliasing f)87 642 Q(acility or should be considered a \231v)
--.1 E(alue added\232 feature outside)-.25 E F1(sendmail)2.5 E F2(itself.)2.5 E
-.79(As a more interesting case, the CSNET name serv)112 658.2 R .791
-(er [Solomon81] pro)-.15 F .791(vides an f)-.15 F .791(acility that goes)-.1 F
-(be)87 670.2 Q .375(yond a single tightly-coupled en)-.15 F 2.875
-(vironment. Such)-.4 F 2.875(af)2.875 G .375(acility w)308.675 670.2 R .374
-(ould normally e)-.1 F .374(xist outside of)-.15 F F1(sendmail)2.874 E F2(ho)87
-682.2 Q(we)-.25 E -.15(ve)-.25 G -.55(r.).15 G EP
+(host, rather than as a collection of hosts, and w)87 594 R 2.606
+(ould allo)-.1 F 5.106(wp)-.25 G 2.606(eople to mo)-5.106 F 2.906 -.15
+(ve t)-.15 H 2.606(ransparently among).15 F 1.664(machines without ha)87
+606 R 1.664(ving to change their addresses.)-.2 F 1.664(Such a f)6.664 F
+1.664(acility w)-.1 F 1.663(ould require an automatically)-.1 F .428
+(updated database and some method of resolving con\215icts.)87 618 R
+.428(Ideally this w)5.428 F .428(ould be ef)-.1 F(fecti)-.25 E .728 -.15
+(ve e)-.25 H -.15(ve)-.1 G 2.928(nw).15 G(ithout)-2.928 E .184
+(all hosts being under a single management.)87 630 R(Ho)5.184 E(we)-.25
+E -.15(ve)-.25 G .984 -.4(r, i).15 H 2.684(ti).4 G 2.683(sn)-2.684 G
+.183(ot clear whether this feature should be inte-)-2.683 F
+(grated into the aliasing f)87 642 Q
+(acility or should be considered a \231v)-.1 E
+(alue added\232 feature outside)-.25 E F1(sendmail)2.5 E F2(itself.)2.5
+E .79(As a more interesting case, the CSNET name serv)112 658.2 R .791
+(er [Solomon81] pro)-.15 F .791(vides an f)-.15 F .791
+(acility that goes)-.1 F(be)87 670.2 Q .375
+(yond a single tightly-coupled en)-.15 F 2.875(vironment. Such)-.4 F
+2.875(af)2.875 G .375(acility w)-2.975 F .374(ould normally e)-.1 F .374
+(xist outside of)-.15 F F1(sendmail)2.874 E F2(ho)87 682.2 Q(we)-.25 E
+-.15(ve)-.25 G -.55(r.).15 G EP
%%Page: 11 11
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(SENDMAIL \212 An Inter)72 60 Q(netw)-.15 E
-(ork Mail Router)-.1 E(SMM:9-11)457.9 60 Q -.55(AC)72 96 S(KNO).55 E
-(WLEDGEMENTS)-.5 E/F1 10/Times-Roman@0 SF 1.203(Thanks are due to K)97 112.2 R
-1.204
-(urt Shoens for his continual cheerful assistance and good advice, Bill Jo)-.15
-F 3.704(yf)-.1 G(or)495.67 112.2 Q .102
-(pointing me in the correct direction \(o)72 124.2 R -.15(ve)-.15 G 2.602(ra)
-.15 G .102(nd o)244.324 124.2 R -.15(ve)-.15 G .102
-(r\), and Mark Horton for more advice, prodding, and man).15 F(y)-.15 E .453
-(of the good ideas.)72 136.2 R -.15(Ku)5.453 G .453
-(rt and Eric Schmidt are to be credited for using).15 F/F2 10/Times-Italic@0 SF
-(delivermail)2.953 E F1 .453(as a serv)2.953 F .453(er for their pro-)-.15 F
-1.663(grams \()72 148.2 R F2(Mail)A F1 1.663(and BerkNet respecti)4.163 F -.15
-(ve)-.25 G 1.663(ly\) before an).15 F 4.163(ys)-.15 G 1.663
-(ane person should ha)291.091 148.2 R -.15(ve)-.2 G 4.163(,a).15 G 1.662
-(nd making the necessary)400.423 148.2 R .078
-(modi\214cations promptly and happily)72 160.2 R 5.078(.E)-.65 G .078(ric g)
-228.332 160.2 R -2.25 -.2(av e)-.05 H .079
-(me considerable advice about the perils of netw)2.778 F .079(ork softw)-.1 F
-(are)-.1 E .179(which sa)72 172.2 R -.15(ve)-.2 G 2.679(dm).15 G 2.679(ea)
-131.998 172.2 S 2.679(nu)143.557 172.2 S(nkno)156.236 172.2 Q .178
-(wn amount of w)-.25 F .178(ork and grief.)-.1 F .178
-(Mark did the original implementation of the DBM)5.178 F -.15(ve)72 184.2 S
-.341(rsion of aliasing, installed the VFORK code, wrote the current v).15 F
-.341(ersion of)-.15 F F2(rmail)2.841 E F1 2.841(,a)C .341(nd w)411.083 184.2 R
+(ork Mail Router)-.1 E(SMM:9-11)189.78 E -.55(AC)72 96 S(KNO).55 E
+(WLEDGEMENTS)-.5 E/F1 10/Times-Roman@0 SF 1.203(Thanks are due to K)97
+112.2 R 1.204(urt Shoens for his continual cheerful assistance and good advice, Bill Jo)
+-.15 F 3.704(yf)-.1 G(or)-3.704 E .102
+(pointing me in the correct direction \(o)72 124.2 R -.15(ve)-.15 G
+2.602(ra).15 G .102(nd o)-2.602 F -.15(ve)-.15 G .102
+(r\), and Mark Horton for more advice, prodding, and man).15 F(y)-.15 E
+.453(of the good ideas.)72 136.2 R -.15(Ku)5.453 G .453
+(rt and Eric Schmidt are to be credited for using).15 F/F2 10
+/Times-Italic@0 SF(delivermail)2.953 E F1 .453(as a serv)2.953 F .453
+(er for their pro-)-.15 F 1.663(grams \()72 148.2 R F2(Mail)A F1 1.663
+(and BerkNet respecti)4.163 F -.15(ve)-.25 G 1.663(ly\) before an).15 F
+4.163(ys)-.15 G 1.663(ane person should ha)-4.163 F -.15(ve)-.2 G 4.163
+(,a).15 G 1.662(nd making the necessary)-4.163 F .078
+(modi\214cations promptly and happily)72 160.2 R 5.078(.E)-.65 G .078
+(ric g)-5.078 F -2.25 -.2(av e)-.05 H .079
+(me considerable advice about the perils of netw)2.778 F .079(ork softw)
+-.1 F(are)-.1 E .179(which sa)72 172.2 R -.15(ve)-.2 G 2.679(dm).15 G
+2.679(ea)-2.679 G 2.679(nu)-2.679 G(nkno)-2.679 E .178(wn amount of w)
+-.25 F .178(ork and grief.)-.1 F .178
+(Mark did the original implementation of the DBM)5.178 F -.15(ve)72
+184.2 S .341
+(rsion of aliasing, installed the VFORK code, wrote the current v).15 F
+.341(ersion of)-.15 F F2(rmail)2.841 E F1 2.841(,a)C .341(nd w)-2.841 F
.342(as the person who)-.1 F .61(really con)72 196.2 R .61
-(vinced me to put the w)-.4 F .61(ork into)-.1 F F2(delivermail)3.109 E F1 .609
-(to turn it into)3.109 F F2(sendmail)3.109 E F1 5.609(.K)C .609(urt deserv)
-398.753 196.2 R .609(es accolades for)-.15 F(using)72 208.2 Q F2(sendmail)2.57
-E F1 .07(when I w)2.57 F .07(as myself afraid to tak)-.1 F 2.57(et)-.1 G .07
-(he risk; ho)271.01 208.2 R 2.57(wap)-.25 G .07
-(erson can continue to be so enthusiastic in)334.92 208.2 R(the f)72 220.2 Q
-(ace of so much bitter reality is be)-.1 E(yond me.)-.15 E -.15(Ku)97 236.4 S
-1.505(rt, Mark, Kirk McK).15 F 1.505(usick, Marvin Solomon, and man)-.15 F
-4.005(yo)-.15 G 1.504(thers ha)345.79 236.4 R 1.804 -.15(ve r)-.2 H -.25(ev).15
-G(ie).25 E 1.504(wed this paper)-.25 F 4.004(,g)-.4 G -.25(iv)483.69 236.4 S
-(ing).25 E(considerable useful advice.)72 248.4 Q .846
-(Special thanks are reserv)97 264.6 R .846(ed for Mik)-.15 F 3.346(eS)-.1 G
-(tonebrak)256.786 264.6 Q .846(er at Berk)-.1 F(ele)-.1 E 3.347(ya)-.15 G .847
-(nd Bob Epstein at Britton-Lee, who)356.995 264.6 R .542(both kno)72 276.6 R
+(vinced me to put the w)-.4 F .61(ork into)-.1 F F2(delivermail)3.109 E
+F1 .609(to turn it into)3.109 F F2(sendmail)3.109 E F1 5.609(.K)C .609
+(urt deserv)-5.759 F .609(es accolades for)-.15 F(using)72 208.2 Q F2
+(sendmail)2.57 E F1 .07(when I w)2.57 F .07(as myself afraid to tak)-.1
+F 2.57(et)-.1 G .07(he risk; ho)-2.57 F 2.57(wap)-.25 G .07
+(erson can continue to be so enthusiastic in)-2.57 F(the f)72 220.2 Q
+(ace of so much bitter reality is be)-.1 E(yond me.)-.15 E -.15(Ku)97
+236.4 S 1.505(rt, Mark, Kirk McK).15 F 1.505
+(usick, Marvin Solomon, and man)-.15 F 4.005(yo)-.15 G 1.504(thers ha)
+-4.005 F 1.804 -.15(ve r)-.2 H -.25(ev).15 G(ie).25 E 1.504
+(wed this paper)-.25 F 4.004(,g)-.4 G -.25(iv)-4.004 G(ing).25 E
+(considerable useful advice.)72 248.4 Q .846(Special thanks are reserv)
+97 264.6 R .846(ed for Mik)-.15 F 3.346(eS)-.1 G(tonebrak)-3.346 E .846
+(er at Berk)-.1 F(ele)-.1 E 3.347(ya)-.15 G .847
+(nd Bob Epstein at Britton-Lee, who)-3.347 F .542(both kno)72 276.6 R
.542(wingly allo)-.25 F .542(wed me to put so much w)-.25 F .541
(ork into this project when there were so man)-.1 F 3.041(yo)-.15 G .541
-(ther things I)454.588 276.6 R(really should ha)72 288.6 Q .3 -.15(ve b)-.2 H
+(ther things I)-3.041 F(really should ha)72 288.6 Q .3 -.15(ve b)-.2 H
(een w).15 E(orking on.)-.1 E EP
%%Page: 12 12
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Roman@0 SF(REFERENCES)256.605 132 Q 62.73([Birrell82] Birrell,)72
-148.2 R 1.084(A. D., Le)3.584 F 1.084(vin, R., Needham, R. M., and Schroeder)
--.25 F 3.584(,M)-.4 G 3.585(.D)433.49 148.2 S 1.085(., \231Grape)446.795 148.2
-R(vine:)-.25 E(An Ex)180 160.2 Q(ercise in Distrib)-.15 E(uted Computing.)-.2 E
-5<9a49>-.7 G(n)348.66 160.2 Q/F1 10/Times-Italic@0 SF(Comm. A.C.M. 25,)2.5 E F0
-(4, April 82.)2.5 E 59.4([Borden79] Borden,)72 176.4 R .796
-(S., Gaines, R. S., and Shapiro, N. Z.,)3.296 F F1 .795(The MH Messa)3.295 F
-.995 -.1(ge H)-.1 H .795(andling Sys-).1 F(tem: User)180 188.4 Q(s' Manual.)-.1
-E F0(R-2367-P)5 E(AF)-.92 E 5(.R)-.8 G(and Corporation.)332.06 188.4 Q
-(October 1979.)5 E([Crock)72 204.6 Q 52.29(er77a] Crock)-.1 F(er)-.1 E 2.508
-(,D)-.4 G 2.508(.H)223.938 204.6 S .008(., V)236.166 204.6 R .009
-(ittal, J. J., Pogran, K. T)-.6 F .009(., and Henderson, D. A. Jr)-.74 F(.,)
--.55 E F1(Standar)2.509 E 2.509(df)-.37 G(or)495.11 204.6 Q .955(the F)180
-216.6 R .955(ormat of ARP)-1.05 F 3.454(AN)-.9 G .954(etwork T)272.978 216.6 R
--.2(ex)-.92 G 3.454(tM).2 G(essa)331.536 216.6 Q -.1(ge)-.1 G(s.).1 E F0 .954
-(RFC 733, NIC 41952.)5.954 F .954(In [Fein-)5.954 F 2.5(ler78]. No)180 228.6 R
--.15(ve)-.15 G(mber 1977.).15 E([Crock)72 244.8 Q 51.73(er77b] Crock)-.1 F(er)
--.1 E 3.04(,D)-.4 G 3.04(.H)224.47 244.8 S(.,)237.23 244.8 Q F1 -1.55 -.55
-(Fr a)3.04 H(me).55 E .54(work and Functions of the MS P)-.15 F(er)-.8 E .54
-(sonal Messa)-.1 F .74 -.1(ge S)-.1 H(ystem.).1 E F0(R-2134-ARP)180 256.8 Q
-(A, Rand Corporation, Santa Monica, California.)-.92 E(1977.)5 E([Crock)72 273
-Q 56.73(er79] Crock)-.1 F(er)-.1 E 2.557(,D)-.4 G 2.557(.H)223.987 273 S .056
-(., Szurk)236.264 273 R -.25(ow)-.1 G .056(ski, E. S., and F).25 F(arber)-.15 E
-2.556(,D)-.4 G 2.556(.J)374.85 273 S(.,)383.796 273 Q F1 .056
-(An Internetwork Memo Dis-)2.556 F(trib)180 285 Q 1.341(ution F)-.2 F 1.341
-(acility \212 MMDF)-.75 F(.)-1.35 E F0 1.341
-(6th Data Communication Symposium, Asilomar)6.341 F(.)-.55 E(No)180 297 Q -.15
-(ve)-.15 G(mber 1979.).15 E([Crock)72 313.2 Q 56.73(er82] Crock)-.1 F(er)-.1 E
-3.383(,D)-.4 G 3.383(.H)224.813 313.2 S(.,)237.916 313.2 Q F1(Standar)3.383 E
-3.383(df)-.37 G .883(or the F)288.762 313.2 R .882(ormat of Arpa Internet T)
--1.05 F -.2(ex)-.92 G 3.382(tM).2 G(essa)446.368 313.2 Q -.1(ge)-.1 G(s.).1 E
-F0(RFC)5.882 E 4.197(822. Netw)180 325.2 R 1.697(ork Information Center)-.1 F
-4.197(,S)-.4 G 1.698(RI International, Menlo P)333.768 325.2 R 1.698
-(ark, California.)-.15 F(August 1982.)180 337.2 Q 53.3([Metcalfe76] Metcalfe,)
-72 353.4 R .727(R., and Boggs, D., \231Ethernet: Distrib)3.227 F .727(uted P)
--.2 F(ack)-.15 E .727(et Switching for Local)-.1 F(Computer Netw)180 365.4 Q
-(orks\232,)-.1 E F1(Communications of the A)2.5 E(CM 19,)-.3 E F0 2.5(7. July)
-2.5 F(1976.)2.5 E 60.51([Feinler78] Feinler)72 381.6 R 4.438(,E)-.4 G 1.938
-(., and Postel, J.)220.978 381.6 R(\(eds.\),)6.938 E F1(ARP)4.438 E 1.938
-(ANET Pr)-.9 F 1.938(otocol Handbook.)-.45 F F0 1.938(NIC 7104,)6.938 F(Netw)
-180 393.6 Q(ork Information Center)-.1 E 2.5(,S)-.4 G
-(RI International, Menlo P)304.48 393.6 Q(ark, California.)-.15 E(1978.)5 E
-69.39([NBS80] National)72 409.8 R 1.46(Bureau of Standards,)3.96 F F1 1.46
-(Speci\214cation of a Dr)3.96 F 1.46(aft Messa)-.15 F 1.66 -.1(ge F)-.1 H 1.46
-(ormat Stan-)-.95 F(dar)180 421.8 Q(d.)-.37 E F0(Report No. ICST/CBOS 80-2.)5 E
-(October 1980.)5 E 60.51([Neigus73] Neigus,)72 438 R(N.,)5.186 E F1 -.45(Fi)
-5.186 G 2.686(le T).45 F -.15(ra)-.55 G 2.686(nsfer Pr).15 F 2.686
-(otocol for the ARP)-.45 F 5.187(AN)-.9 G(etwork.)402.599 438 Q F0 2.687
-(RFC 542, NIC)7.687 F 2.5(17759. In)180 450 R 2.5([Feinler78]. August,)2.5 F
-(1973.)2.5 E([No)72 466.2 Q 55.21(witz78a] No)-.25 F 1.633
-(witz, D. A., and Lesk, M. E.,)-.25 F F1 4.132(AD)4.132 G 1.632
-(ial-Up Network of UNIX Systems.)338.9 466.2 R F0(Bell)6.632 E 5.403
-(Laboratories. In)180 478.2 R 2.904(UNIX Programmer')5.403 F 5.404(sM)-.55 G
-2.904(anual, Se)356.024 478.2 R -.15(ve)-.25 G 2.904(nth Edition, V).15 F 2.904
-(olume 2.)-1.29 F(August, 1978.)180 490.2 Q([No)72 506.4 Q 54.65(witz78b] No)
--.25 F .633(witz, D. A.,)-.25 F F1 .632(Uucp Implementation Description.)3.132
-F F0 .632(Bell Laboratories.)5.632 F .632(In UNIX)5.632 F(Programmer')180 518.4
-Q 2.5(sM)-.55 G(anual, Se)248.05 518.4 Q -.15(ve)-.25 G(nth Edition, V).15 E
-(olume 2.)-1.29 E(October)5 E 2.5(,1)-.4 G(978.)431.22 518.4 Q 64.39
+/F0 10/Times-Roman@0 SF(REFERENCES)256.605 132 Q 62.73
+([Birrell82] Birrell,)72 148.2 R 1.084(A. D., Le)3.584 F 1.084
+(vin, R., Needham, R. M., and Schroeder)-.25 F 3.584(,M)-.4 G 3.585(.D)
+-3.584 G 1.085(., \231Grape)-3.585 F(vine:)-.25 E(An Ex)180 160.2 Q
+(ercise in Distrib)-.15 E(uted Computing.)-.2 E 5<9a49>-.7 G(n)-5 E/F1
+10/Times-Italic@0 SF(Comm. A.C.M. 25,)2.5 E F0(4, April 82.)2.5 E 59.4
+([Borden79] Borden,)72 176.4 R .796
+(S., Gaines, R. S., and Shapiro, N. Z.,)3.296 F F1 .795(The MH Messa)
+3.295 F .995 -.1(ge H)-.1 H .795(andling Sys-).1 F(tem: User)180 188.4 Q
+(s' Manual.)-.1 E F0(R-2367-P)5 E(AF)-.92 E 5(.R)-.8 G(and Corporation.)
+-5 E(October 1979.)5 E([Crock)72 204.6 Q 52.29(er77a] Crock)-.1 F(er)-.1
+E 2.508(,D)-.4 G 2.508(.H)-2.508 G .008(., V)-2.508 F .009
+(ittal, J. J., Pogran, K. T)-.6 F .009(., and Henderson, D. A. Jr)-.74 F
+(.,)-.55 E F1(Standar)2.509 E 2.509(df)-.37 G(or)-2.509 E .955(the F)180
+216.6 R .955(ormat of ARP)-1.05 F 3.454(AN)-.9 G .954(etwork T)-3.454 F
+-.2(ex)-.92 G 3.454(tM).2 G(essa)-3.454 E -.1(ge)-.1 G(s.).1 E F0 .954
+(RFC 733, NIC 41952.)5.954 F .954(In [Fein-)5.954 F 2.5(ler78]. No)180
+228.6 R -.15(ve)-.15 G(mber 1977.).15 E([Crock)72 244.8 Q 51.73
+(er77b] Crock)-.1 F(er)-.1 E 3.04(,D)-.4 G 3.04(.H)-3.04 G(.,)-3.04 E F1
+-1.55 -.55(Fr a)3.04 H(me).55 E .54(work and Functions of the MS P)-.15
+F(er)-.8 E .54(sonal Messa)-.1 F .74 -.1(ge S)-.1 H(ystem.).1 E F0
+(R-2134-ARP)180 256.8 Q(A, Rand Corporation, Santa Monica, California.)
+-.92 E(1977.)5 E([Crock)72 273 Q 56.73(er79] Crock)-.1 F(er)-.1 E 2.557
+(,D)-.4 G 2.557(.H)-2.557 G .056(., Szurk)-2.557 F -.25(ow)-.1 G .056
+(ski, E. S., and F).25 F(arber)-.15 E 2.556(,D)-.4 G 2.556(.J)-2.556 G
+(.,)-2.556 E F1 .056(An Internetwork Memo Dis-)2.556 F(trib)180 285 Q
+1.341(ution F)-.2 F 1.341(acility \212 MMDF)-.75 F(.)-1.35 E F0 1.341
+(6th Data Communication Symposium, Asilomar)6.341 F(.)-.55 E(No)180 297
+Q -.15(ve)-.15 G(mber 1979.).15 E([Crock)72 313.2 Q 56.73(er82] Crock)
+-.1 F(er)-.1 E 3.383(,D)-.4 G 3.383(.H)-3.383 G(.,)-3.383 E F1(Standar)
+3.383 E 3.383(df)-.37 G .883(or the F)-3.383 F .882
+(ormat of Arpa Internet T)-1.05 F -.2(ex)-.92 G 3.382(tM).2 G(essa)
+-3.382 E -.1(ge)-.1 G(s.).1 E F0(RFC)5.882 E 4.197(822. Netw)180 325.2 R
+1.697(ork Information Center)-.1 F 4.197(,S)-.4 G 1.698
+(RI International, Menlo P)-4.197 F 1.698(ark, California.)-.15 F
+(August 1982.)180 337.2 Q 53.3([Metcalfe76] Metcalfe,)72 353.4 R .727
+(R., and Boggs, D., \231Ethernet: Distrib)3.227 F .727(uted P)-.2 F(ack)
+-.15 E .727(et Switching for Local)-.1 F(Computer Netw)180 365.4 Q
+(orks\232,)-.1 E F1(Communications of the A)2.5 E(CM 19,)-.3 E F0 2.5
+(7. July)2.5 F(1976.)2.5 E 60.51([Feinler78] Feinler)72 381.6 R 4.438
+(,E)-.4 G 1.938(., and Postel, J.)-4.438 F(\(eds.\),)6.938 E F1(ARP)
+4.438 E 1.938(ANET Pr)-.9 F 1.938(otocol Handbook.)-.45 F F0 1.938
+(NIC 7104,)6.938 F(Netw)180 393.6 Q(ork Information Center)-.1 E 2.5(,S)
+-.4 G(RI International, Menlo P)-2.5 E(ark, California.)-.15 E(1978.)5 E
+69.39([NBS80] National)72 409.8 R 1.46(Bureau of Standards,)3.96 F F1
+1.46(Speci\214cation of a Dr)3.96 F 1.46(aft Messa)-.15 F 1.66 -.1(ge F)
+-.1 H 1.46(ormat Stan-)-.95 F(dar)180 421.8 Q(d.)-.37 E F0
+(Report No. ICST/CBOS 80-2.)5 E(October 1980.)5 E 60.51
+([Neigus73] Neigus,)72 438 R(N.,)5.186 E F1 -.45(Fi)5.186 G 2.686(le T)
+.45 F -.15(ra)-.55 G 2.686(nsfer Pr).15 F 2.686(otocol for the ARP)-.45
+F 5.187(AN)-.9 G(etwork.)-5.187 E F0 2.687(RFC 542, NIC)7.687 F 2.5
+(17759. In)180 450 R 2.5([Feinler78]. August,)2.5 F(1973.)2.5 E([No)72
+466.2 Q 55.21(witz78a] No)-.25 F 1.633(witz, D. A., and Lesk, M. E.,)
+-.25 F F1 4.132(AD)4.132 G 1.632(ial-Up Network of UNIX Systems.)-4.132
+F F0(Bell)6.632 E 5.403(Laboratories. In)180 478.2 R 2.904
+(UNIX Programmer')5.403 F 5.404(sM)-.55 G 2.904(anual, Se)-5.404 F -.15
+(ve)-.25 G 2.904(nth Edition, V).15 F 2.904(olume 2.)-1.29 F
+(August, 1978.)180 490.2 Q([No)72 506.4 Q 54.65(witz78b] No)-.25 F .633
+(witz, D. A.,)-.25 F F1 .632(Uucp Implementation Description.)3.132 F F0
+.632(Bell Laboratories.)5.632 F .632(In UNIX)5.632 F(Programmer')180
+518.4 Q 2.5(sM)-.55 G(anual, Se)-2.5 E -.15(ve)-.25 G(nth Edition, V).15
+E(olume 2.)-1.29 E(October)5 E 2.5(,1)-.4 G(978.)-2.5 E 64.39
([Postel74] Postel,)72 534.6 R .24(J., and Neigus, N., Re)2.74 F .241
-(vised FTP Reply Codes.)-.25 F .241(RFC 640, NIC 30843.)5.241 F(In)5.241 E 2.5
-([Feinler78]. June,)180 546.6 R(1974.)2.5 E 64.39([Postel77] Postel,)72 562.8 R
-(J.,)2.5 E F1(Mail Pr)2.5 E(otocol.)-.45 E F0(NIC 29588.)5 E(In [Feinler78].)5
-E(No)5 E -.15(ve)-.15 G(mber 1977.).15 E 59.95([Postel79a] Postel,)72 579 R
-(J.,)3.144 E F1 .644(Internet Messa)3.144 F .844 -.1(ge P)-.1 H -.45(ro).1 G
-(tocol.).45 E F0 .644(RFC 753, IEN 85.)5.644 F(Netw)5.644 E .644
-(ork Information)-.1 F(Center)180 591 Q 2.5(,S)-.4 G(RI International, Menlo P)
-216.82 591 Q(ark, California.)-.15 E(March 1979.)5 E 59.39([Postel79b] Postel,)
-72 607.2 R 1.305(J. B.,)3.805 F F1 1.305(An Internetwork Messa)3.805 F 1.505
--.1(ge S)-.1 H(tructur).1 E -.15(e.)-.37 G F0(In)6.456 E F1(Pr)3.806 E 1.306
-(oceedings of the Sixth)-.45 F(Data Communications Symposium,)180 619.2 Q F0
-2.5(IEEE. Ne)2.5 F 2.5(wY)-.25 G 2.5(ork. No)379.74 619.2 R -.15(ve)-.15 G
-(mber 1979.).15 E 64.39([Postel80] Postel,)72 635.4 R .639(J. B.,)3.139 F F1
-3.139(AS)3.139 G(tructur)248.676 635.4 Q .639(ed F)-.37 F .639(ormat for T)
--1.05 F -.15(ra)-.55 G .639(nsmission of Multi-Media Documents.).15 F F0 .418
-(RFC 767.)180 647.4 R(Netw)5.419 E .419(ork Information Center)-.1 F 2.919(,S)
--.4 G .419(RI International, Menlo P)350.474 647.4 R .419(ark, Califor)-.15 F
-(-)-.2 E 2.5(nia. August)180 659.4 R(1980.)2.5 E 64.39([Postel82] Postel,)72
-675.6 R 2.05(J. B.,)4.55 F F1 2.05(Simple Mail T)4.55 F -.15(ra)-.55 G 2.05
-(nsfer Pr).15 F(otocol.)-.45 E F0 2.05(RFC821 \(obsoleting RFC788\).)7.05 F
-(Netw)180 687.6 Q .273(ork Information Center)-.1 F 2.774(,S)-.4 G .274
-(RI International, Menlo P)305.3 687.6 R .274(ark, California.)-.15 F(August)
-5.274 E(1982.)180 699.6 Q/F2 10/Times-Bold@0 SF 187.28(SMM:9-12 SENDMAIL)72 756
-R 2.5<8a41>2.5 G 2.5(nI)383.99 756 S(nter)395.94 756 Q(netw)-.15 E
-(ork Mail Router)-.1 E EP
+(vised FTP Reply Codes.)-.25 F .241(RFC 640, NIC 30843.)5.241 F(In)5.241
+E 2.5([Feinler78]. June,)180 546.6 R(1974.)2.5 E 64.39
+([Postel77] Postel,)72 562.8 R(J.,)2.5 E F1(Mail Pr)2.5 E(otocol.)-.45 E
+F0(NIC 29588.)5 E(In [Feinler78].)5 E(No)5 E -.15(ve)-.15 G(mber 1977.)
+.15 E 59.95([Postel79a] Postel,)72 579 R(J.,)3.144 E F1 .644
+(Internet Messa)3.144 F .844 -.1(ge P)-.1 H -.45(ro).1 G(tocol.).45 E F0
+.644(RFC 753, IEN 85.)5.644 F(Netw)5.644 E .644(ork Information)-.1 F
+(Center)180 591 Q 2.5(,S)-.4 G(RI International, Menlo P)-2.5 E
+(ark, California.)-.15 E(March 1979.)5 E 59.39([Postel79b] Postel,)72
+607.2 R 1.305(J. B.,)3.805 F F1 1.305(An Internetwork Messa)3.805 F
+1.505 -.1(ge S)-.1 H(tructur).1 E -.15(e.)-.37 G F0(In)6.456 E F1(Pr)
+3.806 E 1.306(oceedings of the Sixth)-.45 F
+(Data Communications Symposium,)180 619.2 Q F0 2.5(IEEE. Ne)2.5 F 2.5
+(wY)-.25 G 2.5(ork. No)-3.6 F -.15(ve)-.15 G(mber 1979.).15 E 64.39
+([Postel80] Postel,)72 635.4 R .639(J. B.,)3.139 F F1 3.139(AS)3.139 G
+(tructur)-3.139 E .639(ed F)-.37 F .639(ormat for T)-1.05 F -.15(ra)-.55
+G .639(nsmission of Multi-Media Documents.).15 F F0 .418(RFC 767.)180
+647.4 R(Netw)5.419 E .419(ork Information Center)-.1 F 2.919(,S)-.4 G
+.419(RI International, Menlo P)-2.919 F .419(ark, Califor)-.15 F(-)-.2 E
+2.5(nia. August)180 659.4 R(1980.)2.5 E 64.39([Postel82] Postel,)72
+675.6 R 2.05(J. B.,)4.55 F F1 2.05(Simple Mail T)4.55 F -.15(ra)-.55 G
+2.05(nsfer Pr).15 F(otocol.)-.45 E F0 2.05
+(RFC821 \(obsoleting RFC788\).)7.05 F(Netw)180 687.6 Q .273
+(ork Information Center)-.1 F 2.774(,S)-.4 G .274
+(RI International, Menlo P)-2.774 F .274(ark, California.)-.15 F(August)
+5.274 E(1982.)180 699.6 Q/F2 10/Times-Bold@0 SF 187.28
+(SMM:9-12 SENDMAIL)72 756 R 2.5<8a41>2.5 G 2.5(nI)-2.5 G(nter)-2.5 E
+(netw)-.15 E(ork Mail Router)-.1 E EP
%%Page: 13 13
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(SENDMAIL \212 An Inter)72 60 Q(netw)-.15 E
-(ork Mail Router)-.1 E(SMM:9-13)457.9 60 Q/F1 10/Times-Roman@0 SF 55.5
-([Schmidt79] Schmidt,)72 96 R(E.,)2.972 E/F2 10/Times-Italic@0 SF .472(An Intr)
-2.972 F .472(oduction to the Berk)-.45 F(ele)-.1 E 2.972(yN)-.3 G(etwork.)
-369.664 96 Q F1(Uni)5.472 E -.15(ve)-.25 G .472(rsity of California,).15 F
-(Berk)180 108 Q(ele)-.1 E 2.5(yC)-.15 G 2.5(alifornia. 1979.)225.02 108 R 59.95
-([Shoens79] Shoens,)72 124.2 R(K.,)4.894 E F2 2.394(Mail Refer)4.894 F 2.394
-(ence Manual.)-.37 F F1(Uni)7.394 E -.15(ve)-.25 G 2.395
-(rsity of California, Berk).15 F(ele)-.1 E 6.195 -.65(y. I)-.15 H(n).65 E
-(UNIX Programmer')180 136.2 Q 2.5(sM)-.55 G(anual, Se)275.54 136.2 Q -.15(ve)
--.25 G(nth Edition, V).15 E(olume 2C.)-1.29 E(December 1979.)5 E 60.51
-([Sluizer81] Sluizer)72 152.4 R 2.872(,S)-.4 G .372(., and Postel, J. B.,)
-218.862 152.4 R F2 .372(Mail T)2.872 F -.15(ra)-.55 G .372(nsfer Pr).15 F
-(otocol.)-.45 E F1 .371(RFC 780.)5.371 F(Netw)5.371 E .371(ork Infor)-.1 F(-)
--.2 E(mation Center)180 164.4 Q 2.5(,S)-.4 G(RI International, Menlo P)247.1
-164.4 Q(ark, California.)-.15 E(May 1981.)5 E 52.72([Solomon81] Solomon,)72
-180.6 R .96(M., Landweber)3.46 F 3.46(,L)-.4 G .96
-(., and Neuhengen, D., \231The Design of the CSNET)296.08 180.6 R(Name Serv)180
-192.6 Q(er)-.15 E 3.9 -.7(.\232 C)-.55 H(S-DN-2, Uni).7 E -.15(ve)-.25 G
-(rsity of W).15 E(isconsin, Madison.)-.4 E(No)5 E -.15(ve)-.15 G(mber 1981.).15
-E 78.28([Su82] Su,)72 208.8 R(Za)4.344 E 1.844(w-Sing, and Postel, Jon,)-.15 F
-F2 1.844(The Domain Naming Con)4.344 F 1.844(vention for Internet)-.4 F 1.717
-(User Applications.)180 220.8 R F1 4.217(RFC819. Netw)6.717 F 1.717
-(ork Information Center)-.1 F 4.217(,S)-.4 G 1.718(RI International,)436.182
-220.8 R(Menlo P)180 232.8 Q(ark, California.)-.15 E(August 1982.)5 E([UNIX83])
-72 249 Q F2 2.12(The UNIX Pr)180 249 R -.1(og)-.45 G -.15(ra).1 G(mmer').15 E
-4.62(sM)-.4 G 2.12(anual, Se)298.3 249 R 2.12(venth Edition,)-.15 F F1 -.6(Vi)
-4.62 G 2.12(rtual V).6 F 2.12(AX-11 V)-1.35 F(ersion,)-1.11 E -1.29(Vo)180 261
-S 1.027(lume 1.)1.29 F 1.027(Bell Laboratories, modi\214ed by the Uni)6.027 F
--.15(ve)-.25 G 1.027(rsity of California, Berk).15 F(e-)-.1 E(le)180 273 Q 1.3
--.65(y, C)-.15 H 2.5(alifornia. March,).65 F(1983.)2.5 E EP
+(ork Mail Router)-.1 E(SMM:9-13)189.78 E/F1 10/Times-Roman@0 SF 55.5
+([Schmidt79] Schmidt,)72 96 R(E.,)2.972 E/F2 10/Times-Italic@0 SF .472
+(An Intr)2.972 F .472(oduction to the Berk)-.45 F(ele)-.1 E 2.972(yN)-.3
+G(etwork.)-2.972 E F1(Uni)5.472 E -.15(ve)-.25 G .472
+(rsity of California,).15 F(Berk)180 108 Q(ele)-.1 E 2.5(yC)-.15 G 2.5
+(alifornia. 1979.)-2.5 F 59.95([Shoens79] Shoens,)72 124.2 R(K.,)4.894 E
+F2 2.394(Mail Refer)4.894 F 2.394(ence Manual.)-.37 F F1(Uni)7.394 E
+-.15(ve)-.25 G 2.395(rsity of California, Berk).15 F(ele)-.1 E 6.195
+-.65(y. I)-.15 H(n).65 E(UNIX Programmer')180 136.2 Q 2.5(sM)-.55 G
+(anual, Se)-2.5 E -.15(ve)-.25 G(nth Edition, V).15 E(olume 2C.)-1.29 E
+(December 1979.)5 E 60.51([Sluizer81] Sluizer)72 152.4 R 2.872(,S)-.4 G
+.372(., and Postel, J. B.,)-2.872 F F2 .372(Mail T)2.872 F -.15(ra)-.55
+G .372(nsfer Pr).15 F(otocol.)-.45 E F1 .371(RFC 780.)5.371 F(Netw)5.371
+E .371(ork Infor)-.1 F(-)-.2 E(mation Center)180 164.4 Q 2.5(,S)-.4 G
+(RI International, Menlo P)-2.5 E(ark, California.)-.15 E(May 1981.)5 E
+52.72([Solomon81] Solomon,)72 180.6 R .96(M., Landweber)3.46 F 3.46(,L)
+-.4 G .96(., and Neuhengen, D., \231The Design of the CSNET)-3.46 F
+(Name Serv)180 192.6 Q(er)-.15 E 3.9 -.7(.\232 C)-.55 H(S-DN-2, Uni).7 E
+-.15(ve)-.25 G(rsity of W).15 E(isconsin, Madison.)-.4 E(No)5 E -.15(ve)
+-.15 G(mber 1981.).15 E 78.28([Su82] Su,)72 208.8 R(Za)4.344 E 1.844
+(w-Sing, and Postel, Jon,)-.15 F F2 1.844(The Domain Naming Con)4.344 F
+1.844(vention for Internet)-.4 F 1.717(User Applications.)180 220.8 R F1
+4.217(RFC819. Netw)6.717 F 1.717(ork Information Center)-.1 F 4.217(,S)
+-.4 G 1.718(RI International,)-4.217 F(Menlo P)180 232.8 Q
+(ark, California.)-.15 E(August 1982.)5 E([UNIX83])72 249 Q F2 2.12
+(The UNIX Pr)66.35 F -.1(og)-.45 G -.15(ra).1 G(mmer').15 E 4.62(sM)-.4
+G 2.12(anual, Se)-4.62 F 2.12(venth Edition,)-.15 F F1 -.6(Vi)4.62 G
+2.12(rtual V).6 F 2.12(AX-11 V)-1.35 F(ersion,)-1.11 E -1.29(Vo)180 261
+S 1.027(lume 1.)1.29 F 1.027(Bell Laboratories, modi\214ed by the Uni)
+6.027 F -.15(ve)-.25 G 1.027(rsity of California, Berk).15 F(e-)-.1 E
+(le)180 273 Q 1.3 -.65(y, C)-.15 H 2.5(alifornia. March,).65 F(1983.)2.5
+E EP
%%Trailer
end
%%EOF
diff --git a/doc/op/Makefile b/doc/op/Makefile
index e8f791a..0d86e91 100644
--- a/doc/op/Makefile
+++ b/doc/op/Makefile
@@ -1,4 +1,4 @@
-# @(#)Makefile 8.2 (Berkeley) 2/28/94
+# @(#)Makefile 8.2 (Berkeley) 2/28/1994
DIR= smm/08.sendmailop
SRCS= op.me
diff --git a/doc/op/op.me b/doc/op/op.me
index 60bc113..e9c2e5c 100644
--- a/doc/op/op.me
+++ b/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.135 (Berkeley) 1/16/1999
.\"
.\" 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.135
.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.
@@ -800,7 +812,7 @@ you should create the file
.q /etc/sendmail.st :
.(b
cp /dev/null /etc/sendmail.st
-chmod 666 /etc/sendmail.st
+chmod 644 /etc/sendmail.st
.)b
This file does not grow.
It is printed with the program
@@ -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,16 +1148,22 @@ 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)
+(e.g., SunOS 4.X, HP-UX, BSD)
then
.i sendmail
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,13 @@ 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 fileopen
+The timeout for opening .forward and :include: files [60s, none].
+.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 +2386,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 +2411,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 +2436,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 +2495,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,9 +2726,14 @@ which should be created.
only uses two entries:
.b hosts
and
-.b aliases .
-.pp
-However, some systems (such as SunOS)
+.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 4.X)
will do DNS lookups
regardless of the setting of the service switch entry.
In particular, the system routine
@@ -2652,7 +2825,7 @@ it will not assume that all names match.
.pp
To completely turn off all name server access
on systems without service switch support
-(such as SunOS)
+(such as SunOS 4.X)
you will have to recompile with
\-DNAMED_BIND=0
and remove \-lresolv from the list of libraries to be searched
@@ -2691,6 +2864,23 @@ 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.
+This might also be used as a
+denial of service
+attack (users could create forward files for other users);
+a better approach might be to create
+/var/forward
+mode 755
+and create empty files for each user,
+owned by that user,
+mode 644.
+If you do this, you don't have to set the DontBlameSendmail options
+indicated above.
.sh 2 "Free Space"
.pp
On systems that have one of the system calls in the
@@ -2862,7 +3052,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 +3159,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 +3191,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 +3318,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 +3454,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 +3525,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 $@
@@ -3487,7 +3687,7 @@ will be
or whatever is appropriate for the receiving mailer.
.ip $h
The recipient host.
-This is set in ruleset 0 from the $# field of a parsed address.
+This is set in ruleset 0 from the $@ field of a parsed address.
.ip $i
The queue id,
e.g.,
@@ -3601,6 +3801,9 @@ The IP address of the SMTP client.
Defined in the SMTP server only.
.ip ${client_name}
The host name of the SMTP client.
+This may be the client's bracketed IP address
+in the form [ nnn.nnn.nnn.nnn ] if the client's
+IP address is not resolvable.
Defined in the SMTP server only.
.ip ${client_port}
The port number of the SMTP client.
@@ -3611,6 +3814,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 +4036,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 +4163,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 +4240,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 +4300,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 +4492,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 +4583,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 +4604,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
@@ -4394,6 +4615,7 @@ or may be two ids separated by a slash;
if so, the first rewriting set is applied to envelope
addresses
and the second is applied to headers.
+Setting any value zero disables corresponding mailer-specific rewriting.
.pp
The Directory
is actually a colon-separated path of directories to try.
@@ -4491,7 +4713,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 +4727,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 +5075,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 +5157,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 +5362,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 +5432,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 +5553,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 +5788,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 +5888,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 +6139,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 8 configurations.
.pp
.q Old
configuration files are defined as version level one.
@@ -5865,6 +6214,31 @@ 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
+Version level eight configuration files allow
+.b $#
+on the left hand side of ruleset lines.
+.pp
The
.b V
line may have an optional
@@ -5984,13 +6358,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 +6443,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 +6521,53 @@ 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 available 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 +6620,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 +6691,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 +6719,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 +6938,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 +6991,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 +7006,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 +7501,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 +7541,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 +7666,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 +7680,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 +7780,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 +7876,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 +8113,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 +8174,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
@@ -8163,7 +8200,7 @@ Temporary versions of the qf files,
used during queue file rebuild.
.ip /var/spool/mqueue/xf*
A transcript of the current session.
-.if e \
+.if o \
\{\
. bp
. rs
@@ -8187,7 +8224,7 @@ replace it with a blank sheet for double-sided output.
.\".sz 10
.\"Eric Allman
.\".sp
-.\"Version 8.106
+.\"Version 8.135
.\".ce 0
.bp 3
.ce
@@ -8209,3 +8246,12 @@ TABLE OF CONTENTS
.rm ef
.rm of
.xp
+.if o \
+\{\
+. bp
+. rs
+. sp |4i
+. ce 2
+This page intentionally left blank;
+replace it with a blank sheet for double-sided output.
+.\}
diff --git a/doc/op/op.ps b/doc/op/op.ps
index 3e0d2d0..2632525 100644
--- a/doc/op/op.ps
+++ b/doc/op/op.ps
@@ -1,17 +1,17 @@
%!PS-Adobe-3.0
-%%Creator: groff version 1.10
-%%CreationDate: Mon Oct 20 12:34:11 1997
+%%Creator: groff version 1.11
+%%CreationDate: Fri Jan 22 21:52:41 1999
%%DocumentNeededResources: font Times-Bold
%%+ font Times-Roman
%%+ font Times-Italic
%%+ font Symbol
-%%DocumentSuppliedResources: procset grops 1.10 0
-%%Pages: 75
+%%DocumentSuppliedResources: procset grops 1.11 0
+%%Pages: 76
%%PageOrder: Ascend
%%Orientation: Portrait
%%EndComments
%%BeginProlog
-%%BeginResource: procset grops 1.10 0
+%%BeginResource: procset grops 1.11 0
/setpacking where{
pop
currentpacking
@@ -206,78 +206,87 @@ def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
%%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
-(eric@Sendmail.ORG)245.205 208.2 Q -1.11(Ve)260.225 232.2 S(rsion 8.106)
-1.11 E -.15(Fo)236.965 256.2 S 2.5(rS).15 G(endmail V)-2.5 E(ersion 8.8)
--1.11 E/F3 10/Times-Italic@0 SF(Sendmail)97 300.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
-312.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)-2.878 F .378
-(ened to a crossbar switch,)-.1 F 1.036
-(relaying messages from one domain into another)72 324.6 R 6.036(.I)-.55
+/F0 16/Times-Bold@0 SF(SENDMAIL)236.833 143.4 Q/F1 10/Times-Bold@0 SF
+(TM)-8 I/F2 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/F3 10/Times-Roman@0 SF
+(Eric Allman)263.42 196.2 Q(Sendmail, Inc.)258.975 208.2 Q
+(eric@Sendmail.COM)244.37 220.2 Q -1.11(Ve)260.225 244.2 S(rsion 8.135)
+1.11 E -.15(Fo)236.965 268.2 S 2.5(rS).15 G(endmail V)-2.5 E(ersion 8.9)
+-1.11 E/F4 10/Times-Italic@0 SF(Sendmail)97 312.6 Q/F5 8/Times-Roman@0
+SF(TM)-5 I F3 .1(implements a general purpose internetw)2.6 5 N .1
+(ork mail routing f)-.1 F .1(acility under the UNIX\256 oper)-.1 F(-)-.2
+E .017(ating system.)72 324.6 R .017(It is not tied to an)5.017 F 2.517
+(yo)-.15 G .017(ne transport protocol \212 its function may be lik)
+-2.517 F .017(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)-6.036 G 1.036
(he process, it can do a limited amount of message)-3.536 F .604(header editing to put the message into a format that is appropriate for the recei)
-72 336.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 348.6 Q .711
-(Due to the requirements of \215e)97 364.8 R .711(xibility for)-.15 F F3
-(sendmail)3.211 E F2 3.211(,t)C .71
+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 F4
+(sendmail)3.211 E F3 3.211(,t)C .71
(he con\214guration \214le can seem some)-3.211 F .71(what unap-)-.25 F
-2.893(proachable. Ho)72 376.8 R(we)-.25 E -.15(ve)-.25 G 1.193 -.4(r, t)
+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-)
--2.893 F .646(ration \214les ha)72 388.8 R .946 -.15(ve b)-.2 H .646
+-2.893 F .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 400.8 Q(.)-.65 E F3(Sendmail)97 417 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\), RFC1651 \(SMTP Service Extensions\),)
-72 429 R 2.022(RFC1891 \(SMTP Deli)72 441 R -.15(ve)-.25 G 2.022(ry Status Noti\214cations\), RFC1892 \(Multipart/Report\), RFC1893 \(Mail System)
-.15 F 2.365(Status Codes\), RFC1894 \(Deli)72 453 R -.15(ve)-.25 G 2.364
-(ry Status Noti\214cations\), and RFC1985 \(SMTP Service Extension for)
-.15 F .251(Remote Message Queue Starting\).)72 465 R(Ho)5.251 E(we)-.25
-E -.15(ve)-.25 G 1.051 -.4(r, s).15 H(ince).4 E F3(sendmail)2.751 E F2
-.251(is designed to w)2.751 F .251(ork in a wider w)-.1 F .252
-(orld, in man)-.1 F(y)-.15 E(cases it can be con\214gured to e)72 477 Q
-(xceed these protocols.)-.15 E(These cases are described herein.)5 E
-(Although)97 493.2 Q F3(sendmail)3.548 E F2 1.047(is intended to run without the need for monitoring, it has a number of features)
+(tion \214le incrementally)72 412.8 Q(.)-.65 E F4(Sendmail)97 429 Q F3
+1.471(is based on RFC821 \(Simple Mail T)3.97 F 1.471
+(ransport Protocol\), RFC822 \(Internet Mail Headers)-.35 F -.15(Fo)72
+441 S 1.855(rmat\), RFC1123 \(Internet Host Requirements\), RFC2045 \(MIME\), RFC1869 \(SMTP Service Exten-)
+.15 F 1.446(sions\), RFC1652 \(SMTP 8BITMIME Extension\), RFC1870 \(SMTP SIZE Extension\), RFC1891 \(SMTP)
+72 453 R(Deli)72 465 Q -.15(ve)-.25 G 3.474(ry Status Noti\214cations\), RFC1892 \(Multipart/Report\), RFC1893 \(Mail System Status Codes\),)
+.15 F .32(RFC1894 \(Deli)72 477 R -.15(ve)-.25 G .321(ry Status Noti\214cations\), RFC1985 \(SMTP Service Extension for Remote Message Queue)
+.15 F .796(Starting\), and RFC2033 \(Local Message T)72 489 R .796
+(ransmission Protocol\).)-.35 F(Ho)5.796 E(we)-.25 E -.15(ve)-.25 G
+1.596 -.4(r, s).15 H(ince).4 E F4(sendmail)3.296 E F3 .795
+(is designed to)3.296 F -.1(wo)72 501 S 1.548(rk in a wider w).1 F 1.549
+(orld, in man)-.1 F 4.049(yc)-.15 G 1.549
+(ases it can be con\214gured to e)-4.049 F 1.549(xceed these protocols.)
+-.15 F 1.549(These cases are)6.549 F(described herein.)72 513 Q
+(Although)97 529.2 Q F4(sendmail)3.548 E F3 1.047(is intended to run without the need for monitoring, it has a number of features)
3.548 F 1.972(that may be used to monitor or adjust the operation under unusual circumstances.)
-72 505.2 R 1.972(These features are)6.972 F(described.)72 517.2 Q .817
-(Section one describes ho)97 533.4 R 3.317(wt)-.25 G 3.317(od)-3.317 G
-3.317(oa)-3.317 G(basic)-.001 E F3(sendmail)3.316 E F2 3.316
+72 541.2 R 1.972(These features are)6.972 F(described.)72 553.2 Q .817
+(Section one describes ho)97 569.4 R 3.317(wt)-.25 G 3.317(od)-3.317 G
+3.317(oa)-3.317 G(basic)-.001 E F4(sendmail)3.316 E F3 3.316
(installation. Section)3.316 F(tw)3.316 E 3.316(oe)-.1 G .816
(xplains the day-to-day)-3.466 F .282(information you should kno)72
-545.4 R 2.782(wt)-.25 G 2.782(om)-2.782 G .282
+581.4 R 2.782(wt)-.25 G 2.782(om)-2.782 G .282
(aintain your mail system.)-2.782 F .282(If you ha)5.282 F .583 -.15
(ve a r)-.2 H(elati).15 E -.15(ve)-.25 G .283(ly normal site, these tw)
-.15 F(o)-.1 E .635(sections should contain suf)72 557.4 R .635
-(\214cient information for you to install)-.25 F F3(sendmail)3.135 E F2
+.15 F(o)-.1 E .635(sections should contain suf)72 593.4 R .635
+(\214cient information for you to install)-.25 F F4(sendmail)3.135 E F3
.634(and k)3.135 F .634(eep it happ)-.1 F 4.434 -.65(y. S)-.1 H .634
(ection three).65 F .925
-(describes some parameters that may be safely tweak)72 569.4 R 3.425
+(describes some parameters that may be safely tweak)72 605.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 .886(mand line ar)72 581.4 R 3.386
+.925(rding the com-).05 F .886(mand line ar)72 617.4 R 3.386
(guments. Section)-.18 F<8c76>3.386 E 3.386(ec)-.15 G .885
(ontains the nitty-gritty information about the con\214guration \214le.)
-3.386 F(This)5.885 E .004
-(section is for masochists and people who must write their o)72 593.4 R
+(section is for masochists and people who must write their o)72 629.4 R
.005(wn con\214guration \214le.)-.25 F .005(Section six describes con-)
-5.005 F .886(\214guration that can be done at compile time.)72 605.4 R
-.886(Section se)5.886 F -.15(ve)-.25 G 3.386(ng).15 G -2.15 -.25(iv e)
--3.386 H 3.386(sab).25 G .886(rief description of dif)-3.386 F .885
-(ferences in this)-.25 F -.15(ve)72 617.4 S 1.619(rsion of).15 F F3
-(sendmail)4.119 E F2 6.619(.T)C 1.619(he appendix)-6.619 F 1.619(es gi)
--.15 F 1.919 -.15(ve a b)-.25 H 1.619(rief b).15 F 1.619(ut detailed e)
--.2 F 1.62(xplanation of a number of features not)-.15 F
-(described in the rest of the paper)72 629.4 Q(.)-.55 E/F4 10
-/Times-Bold@0 SF -1.2(WA)97 645.6 S(RNING:)1.2 E F2(Se)3.268 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)-3.267 F(this document for prior v)72 657.6 Q
-(ersions of)-.15 E F3(sendmail)2.5 E F2(.)A F4
+5.005 F .165(\214guration that can be done at compile time.)72 641.4 R
+.165(The appendix)5.165 F .165(es gi)-.15 F .465 -.15(ve a b)-.25 H .165
+(rief b).15 F .165(ut detailed e)-.2 F .165(xplanation of a num-)-.15 F
+(ber of features not described in the rest of the paper)72 653.4 Q(.)
+-.55 E F1(DISCLAIMER:)97 669.6 Q F3
+(This documentation is under modi\214cation.)2.5 E .32 LW 76 680.4 72
+680.4 DL 80 680.4 76 680.4 DL 84 680.4 80 680.4 DL 88 680.4 84 680.4 DL
+92 680.4 88 680.4 DL 96 680.4 92 680.4 DL 100 680.4 96 680.4 DL 104
+680.4 100 680.4 DL 108 680.4 104 680.4 DL 112 680.4 108 680.4 DL 116
+680.4 112 680.4 DL 120 680.4 116 680.4 DL 124 680.4 120 680.4 DL 128
+680.4 124 680.4 DL 132 680.4 128 680.4 DL 136 680.4 132 680.4 DL 140
+680.4 136 680.4 DL 144 680.4 140 680.4 DL 148 680.4 144 680.4 DL 152
+680.4 148 680.4 DL 156 680.4 152 680.4 DL 160 680.4 156 680.4 DL 164
+680.4 160 680.4 DL 168 680.4 164 680.4 DL 172 680.4 168 680.4 DL 176
+680.4 172 680.4 DL 180 680.4 176 680.4 DL 184 680.4 180 680.4 DL 188
+680.4 184 680.4 DL 192 680.4 188 680.4 DL 196 680.4 192 680.4 DL 200
+680.4 196 680.4 DL 204 680.4 200 680.4 DL 208 680.4 204 680.4 DL 212
+680.4 208 680.4 DL 216 680.4 212 680.4 DL F5
+(Sendmail is a trademark of Sendmail, Inc.)93.6 692.4 Q F1
(Sendmail Installation and Operation Guide)72 756 Q(SMM:08-1)200.86 E EP
%%Page: 2 2
%%BeginPageSetup
@@ -293,21 +302,22 @@ BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
(SMM:08-7)200.86 E 2.5(1. B)72 96 R(ASIC INST)-.3 E(ALLA)-.9 E(TION)-.95
-E/F1 10/Times-Roman@0 SF .233(There are tw)112 112.2 R 2.733(ob)-.1 G
-.233(asic steps to installing)-2.733 F/F2 10/Times-Italic@0 SF(sendmail)
-2.733 E F1 5.233(.T)C .233(he hard part is to b)-5.233 F .234
-(uild the con\214guration table.)-.2 F 1.186(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.185
-(ws about, ho)-.25 F 3.685(wt)-.25 G(o)-3.685 E .714
-(parse addresses, ho)87 136.2 R 3.214(wt)-.25 G 3.214(or)-3.214 G -.25
-(ew)-3.214 G .715(rite the message header).25 F 3.215(,a)-.4 G .715
-(nd the settings of v)-3.215 F .715(arious options.)-.25 F .715
-(Although the)5.715 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.077
-(the-shelf con\214guration.)87 160.2 R 1.078(The second part is actually doing the installation, i.e., creating the necessary)
-6.077 F(\214les, etc.)87 172.2 Q .192
+E/F1 10/Times-Roman@0 SF .126(There are tw)112 112.2 R 2.626(ob)-.1 G
+.126(asic steps to installing)-2.626 F/F2 10/Times-Italic@0 SF(sendmail)
+2.626 E F1 5.126(.F)C .126(irst, you ha)-5.126 F .426 -.15(ve t)-.2 H
+2.626(oc).15 G .127(ompile and install the binary)-2.626 F(.)-.65 E(If)
+87 124.2 Q F2(sendmail)2.889 E F1 .388(has already been ported to your operating system that should be simple.)
+2.889 F .388(Second, you must)5.388 F -.2(bu)87 136.2 S .278
+(ild a run-time con\214guration \214le.).2 F .278(This is a \214le that)
+5.278 F F2(sendmail)2.778 E F1 .279
+(reads when it starts up that describes the)2.778 F .532(mailers it kno)
+87 148.2 R .532(ws about, ho)-.25 F 3.031(wt)-.25 G 3.031(op)-3.031 G
+.531(arse addresses, ho)-3.031 F 3.031(wt)-.25 G 3.031(or)-3.031 G -.25
+(ew)-3.031 G .531(rite the message header).25 F 3.031(,a)-.4 G .531
+(nd the settings of)-3.031 F -.25(va)87 160.2 S .868(rious options.).25
+F .868(Although the con\214guration \214le can be quite comple)5.868 F
+.869(x, a con\214guration can usually be)-.15 F -.2(bu)87 172.2 S
+(ilt using an M4-based con\214guration language.).2 E .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.431(of the e)87 200.4 R 1.432(xisting con\214gurations and that the standard installation parameters are acceptable.)
@@ -321,403 +331,398 @@ E/F1 10/Times-Roman@0 SF .233(There are tw)112 112.2 R 2.733(ob)-.1 G
(If you ha)5.542 F .843 -.15(ve a r)-.2 H .543(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.935 E F1 .435(source is in the)2.935 F F2(sr)2.935 E(c)
--.37 E F1(subdirectory)2.934 E 5.434(.I)-.65 G 2.934(fy)-5.434 G .434
-(ou are running on a 4.4BSD system, com-)-2.934 F .178
-(pile by typing \231mak)102 304.8 R 2.678(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)-2.679 E 2.679(es)-.1 G .179(ome other adjustments.)-2.679 F .179
-(On most)5.179 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)-5.364 G .364(orks for multiple object v)
--2.964 F(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.18(supports tw)4.68 F 4.681
-(od)-.1 G(if)-4.681 E 2.181(ferent formats for the local \(on disk\) v)
--.25 F 2.181(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.167 G(ne).74 E 3.167(wD)-.25 G(BM')
--3.167 E 3.167('f)-.74 G .667(ormat, a)-3.167 F -.25(va)-.2 G .666
-(ilable on nearly all systems around today).25 F 5.666(.T)-.65 G(his)
--5.666 E -.1(wa)189 441.6 S 3.54(st).1 G 1.041
-(he preferred format prior to 4.4BSD.)-3.54 F 1.041(It allo)6.041 F
-1.041(ws such comple)-.25 F 3.541(xt)-.15 G 1.041(hings as)-3.541 F
-(multiple databases and closing a currently open database.)189 453.6 Q
-32.84(NEWDB The)117 469.8 R(ne)3.324 E 3.324(wd)-.25 G .824
-(atabase package from Berk)-3.324 F(ele)-.1 E 4.624 -.65(y. I)-.15 H
-3.324(fy).65 G .824(ou ha)-3.324 F 1.124 -.15(ve t)-.2 H .824
-(his, use it.).15 F .823(It allo)5.823 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.582(uc)1.1 G 1.081
-(an de\214ne this in conjunction with one of the other tw)-3.582 F 1.081
-(o; if you do, old)-.1 F .692(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)-3.193 F 2.852(format. As)189
-517.8 R 2.852(an)2.852 G .352(asty hack, if you ha)-2.852 F .651 -.15
-(ve N)-.2 H .351(EWDB, NDBM, and NIS de\214ned, and).15 F .951
-(if the alias \214le name includes the substring \231/yp/\232,)189 529.8
-R F2(sendmail)3.452 E F1 .952(will create both)3.452 F(ne)189 541.8 Q
-3.976(wa)-.25 G 1.476(nd old v)-3.976 F 1.475
-(ersions of the alias \214le during a)-.15 F F2(ne)3.975 E(walias)-.15 E
-F1 3.975(command. This)3.975 F(is)3.975 E .711
-(required because the Sun NIS/YP system reads the DBM v)189 553.8 R .711
-(ersion of the alias)-.15 F 2.5(\214le. It')189 565.8 R 2.5(su)-.55 G
-(gly as sin, b)-2.5 E(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.042(This can be slo)117
-594 R 3.542(wa)-.25 G 1.043(nd should be a)-3.542 F -.2(vo)-.2 G 3.543
-(ided. There).2 F 1.043(are also se)3.543 F -.15(ve)-.25 G 1.043
-(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)-2.5 E
-(ork Information Services \(formerly YP\).)-.1 E 28.94(NISPLUS Sun')117
-638.4 R 2.5(sN)-.55 G(IS+ services.)-2.5 E 26.73(NETINFO NeXT')117 654.6
-R 2.5(sN)-.55 G(etInfo service.)-2.5 E 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)-2.5 G(ironment.).4 E
-EP
+Q F2(sendmail)3.116 E F1 .616(source is in the)3.116 F F2(sr)3.116 E(c)
+-.37 E F1(subdirectory)3.116 E 5.616(.T)-.65 G 3.116(oc)-6.416 G .616
+(ompile sendmail, \231cd\232 into the)-3.116 F F2(sr)3.116 E(c)-.37 E F1
+(direc-)3.116 E(tory and type)102 304.8 Q(./Build)142 321 Q 1.41
+(This will lea)102 337.2 R 1.711 -.15(ve t)-.2 H 1.411
+(he binary in an appropriately named subdirectory).15 F 3.911(,e)-.65 G
+1.411(.g., obj.BSD-OS.2.1.i386.)-3.911 F(It)6.411 E -.1(wo)102 349.2 S
+(rks for multiple object v).1 E
+(ersions compiled out of the same directory)-.15 E(.)-.65 E F0 2.5
+(1.1.1. T)102 373.2 R(weaking the Build In)-.74 E -.1(vo)-.4 G(cation).1
+E F1 -1.1(Yo)142 389.4 S 2.905(uc)1.1 G .405(an gi)-2.905 F .705 -.15
+(ve p)-.25 H .405(arameters on the).15 F F2(Build)2.905 E F1 2.905
+(command. In)2.905 F .404(most cases these are only used when)2.905 F
+(the)117 401.4 Q F2(obj.*)2.5 E F1(directory is \214rst created.)5 E
+(These commands include:)5 E<ad4c>117 417.6 Q F2(libdir)2.5 E(s)-.1 E F1
+2.5(Al)153 429.6 S(ist of directories to search for libraries.)-2.5 E
+<ad49>117 445.8 Q F2(incdir)2.5 E(s)-.1 E F1 2.5(Al)153 457.8 S
+(ist of directories to search for include \214les.)-2.5 E<ad45>117 474 Q
+F2(en)2.5 E(var)-.4 E F1(=)A F2(value)A F1 .789(Set an en)153 486 R .789
+(vironment v)-.4 F .789(ariable to an indicated)-.25 F F2(value)3.289 E
+F1 .789(before compiling.)3.289 F .79(This is normally)5.789 F
+(used to set an ABI on Irix.)153 498 Q 23.42(\255c Create)117 514.2 R
+2.5(an)2.5 G -.25(ew)-2.5 G F2(obj.*)2.75 E F1(tree before running.)5 E
+<ad66>117 530.4 Q F2(sitecon\214g)2.5 E F1 2.193
+(Read the indicated site con\214guration \214le.)153 542.4 R 2.192
+(If this parameter is not speci\214ed,)7.193 F F2(Build)4.692 E F1
+(includes)153 554.4 Q F2(all)11.511 E F1 9.011(of the \214les)11.511 F
+F2($B)11.512 E(UILDT)-.1 E(OOLS/Site/site)-.18 E(.$oscf)-.15 E(.m4)-.15
+E F1(and)11.512 E F2($B)11.512 E(UILD-)-.1 E -.18(TO)153 566.4 S
+(OLS/Site/site).18 E(.con\214g)-.15 E(.m4)-.15 E F1 2.965(,w)C .465
+(here $B)-2.965 F(UILDT)-.1 E .464(OOLS is normally)-.18 F F2(../BuildT)
+2.964 E(ools)-.92 E F1 .464(and $oscf)2.964 F .099
+(is the same name as used on the)153 578.4 R F2(obj.*)2.599 E F1
+(directory)5.099 E 5.099(.S)-.65 G .099(ee belo)-5.099 F 2.599(wf)-.25 G
+.099(or a description of the site)-2.599 F(con\214guration \214le.)153
+590.4 Q 22.3(\255S Skip)117 606.6 R(auto-con\214guration.)4.421 E F2
+(Build)6.921 E F1 1.921(will a)4.421 F -.2(vo)-.2 G 1.921
+(id auto-detecting libraries if this is set.).2 F(All)6.92 E(libraries and map de\214nitions must be speci\214ed in the site con\214guration \214le.)
+153 618.6 Q(An)117 634.8 Q 2.5(yo)-.15 G
+(ther parameters are passed to the)-2.5 E F2(mak)2.5 E(e)-.1 E F1
+(program.)2.5 E F0 2.5(1.1.2. Cr)102 658.8 R
+(eating a Site Con\214guration File)-.18 E F1 .276
+(\(This section is not yet complete.)142 675 R -.15(Fo)5.276 G 2.776(rn)
+.15 G -.25(ow)-2.776 G 2.776(,s)-.4 G .276(ee the \214le BuildT)-2.776 F
+.277(ools/README for details.\))-.8 F EP
%%Page: 8 4
%%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 .308
-(After making the local system con\214guration described abo)142 112.2 R
--.15(ve)-.15 G 2.809(,Y).15 G .309(ou should be able to com-)-3.909 F
-(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)-2.5 E(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.345(liases and).1 F 1.576
-(/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.576 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.58 F 2.079
-(The con\214guration de\214nes the mail)7.079 F(deli)102 281.4 Q -.15
-(ve)-.25 G .888(ry mechanisms understood at this site, ho).15 F 3.389
-(wt)-.25 G 3.389(oa)-3.389 G .889(ccess them, ho)-3.389 F 3.389(wt)-.25
-G 3.389(of)-3.389 G(orw)-3.389 E .889(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 .109
-(\214guration re\215ects that.)102 333.6 R .109(The distrib)5.109 F .108
+(Installation and Operation Guide)2.5 E 2.5(1.1.3. T)102 96 R
+(weaking the Mak)-.74 E(e\214le)-.1 E/F1 10/Times-Italic@0 SF(Sendmail)
+142 112.2 Q/F2 10/Times-Roman@0 SF 2.181(supports tw)4.681 F 4.681(od)
+-.1 G(if)-4.681 E 2.181(ferent formats for the local \(on disk\) v)-.25
+F 2.18(ersion of databases,)-.15 F(notably the)117 124.2 Q F1(aliases)
+2.5 E F2 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 140.4 R -.74(``)3.166 G(ne).74 E 3.166(wD)-.25 G(BM')
+-3.166 E 3.166('f)-.74 G .666(ormat, a)-3.166 F -.25(va)-.2 G .666
+(ilable on nearly all systems around today).25 F 5.667(.T)-.65 G(his)
+-5.667 E -.1(wa)189 152.4 S 3.541(st).1 G 1.041
+(he preferred format prior to 4.4BSD.)-3.541 F 1.041(It allo)6.041 F
+1.041(ws such comple)-.25 F 3.54(xt)-.15 G 1.04(hings as)-3.54 F
+(multiple databases and closing a currently open database.)189 164.4 Q
+32.84(NEWDB The)117 180.6 R(Berk)3.787 E(ele)-.1 E 3.787(yD)-.15 G 3.787
+(Bp)-3.787 G 3.787(ackage. If)-3.787 F 1.288(you ha)3.788 F 1.588 -.15
+(ve t)-.2 H 1.288(his, use it.).15 F 1.288(It allo)6.288 F 1.288
+(ws long records,)-.25 F 2.56
+(multiple open databases, real in-memory caching, and so forth.)189
+192.6 R -1.1(Yo)7.56 G 5.06(uc)1.1 G(an)-5.06 E .468
+(de\214ne this in conjunction with)189 204.6 R/F3 9/Times-Roman@0 SF
+(NDBM)2.968 E F2 2.968(;i)C 2.968(fy)-2.968 G .469
+(ou do, old alias databases are read,)-2.968 F -.2(bu)189 216.6 S 3.108
+(tw).2 G .608(hen a ne)-3.108 F 3.108(wd)-.25 G .608
+(atabase is created it will be in NEWDB format.)-3.108 F .608
+(As a nasty)5.608 F 1.803(hack, if you ha)189 228.6 R 2.104 -.15(ve N)
+-.2 H 1.804(EWDB, NDBM, and NIS de\214ned, and if the alias \214le).15 F
+.124(name includes the substring \231/yp/\232,)189 240.6 R F1(sendmail)
+2.623 E F2 .123(will create both ne)2.623 F 2.623(wa)-.25 G .123
+(nd old v)-2.623 F(er)-.15 E(-)-.2 E 1.08
+(sions of the alias \214le during a)189 252.6 R F1(ne)3.58 E(walias)-.15
+E F2 3.58(command. This)3.58 F 1.08(is required because)3.58 F .845
+(the Sun NIS/YP system reads the DBM v)189 264.6 R .845
+(ersion of the alias \214le.)-.15 F(It')5.845 E 3.345(su)-.55 G .845
+(gly as)-3.345 F(sin, b)189 276.6 Q(ut it w)-.2 E(orks.)-.1 E 1.112
+(If neither of these are de\214ned,)117 292.8 R F1(sendmail)3.612 E F2
+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
+304.8 R 3.543(wa)-.25 G 1.043(nd should be a)-3.543 F -.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 316.8 Q 53.39
+(NIS Sun')117 333 R 2.5(sN)-.55 G(etw)-2.5 E
+(ork Information Services \(formerly YP\).)-.1 E 28.94(NISPLUS Sun')117
+349.2 R 2.5(sN)-.55 G(IS+ services.)-2.5 E 26.73(NETINFO NeXT')117 365.4
+R 2.5(sN)-.55 G(etInfo service.)-2.5 E 32.84(HESIOD Hesiod)117 381.6 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 397.8 R(to a ne)117 409.8 Q 2.5(we)-.25 G -.4(nv)-2.5 G(ironment.).4
+E F0 2.5(1.1.4. Compilation)102 433.8 R(and installation)2.5 E F2 .309
+(After making the local system con\214guration described abo)142 450 R
+-.15(ve)-.15 G 2.808(,Y).15 G .308(ou should be able to com-)-3.908 F
+(pile and install the system.)117 462 Q
+(The script \231Build\232 is the best approach on most systems:)5 E
+(./Build)157 478.2 Q(This will use)117 494.4 Q F1(uname)2.5 E F2
+(\(1\) to create a custom Mak)A(e\214le for your en)-.1 E(vironment.)-.4
+E(If you are installing in the standard places, you should be able to install using)
+142 510.6 Q(./Build install)157 526.8 Q 3.346(This should install the binary in /usr/sbin and create links from /usr/bin/ne)
+117 543 R -.1(wa)-.25 G 3.346(liases and).1 F 1.577
+(/usr/bin/mailq to /usr/sbin/sendmail.)117 555 R 1.577
+(On 4.4BSD systems it will also format and install man)6.577 F(pages.)
+117 567 Q F0 2.5(1.2. Con\214guration)87 591 R(Files)2.5 E F1(Sendmail)
+127 607.2 Q F2 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
+619.2 Q -.15(ve)-.25 G .889(ry mechanisms understood at this site, ho)
+.15 F 3.389(wt)-.25 G 3.389(oa)-3.389 G .889(ccess them, ho)-3.389 F
+3.388(wt)-.25 G 3.388(of)-3.388 G(orw)-3.388 E .888(ard email to remote)
+-.1 F .088(mail systems, and a number of tuning parameters.)102 631.2 R
+.088(This con\214guration \214le is detailed in the later por)5.088 F(-)
+-.2 E(tion of this document.)102 643.2 Q(The)127 659.4 Q F1(sendmail)
+2.764 E F2 .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 671.4 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
+F(of the comple)102 683.4 Q(xity)-.15 E(.)-.65 E .47
+(These con\214guration \214les are simpler than old v)127 699.6 R .47
(ersions lar)-.15 F .47(gely because the w)-.18 F .47(orld has become)
--.1 F 1.449(simpler; in particular)102 373.8 R 3.949(,t)-.4 G -.15(ex)
--3.949 G 1.449(t-based host \214les are of).15 F 1.448
-(\214cially eliminated, ob)-.25 F 1.448
-(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 addressing; 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.)-2.861 F
-.36(The con\214guration \214les)5.36 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 .657
-(Our con\214guration \214les are processed by)127 442.2 R F2(m4)3.158 E
-F1 .658(to f)3.158 F .658(acilitate local customization; the directory)
--.1 F F2(cf)3.158 E F1 .397(of the)102 454.2 R F2(sendmail)2.897 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 .396(ral sub-).15
-F(directories:)102 466.2 Q 61.73(cf Both)102 482.4 R .56
+-.1 F 1.448(simpler; in particular)102 711.6 R 3.948(,t)-.4 G -.15(ex)
+-3.948 G 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 723.6 Q
+(gistered internet g)-.15 E(ate)-.05 E -.1(wa)-.25 G -.65(y.).1 G EP
+%%Page: 9 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-9)200.86 E/F1 10/Times-Roman@0 SF .092(These \214les also assume that most of your neighbors use domain-based UUCP addressing; that)
+127 96 R .361(is, instead of naming hosts as \231host!user\232 the)102
+108 R 2.861(yw)-.15 G .361(ill use \231host.domain!user\232.)-2.861 F
+.361(The con\214guration \214les)5.361 F(can be customized to w)102 120
+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 136.2 R/F2 10
+/Times-Italic@0 SF(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 148.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 160.2 Q 61.73(cf Both)102 176.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
+(These can be lit-)5.56 F .445(eral host names \(e.g., \231ucb)174 188.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 1.812(descriptions \(such as \231tcpproto.mc\232 as a general description of an SMTP-con-)
-174 506.4 R 1.98(nected host or \231uucpproto.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,)-2.942 E F0(domain/cs.exposed.m4)
-2.792 E F1 .292(is our descrip-)2.792 F .442
-(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 .443(ant their indi)-.1 F .443(vidual host-)
--.25 F .963(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 .962
-(xcept that the)-.15 F 2.627(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)-5.128 G
-2.628(omes from CS.Berk)-5.128 F(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
+-.1(wa)-.25 G .445(ys or more general).1 F .535(descriptions \(such as \231generic-solaris2.mc\232 as a general description of an SMTP-)
+174 200.4 R 1.125(connected host running Solaris 2.x.)174 212.4 R 1.126
+(Files ending)6.126 F F0(.mc)3.626 E F1(\(`)3.626 E 1.126
+(`Master Con\214guration')-.74 F('\))-.74 E .516
+(are the input descriptions; the output is in the corresponding)174
+224.4 R F0(.cf)3.016 E F1 3.016(\214le. The)3.016 F(general)3.016 E
+(structure of these \214les is described belo)174 236.4 Q -.65(w.)-.25 G
+39.5(domain Site-dependent)102 252.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 .777(tion w)174 264.6 R .777
+(ants to do addressing.)-.1 F -.15(Fo)5.777 G 3.277(re).15 G(xample,)
+-3.427 E F0(domain/CS.Berk)3.276 E(eley)-.1 E(.EDU)-.7 E(.m4)-.5 E F1
+.776(is our)3.276 F 1.188(description for hosts in the CS.Berk)174 276.6
+R(ele)-.1 E -.65(y.)-.15 G 1.188(EDU subdomain.).65 F 1.188
+(These are referenced)6.188 F(using the)174 288.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 304.8 R .728
(of speci\214c features that some particular host in your site might w)
-3.229 F(ant.)-.1 E 2.466(These are referenced using the)174 658.8 R F3
+3.229 F(ant.)-.1 E 2.466(These are referenced using the)174 316.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.967 G 2.467(ample feature is).15 F 1.317
-(use_cw_\214le \(which tells)174 670.8 R F2(sendmail)3.817 E F1 1.316
+(use_cw_\214le \(which tells)174 328.8 R F2(sendmail)3.817 E F1 1.316
(to read an /etc/sendmail.cw \214le on startup to)3.817 F
-(\214nd the set of local names\).)174 682.8 Q 50.62(hack Local)102 699 R
+(\214nd the set of local names\).)174 340.8 Q 50.62(hack Local)102 357 R
1.886(hacks, referenced using the)4.386 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.887 E(point of ha)174 711 Q
+1.886(id these.).2 F(The)6.887 E(point of ha)174 369 Q
(ving them here is to mak)-.2 E 2.5(ei)-.1 G 2.5(tc)-2.5 G
-(lear that the)-2.5 E 2.5(ys)-.15 G(mell.)-2.5 E EP
-%%Page: 9 5
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-9)200.86 E/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
+(lear that the)-2.5 E 2.5(ys)-.15 G(mell.)-2.5 E 56.72
+(m4 Site-independent)102 385.2 R F2(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
+(nformation common to all con\214gu-).15 F(ration \214les.)174 397.2 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.652 F/F3 9/Times-Roman@0 SF(MAILER)
-2.652 E F0(m4)2.652 E F1 2.652(macro. The)2.652 F .153(mailer types)
-2.652 F 1.787(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.786 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.156(describing v)3.656 F
+43.95(mailer De\214nitions)102 413.4 R .152
+(of mailers, referenced using the)2.652 F F3(MAILER)2.652 E F0(m4)2.652
+E F1 2.652(macro. The)2.652 F .153(mailer types)2.652 F 1.787
+(that are kno)174 425.4 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.786 G(r).15 E -.15(ex)174 437.4 S(ample, to include support for the UUCP-based mailers, use \231MAILER\(uucp\)\232.)
+.15 E 43.39(ostype De\214nitions)102 453.6 R 1.156(describing v)3.656 F
1.157(arious operating system en)-.25 F 1.157
(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
+465.6 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 481.8 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')-2.5 E 2.5(th)-.18 G -2.25 -.2(av e)-2.5 H(to mess with these.)
-2.7 E 30.61(sitecon\214g Local)102 208.8 R .729(UUCP connecti)3.229 F
-.729(vity information.)-.25 F(The)5.729 E 3.229(yn)-.15 G .729
-(ormally contain lists of site infor)-3.229 F(-)-.2 E(mation, 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:)-2.5 E
-(SITECONFIG\(site.con\214g.\214le, name_of_site, X\))214 305.4 Q(where)
-174 321.6 Q F2(X)2.703 E F1 .203(is the macro/class name to use.)2.703 F
-.204(It can be U \(indicating locally connected)5.204 F .074
-(hosts\) or one of W)174 333.6 R 2.574(,X)-.92 G 2.574(,o)-2.574 G 2.574
-(rYf)-2.574 G .073(or up to three remote UUCP hubs.)-2.574 F .073
-(This directory has)5.073 F 1.712
-(been supplanted by the mailertable feature; an)174 345.6 R 4.212(yn)
--.15 G 2.212 -.25(ew c)-4.212 H 1.712(on\214gurations should use).25 F
-(that feature to do UUCP \(and other\) routing.)174 357.6 Q .757
-(If you are in a ne)127 373.8 R 3.257(wd)-.25 G .757
-(omain \(e.g., a compan)-3.257 F .756(y\), you will probably w)-.15 F
-.756(ant to create a cf/domain)-.1 F .87(\214le for your domain.)102
-385.8 R .871(This consists primarily of relay de\214nitions: for e)5.871
-F .871(xample, Berk)-.15 F(ele)-.1 E(y')-.15 E 3.371(sd)-.55 G(omain)
--3.371 E .16(de\214nition de\214nes relays for BitNET)102 397.8 R 2.66
-(,C)-.74 G(SNET)-2.66 E 2.66(,a)-.74 G .16(nd UUCP)-2.66 F 5.16(.O)-1.11
-G 2.66(ft)-5.16 G .16(hese, only the UUCP relay is particu-)-2.66 F .46
-(larly speci\214c to Berk)102 409.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)-2.96 E(-)-.2 E(tain the)
-102 421.8 Q 2.5(ya)-.15 G(re reasonable for your domain.)-2.5 E 1.407
-(Subdomains at Berk)127 438 R(ele)-.1 E 3.907(ya)-.15 G 1.407
+2.7 E 30.61(sitecon\214g Local)102 498 R .251(UUCP connecti)2.751 F .251
+(vity information.)-.25 F .251
+(This directory has been supplanted by the)5.251 F 1.076
+(mailertable feature; an)174 510 R 3.576(yn)-.15 G 1.576 -.25(ew c)
+-3.576 H 1.077(on\214gurations should use that feature to do UUCP).25 F
+(\(and other\) routing.)174 522 Q .757(If you are in a ne)127 538.2 R
+3.257(wd)-.25 G .757(omain \(e.g., a compan)-3.257 F .756
+(y\), you will probably w)-.15 F .756(ant to create a cf/domain)-.1 F
+.05(\214le for your domain.)102 550.2 R .051
+(This consists primarily of relay de\214nitions and features you w)5.05
+F .051(ant enabled site-)-.1 F .916(wide: for e)102 562.2 R .916
+(xample, Berk)-.15 F(ele)-.1 E(y')-.15 E 3.416(sd)-.55 G .915
+(omain de\214nition de\214nes relays for BitNET and UUCP)-3.416 F 5.915
+(.T)-1.11 G .915(hese are)-5.915 F 1.519(speci\214c to Berk)102 574.2 R
+(ele)-.1 E 2.819 -.65(y, a)-.15 H 1.519
+(nd should be fully-quali\214ed internet-style domain names.).65 F 1.52
+(Please check to)6.519 F(mak)102 586.2 Q 2.5(ec)-.1 G(ertain the)-2.5 E
+2.5(ya)-.15 G(re reasonable for your domain.)-2.5 E 1.407
+(Subdomains at Berk)127 602.4 R(ele)-.1 E 3.907(ya)-.15 G 1.407
(re also represented in the cf/domain directory)-3.907 F 6.406(.F)-.65 G
-1.406(or e)-6.556 F 1.406(xample, the)-.15 F 1.49(domain cs-e)102 450 R
-1.491
-(xposed is the Computer Science subdomain with the local hostname sho)
--.15 F 1.491(wn to other)-.25 F 1.411(users; cs-hidden mak)102 462 R
-1.411(es users appear to be from the CS.Berk)-.1 F(ele)-.1 E -.65(y.)
--.15 G 1.41(EDU subdomain \(with no local).65 F 1.083
-(host information included\).)102 474 R -1.1(Yo)6.083 G 3.583(uw)1.1 G
-1.083(ill probably ha)-3.583 F 1.384 -.15(ve t)-.2 H 3.584(ou).15 G
-1.084(pdate this directory to be appropriate for)-3.584 F(your domain.)
-102 486 Q -1.1(Yo)127 502.2 S 4.373(uw)1.1 G 1.873(ill ha)-4.373 F 2.173
--.15(ve t)-.2 H 4.373(ou).15 G 1.873(se or create)-4.373 F F0(.mc)4.372
-E F1 1.872(\214les in the)4.372 F F2(cf/cf)4.372 E F1 1.872
-(subdirectory for your hosts.)4.372 F 1.872(This is)6.872 F
-(detailed in the cf/README \214le.)102 514.2 Q F0 2.5(1.3. Details)87
-538.2 R(of Installation Files)2.5 E F1
-(This subsection describes the \214les that comprise the)127 554.4 Q F2
-(sendmail)2.5 E F1(installation.)2.5 E F0 2.5(1.3.1. /usr/sbin/sendmail)
-102 578.4 R F1 .08(The binary for)142 596.6 R F2(sendmail)2.58 E F1 .079
-(is located in /usr/sbin)2.58 F/F4 7/Times-Roman@0 SF(1)-4 I F1 5.079
-(.I)4 K 2.579(ts)-5.079 G .079(hould be setuid root.)-2.579 F -.15(Fo)
-5.079 G 2.579(rs).15 G .079(ecurity rea-)-2.579 F(sons, /, /usr)117
-610.6 Q 2.5(,a)-.4 G(nd /usr/sbin should be o)-2.5 E
-(wned by root, mode 755)-.25 E F4(2)-4 I F1(.)4 I .32 LW 76 646 72 646
-DL 80 646 76 646 DL 84 646 80 646 DL 88 646 84 646 DL 92 646 88 646 DL
-96 646 92 646 DL 100 646 96 646 DL 104 646 100 646 DL 108 646 104 646 DL
-112 646 108 646 DL 116 646 112 646 DL 120 646 116 646 DL 124 646 120 646
-DL 128 646 124 646 DL 132 646 128 646 DL 136 646 132 646 DL 140 646 136
-646 DL 144 646 140 646 DL 148 646 144 646 DL 152 646 148 646 DL 156 646
-152 646 DL 160 646 156 646 DL 164 646 160 646 DL 168 646 164 646 DL 172
-646 168 646 DL 176 646 172 646 DL 180 646 176 646 DL 184 646 180 646 DL
-188 646 184 646 DL 192 646 188 646 DL 196 646 192 646 DL 200 646 196 646
-DL 204 646 200 646 DL 208 646 204 646 DL 212 646 208 646 DL 216 646 212
-646 DL/F5 5/Times-Roman@0 SF(1)93.6 656.4 Q/F6 8/Times-Roman@0 SF .384
-(This is usually /usr/sbin on 4.4BSD and ne)3.2 J .384(wer systems; man)
--.2 F 2.385(ys)-.12 G .385(ystems install it in /usr/lib)-2.385 F 4.385
-(.I)-.32 G .385(understand it is in /usr/ucblib on)-2 F
-(System V Release 4.)72 669.2 Q F5(2)93.6 679.6 Q F6 .149(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 .15
-(ther important di-)-4.15 F(rectories that should ha)72 692.4 Q .24 -.12
-(ve r)-.16 H(estricti).12 E .24 -.12(ve o)-.2 H(wnerships and permissions are /bin, /usr/bin, /etc, /usr/etc, /lib, and /usr/lib)
--.08 E(.)-.32 E EP
+1.406(or e)-6.556 F 1.406(xample, the)-.15 F .356(domain CS.Berk)102
+614.4 R(ele)-.1 E -.65(y.)-.15 G .356
+(EDU is the Computer Science subdomain, EECS.Berk).65 F(ele)-.1 E -.65
+(y.)-.15 G .356(EDU is the Electri-).65 F 1.278
+(cal Engineering and Computer Sciences subdomain, and S2K.Berk)102 626.4
+R(ele)-.1 E -.65(y.)-.15 G 1.278(EDU is the Sequoia 2000).65 F 4.003
+(subdomain. Y)102 638.4 R 1.503(ou will probably ha)-1.1 F 1.804 -.15
+(ve t)-.2 H 4.004(oa).15 G 1.504
+(dd an entry to this directory to be appropriate for your)-4.004 F
+(domain.)102 650.4 Q -1.1(Yo)127 666.6 S 4.373(uw)1.1 G 1.873(ill ha)
+-4.373 F 2.173 -.15(ve t)-.2 H 4.373(ou).15 G 1.873(se or create)-4.373
+F F0(.mc)4.372 E F1 1.872(\214les in the)4.372 F F2(cf/cf)4.372 E F1
+1.872(subdirectory for your hosts.)4.372 F 1.872(This is)6.872 F
+(detailed in the cf/README \214le.)102 678.6 Q EP
%%Page: 10 6
%%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 2.5(1.3.2. /etc/sendmail.cf)102
-96 R/F1 10/Times-Roman@0 SF .698(This is the con\214guration \214le for)
-142 114.2 R/F2 10/Times-Italic@0 SF(sendmail)3.198 E/F3 7/Times-Roman@0
-SF(3)-4 I F1 5.698(.T)4 K .699
-(his and /etc/sendmail.pid are the only non-)-5.698 F
-(library \214le names compiled into)117 128.2 Q F2(sendmail)2.5 E F3(4)
--4 I F1(.)4 I .721
+(Installation and Operation Guide)2.5 E 2.5(1.3. Details)87 96 R
+(of Installation Files)2.5 E/F1 10/Times-Roman@0 SF
+(This subsection describes the \214les that comprise the)127 112.2 Q/F2
+10/Times-Italic@0 SF(sendmail)2.5 E F1(installation.)2.5 E F0 2.5
+(1.3.1. /usr/sbin/sendmail)102 136.2 R F1 .08(The binary for)142 154.4 R
+F2(sendmail)2.58 E F1 .079(is located in /usr/sbin)2.58 F/F3 7
+/Times-Roman@0 SF(1)-4 I F1 5.079(.I)4 K 2.579(ts)-5.079 G .079
+(hould be setuid root.)-2.579 F -.15(Fo)5.079 G 2.579(rs).15 G .079
+(ecurity rea-)-2.579 F(sons, /, /usr)117 168.4 Q 2.5(,a)-.4 G
+(nd /usr/sbin should be o)-2.5 E(wned by root, mode 755)-.25 E F3(2)-4 I
+F1(.)4 I F0 2.5(1.3.2. /etc/sendmail.cf)102 192.4 R F1 .965
+(This is the con\214guration \214le for)142 210.6 R F2(sendmail)3.466 E
+F3(3)-4 I F1 5.966(.T)4 K .966
+(his is the only non-library \214le name com-)-5.966 F(piled into)117
+224.6 Q F2(sendmail)2.5 E F3(4)-4 I F1(.)4 I .721
(The con\214guration \214le is normally created using the distrib)142
-144.4 R .721(ution \214les described abo)-.2 F -.15(ve)-.15 G 5.721(.I)
-.15 G(f)-5.721 E .64(you ha)117 156.4 R .94 -.15(ve a p)-.2 H .64(articularly unusual system con\214guration you may need to create a special v)
+240.8 R .721(ution \214les described abo)-.2 F -.15(ve)-.15 G 5.721(.I)
+.15 G(f)-5.721 E .64(you ha)117 252.8 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 168.4 Q F0 2.5(1.3.3. /usr/bin/newaliases)102 192.4 R F1(The)142
-208.6 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 224.8 Q -.1(wa)
--.25 G(liases).1 E(ln \255s /usr/sbin/sendmail /usr/bin/ne)157 236.8 Q
--.1(wa)-.25 G(liases).1 E(This can be installed in whate)117 253 Q -.15
-(ve)-.25 G 2.5(rs).15 G(earch path you prefer for your system.)-2.5 E F0
-2.5(1.3.4. /usr/bin/hoststat)102 277 R F1(The)142 293.2 Q F2(hoststat)
+117 264.8 Q F0 2.5(1.3.3. /usr/bin/newaliases)102 288.8 R F1(The)142 305
+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 321.2 Q -.1(wa)-.25 G
+(liases).1 E(ln \255s /usr/sbin/sendmail /usr/bin/ne)157 333.2 Q -.1(wa)
+-.25 G(liases).1 E(This can be installed in whate)117 349.4 Q -.15(ve)
+-.25 G 2.5(rs).15 G(earch path you prefer for your system.)-2.5 E F0 2.5
+(1.3.4. /usr/bin/hoststat)102 373.4 R F1(The)142 389.6 Q F2(hoststat)
5.844 E F1 3.344(command should just be a link to)5.844 F F2(sendmail)
5.844 E F1 5.844(,i)C 5.845(naf)-5.844 G 3.345(ashion similar to)-5.945
-F F2(ne)117 305.2 Q(waliases)-.15 E F1 5.607(.T)C .607(his command lists the status of the last mail transaction with all remote hosts.)
--5.607 F(It)5.606 E(functions only when the)117 317.2 Q F0
-(HostStatusDir)2.5 E(ectory)-.18 E F1(option is set.)2.5 E F0 2.5
-(1.3.5. /usr/bin/pur)102 341.2 R(gestat)-.1 E F1 .993
-(This command is also a link to)142 357.4 R F2(sendmail)3.493 E F1 5.993
-(.I)C 3.493<748d>-5.993 G .993
+F F2(ne)117 401.6 Q(waliases)-.15 E F1 6.444(.T)C 1.444(his command lists the status of the last mail transaction with all remote hosts.)
+-6.444 F(The)117 413.6 Q F0<ad76>3.856 E F1 1.356(\215ag will pre)3.856
+F -.15(ve)-.25 G 1.357(nt the status display from being truncated.).15 F
+1.357(It functions only when the)6.357 F F0(HostStatusDir)117 425.6 Q
+(ectory)-.18 E F1(option is set.)2.5 E F0 2.5(1.3.5. /usr/bin/pur)102
+449.6 R(gestat)-.1 E F1 .993(This command is also a link to)142 465.8 R
+F2(sendmail)3.493 E F1 5.993(.I)C 3.493<748d>-5.993 G .993
(ushes all information that is stored in the)-3.493 F F0(HostStatusDir)
-117 369.4 Q(ectory)-.18 E F1(tree.)2.5 E F0 2.5(1.3.6. /v)102 393.4 R
-(ar/spool/mqueue)-.1 E F1 .218(The directory)142 409.6 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 421.6 Q(wned by root.)-.25 E
-(The actual path of this directory is de\214ned in the)142 437.8 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.7. /v)102 461.8 R(ar/spool/mqueue/.hoststat)-.1 E F1 1.044
-(This is a typical v)142 478 R 1.044(alue for the)-.25 F F0
-(HostStatusDir)3.545 E(ectory)-.18 E F1 1.045
-(option, containing one \214le per host)3.545 F
-(that this sendmail has chatted with recently)117 490 Q 5(.I)-.65 G 2.5
-(ti)-5 G 2.5(sn)-2.5 G(ormally a subdirectory of)-2.5 E F2(mqueue)2.5 E
-F1(.)A F0 2.5(1.3.8. /etc/aliases*)102 514 R F1 1.493
-(The system aliases are held in \231/etc/aliases\232.)142 530.2 R 3.992
-(As)6.492 G 1.492(ample is gi)-3.992 F -.15(ve)-.25 G 3.992(ni).15 G
-3.992<6e99>-3.992 G 1.492(lib/aliases\232 which)-3.992 F
-(includes some aliases which)117 542.2 Q F2(must)2.5 E F1(be de\214ned:)
-2.5 E(cp lib/aliases /etc/aliases)157 558.4 Q F2(edit /etc/aliases)157
-570.4 Q F1 -1.1(Yo)117 586.6 S 2.5(us)1.1 G(hould e)-2.5 E
-(xtend this \214le with an)-.15 E 2.5(ya)-.15 G
-(liases that are apropos to your system.)-2.5 E(Normally)142 602.8 Q F2
-(sendmail)3.609 E F1 1.109(looks at a v)3.609 F 1.109
-(ersion of these \214les maintained by the)-.15 F F2(dbm)3.609 E F1 1.11
-(\(3\) or)1.666 F F2(db)3.61 E F1(\(3\))1.666 E 3.46(routines. These)117
-614.8 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
-626.8 R 1.022(These can initially be created as empty)6.022 F
-(\214les, b)117 638.8 Q(ut the)-.2 E 2.5(yw)-.15 G(ill ha)-2.5 E .3 -.15
-(ve t)-.2 H 2.5(ob).15 G 2.5(ei)-2.5 G(nitialized promptly)-2.5 E 5(.T)
--.65 G(hese should be mode 644:)-5 E .32 LW 76 648.4 72 648.4 DL 80
-648.4 76 648.4 DL 84 648.4 80 648.4 DL 88 648.4 84 648.4 DL 92 648.4 88
-648.4 DL 96 648.4 92 648.4 DL 100 648.4 96 648.4 DL 104 648.4 100 648.4
-DL 108 648.4 104 648.4 DL 112 648.4 108 648.4 DL 116 648.4 112 648.4 DL
-120 648.4 116 648.4 DL 124 648.4 120 648.4 DL 128 648.4 124 648.4 DL 132
-648.4 128 648.4 DL 136 648.4 132 648.4 DL 140 648.4 136 648.4 DL 144
-648.4 140 648.4 DL 148 648.4 144 648.4 DL 152 648.4 148 648.4 DL 156
-648.4 152 648.4 DL 160 648.4 156 648.4 DL 164 648.4 160 648.4 DL 168
-648.4 164 648.4 DL 172 648.4 168 648.4 DL 176 648.4 172 648.4 DL 180
-648.4 176 648.4 DL 184 648.4 180 648.4 DL 188 648.4 184 648.4 DL 192
-648.4 188 648.4 DL 196 648.4 192 648.4 DL 200 648.4 196 648.4 DL 204
-648.4 200 648.4 DL 208 648.4 204 648.4 DL 212 648.4 208 648.4 DL 216
-648.4 212 648.4 DL/F4 5/Times-Roman@0 SF(3)93.6 658.8 Q/F5 8
-/Times-Roman@0 SF(Actually)3.2 I 2.277(,t)-.52 G .277(he pathname v)
--2.277 F .276(aries depending on the operating system; /etc is the preferred directory)
+117 477.8 Q(ectory)-.18 E F1(tree.)2.5 E F0 2.5(1.3.6. /v)102 501.8 R
+(ar/spool/mqueue)-.1 E F1 .217(The directory)142 518 R F2
+(/var/spool/mqueue)2.717 E F1 .218
+(should be created to hold the mail queue.)2.717 F .218(This directory)
+5.218 F(should be mode 700 and o)117 530 Q(wned by root.)-.25 E
+(The actual path of this directory is de\214ned in the)142 546.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 .32
+LW 76 580.4 72 580.4 DL 80 580.4 76 580.4 DL 84 580.4 80 580.4 DL 88
+580.4 84 580.4 DL 92 580.4 88 580.4 DL 96 580.4 92 580.4 DL 100 580.4 96
+580.4 DL 104 580.4 100 580.4 DL 108 580.4 104 580.4 DL 112 580.4 108
+580.4 DL 116 580.4 112 580.4 DL 120 580.4 116 580.4 DL 124 580.4 120
+580.4 DL 128 580.4 124 580.4 DL 132 580.4 128 580.4 DL 136 580.4 132
+580.4 DL 140 580.4 136 580.4 DL 144 580.4 140 580.4 DL 148 580.4 144
+580.4 DL 152 580.4 148 580.4 DL 156 580.4 152 580.4 DL 160 580.4 156
+580.4 DL 164 580.4 160 580.4 DL 168 580.4 164 580.4 DL 172 580.4 168
+580.4 DL 176 580.4 172 580.4 DL 180 580.4 176 580.4 DL 184 580.4 180
+580.4 DL 188 580.4 184 580.4 DL 192 580.4 188 580.4 DL 196 580.4 192
+580.4 DL 200 580.4 196 580.4 DL 204 580.4 200 580.4 DL 208 580.4 204
+580.4 DL 212 580.4 208 580.4 DL 216 580.4 212 580.4 DL/F4 5
+/Times-Roman@0 SF(1)93.6 590.8 Q/F5 8/Times-Roman@0 SF .384
+(This is usually /usr/sbin on 4.4BSD and ne)3.2 J .384(wer systems; man)
+-.2 F 2.385(ys)-.12 G .385(ystems install it in /usr/lib)-2.385 F 4.385
+(.I)-.32 G .385(understand it is in /usr/ucblib on)-2 F
+(System V Release 4.)72 603.6 Q F4(2)93.6 614 Q F5 .149(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/F6 8/Times-Italic@0 SF(sendmail)2.15 E F5 4.15(.O)C .15
+(ther important di-)-4.15 F(rectories that should ha)72 626.8 Q .24 -.12
+(ve r)-.16 H(estricti).12 E .24 -.12(ve o)-.2 H(wnerships and permissions are /bin, /usr/bin, /etc, /usr/etc, /lib, and /usr/lib)
+-.08 E(.)-.32 E F4(3)93.6 637.2 Q F5(Actually)3.2 I 2.277(,t)-.52 G .277
+(he pathname v)-2.277 F .276(aries depending on the operating system; /etc is the preferred directory)
-.2 F 4.276(.S)-.52 G .276(ome older systems install it)-4.276 F(in)72
-671.6 Q/F6 8/Times-Bold@0 SF(/usr/lib/sendmail.cf)2 E F5 2(,a)C(nd I')-2
-E .24 -.12(ve a)-.4 H(lso seen it in).12 E F6(/usr/ucblib)2 E F5(and)2 E
-F6(/etc/mail)2 E F5 4(.I)C 2(fy)-4 G(ou w)-2 E(ant to mo)-.08 E .24 -.12
-(ve t)-.12 H(his \214le, change).12 E/F7 8/Times-Italic@0 SF(sr)2 E
-(c/conf)-.296 E(.h)-.12 E F5(.)A F4(4)93.6 682 Q F5 .589
+650 Q/F7 8/Times-Bold@0 SF(/usr/lib/sendmail.cf)2.27 E F5 2.27(,a)C .27
+(nd I')-2.27 F .51 -.12(ve a)-.4 H .271(lso seen it in).12 F F7
+(/usr/ucblib)2.271 E F5(and)2.271 E F7(/etc/mail)2.271 E F5 4.271(.I)C
+2.271(fy)-4.271 G .271(ou w)-2.271 F .271(ant to mo)-.08 F .511 -.12
+(ve t)-.12 H .271(his \214le, add -D_P).12 F -.888(AT)-.736 G
+(H_SENDMAIL-).888 E .093
+(CF=\\"/\214le/name\\" to the \215ags passed to the C compiler)72 659.6
+R 4.093(.M)-.44 G -.12(ov)-4.093 G .093
+(ing this \214le is not recommended: other programs and scripts kno).12
+F 2.093(wo)-.2 G 2.092(ft)-2.093 G(his)-2.092 E(location.)72 669.2 Q F4
+(4)93.6 679.6 Q F5 .589
(The system libraries can reference other \214les; in particular)3.2 J
-2.589(,s)-.32 G .589(ystem library subroutines that)-2.589 F F7
-(sendmail)2.588 E F5 .588(calls probably reference)2.588 F F7
-(/etc/passwd)72 694.8 Q F5(and)2 E F7(/etc/r)2 E(esolv)-.296 E(.conf)
+2.589(,s)-.32 G .589(ystem library subroutines that)-2.589 F F6
+(sendmail)2.588 E F5 .588(calls probably reference)2.588 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 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-11)195.86 E/F1 10/Times-Roman@0 SF(cp /de)157 96 Q
-(v/null /etc/aliases.dir)-.25 E(cp /de)157 108 Q
-(v/null /etc/aliases.pag)-.25 E(chmod 644 /etc/aliases.*)157 120 Q(ne)
-157 132 Q -.1(wa)-.25 G(liases).1 E(The)117 148.2 Q/F2 10/Times-Italic@0
-SF(db)2.79 E F1 .29(routines preset the mode reasonably)2.79 F 2.79(,s)
--.65 G 2.79(ot)-2.79 G .29(his step can be skipped.)-2.79 F .29
-(The actual path of this)5.29 F(\214le is de\214ned in the)117 160.2 Q
-F0(AliasFile)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. /etc/r)102 184.2 R(c)-.18 E F1 .155
-(It will be necessary to start up the)142 200.4 R F2(sendmail)2.655 E F1
+(SMM:08-11)195.86 E 2.5(1.3.7. /v)102 96 R(ar/spool/mqueue/.hoststat)-.1
+E/F1 10/Times-Roman@0 SF 1.045(This is a typical v)142 112.2 R 1.045
+(alue for the)-.25 F F0(HostStatusDir)3.545 E(ectory)-.18 E F1 1.044
+(option, containing one \214le per host)3.545 F
+(that this sendmail has chatted with recently)117 124.2 Q 5(.I)-.65 G
+2.5(ti)-5 G 2.5(sn)-2.5 G(ormally a subdirectory of)-2.5 E/F2 10
+/Times-Italic@0 SF(mqueue)2.5 E F1(.)A F0 2.5(1.3.8. /etc/aliases*)102
+148.2 R F1 1.492(The system aliases are held in \231/etc/aliases\232.)
+142 164.4 R 3.992(As)6.492 G 1.492(ample is gi)-3.992 F -.15(ve)-.25 G
+3.993(ni).15 G 3.993<6e99>-3.993 G 1.493(lib/aliases\232 which)-3.993 F
+(includes some aliases which)117 176.4 Q F2(must)2.5 E F1(be de\214ned:)
+2.5 E(cp lib/aliases /etc/aliases)157 192.6 Q F2(edit /etc/aliases)157
+204.6 Q F1 -1.1(Yo)117 220.8 S 2.5(us)1.1 G(hould e)-2.5 E
+(xtend this \214le with an)-.15 E 2.5(ya)-.15 G
+(liases that are apropos to your system.)-2.5 E(Normally)142 237 Q F2
+(sendmail)7.984 E F1 5.484(looks at a database v)7.984 F 5.483
+(ersion of the \214les, stored either in)-.15 F .851(\231/etc/aliases.dir\232 and \231/etc/aliases.pag\232 or \231/etc/aliases.db\232 depending on which database pack-)
+117 249 R 1.132(age you are using.)117 261 R 1.132
+(The actual path of this \214le is de\214ned in the)6.132 F F0
+(AliasFile)3.631 E F1 1.131(option of the)3.631 F F2(send-)3.631 E
+(mail.cf)117 273 Q F1(\214le.)2.5 E F0 2.5(1.3.9. /etc/r)102 297 R 2.5
+(co)-.18 G 2.5(r/)-2.5 G(etc/init.d/sendmail)-2.5 E F1 .155
+(It will be necessary to start up the)142 313.2 R F2(sendmail)2.655 E F1
.156(daemon when your system reboots.)2.655 F .156(This dae-)5.156 F
-1.538(mon performs tw)117 212.4 R 4.037(of)-.1 G 1.537
+1.538(mon performs tw)117 325.2 R 4.037(of)-.1 G 1.537
(unctions: it listens on the SMTP sock)-4.037 F 1.537
(et for connections \(to recei)-.1 F 1.837 -.15(ve m)-.25 H(ail).15 E
.442(from a remote system\) and it processes the queue periodically to insure that mail gets deli)
-117 224.4 R -.15(ve)-.25 G(red).15 E(when hosts come up.)117 236.4 Q
-.505(Add the follo)142 252.6 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 264.6 Q
+117 337.2 R -.15(ve)-.25 G(red).15 E(when hosts come up.)117 349.2 Q
+.505(Add the follo)142 365.4 R .505(wing lines to \231/etc/rc\232 \(or \231/etc/rc.local\232 as appropriate\) in the area where it)
+-.25 F .375
+(is starting up the daemons on a BSD-base system, or on a System-V)117
+377.4 R .375(-based system in one of the)-1 F
+(startup \214les, typically \231/etc/init.d/sendmail\232:)117 389.4 Q
(if [ \255f /usr/sbin/sendmail \255a \255f /etc/sendmail.cf ]; then)157
-280.8 Q(\(cd /v)193 292.8 Q(ar/spool/mqueue; rm \255f [lnx]f*\))-.25 E
-(/usr/sbin/sendmail \255bd \255q30m &)193 304.8 Q
-(echo \255n ' sendmail' >/de)193 316.8 Q(v/console)-.25 E<8c>157 328.8 Q
-.173
+405.6 Q(\(cd /v)193 417.6 Q(ar/spool/mqueue; rm \255f [lnx]f*\))-.25 E
+(/usr/sbin/sendmail \255bd \255q30m &)193 429.6 Q
+(echo \255n ' sendmail' >/de)193 441.6 Q(v/console)-.25 E<8c>157 453.6 Q
+.174
(The \231cd\232 and \231rm\232 commands insure that all lock \214les ha)
-117 345 R .474 -.15(ve b)-.2 H .174(een remo).15 F -.15(ve)-.15 G .174
-(d; e).15 F .174(xtraneous lock \214les)-.15 F .005
-(may be left around if the system goes do)117 357 R .004
-(wn in the middle of processing a message.)-.25 F .004(The line that)
-5.004 F 2.293(actually in)117 369 R -.2(vo)-.4 G -.1(ke).2 G(s).1 E F2
-(sendmail)4.793 E F1 2.293(has tw)4.793 F 4.793<6f8d>-.1 G 2.293
-(ags: \231\255bd\232 causes it to listen on the SMTP port, and)-4.793 F
-(\231\255q30m\232 causes it to run the queue e)117 381 Q -.15(ve)-.25 G
-(ry half hour).15 E(.)-.55 E .379(Some people use a more comple)142
-397.2 R 2.879(xs)-.15 G .379(tartup script, remo)-2.879 F .378
-(ving zero length qf \214les and df \214les)-.15 F 1.12
-(for which there is no qf \214le.)117 409.2 R -.15(Fo)6.12 G 3.62(re).15
-G 1.121(xample, see Figure 1 for an e)-3.77 F 1.121(xample of a comple)
--.15 F 3.621(xs)-.15 G(tartup)-3.621 E(script.)117 421.2 Q .756
-(If you are not running a v)142 437.4 R .755
-(ersion of UNIX that supports Berk)-.15 F(ele)-.1 E 3.255(yT)-.15 G
-(CP/IP)-3.255 E 3.255(,d)-1.11 G 3.255(on)-3.255 G .755(ot include)
--3.255 F(the)117 449.4 Q F0(\255bd)2.5 E F1(\215ag.)2.5 E F0 2.5
-(1.3.10. /usr/lib/sendmail.hf)102 473.4 R F1 2.078
-(This is the help \214le used by the SMTP)142 489.6 R F0(HELP)4.578 E F1
+117 469.8 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 481.8 R .005
+(wn in the middle of processing a message.)-.25 F .005(The line that)
+5.005 F 2.294(actually in)117 493.8 R -.2(vo)-.4 G -.1(ke).2 G(s).1 E F2
+(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)-4.794 F
+(\231\255q30m\232 causes it to run the queue e)117 505.8 Q -.15(ve)-.25
+G(ry half hour).15 E(.)-.55 E .378(Some people use a more comple)142 522
+R 2.879(xs)-.15 G .379(tartup script, remo)-2.879 F .379
+(ving zero length qf \214les and df \214les)-.15 F 1.399
+(for which there is no qf \214le.)117 534 R -.15(Fo)6.398 G 3.898(re).15
+G 1.398(xample, see Figure 1 for an e)-4.048 F 1.398(xample of a comple)
+-.15 F 3.898(xs)-.15 G(cript)-3.898 E(which does this clean up.)117 546
+Q .755(If you are not running a v)142 562.2 R .755
+(ersion of UNIX that supports Berk)-.15 F(ele)-.1 E 3.256(yT)-.15 G
+(CP/IP)-3.256 E 3.256(,d)-1.11 G 3.256(on)-3.256 G .756(ot include)
+-3.256 F(the)117 574.2 Q F0(\255bd)2.5 E F1(\215ag.)2.5 E F0 2.5
+(1.3.10. /usr/lib/sendmail.hf)102 598.2 R F1 2.078
+(This is the help \214le used by the SMTP)142 614.4 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 501.6 Q(cp lib/sendmail.hf /usr/lib)157
-517.8 Q(The actual path of this \214le is de\214ned in the)117 534 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.11. /etc/sendmail.st)102 558 R F1 3.04
-(If you wish to collect statistics about your mail traf)142 574.2 R 3.04
+(\231lib/sendmail.hf\232:)117 626.4 Q(cp lib/sendmail.hf /usr/lib)157
+642.6 Q(The actual path of this \214le is de\214ned in the)117 658.8 Q
+F0(HelpFile)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.11. /etc/sendmail.st)102 682.8 R F1 3.04
+(If you wish to collect statistics about your mail traf)142 699 R 3.04
(\214c, you should create the \214le)-.25 F(\231/etc/sendmail.st\232:)
-117 586.2 Q(cp /de)157 602.4 Q(v/null /etc/sendmail.st)-.25 E
-(chmod 666 /etc/sendmail.st)157 614.4 Q .715(This \214le does not gro)
-117 630.6 R 4.516 -.65(w. I)-.25 H 3.216(ti).65 G 3.216(sp)-3.216 G .716
-(rinted with the program \231mailstats/mailstats.c.)-3.216 F 5.716<9a54>
--.7 G .716(he actual path)-5.716 F(of this \214le is de\214ned in the)
-117 642.6 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.12. /usr/bin/mailq)102 666.6 R F1(If)142 682.8
-Q F2(sendmail)3.44 E F1 .94(is in)3.44 F -.2(vo)-.4 G -.1(ke).2 G 3.44
-(da).1 G 3.44<7399>-3.44 G(mailq,)-3.44 E 3.439<9a69>-.7 G 3.439(tw)
--3.439 G .939(ill simulate the)-3.439 F F0(\255bp)3.439 E F1 .939
-(\215ag \(i.e.,)3.439 F F2(sendmail)3.439 E F1 .939(will print)3.439 F
-(the contents of the mail queue; see belo)117 694.8 Q 2.5(w\). This)-.25
-F(should be a link to /usr/sbin/sendmail.)2.5 E EP
+117 711 Q EP
%%Page: 12 8
%%BeginPageSetup
BP
@@ -746,153 +751,141 @@ DL 389 108 384 108 DL 394 108 389 108 DL 399 108 394 108 DL 404 108 399
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)
--2.5 E .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)
--2.5 E(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)
--2.5 E .3 -.15(ve d)-.15 H 2.5<668c>.15 G
-(les with no corresponding qf \214les)-2.5 E(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)-2.5 E .3 -.15(ve b)-.2 H(een sa)
+108 DL 504 108 499 108 DL/F1 10/Times-Roman@0 SF(#!/bin/sh)72 132 Q 2.5
+(#r)72 144 S(emo)-2.5 E .3 -.15(ve z)-.15 H(ero length qf \214les).15 E
+(for qf)72 156 Q(\214le in qf*)-.25 E(do)72 168 Q(if [ \255r $qf)108 180
+Q(\214le ])-.25 E(then)108 192 Q(if [ ! \255s $qf)144 204 Q(\214le ])
+-.25 E(then)144 216 Q(echo \255n " <zero: $qf)180 228 Q(\214le>" > /de)
+-.25 E(v/console)-.25 E(rm \255f $qf)180 240 Q(\214le)-.25 E<8c>144 252
+Q<8c>108 264 Q(done)72 276 Q 2.5(#r)72 288 S
+(ename tf \214les to be qf if the qf does not e)-2.5 E(xist)-.15 E
+(for tf)72 300 Q(\214le in tf*)-.25 E(do)72 312 Q(qf)108 324 Q
+(\214le=`echo $tf)-.25 E(\214le | sed ')-.25 E(s/t/q/'`)-.55 E
+(if [ \255r $tf)108 336 Q(\214le \255a ! \255f $qf)-.25 E(\214le ])-.25
+E(then)108 348 Q(echo \255n " <reco)144 360 Q -.15(ve)-.15 G(ring: $tf)
+.15 E(\214le>" > /de)-.25 E(v/console)-.25 E(mv $tf)144 372 Q
+(\214le $qf)-.25 E(\214le)-.25 E(else)108 384 Q(if [ \255f $tf)144 396 Q
+(\214le ])-.25 E(then)144 408 Q(echo \255n " <e)180 420 Q(xtra: $tf)-.15
+E(\214le>" > /de)-.25 E(v/console)-.25 E(rm \255f $tf)180 432 Q(\214le)
+-.25 E<8c>144 444 Q<8c>108 456 Q(done)72 468 Q 2.5(#r)72 480 S(emo)-2.5
+E .3 -.15(ve d)-.15 H 2.5<668c>.15 G
+(les with no corresponding qf \214les)-2.5 E(for df)72 492 Q
+(\214le in df*)-.25 E(do)72 504 Q(qf)108 516 Q(\214le=`echo $df)-.25 E
+(\214le | sed ')-.25 E(s/d/q/'`)-.55 E(if [ \255r $df)108 528 Q
+(\214le \255a ! \255f $qf)-.25 E(\214le ])-.25 E(then)108 540 Q
+(echo \255n " <incomplete: $df)144 552 Q(\214le>" > /de)-.25 E
+(v/console)-.25 E(mv $df)144 564 Q(\214le `echo $df)-.25 E
+(\214le | sed ')-.25 E(s/d/D/'`)-.55 E<8c>108 576 Q(done)72 588 Q 2.5
+(#a)72 600 S(nnounce \214les that ha)-2.5 E .3 -.15(ve b)-.2 H(een sa)
.15 E -.15(ve)-.2 G 2.5(dd).15 G(uring disaster reco)-2.5 E -.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)-2.5 E 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
-F0 2.5(2. NORMAL)72 672 R(OPERA)2.5 E(TIONS)-.95 E 2.5(2.1. The)87 696 R
-(System Log)2.5 E F1 1.511(The system log is supported by the)127 712.2
-R/F2 10/Times-Italic@0 SF(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.012 E EP
+G(ry).15 E(for xf)72 612 Q(\214le in [A-Z]f*)-.25 E(do)72 624 Q
+(if [ \255f $xf)108 636 Q(\214le ])-.25 E(then)108 648 Q
+(echo \255n " <panic: $xf)144 660 Q(\214le>" > /de)-.25 E(v/console)-.25
+E<8c>108 672 Q(done)72 684 Q(Figure 1 \212 A comple)214.47 708 Q 2.5(xs)
+-.15 G(tartup script)-2.5 E 77 720 72 720 DL 79 720 74 720 DL 84 720 79
+720 DL 89 720 84 720 DL 94 720 89 720 DL 99 720 94 720 DL 104 720 99 720
+DL 109 720 104 720 DL 114 720 109 720 DL 119 720 114 720 DL 124 720 119
+720 DL 129 720 124 720 DL 134 720 129 720 DL 139 720 134 720 DL 144 720
+139 720 DL 149 720 144 720 DL 154 720 149 720 DL 159 720 154 720 DL 164
+720 159 720 DL 169 720 164 720 DL 174 720 169 720 DL 179 720 174 720 DL
+184 720 179 720 DL 189 720 184 720 DL 194 720 189 720 DL 199 720 194 720
+DL 204 720 199 720 DL 209 720 204 720 DL 214 720 209 720 DL 219 720 214
+720 DL 224 720 219 720 DL 229 720 224 720 DL 234 720 229 720 DL 239 720
+234 720 DL 244 720 239 720 DL 249 720 244 720 DL 254 720 249 720 DL 259
+720 254 720 DL 264 720 259 720 DL 269 720 264 720 DL 274 720 269 720 DL
+279 720 274 720 DL 284 720 279 720 DL 289 720 284 720 DL 294 720 289 720
+DL 299 720 294 720 DL 304 720 299 720 DL 309 720 304 720 DL 314 720 309
+720 DL 319 720 314 720 DL 324 720 319 720 DL 329 720 324 720 DL 334 720
+329 720 DL 339 720 334 720 DL 344 720 339 720 DL 349 720 344 720 DL 354
+720 349 720 DL 359 720 354 720 DL 364 720 359 720 DL 369 720 364 720 DL
+374 720 369 720 DL 379 720 374 720 DL 384 720 379 720 DL 389 720 384 720
+DL 394 720 389 720 DL 399 720 394 720 DL 404 720 399 720 DL 409 720 404
+720 DL 414 720 409 720 DL 419 720 414 720 DL 424 720 419 720 DL 429 720
+424 720 DL 434 720 429 720 DL 439 720 434 720 DL 444 720 439 720 DL 449
+720 444 720 DL 454 720 449 720 DL 459 720 454 720 DL 464 720 459 720 DL
+469 720 464 720 DL 474 720 469 720 DL 479 720 474 720 DL 484 720 479 720
+DL 489 720 484 720 DL 494 720 489 720 DL 499 720 494 720 DL 504 720 499
+720 DL EP
%%Page: 13 9
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-13)195.86 E/F1 10/Times-Roman@0 SF(logged under the)102 98 Q/F2
-9/Times-Roman@0 SF(LOG_MAIL)2.5 E F1 -.1(fa)2.5 G(cility).1 E/F3 7
-/Times-Roman@0 SF(5)-4 I F1(.)4 I F0 2.5(2.1.1. F)102 122 R(ormat)-.25 E
-F1 .574(Each line in the system log consists of a timestamp, the name of the machine that gener)
-142 138.2 R(-)-.2 E .848(ated it \(for logging from se)117 150.2 R -.15
-(ve)-.25 G .848(ral machines o).15 F -.15(ve)-.15 G 3.349(rt).15 G .849
-(he local area netw)-3.349 F .849(ork\), the w)-.1 F .849
-(ord \231sendmail:\232,)-.1 F(and a message)117 164.2 Q F3(6)-4 I F1 5
-(.M)4 K(ost messages are a sequence of)-5 E/F4 10/Times-Italic@0 SF
-(name)2.5 E F1(=)A F4(value)A F1(pairs.)2.5 E .68(The tw)142 180.4 R
-3.18(om)-.1 G .68
+(SMM:08-13)195.86 E/F1 10/Times-Roman@0 SF(cp /de)157 96 Q
+(v/null /etc/sendmail.st)-.25 E(chmod 644 /etc/sendmail.st)157 108 Q
+.716(This \214le does not gro)117 124.2 R 4.516 -.65(w. I)-.25 H 3.216
+(ti).65 G 3.216(sp)-3.216 G .716
+(rinted with the program \231mailstats/mailstats.c.)-3.216 F 5.715<9a54>
+-.7 G .715(he actual path)-5.715 F(of this \214le is de\214ned in the)
+117 136.2 Q F0(S)2.5 E F1(option of the)2.5 E/F2 10/Times-Italic@0 SF
+(sendmail.cf)2.5 E F1(\214le.)2.5 E F0 2.5(1.3.12. /usr/bin/mailq)102
+160.2 R F1(If)142 176.4 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>-3.439 G(mailq,)-3.439 E
+3.439<9a69>-.7 G 3.439(tw)-3.439 G .939(ill simulate the)-3.439 F 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 188.4 Q
+2.5(w\). This)-.25 F(should be a link to /usr/sbin/sendmail.)2.5 E F0
+2.5(2. NORMAL)72 212.4 R(OPERA)2.5 E(TIONS)-.95 E 2.5(2.1. The)87 236.4
+R(System Log)2.5 E F1 1.511(The system log is supported by the)127 252.6
+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 266.6 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)-4 I F1(.)4 I F0 2.5
+(2.1.1. F)102 290.6 R(ormat)-.25 E F1 .574(Each line in the system log consists of a timestamp, the name of the machine that gener)
+142 306.8 R(-)-.2 E .849(ated it \(for logging from se)117 318.8 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)-3.349 F .848(ork\), the w)-.1 F .848
+(ord \231sendmail:\232,)-.1 F(and a message)117 332.8 Q F4(6)-4 I F1 5
+(.M)4 K(ost messages are a sequence of)-5 E F2(name)2.5 E F1(=)A F2
+(value)A F1(pairs.)2.5 E .68(The tw)142 349 R 3.18(om)-.1 G .68
(ost common lines are logged when a message is processed.)-3.18 F .68
(The \214rst logs the)5.68 F .376(receipt of a message; there will be e)
-117 192.4 R .376(xactly one of these per message.)-.15 F .376
-(Some \214elds may be omit-)5.376 F(ted if the)117 204.4 Q 2.5(yd)-.15 G
+117 361 R .376(xactly one of these per message.)-.15 F .376
+(Some \214elds may be omit-)5.376 F(ted if the)117 373 Q 2.5(yd)-.15 G
2.5(on)-2.5 G(ot contain interesting information.)-2.5 E(Fields are:)5 E
-50.06(from The)117 220.6 R(en)2.5 E -.15(ve)-.4 G(lope sender address.)
-.15 E 53.95(size The)117 236.8 R(size of the message in bytes.)2.5 E
-50.06(class The)117 253 R
+50.06(from The)117 389.2 R(en)2.5 E -.15(ve)-.4 G(lope sender address.)
+.15 E 53.95(size The)117 405.4 R(size of the message in bytes.)2.5 E
+50.06(class The)117 421.6 R
(class \(i.e., numeric precedence\) of the message.)2.5 E 58.39(pri The)
-117 269.2 R(initial message priority \(used for queue sorting\).)2.5 E
-45.06(nrcpts The)117 285.4 R 1.515(number of en)4.015 F -.15(ve)-.4 G
-1.514(lope recipients for this message \(after aliasing and for).15 F(-)
--.2 E -.1(wa)189 297.4 S(rding\).).1 E 45.05(msgid The)117 313.6 R
+117 437.8 R(initial message priority \(used for queue sorting\).)2.5 E
+45.06(nrcpts The)117 454 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 466 S(rding\).).1 E 45.05(msgid The)117 482.2 R
(message id of the message \(from the header\).)2.5 E 48.39(proto The)
-117 329.8 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 346 R
+117 498.4 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 514.6 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 362.2 R -.15(ve)-.25 G
+.43(There is also one line logged per deli)117 530.8 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 374.2 Q
-(Fields are:)5 E 61.72(to A)117 390.4 R
+(ery is deferred or there are multiple recipients\).)117 542.8 Q
+(Fields are:)5 E 61.72(to A)117 559 R
(comma-separated list of the recipients to this mailer)2.5 E(.)-.55 E
-41.73(ctladdr The)117 406.6 R -.74(``)2.727 G .227(controlling user').74
+41.73(ctladdr The)117 575.2 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 418.6 Q -.15(ve)-.25 G(ry).15 E(.)-.65 E 47.84(delay The)
-117 434.8 R 1.303(total delay between the time this message w)3.803 F
+(for deli)189 587.2 Q -.15(ve)-.25 G(ry).15 E(.)-.65 E 47.84(delay The)
+117 603.4 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)
--3.803 F -.1(wa)189 446.8 S 2.5(sd).1 G(eli)-2.5 E -.15(ve)-.25 G(red.)
-.15 E 42.84(xdelay The)117 463 R .116
-(amount of time needed in this deli)2.616 F -.15(ve)-.25 G .116
-(ry attempt \(normally indicati).15 F .415 -.15(ve o)-.25 H 2.615(ft).15
-G(he)-2.615 E(speed of the connection\).)189 475 Q 43.95(mailer The)117
-491.2 R(name of the mailer used to deli)2.5 E -.15(ve)-.25 G 2.5(rt).15
-G 2.5(ot)-2.5 G(his recipient.)-2.5 E 49.51(relay The)117 507.4 R(name of the host that actually accepted \(or rejected\) this recipient.)
-2.5 E 55.61(stat The)117 523.6 R(deli)2.5 E -.15(ve)-.25 G(ry status.)
-.15 E(Not all \214elds are present in all messages; for e)117 539.8 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 563.8 R -.1(ve)-.15 G(ls).1 E F1 .204
-(If you ha)142 580 R -.15(ve)-.2 G F4(syslo)2.854 E(gd)-.1 E F1 .204
-(\(8\) or an equi)1.666 F -.25(va)-.25 G .205
-(lent installed, you will be able to do logging.).25 F .205(There is)
-5.205 F 2.788(al)117 592 S(ar)-2.788 E .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 .65(At the lo)117 604 R .65(west le)-.25 F -.15(ve)-.25 G 3.15(lo)
-.15 G .65(nly e)-3.15 F .651(xtremely strange situations are logged.)
--.15 F .651(At the highest le)5.651 F -.15(ve)-.25 G .651(l, e).15 F
--.15(ve)-.25 G 3.151(nt).15 G(he)-3.151 E .826
-(most mundane and uninteresting e)117 616 R -.15(ve)-.25 G .825
-(nts are recorded for posterity).15 F 5.825(.A)-.65 G 3.325(sac)-5.825 G
-(on)-3.325 E -.15(ve)-.4 G .825(ntion, log le).15 F -.15(ve)-.25 G(ls)
-.15 E .2(under ten are considered generally \231useful;\232 log le)117
-628 R -.15(ve)-.25 G .201(ls abo).15 F .501 -.15(ve 6)-.15 H 2.701(4a)
-.15 G .201(re reserv)-2.701 F .201(ed for deb)-.15 F .201(ugging pur)-.2
-F(-)-.2 E 2.5(poses. Le)117 640 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
-656.2 S(omplete description of the log le)-2.5 E -.15(ve)-.25 G
-(ls is gi).15 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(ns)-2.5 G(ection 4.6.)
--2.5 E .32 LW 76 674.8 72 674.8 DL 80 674.8 76 674.8 DL 84 674.8 80
-674.8 DL 88 674.8 84 674.8 DL 92 674.8 88 674.8 DL 96 674.8 92 674.8 DL
-100 674.8 96 674.8 DL 104 674.8 100 674.8 DL 108 674.8 104 674.8 DL 112
-674.8 108 674.8 DL 116 674.8 112 674.8 DL 120 674.8 116 674.8 DL 124
-674.8 120 674.8 DL 128 674.8 124 674.8 DL 132 674.8 128 674.8 DL 136
-674.8 132 674.8 DL 140 674.8 136 674.8 DL 144 674.8 140 674.8 DL 148
-674.8 144 674.8 DL 152 674.8 148 674.8 DL 156 674.8 152 674.8 DL 160
-674.8 156 674.8 DL 164 674.8 160 674.8 DL 168 674.8 164 674.8 DL 172
-674.8 168 674.8 DL 176 674.8 172 674.8 DL 180 674.8 176 674.8 DL 184
-674.8 180 674.8 DL 188 674.8 184 674.8 DL 192 674.8 188 674.8 DL 196
-674.8 192 674.8 DL 200 674.8 196 674.8 DL 204 674.8 200 674.8 DL 208
-674.8 204 674.8 DL 212 674.8 208 674.8 DL 216 674.8 212 674.8 DL/F5 5
-/Times-Roman@0 SF(5)93.6 685.2 Q/F6 8/Times-Roman@0 SF
+-3.803 F -.1(wa)189 615.4 S 2.5(sd).1 G(eli)-2.5 E -.15(ve)-.25 G(red.)
+.15 E 42.84(xdelay The)117 631.6 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)-2.616 E(speed of the connection\).)189 643.6 Q .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 698.8 Q F6(This format may v)
+(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: 14 10
@@ -900,194 +893,197 @@ EP
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.2. Dumping)87 96 R(State)
-2.5 E/F1 10/Times-Roman@0 SF -1.1(Yo)127 112.2 S 2.564(uc)1.1 G .064
-(an ask)-2.564 F/F2 10/Times-Italic@0 SF(sendmail)2.564 E F1 .064(to log a dump of the open \214les and the connection cache by sending it a)
-2.564 F/F3 9/Times-Roman@0 SF(SIGUSR1)102 124.2 Q F1 2.5(signal. The)2.5
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 43.95
+(mailer The)117 96 R(name of the mailer used to deli)2.5 E -.15(ve)-.25
+G 2.5(rt).15 G 2.5(ot)-2.5 G(his recipient.)-2.5 E 49.51(relay The)117
+112.2 R(name of the host that actually accepted \(or rejected\) this recipient.)
+2.5 E 55.61(stat The)117 128.4 R(deli)2.5 E -.15(ve)-.25 G(ry status.)
+.15 E(Not all \214elds are present in all messages; for e)117 144.6 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 168.6 R -.1(ve)-.15 G(ls).1 E F1 .205
+(If you ha)142 184.8 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 196.8 S(ar)-2.787 E .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 208.8 R .651(west le)-.25 F -.15(ve)-.25 G
+3.151(lo).15 G .651(nly e)-3.151 F .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)
+-3.15 E .825(most mundane and uninteresting e)117 220.8 R -.15(ve)-.25 G
+.825(nts are recorded for posterity).15 F 5.826(.A)-.65 G 3.326(sac)
+-5.826 G(on)-3.326 E -.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 232.8 R
+-.15(ve)-.25 G .201(ls abo).15 F .501 -.15(ve 6)-.15 H 2.701(4a).15 G .2
+(re reserv)-2.701 F .2(ed for deb)-.15 F .2(ugging pur)-.2 F(-)-.2 E 2.5
+(poses. Le)117 244.8 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 261 S(omplete description of the log le)-2.5 E -.15(ve)
+-.25 G(ls is gi).15 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(ns)-2.5 G
+(ection 4.6.)-2.5 E F0 2.5(2.2. Dumping)87 285 R(State)2.5 E F1 -1.1(Yo)
+127 301.2 S 2.563(uc)1.1 G .063(an ask)-2.563 F 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 313.2 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 148.2 R(Mail Queue)2.5 E F1 1.283
-(Sometimes a host cannot handle a message immediately)127 164.4 R 6.283
-(.F)-.65 G 1.283(or e)-6.433 F 1.283(xample, it may be do)-.15 F 1.283
-(wn or)-.25 F -.15(ove)102 176.4 S .043
+E(.)-.65 E F0 2.5(2.3. The)87 337.2 R(Mail Queue)2.5 E F1 1.283
+(Sometimes a host cannot handle a message immediately)127 353.4 R 6.283
+(.F)-.65 G 1.283(or e)-6.433 F 1.283(xample, it may be do)-.15 F 1.282
+(wn or)-.25 F -.15(ove)102 365.4 S .042
(rloaded, causing it to refuse connections.).15 F .043
-(The sending host is then e)5.043 F .042(xpected to sa)-.15 F .342 -.15
-(ve t)-.2 H .042(his message).15 F
-(in its mail queue and attempt to deli)102 188.4 Q -.15(ve)-.25 G 2.5
+(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 377.4 Q -.15(ve)-.25 G 2.5
(ri).15 G 2.5(tl)-2.5 G(ater)-2.5 E(.)-.55 E .568
(Under normal conditions the mail queue will be processed transparently)
-127 204.6 R 5.569(.H)-.65 G -.25(ow)-5.569 G -2.15 -.25(ev e).25 H 1.369
--.4(r, y).25 H .569(ou may).4 F .994(\214nd that manual interv)102 216.6
+127 393.6 R 5.568(.H)-.65 G -.25(ow)-5.568 G -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 405.6
R .993(ention is sometimes necessary)-.15 F 5.993(.F)-.65 G .993(or e)
--6.143 F .993(xample, if a major host is do)-.15 F .993(wn for a)-.25 F
-1.699(period of time the queue may become clogged.)102 228.6 R(Although)
-6.699 E F2(sendmail)4.199 E F1 1.7(ought to reco)4.199 F -.15(ve)-.15 G
-4.2(rg).15 G(racefully)-4.2 E(when the host comes up, you may \214nd performance unacceptably bad in the meantime.)
-102 240.6 Q F0 2.5(2.3.1. Printing)102 264.6 R(the queue)2.5 E F1 .526
-(The contents of the queue can be printed using the)142 280.8 R F2
+-6.143 F .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 417.6 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)-4.199 E(when the host comes up, you may \214nd performance unacceptably bad in the meantime.)
+102 429.6 Q F0 2.5(2.3.1. Printing)102 453.6 R(the queue)2.5 E F1 .526
+(The contents of the queue can be printed using the)142 469.8 R F2
(mailq)3.026 E F1 .526(command \(or by specifying the)3.026 F F0(\255bp)
-117 292.8 Q F1(\215ag to)2.5 E F2(sendmail)2.5 E F1(\):)A(mailq)157 309
-Q 1.673(This will produce a listing of the queue id')117 325.2 R 1.673
+117 481.8 Q F1(\215ag to)2.5 E F2(sendmail)2.5 E F1(\):)A(mailq)157 498
+Q 1.673(This will produce a listing of the queue id')117 514.2 R 1.673
(s, the size of the message, the date the message)-.55 F
-(entered the queue, and the sender and recipients.)117 337.2 Q F0 2.5
-(2.3.2. F)102 361.2 R(or)-.25 E(cing the queue)-.18 E F2(Sendmail)142
-377.4 Q F1 1.138(should run the queue automatically at interv)3.638 F
-3.638(als. The)-.25 F 1.137(algorithm is to read and)3.638 F .355
+(entered the queue, and the sender and recipients.)117 526.2 Q F0 2.5
+(2.3.2. F)102 550.2 R(or)-.25 E(cing the queue)-.18 E F2(Sendmail)142
+566.4 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
-389.4 R 5.355(.W)-.55 G .356(hen it attempts to run the job,)-5.355 F F2
-(sendmail)117 401.4 Q F1(\214rst checks to see if the job is lock)2.5 E
+578.4 R 5.355(.W)-.55 G .355(hen it attempts to run the job,)-5.355 F F2
+(sendmail)117 590.4 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 417.6
-R .338(xists at an)-.15 F 2.838(yt)-.15 G .338(ime, since there)-2.838 F
-.094(is no guarantee that a job cannot tak)117 429.6 R 2.595(ef)-.1 G
-(ore)-2.595 E -.15(ve)-.25 G 2.595(rt).15 G 2.595(op)-2.595 G .095
+(There is no attempt to insure that only one queue processor e)142 606.6
+R .338(xists at an)-.15 F 2.838(yt)-.15 G .339(ime, since there)-2.838 F
+.095(is no guarantee that a job cannot tak)117 618.6 R 2.595(ef)-.1 G
+(ore)-2.595 E -.15(ve)-.25 G 2.595(rt).15 G 2.595(op)-2.595 G .094
(rocess \(ho)-2.595 F(we)-.25 E -.15(ve)-.25 G -.4(r,).15 G F2(sendmail)
-2.995 E F1 .095(does include heuris-)2.595 F 1.086(tics to try to abort jobs that are taking absurd amounts of time; technically)
-117 441.6 R 3.586(,t)-.65 G 1.086(his violates RFC)-3.586 F .461(821, b)
-117 453.6 R .461(ut is blessed by RFC 1123\).)-.2 F .461
+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 630.6 R 3.587(,t)-.65 G 1.087(his violates RFC)-3.587 F .462(821, b)
+117 642.6 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.087(freeze the entire queue.)117 465.6 R(Ho)6.086 E(we)-.25 E -.15(ve)
+1.086(freeze the entire queue.)117 654.6 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)-3.586 E 1.386 -.15
(ve r)-.25 H 1.086(ecipient host or a program recipient that).15 F(ne)
-117 477.6 Q -.15(ve)-.25 G 3.35(rr).15 G .85(eturns can accumulate man)
--3.35 F 3.351(yp)-.15 G .851(rocesses in your system.)-3.351 F
-(Unfortunately)5.851 E 3.351(,t)-.65 G .851(here is no com-)-3.351 F
-(pletely general w)117 489.6 Q(ay to solv)-.1 E 2.5(et)-.15 G(his.)-2.5
-E .082(In some cases, you may \214nd that a major host going do)142
-505.8 R .082(wn for a couple of days may create)-.25 F 2.924(ap)117
-517.8 S(rohibiti)-2.924 E -.15(ve)-.25 G .424(ly lar).15 F .424
-(ge queue.)-.18 F .424(This will result in)5.424 F F2(sendmail)2.924 E
-F1 .425(spending an inordinate amount of time)2.924 F 1.085
-(sorting the queue.)117 529.8 R 1.085(This situation can be \214x)6.085
-F 1.084(ed by mo)-.15 F 1.084(ving the queue to a temporary place and)
--.15 F .022(creating a ne)117 541.8 R 2.522(wq)-.25 G 2.522(ueue. The)
--2.522 F .022(old queue can be run later when the of)2.522 F .023
-(fending host returns to service.)-.25 F 1.6 -.8(To d)142 558 T 2.5(ot)
-.8 G(his, it is acceptable to mo)-2.5 E .3 -.15(ve t)-.15 H
-(he entire queue directory:).15 E(cd /v)157 574.2 Q(ar/spool)-.25 E
-(mv mqueue omqueue; mkdir mqueue; chmod 700 mqueue)157 586.2 Q -1.1(Yo)
-117 602.4 S 2.709(us)1.1 G .209(hould then kill the e)-2.709 F .209(xisting daemon \(since it will still be processing in the old queue direc-)
--.15 F(tory\) and create a ne)117 614.4 Q 2.5(wd)-.25 G(aemon.)-2.5 E
-1.6 -.8(To r)142 630.6 T(un the old mail queue, run the follo).8 E
-(wing command:)-.25 E(/usr/sbin/sendmail \255oQ/v)157 646.8 Q
-(ar/spool/omqueue \255q)-.25 E(The)117 663 Q F0(\255oQ)2.867 E F1 .367
-(\215ag speci\214es an alternate queue directory and the)2.867 F F0
-<ad71>2.867 E F1 .367(\215ag says to just run e)2.867 F -.15(ve)-.25 G
-.368(ry job in).15 F .594(the queue.)117 675 R .594(If you ha)5.594 F
-.894 -.15(ve a t)-.2 H(endenc).15 E 3.093(yt)-.15 G -2.1 -.25(ow a)
--3.093 H .593(rd v).25 F -.1(oy)-.2 G .593(eurism, you can use the).1 F
-F0<ad76>3.093 E F1 .593(\215ag to w)3.093 F .593(atch what is)-.1 F
-(going on.)117 687 Q(When the queue is \214nally emptied, you can remo)
-142 703.2 Q .3 -.15(ve t)-.15 H(he directory:).15 E EP
+117 666.6 Q -.15(ve)-.25 G 3.351(rr).15 G .851
+(eturns can accumulate man)-3.351 F 3.351(yp)-.15 G .851
+(rocesses in your system.)-3.351 F(Unfortunately)5.851 E 3.351(,t)-.65 G
+.85(here is no com-)-3.351 F(pletely general w)117 678.6 Q(ay to solv)
+-.1 E 2.5(et)-.15 G(his.)-2.5 E .082
+(In some cases, you may \214nd that a major host going do)142 694.8 R
+.083(wn for a couple of days may create)-.25 F 2.925(ap)117 706.8 S
+(rohibiti)-2.925 E -.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 718.8 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 EP
%%Page: 15 11
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-15)195.86 E/F1 10/Times-Roman@0 SF(rmdir /v)157 96 Q
-(ar/spool/omqueue)-.25 E F0 2.5(2.4. Disk)87 124.2 R
-(Based Connection Inf)2.5 E(ormation)-.25 E/F2 10/Times-Italic@0 SF
-(Sendmail)127 140.4 Q F1 .596(stores a lar)3.096 F .597
+(SMM:08-15)195.86 E/F1 10/Times-Roman@0 SF .023(creating a ne)117 96 R
+2.523(wq)-.25 G 2.523(ueue. The)-2.523 F .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 112.2 T 2.5
+(ot).8 G(his, it is acceptable to mo)-2.5 E .3 -.15(ve t)-.15 H
+(he entire queue directory:).15 E(cd /v)157 128.4 Q(ar/spool)-.25 E
+(mv mqueue omqueue; mkdir mqueue; chmod 700 mqueue)157 140.4 Q -1.1(Yo)
+117 156.6 S 2.708(us)1.1 G .208(hould then kill the e)-2.708 F .209(xisting daemon \(since it will still be processing in the old queue direc-)
+-.15 F(tory\) and create a ne)117 168.6 Q 2.5(wd)-.25 G(aemon.)-2.5 E
+1.6 -.8(To r)142 184.8 T(un the old mail queue, run the follo).8 E
+(wing command:)-.25 E(/usr/sbin/sendmail \255oQ/v)157 201 Q
+(ar/spool/omqueue \255q)-.25 E(The)117 217.2 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 229.2 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)
+-3.093 H .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 241.2 Q
+(When the queue is \214nally emptied, you can remo)142 257.4 Q .3 -.15
+(ve t)-.15 H(he directory:).15 E(rmdir /v)157 273.6 Q(ar/spool/omqueue)
+-.25 E F0 2.5(2.4. Disk)87 301.8 R(Based Connection Inf)2.5 E(ormation)
+-.25 E/F2 10/Times-Italic@0 SF(Sendmail)127 318 Q F1 .597(stores a lar)
+3.097 F .596
(ge amount of information about each remote system it has connected to)
--.18 F 1.128(in memory)102 152.4 R 3.628(.I)-.65 G 3.628(ti)-3.628 G
-3.628(sn)-3.628 G 1.627 -.25(ow p)-3.628 H 1.127(ossible to preserv).25
-F 3.627(es)-.15 G 1.127
+-.18 F 1.127(in memory)102 330 R 3.627(.I)-.65 G 3.627(ti)-3.627 G 3.627
+(sn)-3.627 G 1.627 -.25(ow p)-3.627 H 1.127(ossible to preserv).25 F
+3.627(es)-.15 G 1.127
(ome of this information on disk as well, by using the)-3.627 F F0
-(HostStatusDir)102 164.4 Q(ectory)-.18 E F1 1.705
+(HostStatusDir)102 342 Q(ectory)-.18 E F1 1.705
(option, so that it may be shared between se)4.205 F -.15(ve)-.25 G
1.705(ral in).15 F -.2(vo)-.4 G 1.705(cations of).2 F F2(sendmail)4.205
-E F1(.)A .284(This allo)102 176.4 R .283(ws mail to be queued immediately or skipped during a queue run if there has been a recent)
--.25 F -.1(fa)102 188.4 S(ilure in connecting to a remote machine.).1 E
-1.438(Additionally enabling)127 204.6 R F0(SingleThr)3.939 E(eadDeli)
+E F1(.)A .283(This allo)102 354 R .283(ws mail to be queued immediately or skipped during a queue run if there has been a recent)
+-.25 F -.1(fa)102 366 S(ilure in connecting to a remote machine.).1 E
+1.439(Additionally enabling)127 382.2 R F0(SingleThr)3.939 E(eadDeli)
-.18 E -.1(ve)-.1 G(ry).1 E F1 1.439(has the added ef)3.939 F 1.439
-(fect of single-threading mail)-.25 F(deli)102 216.6 Q -.15(ve)-.25 G
-1.611(ry to a destination.).15 F 1.611
-(This can be quite helpful if the remote machine is running an SMTP)
-6.611 F(serv)102 228.6 Q 1.01(er that is easily o)-.15 F -.15(ve)-.15 G
-1.011
+(fect of single-threading mail)-.25 F(deli)102 394.2 Q -.15(ve)-.25 G
+1.61(ry to a destination.).15 F 1.611
+(This can be quite helpful if the remote machine is running an SMTP)6.61
+F(serv)102 406.2 Q 1.011(er that is easily o)-.15 F -.15(ve)-.15 G 1.011
(rloaded or cannot accept more than a single connection at a time, b).15
-F 1.011(ut can)-.2 F .458
-(cause some messages to be punted to a future queue run.)102 240.6 R
-.458(It also applies to)5.458 F F2(all)2.958 E F1 .457
-(hosts, so setting this)2.958 F .281(because you ha)102 252.6 R .581
+F 1.01(ut can)-.2 F .458
+(cause some messages to be punted to a future queue run.)102 418.2 R
+.458(It also applies to)5.458 F F2(all)2.958 E F1 .458
+(hosts, so setting this)2.958 F .282(because you ha)102 430.2 R .582
-.15(ve o)-.2 H .281(ne machine on site that runs some softw).15 F .281
-(are that is easily o)-.1 F -.15(ve)-.15 G .282(rrun can cause mail).15
-F .315(to other hosts to be slo)102 264.6 R .315(wed do)-.25 F 2.815
+(are that is easily o)-.1 F -.15(ve)-.15 G .281(rrun can cause mail).15
+F .315(to other hosts to be slo)102 442.2 R .315(wed do)-.25 F 2.815
(wn. If)-.25 F .315(this option is set, you probably w)2.815 F .315
-(ant to set the)-.1 F F0(MinQueueAge)2.815 E F1 1.177
-(option as well and run the queue f)102 276.6 R 1.177
-(airly frequently; this will cause hosts that are skipped because)-.1 F
-(another)102 288.6 Q F2(sendmail)2.5 E F1
-(instance is talking to it to be tried ag)2.5 E(ain soon.)-.05 E .303
-(The disk based host information is stored in a subdirectory of of the)
-127 304.8 R F0(mqueue)2.803 E F1 .303(directory called)2.803 F F0
-(.hoststat)102 318.8 Q/F3 7/Times-Roman@0 SF(7)-4 I F1 6.749(.R)4 K(emo)
+(ant to set the)-.1 F F0(MinQueueAge)2.815 E F1 .872
+(option as well and run the queue f)102 454.2 R .871
+(airly frequently; this w)-.1 F .871
+(ay jobs that are skipped because another)-.1 F F2(sendmail)102 466.2 Q
+F1 .363(is talking to the same host will be tried ag)2.863 F .364
+(ain quickly rather than being delayed for a long)-.05 F(time.)102 478.2
+Q 1.099
+(The disk based host information is stored in a subdirectory of the)127
+494.4 R F0(mqueue)3.598 E F1 1.098(directory called)3.598 F F0
+(.hoststat)102 508.4 Q/F3 7/Times-Roman@0 SF(7)-4 I F1 6.749(.R)4 K(emo)
-6.749 E 1.749(ving this directory and its subdirectories has an ef)-.15
F 1.75(fect similar to the)-.25 F F2(pur)4.25 E -.1(ge)-.37 G(stat).1 E
-F1 .046(command and is completely safe.)102 330.8 R .045
+F1 .046(command and is completely safe.)102 520.4 R .045
(The information in these directories can be perused with the)5.046 F F2
-(host-)2.545 E(stat)102 342.8 Q F1 .513(command, which will indicate the host name, the last access, and the status of that access.)
+(host-)2.545 E(stat)102 532.4 Q F1 .513(command, which will indicate the host name, the last access, and the status of that access.)
3.012 F(An)5.513 E .69
-(asterisk in the left most column indicates that a)102 354.8 R F2
+(asterisk in the left most column indicates that a)102 544.4 R F2
(sendmail)3.19 E F1 .69(process currently has the host lock)3.19 F .69
-(ed for)-.1 F(mail deli)102 366.8 Q -.15(ve)-.25 G(ry).15 E(.)-.65 E .53
-(The disk based connection information is treated the same w)127 383 R
+(ed for)-.1 F(mail deli)102 556.4 Q -.15(ve)-.25 G(ry).15 E(.)-.65 E .53
+(The disk based connection information is treated the same w)127 572.6 R
.53(ay as memory based connection)-.1 F .536
-(information for the purpose of timeouts.)102 395 R .536(By def)5.536 F
-.536(ault, information about host f)-.1 F .536(ailures is v)-.1 F .536
-(alid for 30)-.25 F 2.5(minutes. This)102 407 R
+(information for the purpose of timeouts.)102 584.6 R .536(By def)5.536
+F .536(ault, information about host f)-.1 F .536(ailures is v)-.1 F .536
+(alid for 30)-.25 F 2.5(minutes. This)102 596.6 R
(can be adjusted with the)2.5 E F0 -.18(Ti)2.5 G(meout.hoststatus).18 E
F1(option.)2.5 E .022
-(The connection information stored on disk may be pur)127 423.2 R .023
+(The connection information stored on disk may be pur)127 612.8 R .023
(ged at an)-.18 F 2.523(yt)-.15 G .023(ime with the)-2.523 F F2(pur)
2.523 E -.1(ge)-.37 G(stat).1 E F1(com-)2.523 E .95(mand or by in)102
-435.2 R -.2(vo)-.4 G .949(king sendmail with the).2 F F0(\255bH)3.449 E
+624.8 R -.2(vo)-.4 G .949(king sendmail with the).2 F F0(\255bH)3.449 E
F1 3.449(switch. The)3.449 F .949(connection information may be vie)
-3.449 F(wed)-.25 E(with the)102 447.2 Q F2(hoststat)2.5 E F1
+3.449 F(wed)-.25 E(with the)102 636.8 Q F2(hoststat)2.5 E F1
(command or by in)2.5 E -.2(vo)-.4 G(king sendmail with the).2 E F0
-(\255bh)2.5 E F1(switch.)2.5 E F0 2.5(2.5. The)87 471.2 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 487.4 R .336(trolled by the service switch.)102 499.4 R .336
-(If the host operating system supports such a switch)5.336 F F2
-(sendmail)2.835 E F1 .335(will use)2.835 F(the nati)102 511.4 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 527.6 R .975(BSD\) then)102 539.6 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 .381
-(the name of a \214le that has the service de\214nitions Each line has the name of a service and the possi-)
-102 551.6 R(ble implementations of that service.)102 563.6 Q -.15(Fo)5 G
-2.5(re).15 G(xample, the \214le:)-2.65 E 12.94(hosts dns)142 579.8 R
-(\214les nis)2.5 E 6.84(aliases \214les)142 591.8 R(nis)2.5 E .329
-(will ask)102 608 R F2(sendmail)2.829 E F1 .328
-(to look for hosts in the Domain Name System \214rst.)2.829 F .328
-(If the requested host name is)5.328 F .379
-(not found, it tries local \214les, and if that f)102 620 R .379
-(ails it tries NIS.)-.1 F(Similarly)5.379 E 2.879(,w)-.65 G .379
-(hen looking for aliases it will)-2.879 F
-(try the local \214les \214rst follo)102 632 Q(wed by NIS.)-.25 E 1.27
-(Service switches are not completely inte)127 648.2 R 3.769(grated. F)
--.15 F 1.269(or e)-.15 F 1.269(xample, despite the f)-.15 F 1.269
-(act that the host)-.1 F .293(entry listed in the abo)102 660.2 R .593
--.15(ve ex)-.15 H .294
-(ample speci\214es to look in NIS, on SunOS this w).15 F(on')-.1 E 2.794
-(th)-.18 G .294(appen because the)-2.794 F 1.399
-(system implementation of)102 672.2 R F2 -.1(ge)3.899 G(thostbyname).1 E
-F1 1.399(\(3\) doesn')1.666 F 3.899(tu)-.18 G 1.399(nderstand this.)
--3.899 F 1.398(If there is enough demand)6.398 F .32 LW 76 681.8 72
-681.8 DL 80 681.8 76 681.8 DL 84 681.8 80 681.8 DL 88 681.8 84 681.8 DL
-92 681.8 88 681.8 DL 96 681.8 92 681.8 DL 100 681.8 96 681.8 DL 104
-681.8 100 681.8 DL 108 681.8 104 681.8 DL 112 681.8 108 681.8 DL 116
-681.8 112 681.8 DL 120 681.8 116 681.8 DL 124 681.8 120 681.8 DL 128
-681.8 124 681.8 DL 132 681.8 128 681.8 DL 136 681.8 132 681.8 DL 140
-681.8 136 681.8 DL 144 681.8 140 681.8 DL 148 681.8 144 681.8 DL 152
-681.8 148 681.8 DL 156 681.8 152 681.8 DL 160 681.8 156 681.8 DL 164
-681.8 160 681.8 DL 168 681.8 164 681.8 DL 172 681.8 168 681.8 DL 176
-681.8 172 681.8 DL 180 681.8 176 681.8 DL 184 681.8 180 681.8 DL 188
-681.8 184 681.8 DL 192 681.8 188 681.8 DL 196 681.8 192 681.8 DL 200
-681.8 196 681.8 DL 204 681.8 200 681.8 DL 208 681.8 204 681.8 DL 212
-681.8 208 681.8 DL 216 681.8 212 681.8 DL/F4 5/Times-Roman@0 SF(7)93.6
-692.2 Q/F5 8/Times-Roman@0 SF(This is the usual v)3.2 I(alue of the)-.2
-E/F6 8/Times-Bold@0 SF(HostStatusDir)2 E(ectory)-.144 E F5
+(\255bh)2.5 E F1(switch.)2.5 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(7)93.6 689.2 Q/F5 8
+/Times-Roman@0 SF(This is the usual v)3.2 I(alue of the)-.2 E/F6 8
+/Times-Bold@0 SF(HostStatusDir)2 E(ectory)-.144 E F5
(option; it can, of course, go an)2 E(ywhere you lik)-.12 E 2(ei)-.08 G
2(ny)-2 G(our \214lesystem.)-2 E EP
%%Page: 16 12
@@ -1095,3123 +1091,3390 @@ E/F6 8/Times-Bold@0 SF(HostStatusDir)2 E(ectory)-.144 E F5
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF 193.36(SMM:08-16 Sendmail)72 60 R
-(Installation and Operation Guide)2.5 E/F1 10/Times-Italic@0 SF
-(sendmail)102 96 Q/F2 10/Times-Roman@0 SF .014(may reimplement)2.514 F
-F1 -.1(ge)2.514 G(thostbyname).1 E F2(\(3\),)1.666 E F1 -.1(ge)2.515 G
-(thostbyaddr).1 E F2(\(3\),)1.666 E F1 -.1(ge)2.515 G(tpwent).1 E F2
-.015(\(3\), and the other system)1.666 F(routines that w)102 108 Q
-(ould be necessary to mak)-.1 E 2.5(et)-.1 G(his w)-2.5 E
-(ork seamlessly)-.1 E(.)-.65 E F0 2.5(2.6. The)87 132 R(Alias Database)
-2.5 E F2 2.074(After recipient addresses are read from the SMTP connection or command line the)
-127 148.2 R 4.573(ya)-.15 G(re)-4.573 E .499
-(parsed by ruleset 0, which must resolv)102 160.2 R 2.999(et)-.15 G
-2.999(oa{)-2.999 G F1(mailer)-2.999 E F2(,)A F1(host)2.999 E F2(,)A F1
-(user)3 E F2 3(}t)C 3(riple. If)-3 F .5(the \215ags selected by the)3 F
-F1(mailer)102 172.2 Q F2 .26(includes the)2.76 F F0(A)2.76 E F2 .26
-(\(aliasable\) \215ag, the)2.76 F F1(user)2.76 E F2 .259
-(part of the triple is look)2.76 F .259(ed up as the k)-.1 F .559 -.15
-(ey \()-.1 H .259(i.e., the left).15 F .227(hand side\) into the alias database If there is a match, the address is deleted from the send queue and)
-102 184.2 R .387(all addresses on the right hand side of the alias are added in place of the alias that w)
-102 196.2 R .386(as found.)-.1 F(This)5.386 E(is a recursi)102 208.2 Q
-.3 -.15(ve o)-.25 H(peration, so aliases found in the right hand side of the alias are similarly e)
-.15 E(xpanded.)-.15 E .36(The alias database e)127 224.4 R .36
-(xists in tw)-.15 F 2.86(of)-.1 G 2.861(orms. One)-2.86 F .361(is a te)
-2.861 F .361(xt form, maintained in the \214le)-.15 F F1(/etc/aliases.)
-2.861 E F2(The aliases are of the form)102 236.4 Q
-(name: name1, name2, ...)142 252.6 Q
-(Only local names may be aliased; e.g.,)102 268.8 Q(eric@prep.ai.MIT)142
-285 Q(.EDU: eric@CS.Berk)-.74 E(ele)-.1 E -.65(y.)-.15 G(EDU).65 E 1.088
-(will not ha)102 303.2 R 1.388 -.15(ve t)-.2 H 1.088(he desired ef).15 F
+(Installation and Operation Guide)2.5 E 2.5(2.5. The)87 96 R(Ser)2.5 E
+(vice Switch)-.1 E/F1 10/Times-Roman@0 SF 1.416(The implementation of certain system services such as host and user name lookup is con-)
+127 112.2 R .336(trolled by the service switch.)102 124.2 R .336
+(If the host operating system supports such a switch)5.336 F/F2 10
+/Times-Italic@0 SF(sendmail)2.835 E F1 .335(will use)2.835 F(the nati)
+102 138.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/F3 7
+/Times-Roman@0 SF(8)-4 I F1(.)4 I .88(If the underlying operating system does not support a service switch \(e.g., SunOS 4.X, HP-)
+127 154.4 R .211(UX, BSD\) then)102 166.4 R F2(sendmail)2.711 E F1 .212
+(will pro)2.711 F .212(vide a stub implementation.)-.15 F(The)5.212 E F0
+(Ser)2.712 E(viceSwitchFile)-.1 E F1 .212(option points)2.712 F .937
+(to the name of a \214le that has the service de\214nitions.)102 178.4 R
+.937(Each line has the name of a service and the)5.937 F
+(possible implementations of that service.)102 190.4 Q -.15(Fo)5 G 2.5
+(re).15 G(xample, the \214le:)-2.65 E 12.94(hosts dns)142 206.6 R
+(\214les nis)2.5 E 6.84(aliases \214les)142 218.6 R(nis)2.5 E .328
+(will ask)102 234.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 .379
+(not found, it tries local \214les, and if that f)102 246.8 R .379
+(ails it tries NIS.)-.1 F(Similarly)5.379 E 2.879(,w)-.65 G .379
+(hen looking for aliases it will)-2.879 F
+(try the local \214les \214rst follo)102 258.8 Q(wed by NIS.)-.25 E
+1.269(Service switches are not completely inte)127 275 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 287 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)-2.793 F 1.398
+(system implementation of)102 299 R F2 -.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.)
+-3.898 F 1.399(If there is enough demand)6.399 F F2(sendmail)102 311 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 323 Q(ould be necessary to mak)-.1 E 2.5(et)-.1 G
+(his w)-2.5 E(ork seamlessly)-.1 E(.)-.65 E F0 2.5(2.6. The)87 347 R
+(Alias Database)2.5 E F1 2.074(After recipient addresses are read from the SMTP connection or command line the)
+127 363.2 R 4.574(ya)-.15 G(re)-4.574 E .5
+(parsed by ruleset 0, which must resolv)102 375.2 R 3(et)-.15 G 3(oa)-3
+G({)-.001 E F2(mailer)A F1(,)A F2(host)2.999 E F1(,)A F2(user)2.999 E F1
+2.999(}t)C 2.999(riple. If)-2.999 F .499(the \215ags selected by the)
+2.999 F F2(mailer)102 387.2 Q F1 .454(include the)2.954 F F0(A)2.954 E
+F1 .454(\(aliasable\) \215ag, the)2.954 F F2(user)2.954 E F1 .454
+(part of the triple is look)2.954 F .454(ed up as the k)-.1 F .754 -.15
+(ey \()-.1 H .454(i.e., the left).15 F .903
+(hand side\) into the alias database.)102 399.2 R .903
+(If there is a match, the address is deleted from the send queue)5.903 F
+.678(and all addresses on the right hand side of the alias are added in place of the alias that w)
+102 411.2 R .679(as found.)-.1 F 2.007(This is a recursi)102 423.2 R
+2.307 -.15(ve o)-.25 H 2.007(peration, so aliases found in the right hand side of the alias are similarly)
+.15 F -.15(ex)102 435.2 S(panded.).15 E .36(The alias database e)127
+451.4 R .36(xists in tw)-.15 F 2.86(of)-.1 G 2.861(orms. One)-2.86 F
+.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 463.4 Q
+(name: name1, name2, ...)142 479.6 Q
+(Only local names may be aliased; e.g.,)102 495.8 Q(eric@prep.ai.MIT)142
+512 Q(.EDU: eric@CS.Berk)-.74 E(ele)-.1 E -.65(y.)-.15 G(EDU).65 E 1.088
+(will not ha)102 530.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')-3.588 F 3.587
-(tw)-.18 G 1.087(ant me\))-3.687 F/F3 7/Times-Roman@0 SF(8)-4 I F2(.)4 I
-.561(Aliases may be continued by starting an)102 315.2 R 3.061(yc)-.15 G
+(tw)-.18 G 1.087(ant me\))-3.687 F F3(9)-4 I F1(.)4 I .561
+(Aliases may be continued by starting an)102 542.2 R 3.061(yc)-.15 G
.561(ontinuation lines with a space or a tab)-3.061 F 5.562(.B)-.4 G
-.562(lank lines and)-5.562 F(lines be)102 327.2 Q
-(ginning with a sharp sign \(\231#\232\) are comments.)-.15 E 1.478
-(The second form is processed by the)127 345.4 R F1(ndbm)3.978 E F2
-(\(3\))1.666 E F3(9)-4 I F2(or)3.978 4 M F1(db)3.978 E F2 1.478
-(\(3\) library)1.666 F 6.478(.T)-.65 G 1.478(his form is in the \214les)
--6.478 F F1(/etc/aliases.dir)102 357.4 Q F2(and)3.028 E F1
-(/etc/aliases.pa)3.028 E -.15(g.)-.1 G F2 .528(This is the form that)
-5.678 F F1(sendmail)3.029 E F2 .529(actually uses to resolv)3.029 F
-3.029(ea)-.15 G(liases.)-3.029 E(This technique is used to impro)102
-369.4 Q .3 -.15(ve p)-.15 H(erformance.).15 E
+.562(lank lines and)-5.562 F(lines be)102 554.2 Q
+(ginning with a sharp sign \(\231#\232\) are comments.)-.15 E .651
+(The second form is processed by the)127 572.4 R F2(ndbm)3.15 E F1
+(\(3\))1.666 E F3(10)-4 I F1 .65(or the Berk)3.15 4 N(ele)-.1 E 3.15(yD)
+-.15 G 3.15(Bl)-3.15 G(ibrary)-3.15 E 5.65(.T)-.65 G .65(his form is in)
+-5.65 F .593(the \214le)102 584.4 R F2(/etc/aliases.db)3.093 E F1 .593
+(\(if using NEWDB\) or)3.093 F F2(/etc/aliases.dir)3.093 E F1(and)3.093
+E F2(/etc/aliases.pa)3.094 E(g)-.1 E F1 .594(\(if using NDBM\).)3.094 F
+.954(This is the form that)102 596.4 R F2(sendmail)3.454 E F1 .954
+(actually uses to resolv)3.454 F 3.454(ea)-.15 G 3.454(liases. This)
+-3.454 F .953(technique is used to impro)3.454 F -.15(ve)-.15 G
+(performance.)102 608.4 Q
(The control of search order is actually set by the service switch.)127
-385.6 Q(Essentially)5 E 2.5(,t)-.65 G(he entry)-2.5 E -.35(OA)142 401.8
-S(switch:aliases).35 E .927(is al)102 418 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 430 R(`\214les')-.74 E 2.769('e)-.74 G .269
-(ntry in the aliases switch.)-2.769 F -.15(Fo)5.269 G(r).15 E -.15(ex)
-102 442 S(ample, if the con\214guration \214le contains).15 E -.35(OA)
-142 458.2 S(/etc/aliases).35 E(and the service switch contains)102 474.4
-Q 6.84(aliases nis)142 490.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 506.8 R(database.)102 518.8 Q -1.1(Yo)127 535 S 2.5(uc)1.1 G
-(an also use)-2.5 E/F4 9/Times-Roman@0 SF(NIS)2.5 E F2
-(-based alias \214les.)A -.15(Fo)5 G 2.5(re).15 G
-(xample, the speci\214cation:)-2.65 E -.35(OA)142 551.2 S(/etc/aliases)
-.35 E -.35(OA)142 563.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 named \231mail.aliases\232 in \231my)
-102 579.4 R(.nis.domain\232.)-.65 E -.8(Wa)102 591.4 S .59
-(rning: if you b).8 F .59(uild your o)-.2 F(wn)-.25 E F4(NIS)3.09 E F2
-.589(-based alias \214les, be sure to pro)B .589(vide the)-.15 F F0
-<ad6c>3.089 E F2 .589(\215ag to)3.089 F F1(mak)3.089 E(edbm)-.1 E F2
-(\(8\))A .159(to map upper case letters in the k)102 603.4 R -.15(ey)-.1
-G 2.659(st).15 G 2.659(ol)-2.659 G -.25(ow)-2.659 G .159
-(er case; otherwise, aliases with upper case letters in their).25 F
-(names w)102 615.4 Q(on')-.1 E 2.5(tm)-.18 G(atch incoming addresses.)
--2.5 E(Additional \215ags can be added after the colon e)127 631.6 Q
-(xactly lik)-.15 E 2.5(ea)-.1 G F0(K)A F2(line \212 for e)2.5 E(xample:)
--.15 E -.35(OA)142 647.8 S(nis:\255N mail.aliases@my).35 E(.nis.domain)
--.65 E(will search the appropriate NIS map and al)102 664 Q -.1(wa)-.1 G
-(ys include null bytes in the k).1 E -.15(ey)-.1 G(.)-.5 E .32 LW 76
-673.6 72 673.6 DL 80 673.6 76 673.6 DL 84 673.6 80 673.6 DL 88 673.6 84
-673.6 DL 92 673.6 88 673.6 DL 96 673.6 92 673.6 DL 100 673.6 96 673.6 DL
-104 673.6 100 673.6 DL 108 673.6 104 673.6 DL 112 673.6 108 673.6 DL 116
-673.6 112 673.6 DL 120 673.6 116 673.6 DL 124 673.6 120 673.6 DL 128
-673.6 124 673.6 DL 132 673.6 128 673.6 DL 136 673.6 132 673.6 DL 140
-673.6 136 673.6 DL 144 673.6 140 673.6 DL 148 673.6 144 673.6 DL 152
-673.6 148 673.6 DL 156 673.6 152 673.6 DL 160 673.6 156 673.6 DL 164
-673.6 160 673.6 DL 168 673.6 164 673.6 DL 172 673.6 168 673.6 DL 176
-673.6 172 673.6 DL 180 673.6 176 673.6 DL 184 673.6 180 673.6 DL 188
-673.6 184 673.6 DL 192 673.6 188 673.6 DL 196 673.6 192 673.6 DL 200
-673.6 196 673.6 DL 204 673.6 200 673.6 DL 208 673.6 204 673.6 DL 212
-673.6 208 673.6 DL 216 673.6 212 673.6 DL/F5 5/Times-Roman@0 SF(8)93.6
-684 Q/F6 8/Times-Roman@0 SF(Actually)3.2 I 2(,a)-.52 G .24 -.12(ny m)-2
-H(ailer that has the `).12 E 1.776 -.888(A' m)-.64 H(ailer \215ag set will permit aliasing; this is normally limited to the local mailer)
-.888 E(.)-.44 E F5(9)93.6 697.6 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
+624.6 Q(Essentially)5 E 2.5(,t)-.65 G(he entry)-2.5 E .32 LW 76 642 72
+642 DL 80 642 76 642 DL 84 642 80 642 DL 88 642 84 642 DL 92 642 88 642
+DL 96 642 92 642 DL 100 642 96 642 DL 104 642 100 642 DL 108 642 104 642
+DL 112 642 108 642 DL 116 642 112 642 DL 120 642 116 642 DL 124 642 120
+642 DL 128 642 124 642 DL 132 642 128 642 DL 136 642 132 642 DL 140 642
+136 642 DL 144 642 140 642 DL 148 642 144 642 DL 152 642 148 642 DL 156
+642 152 642 DL 160 642 156 642 DL 164 642 160 642 DL 168 642 164 642 DL
+172 642 168 642 DL 176 642 172 642 DL 180 642 176 642 DL 184 642 180 642
+DL 188 642 184 642 DL 192 642 188 642 DL 196 642 192 642 DL 200 642 196
+642 DL 204 642 200 642 DL 208 642 204 642 DL 212 642 208 642 DL 216 642
+212 642 DL/F4 5/Times-Roman@0 SF(8)93.6 652.4 Q/F5 8/Times-Roman@0 SF
+.107(HP-UX 10 has service switch support, b)3.2 J .108
+(ut since the APIs are apparently not a)-.16 F -.2(va)-.16 G .108
+(ilable in the libraries).2 F/F6 8/Times-Italic@0 SF(sendmail)2.108 E F5
+.108(does not use the)2.108 F(nati)72 665.2 Q .24 -.12(ve s)-.2 H
+(ervice switch in this release.).12 E F4(9)93.6 675.6 Q F5(Actually)3.2
+I 2(,a)-.52 G .24 -.12(ny m)-2 H(ailer that has the `).12 E 1.776 -.888
+(A' m)-.64 H(ailer \215ag set will permit aliasing; this is normally limited to the local mailer)
+.888 E(.)-.44 E F4(10)93.6 689.2 Q F5(The)3.2 I F6(gdbm)2 E F5
+(package does not w)2 E(ork.)-.08 E EP
%%Page: 17 13
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-17)195.86 E 2.5(2.6.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,)-4.79 F 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)-4.354 F(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)-5.332 E F0(a)5.332 E F1
-5.332(,w)C 2.831(hich is normally \214v)-5.332 F 5.331(em)-.15 G 2.831
-(inutes\) to reb)-5.331 F 2.831(uild the)-.2 F
-(database, there is a chance that se)117 241.2 Q -.15(ve)-.25 G
+(SMM:08-17)195.86 E/F1 10/Times-Roman@0 SF 2.5(OA)142 96 S
+(liasFile=switch:aliases)-2.5 E .926(is al)102 112.2 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 .269(\231nis:\232 on the front\) will be used as the name of the \214le for a `)
+102 124.2 R(`\214les')-.74 E 2.768('e)-.74 G .268
+(ntry in the aliases switch.)-2.768 F -.15(Fo)5.268 G(r).15 E -.15(ex)
+102 136.2 S(ample, if the con\214guration \214le contains).15 E 2.5(OA)
+142 152.4 S(liasFile=/etc/aliases)-2.5 E
+(and the service switch contains)102 168.6 Q 6.84(aliases nis)142 184.8
+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 201 R(database.)102 213 Q -1.1(Yo)127 229.2 S 2.5(uc)1.1 G
+(an also use)-2.5 E/F2 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:)-2.65 E 2.5(OA)142 245.4 S
+(liasFile=/etc/aliases)-2.5 E 2.5(OA)142 257.4 S
+(liasFile=nis:mail.aliases@my)-2.5 E(.nis.domain)-.65 E 1.725(will \214rst search the /etc/aliases \214le and then the map named \231mail.aliases\232 in \231my)
+102 273.6 R(.nis.domain\232.)-.65 E -.8(Wa)102 285.6 S .589
+(rning: if you b).8 F .589(uild your o)-.2 F(wn)-.25 E F2(NIS)3.089 E F1
+.589(-based alias \214les, be sure to pro)B .59(vide the)-.15 F F0<ad6c>
+3.09 E F1 .59(\215ag to)3.09 F/F3 10/Times-Italic@0 SF(mak)3.09 E(edbm)
+-.1 E F1(\(8\))A .159(to map upper case letters in the k)102 297.6 R
+-.15(ey)-.1 G 2.659(st).15 G 2.659(ol)-2.659 G -.25(ow)-2.659 G .159
+(er case; otherwise, aliases with upper case letters in their).25 F
+(names w)102 309.6 Q(on')-.1 E 2.5(tm)-.18 G(atch incoming addresses.)
+-2.5 E(Additional \215ags can be added after the colon e)127 325.8 Q
+(xactly lik)-.15 E 2.5(ea)-.1 G F0(K)A F1(line \212 for e)2.5 E(xample:)
+-.15 E 2.5(OA)142 342 S(liasFile=nis:\255N mail.aliases@my)-2.5 E
+(.nis.domain)-.65 E(will search the appropriate NIS map and al)102 358.2
+Q -.1(wa)-.1 G(ys include null bytes in the k).1 E -.15(ey)-.1 G 5(.A)
+-.5 G(lso:)-5 E 2.5(OA)142 374.4 S(liasFile=nis:\255f mail.aliases@my)
+-2.5 E(.nis.domain)-.65 E(will pre)102 390.6 Q -.15(ve)-.25 G
+(nt sendmail from do).15 E(wncasing the k)-.25 E .3 -.15(ey b)-.1 H
+(efore the alias lookup.).15 E F0 2.5(2.6.1. Reb)102 414.6 R
+(uilding the alias database)-.2 E F1(The)142 430.8 Q F3(hash)3.079 E F1
+(or)3.079 E F3(dbm)3.079 E F1 -.15(ve)3.079 G .579
+(rsion of the database may be reb).15 F .58(uilt e)-.2 F .58
+(xplicitly by e)-.15 F -.15(xe)-.15 G .58(cuting the com-).15 F(mand)117
+442.8 Q(ne)157 459 Q -.1(wa)-.25 G(liases).1 E(This is equi)117 475.2 Q
+-.25(va)-.25 G(lent to gi).25 E(ving)-.25 E F3(sendmail)2.5 E F1(the)2.5
+E F0(\255bi)2.5 E F1(\215ag:)2.5 E(/usr/sbin/sendmail \255bi)157 491.4 Q
+2.29(If the)142 511.8 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,)-4.79 F F3(sendmail)4.79 E
+F1(will)4.79 E(reb)117 523.8 Q .775(uild the alias database automatically if possible when it is out of date.)
+-.2 F(Auto-reb)5.775 E .775(uild can be)-.2 F 1.854(dangerous on hea)117
+535.8 R 1.854(vily loaded machines with lar)-.2 F 1.853
+(ge alias \214les; if it might tak)-.18 F 4.353(em)-.1 G 1.853
+(ore than the)-4.353 F(reb)117 547.8 Q 2.831(uild timeout \(option)-.2 F
+F0(AliasW)5.331 E(ait)-.65 E F1 5.331(,o)C(ld)-5.331 E F0(a)5.331 E F1
+5.331(,w)C 2.832(hich is normally \214v)-5.331 F 5.332(em)-.15 G 2.832
+(inutes\) to reb)-5.332 F 2.832(uild the)-.2 F
+(database, there is a chance that se)117 559.8 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
+E(.)-.65 E 1.77(If you ha)142 576 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
+(types it understands \(for e)117 588 Q(xample, it can reb)-.15 E
(uild NDBM databases b)-.2 E(ut not NIS databases\).)-.2 E F0 2.5
-(2.6.2. P)102 293.4 R(otential pr)-.2 E(oblems)-.18 E F1 1.131
+(2.6.2. P)102 612 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)-3.63 F 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)
--3.749 F(reb)117 345.6 Q .518(uilding it, or the process reb)-.2 F .518
+142 628.2 R(The)6.131 E 3.631(ya)-.15 G 1.131(ll result)-3.631 F 1.104
+(from a)117 640.2 R F3(sendmail)3.604 E F1 1.104
+(process accessing the DBM v)3.604 F 1.103
+(ersion while it is only partially b)-.15 F 3.603(uilt. This)-.2 F(can)
+3.603 E 1.248(happen under tw)117 652.2 R 3.748(oc)-.1 G 1.248(ircumstances: One process accesses the database while another process is)
+-3.748 F(reb)117 664.2 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.)-3.312 F .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(10)-4 I F1
-(.)4 I F0 2.5(2.6.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)-2.918 G(ecei)-2.918 E .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)-3.617 F
-(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:)-2.65 E
-(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 .689
-(uld cause \231eric@ucbarpa\232 to get the error that will occur when someone sends to unix-wiz-)
-.1 F(ards 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)-2.929 F 2.928(,o)-.4 G .428
-(therwise the name of the alias itself is used.)-2.928 F -.15(Fo)117 665
-S 3.454(rt).15 G .954(his reason, and to obe)-3.454 F 3.454(yI)-.15 G
-.954(nternet con)-3.454 F -.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 address; 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(10)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.)-4 E EP
+F(before completing the reb)117 676.2 Q(uild.)-.2 E .401
+(Sendmail has three techniques to try to relie)142 692.4 R .701 -.15
+(ve t)-.25 H .401(hese problems.).15 F .401
+(First, it ignores interrupts)5.401 F .045(while reb)117 704.4 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 .176(partially reb)117 716.4 R .176(uilt database.)-.2 F .177
+(Second, it locks the database source \214le during the reb)5.176 F .177
+(uild \212 b)-.2 F .177(ut that)-.2 F EP
%%Page: 18 14
%%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/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)-2.5 G(he return address.)-2.5 E F0 2.5(2.7. 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
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .813
+(may not w)117 96 R .813(ork o)-.1 F -.15(ve)-.15 G 3.313(rN).15 G .813
+(FS or if the \214le is unwritable.)-3.313 F .812
+(Third, at the end of the reb)5.812 F .812(uild it adds an)-.2 F
+(alias of the form)117 108 Q(@: @)157 124.2 Q .336
+(\(which is not normally le)117 140.4 R -.05(ga)-.15 G 2.836
+(l\). Before).05 F/F2 10/Times-Italic@0 SF(sendmail)2.836 E F1 .336
+(will access the database, it checks to insure that)2.836 F
+(this entry e)117 154.4 Q(xists)-.15 E/F3 7/Times-Roman@0 SF(11)-4 I F1
+(.)4 I F0 2.5(2.6.3. List)102 178.4 R -.1(ow)2.5 G(ners).1 E F1 .401
+(If an error occurs on sending to a certain address, say \231)142 194.6
+R F2(x)A F1<9a2c>A F2(sendmail)2.9 E F1 .4(will look for an alias)2.9 F
+.417(of the form \231o)117 206.6 R(wner)-.25 E(-)-.2 E F2(x)A F1 2.917
+<9a74>C 2.917(or)-2.917 G(ecei)-2.917 E .717 -.15(ve t)-.25 H .418
+(he errors.).15 F .418
+(This is typically useful for a mailing list where the)5.418 F 1.117
+(submitter of the list has no control o)117 218.6 R -.15(ve)-.15 G 3.617
+(rt).15 G 1.116
+(he maintenance of the list itself; in this case the list)-3.617 F
+(maintainer w)117 230.6 Q(ould be the o)-.1 E(wner of the list.)-.25 E
+-.15(Fo)5 G 2.5(re).15 G(xample:)-2.65 E
+(unix-wizards: eric@ucbarpa, wnj@monet, nosuchuser)157 246.8 Q(,)-.4 E
+(sam@matisse)193 258.8 Q -.25(ow)157 270.8 S(ner).25 E
+(-unix-wizards: unix-wizards-request)-.2 E
+(unix-wizards-request: eric@ucbarpa)157 282.8 Q -.1(wo)117 299 S .689(uld cause \231eric@ucbarpa\232 to get the error that will occur when someone sends to unix-wiz-)
+.1 F(ards due to the inclusion of \231nosuchuser\232 on the list.)117
+311 Q .959(List o)142 327.2 R .959(wners also cause the en)-.25 F -.15
+(ve)-.4 G .959(lope sender address to be modi\214ed.).15 F .958
+(The contents of the)5.958 F -.25(ow)117 339.2 S .428
+(ner alias are used if the).25 F 2.928(yp)-.15 G .428
+(oint to a single user)-2.928 F 2.928(,o)-.4 G .429
+(therwise the name of the alias itself is used.)-2.928 F -.15(Fo)117
+351.2 S 3.455(rt).15 G .955(his reason, and to obe)-3.455 F 3.454(yI)
+-.15 G .954(nternet con)-3.454 F -.15(ve)-.4 G .954(ntions, the \231o)
+.15 F(wner)-.25 E .954(-\232 address normally points at the)-.2 F .503(\231-request\232 address; this causes messages to go out with the typical Internet con)
+117 363.2 R -.15(ve)-.4 G .504(ntion of using).15 F -.74(``)117 375.2 S
+F2(list).74 E F1(-request')A 2.5('a)-.74 G 2.5(st)-2.5 G
+(he return address.)-2.5 E F0 2.5(2.7. User)87 399.2 R(Inf)2.5 E
+(ormation Database)-.25 E F1 1.06(If you ha)127 415.4 R 1.36 -.15
+(ve a ve)-.2 H 1.06(rsion of).15 F F2(sendmail)3.559 E F1 1.059
(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
+427.4 Q 2.205 -.15(ve s)-.2 H 1.905
+(peci\214ed one or more databases using the).15 F F0(U)4.406 E F1 1.906
+(option, the databases will be searched for a)4.406 F F2(user)102 439.4
Q F1(:maildrop entry)A 5(.I)-.65 G 2.5(ff)-5 G
(ound, the mail will be sent to the speci\214ed address.)-2.5 E F0 2.5
-(2.8. 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)-2.62 F 2.62(yu)-.15 G
-.121(ser may put a \214le with the name \231.forw)-2.62 F .121
-(ard\232 in his)-.1 F .205(or her home directory)102 212.4 R 5.205(.I)
+(2.8. P)87 463.4 R(er)-.2 E(-User F)-.37 E(orwarding \(.f)-.25 E
+(orward Files\))-.25 E F1 .121(As an alternati)127 479.6 R .421 -.15
+(ve t)-.25 H 2.621(ot).15 G .121(he alias database, an)-2.621 F 2.621
+(yu)-.15 G .12(ser may put a \214le with the name \231.forw)-2.621 F .12
+(ard\232 in his)-.1 F .205(or her home directory)102 491.6 R 5.205(.I)
-.65 G 2.705(ft)-5.205 G .205(his \214le e)-2.705 F(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
+(redirects mail for that user to the list of addresses)2.705 F .909
+(listed in the .forw)102 503.6 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)
--3.558 F(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
+-3.558 F(ard)-.1 E(\214le with contents:)102 515.6 Q(mckusick@ernie)142
+531.8 Q(kirk@calder)142 543.8 Q(then an)102 560 Q 2.5(ym)-.15 G
(ail arri)-2.5 E(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.)
--3.375 F .874(By def)5.874 F .874(ault, this is)-.1 F .687(the user')102
-309 R 3.187(s.)-.55 G(forw)-3.187 E .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)-2.893 F .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.9. Special)87 357 R
-(Header Lines)2.5 E F1(Se)127 373.2 Q -.15(ve)-.25 G 1.897
+-.25 E(Actually)127 576.2 Q 3.374(,t)-.65 G .874(he con\214guration \214le de\214nes a sequence of \214lenames to check.)
+-3.374 F .875(By def)5.875 F .875(ault, this is)-.1 F .517(the user')102
+588.2 R 3.017(s.)-.55 G(forw)-3.017 E .517(ard \214le, b)-.1 F .517
+(ut can be de\214ned to be more generally using the)-.2 F F0 -.25(Fo)
+3.017 G(rwardP).25 E(ath)-.1 E F1 3.016(option. If)3.016 F .182
+(you change this, you will ha)102 600.2 R .482 -.15(ve t)-.2 H 2.682(oi)
+.15 G .182(nform your user base of the change; .forw)-2.682 F .183
+(ard is pretty well incor)-.1 F(-)-.2 E(porated into the collecti)102
+612.2 Q .3 -.15(ve s)-.25 H(ubconscious.).15 E F0 2.5(2.9. Special)87
+636.2 R(Header Lines)2.5 E F1(Se)127 652.4 Q -.15(ve)-.25 G 1.898
(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.9.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)-2.884 F .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)
--3.39 E .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)-3.309 G .809
-(nly used if the)-3.309 F 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)-2.5 G(uture release.)-2.5 E F0 2.5(2.9.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)-2.58 F -.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.)
--2.5 E(The Apparently-T)142 622.2 Q
-(o: header is non-standard and is deprecated.)-.8 E F0 2.5(2.9.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)-5.425 G .425(weaks the)-2.925 F(sort order in the queue and can be con\214gured to change the message timeout v)
-117 674.4 Q(alues.)-.25 E EP
+(Others)6.897 E(ha)102 664.4 Q 1.205 -.15(ve i)-.2 H .905
+(nterpretations b).15 F .905(uilt into)-.2 F F2(sendmail)3.405 E F1 .906
+(that cannot be changed without changing the code.)3.405 F(These)5.906 E
+-.2(bu)102 676.4 S(iltins are described here.).2 E .32 LW 76 686 72 686
+DL 80 686 76 686 DL 84 686 80 686 DL 88 686 84 686 DL 92 686 88 686 DL
+96 686 92 686 DL 100 686 96 686 DL 104 686 100 686 DL 108 686 104 686 DL
+112 686 108 686 DL 116 686 112 686 DL 120 686 116 686 DL 124 686 120 686
+DL 128 686 124 686 DL 132 686 128 686 DL 136 686 132 686 DL 140 686 136
+686 DL 144 686 140 686 DL 148 686 144 686 DL 152 686 148 686 DL 156 686
+152 686 DL 160 686 156 686 DL 164 686 160 686 DL 168 686 164 686 DL 172
+686 168 686 DL 176 686 172 686 DL 180 686 176 686 DL 184 686 180 686 DL
+188 686 184 686 DL 192 686 188 686 DL 196 686 192 686 DL 200 686 196 686
+DL 204 686 200 686 DL 208 686 204 686 DL 212 686 208 686 DL 216 686 212
+686 DL/F4 5/Times-Roman@0 SF(11)93.6 696.4 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.)-4 E EP
%%Page: 19 15
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-19)195.86 E 2.5(2.10. 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
+(SMM:08-19)195.86 E 2.5(2.9.1. Err)102 96 R(ors-T)-.18 E(o:)-.92 E/F1 10
+/Times-Roman@0 SF .22(If errors occur an)142 112.2 R .22(ywhere during processing, this header will cause error messages to go to)
+-.15 F(the listed addresses.)117 124.2 Q
+(This is intended for mailing lists.)5 E .384(The Errors-T)142 140.4 R
+.384(o: header w)-.8 F .384
+(as created in the bad old days when UUCP didn')-.1 F 2.885(tu)-.18 G
+.385(nderstand the)-2.885 F .89(distinction between an en)117 152.4 R
+-.15(ve)-.4 G .89(lope and a header; this w).15 F .889(as a hack to pro)
+-.1 F .889(vide what should no)-.15 F 3.389(wb)-.25 G(e)-3.389 E .809
+(passed as the en)117 164.4 R -.15(ve)-.4 G .809(lope sender address.)
+.15 F .809(It should go a)5.809 F -.1(wa)-.15 G 4.609 -.65(y. I).1 H
+3.31(ti).65 G 3.31(so)-3.31 G .81(nly used if the)-3.31 F F0(UseErr)3.31
+E(orsT)-.18 E(o)-.92 E F1(option is set.)117 176.4 Q(The Errors-T)142
+192.6 Q(o: header is of)-.8 E(\214cially deprecated and will go a)-.25 E
+-.1(wa)-.15 G 2.5(yi).1 G 2.5(naf)-2.5 G(uture release.)-2.5 E F0 2.5
+(2.9.2. A)102 216.6 R(ppar)-.25 E(ently-T)-.18 E(o:)-.92 E F1 .045
+(RFC 822 requires at least one recipient \214eld \(T)142 232.8 R .045
+(o:, Cc:, or Bcc: line\) in e)-.8 F -.15(ve)-.25 G .044(ry message.).15
+F .044(If a)5.044 F .562
+(message comes in with no recipients listed in the message then)117
+244.8 R/F2 10/Times-Italic@0 SF(sendmail)3.062 E F1 .562
+(will adjust the header)3.062 F .085
+(based on the \231NoRecipientAction\232 option.)117 256.8 R .085
+(One of the possible actions is to add an \231)5.085 F(Apparently-)-.8 E
+-.8(To)117 268.8 S(:\232 header line for an).8 E 2.5(yr)-.15 G
+(ecipients it is a)-2.5 E -.1(wa)-.15 G(re of.).1 E(The Apparently-T)142
+285 Q(o: header is non-standard and is deprecated.)-.8 E F0 2.5
+(2.9.3. Pr)102 309 R(ecedence)-.18 E F1 .425(The Precedence: header can be used as a crude control of message priority)
+142 325.2 R 5.425(.I)-.65 G 2.925(tt)-5.425 G .425(weaks the)-2.925 F(sort order in the queue and can be con\214gured to change the message timeout v)
+117 337.2 Q(alues.)-.25 E F0 2.5(2.10. IDENT)87 361.2 R(Pr)2.5 E
+(otocol Support)-.18 E F2(Sendmail)127 377.4 Q F1 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)-2.79 G .29
-(he originating system to)-2.79 F .469(include the o)102 136.2 R .469(wner of a particular TCP connection in the audit trail it is in no sense perfect; a deter)
--.25 F(-)-.2 E 1.293(mined for)102 148.2 R 1.294
+389.4 R .29(`call back')-.74 F 2.79('t)-.74 G 2.79(ot)-2.79 G .29
+(he originating system to)-2.79 F .469(include the o)102 401.4 R .469(wner of a particular TCP connection in the audit trail it is in no sense perfect; a deter)
+-.25 F(-)-.2 E 1.293(mined for)102 413.4 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
+102 425.4 Q 2.5(6. Security)127 441.6 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)-2.505 G .005(he host pro)
--2.505 F .005(viding it OR)-.15 F .273(the or)127 204.6 R -.05(ga)-.18 G
+457.8 R(orth)-.1 E 2.505(ya)-.05 G 2.505(st)-2.505 G .005(he host pro)
+-2.505 F .005(viding it OR)-.15 F .273(the or)127 469.8 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)-2.923 F 2.774(wi)-.25 G 2.774
(fa)-2.774 G .574 -.15(ny c)-2.774 H(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
+481.8 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)-3.486 F 3.486(ants. Lik)-.1 F(e-)-.1 E 1.441(wise, if the host has been compromised the information returned may be completely erro-)
-127 228.6 R(neous and misleading.)127 240.6 Q .521(The Identi\214cation 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
+127 493.8 R(neous and misleading.)127 505.8 Q .521(The Identi\214cation Protocol is not intended as an authorization or access control protocol.)
+127 522 R(At)5.52 E 1.036(best, it pro)127 534 R 1.037(vides some additional auditing information with respect to TCP connections.)
+-.15 F(At)6.037 E -.1(wo)127 546 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)-2.697 F 2.697(ea)-.1
-G .197(ccess control deci-)-2.697 F .514(sions - either as the 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
+127 562.2 R 2.697(couraged. Speci\214cally)127 574.2 R 2.697(,u)-.65 G
+.197(sing Identi\214cation Protocol information to mak)-2.697 F 2.697
+(ea)-.1 G .197(ccess control deci-)-2.697 F .514(sions - either as the primary method \(i.e., no other checks\) or as an adjunct to other methods)
+127 586.2 R(may result in a weak)127 598.2 Q
+(ening of normal host security)-.1 E(.)-.65 E 1.778
+(An Identi\214cation serv)127 614.4 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 626.4 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 638.4 R .806
(vided by some phone companies and man)-.15 F 3.306(yo)-.15 G(f)-3.306 E
-1.398(the same pri)127 385.2 R -.25(va)-.25 G 1.698 -.15(cy c).25 H
+1.398(the same pri)127 650.4 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
+(Identi\214cation. If)127 662.4 R 1.045(you w)3.545 F(ouldn')-.1 E 3.545
(tr)-.18 G 1.045(un a "\214nger" serv)-3.545 F 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
+(not w)127 674.4 Q(ant to run this protocol.)-.1 E .377
+(In some cases your system may not w)102 690.6 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)
+-.2 F 3.675(implementation. The)102 702.6 R 1.175(symptoms will be that for some hosts the SMTP connection will be closed)
+3.675 F .566(almost immediately)102 714.6 R 5.566(.I)-.65 G 3.066(ft)
-5.566 G .565(his is true or if you do not w)-3.066 F .565
(ant to use IDENT)-.1 F 3.065(,y)-.74 G .565(ou should set the IDENT)
--3.065 F(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
+-3.065 F EP
+%%Page: 20 16
+%%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
+(timeout to zero; this will disable the IDENT protocol.)102 96 Q F0 2.5
+(3. ARGUMENTS)72 120 R F1 .017(The complete list of ar)112 136.2 R .017
+(guments to)-.18 F/F2 10/Times-Italic@0 SF(sendmail)2.517 E F1 .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
+F(ar)87 148.2 Q(guments are described here.)-.18 E F0 2.5(3.1. Queue)87
+172.2 R(Inter)2.5 E -.1(va)-.1 G(l).1 E F1 .455(The amount of time between forking a process to run through the queue is de\214ned by the)
+127 188.4 R F0<ad71>2.955 E F1 2.675(\215ag. If)102 200.4 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
+(i)2.675 E F1(or)2.675 E F0(b)2.675 E F1 .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)
+-.18 F -.25(eva)102 212.4 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
+2.706 E F1 .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 amount 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
+102 224.4 R 1.039(\(See also the)6.039 F(MinQueueAge option.\))102 236.4
+Q 1.336(RFC 1123 section 5.3.1.1 says that this v)127 252.6 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)-2.5 E 2.5(es)-.1 G
+(probably doesn')102 264.6 Q 2.5(tm)-.18 G(ak)-2.5 E 2.5(es)-.1 G
(ense if you use `)-2.5 E(`queue-only')-.74 E 2.5('m)-.74 G(ode\).)-2.5
-E 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)-2.584 F -.15(ve)-.15 G 2.585(ra).15
-G 2.585(nI)-2.585 G .085(PC connection, you should ha)-2.585 F .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: 20 16
-%%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 .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
+E F0 2.5(3.2. Daemon)87 288.6 R(Mode)2.5 E F1 .084(If you allo)127 304.8
+R 2.584(wi)-.25 G .084(ncoming mail o)-2.584 F -.15(ve)-.15 G 2.585(ra)
+.15 G 2.585(nI)-2.585 G .085(PC connection, you should ha)-2.585 F .385
+-.15(ve a d)-.2 H .085(aemon running.).15 F(This)5.085 E .07
+(should be set by your)102 316.8 R F2(/etc/r)2.57 E(c)-.37 E F1 .07
+(\214le using the)2.57 F F0(\255bd)2.57 E F1 2.569(\215ag. The)2.57 F F0
+(\255bd)2.569 E F1 .069(\215ag and the)2.569 F F0<ad71>2.569 E F1 .069
+(\215ag may be combined)2.569 F(in one call:)102 328.8 Q
+(/usr/sbin/sendmail \255bd \255q30m)142 345 Q .292(An alternati)127
+365.4 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(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 377.4
+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 389.4 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
+-.25(ev e)102 401.4 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)-2.54 F 3.185(aq)
-102 216.6 S .685(ueue run using the)-3.185 F F0<ad71>3.184 E F1 .684
+(sendmail)3.206 E F1 .555(running to \215ush the)3.055 F(queue:)102
+413.4 Q(/usr/sbin/sendmail \255q30m)142 429.6 Q F0 2.5(3.3. F)87 457.8 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 474 R -1.1(Yo)5.04 G 2.54(uc)1.1 G .04(an force)-2.54 F 3.185(aq)102
+486 S .685(ueue run using the)-3.185 F 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
+3.184 F .684(erbose\) when)-.15 F(this is done to w)102 498 Q
+(atch what happens:)-.1 E(/usr/sbin/sendmail \255q \255v)142 514.2 Q
+-1.1(Yo)127 534.6 S 4.004(uc)1.1 G 1.504
(an also limit the jobs to those with a particular queue identi\214er)
-4.004 F 4.004(,s)-.4 G(ender)-4.004 E 4.004(,o)-.4 G 4.004(rr)-4.004 G
-(ecipient)-4.004 E .687(using one of the queue modi\214ers.)102 277.2 R
+(ecipient)-4.004 E .687(using one of the queue modi\214ers.)102 546.6 R
-.15(Fo)5.687 G 3.187(re).15 G .687(xample, \231\255qRberk)-3.337 F(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
+558.6 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-)
-2.726 F(its the run to particular senders and \231\255qIstring\232 limits it to particular 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)
+102 570.6 Q F0 2.5(3.4. Deb)87 594.6 R(ugging)-.2 E F1 1.365
+(There are a f)127 610.8 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)-6.365 F 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
+(number and a le)102 622.8 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
+102 634.8 R -.15(ve)-.25 G .294(ls greater than nine are \231absurd,).15
F 2.794<9a69>-.7 G .294(.e., the)-2.794 F 2.794(yp)-.15 G .293
(rint out so much information that you w)-2.794 F(ouldn')-.1 E(t)-.18 E
-.691(normally w)102 377.4 R .692(ant to see them e)-.1 F .692
+.691(normally w)102 646.8 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>12.78 E F1(deb)2.5 E(ug-list)-.2 E(deb)142 417.6 Q 13.05
+(Deb)5.692 E .692(ug \215ags are set)-.2 F(using the)102 658.8 Q F0
+<ad64>2.5 E F1(option; the syntax is:)2.5 E EP
+%%Page: 21 17
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-21)195.86 E/F1 10/Times-Roman@0 SF(deb)142 96 Q(ug-\215ag:)-.2 E
+F0<ad64>12.78 E F1(deb)2.5 E(ug-list)-.2 E(deb)142 108 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)
--5.15 E(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
+120 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 132 Q 3.07(ug-range: inte)-.2 F
+(ger | inte)-.15 E(ger \255 inte)-.15 E(ger)-.15 E(deb)142 144 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 160.2 Q 5(.F)-.65 G(or e)
+-5.15 E(xample,)-.15 E 34.99(\255d12 Set)142 176.4 R(\215ag 12 to le)2.5
+E -.15(ve)-.25 G 2.5(l1).15 G 27.49(\255d12.3 Set)142 188.4 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
+(\255d3\25517 Set)142 200.4 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 212.4 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)-4.066 F -.25
+102 228.6 S 4.066(rac).15 G 1.566(omplete list of the a)-4.066 F -.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)-4.065
-F 4.065(ya)-.15 G 1.565(re too)-4.065 F(dynamic to k)102 550.2 Q
+F 4.065(ya)-.15 G 1.565(re too)-4.065 F(dynamic to k)102 240.6 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
+264.6 R(the V)2.5 E(alues of Options)-.92 E F1(Options can be o)127
+280.8 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,)-2.65 E(/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)-2.52 F -.25(va)-.25 G
-.021(lent line using the long option).25 F(name is)102 634.8 Q
-(/usr/sbin/sendmail -O)142 651 Q -.35(Ti)-.4 G(meout.queuereturn=2m).35
-E .72(Some options ha)127 671.4 R 1.02 -.15(ve s)-.2 H .72
+(xample,)-2.65 E(/usr/sbin/sendmail \255oT2m)142 297 Q .02(sets the)102
+313.2 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)-2.52 F -.25(va)-.25 G .021
+(lent line using the long option).25 F(name is)102 325.2 Q
+(/usr/sbin/sendmail -O)142 341.4 Q -.35(Ti)-.4 G(meout.queuereturn=2m)
+.35 E .72(Some options ha)127 361.8 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: 21 17
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-21)195.86 E/F1 10/Times-Roman@0 SF
-(its setuid root permissions thereafter)102 98 Q/F2 7/Times-Roman@0 SF
-(11)-4 I F1(.)4 I 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
+(ws you to set these, b)-.25 F .72(ut relinquishes)-.2 F
+(its setuid root permissions thereafter)102 375.8 Q/F2 7/Times-Roman@0
+SF(12)-4 I F1(.)4 I F0 2.5(3.6. T)87 399.8 R(rying a Differ)-.74 E
+(ent Con\214guration File)-.18 E F1(An alternati)127 416 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 432.2 Q .429
+(uses the con\214guration \214le)102 448.4 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
+E F1 .428(\215ag has no v)2.928 F(alue)-.25 E(it def)102 460.4 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)
+(.)-.65 E F3(Sendmail)127 476.6 Q F1(gi)2.679 E -.15(ve)-.25 G 2.679(su)
.15 G 2.679(pi)-2.679 G .18(ts setuid root permissions when you use this \215ag, so it is common to use a)
-2.679 F .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
+102 488.6 R(testing.)102 500.6 Q F0 2.5(3.7. Logging)87 524.6 R -.74(Tr)
+2.5 G(af\214c).74 E F1(Man)127 540.8 Q 3.254(yS)-.15 G .754
(MTP implementations do not fully implement the protocol.)-3.254 F -.15
(Fo)5.754 G 3.254(re).15 G .755(xample, some per)-3.404 F(-)-.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
+102 552.8 R 1.177(These can be)6.178 F -.15(ve)102 564.8 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
+(or)-.15 E -.15(ex)102 576.8 S(ample,).15 E
+(/usr/sbin/sendmail \255X /tmp/traf)142 593 Q(\214c \255bd)-.25 E
+(will log all traf)102 609.2 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 625.4
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 starting 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)
+102 637.4 R .609(All message traf)102 649.4 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)-3.109 F .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 \231test)
--.2 F(mode\232 of)102 435.8 Q F3(sendmail)2.5 E F1 5(.F)C(or e)-5.15 E
-(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 rules to an input.)
--3.331 F -.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)-5.622
-F(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\255d21\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(11)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)-2.497 F
-(startup the root permissions will still be honored.)72 702 Q EP
+-.25 F(this \214le.)102 661.4 Q .32 LW 76 671 72 671 DL 80 671 76 671 DL
+84 671 80 671 DL 88 671 84 671 DL 92 671 88 671 DL 96 671 92 671 DL 100
+671 96 671 DL 104 671 100 671 DL 108 671 104 671 DL 112 671 108 671 DL
+116 671 112 671 DL 120 671 116 671 DL 124 671 120 671 DL 128 671 124 671
+DL 132 671 128 671 DL 136 671 132 671 DL 140 671 136 671 DL 144 671 140
+671 DL 148 671 144 671 DL 152 671 148 671 DL 156 671 152 671 DL 160 671
+156 671 DL 164 671 160 671 DL 168 671 164 671 DL 172 671 168 671 DL 176
+671 172 671 DL 180 671 176 671 DL 184 671 180 671 DL 188 671 184 671 DL
+192 671 188 671 DL 196 671 192 671 DL 200 671 196 671 DL 204 671 200 671
+DL 208 671 204 671 DL 212 671 208 671 DL 216 671 212 671 DL/F4 5
+/Times-Roman@0 SF(12)93.6 681.4 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)-2.497 F
+(startup the root permissions will still be honored.)72 694.2 Q EP
%%Page: 22 18
%%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 -1.1(Yo)
-127 96 S 2.574(us)1.1 G .074(hould be w)-2.574 F .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)-2.5 G(hat manually)-2.5 E 5(.F)-.65 G(or e)-5.15 E
-(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)-2.5 E -.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)-5 G .328
+(Installation and Operation Guide)2.5 E 2.5(3.8. T)87 96 R
+(esting Con\214guration Files)-.92 E/F1 10/Times-Roman@0 SF .643
+(When you b)127 112.2 R .644(uild a con\214guration table, you can do a certain amount of testing using the \231test)
+-.2 F(mode\232 of)102 124.2 Q/F2 10/Times-Italic@0 SF(sendmail)2.5 E F1
+5(.F)C(or e)-5.15 E(xample, you could in)-.15 E -.2(vo)-.4 G -.1(ke).2 G
+F2(sendmail)2.6 E F1(as:)2.5 E(sendmail \255bt \255Ctest.cf)142 140.4 Q
+.448(which w)102 156.6 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 168.6
+Q(rwset address)142 184.8 Q(where)102 201 Q F2(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 F2(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 213 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 225
+S 3.331(um)1.1 G .832(ay use a comma separated list of rwsets for sequential application of rules to an input.)
+-3.331 F -.15(Fo)5.832 G(r).15 E -.15(ex)102 237 S(ample:).15 E
+(3,1,21,4 monet:bollard)142 253.2 Q .622
+(\214rst applies ruleset three to the input \231monet:bollard.)102 269.4
+R 5.622<9a52>-.7 G .622(uleset one is then applied to the output of)
+-5.622 F(ruleset three, follo)102 281.4 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\255d21\232 \215ag to turn on more deb)
+127 297.6 R 3.585(ugging. F)-.2 F(or)-.15 E -.15(ex)102 309.6 S(ample,)
+.15 E(sendmail \255bt \255d21.99)142 325.8 Q .689
+(turns on an incredible amount of information; a single w)102 342 R .688
+(ord address is probably going to print out)-.1 F(se)102 354 Q -.15(ve)
+-.25 G(ral pages w).15 E(orth of information.)-.1 E -1.1(Yo)127 370.2 S
+2.574(us)1.1 G .074(hould be w)-2.574 F .074(arned that internally)-.1 F
+(,)-.65 E F2(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 382.2 Q .3 -.15(ve t)-.2 H 2.5(od).15 G 2.5(ot)-2.5 G
+(hat manually)-2.5 E 5(.F)-.65 G(or e)-5.15 E(xample, older v)-.15 E
+(ersions allo)-.15 E(wed you to use)-.25 E 2.5(0b)142 398.4 S
+(ruce@broadcast.son)-2.5 E -.65(y.)-.15 G(com).65 E(This v)102 414.6 Q
+(ersion requires that you use:)-.15 E(3,0 bruce@broadcast.son)142 430.8
+Q -.65(y.)-.15 G(com).65 E(As of v)127 451.2 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 467.4 S 1.666(Dxv)-5 G .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)-5.328 F .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)-5 G(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)-5 G
+(use the)115.5 479.4 Q F0($&)2.5 E F2(x)A F1(syntax.)2.5 E 5<832e>107
+491.4 S 1.666(Ccv)-5 G(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 503.4 S 1.666(Sr)-5 G
(uleset dumps the contents of the indicated ruleset.)-1.666 E 5<83ad>107
-241.2 S 1.666(dd)-5 G(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(3.9. P)87 265.2 R
-(ersistent Host Status Inf)-.2 E(ormation)-.25 E F1(When)127 281.4 Q F0
+515.4 S 1.666(dd)-5 G(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(3.9. P)87 539.4 R
+(ersistent Host Status Inf)-.2 E(ormation)-.25 E F1(When)127 555.6 Q F0
(HostStatusDir)2.569 E(ectory)-.18 E F1 .069
(is enabled, information about the status of hosts is maintained on)
-2.569 F .249(disk and can thus be shared between dif)102 293.4 R .249
+2.569 F .249(disk and can thus be shared between dif)102 567.6 R .249
(ferent instantiations of)-.25 F F2(sendmail)2.749 E F1 5.249(.T)C .248
(he status of the last con-)-5.249 F
-(nection with each remote host may be vie)102 305.4 Q
-(wed with the command:)-.25 E(sendmail \255bh)142 321.6 Q
-(This information may be \215ushed with the command:)102 337.8 Q
-(sendmail \255bH)142 354 Q 1.534(Flushing the information pre)102 370.2
-R -.15(ve)-.25 G 1.534(nts ne).15 F(w)-.25 E F2(sendmail)4.034 E F1
-1.535(processes from loading it, b)4.035 F 1.535(ut does not pre)-.2 F
--.15(ve)-.25 G(nt).15 E -.15(ex)102 382.2 S
+(nection with each remote host may be vie)102 579.6 Q
+(wed with the command:)-.25 E(sendmail \255bh)142 595.8 Q
+(This information may be \215ushed with the command:)102 612 Q
+(sendmail \255bH)142 628.2 Q 1.534(Flushing the information pre)102
+644.4 R -.15(ve)-.25 G 1.534(nts ne).15 F(w)-.25 E F2(sendmail)4.034 E
+F1 1.535(processes from loading it, b)4.035 F 1.535(ut does not pre)-.2
+F -.15(ve)-.25 G(nt).15 E -.15(ex)102 656.4 S
(isting processes from using the status information that the).15 E 2.5
(ya)-.15 G(lready ha)-2.5 E -.15(ve)-.2 G(.).15 E F0 2.5(4. TUNING)72
-406.2 R F1 1.922
-(There are a number of con\214guration parameters you may w)112 422.4 R
+680.4 R F1 1.922
+(There are a number of con\214guration parameters you may w)112 696.6 R
1.922(ant to change, depending on the)-.1 F .366
-(requirements of your site.)87 434.4 R .367
+(requirements of your site.)87 708.6 R .367
(Most of these are set using an option in the con\214guration \214le.)
5.366 F -.15(Fo)5.367 G 2.867(re).15 G(xample,)-3.017 E
-(the line \231O T)87 446.4 Q
+(the line \231O T)87 720.6 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\).)-2.5 E .735(Most of these options ha)112 462.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
-.045(mail loads may \214nd the)87 474.6 R 2.545(yn)-.15 G .046
+2.5(ed)-.15 G(ays\).)-2.5 E EP
+%%Page: 23 19
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-23)195.86 E/F1 10/Times-Roman@0 SF .735
+(Most of these options ha)112 96 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 .045(mail loads may \214nd the)87 108
+R 2.545(yn)-.15 G .046
(eed to tune them as appropriate for their mail load.)-2.545 F .046
(In particular)5.046 F 2.546(,s)-.4 G .046(ites e)-2.546 F(xperi-)-.15 E
-1.088(encing a lar)87 486.6 R 1.088(ge number of small messages, man)
--.18 F 3.588(yo)-.15 G 3.587(fw)-3.588 G 1.087(hich are deli)-3.587 F
--.15(ve)-.25 G 1.087(red to man).15 F 3.587(yr)-.15 G 1.087
-(ecipients, may \214nd)-3.587 F(that the)87 498.6 Q 2.5(yn)-.15 G
+1.088(encing a lar)87 120 R 1.088(ge number of small messages, man)-.18
+F 3.588(yo)-.15 G 3.587(fw)-3.588 G 1.087(hich are deli)-3.587 F -.15
+(ve)-.25 G 1.087(red to man).15 F 3.587(yr)-.15 G 1.087
+(ecipients, may \214nd)-3.587 F(that the)87 132 Q 2.5(yn)-.15 G
(eed to adjust the parameters dealing with queue priorities.)-2.5 E .523
-(All v)112 514.8 R .523(ersions of)-.15 F F2(sendmail)3.023 E F1 .524
+(All v)112 148.2 R .523(ersions of)-.15 F/F2 10/Times-Italic@0 SF
+(sendmail)3.023 E F1 .524
(prior to 8.7 had single character option names.)3.023 F .524
(As of 8.7, options ha)5.524 F -.15(ve)-.2 G 1.216
-(long \(multi-character names\).)87 526.8 R 1.216
+(long \(multi-character names\).)87 160.2 R 1.216
(Although old short names are still accepted, most ne)6.216 F 3.715(wo)
--.25 G 1.215(ptions do not)-3.715 F(ha)87 538.8 Q .3 -.15(ve s)-.2 H
+-.25 G 1.215(ptions do not)-3.715 F(ha)87 172.2 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 555 R .802
-(ely to w)-.1 F .802(ant to tweak; read section 5 for)-.1 F
-(more details.)87 567 Q F0 2.5(4.1. T)87 591 R(imeouts)-.18 E F1 .583
-(All time interv)127 607.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,)-3.233 F
-(whereas \2312h30m\232 represents tw)102 619.2 Q 2.5(oa)-.1 G
+(This section only describes the options you are most lik)112 188.4 R
+.802(ely to w)-.1 F .802(ant to tweak; read section 5 for)-.1 F
+(more details.)87 200.4 Q F0 2.5(4.1. T)87 224.4 R(imeouts)-.18 E F1
+.583(All time interv)127 240.6 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,)-3.233 F
+(whereas \2312h30m\232 represents tw)102 252.6 Q 2.5(oa)-.1 G
(nd a half hours.)-2.5 E(The full set of scales is:)5 E 16.11(ss)142
-635.4 S(econds)-16.11 E 12.22(mm)142 647.4 S(inutes)-12.22 E 15(hh)142
-659.4 S(ours)-15 E 15(dd)142 671.4 S(ays)-15 E 12.78(ww)142 683.4 S
-(eeks)-12.78 E EP
-%%Page: 23 19
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-23)195.86 E 2.5(4.1.1. Queue)102 96 R(inter)2.5 E -.1(va)-.1 G
-(l).1 E/F1 10/Times-Roman@0 SF .18(The ar)142 112.2 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.)-2.68 F .18(This is)5.18 F
-.968(typically set to between \214fteen minutes and one hour)117 124.2 R
+268.8 S(econds)-16.11 E 12.22(mm)142 280.8 S(inutes)-12.22 E 15(hh)142
+292.8 S(ours)-15 E 15(dd)142 304.8 S(ays)-15 E 12.78(ww)142 316.8 S
+(eeks)-12.78 E F0 2.5(4.1.1. Queue)102 345 R(inter)2.5 E -.1(va)-.1 G(l)
+.1 E F1 .18(The ar)142 361.2 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.)-2.68 F .18(This is)5.18 F .968
+(typically set to between \214fteen minutes and one hour)117 373.2 R
5.968(.R)-.55 G .967(FC 1123 section 5.3.1.1 recommends)-5.968 F
-(that this be at least 30 minutes.)117 136.2 Q F0 2.5(4.1.2. Read)102
-160.2 R(timeouts)2.5 E F1 -.35(Ti)142 176.4 S 1.052(meouts all ha).35 F
-1.352 -.15(ve o)-.2 H 1.052(ption names \231T).15 F(imeout.)-.35 E/F2 10
-/Times-Italic@0 SF(suboption)A F1 3.552(\232. The)B(recognized)3.552 E
-F2(suboption)3.553 E F1 1.053(s, their)B(def)117 188.4 Q(ault v)-.1 E
+(that this be at least 30 minutes.)117 385.2 Q F0 2.5(4.1.2. Read)102
+409.2 R(timeouts)2.5 E F1 -.35(Ti)142 425.4 S 1.052(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.553
+E F1 1.053(s, their)B(def)117 437.4 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 204.6 R
+(wed by RFC 1123 section 5.3.2 are:)-.25 E 38.4(connect The)117 453.6 R
.161(time to w)2.661 F .161(ait for an SMTP connection to open \(the)-.1
F F2(connect)2.66 E F1 .16(\(2\) system call\))B 1.153
-([0, unspeci\214ed].)189 216.6 R 1.153(If zero, uses the k)6.153 F 1.153
+([0, unspeci\214ed].)189 465.6 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 228.6 S .519(tend the timeout longer than the k).15
+3.653 F -.15(ex)189 477.6 S .519(tend the timeout longer than the k).15
F .518(ernel pro)-.1 F .518(vides, b)-.15 F .518(ut it can shorten it.)
--.2 F(This)5.518 E .579(is to get around k)189 240.6 R .579
+-.2 F(This)5.518 E .579(is to get around k)189 489.6 R .579
(ernels that pro)-.1 F .579
(vide an absurdly long connection timeout \(90)-.15 F
-(minutes in one case\).)189 252.6 Q 35.62(iconnect The)117 268.8 R .311
+(minutes in one case\).)189 501.6 Q 35.62(iconnect The)117 517.8 R .311
(same as)2.811 F F2(connect,)2.811 E F1 -.15(ex)2.811 G .311
(cept it applies only to the initial attempt to connect to).15 F 2.75
-(ah)189 280.8 S .25(ost for a gi)-2.75 F -.15(ve)-.25 G 2.75(nm).15 G
+(ah)189 529.8 S .25(ost for a gi)-2.75 F -.15(ve)-.25 G 2.75(nm).15 G
.25(essage [0, unspeci\214ed].)-2.75 F .25
-(The concept is that this should be)5.25 F -.15(ve)189 292.8 S .767
+(The concept is that this should be)5.25 F -.15(ve)189 541.8 S .767
(ry short \(a fe).15 F 3.267(ws)-.25 G .767
(econds\); hosts that are well connected and responsi)-3.267 F 1.066
--.15(ve w)-.25 H(ill).15 E .026(thus be serviced immediately)189 304.8 R
+-.15(ve w)-.25 H(ill).15 E .026(thus be serviced immediately)189 553.8 R
5.026(.H)-.65 G .026(osts that are slo)-5.026 F 2.526(ww)-.25 G .026
(ill not hold up other deli)-2.526 F(v-)-.25 E
-(eries in the initial deli)189 316.8 Q -.15(ve)-.25 G(ry attempt.).15 E
-46.16(initial The)117 333 R -.1(wa)2.5 G
+(eries in the initial deli)189 565.8 Q -.15(ve)-.25 G(ry attempt.).15 E
+46.16(initial The)117 582 R -.1(wa)2.5 G
(it for the initial 220 greeting message [5m, 5m].).1 E 52.28(helo The)
-117 349.2 R -.1(wa)4.227 G 1.727
+117 598.2 R -.1(wa)4.227 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 361.2 R 2.6(em)-.15 G
-.1(inutes is probably a reasonable)-2.6 F(minimum.)189 373.2 Q 46.72
-(mail\207 The)117 389.4 R -.1(wa)2.5 G
+(This may require a host name lookup, so \214v)189 610.2 R 2.6(em)-.15 G
+.1(inutes is probably a reasonable)-2.6 F(minimum.)189 622.2 Q 46.72
+(mail\207 The)117 638.4 R -.1(wa)2.5 G
(it for a reply from a MAIL command [10m, 5m].).1 E 48.95(rcpt\207 The)
-117 405.6 R -.1(wa)3.482 G .982
+117 654.6 R -.1(wa)3.482 G .982
(it for a reply from a RCPT command [1h, 5m].).1 F .981
(This should be long)5.981 F 1.556
-(because it could be pointing at a list that tak)189 417.6 R 1.556
-(es a long time to e)-.1 F 1.556(xpand \(see)-.15 F(belo)189 429.6 Q
-(w\).)-.25 E 34.5(datainit\207 The)117 445.8 R -.1(wa)2.5 G
+(because it could be pointing at a list that tak)189 666.6 R 1.556
+(es a long time to e)-.1 F 1.556(xpand \(see)-.15 F(belo)189 678.6 Q
+(w\).)-.25 E 34.5(datainit\207 The)117 694.8 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 462 R -.1(wa)2.696 G .196
+3.61 E 25.62(datablock\207 The)117 711 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 474 R F2(send-)3.121 E(mail)189 486 Q F1(which ha)2.5 E .3 -.15
-(ve n)-.2 H 2.5(og).15 G(uarantee of promptness.)-2.5 E 30.06
-(data\214nal\207 The)117 502.2 R -.1(wa)2.806 G .306
+.196([1h, 3m].)5.196 F 2.686(This should be long because it also applies to programs piping input to)
+189 723 R EP
+%%Page: 24 20
+%%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/F1 10/Times-Italic@0 SF
+(sendmail)189 96 Q/F2 10/Times-Roman@0 SF(which ha)2.5 E .3 -.15(ve n)
+-.2 H 2.5(og).15 G(uarantee of promptness.)-2.5 E 30.06
+(data\214nal\207 The)117 112.2 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 .883
-(shorter than the time actually needed for the recei)189 514.2 R -.15
+(shorter than the time actually needed for the recei)189 124.2 R -.15
(ve)-.25 G 3.384(rt).15 G 3.384(od)-3.384 G(eli)-3.384 E -.15(ve)-.25 G
3.384(rt).15 G .884(he message,)-3.384 F(duplicates will be generated.)
-189 526.2 Q(This is discussed in RFC 1047.)5 E 55.06(rset The)117 542.4
+189 136.2 Q(This is discussed in RFC 1047.)5 E 55.06(rset The)117 152.4
R -.1(wa)2.5 G(it for a reply from a RSET command [5m, unspeci\214ed].)
-.1 E 53.94(quit The)117 558.6 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 574.8 R -.1
+.1 E 53.94(quit The)117 168.6 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 184.8 R -.1
(wa)2.761 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 586.8 Q(erbose mode\).)-.15 E
-([2m, unspeci\214ed].)5 E 25.06(command\207 In)117 603 R(serv)2.5 E
+(\(no-operation\) and VERB \(go into v)189 196.8 Q(erbose mode\).)-.15 E
+([2m, unspeci\214ed].)5 E 25.06(command\207 In)117 213 R(serv)2.5 E
(er SMTP)-.15 E 2.5(,t)-1.11 G(he time to w)-2.5 E
-(ait for another command.)-.1 E([1h, 5m].)5 E 49.5(ident The)117 621.2 R
+(ait for another command.)-.1 E([1h, 5m].)5 E 49.5(ident The)117 231.2 R
(timeout w)2.5 E(aiting for a reply to an IDENT query [30s)-.1 E/F3 7
-/Times-Roman@0 SF(12)-4 I F1 2.5(,u)4 K(nspeci\214ed].)-2.5 E -.15(Fo)
-117 637.4 S 4.608(rc).15 G 2.108
-(ompatibility with old con\214guration \214les, if no)-4.608 F F2
-(suboption)4.609 E F1 2.109(is speci\214ed, all the timeouts)4.609 F
-(mark)117 649.4 Q(ed with \207 are set to the indicated v)-.1 E(alue.)
--.25 E(Man)142 665.6 Q 2.501(yo)-.15 G 2.501(ft)-2.501 G .001
-(he RFC 1123 minimum v)-2.501 F .001(alues may well be too short.)-.25 F
-F2(Sendmail)5 E F1 -.1(wa)2.5 G 2.5(sd).1 G(esigned to)-2.5 E .711
+/Times-Roman@0 SF(13)-4 I F2 2.5(,u)4 K(nspeci\214ed].)-2.5 E 37.28
+(\214leopen The)117 247.4 R(timeout for opening .forw)2.5 E
+(ard and :include: \214les [60s, none].)-.1 E 30.05(hoststatus Ho)117
+263.6 R 4.141(wl)-.25 G 1.642
+(ong status information about a host \(e.g., host do)-4.141 F 1.642
+(wn\) will be cached)-.25 F
+(before it is considered stale [30m, unspeci\214ed].)189 275.6 Q -.15
+(Fo)117 291.8 S 4.609(rc).15 G 2.109
+(ompatibility with old con\214guration \214les, if no)-4.609 F F1
+(suboption)4.608 E F2 2.108(is speci\214ed, all the timeouts)4.608 F
+(mark)117 303.8 Q(ed with \207 are set to the indicated v)-.1 E(alue.)
+-.25 E(Man)142 320 Q 2.5(yo)-.15 G 2.5(ft)-2.5 G(he RFC 1123 minimum v)
+-2.5 E .001(alues may well be too short.)-.25 F F1(Sendmail)5.001 E F2
+-.1(wa)2.501 G 2.501(sd).1 G .001(esigned to)-2.501 F .712
(the RFC 822 protocols, which did not specify read timeouts; hence, v)
-117 677.6 R .712(ersions of)-.15 F F2(sendmail)3.212 E F1(prior)3.212 E
-.32 LW 76 687.2 72 687.2 DL 80 687.2 76 687.2 DL 84 687.2 80 687.2 DL 88
-687.2 84 687.2 DL 92 687.2 88 687.2 DL 96 687.2 92 687.2 DL 100 687.2 96
-687.2 DL 104 687.2 100 687.2 DL 108 687.2 104 687.2 DL 112 687.2 108
-687.2 DL 116 687.2 112 687.2 DL 120 687.2 116 687.2 DL 124 687.2 120
-687.2 DL 128 687.2 124 687.2 DL 132 687.2 128 687.2 DL 136 687.2 132
-687.2 DL 140 687.2 136 687.2 DL 144 687.2 140 687.2 DL 148 687.2 144
-687.2 DL 152 687.2 148 687.2 DL 156 687.2 152 687.2 DL 160 687.2 156
-687.2 DL 164 687.2 160 687.2 DL 168 687.2 164 687.2 DL 172 687.2 168
-687.2 DL 176 687.2 172 687.2 DL 180 687.2 176 687.2 DL 184 687.2 180
-687.2 DL 188 687.2 184 687.2 DL 192 687.2 188 687.2 DL 196 687.2 192
-687.2 DL 200 687.2 196 687.2 DL 204 687.2 200 687.2 DL 208 687.2 204
-687.2 DL 212 687.2 208 687.2 DL 216 687.2 212 687.2 DL/F4 5
-/Times-Roman@0 SF(12)93.6 697.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)-2 E(.)-.52 E EP
-%%Page: 24 20
-%%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/F1 10/Times-Roman@0 SF .865
-(to v)117 96 R .865
-(ersion 8.1 did not guarantee to reply to messages promptly)-.15 F 5.864
-(.I)-.65 G 3.364(np)-5.864 G(articular)-3.364 E 3.364(,a\231)-.4 G .864
-(RCPT\232 com-)-3.364 F .06(mand specifying a mailing list will e)117
-108 R .06(xpand and v)-.15 F .061(erify the entire list; a lar)-.15 F
-.061(ge list on a slo)-.18 F 2.561(ws)-.25 G(ystem)-2.561 E .435
-(may easily tak)117 122 R 2.935(em)-.1 G .435(ore than \214v)-2.935 F
-2.935(em)-.15 G(inutes)-2.935 E/F2 7/Times-Roman@0 SF(13)-4 I F1 5.436
-(.I)4 K .436(recommend a one hour timeout \212 since a commu-)-2.5 F
-1.366(nications f)117 134 R 1.366(ailure during the RCPT phase is rare, a long timeout is not onerous and may ulti-)
--.1 F(mately help reduce netw)117 146 Q
-(ork load and duplicated messages.)-.1 E -.15(Fo)142 162.2 S 2.5(re).15
-G(xample, the lines:)-2.65 E 2.5(OT)157 178.4 S(imeout.command=25m)-2.85
-E 2.5(OT)157 190.4 S(imeout.datablock=3h)-2.85 E .343(sets the serv)117
-206.6 R .344(er SMTP command timeout to 25 minutes and the input data block timeout to three)
--.15 F(hours.)117 218.6 Q F0 2.5(4.1.3. Message)102 242.6 R(timeouts)2.5
-E F1 .238(After sitting in the queue for a fe)142 258.8 R 2.737(wd)-.25
-G .237(ays, a message will time out.)-2.737 F .237
-(This is to insure that at)5.237 F .567(least the sender is a)117 270.8
-R -.1(wa)-.15 G .568(re of the inability to send a message.).1 F .568
-(The timeout is typically set to \214v)5.568 F(e)-.15 E 2.6(days. It)117
-282.8 R .1(is sometimes considered con)2.6 F -.15(ve)-.4 G .099
-(nient to also send a w).15 F .099(arning message if the message is in)
--.1 F .175(the queue longer than a fe)117 294.8 R 2.675(wh)-.25 G .175
-(ours \(assuming you normally ha)-2.675 F .476 -.15(ve g)-.2 H .176
-(ood connecti).15 F .176(vity; if your mes-)-.25 F .645
-(sages normally took se)117 306.8 R -.15(ve)-.25 G .645
+117 332 R .711(ersions of)-.15 F F1(sendmail)3.211 E F2(prior)3.211 E
+.864(to v)117 344 R .865
+(ersion 8.1 did not guarantee to reply to messages promptly)-.15 F 5.865
+(.I)-.65 G 3.365(np)-5.865 G(articular)-3.365 E 3.365(,a\231)-.4 G .865
+(RCPT\232 com-)-3.365 F .061(mand specifying a mailing list will e)117
+356 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)-2.56 E .436
+(may easily tak)117 370 R 2.936(em)-.1 G .436(ore than \214v)-2.936 F
+2.936(em)-.15 G(inutes)-2.936 E F3(14)-4 I F2 5.436(.I)4 K .435
+(recommend a one hour timeout \212 since a commu-)-2.5 F 1.365
+(nications f)117 382 R 1.366(ailure during the RCPT phase is rare, a long timeout is not onerous and may ulti-)
+-.1 F(mately help reduce netw)117 394 Q
+(ork load and duplicated messages.)-.1 E -.15(Fo)142 410.2 S 2.5(re).15
+G(xample, the lines:)-2.65 E 2.5(OT)157 426.4 S(imeout.command=25m)-2.85
+E 2.5(OT)157 438.4 S(imeout.datablock=3h)-2.85 E .344(sets the serv)117
+454.6 R .344(er SMTP command timeout to 25 minutes and the input data block timeout to three)
+-.15 F(hours.)117 466.6 Q F0 2.5(4.1.3. Message)102 490.6 R(timeouts)2.5
+E F2 .237(After sitting in the queue for a fe)142 506.8 R 2.737(wd)-.25
+G .237(ays, a message will time out.)-2.737 F .238
+(This is to insure that at)5.238 F .568(least the sender is a)117 518.8
+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 530.8 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 .176(the queue longer than a fe)117 542.8 R 2.675(wh)-.25 G .175
+(ours \(assuming you normally ha)-2.675 F .475 -.15(ve g)-.2 H .175
+(ood connecti).15 F .175(vity; if your mes-)-.25 F .645
+(sages normally took se)117 554.8 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)-3.245 F(ouldn')-.1 E 3.145(tb)-.18 G(e)
--3.145 E .057(an unusual e)117 318.8 R -.15(ve)-.25 G 2.557(nt\). These)
-.15 F .057(timeouts are set using the)2.557 F F0 -.18(Ti)2.558 G
-(meout.queuer).18 E(etur)-.18 E(n)-.15 E F1(and)2.558 E F0 -.18(Ti)2.558
-G(meout.queue-).18 E(war)117 330.8 Q(n)-.15 E F1
+-3.145 E .058(an unusual e)117 566.8 R -.15(ve)-.25 G 2.558(nt\). These)
+.15 F .057(timeouts are set using the)2.557 F F0 -.18(Ti)2.557 G
+(meout.queuer).18 E(etur)-.18 E(n)-.15 E F2(and)2.557 E F0 -.18(Ti)2.557
+G(meout.queue-).18 E(war)117 578.8 Q(n)-.15 E F2
(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 347 R
-(w)-.25 E/F3 10/Times-Italic@0 SF 2.606(ap)2.606 G(riori)-2.606 E F1(ho)
-2.606 E 2.606(wl)-.25 G .106(ong another host)-2.606 F .475
-(outside your domain will be do)117 359 R .475(wn, a \214v)-.25 F 2.975
-(ed)-.15 G .475(ay timeout is recommended.)-2.975 F .476(This allo)5.476
-F .476(ws a recipient)-.25 F 1.58(to \214x the problem e)117 371 R -.15
-(ve)-.25 G 4.08(ni).15 G 4.08(fi)-4.08 G 4.08(to)-4.08 G 1.579
-(ccurs at the be)-4.08 F 1.579(ginning of a long week)-.15 F 4.079
-(end. RFC)-.1 F 1.579(1123 section)4.079 F
-(5.3.1.1 says that this parameter should be `)117 383 Q
-(`at least 4\2555 days')-.74 E('.)-.74 E(The)142 399.2 Q F0 -.18(Ti)
-2.922 G(meout.queuewar).18 E(n)-.15 E F1 -.25(va)2.922 G .422
-(lue can be piggyback).25 F .422(ed on the)-.1 F F0(T)2.922 E F1 .423
-(option by indicating a time)2.922 F .846(after which a w)117 411.2 R
-.846(arning message should be sent; the tw)-.1 F 3.346(ot)-.1 G .845
-(imeouts are separated by a slash.)-3.346 F -.15(Fo)5.845 G(r).15 E -.15
-(ex)117 423.2 S(ample, the line).15 E -.4(OT)157 439.4 S(5d/4h).4 E .971
-(causes email to f)117 455.6 R .971(ail after \214v)-.1 F 3.471(ed)-.15
-G .971(ays, b)-3.471 F .971(ut a w)-.2 F .971
-(arning message will be sent after four hours.)-.1 F(This)5.972 E
-(should be lar)117 467.6 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 491.6 R(orking During Queue Runs)-.25 E F1 .849
-(By setting the)127 507.8 R F0 -.25(Fo)3.349 G(rkEachJ).25 E(ob)-.15 E
-F1(\()3.349 E F0(Y)A F1 3.348(\)o)C(ption,)-3.348 E F3(sendmail)3.348 E
-F1 .848(will fork before each indi)3.348 F .848(vidual message)-.25 F
-.292(while running the queue.)102 519.8 R .293(This will pre)5.293 F
--.15(ve)-.25 G(nt).15 E F3(sendmail)2.793 E F1 .293(from consuming lar)
-2.793 F .293(ge amounts of memory)-.18 F 2.793(,s)-.65 G(o)-2.793 E 1.11
-(it may be useful in memory-poor en)102 531.8 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)-3.61 E
-F0 -.25(Fo)3.61 G(rkEachJ).25 E(ob)-.15 E F1 1.11(option is not set,)
-3.61 F F3(sendmail)102 543.8 Q F1 .084(will k)2.584 F .084
-(eep track of hosts that are do)-.1 F .085
-(wn during a queue run, which can impro)-.25 F .385 -.15(ve p)-.15 H
-(erformance).15 E(dramatically)102 555.8 Q(.)-.65 E(If the)127 572 Q F0
--.25(Fo)2.5 G(rkEachJ).25 E(ob)-.15 E F1(option is set,)2.5 E F3
-(sendmail)2.5 E F1(can not use connection caching.)2.5 E F0 2.5
-(4.3. Queue)87 596 R(Priorities)2.5 E F1(Ev)127 612.2 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 624.2 R .286(fset by the message class \(which is determined from the Precedence: header\) times)
--.25 F .343(the \231w)102 636.2 R .343(ork class f)-.1 F .343
-(actor\232 and the number of recipients times the \231w)-.1 F .342
-(ork recipient f)-.1 F(actor)-.1 E 4.242 -.7(.\232 T)-.55 H .342
-(he priority).7 F .073(is used to order the queue.)102 648.2 R .073(Higher numbers for the priority mean that the message will be processed)
-5.073 F(later when running the queue.)102 660.2 Q .32 LW 76 669.8 72
-669.8 DL 80 669.8 76 669.8 DL 84 669.8 80 669.8 DL 88 669.8 84 669.8 DL
-92 669.8 88 669.8 DL 96 669.8 92 669.8 DL 100 669.8 96 669.8 DL 104
-669.8 100 669.8 DL 108 669.8 104 669.8 DL 112 669.8 108 669.8 DL 116
-669.8 112 669.8 DL 120 669.8 116 669.8 DL 124 669.8 120 669.8 DL 128
-669.8 124 669.8 DL 132 669.8 128 669.8 DL 136 669.8 132 669.8 DL 140
-669.8 136 669.8 DL 144 669.8 140 669.8 DL 148 669.8 144 669.8 DL 152
-669.8 148 669.8 DL 156 669.8 152 669.8 DL 160 669.8 156 669.8 DL 164
-669.8 160 669.8 DL 168 669.8 164 669.8 DL 172 669.8 168 669.8 DL 176
-669.8 172 669.8 DL 180 669.8 176 669.8 DL 184 669.8 180 669.8 DL 188
-669.8 184 669.8 DL 192 669.8 188 669.8 DL 196 669.8 192 669.8 DL 200
-669.8 196 669.8 DL 204 669.8 200 669.8 DL 208 669.8 204 669.8 DL 212
-669.8 208 669.8 DL 216 669.8 212 669.8 DL/F4 5/Times-Roman@0 SF(13)93.6
-680.2 Q/F5 8/Times-Roman@0 SF .213(This v)3.2 J .213
+(viously both were set using the)-.25 E F0(T)2.5 E F2(option\).)2.5 E
+.106(Since these options are global, and since you can not kno)142 595 R
+(w)-.25 E F1 2.606(ap)2.606 G(riori)-2.606 E F2(ho)2.607 E 2.607(wl)-.25
+G .107(ong another host)-2.607 F .476(outside your domain will be do)117
+607 R .475(wn, a \214v)-.25 F 2.975(ed)-.15 G .475
+(ay timeout is recommended.)-2.975 F .475(This allo)5.475 F .475
+(ws a recipient)-.25 F 1.579(to \214x the problem e)117 619 R -.15(ve)
+-.25 G 4.079(ni).15 G 4.079(fi)-4.079 G 4.079(to)-4.079 G 1.579
+(ccurs at the be)-4.079 F 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 631 Q
+(`at least 4\2555 days')-.74 E('.)-.74 E .32 LW 76 655.6 72 655.6 DL 80
+655.6 76 655.6 DL 84 655.6 80 655.6 DL 88 655.6 84 655.6 DL 92 655.6 88
+655.6 DL 96 655.6 92 655.6 DL 100 655.6 96 655.6 DL 104 655.6 100 655.6
+DL 108 655.6 104 655.6 DL 112 655.6 108 655.6 DL 116 655.6 112 655.6 DL
+120 655.6 116 655.6 DL 124 655.6 120 655.6 DL 128 655.6 124 655.6 DL 132
+655.6 128 655.6 DL 136 655.6 132 655.6 DL 140 655.6 136 655.6 DL 144
+655.6 140 655.6 DL 148 655.6 144 655.6 DL 152 655.6 148 655.6 DL 156
+655.6 152 655.6 DL 160 655.6 156 655.6 DL 164 655.6 160 655.6 DL 168
+655.6 164 655.6 DL 172 655.6 168 655.6 DL 176 655.6 172 655.6 DL 180
+655.6 176 655.6 DL 184 655.6 180 655.6 DL 188 655.6 184 655.6 DL 192
+655.6 188 655.6 DL 196 655.6 192 655.6 DL 200 655.6 196 655.6 DL 204
+655.6 200 655.6 DL 208 655.6 204 655.6 DL 212 655.6 208 655.6 DL 216
+655.6 212 655.6 DL/F4 5/Times-Roman@0 SF(13)93.6 666 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)-2 E(.)
+-.52 E F4(14)93.6 679.6 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 .212
-(ork delays, and can in some cases)-.08 F(can be considerable.)72 693 Q
-EP
+-.32 G(lv).16 E .212(es netw)-.12 F .213
+(ork delays, and can in some cases)-.08 F(can be considerable.)72 692.4
+Q EP
%%Page: 25 21
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-25)195.86 E/F1 10/Times-Roman@0 SF .329
-(The message size is included so that lar)127 96 R .328
-(ge messages are penalized relati)-.18 F .628 -.15(ve t)-.25 H 2.828(os)
-.15 G .328(mall messages.)-2.828 F .285(The message class allo)102 108 R
-.285(ws users to send \231high priority\232 messages by including a \231Precedence:\232 \214eld)
--.25 F .008(in their message; the v)102 120 R .008
-(alue of this \214eld is look)-.25 F .007(ed up in the)-.1 F F0(P)2.507
-E F1 .007(lines of the con\214guration \214le.)2.507 F .007(Since the)
-5.007 F 1.966(number of recipients af)102 132 R 1.967(fects the amount of load a message presents to the system, this is also)
--.25 F(included into the priority)102 144 Q(.)-.65 E .53
-(The recipient and class f)127 160.2 R .53
+(SMM:08-25)195.86 E/F1 10/Times-Roman@0 SF(The)142 96 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 108 R .845
+(arning message should be sent; the tw)-.1 F 3.346(ot)-.1 G .846
+(imeouts are separated by a slash.)-3.346 F -.15(Fo)5.846 G(r).15 E -.15
+(ex)117 120 S(ample, the line).15 E -.4(OT)157 136.2 S(5d/4h).4 E .972
+(causes email to f)117 152.4 R .971(ail after \214v)-.1 F 3.471(ed)-.15
+G .971(ays, b)-3.471 F .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 164.4 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 188.4 R(orking During Queue Runs)-.25 E F1 .848
+(By setting the)127 204.6 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,)-3.348 E/F2 10/Times-Italic@0
+SF(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 216.6 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)-2.792 E 1.11(it may be useful in memory-poor en)102 228.6
+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)-3.61 E 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 240.6 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 252.6 Q(.)-.65 E(If the)127 268.8 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 292.8 R(Priorities)2.5 E F1(Ev)127 309 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 321 R .286(fset by the message class \(which is determined from the Precedence: header\) times)
+-.25 F .342(the \231w)102 333 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 345 R .073(Higher numbers for the priority mean that the message will be processed)
+5.073 F(later when running the queue.)102 357 Q .328
+(The message size is included so that lar)127 373.2 R .329
+(ge messages are penalized relati)-.18 F .629 -.15(ve t)-.25 H 2.829(os)
+.15 G .329(mall messages.)-2.829 F .285(The message class allo)102 385.2
+R .285(ws users to send \231high priority\232 messages by including a \231Precedence:\232 \214eld)
+-.25 F .007(in their message; the v)102 397.2 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 409.2 R 1.967(fects the amount of load a message presents to the system, this is also)
+-.25 F(included into the priority)102 421.2 Q(.)-.65 E .53
+(The recipient and class f)127 437.4 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 172.2 Q F0(y)A F1 3.442(\)a)C
-(nd)-3.442 E F0(ClassF)3.442 E(actor)-.25 E F1(\()3.442 E F0(z)A F1
+(RecipientF)3.03 E(actor)-.25 E F1(\()102 449.4 Q F0(y)A F1 3.443(\)a)C
+(nd)-3.443 E F0(ClassF)3.443 E(actor)-.25 E F1(\()3.442 E F0(z)A F1
3.442(\)o)C .942(ptions respecti)-3.442 F -.15(ve)-.25 G(ly).15 E 5.942
(.T)-.65 G(he)-5.942 E 3.442(yd)-.15 G(ef)-3.442 E .942
-(ault to 30000 \(for the recipient f)-.1 F .943(actor\) and)-.1 F
-(1800 \(for the class f)102 184.2 Q 2.5(actor\). The)-.1 F
-(initial priority is:)2.5 E/F2 10/Times-Italic@0 SF(pri)168.495 202.2 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
-220.2 Q 3.328(,h)-.4 G .828(igher v)-3.328 F .828(alues for this parameter actually mean that the job will be treated with lo)
--.25 F(wer)-.25 E(priority)102 232.2 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 248.4 R .236(attempt is made to deli)102 260.4 R -.15(ve)-.25 G
+(ault to 30000 \(for the recipient f)-.1 F .942(actor\) and)-.1 F
+(1800 \(for the class f)102 461.4 Q 2.5(actor\). The)-.1 F
+(initial priority is:)2.5 E F2(pri)168.495 479.4 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 497.4 Q 3.328
+(,h)-.4 G .828(igher v)-3.328 F .828(alues for this parameter actually mean that the job will be treated with lo)
+-.25 F(wer)-.25 E(priority)102 509.4 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 525.6 R .235(attempt is made to deli)102 537.6 R -.15(ve)-.25 G
2.736(ri).15 G .236(t\) using the \231w)-2.736 F .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.735(\)o)C 2.735(ption. This)
--2.735 F .366(is added to the priority)102 272.4 R 2.866(,s)-.65 G 2.866
-(oi)-2.866 G 2.867(tn)-2.866 G .367
+E(actor)-.25 E F1(\()2.736 E F0(Z)A F1 2.736(\)o)C 2.736(ption. This)
+-2.736 F .367(is added to the priority)102 549.6 R 2.867(,s)-.65 G 2.867
+(oi)-2.867 G 2.867(tn)-2.867 G .366
(ormally decreases the precedence of the job, on the grounds that jobs)
--2.867 F .138(that ha)102 284.4 R .437 -.15(ve f)-.2 H .137(ailed man)
+-2.867 F .137(that ha)102 561.6 R .437 -.15(ve f)-.2 H .137(ailed man)
.05 F 2.637(yt)-.15 G .137(imes will tend to f)-2.637 F .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 .137(aults to)-.1 F(90000.)102 296.4 Q
-F0 2.5(4.4. Load)87 320.4 R(Limiting)2.5 E F2(Sendmail)127 336.6 Q F1
-.101(can be ask)2.601 F .101(ed to queue \(b)-.1 F .101(ut not deli)-.2
+-.25 E F1 .137(option def)2.637 F .138(aults to)-.1 F(90000.)102 573.6 Q
+F0 2.5(4.4. Load)87 597.6 R(Limiting)2.5 E F2(Sendmail)127 613.8 Q F1
+.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
-.102(rage gets too high).15 F .484(using the)102 348.6 R F0(QueueLA)
-2.984 E F1(\()2.984 E F0(x)A F1 2.984(\)o)C 2.984(ption. When)-2.984 F
+.101(rage gets too high).15 F .483(using the)102 625.8 R F0(QueueLA)
+2.983 E F1(\()2.983 E F0(x)A F1 2.983(\)o)C 2.983(ption. When)-2.983 F
.483(the load a)2.983 F -.15(ve)-.2 G .483(rage e).15 F .483
-(xceeds the v)-.15 F .483(alue of the)-.25 F F0(QueueLA)2.983 E F1
-(option,)2.983 E .531(the deli)102 360.6 R -.15(ve)-.25 G .531
+(xceeds the v)-.15 F .484(alue of the)-.25 F F0(QueueLA)2.984 E F1
+(option,)2.984 E .532(the deli)102 637.8 R -.15(ve)-.25 G .532
(ry mode is set to).15 F F0(q)3.032 E F1 .532(\(queue only\) if the)
3.032 F F0(QueueF)3.032 E(actor)-.25 E F1(\()3.032 E F0(q)A F1 3.032
-(\)o)C .532(ption di)-3.032 F .532(vided by the dif)-.25 F(ference)-.25
-E .005(in the current load a)102 372.6 R -.15(ve)-.2 G .004
+(\)o)C .531(ption di)-3.032 F .531(vided by the dif)-.25 F(ference)-.25
+E .004(in the current load a)102 649.8 R -.15(ve)-.2 G .004
(rage and the).15 F F0(QueueLA)2.504 E F1 .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 384.6 Q(f:)-.25 E F2(pri)251.425
-408.01 Q F1(>)3.16 E F0(QueueFactor)15.315 -7 M F2(LA)-66.835 14 M F3(-)
-2.23 E F0(QueueLA)2.2 E F3(+)2.2 E .4 LW 354.625 405.41 275.895 405.41
-DL F1(1)349.625 415.01 Q(The)102 431.27 Q F0(QueueF)2.616 E(actor)-.25 E
+(that is, the message is queued if)102 661.8 Q(f:)-.25 E F2(pri)251.425
+685.21 Q F1(>)3.16 E F0(QueueFactor)15.315 -7 M F2(LA)-66.835 14 M F3(-)
+2.23 E F0(QueueLA)2.2 E F3(+)2.2 E .4 LW 354.625 682.61 275.895 682.61
+DL F1(1)349.625 692.21 Q(The)102 708.47 Q F0(QueueF)2.616 E(actor)-.25 E
F1 .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 443.27 Q -.15(ve)-.15 G(\).).15 E -.15
-(Fo)127 459.47 S 3.894(rd).15 G 1.394(rastic cases, the)-3.894 F F0
-(RefuseLA)3.894 E F1(\()3.894 E F0(X)A F1 3.894(\)o)C 1.394
-(ption de\214nes a load a)-3.894 F -.15(ve)-.2 G 1.393(rage at which).15
-F F2(sendmail)3.893 E F1(will)3.893 E .689(refuse to accept netw)102
-471.47 R .689(ork connections.)-.1 F .689
-(Locally generated mail \(including incoming UUCP mail\) is)5.689 F
-(still accepted.)102 483.47 Q F0 2.5(4.5. Deli)87 507.47 R -.1(ve)-.1 G
-(ry Mode).1 E F1 .254(There are a number of deli)127 523.67 R -.15(ve)
--.25 G .253(ry modes that).15 F F2(sendmail)2.753 E F1 .253
-(can operate in, set by the)2.753 F F0(Deli)2.753 E -.1(ve)-.1 G(ryMode)
-.1 E F1(\()102 535.67 Q F0(d)A F1 3.598(\)c)C 1.098
-(on\214guration option.)-3.598 F 1.098(These modes specify ho)6.098 F
-3.598(wq)-.25 G 1.099(uickly mail will be deli)-3.598 F -.15(ve)-.25 G
-3.599(red. Le).15 F -.05(ga)-.15 G 3.599(lm).05 G(odes)-3.599 E(are:)102
-547.67 Q 17.22(id)142 563.87 S(eli)-17.22 E -.15(ve)-.25 G 2.5(ri).15 G
-(nteracti)-2.5 E -.15(ve)-.25 G(ly \(synchronously\)).15 E 15(bd)142
-575.87 S(eli)-15 E -.15(ve)-.25 G 2.5(ri).15 G 2.5(nb)-2.5 G
-(ackground \(asynchronously\))-2.5 E 15(qq)142 587.87 S
-(ueue only \(don')-15 E 2.5(td)-.18 G(eli)-2.5 E -.15(ve)-.25 G(r\)).15
-E 15(dd)142 599.87 S(efer delv)-15 E(ery attempts \(don')-.15 E 2.5(td)
--.18 G(eli)-2.5 E -.15(ve)-.25 G(r\)).15 E 1.274(There are tradeof)102
-616.07 R 3.774(fs. Mode)-.25 F 1.274(\231i\232 gi)3.774 F -.15(ve)-.25 G
-3.773(st).15 G 1.273(he sender the quick)-3.773 F 1.273(est feedback, b)
--.1 F 1.273(ut may slo)-.2 F 3.773(wd)-.25 G -.25(ow)-3.773 G 3.773(ns)
-.25 G(ome)-3.773 E .798(mailers and is hardly e)102 628.07 R -.15(ve)
--.25 G 3.298(rn).15 G(ecessary)-3.298 E 5.799(.M)-.65 G .799
-(ode \231b\232 deli)-5.799 F -.15(ve)-.25 G .799(rs promptly b).15 F
-.799(ut can cause lar)-.2 F .799(ge numbers of)-.18 F .224
-(processes if you ha)102 640.07 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)-2.724 F .223
-(\231q\232 minimizes the)2.724 F .596(load on your machine, b)102 652.07
-R .596(ut means that deli)-.2 F -.15(ve)-.25 G .597
-(ry may be delayed for up to the queue interv).15 F 3.097(al. Mode)-.25
-F .04(\231d\232 is identical to mode \231q\232 e)102 664.07 R .04
-(xcept that it also pre)-.15 F -.15(ve)-.25 G .039
-(nts all the early map lookups from w).15 F .039(orking; it is)-.1 F
-.085(intended for `)102 676.07 R .085(`dial on demand')-.74 F 2.585('s)
--.74 G .085(ites where DNS lookups might cost real mone)-2.585 F 3.886
--.65(y. S)-.15 H .086(ome simple error).65 F .818
-(messages \(e.g., host unkno)102 688.07 R .817
-(wn during the SMTP protocol\) will be delayed using this mode.)-.25 F
-(Mode)5.817 E(\231b\232 is the usual def)102 700.07 Q(ault.)-.1 E EP
+(points \(as described abo)102 720.47 Q -.15(ve)-.15 G(\).).15 E EP
%%Page: 26 22
%%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 .052(If you run in mode \231q\232 \(queue only\), \231d\232 \(defer\), or \231b\232 \(deli)
-127 96 R -.15(ve)-.25 G 2.552(ri).15 G 2.552(nb)-2.552 G(ackground\))
--2.552 E/F2 10/Times-Italic@0 SF(sendmail)2.552 E F1(will)2.552 E 1.392
-(not e)102 108 R 1.392(xpand aliases and follo)-.15 F 3.892(w.)-.25 G
-(forw)-3.892 E 1.392(ard \214les upon initial receipt of the mail.)-.1 F
-1.391(This speeds up the)6.392 F(response to RCPT commands.)102 120 Q
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF -.15(Fo)
+127 96 S 3.893(rd).15 G 1.393(rastic cases, the)-3.893 F F0(RefuseLA)
+3.893 E F1(\()3.893 E F0(X)A F1 3.893(\)o)C 1.394
+(ption de\214nes a load a)-3.893 F -.15(ve)-.2 G 1.394(rage at which).15
+F/F2 10/Times-Italic@0 SF(sendmail)3.894 E F1(will)3.894 E .69
+(refuse to accept netw)102 108 R .689(ork connections.)-.1 F .689
+(Locally generated mail \(including incoming UUCP mail\) is)5.689 F
+(still accepted.)102 120 Q F0 2.5(4.5. Deli)87 144 R -.1(ve)-.1 G
+(ry Mode).1 E F1 .253(There are a number of deli)127 160.2 R -.15(ve)
+-.25 G .253(ry modes that).15 F F2(sendmail)2.753 E F1 .254
+(can operate in, set by the)2.753 F F0(Deli)2.754 E -.1(ve)-.1 G(ryMode)
+.1 E F1(\()102 172.2 Q F0(d)A F1 3.599(\)c)C 1.099
+(on\214guration option.)-3.599 F 1.099(These modes specify ho)6.099 F
+3.598(wq)-.25 G 1.098(uickly mail will be deli)-3.598 F -.15(ve)-.25 G
+3.598(red. Le).15 F -.05(ga)-.15 G 3.598(lm).05 G(odes)-3.598 E(are:)102
+184.2 Q 17.22(id)142 200.4 S(eli)-17.22 E -.15(ve)-.25 G 2.5(ri).15 G
+(nteracti)-2.5 E -.15(ve)-.25 G(ly \(synchronously\)).15 E 15(bd)142
+212.4 S(eli)-15 E -.15(ve)-.25 G 2.5(ri).15 G 2.5(nb)-2.5 G
+(ackground \(asynchronously\))-2.5 E 15(qq)142 224.4 S(ueue only \(don')
+-15 E 2.5(td)-.18 G(eli)-2.5 E -.15(ve)-.25 G(r\)).15 E 15(dd)142 236.4
+S(efer delv)-15 E(ery attempts \(don')-.15 E 2.5(td)-.18 G(eli)-2.5 E
+-.15(ve)-.25 G(r\)).15 E 1.273(There are tradeof)102 252.6 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)-3.773 F 1.273(est feedback, b)-.1 F 1.274
+(ut may slo)-.2 F 3.774(wd)-.25 G -.25(ow)-3.774 G 3.774(ns).25 G(ome)
+-3.774 E .799(mailers and is hardly e)102 264.6 R -.15(ve)-.25 G 3.299
+(rn).15 G(ecessary)-3.299 E 5.799(.M)-.65 G .799(ode \231b\232 deli)
+-5.799 F -.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 276.6 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)-2.724 F .224(\231q\232 minimizes the)2.724 F .597
+(load on your machine, b)102 288.6 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
+300.6 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 312.6 R .086(`dial on demand')-.74 F 2.586('s)-.74 G
+.085(ites where DNS lookups might cost real mone)-2.586 F 3.885 -.65
+(y. S)-.15 H .085(ome simple error).65 F .817
+(messages \(e.g., host unkno)102 324.6 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 336.6 Q(ault.)-.1 E .052(If you run in mode \231q\232 \(queue only\), \231d\232 \(defer\), or \231b\232 \(deli)
+127 352.8 R -.15(ve)-.25 G 2.552(ri).15 G 2.552(nb)-2.552 G(ackground\))
+-2.552 E F2(sendmail)2.551 E F1(will)2.551 E 1.391(not e)102 364.8 R
+1.392(xpand aliases and follo)-.15 F 3.892(w.)-.25 G(forw)-3.892 E 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 376.8 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 144 R(Le)2.5 E -.1(ve)-.15 G(l).1 E F1 .189(The le)
-127 160.2 R -.15(ve)-.25 G 2.689(lo).15 G 2.689(fl)-2.689 G .189
-(ogging can be set for)-2.689 F F2(sendmail)2.689 E F1 5.189(.T)C .189
-(he def)-5.189 F .19(ault using a standard con\214guration table)-.1 F
-(is le)102 172.2 Q -.15(ve)-.25 G 2.5(l9).15 G 5(.T)-2.5 G(he le)-5 E
--.15(ve)-.25 G(ls are as follo).15 E(ws:)-.25 E 31(0N)102 188.4 S 2.5
-(ol)-31 G(ogging.)-2.5 E 31(1S)102 204.6 S(erious system f)-31 E
-(ailures and potential security problems.)-.1 E 31(2L)102 220.8 S
+F0 2.5(4.6. Log)87 400.8 R(Le)2.5 E -.1(ve)-.15 G(l).1 E F1 .19(The le)
+127 417 R -.15(ve)-.25 G 2.69(lo).15 G 2.69(fl)-2.69 G .19
+(ogging can be set for)-2.69 F F2(sendmail)2.689 E F1 5.189(.T)C .189
+(he def)-5.189 F .189(ault using a standard con\214guration table)-.1 F
+(is le)102 429 Q -.15(ve)-.25 G 2.5(l9).15 G 5(.T)-2.5 G(he le)-5 E -.15
+(ve)-.25 G(ls are as follo).15 E(ws:)-.25 E 31(0M)102 445.2 S
+(inimal logging.)-31 E 31(1S)102 461.4 S(erious system f)-31 E
+(ailures and potential security problems.)-.1 E 31(2L)102 477.6 S
(ost communications \(netw)-31 E(ork problems\) and protocol f)-.1 E
-(ailures.)-.1 E 31(3O)102 237 S(ther serious f)-31 E(ailures.)-.1 E 31
-(4M)102 253.2 S(inor f)-31 E(ailures.)-.1 E 31(5M)102 269.4 S
-(essage collection statistics.)-31 E 31(6C)102 285.6 S
-(reation of error messages, VRFY and EXPN commands.)-31 E 31(7D)102
-301.8 S(eli)-31 E -.15(ve)-.25 G(ry f).15 E
-(ailures \(host or user unkno)-.1 E(wn, etc.\).)-.25 E 31(8S)102 318 S
+(ailures.)-.1 E 31(3O)102 493.8 S 1.237(ther serious f)-31 F 1.237
+(ailures, malformed addresses, transient forw)-.1 F 1.238
+(ard/include errors, connection)-.1 F(timeouts.)138 505.8 Q 31(4M)102
+522 S(inor f)-31 E(ailures, out of date alias databases, connection rejections via check_ rulesets.)
+-.1 E 31(5M)102 538.2 S(essage collection statistics.)-31 E 31(6C)102
+554.4 S(reation of error messages, VRFY and EXPN commands.)-31 E 31(7D)
+102 570.6 S(eli)-31 E -.15(ve)-.25 G(ry f).15 E
+(ailures \(host or user unkno)-.1 E(wn, etc.\).)-.25 E 31(8S)102 586.8 S
(uccessful deli)-31 E -.15(ve)-.25 G(ries and alias database reb).15 E
-(uilds.)-.2 E 31(9M)102 334.2 S
+(uilds.)-.2 E 31(9M)102 603 S
(essages being deferred \(due to a host being do)-31 E(wn, etc.\).)-.25
-E 23.5(10 Database)102 350.4 R -.15(ex)2.5 G(pansion \(alias, forw).15 E
-(ard, and userdb lookups\).)-.1 E 23.5(12 Log)102 366.6 R
-(all incoming and outgoing SMTP commands.)2.5 E 23.5(20 Logs)102 382.8 R
-.603(attempts to run lock)3.103 F .603(ed queue \214les.)-.1 F .603
+E 23.5(10 Database)102 619.2 R -.15(ex)2.5 G(pansion \(alias, forw).15 E
+(ard, and userdb lookups\).)-.1 E 23.5(11 NIS)102 635.4 R
+(errors and end of job processing.)2.5 E 23.5(12 Logs)102 651.6 R
+(all SMTP connections.)2.5 E 23.5(13 Log)102 667.8 R(bad user shells, \214les with improper permissions, and other questionable situations.)
+2.5 E 23.5(14 Logs)102 684 R(refused connections.)2.5 E 23.5(15 Log)102
+700.2 R(all incoming and outgoing SMTP commands.)2.5 E EP
+%%Page: 27 23
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-27)195.86 E/F1 10/Times-Roman@0 SF 23.5(20 Logs)102 96 R .603
+(attempts to run lock)3.103 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 394.8 Q 23.5(30 Lost)102 411 R
+(your queue appears to be clogged.)138 108 Q 23.5(30 Lost)102 124.2 R
(locks \(only if using lockf instead of \215ock\).)2.5 E(Additionally)
-102 427.2 Q 2.716(,v)-.65 G .216(alues abo)-2.966 F .516 -.15(ve 6)-.15
+102 140.4 Q 2.716(,v)-.65 G .216(alues abo)-2.966 F .516 -.15(ve 6)-.15
H 2.716(4a).15 G .216(re reserv)-2.716 F .216(ed for e)-.15 F .216
(xtremely v)-.15 F .216(erbose deb)-.15 F .216(ugging output.)-.2 F .217
-(No normal site)5.216 F -.1(wo)102 439.2 S(uld e).1 E -.15(ve)-.25 G 2.5
-(rs).15 G(et these.)-2.5 E F0 2.5(4.7. File)87 463.2 R(Modes)2.5 E F1
+(No normal site)5.216 F -.1(wo)102 152.4 S(uld e).1 E -.15(ve)-.25 G 2.5
+(rs).15 G(et these.)-2.5 E F0 2.5(4.7. File)87 176.4 R(Modes)2.5 E F1
.264(The modes used for \214les depend on what functionality you w)127
-479.4 R .264(ant and the le)-.1 F -.15(ve)-.25 G 2.763(lo).15 G 2.763
-(fs)-2.763 G .263(ecurity you)-2.763 F(require.)102 491.4 Q F0 2.5
-(4.7.1. T)102 515.4 R 2.5(os)-.92 G(uid or not to suid?)-2.5 E F2
-(Sendmail)142 531.6 Q F1 .933(can safely be made setuid to root.)3.433 F
-.934(At the point where it is about to)5.934 F F2 -.2(ex)3.434 G(ec).2 E
-F1 .934(\(2\) a)1.666 F(mailer)117 543.6 Q 2.583(,i)-.4 G 2.583(tc)
--2.583 G .082(hecks to see if the userid is zero; if so, it resets the userid and groupid to a def)
--2.583 F .082(ault \(set)-.1 F .576(by the)117 555.6 R F0(u)3.076 E F1
-(and)3.076 E F0(g)3.076 E F1 3.076(options\). \(This)3.076 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 .577(\215ag to the mailer for mailers)3.077 F 1.532
-(that are trusted and must be called as root.\))117 567.6 R(Ho)6.531 E
-(we)-.25 E -.15(ve)-.25 G 2.331 -.4(r, t).15 H 1.531
-(his will cause mail processing to be).4 F(accounted \(using)117 579.6 Q
-F2(sa)2.5 E F1
-(\(8\)\) to root rather than to the user sending the mail.)1.666 E .338
-(If you don')142 595.8 R 2.839(tm)-.18 G(ak)-2.839 E(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 .008(ity and a lot of pri)
-117 607.8 R -.25(va)-.25 G -.15(cy).25 G 2.508(,s)-.5 G .008(ince you')
--2.508 F .008(ll ha)-.1 F .308 -.15(ve t)-.2 H 2.508(om).15 G(ak)-2.508
-E 2.508(et)-.1 G .007(he queue directory w)-2.508 F .007(orld readable.)
--.1 F -1.1(Yo)5.007 G 2.507(uc)1.1 G(ould)-2.507 E .5(also mak)117 619.8
-R(e)-.1 E F2(sendmail)3 E F1 .501(setuid to some pseudo-user \(e.g., create a user called \231sendmail\232 and mak)
-3 F(e)-.1 E F2(sendmail)117 631.8 Q F1 1.534
-(setuid to that\) which will \214x the pri)4.034 F -.25(va)-.25 G 1.833
--.15(cy p).25 H 1.533(roblems b).15 F 1.533
-(ut not the functionality issues.)-.2 F .641(Also, this isn')117 643.8 R
-3.141(tag)-.18 G .641(uarantee of security: for e)-3.141 F .642
-(xample, root occasionally sends mail, and the dae-)-.15 F
-(mon often runs as root.)117 655.8 Q F0 2.5(4.7.2. Should)102 679.8 R
-(my alias database be writable?)2.5 E F1 .058(At Berk)142 696 R(ele)-.1
-E 2.558(yw)-.15 G 2.558(eh)-2.558 G -2.25 -.2(av e)-2.558 H .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.718
-(ible as if the database were more 666, it a)117 708 R -.2(vo)-.2 G
-1.719(ids potential security problems with a globally).2 F
-(writable database.)117 720 Q EP
-%%Page: 27 23
+192.6 R .264(ant and the le)-.1 F -.15(ve)-.25 G 2.763(lo).15 G 2.763
+(fs)-2.763 G .263(ecurity you)-2.763 F 2.56(require. In)102 204.6 R(man)
+2.56 E 2.56(yc)-.15 G(ases)-2.56 E/F2 10/Times-Italic@0 SF(sendmail)2.56
+E F1 .061
+(does careful checking of the modes of \214les and directories to a)2.56
+F -.2(vo)-.2 G(id).2 E 1.336(accidental compromise; if you w)102 216.6 R
+1.336(ant to mak)-.1 F 3.836(ei)-.1 G 3.836(tp)-3.836 G 1.336
+(ossible to ha)-3.836 F 1.635 -.15(ve g)-.2 H 1.335
+(roup-writable support \214les you).15 F(may need to use the)102 228.6 Q
+F0(DontBlameSendmail)2.5 E F1(option to turn of)2.5 E 2.5(fs)-.25 G
+(ome of these checks.)-2.5 E F0 2.5(4.7.1. T)102 252.6 R 2.5(os)-.92 G
+(uid or not to suid?)-2.5 E F2(Sendmail)142 268.8 Q F1 .66
+(is normally installed setuid to root.)3.16 F .66
+(At the point where it is about to)5.66 F F2 -.2(ex)3.161 G(ec).2 E F1
+.661(\(2\) a)1.666 F(mailer)117 280.8 Q 3.679(,i)-.4 G 3.679(tc)-3.679 G
+1.178(hecks to see if the userid is zero \(root\); if so, it resets the userid and groupid to a)
+-3.679 F(def)117 292.8 Q 1.391(ault \(set by the)-.1 F F0(U=)3.891 E F1
+1.392(equate in the mailer line; if that is not set, the)3.891 F F0
+(DefaultUser)3.892 E F1 1.392(option is)3.892 F 2.848(used\). This)117
+304.8 R .348(can be o)2.848 F -.15(ve)-.15 G .347
+(rridden by setting the).15 F F0(S)2.847 E F1 .347
+(\215ag to the mailer for mailers that are trusted and)2.847 F .541
+(must be called as root.)117 316.8 R(Ho)5.541 E(we)-.25 E -.15(ve)-.25 G
+1.341 -.4(r, t).15 H .541
+(his will cause mail processing to be accounted \(using).4 F F2(sa)3.041
+E F1(\(8\)\))1.666 E(to root rather than to the user sending the mail.)
+117 328.8 Q .339(If you don')142 345 R 2.839(tm)-.18 G(ak)-2.839 E(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 357 R -.25(va)-.25 G -.15(cy).25 G 2.507(,s)-.5 G .008(ince you')
+-2.507 F .008(ll ha)-.1 F .308 -.15(ve t)-.2 H 2.508(om).15 G(ak)-2.508
+E 2.508(et)-.1 G .008(he queue directory w)-2.508 F .008(orld readable.)
+-.1 F -1.1(Yo)5.008 G 2.508(uc)1.1 G(ould)-2.508 E .501(also mak)117 369
+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 381 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 393 R
+3.142(tag)-.18 G .641(uarantee of security: for e)-3.142 F .641
+(xample, root occasionally sends mail, and the dae-)-.15 F 1.483
+(mon often runs as root.)117 405 R 1.483(Note ho)6.483 F(we)-.25 E -.15
+(ve)-.25 G 3.983(rt).15 G(hat)-3.983 E F2(sendmail)3.983 E F1 1.483
+(must run as root in order to create the)3.983 F(SMTP listener sock)117
+417 Q(et.)-.1 E 2.839(Am)142 433.2 S .339(iddle ground is to mak)-2.839
+F(e)-.1 E F2(sendmail)2.839 E F1 .339(setuid to root, b)2.839 F .338
+(ut set the)-.2 F F0(RunAsUser)2.838 E F1 2.838(option. This)2.838 F
+(causes)117 445.2 Q F2(sendmail)2.572 E F1 .072(to become the indicated user as soon as it has done the startup that requires root)
+2.572 F(pri)117 457.2 Q(vile)-.25 E 1.226(ges \(primarily)-.15 F 3.726
+(,o)-.65 G 1.225(pening the)-3.726 F/F3 9/Times-Roman@0 SF(SMTP)3.725 E
+F1(sock)3.725 E 3.725(et\). If)-.1 F 1.225(you use)3.725 F F0(RunAsUser)
+3.725 E F1 3.725(,t)C 1.225(he queue directory)-3.725 F(\(normally)117
+469.2 Q F2(/var/spool/mqueue)2.921 E F1 2.921(\)s)C .421(hould be o)
+-2.921 F .421(wned by that user)-.25 F 2.922(,a)-.4 G .422
+(nd all \214les and databases \(includ-)-2.922 F 1.175(ing user)117
+481.2 R F2(.forwar)3.675 E(d)-.37 E F1 1.175
+(\214les, alias \214les, :include: \214les, and e)3.675 F 1.175
+(xternal databases\) must be readable by)-.15 F .386(that user)117 493.2
+R(.)-.55 E F0(RunAsUser)5.386 E F1 .386
+(is probably best suited for \214re)2.886 F -.1(wa)-.25 G .386
+(ll con\214gurations that don').1 F 2.887(th)-.18 G -2.25 -.2(av e)
+-2.887 H(re)3.087 E(gular)-.15 E(user logins.)117 505.2 Q F0 2.5
+(4.7.2. T)102 529.2 R(ur)-.92 E(ning off security checks)-.15 E F2
+(Sendmail)142 545.4 Q F1 .648(is v)3.148 F .648
+(ery particular about the modes of \214les that it reads or writes.)-.15
+F -.15(Fo)5.648 G 3.148(re).15 G(xample,)-3.298 E .25(by def)117 557.4 R
+.251(ault it will refuse to read most \214les that are group writable on the grounds that the)
+-.1 F 2.751(ym)-.15 G(ight)-2.751 E(ha)117 569.4 Q 1.216 -.15(ve b)-.2 H
+.916(een tampered with by someone other than the o).15 F .916
+(wner; it will e)-.25 F -.15(ve)-.25 G 3.416(nr).15 G .916
+(efuse to read \214les in)-3.416 F(group writable directories.)117 581.4
+Q .437(If you are)142 597.6 R F2(quite)2.937 E F1 .437
+(sure that your con\214guration is safe and you w)2.937 F(ant)-.1 E F2
+(sendmail)2.938 E F1 .438(to a)2.938 F -.2(vo)-.2 G .438(id these).2 F
+1.187(security checks, you can turn of)117 609.6 R 3.687(fc)-.25 G 1.187
+(ertain checks using the)-3.687 F F0(DontBlameSendmail)3.686 E F1 3.686
+(option. This)3.686 F 1.389(option tak)117 621.6 R 1.389
+(es one or more names that disable checks.)-.1 F 1.39
+(In the descriptions that follo)6.389 F 2.69 -.65(w, \231)-.25 H(unsafe)
+.65 E(directory\232 means a directory that is writable by an)117 633.6 Q
+(yone other than the o)-.15 E(wner)-.25 E 5(.T)-.55 G(he v)-5 E
+(alues are:)-.25 E 15.73(Safe No)117 649.8 R(special handling.)2.5 E
+(AssumeSafeCho)117 666 Q(wn)-.25 E .77(Assume that the)153 678 R F2 -.15
+(ch)3.27 G(own).15 E F1 .769(system call is restricted to root.)3.27 F
+.769(Since some v)5.769 F .769(ersions of Unix)-.15 F .865(permit re)153
+690 R .865(gular users to gi)-.15 F 1.166 -.15(ve aw)-.25 H .866
+(ay their \214les to other users on some \214lesystems,).05 F F2(send-)
+3.366 E(mail)153 702 Q F1 .457(often cannot assume that a gi)2.957 F
+-.15(ve)-.25 G 2.956<6e8c>.15 G .456(le w)-2.956 F .456
+(as created by the o)-.1 F(wner)-.25 E 2.956(,p)-.4 G .456
+(articularly when)-2.956 F 1.474(it is in a writable directory)153 714 R
+6.475(.Y)-.65 G 1.475(ou can set this \215ag if you kno)-7.575 F 3.975
+(wt)-.25 G 1.475(hat \214le gi)-3.975 F -.15(ve)-.25 G -2.3 -.15(aw a)
+.15 H 3.975(yi).15 G(s)-3.975 E EP
+%%Page: 28 24
+%%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/F1 10/Times-Roman@0 SF
+(restricted on your system.)153 96 Q(ClassFileInUnsafeDirP)117 112.2 Q
+(ath)-.15 E .494(When reading class \214les \(using the)153 124.2 R F0
+(F)2.993 E F1 .493(line in the con\214guration \214le\), allo)2.993 F
+2.993<778c>-.25 G .493(les that are)-2.993 F(in unsafe directories.)153
+136.2 Q(ErrorHeaderInUnsafeDirP)117 152.4 Q(ath)-.15 E(Allo)153 164.4 Q
+2.5(wt)-.25 G(he \214le named in the)-2.5 E F0(Err)2.5 E(orHeader)-.18 E
+F1(option to be in an unsafe directory)2.5 E(.)-.65 E(GroupWritableDirP)
+117 180.6 Q(athSafe)-.15 E .224(Change the de\214nition of \231unsafe directory\232 to consider group-writable directories to be)
+153 192.6 R 2.5(safe. W)153 204.6 R(orld-writable directories are al)-.8
+E -.1(wa)-.1 G(ys unsafe.).1 E(GroupWritableF)117 220.8 Q(orw)-.15 E
+(ardFileSafe)-.1 E(Accept group-writable)153 232.8 Q/F2 10
+/Times-Italic@0 SF(.forwar)2.5 E(d)-.37 E F1(\214les.)2.5 E
+(GroupWritableIncludeFileSafe)117 249 Q(Accept group-writable)153 261 Q
+F2(:include:)2.5 E F1(\214les.)2.5 E(GroupWritableAliasFile)117 277.2 Q
+(Allo)153 289.2 Q 2.5(wg)-.25 G(roup-writable alias \214les.)-2.5 E
+(HelpFileInUnsafeDirP)117 305.4 Q(ath)-.15 E(Allo)153 317.4 Q 2.5(wt)
+-.25 G(he \214le named in the)-2.5 E F0(HelpFile)2.5 E F1
+(option to be in an unsafe directory)2.5 E(.)-.65 E -.8(Wo)117 333.6 S
+(rldWritableAliasFile).8 E(Accept w)153 345.6 Q
+(orld-writable alias \214les.)-.1 E -.15(Fo)117 361.8 S(rw).15 E
+(ardFileInGroupWritableDirP)-.1 E(ath)-.15 E(Allo)153 373.8 Q(w)-.25 E
+F2(.forwar)2.5 E(d)-.37 E F1(\214les in group writable directories.)2.5
+E(IncludeFileInGroupWritableDirP)117 390 Q(ath)-.15 E(Allo)153 402 Q(w)
+-.25 E F2(:include:)2.5 E F1(\214les in group writable directories.)2.5
+E -.15(Fo)117 418.2 S(rw).15 E(ardFileInUnsafeDirP)-.1 E(ath)-.15 E
+(Allo)153 430.2 Q(w)-.25 E F2(.forwar)2.5 E(d)-.37 E F1
+(\214les in unsafe directories.)2.5 E(IncludeFileInUnsafeDirP)117 446.4
+Q(ath)-.15 E(Allo)153 458.4 Q(w)-.25 E F2(:include:)2.5 E F1
+(\214les in unsafe directories.)2.5 E -.15(Fo)117 474.6 S(rw).15 E
+(ardFileInUnsafeDirP)-.1 E(athSafe)-.15 E(Allo)153 486.6 Q 2.612(wa)-.25
+G F2(.forwar)A(d)-.37 E F1 .112(\214le that is in an unsafe directory to include references to program and)
+2.612 F(\214les.)153 498.6 Q(IncludeFileInUnsafeDirP)117 514.8 Q
+(athSafe)-.15 E(Allo)153 526.8 Q 3.705(wa)-.25 G F2(:include:)A F1 1.206
+(\214le that is in an unsafe directory to include references to program)
+3.705 F(and \214les.)153 538.8 Q(MapInUnsafeDirP)117 555 Q(ath)-.15 E
+(Allo)153 567 Q 2.5(wm)-.25 G(aps \(e.g.,)-2.5 E F2(hash)2.5 E F1(,)A F2
+(btr)2.5 E(ee)-.37 E F1 2.5(,a)C(nd)-2.5 E F2(dbm)2.5 E F1
+(\214les\) in unsafe directories.)2.5 E(Link)117 583.2 Q
+(edAliasFileInWritableDir)-.1 E(Allo)153 595.2 Q 2.5(wa)-.25 G 2.5(na)
+-2.5 G(lias \214le that is a link in a writable directory)-2.5 E(.)-.65
+E(Link)117 611.4 Q(edClassFileInWritableDir)-.1 E(Allo)153 623.4 Q 2.5
+(wc)-.25 G(lass \214les that are links in writable directories.)-2.5 E
+(Link)117 639.6 Q(edF)-.1 E(orw)-.15 E(ardFileInWritableDir)-.1 E(Allo)
+153 651.6 Q(w)-.25 E F2(.forwar)2.5 E(d)-.37 E F1
+(\214les that are links in writable directories.)2.5 E(Link)117 667.8 Q
+(edIncludeFileInWritableDir)-.1 E(Allo)153 679.8 Q(w)-.25 E F2
+(:include:)2.5 E F1(\214les that are links in writable directories.)2.5
+E(Link)117 696 Q(edMapInWritableDir)-.1 E(Allo)153 708 Q 2.5(wm)-.25 G
+(ap \214les that are links in writable directories.)-2.5 E EP
+%%Page: 29 25
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-27)195.86 E/F1 10/Times-Roman@0 SF 1.191(The database that)142
-96 R/F2 10/Times-Italic@0 SF(sendmail)3.691 E F1 1.191
-(actually used is represented by the tw)3.691 F 3.69<6f8c>-.1 G(les)
--3.69 E F2(aliases.dir)3.69 E F1(and)3.69 E F2(aliases.pa)117 108 Q(g)
--.1 E F1 .158(\(both in /etc\) \(or)2.658 F F2(aliases.db)2.658 E F1
-.159(if you are running with the ne)2.659 F 2.659(wB)-.25 G(erk)-2.659 E
-(ele)-.1 E 2.659(yd)-.15 G .159(atabase prim-)-2.659 F(iti)117 120 Q
--.15(ve)-.25 G 3.607(s\). The).15 F 1.107
-(mode on these \214les should match the mode on /etc/aliases.)3.607 F
-(If)6.106 E F2(aliases)3.606 E F1 1.106(is writable)3.606 F 1.624
-(and the DBM \214les \()117 132 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)-4.124 F .72
-(desired changes through to the actual database.)117 144 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 .719(is read-only and the DBM)3.219 F(\214les are writable, a slightly sophisticated user can arrange to steal mail an)
-117 156 Q(yw)-.15 E(ay)-.1 E(.)-.65 E .62
-(If your DBM \214les are not writable by the w)142 172.2 R .621
-(orld or you do not ha)-.1 F .921 -.15(ve a)-.2 H(uto-reb).15 E .621
-(uild enabled)-.2 F 3.029(\(with the)117 184.2 R F0 -.5(Au)5.529 G
-(toReb).5 E(uildAliases)-.2 E F1 3.028
-(option\), then you must be careful to reconstruct the alias)5.529 F
-(database each time you change the te)117 196.2 Q(xt v)-.15 E(ersion:)
--.15 E(ne)157 212.4 Q -.1(wa)-.25 G(liases).1 E
-(If this step is ignored or for)117 228.6 Q(gotten an)-.18 E 2.5(yi)-.15
-G(ntended changes will also be ignored or for)-2.5 E(gotten.)-.18 E F0
-2.5(4.8. Connection)87 252.6 R(Caching)2.5 E F1 .642
-(When processing the queue,)127 268.8 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)-3.142 F -.2(avo)102 280.8 S
-(id startup and shutdo).2 E(wn costs.)-.25 E
+(SMM:08-29)195.86 E/F1 10/Times-Roman@0 SF(Link)117 96 Q
+(edServiceSwitchFileInWritableDir)-.1 E(Allo)153 108 Q 2.5(wt)-.25 G
+(he service switch \214le to be a link e)-2.5 E -.15(ve)-.25 G 2.5(ni)
+.15 G 2.5(ft)-2.5 G(he directory is writable.)-2.5 E(FileDeli)117 124.2
+Q -.15(ve)-.25 G(ryT).15 E(oHardLink)-.8 E(Allo)153 136.2 Q 2.5(wd)-.25
+G(eli)-2.5 E -.15(ve)-.25 G(ry to \214les that are hard links.).15 E
+(FileDeli)117 152.4 Q -.15(ve)-.25 G(ryT).15 E(oSymLink)-.8 E(Allo)153
+164.4 Q 2.5(wd)-.25 G(eli)-2.5 E -.15(ve)-.25 G
+(ry to \214les that are symbolic links.).15 E(RunProgramInUnsafeDirP)117
+180.6 Q(ath)-.15 E
+(Go ahead and run programs that are in writable directories.)153 192.6 Q
+(RunWritableProgram)117 208.8 Q
+(Go ahead and run programs that are group- or w)153 220.8 Q
+(orld-writable.)-.1 E(WriteMapT)117 237 Q(oHardLink)-.8 E(Allo)153 249 Q
+2.5(ww)-.25 G(rites to maps that are hard links.)-2.5 E(WriteMapT)117
+265.2 Q(oSymLink)-.8 E(Allo)153 277.2 Q 2.5(ww)-.25 G
+(rites to maps that are symbolic links.)-2.5 E(WriteStatsT)117 293.4 Q
+(oHardLink)-.8 E(Allo)153 305.4 Q 2.5(wt)-.25 G
+(he status \214le to be a hard link.)-2.5 E(WriteStatsT)117 321.6 Q
+(oSymLink)-.8 E(Allo)153 333.6 Q 2.5(wt)-.25 G
+(he status \214le to be a symbolic link.)-2.5 E F0 2.5(4.8. Connection)
+87 357.6 R(Caching)2.5 E F1 .642(When processing the queue,)127 373.8 R
+/F2 10/Times-Italic@0 SF(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)
+-3.142 F -.2(avo)102 385.8 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 297
-R .286(If an open connection is found,)5.286 F 1.033
-(it is probed to see if it is still acti)102 309 R 1.333 -.15(ve b)-.25
+(When trying to open a connection the cache is \214rst searched.)127 402
+R .287(If an open connection is found,)5.286 F 1.034
+(it is probed to see if it is still acti)102 414 R 1.333 -.15(ve b)-.25
H 3.533(ys).15 G 1.033(ending a)-3.533 F/F3 9/Times-Roman@0 SF(RSET)
-3.533 E F1 3.534(command. It)3.534 F 1.034(is not an error if this f)
-3.534 F(ails;)-.1 E(instead, the connection is closed and reopened.)102
-321 Q -1 -.8(Tw o)127 337.2 T .408
+3.533 E F1 3.533(command. It)3.533 F 1.033(is not an error if this f)
+3.533 F(ails;)-.1 E(instead, the connection is closed and reopened.)102
+426 Q -1 -.8(Tw o)127 442.2 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)-2.908 F .145
(the number of simultaneous open connections that will be permitted.)102
-349.2 R .145(If it is set to zero, connections)5.145 F .213
-(will be closed as quickly as possible.)102 361.2 R .212(The def)5.212 F
-.212(ault is one.)-.1 F .212(This should be set as appropriate for your)
-5.212 F .629
+454.2 R .145(If it is set to zero, connections)5.145 F .212
+(will be closed as quickly as possible.)102 466.2 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
-373.2 R F2(sendmail)3.13 E F1 .63(will use during queue runs.)3.13 F(Ne)
-102 385.2 Q -.15(ve)-.25 G 2.5(rs).15 G(et this higher than 4.)-2.5 E
-(The)127 401.4 Q F0(ConnectionCacheT)2.741 E(imeout)-.18 E F1(\()2.741 E
+478.2 R F2(sendmail)3.129 E F1 .629(will use during queue runs.)3.129 F
+(Ne)102 490.2 Q -.15(ve)-.25 G 2.5(rs).15 G(et this higher than 4.)-2.5
+E(The)127 506.4 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)
--2.741 F 2.741(yc)-.15 G .24(ached con-)-2.741 F .899
-(nection will be permitted to idle.)102 413.4 R .899
-(When the idle time e)5.899 F .9(xceeds this v)-.15 F .9
+-2.741 F 2.741(yc)-.15 G .241(ached con-)-2.741 F .9
+(nection will be permitted to idle.)102 518.4 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 425.4 R
+(This number should be small \(under ten minutes\) to pre)102 530.4 R
-.15(ve)-.25 G .34(nt you from grabbing too man).15 F 2.84(yr)-.15 G
-(esources)-2.84 E(from other hosts.)102 437.4 Q(The def)5 E
+(esources)-2.84 E(from other hosts.)102 542.4 Q(The def)5 E
(ault is \214v)-.1 E 2.5(em)-.15 G(inutes.)-2.5 E F0 2.5(4.9. Name)87
-461.4 R(Ser)2.5 E -.1(ve)-.1 G 2.5(rA).1 G(ccess)-2.5 E F1 .103
-(Control of host address lookups is set by the)127 477.6 R F0(hosts)
-2.604 E F1 .104(service entry in your service switch \214le.)2.604 F(If)
-5.104 E .99(you are on a system that has b)102 489.6 R .99
+566.4 R(Ser)2.5 E -.1(ve)-.1 G 2.5(rA).1 G(ccess)-2.5 E F1 .104
+(Control of host address lookups is set by the)127 582.6 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 594.6 R .99
(uilt-in service switch support \(e.g., Ultrix, Solaris, or DEC OSF/1\))
--.2 F .335(then your system is probably con\214gured properly already)
-102 501.6 R 5.335(.O)-.65 G(therwise,)-5.335 E F2(sendmail)2.836 E F1
-.336(will consult the \214le)2.836 F F0(/etc/ser)102 513.6 Q
-(vice.switch)-.1 E F1 2.5(,w)C(hich should be created.)-2.5 E F2
-(Sendmail)5 E F1(only uses tw)2.5 E 2.5(oe)-.1 G(ntries:)-2.5 E F0
-(hosts)2.5 E F1(and)2.5 E F0(aliases)2.5 E F1(.)A(Ho)127 529.8 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.557(service switch entry)102
-541.8 R 6.558(.I)-.65 G 4.058(np)-6.558 G(articular)-4.058 E 4.058(,t)
--.4 G 1.558(he system routine)-4.058 F F2 -.1(ge)4.058 G(thostbyname).1
-E F1 1.558(\(3\) is used to look up host)B .462(names, and man)102 553.8
-R 2.962(yv)-.15 G .462(endor v)-3.112 F .461(ersions try some combination of DNS, NIS, and \214le lookup in /etc/hosts)
--.15 F .536(without consulting a service switch.)102 565.8 R F2
-(Sendmail)5.536 E F1(mak)3.036 E .536(es no attempt to w)-.1 F .537
-(ork around this problem, and)-.1 F .271(the DNS lookup will be done an)
-102 577.8 R(yw)-.15 E(ay)-.1 E 5.271(.I)-.65 G 2.771(fy)-5.271 G .271
-(ou do not ha)-2.771 F .57 -.15(ve a n)-.2 H(ameserv).15 E .27
-(er con\214gured at all, such as at)-.15 F 2.854(aU)102 589.8 S .354
-(UCP-only site,)-2.854 F F2(sendmail)2.854 E F1 .354(will get a \231connection refused\232 message when it tries to connect to the)
-2.854 F .623(name serv)102 601.8 R(er)-.15 E 5.623(.I)-.55 G 3.123(ft)
--5.623 G(he)-3.123 E F0(hosts)3.123 E F1 .622
-(switch entry has the service \231dns\232 listed some)3.123 F .622
-(where in the list,)-.25 F F2(sendmail)3.122 E F1 .912
-(will interpret this to mean a temporary f)102 613.8 R .912
-(ailure and will queue the mail for later processing; other)-.1 F(-)-.2
-E(wise, it ignores the name serv)102 625.8 Q(er data.)-.15 E .673
-(The same technique is used to decide whether to do MX lookups.)127 642
-R .672(If you w)5.672 F .672(ant MX support,)-.1 F(you)102 654 Q F2
-(must)2.5 E F1(ha)2.5 E .3 -.15(ve \231)-.2 H
+-.2 F .336(then your system is probably con\214gured properly already)
+102 606.6 R 5.335(.O)-.65 G(therwise,)-5.335 E F2(sendmail)2.835 E F1
+.335(will consult the \214le)2.835 F F0(/etc/ser)102 618.6 Q
+(vice.switch)-.1 E F1 3.775(,w)C 1.276(hich should be created.)-3.775 F
+F2(Sendmail)6.276 E F1 1.276(only uses tw)3.776 F 3.776(oe)-.1 G
+(ntries:)-3.776 E F0(hosts)3.776 E F1(and)3.776 E F0(aliases)3.776 E F1
+(,)A .147(although system routines may use other services \(notably the)
+102 630.6 R F0(passwd)2.646 E F1 .146(service for user name lookups)
+2.646 F(by)102 642.6 Q F2 -.1(ge)2.5 G(tpwname).1 E F1(\).)A(Ho)127
+658.8 Q(we)-.25 E -.15(ve)-.25 G 1.51 -.4(r, s).15 H .711
+(ome systems \(such as SunOS 4.X\) will do DNS lookups re).4 F -.05(ga)
+-.15 G .711(rdless of the setting).05 F 1.029
+(of the service switch entry)102 670.8 R 6.029(.I)-.65 G 3.529(np)-6.029
+G(articular)-3.529 E 3.529(,t)-.4 G 1.029(he system routine)-3.529 F F2
+-.1(ge)3.529 G(thostbyname).1 E F1 1.028(\(3\) is used to look up)B
+1.868(host names, and man)102 682.8 R 4.368(yv)-.15 G 1.868(endor v)
+-4.518 F 1.869
+(ersions try some combination of DNS, NIS, and \214le lookup in)-.15 F
+1.731(/etc/hosts without consulting a service switch.)102 694.8 R F2
+(Sendmail)6.731 E F1(mak)4.231 E 1.731(es no attempt to w)-.1 F 1.73
+(ork around this)-.1 F .367(problem, and the DNS lookup will be done an)
+102 706.8 R(yw)-.15 E(ay)-.1 E 5.368(.I)-.65 G 2.868(fy)-5.368 G .368
+(ou do not ha)-2.868 F .668 -.15(ve a n)-.2 H(ameserv).15 E .368
+(er con\214gured at)-.15 F .464(all, such as at a UUCP-only site,)102
+718.8 R F2(sendmail)2.964 E F1 .464
+(will get a \231connection refused\232 message when it tries to)2.964 F
+EP
+%%Page: 30 26
+%%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 .423
+(connect to the name serv)102 96 R(er)-.15 E 5.423(.I)-.55 G 2.923(ft)
+-5.423 G(he)-2.923 E F0(hosts)2.923 E F1 .424
+(switch entry has the service \231dns\232 listed some)2.923 F .424
+(where in the)-.25 F(list,)102 108 Q/F2 10/Times-Italic@0 SF(sendmail)
+3.313 E F1 .813(will interpret this to mean a temporary f)3.313 F .813
+(ailure and will queue the mail for later pro-)-.1 F
+(cessing; otherwise, it ignores the name serv)102 120 Q(er data.)-.15 E
+.672(The same technique is used to decide whether to do MX lookups.)127
+136.2 R .673(If you w)5.673 F .673(ant MX support,)-.1 F(you)102 148.2 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 670.2 Q F0(Resolv)3.869 E
-(erOptions)-.1 E F1(\()3.869 E F0(I)A F1 3.869(\)o)C 1.369(ption allo)
--3.869 F 1.369(ws you to tweak name serv)-.25 F 1.369(er options.)-.15 F
-1.37(The command)6.37 F .892(line tak)102 682.2 R .892
+(switch entry)2.5 E(.)-.65 E(The)127 164.4 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)-3.869 F 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 176.4 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 694.2 Q/F4 10
+(Each)5.892 E(can be preceded by an optional `+' or `)102 188.4 Q/F3 10
/Symbol SF(-)A F1 2.5('. F)B(or e)-.15 E(xample, the line)-.15 E 2.5(OR)
-142 710.4 S(esolv)-2.5 E(erOptions=+AA)-.15 E(ONL)-.55 E(Y)-1 E F4(-)2.5
-E F1(DNSRCH)A EP
-%%Page: 28 24
-%%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/F1 10/Times-Roman@0 SF .861
-(turns on the AA)102 96 R(ONL)-.55 E 3.361(Y\()-1 G .861
-(accept authoritati)-3.361 F 1.161 -.15(ve a)-.25 H .861
-(nswers only\) and turns of).15 F 3.362(ft)-.25 G .862
-(he DNSRCH \(search the)-3.362 F 2.039(domain path\) options.)102 108 R
-2.039(Most resolv)7.039 F 2.039(er libraries def)-.15 F 2.039
+142 204.6 S(esolv)-2.5 E(erOptions=+AA)-.15 E(ONL)-.55 E(Y)-1 E F3(-)2.5
+E F1(DNSRCH)A .862(turns on the AA)102 220.8 R(ONL)-.55 E 3.362(Y\()-1 G
+.862(accept authoritati)-3.362 F 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)-3.361 F 2.039(domain path\) options.)102 232.8
+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 120 R 3.003(f. Y)-.25 F .503
+(\215ags on and all others of)102 244.8 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.973
-(card MX record matching your domain; this turns of)102 132 R 4.472(fM)
--.25 G 4.472(Xm)-4.472 G 1.972(atching when canonifying names,)-4.472 F
-(which can lead to inappropriate canoni\214cations.)102 144 Q -1.11(Ve)
-127 160.2 S 2.256(rsion le)1.11 F -.15(ve)-.25 G 4.756(l1c).15 G 2.256
-(on\214gurations turn DNSRCH and DEFN)-4.756 F 2.257(AMES of)-.35 F
-4.757(fw)-.25 G 2.257(hen doing deli)-4.757 F -.15(ve)-.25 G(ry).15 E
-2.06(lookups, b)102 172.2 R 2.06(ut lea)-.2 F 2.36 -.15(ve t)-.2 H 2.06
+(ildcardMX\232 to specify that there is a wild-)-.4 F 1.972
+(card MX record matching your domain; this turns of)102 256.8 R 4.472
+(fM)-.25 G 4.473(Xm)-4.472 G 1.973(atching when canonifying names,)
+-4.473 F(which can lead to inappropriate canoni\214cations.)102 268.8 Q
+-1.11(Ve)127 285 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)-4.757 F 2.256(AMES of)-.35 F
+4.756(fw)-.25 G 2.256(hen doing deli)-4.756 F -.15(ve)-.25 G(ry).15 E
+2.06(lookups, b)102 297 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 10/Times-Italic@0 SF(sendmail)4.56 E F1 2.06
+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
-184.2 R -.1(wa)-.1 G .313(ys does the search.).1 F .313(If you don')
-5.313 F 2.813(tw)-.18 G(ant)-2.913 E(to do automatic name e)102 196.2 Q
-(xtension, don')-.15 E 2.5(tc)-.18 G(all $[ ... $].)-2.5 E .486
-(The search rules for $[ ... $] are some)127 212.4 R .485(what dif)-.25
-F .485(ferent than usual.)-.25 F .485(If the name being look)5.485 F
-.485(ed up)-.1 F .109(has at least one dot, it al)102 224.4 R -.1(wa)-.1
-G .109(ys tries the unmodi\214ed name \214rst.).1 F .11(If that f)5.11 F
-.11(ails, it tries the reduced search)-.1 F .124
-(path, and lastly tries the unmodi\214ed name \(b)102 236.4 R .124
+309 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)-2.912 E(to do automatic name e)102 321 Q
+(xtension, don')-.15 E 2.5(tc)-.18 G(all $[ ... $].)-2.5 E .485
+(The search rules for $[ ... $] are some)127 337.2 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 349.2 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 361.2 R .124
(ut only for names without a dot, since names with a dot)-.2 F(ha)102
-248.4 Q .788 -.15(ve a)-.2 H .488(lready been tried\).).15 F .488
-(This allo)5.488 F .489(ws names such as `)-.25 F(`utc.CS')-.74 E 2.989
-('t)-.74 G 2.989(om)-2.989 G .489(atch the site in Czechoslo)-2.989 F
--.25(va)-.15 G(kia).25 E 1.588
+373.2 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)-2.989 G .488(atch the site in Czechoslo)-2.988 F
+-.25(va)-.15 G(kia).25 E 1.587
(rather than the site in your local Computer Science department.)102
-260.4 R 1.587(It also prefers A and CN)6.587 F(AME)-.35 E .512
-(records o)102 272.4 R -.15(ve)-.15 G 3.012(rM).15 G 3.012(Xr)-3.012 G
-.512(ecords \212 that is, if it \214nds an MX record it mak)-3.012 F
-.513(es note of it, b)-.1 F .513(ut k)-.2 F .513(eeps looking.)-.1 F
-1.542(This w)102 284.4 R(ay)-.1 E 4.042(,i)-.65 G 4.042(fy)-4.042 G
-1.541(ou ha)-4.042 F 1.841 -.15(ve a w)-.2 H 1.541
+385.2 R 1.588(It also prefers A and CN)6.587 F(AME)-.35 E .513
+(records o)102 397.2 R -.15(ve)-.15 G 3.013(rM).15 G 3.013(Xr)-3.013 G
+.513(ecords \212 that is, if it \214nds an MX record it mak)-3.013 F
+.512(es note of it, b)-.1 F .512(ut k)-.2 F .512(eeps looking.)-.1 F
+1.541(This w)102 409.2 R(ay)-.1 E 4.041(,i)-.65 G 4.041(fy)-4.041 G
+1.541(ou ha)-4.041 F 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 296.4 Q 3.453 -.8(To c)127 312.6 T 1.853
+F(names match.)102 421.2 Q 3.454 -.8(To c)127 437.4 T 1.853
(ompletely turn of).8 F 4.353(fa)-.25 G 1.853(ll name serv)-4.353 F
-1.853(er access on systems without service switch support)-.15 F .579
-(\(such as SunOS\) you will ha)102 324.6 R .879 -.15(ve t)-.2 H 3.078
-(or).15 G .578(ecompile with \255DN)-3.078 F .578(AMED_BIND=0 and remo)
--.35 F .878 -.15(ve \255)-.15 H .578(lresolv from).15 F
-(the list of libraries to be searched when linking.)102 336.6 Q F0 2.5
-(4.10. Mo)87 360.6 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 376.8 R
+1.853(er access on systems without service switch support)-.15 F .941
+(\(such as SunOS 4.X\) you will ha)102 449.4 R 1.242 -.15(ve t)-.2 H
+3.442(or).15 G .942(ecompile with \255DN)-3.442 F .942
+(AMED_BIND=0 and remo)-.35 F 1.242 -.15(ve \255)-.15 H(lresolv).15 E
+(from the list of libraries to be searched when linking.)102 461.4 Q F0
+2.5(4.10. Mo)87 485.4 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 501.6 R
3.272(sh)-.55 G .772(ome directory from a local disk on their w)-3.272 F
-.772(orkstation, so that)-.1 F .576(local access is f)102 388.8 R 3.076
-(ast. Ho)-.1 F(we)-.25 E -.15(ve)-.25 G 1.376 -.4(r, t).15 H .575
+.772(orkstation, so that)-.1 F .575(local access is f)102 513.6 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.375 -.65(w. I)-.25 H 3.075(ns).65 G .575(ome cases, mail)-3.075 F .216
-(can e)102 400.8 R -.15(ve)-.25 G 2.716(nb).15 G 2.716(ed)-2.716 G(eli)
+4.376 -.65(w. I)-.25 H 3.076(ns).65 G .576(ome cases, mail)-3.076 F .216
+(can e)102 525.6 R -.15(ve)-.25 G 2.716(nb).15 G 2.716(ed)-2.716 G(eli)
-2.716 E -.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 412.8 Q(.)
--.55 E(The)127 429 Q F0 -.25(Fo)2.744 G(rwardP).25 E(ath)-.1 E F1(\()
-2.744 E F0(J)A F1 2.743(\)o)C .243(ption allo)-2.743 F .243
+(mance can be especially bad if you run the automounter)102 537.6 Q(.)
+-.55 E(The)127 553.8 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)-2.743 F .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 .243(xample, the con-)-2.893 F(\214g \214le line)
-102 441 Q 2.5(OF)142 457.2 S(orw)-2.65 E(ardP)-.1 E(ath=/v)-.15 E
-(ar/forw)-.25 E(ard/$u:$z/.forw)-.1 E(ard.$w)-.1 E -.1(wo)102 473.4 S
-.207(uld \214rst look for a \214le with the same name as the user').1 F
-2.708(sl)-.55 G .208(ogin in /v)-2.708 F(ar/forw)-.25 E .208
-(ard; if that is not found)-.1 F 1.171
-(\(or is inaccessible\) the \214le `)102 485.4 R(`.forw)-.74 E(ard.)-.1
+5.243 G 2.743(re).15 G .244(xample, the con-)-2.893 F(\214g \214le line)
+102 565.8 Q 2.5(OF)142 582 S(orw)-2.65 E(ardP)-.1 E(ath=/v)-.15 E
+(ar/forw)-.25 E(ard/$u:$z/.forw)-.1 E(ard.$w)-.1 E -.1(wo)102 598.2 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)-2.707 F(ar/forw)-.25 E .207
+(ard; if that is not found)-.1 F 1.17
+(\(or is inaccessible\) the \214le `)102 610.2 R(`.forw)-.74 E(ard.)-.1
E F2(mac)A(hinename)-.15 E F1 2.651 -.74('' i)D 3.671(nt).74 G 1.171
-(he user')-3.671 F 3.671(sh)-.55 G 1.17(ome directory is searched.)
--3.671 F(A)6.17 E(truly perv)102 497.4 Q
+(he user')-3.671 F 3.671(sh)-.55 G 1.171(ome directory is searched.)
+-3.671 F(A)6.171 E(truly perv)102 622.2 Q
(erse site could also search by sender by using $r)-.15 E 2.5(,$)-.4 G
-(s, or $f.)-2.5 E .69(If you create a directory such as /v)127 513.6 R
+(s, or $f.)-2.5 E .69(If you create a directory such as /v)127 638.4 R
(ar/forw)-.25 E .69(ard, it should be mode 1777 \(that is, the stick)-.1
-F 3.19(yb)-.15 G(it)-3.19 E(should be set\).)102 525.6 Q
-(Users should create the \214les mode 644.)5 E F0 2.5(4.11. Fr)87 549.6
-R(ee Space)-.18 E F1 1.406(On systems that ha)127 565.8 R 1.706 -.15
-(ve o)-.2 H 1.405(ne of the system calls in the).15 F F2(statfs)3.905 E
-F1 1.405(\(2\) f)B 1.405(amily \(including)-.1 F F2(statvfs)3.905 E F1
-(and)3.905 E F2(ustat)102 577.8 Q F1 .839(\), you can specify a minimum number of free blocks on the queue \214lesystem using the)
-B F0(Min-)3.34 E(Fr)102 589.8 Q(eeBlocks)-.18 E F1(\()2.554 E F0(b)A F1
+F 3.19(yb)-.15 G(it)-3.19 E .134(should be set\).)102 650.4 R .134
+(Users should create the \214les mode 644.)5.134 F .135
+(Note that you must use the forw)5.134 F(ard\214leinun-)-.1 E 1.1
+(safedirpath and forw)102 662.4 R 1.1(ard\214leinunsafedirpathsafe \215ags with the DontBlameSendmail option to allo)
+-.1 F(w)-.25 E(forw)102 674.4 Q 1.168(ard \214les in a w)-.1 F 1.169
+(orld writable directory)-.1 F 6.169(.T)-.65 G 1.169
+(his might also be used as a denial of service attack)-6.169 F .635
+(\(users could create forw)102 686.4 R .635
+(ard \214les for other users\); a better approach might be to create /v)
+-.1 F(ar/forw)-.25 E(ard)-.1 E .661
+(mode 755 and create empty \214les for each user)102 698.4 R 3.161(,o)
+-.4 G .661(wned by that user)-3.411 F 3.161(,m)-.4 G .661(ode 644.)
+-3.161 F .661(If you do this, you)5.661 F(don')102 710.4 Q 2.5(th)-.18 G
+-2.25 -.2(av e)-2.5 H
+(to set the DontBlameSendmail options indicated abo)2.7 E -.15(ve)-.15 G
+(.).15 E EP
+%%Page: 31 27
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-31)195.86 E 2.5(4.11. Fr)87 96 R(ee Space)-.18 E/F1 10
+/Times-Roman@0 SF 1.406(On systems that ha)127 112.2 R 1.706 -.15(ve o)
+-.2 H 1.405(ne of the system calls in the).15 F/F2 10/Times-Italic@0 SF
+(statfs)3.905 E F1 1.405(\(2\) f)B 1.405(amily \(including)-.1 F F2
+(statvfs)3.905 E F1(and)3.905 E F2(ustat)102 124.2 Q F1 .839(\), you can specify a minimum number of free blocks on the queue \214lesystem using the)
+B F0(Min-)3.34 E(Fr)102 136.2 Q(eeBlocks)-.18 E F1(\()2.554 E F0(b)A F1
2.554(\)o)C 2.553(ption. If)-2.554 F .053(there are fe)2.553 F .053
(wer than the indicated number of blocks free on the \214lesystem)-.25 F
-1.354(on which the queue is mounted the SMTP serv)102 601.8 R 1.355
+1.354(on which the queue is mounted the SMTP serv)102 148.2 R 1.355
(er will reject mail with the 452 error code.)-.15 F(This)6.355 E(in)102
-613.8 Q(vites the SMTP client to try ag)-.4 E(ain later)-.05 E(.)-.55 E
-(Be)127 630 Q -.1(wa)-.25 G .746(re of setting this option too high; it can cause rejection of email when that mail w)
-.1 F(ould)-.1 E(be processed without dif)102 642 Q(\214culty)-.25 E(.)
--.65 E F0 2.5(4.12. Maximum)87 666 R(Message Size)2.5 E F1 2.077 -.8
-(To a)127 682.2 T -.2(vo).6 G .477(id o).2 F -.15(ve)-.15 G(r\215o).15 E
+160.2 Q(vites the SMTP client to try ag)-.4 E(ain later)-.05 E(.)-.55 E
+(Be)127 176.4 Q -.1(wa)-.25 G .746(re of setting this option too high; it can cause rejection of email when that mail w)
+.1 F(ould)-.1 E(be processed without dif)102 188.4 Q(\214culty)-.25 E(.)
+-.65 E F0 2.5(4.12. Maximum)87 212.4 R(Message Size)2.5 E F1 2.077 -.8
+(To a)127 228.6 T -.2(vo).6 G .477(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.978 E F1 .478(option can be)2.978 F .693
-(set to set an absolute limit on the size of an)102 694.2 R 3.193(yo)
+(set to set an absolute limit on the size of an)102 240.6 R 3.193(yo)
-.15 G .693(ne message.)-3.193 F .692(This will be adv)5.692 F .692
-(ertised in the ESMTP)-.15 F(dialogue and check)102 706.2 Q
-(ed during message collection.)-.1 E EP
-%%Page: 29 25
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-29)195.86 E 2.5(4.13. Pri)87 96 R -.1(va)-.1 G(cy Flags).1 E/F1
-10/Times-Roman@0 SF(The)127 112.2 Q F0(Pri)2.96 E -.1(va)-.1 G
+(ertised in the ESMTP)-.15 F(dialogue and check)102 252.6 Q
+(ed during message collection.)-.1 E F0 2.5(4.13. Pri)87 276.6 R -.1(va)
+-.1 G(cy Flags).1 E F1(The)127 292.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)-2.96 F
.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)-2.96 E 2.96(yo)-.15 G(f)-2.96 E .534(them don')102 124.2 R 3.034
+(an)-2.96 E 2.96(yo)-.15 G(f)-2.96 E .534(them don')102 304.8 R 3.034
(tg)-.18 G -2.15 -.25(iv e)-3.034 H .534(you an)3.284 F 3.034(ye)-.15 G
.534(xtra pri)-3.184 F -.25(va)-.25 G -.15(cy).25 G 3.034(,r)-.5 G .534
(ather just insisting that client SMTP serv)-3.034 F .533
(ers use the HELO)-.15 F 2.87
-(command before using certain commands or adding e)102 136.2 R 2.87
-(xtra headers to indicate possible spoof)-.15 F(attempts.)102 148.2 Q
-.124(The option tak)127 164.4 R .124
+(command before using certain commands or adding e)102 316.8 R 2.87
+(xtra headers to indicate possible spoof)-.15 F(attempts.)102 328.8 Q
+.124(The option tak)127 345 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)-2.624 F .424 -.15(ve o)
-.25 H 2.624(ro).15 G 2.624(ft)-2.624 G .123(hose \215ags.)-2.624 F -.15
-(Fo)5.123 G(r).15 E -.15(ex)102 176.4 S(ample:).15 E 2.5(OP)142 192.6 S
+(Fo)5.123 G(r).15 E -.15(ex)102 357 S(ample:).15 E 2.5(OP)142 373.2 S
(ri)-2.5 E -.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 208.8 R(ables the EXPN command.)102 220.8 Q
-(The \215ags are detailed in section 5.6.)127 237 Q F0 2.5(4.14. Send)87
-261 R(to Me T)2.5 E(oo)-.92 E F1(Normally)127 277.2 Q(,)-.65 E/F2 10
-/Times-Italic@0 SF(sendmail)3.424 E F1 .924(deletes the \(en)3.424 F
--.15(ve)-.4 G .923(lope\) sender from an).15 F 3.423(yl)-.15 G .923
-(ist e)-3.423 F 3.423(xpansions. F)-.15 F .923(or e)-.15 F .923
-(xample, if)-.15 F .761(\231matt\232 sends to a list that contains \231matt\232 as one of the members he w)
-102 289.2 R(on')-.1 E 3.261(tg)-.18 G .761(et a cop)-3.261 F 3.261(yo)
--.1 G 3.261(ft)-3.261 G .761(he mes-)-3.261 F 2.883(sage. If)102 301.2 R
+102 389.4 R(ables the EXPN command.)102 401.4 Q
+(The \215ags are detailed in section 5.6.)127 417.6 Q F0 2.5(4.14. Send)
+87 441.6 R(to Me T)2.5 E(oo)-.92 E F1(Normally)127 457.8 Q(,)-.65 E F2
+(sendmail)3.424 E F1 .924(deletes the \(en)3.424 F -.15(ve)-.4 G .923
+(lope\) sender from an).15 F 3.423(yl)-.15 G .923(ist e)-3.423 F 3.423
+(xpansions. F)-.15 F .923(or e)-.15 F .923(xample, if)-.15 F .761(\231matt\232 sends to a list that contains \231matt\232 as one of the members he w)
+102 469.8 R(on')-.1 E 3.261(tg)-.18 G .761(et a cop)-3.261 F 3.261(yo)
+-.1 G 3.261(ft)-3.261 G .761(he mes-)-3.261 F 2.883(sage. If)102 481.8 R
(the)2.883 E F0<ad6d>2.883 E F1 .383
(\(me too\) command line \215ag, or if the)2.883 F F0(MeT)2.883 E(oo)
-.92 E F1(\()2.882 E F0(m)A F1 2.882(\)o)C .382
(ption is set in the con\214guration)-2.882 F(\214le, this beha)102
-313.2 Q(viour is suppressed.)-.2 E(Some sites lik)5 E 2.5(et)-.1 G 2.5
+493.8 Q(viour is suppressed.)-.2 E(Some sites lik)5 E 2.5(et)-.1 G 2.5
(or)-2.5 G(un the)-2.5 E/F3 9/Times-Roman@0 SF(SMTP)2.5 E F1
-(daemon with)2.5 E F0<ad6d>2.5 E F1(.)A F0 2.5(5. THE)72 337.2 R
+(daemon with)2.5 E F0<ad6d>2.5 E F1(.)A F0 2.5(5. THE)72 517.8 R
(WHOLE SCOOP ON THE CONFIGURA)2.5 E(TION FILE)-.95 E F1
-(This section describes the con\214guration \214le in detail.)112 353.4
-Q .648(There is one point that should be made clear immediately: the syntax of the con\214guration \214le is)
-112 369.6 R 1.077
-(designed to be reasonably easy to parse, since this is done e)87 381.6
+(This section describes the con\214guration \214le in detail.)112 534 Q
+.648(There is one point that should be made clear immediately: the syntax of the con\214guration \214le is)
+112 550.2 R 1.077
+(designed to be reasonably easy to parse, since this is done e)87 562.2
R -.15(ve)-.25 G 1.076(ry time).15 F F2(sendmail)3.576 E F1 1.076
(starts up, rather than)3.576 F(easy for a human to read or write.)87
-393.6 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 409.8 R -.05(ga)
+574.2 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 590.4 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 421.8 R .102
+(ter de\214ning the semantics for the rest of the line.)87 602.4 R .102
(Lines be)5.102 F .102(ginning with a space or a tab are continuation)
-.15 F 1.322
-(lines \(although the semantics are not well de\214ned in man)87 433.8 R
+(lines \(although the semantics are not well de\214ned in man)87 614.4 R
3.823(yp)-.15 G 3.823(laces\). Blank)-3.823 F 1.323(lines and lines be)
3.823 F(ginning)-.15 E(with a sharp symbol \(`#'\) are comments.)87
-445.8 Q F0 2.5(5.1. R)87 469.8 R(and S \212 Rewriting Rules)2.5 E F1
-.466(The core of address parsing are the re)127 486 R .466
+626.4 Q F0 2.5(5.1. R)87 650.4 R(and S \212 Rewriting Rules)2.5 E F1
+.466(The core of address parsing are the re)127 666.6 R .466
(writing rules.)-.25 F .465(These are an ordered production system.)
-5.466 F F2(Sendmail)102 498 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 510 Q(When a rule matches, the address is replaced by the right hand side \(RHS\) of the rule.)
-5 E .922(There are se)127 526.2 R -.15(ve)-.25 G .922(ral sets of re).15
+5.466 F F2(Sendmail)102 678.6 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 690.6 Q(When a rule matches, the address is replaced by the right hand side \(RHS\) of the rule.)
+5 E .922(There are se)127 706.8 R -.15(ve)-.25 G .922(ral sets of re).15
F .921(writing rules.)-.25 F .921(Some of the re)5.921 F .921
-(writing sets are used internally and)-.25 F .359(must ha)102 538.2 R
+(writing sets are used internally and)-.25 F .359(must ha)102 718.8 R
.659 -.15(ve s)-.2 H .359(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 .36
-(peci\214cally assigned semantics, and).15 F
-(may be referenced by the mailer de\214nitions or by other re)102 550.2
-Q(writing sets.)-.25 E(The syntax of these tw)127 566.4 Q 2.5(oc)-.1 G
-(ommands are:)-2.5 E F0(S)142 582.6 Q F2(n)A F1 .249
-(Sets the current ruleset being collected to)102 598.8 R F2(n)2.749 E F1
-5.249(.I)C 2.748(fy)-5.249 G .248(ou be)-2.748 F .248
+(peci\214cally assigned semantics, and).15 F EP
+%%Page: 32 28
+%%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
+(may be referenced by the mailer de\214nitions or by other re)102 96 Q
+(writing sets.)-.25 E(The syntax of these tw)127 112.2 Q 2.5(oc)-.1 G
+(ommands are:)-2.5 E F0(S)142 128.4 Q/F2 10/Times-Italic@0 SF(n)A F1
+.249(Sets the current ruleset being collected to)102 144.6 R F2(n)2.749
+E F1 5.249(.I)C 2.748(fy)-5.249 G .248(ou be)-2.748 F .248
(gin a ruleset more than once it appends to the)-.15 F
-(old de\214nition.)102 610.8 Q F0(R)142 627 Q F2(lhs rhs comments)A F1
+(old de\214nition.)102 156.6 Q F0(R)142 172.8 Q F2(lhs rhs comments)A F1
1.185(The \214elds must be separated by at least one tab character; there may be embedded spaces in the)
-102 643.2 R 2.595(\214elds. The)102 655.2 R F2(lhs)2.595 E F1 .095
+102 189 R 2.595(\214elds. The)102 201 R F2(lhs)2.595 E F1 .095
(is a pattern that is applied to the input.)2.595 F .095
(If it matches, the input is re)5.095 F .094(written to the)-.25 F F2
-(rhs)2.594 E F1(.)A(The)102 667.2 Q F2(comments)2.5 E F1(are ignored.)
-2.5 E .755(Macro e)127 683.4 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 .284(sions of the form)102 695.4 R F0($&)2.784 E F2(x)A F1 .284
-(are performed at run time using a some)2.784 F .283
-(what less general algorithm.)-.25 F .283(This for)5.283 F
-(is intended only for referencing internally de\214ned macros such as)
-102 707.4 Q F0($h)2.5 E F1(that are changed at runtime.)2.5 E EP
-%%Page: 30 26
-%%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 2.5(5.1.1. The)102 96 R
-(left hand side)2.5 E/F1 10/Times-Roman@0 SF 2.77
-(The left hand side of re)142 112.2 R 2.771
+(rhs)2.594 E F1(.)A(The)102 213 Q F2(comments)2.5 E F1(are ignored.)2.5
+E .755(Macro e)127 229.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 .577(sions of the form)102 241.2 R F0($&)3.077 E
+F2(x)A F1 .577(are performed at run time using a some)3.077 F .577
+(what less general algorithm.)-.25 F .577(This is)5.577 F
+(intended only for referencing internally de\214ned macros such as)102
+253.2 Q F0($h)2.5 E F1(that are changed at runtime.)2.5 E F0 2.5
+(5.1.1. The)102 277.2 R(left hand side)2.5 E F1 2.77
+(The left hand side of re)142 293.4 R 2.771
(writing rules contains a pattern.)-.25 F 2.771(Normal w)7.771 F 2.771
-(ords are simply)-.1 F(matched directly)117 124.2 Q 5(.M)-.65 G
+(ords are simply)-.1 F(matched directly)117 305.4 Q 5(.M)-.65 G
(etasyntax is introduced using a dollar sign.)-5 E(The metasymbols are:)
-5 E F0($*)157 140.4 Q F1(Match zero or more tok)10.14 E(ens)-.1 E F0($+)
-157 152.4 Q F1(Match one or more tok)9.44 E(ens)-.1 E F0<24ad>157 164.4
-Q F1(Match e)9.44 E(xactly one tok)-.15 E(en)-.1 E F0($=)157 176.4 Q/F2
-10/Times-Italic@0 SF(x)A F1(Match an)5 E 2.5(yp)-.15 G(hrase in class)
--2.5 E F2(x)2.5 E F0($~)157 188.4 Q F2(x)A F1(Match an)7.37 E 2.5(yw)
--.15 G(ord not in class)-2.6 E F2(x)2.5 E F1 .132(If an)117 204.6 R
-2.632(yo)-.15 G 2.632(ft)-2.632 G .132(hese match, the)-2.632 F 2.632
-(ya)-.15 G .132(re assigned to the symbol)-2.632 F F0($)2.632 E F2(n)A
-F1 .131(for replacement on the right hand side,)2.632 F(where)117 216.6
-Q F2(n)2.5 E F1(is the inde)2.5 E 2.5(xi)-.15 G 2.5(nt)-2.5 G(he LHS.)
--2.5 E -.15(Fo)5 G 2.5(re).15 G(xample, if the LHS:)-2.65 E($\255:$+)157
-232.8 Q(is applied to the input:)117 249 Q(UCB)157 265.2 Q(ARP)-.35 E
-(A:eric)-.92 E(the rule will match, and the v)117 281.4 Q
-(alues passed to the RHS will be:)-.25 E 7.5($1 UCB)157 297.6 R(ARP)-.35
-E(A)-.92 E 7.5($2 eric)157 309.6 R(Additionally)142 330 Q 2.704(,t)-.65
-G .204(he LHS can include)-2.704 F F0($@)2.704 E F1 .204
+5 E F0($*)157 321.6 Q F1(Match zero or more tok)10.14 E(ens)-.1 E F0($+)
+157 333.6 Q F1(Match one or more tok)9.44 E(ens)-.1 E F0<24ad>157 345.6
+Q F1(Match e)9.44 E(xactly one tok)-.15 E(en)-.1 E F0($=)157 357.6 Q F2
+(x)A F1(Match an)5 E 2.5(yp)-.15 G(hrase in class)-2.5 E F2(x)2.5 E F0
+($~)157 369.6 Q F2(x)A F1(Match an)7.37 E 2.5(yw)-.15 G
+(ord not in class)-2.6 E F2(x)2.5 E F1 .132(If an)117 385.8 R 2.632(yo)
+-.15 G 2.632(ft)-2.632 G .132(hese match, the)-2.632 F 2.632(ya)-.15 G
+.132(re assigned to the symbol)-2.632 F F0($)2.632 E F2(n)A F1 .131
+(for replacement on the right hand side,)2.632 F(where)117 397.8 Q F2(n)
+2.5 E F1(is the inde)2.5 E 2.5(xi)-.15 G 2.5(nt)-2.5 G(he LHS.)-2.5 E
+-.15(Fo)5 G 2.5(re).15 G(xample, if the LHS:)-2.65 E($\255:$+)157 414 Q
+(is applied to the input:)117 430.2 Q(UCB)157 446.4 Q(ARP)-.35 E(A:eric)
+-.92 E(the rule will match, and the v)117 462.6 Q
+(alues passed to the RHS will be:)-.25 E 7.5($1 UCB)157 478.8 R(ARP)-.35
+E(A)-.92 E 7.5($2 eric)157 490.8 R(Additionally)142 511.2 Q 2.704(,t)
+-.65 G .204(he LHS can include)-2.704 F F0($@)2.704 E F1 .204
(to match zero tok)2.704 F 2.704(ens. This)-.1 F(is)2.704 E F2(not)2.704
E F1 .204(bound to a)2.704 F F0($)2.705 E F2(n)A F1(on)2.705 E(the RHS, and is normally only used when it stands alone in order to match the null input.)
-117 342 Q F0 2.5(5.1.2. The)102 366 R(right hand side)2.5 E F1 .649
-(When the left hand side of a re)142 382.2 R .649
+117 523.2 Q F0 2.5(5.1.2. The)102 547.2 R(right hand side)2.5 E F1 .649
+(When the left hand side of a re)142 563.4 R .649
(writing rule matches, the input is deleted and replaced by)-.25 F 1.036
-(the right hand side.)117 394.2 R -.8(To)6.036 G -.1(ke).8 G 1.036
+(the right hand side.)117 575.4 R -.8(To)6.036 G -.1(ke).8 G 1.036
(ns are copied directly from the RHS unless the).1 F 3.537(yb)-.15 G
-.15(eg)-3.537 G 1.037(in with a dollar).15 F 2.5(sign. Metasymbols)117
-406.2 R(are:)2.5 E F0($)157 422.4 Q F2(n)A F1
+587.4 R(are:)2.5 E F0($)157 603.6 Q F2(n)A F1
(Substitute inde\214nite tok)40.55 E(en)-.1 E F2(n)2.5 E F1(from LHS)2.5
-E F0($[)157 434.4 Q F2(name)A F0($])A F1(Canonicalize)12.23 E F2(name)
-2.5 E F0($\()157 446.4 Q F2(map k)A -.3(ey)-.1 G F0($@)2.8 E F2(ar)A
+E F0($[)157 615.6 Q F2(name)A F0($])A F1(Canonicalize)12.23 E F2(name)
+2.5 E F0($\()157 627.6 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 458.4 Q -.15(ey)-.1 G(ed mapping function).15 E F0($>)157 470.4 Q
-F2(n)A F1(\231Call\232 ruleset)34.85 E F2(n)2.5 E F0($#)157 482.4 Q F2
+207.55 639.6 Q -.15(ey)-.1 G(ed mapping function).15 E F0($>)157 651.6 Q
+F2(n)A F1(\231Call\232 ruleset)34.85 E F2(n)2.5 E F0($#)157 663.6 Q F2
(mailer)A F1(Resolv)14.44 E 2.5(et)-.15 G(o)-2.5 E F2(mailer)2.5 E F0
-($@)157 494.4 Q F2(host)A F1(Specify)19.58 E F2(host)2.5 E F0($:)157
-506.4 Q F2(user)A F1(Specify)25 E F2(user)2.5 E F1(The)142 526.8 Q F0($)
+($@)157 675.6 Q F2(host)A F1(Specify)19.58 E F2(host)2.5 E F0($:)157
+687.6 Q F2(user)A F1(Specify)25 E F2(user)2.5 E F1(The)142 708 Q F0($)
3.137 E F2(n)A F1 .637(syntax substitutes the corresponding v)3.137 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)-3.137 E F0($~)3.137 E
-F1 .636(match on)3.136 F(the LHS.)117 538.8 Q(It may be used an)5 E
-(ywhere.)-.15 E 2.705(Ah)142 555 S .205(ost name enclosed between)-2.705
-F F0($[)2.705 E F1(and)2.705 E F0($])2.706 E F1 .206(is look)2.706 F
-.206(ed up in the host database\(s\) and replaced)-.1 F 1.683
-(by the canonical name)117 569 R/F3 7/Times-Roman@0 SF(14)-4 I F1 6.683
-(.F)4 K 1.683(or e)-6.833 F 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.706
-(\231$[[128.32.130.2]$]\232 w)117 581 R 2.706(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.707(recognizes it')5.207 F(s)-.55 E
-(numeric IP address without calling the name serv)117 593 Q
-(er and replaces it with it')-.15 E 2.5(sc)-.55 G(anonical name.)-2.5 E
-(The)142 609.2 Q F0($\()3.004 E F1(...)3.004 E F0($\))5.504 E F1 .503(syntax is a more general form of lookup; it uses a named map instead of an)
-3.003 F .809(implicit map.)117 621.2 R .809
-(If no lookup is found, the indicated)5.809 F F2(default)3.309 E F1 .81
-(is inserted; if no def)3.309 F .81(ault is speci\214ed)-.1 F .776
-(and no lookup matches, the v)117 633.2 R .776(alue is left unchanged.)
--.25 F(The)5.776 E F2(ar)3.276 E(guments)-.37 E F1 .775
-(are passed to the map for)3.275 F(possible use.)117 645.2 Q(The)142
-661.4 Q F0($>)2.619 E F2(n)A F1 .119(syntax causes the remainder of the line to be substituted as usual and then passed)
-2.619 F .587(as the ar)117 673.4 R .587(gument to ruleset)-.18 F F2(n)
-3.087 E F1 5.587(.T)C .587(he \214nal v)-5.587 F .586(alue of ruleset)
--.25 F F2(n)3.086 E F1 .586(then becomes the substitution for this)3.086
-F .32 LW 76 683 72 683 DL 80 683 76 683 DL 84 683 80 683 DL 88 683 84
-683 DL 92 683 88 683 DL 96 683 92 683 DL 100 683 96 683 DL 104 683 100
-683 DL 108 683 104 683 DL 112 683 108 683 DL 116 683 112 683 DL 120 683
-116 683 DL 124 683 120 683 DL 128 683 124 683 DL 132 683 128 683 DL 136
-683 132 683 DL 140 683 136 683 DL 144 683 140 683 DL 148 683 144 683 DL
-152 683 148 683 DL 156 683 152 683 DL 160 683 156 683 DL 164 683 160 683
-DL 168 683 164 683 DL 172 683 168 683 DL 176 683 172 683 DL 180 683 176
-683 DL 184 683 180 683 DL 188 683 184 683 DL 192 683 188 683 DL 196 683
-192 683 DL 200 683 196 683 DL 204 683 200 683 DL 208 683 204 683 DL 212
-683 208 683 DL 216 683 212 683 DL/F4 5/Times-Roman@0 SF(14)93.6 693.4 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 EP
-%%Page: 31 27
+F1 .636(match on)3.136 F(the LHS.)117 720 Q(It may be used an)5 E
+(ywhere.)-.15 E EP
+%%Page: 33 29
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-31)195.86 E/F1 10/Times-Roman@0 SF 3.075(rule. The)117 96 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 108 Q F0($@)2.5 E F1(or)2.5 E F0($:)2.5 E F1(.)A(The)142 124.2 Q F0
-($#)2.508 E F1 .008(syntax should)2.508 F/F2 10/Times-Italic@0 SF(only)
-2.508 E F1 .008
-(be used in ruleset zero or a subroutine of ruleset zero.)2.508 F .007
-(It causes)5.007 F -.25(eva)117 136.2 S .684
+(SMM:08-33)195.86 E/F1 10/Times-Roman@0 SF 2.705(Ah)142 96 S .205
+(ost name enclosed between)-2.705 F F0($[)2.705 E F1(and)2.705 E F0($])
+2.706 E F1 .206(is look)2.706 F .206
+(ed up in the host database\(s\) and replaced)-.1 F 1.683
+(by the canonical name)117 110 R/F2 7/Times-Roman@0 SF(15)-4 I F1 6.683
+(.F)4 K 1.683(or e)-6.833 F 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 3.17
+(\231$[[128.32.130.2]$]\232 w)117 122 R 3.17(ould become \231v)-.1 F
+(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G(EDU.).65 E<9a>-.7 E/F3
+10/Times-Italic@0 SF(Sendmail)8.17 E F1 3.17(recognizes its)5.67 F
+(numeric IP address without calling the name serv)117 134 Q
+(er and replaces it with its canonical name.)-.15 E(The)142 150.2 Q F0
+($\()3.004 E F1(...)3.004 E F0($\))5.504 E F1 .503(syntax is a more general form of lookup; it uses a named map instead of an)
+3.003 F .809(implicit map.)117 162.2 R .809
+(If no lookup is found, the indicated)5.809 F F3(default)3.309 E F1 .81
+(is inserted; if no def)3.309 F .81(ault is speci\214ed)-.1 F .776
+(and no lookup matches, the v)117 174.2 R .776(alue is left unchanged.)
+-.25 F(The)5.776 E F3(ar)3.276 E(guments)-.37 E F1 .775
+(are passed to the map for)3.275 F(possible use.)117 186.2 Q(The)142
+202.4 Q F0($>)2.619 E F3(n)A F1 .119(syntax causes the remainder of the line to be substituted as usual and then passed)
+2.619 F .587(as the ar)117 214.4 R .587(gument to ruleset)-.18 F F3(n)
+3.087 E F1 5.587(.T)C .587(he \214nal v)-5.587 F .586(alue of ruleset)
+-.25 F F3(n)3.086 E F1 .586(then becomes the substitution for this)3.086
+F 3.758(rule. The)117 226.4 R F0($>)3.758 E F1 1.258(syntax e)3.758 F
+1.258(xpands e)-.15 F -.15(ve)-.25 G 1.259
+(rything after the ruleset name to the end of the replacement).15 F .976
+(string and then passes that as the initial input to the ruleset.)117
+238.4 R(Recursi)5.976 E 1.276 -.15(ve c)-.25 H .976(alls are allo).15 F
+3.476(wed. F)-.25 F(or)-.15 E -.15(ex)117 250.4 S(ample,).15 E
+($>0 $>3 $1)157 266.6 Q -.15(ex)117 282.8 S(pands $1, passes that to ruleset 3, and then passes the result of ruleset 3 to ruleset 0.)
+.15 E(The)142 299 Q F0($#)2.507 E F1 .007(syntax should)2.507 F F3(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 311 S .685
(luation of the ruleset to terminate immediately).25 F 3.184(,a)-.65 G
-.684(nd signals to)-3.184 F F2(sendmail)3.184 E F1 .685
-(that the address has)3.185 F(completely resolv)117 148.2 Q 2.5(ed. The)
--.15 F(complete syntax is:)2.5 E F0($#)157 164.4 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 180.6 R 3.894(,h)-.4 G 1.394
+.684(nd signals to)-3.184 F F3(sendmail)3.184 E F1 .684
+(that the address has)3.184 F(completely resolv)117 323 Q 2.5(ed. The)
+-.15 F(complete syntax is:)2.5 E F0($#)157 339.2 Q F3(mailer)A F0($@)2.5
+E F3(host)A F0($:)2.5 E F3(user)A F1 1.394(This speci\214es the {mailer)
+117 355.4 R 3.894(,h)-.4 G 1.394
(ost, user} 3-tuple necessary to direct the mailer)-3.894 F 6.394(.I)
--.55 G 3.894(ft)-6.394 G 1.394(he mailer is)-3.894 F .775
-(local the host part may be omitted)117 194.6 R/F3 7/Times-Roman@0 SF
-(15)-4 I F1 5.775(.T)4 K(he)-5.775 E F2(mailer)3.275 E F1 .774
-(must be a single w)3.274 F .774(ord, b)-.1 F .774(ut the)-.2 F F2(host)
-3.274 E F1(and)3.274 E F2(user)3.274 E F1 .252(may be multi-part.)117
-206.6 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)-2.753 E 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 218.6 R .5
+-.55 G 3.894(ft)-6.394 G 1.394(he mailer is)-3.894 F .774
+(local the host part may be omitted)117 369.4 R F2(16)-4 I F1 5.774(.T)4
+K(he)-5.774 E F3(mailer)3.274 E F1 .775(must be a single w)3.274 F .775
+(ord, b)-.1 F .775(ut the)-.2 F F3(host)3.275 E F1(and)3.275 E F3(user)
+3.275 E F1 .253(may be multi-part.)117 381.4 R .253(If the)5.253 F F3
+(mailer)2.753 E F1 .253(is the b)2.753 F .253(uiltin IPC mailer)-.2 F
+2.753(,t)-.4 G(he)-2.753 E F3(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 393.4 R .5
(orking address \(e)-.1 F .5(xactly lik)-.15 F 3(eM)-.1 G 3(Xr)-3 G 3
-(ecords\). The)-3 F F2(user)117 230.6 Q F1 .036(is later re)2.536 F .036
+(ecords\). The)-3 F F3(user)117 405.4 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 .162
-(As a special case, if the mailer speci\214ed has the)117 242.6 R F0
-(F=@)2.662 E F1 .162
+(As a special case, if the mailer speci\214ed has the)117 417.4 R F0
+(F=@)2.662 E F1 .163
(\215ag speci\214ed and the \214rst character of the)2.662 F F0($:)117
-254.6 Q F1 -.25(va)3.376 G .876
-(lue is \231@\232, the \231@\232 is stripped of).25 F .877
+429.4 Q F1 -.25(va)3.377 G .877
+(lue is \231@\232, the \231@\232 is stripped of).25 F .876
(f, and a \215ag is set in the address descriptor that causes)-.25 F
-(sendmail to not do ruleset 5 processing.)117 266.6 Q(Normally)142 282.8
-Q 3.252(,ar)-.65 G .751
-(ule that matches is retried, that is, the rule loops until it f)-3.252
-F 3.251(ails. A)-.1 F .751(RHS may)3.251 F 1.085(also be preceded by a)
-117 294.8 R F0($@)3.585 E F1 1.085(or a)3.585 F F0($:)3.585 E F1 1.085
+(sendmail to not do ruleset 5 processing.)117 441.4 Q(Normally)142 457.6
+Q 3.251(,ar)-.65 G .751
+(ule that matches is retried, that is, the rule loops until it f)-3.251
+F 3.252(ails. A)-.1 F .752(RHS may)3.252 F 1.086(also be preceded by a)
+117 469.6 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($@)-2.5 E F1
-1.086(pre\214x causes the ruleset to)3.586 F 1.46
-(return with the remainder of the RHS as the v)117 306.8 R 3.96(alue. A)
+1.085(pre\214x causes the ruleset to)3.585 F 1.46
+(return with the remainder of the RHS as the v)117 481.6 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 318.8 Q 3.756(,b)-.65 G 1.256
+(immediately)117 493.6 Q 3.756(,b)-.65 G 1.256
(ut the ruleset to continue; this can be used to a)-3.956 F -.2(vo)-.2 G
-1.256(id continued application of a).2 F 2.5(rule. The)117 330.8 R
-(pre\214x is stripped before continuing.)2.5 E(The)142 347 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 363.2 R
-($>7 $1)2.5 E 1.256(matches an)117 379.4 R 1.256
+1.256(id continued application of a).2 F 2.5(rule. The)117 505.6 R
+(pre\214x is stripped before continuing.)2.5 E(The)142 521.8 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 538 R
+($>7 $1)2.5 E 1.256(matches an)117 554.2 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 391.4 Q 1.205
+3.756 F -.2(vo)-.2 G 1.256(id an).2 F(in\214nite loop.)117 566.2 Q 1.205
(Substitution occurs in the order described, that is, parameters from the LHS are substi-)
-142 407.6 R .22(tuted, hostnames are canonicalized, \231subroutines\232 are called, and \214nally)
-117 419.6 R F0($#)2.719 E F1(,)A F0($@)2.719 E F1 2.719(,a)C(nd)-2.719 E
-F0($:)2.719 E F1 .219(are pro-)2.719 F(cessed.)117 431.6 Q F0 2.5
-(5.1.3. Semantics)102 455.6 R(of r)2.5 E(ewriting rule sets)-.18 E F1
-1.522(There are \214v)142 471.8 R 4.023(er)-.15 G -.25(ew)-4.023 G 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 483.8 Q
-1.029(Ruleset three should turn the address into \231canonical form.)142
-500 R 6.029<9a54>-.7 G 1.029(his form should ha)-6.029 F 1.329 -.15
-(ve t)-.2 H(he).15 E(basic syntax:)117 512 Q
-(local-part@host-domain-spec)157 528.2 Q(Ruleset three is applied by)117
-544.4 Q F2(sendmail)2.5 E F1(before doing an)2.5 E(ything with an)-.15 E
-2.5(ya)-.15 G(ddress.)-2.5 E .301
-(If no \231@\232 sign is speci\214ed, then the host-domain-spec)142
-560.6 R F2(may)2.801 E F1 .302(be appended \(box \231D\232 in Fig-)2.801
-F .578(ure 1\) from the sender address \(if the)117 572.6 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 584.6 Q F1(mailer\).)2.5 E 1.021(Ruleset zero is applied after ruleset three to addresses that are going to actually specify)
-142 600.8 R 3.664(recipients. It)117 612.8 R 1.164(must resolv)3.664 F
-3.664(et)-.15 G 3.664(oa)-3.664 G F2({mailer)A 3.664(,h)-1.11 G 1.164
-(ost, user})-3.664 F F1 3.664(triple. The)3.664 F F2(mailer)3.664 E F1
-1.163(must be de\214ned in the)3.664 F .751
-(mailer de\214nitions from the con\214guration \214le.)117 624.8 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 .752(macro for use in)3.252 F(the ar)117 636.8 Q(gv e)-.18 E
-(xpansion of the speci\214ed mailer)-.15 E(.)-.55 E .453
-(Rulesets one and tw)142 653 R 2.953(oa)-.1 G .452
-(re applied to all sender and recipient addresses respecti)-2.953 F -.15
-(ve)-.25 G(ly).15 E 5.452(.T)-.65 G(he)-5.452 E(y)-.15 E
-(are applied before an)117 665 Q 2.5(ys)-.15 G
-(peci\214cation in the mailer de\214nition.)-2.5 E(The)5 E 2.5(ym)-.15 G
-(ust ne)-2.5 E -.15(ve)-.25 G 2.5(rr).15 G(esolv)-2.5 E(e.)-.15 E .32 LW
-76 674.6 72 674.6 DL 80 674.6 76 674.6 DL 84 674.6 80 674.6 DL 88 674.6
-84 674.6 DL 92 674.6 88 674.6 DL 96 674.6 92 674.6 DL 100 674.6 96 674.6
-DL 104 674.6 100 674.6 DL 108 674.6 104 674.6 DL 112 674.6 108 674.6 DL
-116 674.6 112 674.6 DL 120 674.6 116 674.6 DL 124 674.6 120 674.6 DL 128
-674.6 124 674.6 DL 132 674.6 128 674.6 DL 136 674.6 132 674.6 DL 140
-674.6 136 674.6 DL 144 674.6 140 674.6 DL 148 674.6 144 674.6 DL 152
-674.6 148 674.6 DL 156 674.6 152 674.6 DL 160 674.6 156 674.6 DL 164
-674.6 160 674.6 DL 168 674.6 164 674.6 DL 172 674.6 168 674.6 DL 176
-674.6 172 674.6 DL 180 674.6 176 674.6 DL 184 674.6 180 674.6 DL 188
-674.6 184 674.6 DL 192 674.6 188 674.6 DL 196 674.6 192 674.6 DL 200
-674.6 196 674.6 DL 204 674.6 200 674.6 DL 208 674.6 204 674.6 DL 212
-674.6 208 674.6 DL 216 674.6 212 674.6 DL/F4 5/Times-Roman@0 SF(15)93.6
-685 Q/F5 8/Times-Roman@0 SF -.88(Yo)3.2 K 2.725(um).88 G .725(ay w)
--2.725 F .726(ant to use it for special \231per user\232 e)-.08 F 2.726
-(xtensions. F)-.12 F .726(or e)-.12 F .726
+142 582.4 R .219(tuted, hostnames are canonicalized, \231subroutines\232 are called, and \214nally)
+117 594.4 R F0($#)2.719 E F1(,)A F0($@)2.719 E F1 2.72(,a)C(nd)-2.72 E
+F0($:)2.72 E F1 .22(are pro-)2.72 F(cessed.)117 606.4 Q .32 LW 76 655.6
+72 655.6 DL 80 655.6 76 655.6 DL 84 655.6 80 655.6 DL 88 655.6 84 655.6
+DL 92 655.6 88 655.6 DL 96 655.6 92 655.6 DL 100 655.6 96 655.6 DL 104
+655.6 100 655.6 DL 108 655.6 104 655.6 DL 112 655.6 108 655.6 DL 116
+655.6 112 655.6 DL 120 655.6 116 655.6 DL 124 655.6 120 655.6 DL 128
+655.6 124 655.6 DL 132 655.6 128 655.6 DL 136 655.6 132 655.6 DL 140
+655.6 136 655.6 DL 144 655.6 140 655.6 DL 148 655.6 144 655.6 DL 152
+655.6 148 655.6 DL 156 655.6 152 655.6 DL 160 655.6 156 655.6 DL 164
+655.6 160 655.6 DL 168 655.6 164 655.6 DL 172 655.6 168 655.6 DL 176
+655.6 172 655.6 DL 180 655.6 176 655.6 DL 184 655.6 180 655.6 DL 188
+655.6 184 655.6 DL 192 655.6 188 655.6 DL 196 655.6 192 655.6 DL 200
+655.6 196 655.6 DL 204 655.6 200 655.6 DL 208 655.6 204 655.6 DL 212
+655.6 208 655.6 DL 216 655.6 212 655.6 DL/F4 5/Times-Roman@0 SF(15)93.6
+666 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(16)93.6 679.6 Q F5 -.88(Yo)3.2 K 2.726(um)
+.88 G .726(ay w)-2.726 F .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 697.8 Q EP
-%%Page: 32 28
+72 692.4 Q EP
+%%Page: 34 30
%%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 .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(addr)91.915 202.6 Q
-133.2 200.4 111.6 200.4 DL 133.2 200.4 MT -7.2 1.8 RL 0 -3.6 RL CL BL
-133.2 200.4 MT -7.2 1.8 RL 0 -3.6 RL CL ST 154.8 211.2 MT 0 -21.6 RL
--21.6 0 RL 0 21.6 RL CL ST(3)141.5 202.6 Q 176.4 200.4 154.8 200.4 DL
-176.4 200.4 MT -7.2 1.8 RL 0 -3.6 RL CL BL 176.4 200.4 MT -7.2 1.8 RL 0
--3.6 RL CL ST 198 211.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(D)
-183.59 202.6 Q 219.6 200.4 198 200.4 DL 277.2 182.4 255.6 182.4 DL 277.2
-182.4 MT -7.2 1.8 RL 0 -3.6 RL CL BL 277.2 182.4 MT -7.2 1.8 RL 0 -3.6
-RL CL ST 298.8 193.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(1)285.5
-184.6 Q 320.4 182.4 298.8 182.4 DL 320.4 182.4 MT -7.2 1.8 RL 0 -3.6 RL
-CL BL 320.4 182.4 MT -7.2 1.8 RL 0 -3.6 RL CL ST 342 193.2 MT 0 -21.6 RL
--21.6 0 RL 0 21.6 RL CL ST(S)328.42 184.6 Q 363.6 182.4 342 182.4 DL
-277.2 218.4 255.6 218.4 DL 277.2 218.4 MT -7.2 1.8 RL 0 -3.6 RL CL BL
-277.2 218.4 MT -7.2 1.8 RL 0 -3.6 RL CL ST 298.8 229.2 MT 0 -21.6 RL
--21.6 0 RL 0 21.6 RL CL ST(2)285.5 220.6 Q 320.4 218.4 298.8 218.4 DL
-320.4 218.4 MT -7.2 1.8 RL 0 -3.6 RL CL BL 320.4 218.4 MT -7.2 1.8 RL 0
--3.6 RL CL ST 342 229.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(R)
-327.865 220.6 Q 363.6 218.4 342 218.4 DL 421.2 200.4 399.6 200.4 DL
-421.2 200.4 MT -7.2 1.8 RL 0 -3.6 RL CL BL 421.2 200.4 MT -7.2 1.8 RL 0
--3.6 RL CL ST 442.8 211.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(4)
-429.5 202.6 Q 464.4 200.4 442.8 200.4 DL 464.4 200.4 MT -7.2 1.8 RL 0
--3.6 RL CL BL 464.4 200.4 MT -7.2 1.8 RL 0 -3.6 RL CL ST(msg)466.865
-202.6 Q 255.6 182.4 219.6 200.4 DL 255.6 218.4 219.6 200.4 DL 399.6
-200.4 363.6 182.4 DL 399.6 200.4 363.6 218.4 DL 208.8 146.4 187.2 146.4
-DL 208.8 146.4 MT -7.2 1.8 RL 0 -3.6 RL CL BL 208.8 146.4 MT -7.2 1.8 RL
-0 -3.6 RL CL ST 230.4 157.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(0)
-217.1 148.6 Q 252 146.4 230.4 146.4 DL 252 146.4 MT -7.2 1.8 RL 0 -3.6
-RL CL BL 252 146.4 MT -7.2 1.8 RL 0 -3.6 RL CL ST(resolv)265.69 148.6 Q
-(ed address)-.15 E 187.2 146.4 162 200.4 DL(Figure 1 \212 Re)216.045
-248.4 Q(writing set semantics)-.25 E 2.5(D\212s)209.35 260.4 S
-(ender domain addition)-2.5 E 2.5(S\212m)209.35 272.4 S(ailer)-2.5 E
-(-speci\214c sender re)-.2 E(writing)-.25 E 2.5(R\212m)209.35 284.4 S
-(ailer)-2.5 E(-speci\214c recipient re)-.2 E(writing)-.25 E 77 296.4 72
-296.4 DL 79 296.4 74 296.4 DL 84 296.4 79 296.4 DL 89 296.4 84 296.4 DL
-94 296.4 89 296.4 DL 99 296.4 94 296.4 DL 104 296.4 99 296.4 DL 109
-296.4 104 296.4 DL 114 296.4 109 296.4 DL 119 296.4 114 296.4 DL 124
-296.4 119 296.4 DL 129 296.4 124 296.4 DL 134 296.4 129 296.4 DL 139
-296.4 134 296.4 DL 144 296.4 139 296.4 DL 149 296.4 144 296.4 DL 154
-296.4 149 296.4 DL 159 296.4 154 296.4 DL 164 296.4 159 296.4 DL 169
-296.4 164 296.4 DL 174 296.4 169 296.4 DL 179 296.4 174 296.4 DL 184
-296.4 179 296.4 DL 189 296.4 184 296.4 DL 194 296.4 189 296.4 DL 199
-296.4 194 296.4 DL 204 296.4 199 296.4 DL 209 296.4 204 296.4 DL 214
-296.4 209 296.4 DL 219 296.4 214 296.4 DL 224 296.4 219 296.4 DL 229
-296.4 224 296.4 DL 234 296.4 229 296.4 DL 239 296.4 234 296.4 DL 244
-296.4 239 296.4 DL 249 296.4 244 296.4 DL 254 296.4 249 296.4 DL 259
-296.4 254 296.4 DL 264 296.4 259 296.4 DL 269 296.4 264 296.4 DL 274
-296.4 269 296.4 DL 279 296.4 274 296.4 DL 284 296.4 279 296.4 DL 289
-296.4 284 296.4 DL 294 296.4 289 296.4 DL 299 296.4 294 296.4 DL 304
-296.4 299 296.4 DL 309 296.4 304 296.4 DL 314 296.4 309 296.4 DL 319
-296.4 314 296.4 DL 324 296.4 319 296.4 DL 329 296.4 324 296.4 DL 334
-296.4 329 296.4 DL 339 296.4 334 296.4 DL 344 296.4 339 296.4 DL 349
-296.4 344 296.4 DL 354 296.4 349 296.4 DL 359 296.4 354 296.4 DL 364
-296.4 359 296.4 DL 369 296.4 364 296.4 DL 374 296.4 369 296.4 DL 379
-296.4 374 296.4 DL 384 296.4 379 296.4 DL 389 296.4 384 296.4 DL 394
-296.4 389 296.4 DL 399 296.4 394 296.4 DL 404 296.4 399 296.4 DL 409
-296.4 404 296.4 DL 414 296.4 409 296.4 DL 419 296.4 414 296.4 DL 424
-296.4 419 296.4 DL 429 296.4 424 296.4 DL 434 296.4 429 296.4 DL 439
-296.4 434 296.4 DL 444 296.4 439 296.4 DL 449 296.4 444 296.4 DL 454
-296.4 449 296.4 DL 459 296.4 454 296.4 DL 464 296.4 459 296.4 DL 469
-296.4 464 296.4 DL 474 296.4 469 296.4 DL 479 296.4 474 296.4 DL 484
-296.4 479 296.4 DL 489 296.4 484 296.4 DL 494 296.4 489 296.4 DL 499
-296.4 494 296.4 DL 504 296.4 499 296.4 DL 1.265
-(Ruleset four is applied to all addresses in the message.)142 332.4 R
-1.266(It is typically used to translate)6.265 F(internal to e)117 344.4
-Q(xternal form.)-.15 E .653(In addition, ruleset 5 is applied to all local addresses \(speci\214cally)
-142 360.6 R 3.152(,t)-.65 G .652(hose that resolv)-3.152 F 3.152(et)-.15
-G 3.152(oa)-3.152 G .296
-(mailer with the `F=5' \215ag set\) that do not ha)117 372.6 R .596 -.15
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-34 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E 2.5(5.1.3. Semantics)102 96 R
+(of r)2.5 E(ewriting rule sets)-.18 E/F1 10/Times-Roman@0 SF 1.848
+(There are six re)142 112.2 R 1.847(writing sets that ha)-.25 F 2.147
+-.15(ve s)-.2 H 1.847(peci\214c semantics.).15 F(Fi)6.847 E 2.147 -.15
+(ve o)-.25 H 4.347(ft).15 G 1.847(hese are related as)-4.347 F
+(depicted by \214gure 1.)117 124.2 Q 1.029
+(Ruleset three should turn the address into \231canonical form.)142
+140.4 R 6.029<9a54>-.7 G 1.03(his form should ha)-6.029 F 1.33 -.15
+(ve t)-.2 H(he).15 E(basic syntax:)117 152.4 Q
+(local-part@host-domain-spec)157 168.6 Q(Ruleset three is applied by)117
+184.8 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.)-2.5 E .302
+(If no \231@\232 sign is speci\214ed, then the host-domain-spec)142 201
+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 213 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 225 Q F1(mailer\).)2.5 E 1.021(Ruleset zero is applied after ruleset three to addresses that are going to actually specify)
+142 241.2 R 3.663(recipients. It)117 253.2 R 1.163(must resolv)3.663 F
+3.663(et)-.15 G 3.664(oa)-3.663 G F2({mailer)A 3.664(,h)-1.11 G 1.164
+(ost, user})-3.664 F 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 265.2 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 277.2 Q(gv e)-.18 E
+(xpansion of the speci\214ed mailer)-.15 E(.)-.55 E .452
+(Rulesets one and tw)142 293.4 R 2.952(oa)-.1 G .452
+(re applied to all sender and recipient addresses respecti)-2.952 F -.15
+(ve)-.25 G(ly).15 E 5.453(.T)-.65 G(he)-5.453 E(y)-.15 E
+(are applied before an)117 305.4 Q 2.5(ys)-.15 G
+(peci\214cation in the mailer de\214nition.)-2.5 E(The)5 E 2.5(ym)-.15 G
+(ust ne)-2.5 E -.15(ve)-.25 G 2.5(rr).15 G(esolv)-2.5 E(e.)-.15 E 1.266
+(Ruleset four is applied to all addresses in the message.)142 321.6 R
+1.265(It is typically used to translate)6.265 F(internal to e)117 333.6
+Q(xternal form.)-.15 E .652(In addition, ruleset 5 is applied to all local addresses \(speci\214cally)
+142 349.8 R 3.153(,t)-.65 G .653(hose that resolv)-3.153 F 3.153(et)-.15
+G 3.153(oa)-3.153 G .296
+(mailer with the `F=5' \215ag set\) that do not ha)117 361.8 R .596 -.15
(ve a)-.2 H 2.796(liases. This).15 F(allo)2.796 E .296
-(ws a last minute hook for local)-.25 F(names.)117 384.6 Q F0 2.5
-(5.1.4. Ruleset)102 408.6 R(hooks)2.5 E F1 3.815(Af)142 424.8 S 1.815
--.25(ew e)-3.815 H 1.315(xtra rulesets are de\214ned as \231hooks\232 that can be de\214ned to get special features.)
-.1 F(The)117 436.8 Q 3.467(ya)-.15 G .968(re all named rulesets.)-3.467
-F .968(The \231check_*\232 forms all gi)5.968 F 1.268 -.15(ve a)-.25 H
-.968(ccept/reject status; f).15 F .968(alling of)-.1 F 3.468(ft)-.25 G
-(he)-3.468 E(end or returning normally is an accept, and resolving to $#error is a reject.)
-117 448.8 Q F0 2.5(5.1.4.1. check_r)117 472.8 R(elay)-.18 E F1(The)157
-489 Q/F2 10/Times-Italic@0 SF -.15(ch)2.5 G(ec).15 E(k_r)-.2 E(elay)-.37
-E F1(ruleset is called after a connection is accepted.)2.5 E
-(It is passed)5 E(client.host.name $| client.host.address)172 505.2 Q
-(where)132 521.4 Q F0($|)4.017 E F1 1.517
-(is a metacharacter separating the tw)4.017 F 4.017(op)-.1 G 4.017
-(arts. This)-4.017 F 1.517(ruleset can reject connections)4.017 F
-(from v)132 533.4 Q(arious locations.)-.25 E F0 2.5(5.1.4.2. check_mail)
-117 557.4 R F1(The)157 573.6 Q F2 -.15(ch)3.722 G(ec).15 E(k_mail)-.2 E
-F1 1.223(ruleset is passed the user name parameter of the)3.722 F/F3 9
-/Times-Roman@0 SF 1.223(SMTP MAIL)3.723 F F1(com-)3.723 E 2.5(mand. It)
-132 585.6 R(can accept or reject the address.)2.5 E F0 2.5
-(5.1.4.3. check_r)117 609.6 R(cpt)-.18 E F1(The)157 625.8 Q F2 -.15(ch)
-3.918 G(ec).15 E(k_r)-.2 E(cpt)-.37 E F1 1.417
-(ruleset is passed the user name parameter of the)3.918 F F3 1.417
-(SMTP RCPT)3.917 F F1(com-)3.917 E 2.5(mand. It)132 637.8 R
-(can accept or reject the address.)2.5 E F0 2.5(5.1.4.4. check_compat)
-117 661.8 R F1(The)157 678 Q F2 -.15(ch)2.5 G(ec).15 E(k_compat)-.2 E F1
-(ruleset is passed)2.5 E(sender)172 694.2 Q
-(-address $| recipient-address)-.2 E(where)132 710.4 Q F0($|)3.725 E F1
-1.225(is a metacharacter separating the addresses.)3.725 F 1.225
-(It can accept or reject mail transfer)6.225 F(between these tw)132
-722.4 Q 2.5(oa)-.1 G(ddresses much lik)-2.5 E 2.5(et)-.1 G(he)-2.5 E F2
--.15(ch)2.5 G(ec).15 E(kcompat\(\))-.2 E F1(function.)2.5 E EP
-%%Page: 33 29
+(ws a last minute hook for local)-.25 F(names.)117 373.8 Q F0 2.5
+(5.1.4. Ruleset)102 397.8 R(hooks)2.5 E F1 3.814(Af)142 414 S 1.814 -.25
+(ew e)-3.814 H 1.315(xtra rulesets are de\214ned as \231hooks\232 that can be de\214ned to get special features.)
+.1 F(The)117 426 Q 3.468(ya)-.15 G .968(re all named rulesets.)-3.468 F
+.968(The \231check_*\232 forms all gi)5.968 F 1.268 -.15(ve a)-.25 H
+.968(ccept/reject status; f).15 F .967(alling of)-.1 F 3.467(ft)-.25 G
+(he)-3.467 E .502
+(end or returning normally is an accept, and resolving to)117 438 R F0
+($#err)3.002 E(or)-.18 E F1 .502(is a reject.)3.002 F(Man)5.502 E 3.002
+(yo)-.15 G 3.002(ft)-3.002 G .502(hese can)-3.002 F .166(also resolv)117
+450 R 2.666(et)-.15 G 2.666(ot)-2.666 G .166(he special mailer)-2.666 F
+F0($#discard)2.666 E F1 2.666(;t)C .166
+(his accepts the message as though it were success-)-2.666 F(ful b)117
+462 Q(ut then discards it without deli)-.2 E -.15(ve)-.25 G(ry).15 E(.)
+-.65 E .4 LW 77 486 72 486 DL 79 486 74 486 DL 84 486 79 486 DL 89 486
+84 486 DL 94 486 89 486 DL 99 486 94 486 DL 104 486 99 486 DL 109 486
+104 486 DL 114 486 109 486 DL 119 486 114 486 DL 124 486 119 486 DL 129
+486 124 486 DL 134 486 129 486 DL 139 486 134 486 DL 144 486 139 486 DL
+149 486 144 486 DL 154 486 149 486 DL 159 486 154 486 DL 164 486 159 486
+DL 169 486 164 486 DL 174 486 169 486 DL 179 486 174 486 DL 184 486 179
+486 DL 189 486 184 486 DL 194 486 189 486 DL 199 486 194 486 DL 204 486
+199 486 DL 209 486 204 486 DL 214 486 209 486 DL 219 486 214 486 DL 224
+486 219 486 DL 229 486 224 486 DL 234 486 229 486 DL 239 486 234 486 DL
+244 486 239 486 DL 249 486 244 486 DL 254 486 249 486 DL 259 486 254 486
+DL 264 486 259 486 DL 269 486 264 486 DL 274 486 269 486 DL 279 486 274
+486 DL 284 486 279 486 DL 289 486 284 486 DL 294 486 289 486 DL 299 486
+294 486 DL 304 486 299 486 DL 309 486 304 486 DL 314 486 309 486 DL 319
+486 314 486 DL 324 486 319 486 DL 329 486 324 486 DL 334 486 329 486 DL
+339 486 334 486 DL 344 486 339 486 DL 349 486 344 486 DL 354 486 349 486
+DL 359 486 354 486 DL 364 486 359 486 DL 369 486 364 486 DL 374 486 369
+486 DL 379 486 374 486 DL 384 486 379 486 DL 389 486 384 486 DL 394 486
+389 486 DL 399 486 394 486 DL 404 486 399 486 DL 409 486 404 486 DL 414
+486 409 486 DL 419 486 414 486 DL 424 486 419 486 DL 429 486 424 486 DL
+434 486 429 486 DL 439 486 434 486 DL 444 486 439 486 DL 449 486 444 486
+DL 454 486 449 486 DL 459 486 454 486 DL 464 486 459 486 DL 469 486 464
+486 DL 474 486 469 486 DL 479 486 474 486 DL 484 486 479 486 DL 489 486
+484 486 DL 494 486 489 486 DL 499 486 494 486 DL 504 486 499 486 DL
+(addr)91.915 580.6 Q 133.2 578.4 111.6 578.4 DL 133.2 578.4 MT -7.2 1.8
+RL 0 -3.6 RL CL BL 133.2 578.4 MT -7.2 1.8 RL 0 -3.6 RL CL ST 154.8
+589.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(3)141.5 580.6 Q 176.4
+578.4 154.8 578.4 DL 176.4 578.4 MT -7.2 1.8 RL 0 -3.6 RL CL BL 176.4
+578.4 MT -7.2 1.8 RL 0 -3.6 RL CL ST 198 589.2 MT 0 -21.6 RL -21.6 0 RL
+0 21.6 RL CL ST(D)183.59 580.6 Q 219.6 578.4 198 578.4 DL 277.2 560.4
+255.6 560.4 DL 277.2 560.4 MT -7.2 1.8 RL 0 -3.6 RL CL BL 277.2 560.4 MT
+-7.2 1.8 RL 0 -3.6 RL CL ST 298.8 571.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6
+RL CL ST(1)285.5 562.6 Q 320.4 560.4 298.8 560.4 DL 320.4 560.4 MT -7.2
+1.8 RL 0 -3.6 RL CL BL 320.4 560.4 MT -7.2 1.8 RL 0 -3.6 RL CL ST 342
+571.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(S)328.42 562.6 Q 363.6
+560.4 342 560.4 DL 277.2 596.4 255.6 596.4 DL 277.2 596.4 MT -7.2 1.8 RL
+0 -3.6 RL CL BL 277.2 596.4 MT -7.2 1.8 RL 0 -3.6 RL CL ST 298.8 607.2
+MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(2)285.5 598.6 Q 320.4 596.4
+298.8 596.4 DL 320.4 596.4 MT -7.2 1.8 RL 0 -3.6 RL CL BL 320.4 596.4 MT
+-7.2 1.8 RL 0 -3.6 RL CL ST 342 607.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL
+CL ST(R)327.865 598.6 Q 363.6 596.4 342 596.4 DL 421.2 578.4 399.6 578.4
+DL 421.2 578.4 MT -7.2 1.8 RL 0 -3.6 RL CL BL 421.2 578.4 MT -7.2 1.8 RL
+0 -3.6 RL CL ST 442.8 589.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(4)
+429.5 580.6 Q 464.4 578.4 442.8 578.4 DL 464.4 578.4 MT -7.2 1.8 RL 0
+-3.6 RL CL BL 464.4 578.4 MT -7.2 1.8 RL 0 -3.6 RL CL ST(msg)466.865
+580.6 Q 255.6 560.4 219.6 578.4 DL 255.6 596.4 219.6 578.4 DL 399.6
+578.4 363.6 560.4 DL 399.6 578.4 363.6 596.4 DL 208.8 524.4 187.2 524.4
+DL 208.8 524.4 MT -7.2 1.8 RL 0 -3.6 RL CL BL 208.8 524.4 MT -7.2 1.8 RL
+0 -3.6 RL CL ST 230.4 535.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(0)
+217.1 526.6 Q 252 524.4 230.4 524.4 DL 252 524.4 MT -7.2 1.8 RL 0 -3.6
+RL CL BL 252 524.4 MT -7.2 1.8 RL 0 -3.6 RL CL ST(resolv)265.69 526.6 Q
+(ed address)-.15 E 187.2 524.4 162 578.4 DL(Figure 1 \212 Re)216.045
+626.4 Q(writing set semantics)-.25 E 2.5(D\212s)209.35 638.4 S
+(ender domain addition)-2.5 E 2.5(S\212m)209.35 650.4 S(ailer)-2.5 E
+(-speci\214c sender re)-.2 E(writing)-.25 E 2.5(R\212m)209.35 662.4 S
+(ailer)-2.5 E(-speci\214c recipient re)-.2 E(writing)-.25 E 77 674.4 72
+674.4 DL 79 674.4 74 674.4 DL 84 674.4 79 674.4 DL 89 674.4 84 674.4 DL
+94 674.4 89 674.4 DL 99 674.4 94 674.4 DL 104 674.4 99 674.4 DL 109
+674.4 104 674.4 DL 114 674.4 109 674.4 DL 119 674.4 114 674.4 DL 124
+674.4 119 674.4 DL 129 674.4 124 674.4 DL 134 674.4 129 674.4 DL 139
+674.4 134 674.4 DL 144 674.4 139 674.4 DL 149 674.4 144 674.4 DL 154
+674.4 149 674.4 DL 159 674.4 154 674.4 DL 164 674.4 159 674.4 DL 169
+674.4 164 674.4 DL 174 674.4 169 674.4 DL 179 674.4 174 674.4 DL 184
+674.4 179 674.4 DL 189 674.4 184 674.4 DL 194 674.4 189 674.4 DL 199
+674.4 194 674.4 DL 204 674.4 199 674.4 DL 209 674.4 204 674.4 DL 214
+674.4 209 674.4 DL 219 674.4 214 674.4 DL 224 674.4 219 674.4 DL 229
+674.4 224 674.4 DL 234 674.4 229 674.4 DL 239 674.4 234 674.4 DL 244
+674.4 239 674.4 DL 249 674.4 244 674.4 DL 254 674.4 249 674.4 DL 259
+674.4 254 674.4 DL 264 674.4 259 674.4 DL 269 674.4 264 674.4 DL 274
+674.4 269 674.4 DL 279 674.4 274 674.4 DL 284 674.4 279 674.4 DL 289
+674.4 284 674.4 DL 294 674.4 289 674.4 DL 299 674.4 294 674.4 DL 304
+674.4 299 674.4 DL 309 674.4 304 674.4 DL 314 674.4 309 674.4 DL 319
+674.4 314 674.4 DL 324 674.4 319 674.4 DL 329 674.4 324 674.4 DL 334
+674.4 329 674.4 DL 339 674.4 334 674.4 DL 344 674.4 339 674.4 DL 349
+674.4 344 674.4 DL 354 674.4 349 674.4 DL 359 674.4 354 674.4 DL 364
+674.4 359 674.4 DL 369 674.4 364 674.4 DL 374 674.4 369 674.4 DL 379
+674.4 374 674.4 DL 384 674.4 379 674.4 DL 389 674.4 384 674.4 DL 394
+674.4 389 674.4 DL 399 674.4 394 674.4 DL 404 674.4 399 674.4 DL 409
+674.4 404 674.4 DL 414 674.4 409 674.4 DL 419 674.4 414 674.4 DL 424
+674.4 419 674.4 DL 429 674.4 424 674.4 DL 434 674.4 429 674.4 DL 439
+674.4 434 674.4 DL 444 674.4 439 674.4 DL 449 674.4 444 674.4 DL 454
+674.4 449 674.4 DL 459 674.4 454 674.4 DL 464 674.4 459 674.4 DL 469
+674.4 464 674.4 DL 474 674.4 469 674.4 DL 479 674.4 474 674.4 DL 484
+674.4 479 674.4 DL 489 674.4 484 674.4 DL 494 674.4 489 674.4 DL 499
+674.4 494 674.4 DL 504 674.4 499 674.4 DL EP
+%%Page: 35 31
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-33)195.86 E 2.5(5.1.5. IPC)102 96 R(mailers)2.5 E/F1 10
-/Times-Roman@0 SF 1.333
-(Some special processing occurs if the ruleset zero resolv)142 112.2 R
-1.332(es to an IPC mailer \(that is, a)-.15 F 1.178
-(mailer that has \231[IPC]\232 listed as the P)117 124.2 R 1.179
+(SMM:08-35)195.86 E 2.5(5.1.4.1. check_r)117 96 R(elay)-.18 E/F1 10
+/Times-Roman@0 SF(The)157 112.2 Q/F2 10/Times-Italic@0 SF -.15(ch)2.5 G
+(ec).15 E(k_r)-.2 E(elay)-.37 E F1
+(ruleset is called after a connection is accepted.)2.5 E(It is passed)5
+E(client.host.name $| client.host.address)172 128.4 Q(where)132 144.6 Q
+F0($|)4.016 E F1 1.517(is a metacharacter separating the tw)4.017 F
+4.017(op)-.1 G 4.017(arts. This)-4.017 F 1.517
+(ruleset can reject connections)4.017 F(from v)132 156.6 Q
+(arious locations.)-.25 E F0 2.5(5.1.4.2. check_mail)117 180.6 R F1(The)
+157 196.8 Q F2 -.15(ch)3.723 G(ec).15 E(k_mail)-.2 E F1 1.223
+(ruleset is passed the user name parameter of the)3.723 F/F3 9
+/Times-Roman@0 SF 1.222(SMTP MAIL)3.723 F F1(com-)3.722 E 2.5(mand. It)
+132 208.8 R(can accept or reject the address.)2.5 E F0 2.5
+(5.1.4.3. check_r)117 232.8 R(cpt)-.18 E F1(The)157 249 Q F2 -.15(ch)
+3.917 G(ec).15 E(k_r)-.2 E(cpt)-.37 E F1 1.417
+(ruleset is passed the user name parameter of the)3.917 F F3 1.418
+(SMTP RCPT)3.917 F F1(com-)3.918 E 2.5(mand. It)132 261 R
+(can accept or reject the address.)2.5 E F0 2.5(5.1.4.4. check_compat)
+117 285 R F1(The)157 301.2 Q F2 -.15(ch)2.5 G(ec).15 E(k_compat)-.2 E F1
+(ruleset is passed)2.5 E(sender)172 317.4 Q
+(-address $| recipient-address)-.2 E(where)132 333.6 Q F0($|)3.725 E F1
+1.225(is a metacharacter separating the addresses.)3.725 F 1.225
+(It can accept or reject mail transfer)6.225 F(between these tw)132
+345.6 Q 2.5(oa)-.1 G(ddresses much lik)-2.5 E 2.5(et)-.1 G(he)-2.5 E F2
+-.15(ch)2.5 G(ec).15 E(kcompat\(\))-.2 E F1(function.)2.5 E F0 2.5
+(5.1.5. IPC)102 369.6 R(mailers)2.5 E F1 1.332
+(Some special processing occurs if the ruleset zero resolv)142 385.8 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 397.8 R 1.179
(ath in the)-.15 F F0(M)3.679 E F1 1.179(con\214guration line.)3.679 F
-1.179(The host name passed)6.179 F .169(after \231$@\232 has MX e)117
-136.2 R .168(xpansion performed; this looks the name up in DNS to \214nd alternate deli)
--.15 F(v-)-.25 E(ery sites.)117 148.2 Q(The host name can also be pro)
-142 164.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 180.6 Q(This causes direct con)117
-196.8 Q -.15(ve)-.4 G(rsion of the numeric v).15 E
-(alue to a TCP/IP host address.)-.25 E .214(The host name passed in after the \231$@\232 may also be a colon-separated list of hosts.)
-142 213 R(Each)5.214 E .485(is separately MX e)117 225 R .484
-(xpanded and the results are concatenated to mak)-.15 F 2.984(e\()-.1 G
-.484(essentially\) one long MX)-2.984 F 3.464(list. The)117 237 R .964
-(intent here is to create \231f)3.464 F(ak)-.1 E .964
+1.178(The host name passed)6.178 F .168(after \231$@\232 has MX e)117
+409.8 R .168(xpansion performed; this looks the name up in DNS to \214nd alternate deli)
+-.15 F(v-)-.25 E(ery sites.)117 421.8 Q(The host name can also be pro)
+142 438 Q(vided as a dotted quad in square brack)-.15 E(ets; for e)-.1 E
+(xample:)-.15 E([128.32.149.78])157 454.2 Q(This causes direct con)117
+470.4 Q -.15(ve)-.4 G(rsion of the numeric v).15 E
+(alue to an IP host address.)-.25 E .214(The host name passed in after the \231$@\232 may also be a colon-separated list of hosts.)
+142 486.6 R(Each)5.213 E .484(is separately MX e)117 498.6 R .484
+(xpanded and the results are concatenated to mak)-.15 F 2.985(e\()-.1 G
+.485(essentially\) one long MX)-2.985 F 3.465(list. The)117 510.6 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 249 Q(orks.)-.1 E
+-.25 G(te).25 E(internal netw)117 522.6 Q(orks.)-.1 E
(As a \214nal special case, the host name can be passed in as a te)142
-265.2 Q(xt string in square brack)-.15 E(ets:)-.1 E([ucb)157 281.4 Q
--.25(va)-.15 G(x.berk).25 E(ele)-.1 E -.65(y.)-.15 G(edu]).65 E .313
-(This form a)117 297.6 R -.2(vo)-.2 G .313(ids the MX mapping.).2 F F0
-(N.B.:)5.313 E/F2 10/Times-Italic@0 SF .312
-(This is intended only for situations wher)2.813 F 2.812(ey)-.37 G .312
-(ou have a)-2.812 F .337(network \214r)117 309.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 321.6 S
-(cor).37 E 3.959(dp)-.37 G 1.459(oints to a gate)-3.959 F 1.459(way mac)
--.15 F 1.459(hine; this mac)-.15 F 1.458(hine could then do dir)-.15 F
-1.458(ect delivery to mac)-.37 F(hines)-.15 E .09
-(within your local domain.)117 333.6 R .09(Use of this featur)5.09 F
+538.8 Q(xt string in square brack)-.15 E(ets:)-.1 E([ucb)157 555 Q -.25
+(va)-.15 G(x.berk).25 E(ele)-.1 E -.65(y.)-.15 G(edu]).65 E .312
+(This form a)117 571.2 R -.2(vo)-.2 G .312(ids the MX mapping.).2 F F0
+(N.B.:)5.312 E F2 .313(This is intended only for situations wher)2.812 F
+2.813(ey)-.37 G .313(ou have a)-2.813 F .338(network \214r)117 583.2 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 595.2 S
+(cor).37 E 3.958(dp)-.37 G 1.458(oints to a gate)-3.958 F 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 607.2 R .09(Use of this featur)5.09 F
2.59(ed)-.37 G(ir)-2.59 E .09
(ectly violates RFC 1123 section 5.3.5: it should)-.37 F
-(not be used lightly)117 345.6 Q(.)-.55 E F0 2.5(5.2. D)87 369.6 R 2.5
-<8a44>2.5 G(e\214ne Macr)-2.5 E(o)-.18 E F1 .082
-(Macros are named with a single character or with a w)127 385.8 R .081
-(ord in {braces}.)-.1 F .081(Single character names)5.081 F .45
-(may be selected from the entire ASCII set, b)102 397.8 R .45(ut user)
+(not be used lightly)117 619.2 Q(.)-.55 E F0 2.5(5.2. D)87 643.2 R 2.5
+<8a44>2.5 G(e\214ne Macr)-2.5 E(o)-.18 E F1 .081
+(Macros are named with a single character or with a w)127 659.4 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 671.4 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 409.8 R 5.446(.L)-.65 G -.25(ow)-5.446 G
+(of upper case letters only)102 683.4 R 5.446(.L)-.65 G -.25(ow)-5.446 G
.446(er case letters and special symbols are used internally).25 F 5.446
-(.L)-.65 G .446(ong names)-5.446 F(be)102 421.8 Q .912
-(ginning with a lo)-.15 F .912
-(wer case letter or a punctuation character are reserv)-.25 F .913
-(ed for use by sendmail, so)-.15 F(user)102 433.8 Q
+(.L)-.65 G .446(ong names)-5.446 F(be)102 695.4 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 707.4 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 450 Q F0(D)142 466.2 Q F2
-1.666(xv)C(al)-1.666 E F1(where)102 482.4 Q F2(x)3.069 E F1 .569
-(is the name of the macro \(which may be a single character or a w)3.069
-F .568(ord in braces\) and)-.1 F F2(val)3.068 E F1(is)3.068 E .478
-(the v)102 494.4 R .478(alue it should ha)-.25 F -.15(ve)-.2 G 5.478(.T)
-.15 G .478(here should be no spaces gi)-5.478 F -.15(ve)-.25 G 2.978(nt)
-.15 G .479(hat do not actually belong in the macro)-2.978 F -.25(va)102
-506.4 S(lue.).25 E .494(Macros are interpolated using the construct)127
-522.6 R F0($)2.994 E F2(x)A F1 2.994(,w)C(here)-2.994 E F2(x)2.994 E F1
-.494(is the name of the macro to be inter)2.994 F(-)-.2 E 2.932
-(polated. This)102 534.6 R .432
-(interpolation is done when the con\214guration \214le is read, e)2.932
-F .433(xcept in)-.15 F F0(M)2.933 E F1 2.933(lines. The)2.933 F(spe-)
-2.933 E(cial construct)102 546.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 562.8 Q($?x te)
-142 579 Q(xt1 $| te)-.15 E(xt2 $.)-.15 E 1.128(This interpolates)102
-595.2 R F2(te)3.628 E(xt1)-.2 E F1 1.128(if the macro)3.628 F F0($x)
-3.628 E F1 1.128(is set, and)3.628 F F2(te)3.628 E(xt2)-.2 E F1 3.627
-(otherwise. The)3.628 F 1.127(\231else\232 \()3.627 F F0($|)A F1 3.627
-(\)c)C 1.127(lause may be)-3.627 F(omitted.)102 607.2 Q(Lo)127 623.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.561(or out of)102 635.4 R F2(sendmail)4.061 E F1 4.061(,a)C 1.561
-(nd special characters are reserv)-4.061 F 1.561(ed to pro)-.15 F 1.56
-(vide conditionals, etc.)-.15 F 1.56(Upper case)6.56 F(names \(that is,)
-102 647.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)-2.5 E(ed for con\214guration \214le authors.)
--.15 E 1.302(The follo)127 663.6 R 1.302
-(wing macros are de\214ned and/or used internally by)-.25 F F2(sendmail)
-3.803 E F1 1.303(for interpolation into)3.803 F EP
-%%Page: 34 30
+(gin with an upper case letter)-.15 E(.)-.55 E EP
+%%Page: 36 32
%%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(ar)102 98
-Q(gv')-.18 E 2.793(sf)-.55 G .293(or mailers or for other conte)-2.793 F
-2.793(xts. The)-.15 F .293(ones mark)2.793 F .292
-(ed \207 are information passed into sendmail)-.1 F/F2 7/Times-Roman@0
-SF(16)-4 I F1(,)4 I .035(the ones mark)102 110 R .036(ed \210 are information passed both in and out of sendmail, and the unmark)
--.1 F .036(ed macros are)-.1 F(passed out of sendmail b)102 122 Q
+/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
+(The syntax for macro de\214nitions is:)127 96 Q F0(D)142 112.2 Q/F2 10
+/Times-Italic@0 SF 1.666(xv)C(al)-1.666 E F1(where)102 128.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 140.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)-5.479 F -.15(ve)-.25 G 2.978(nt)
+.15 G .478(hat do not actually belong in the macro)-2.978 F -.25(va)102
+152.4 S(lue.).25 E .494(Macros are interpolated using the construct)127
+168.6 R F0($)2.994 E F2(x)A F1 2.994(,w)C(here)-2.994 E 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 180.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 192.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 208.8 Q($?x te)
+142 225 Q(xt1 $| te)-.15 E(xt2 $.)-.15 E 1.127(This interpolates)102
+241.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)-3.628 F(omitted.)102 253.2 Q(Lo)127 269.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 281.4 R F2(sendmail)4.06 E F1 4.06(,a)C 1.561
+(nd special characters are reserv)-4.06 F 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 293.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)-2.5 E
+(ed for con\214guration \214le authors.)-.15 E 1.303(The follo)127 309.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(ar)102 323.6 Q
+(gv')-.18 E 2.792(sf)-.55 G .292(or mailers or for other conte)-2.792 F
+2.793(xts. The)-.15 F .293(ones mark)2.793 F .293
+(ed \207 are information passed into sendmail)-.1 F/F3 7/Times-Roman@0
+SF(17)-4 I F1(,)4 I .036(the ones mark)102 335.6 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 347.6 Q
(ut are not otherwise used internally)-.2 E 5(.T)-.65 G
-(hese macros are:)-5 E 13.06($a The)102 138.2 R
+(hese macros are:)-5 E 13.06($a The)102 363.8 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 .003
-(hop count.)2.503 F .003(This is a count of the number of Recei)5.003 F
--.15(ve)-.25 G .002(d: lines plus the v).15 F .002(alue of the)-.25 F F0
-<ad68>2.502 E F1(com-)2.502 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
+(xtracted from the Date: line.)-.15 E 12.5($b The)102 380 R
+(current date in RFC 822 format.)2.5 E 13.06($c The)102 396.2 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 408.2 Q 12.5($d The)
+102 424.4 R(current date in UNIX \(ctime\) format.)2.5 E 8.06
+($e\207 \(Obsolete;)102 440.6 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.008
-(macro as speci\214ed by)4.508 F 2.731(RFC821. Def)127 239 R .231
-(aults to \231$j Sendmail $v ready at $b\232.)-.1 F .232
-(Commonly rede\214ned to include the con-)5.232 F(\214guration v)127 251
-Q(ersion number)-.15 E 2.5(,e)-.4 G
+(printed out when SMTP starts up.)127 452.6 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 464.6 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
+476.6 Q(ersion number)-.15 E 2.5(,e)-.4 G
(.g., \231$j Sendmail $v/$Z ready at $b\232)-2.5 E 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 .018(sender address relati)2.518 F .318 -.15(ve t)
--.25 H 2.518(ot).15 G .018(he recipient.)-2.518 F -.15(Fo)5.018 G 2.518
-(re).15 G .017(xample, if)-2.668 F F0($f)2.517 E F1 .017
-(is \231foo\232,)2.517 F F0($g)2.517 E F1 .017
-(will be \231host!foo\232,)2.517 F(\231foo@host.domain\232, or whate)127
-295.4 Q -.15(ve)-.25 G 2.5(ri).15 G 2.5(sa)-2.5 G
-(ppropriate for the recei)-2.5 E(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.746 E .247
+492.8 R(en)2.5 E -.15(ve)-.4 G(lope sender \(from\) address.).15 E 12.5
+($g The)102 509 R .017(sender address relati)2.517 F .317 -.15(ve t)-.25
+H 2.517(ot).15 G .017(he recipient.)-2.517 F -.15(Fo)5.017 G 2.517(re)
+.15 G .018(xample, if)-2.667 F 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 521 Q -.15(ve)-.25 G 2.5(ri).15 G
+2.5(sa)-2.5 G(ppropriate for the recei)-2.5 E(ving mailer)-.25 E(.)-.55
+E 12.5($h The)102 537.2 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 553.4 R(queue id, e.g., \231HAA12345\232.)2.5 E 9.72
+($j\210 The)102 569.6 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.094(found. It)127 356 R/F3 10/Times-Italic@0 SF(must)3.094 E F1 .593(be rede\214ned to be the fully quali\214ed domain name if your system is not con-)
-3.094 F(\214gured so that information can \214nd it automatically)127
-368 Q(.)-.65 E 12.5($k The)102 384.2 R
+3.093(found. It)127 581.6 R F2(must)3.093 E F1 .594(be rede\214ned 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
+593.6 Q(.)-.65 E 12.5($k The)102 609.8 R
(UUCP node name \(from the uname system call\).)2.5 E 9.72
-($l\207 \(Obsolete;)102 400.4 R 1.281
-(use UnixFromLine option instead.\))3.781 F 1.282
-(The format of the UNIX from line.)6.282 F(Unless)6.282 E 1.41(you ha)
-127 412.4 R 1.71 -.15(ve c)-.2 H 1.409
+($l\207 \(Obsolete;)102 626 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 638 R 1.709 -.15(ve c)-.2 H 1.409
(hanged the UNIX mailbox format, you should not change the def).15 F
-1.409(ault, which is)-.1 F(\231From $g)127 424.4 Q($d\232.)5 E 9.72
-($m The)102 440.6 R .718(domain part of the)3.218 F F3 -.1(ge)3.218 G
-(thostname).1 E F1 .718(return v)3.218 F 3.219(alue. Under)-.25 F .719
-(normal circumstances,)3.219 F F0($j)3.219 E F1 .719(is equi)3.219 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 .651(use OperatorChars option instead.\))3.151 F .651
-(The set of \231operators\232 in addresses.)5.651 F 3.15(Al)5.65 G .65
-(ist of)-3.15 F .581(characters which will be considered tok)127 497 R
-.582(ens and which will separate tok)-.1 F .582(ens when doing pars-)-.1
-F 3.278(ing. F)127 509 R .778(or e)-.15 F .778
-(xample, if \231@\232 were in the)-.15 F F0($o)3.278 E F1 .777
-(macro, then the input \231a@b\232 w)3.278 F .777(ould be scanned as)-.1
-F .627(three tok)127 521 R .627(ens: \231a,)-.1 F 3.127<9a99>-.7 G(@,)
--3.127 E 3.127<9a61>-.7 G .627(nd \231b)-3.127 F 4.527 -.7(.\232 D)-.4 H
-(ef).7 E .628
-(aults to \231.:@[]\232, which is the minimum set necessary to)-.1 F
-.856(do RFC 822 parsing; a richer set of operators is \231.:%@!/[]\232, which adds support 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.)-2.5 E 7.5
-($q\207 Def)102 577.4 R .403(ault format of sender address.)-.1 F(The)
-5.403 E F0($q)2.903 E F1 .403(macro speci\214es ho)2.903 F 2.903(wa)-.25
-G 2.904(na)-2.903 G .404(ddress should appear in a)-2.904 F 1.181
-(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.18
-(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>-5 G($g$?x \($x\)$.)-2.5 E
-(\232, corresponding to the follo)-.7 E(wing tw)-.25 E 2.5(of)-.1 G
-(ormats:)-2.5 E(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 .976(used to recei)3.476 F 1.276 -.15(ve t)-.25 H .976
-(he message.).15 F .976(Set from the)5.976 F F0<ad70>3.476 E F1 .977
-(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(16)93.6 698.8 Q/F5 8/Times-Roman@0 SF(As of v)3.2 I
+1.41(ault, which is)-.1 F(\231From $g)127 650 Q($d\232.)5 E 9.72($m The)
+102 666.2 R .719(domain part of the)3.219 F F2 -.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 678.2 Q F0($w)2.5 E(.$m)-.7 E F1(.)A .32 LW 76 687.8
+72 687.8 DL 80 687.8 76 687.8 DL 84 687.8 80 687.8 DL 88 687.8 84 687.8
+DL 92 687.8 88 687.8 DL 96 687.8 92 687.8 DL 100 687.8 96 687.8 DL 104
+687.8 100 687.8 DL 108 687.8 104 687.8 DL 112 687.8 108 687.8 DL 116
+687.8 112 687.8 DL 120 687.8 116 687.8 DL 124 687.8 120 687.8 DL 128
+687.8 124 687.8 DL 132 687.8 128 687.8 DL 136 687.8 132 687.8 DL 140
+687.8 136 687.8 DL 144 687.8 140 687.8 DL 148 687.8 144 687.8 DL 152
+687.8 148 687.8 DL 156 687.8 152 687.8 DL 160 687.8 156 687.8 DL 164
+687.8 160 687.8 DL 168 687.8 164 687.8 DL 172 687.8 168 687.8 DL 176
+687.8 172 687.8 DL 180 687.8 176 687.8 DL 184 687.8 180 687.8 DL 188
+687.8 184 687.8 DL 192 687.8 188 687.8 DL 196 687.8 192 687.8 DL 200
+687.8 196 687.8 DL 204 687.8 200 687.8 DL 208 687.8 204 687.8 DL 212
+687.8 208 687.8 DL 216 687.8 212 687.8 DL/F4 5/Times-Roman@0 SF(17)93.6
+698.2 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)-2 G(e\214ned.)-2 E
EP
-%%Page: 35 31
+%%Page: 37 33
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-35)195.86 E/F1 10/Times-Roman@0 SF 13.61($s Sender')102 96 R 2.5
-(sh)-.55 G(ost name.)-2.5 E(Set from the)5 E F0<ad70>2.5 E F1
+(SMM:08-37)195.86 E/F1 10/Times-Roman@0 SF 7.5($n\207 The)102 96 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
+112.2 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)-3.151 F .582(characters which will be considered tok)127
+124.2 R .581(ens and which will separate tok)-.1 F .581
+(ens when doing pars-)-.1 F 3.277(ing. F)127 136.2 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 148.2 R .628(ens: \231a,)-.1 F 3.128<9a99>-.7 G(@,)
+-3.128 E 3.128<9a61>-.7 G .628(nd \231b)-3.128 F 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 RFC 822 parsing; a richer set of operators is \231.:%@!/[]\232, which adds support for UUCP)
+127 160.2 R(,)-1.11 E(the %-hack, and X.400 addresses.)127 172.2 Q 12.5
+($p Sendmail')102 188.4 R 2.5(sp)-.55 G(rocess id.)-2.5 E 7.5
+($q\207 Def)102 204.6 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)-2.903 G .403(ddress should appear in a)-2.903 F 1.18
+(message when it is def)127 216.6 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 228.6
+Q 5<9a6f>-.7 G 2.5<7299>-5 G($g$?x \($x\)$.)-2.5 E
+(\232, corresponding to the follo)-.7 E(wing tw)-.25 E 2.5(of)-.1 G
+(ormats:)-2.5 E(Eric Allman <eric@CS.Berk)167 244.8 Q(ele)-.1 E -.65(y.)
+-.15 G(EDU>).65 E(eric@CS.Berk)167 256.8 Q(ele)-.1 E -.65(y.)-.15 G
+(EDU \(Eric Allman\)).65 E/F2 10/Times-Italic@0 SF(Sendmail)127 273 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 289.2 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 301.2 Q(er code.)
+-.15 E 13.61($s Sender')102 317.4 R 2.5(sh)-.55 G(ost name.)-2.5 E
+(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)-2.5 E -.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(${bodytype})102
-225.6 Q
+($t A)102 333.6 R(numeric representation of the current time.)2.5 E 12.5
+($u The)102 349.8 R(recipient user)2.5 E(.)-.55 E 12.5($v The)102 366 R
+-.15(ve)2.5 G(rsion number of the).15 E F2(sendmail)2.5 E F1(binary)2.5
+E(.)-.65 E 5.28($w\210 The)102 382.2 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)-2.5 E -.15(ve)-.2 G(ats\).).15 E 12.5($x The)102 398.4 R
+(full name of the sender)2.5 E(.)-.55 E 13.06($z The)102 414.6 R
+(home directory of the recipient.)2.5 E 12.5($_ The)102 430.8 R -.25(va)
+2.5 G(lidated sender address.).25 E(${bodytype})102 447 Q
(The message body type \(7BIT or 8BITMIME\), as determined from the en)
-127 237.6 Q -.15(ve)-.4 G(lope.).15 E(${client_addr})102 253.8 Q
-(The IP address of the SMTP client.)127 265.8 Q
+127 459 Q -.15(ve)-.4 G(lope.).15 E(${client_addr})102 475.2 Q
+(The IP address of the SMTP client.)127 487.2 Q
(De\214ned in the SMTP serv)5 E(er only)-.15 E(.)-.65 E(${client_name})
-102 282 Q(The host name of the SMTP client.)127 294 Q
-(De\214ned in the SMTP serv)5 E(er only)-.15 E(.)-.65 E(${client_port})
-102 310.2 Q(The port number of the SMTP client.)127 322.2 Q
-(De\214ned in the SMTP serv)5 E(er only)-.15 E(.)-.65 E(${en)102 338.4 Q
-(vid})-.4 E(The en)127 350.4 Q -.15(ve)-.4 G
+102 503.4 Q .24(The host name of the SMTP client.)127 515.4 R .241
+(This may be the client')5.24 F 2.741(sb)-.55 G(rack)-2.741 E .241
+(eted IP address in the form)-.1 F 3.292([n)127 527.4 S .792
+(nn.nnn.nnn.nnn ] if the client')-3.292 F 3.292(sI)-.55 G 3.292(Pa)
+-3.292 G .792(ddress is not resolv)-3.292 F 3.292(able. De\214ned)-.25 F
+.792(in the SMTP serv)3.292 F(er)-.15 E(only)127 539.4 Q(.)-.65 E
+(${client_port})102 555.6 Q(The port number of the SMTP client.)127
+567.6 Q(De\214ned in the SMTP serv)5 E(er only)-.15 E(.)-.65 E(${en)102
+583.8 Q(vid})-.4 E(The en)127 595.8 Q -.15(ve)-.4 G
(lope id passed to sendmail as part of the en).15 E -.15(ve)-.4 G(lope.)
-.15 E(${opMode})102 366.6 Q(The current operation mode \(from the)127
-378.6 Q F0<ad62>2.5 E F1(\215ag\).)2.5 E .749
-(There are three types of dates that can be used.)127 394.8 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 406.8 Q F0($a)3.213
-E F1 .713(is the time as e)3.213 F .714
+.15 E(${opMode})102 612 Q(The current operation mode \(from the)127 624
+Q F0<ad62>2.5 E F1(\215ag\).)2.5 E(${deli)102 640.2 Q -.15(ve)-.25 G
+(ryMode}).15 E(The current deli)127 652.2 Q -.15(ve)-.25 G
+(ry mode \(from the).15 E F0(Deli)2.5 E -.1(ve)-.1 G(ryMode).1 E F1
+(option\).)2.5 E .749(There are three types of dates that can be used.)
+127 668.4 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 680.4 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
-.714(as one\), and)-.1 F F0($b)3.214 E F1(is)3.214 E .057
-(the current date and time \(used for postmarks\).)102 418.8 R .056
-(If no \231Date:\232 line is found in the incoming message,)5.057 F F0
-($a)102 430.8 Q F1 .304(is set to the current time also.)2.804 F(The)
-5.304 E F0($d)2.804 E F1 .305(macro is equi)2.804 F -.25(va)-.25 G .305
-(lent to the).25 F F0($b)2.805 E F1 .305(macro in UNIX \(ctime\) for)
-2.805 F(-)-.2 E(mat.)102 442.8 Q .239(The macros)127 459 R F0($w)2.739 E
-F1(,)A F0($j)2.739 E F1 2.739(,a)C(nd)-2.739 E F0($m)2.739 E F1 .238
-(are set to the identity of this host.)2.739 F F2(Sendmail)5.238 E F1
-.238(tries to \214nd the fully)2.738 F .334(quali\214ed name of the host if at all possible; it does this by calling)
-102 471 R F2 -.1(ge)2.835 G(thostname).1 E F1 .335
+.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 692.4 R .057
+(If no \231Date:\232 line is found in the incoming message,)5.056 F F0
+($a)102 704.4 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 716.4 Q EP
+%%Page: 38 34
+%%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 .238
+(The macros)127 96 R F0($w)2.738 E F1(,)A F0($j)2.738 E F1 2.738(,a)C
+(nd)-2.738 E F0($m)2.738 E F1 .238
+(are set to the identity of this host.)2.738 F/F2 10/Times-Italic@0 SF
+(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 108 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
-483 R F2 -.1(ge)2.957 G(thostbyname).1 E F1 .457
+120 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
-.278(sion of that host name.)102 497 R/F3 7/Times-Roman@0 SF(17)-4 I F1
-.278(Assuming this is successful,)2.778 4 N F0($j)2.778 E F1 .279
-(is set to the fully quali\214ed name and)2.778 F F0($m)2.779 E F1(is)
-2.779 E .706(set to the domain part of the name \(e)102 509 R -.15(ve)
+.279(sion of that host name.)102 134 R/F3 7/Times-Roman@0 SF(18)-4 I F1
+.279(Assuming this is successful,)2.779 4 N 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 146 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 521 S
-.358(rd \(e).1 F -.15(ve)-.25 G .358
+3.206 E F1 .706(macro is set to the \214rst)3.206 F -.1(wo)102 158 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)-2.858 G .359
-(igher con\214guration \214le; otherwise, it)-2.858 F .405
-(is set to the same v)102 533 R .405(alue as)-.25 F F0($j)2.905 E F1
+-2.15 -.25(ev e).15 H 2.858(l5o).25 G 2.858(rh)-2.858 G .358
+(igher con\214guration \214le; otherwise, it)-2.858 F .404
+(is set to the same v)102 170 R .405(alue as)-.25 F F0($j)2.905 E F1
5.405(.I)C 2.905(ft)-5.405 G .405
-(he canoni\214cation is not successful, it is imperati)-2.905 F .704
--.15(ve t)-.25 H .404(hat the con\214g).15 F(\214le set)102 547 Q F0($j)
-2.5 E F1(to the fully quali\214ed domain name)2.5 E F3(18)-4 I F1(.)4 I
-(The)127 563.2 Q F0($f)2.832 E F1 .333(macro is the id of the sender as originally determined; when mailing to a speci\214c host)
-2.833 F(the)102 575.2 Q F0($g)3.225 E F1 .725
-(macro is set to the address of the sender)3.225 F F2 -.37(re)3.224 G
-.724(lative to the r).37 F(ecipient.)-.37 E F1 -.15(Fo)5.724 G 3.224(re)
-.15 G .724(xample, if I send to)-3.374 F(\231bollard@matisse.CS.Berk)102
-587.2 Q(ele)-.1 E -.65(y.)-.15 G .424(EDU\232 from the machine \231v).65
+(he canoni\214cation is not successful, it is imperati)-2.905 F .705
+-.15(ve t)-.25 H .405(hat the con\214g).15 F(\214le set)102 184 Q F0($j)
+2.5 E F1(to the fully quali\214ed domain name)2.5 E F3(19)-4 I F1(.)4 I
+(The)127 200.2 Q F0($f)2.833 E F1 .333(macro is the id of the sender as originally determined; when mailing to a speci\214c host)
+2.833 F(the)102 212.2 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)-3.375 F(\231bollard@matisse.CS.Berk)102
+224.2 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.925 E F1(macro)2.925 E(will be \231eric\232 and the)102 599.2 Q
+F0($f)2.924 E F1(macro)2.924 E(will be \231eric\232 and the)102 236.2 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 615.4 Q F0($x)2.563 E
-F1 .062(macro is set to the full name of the sender)2.563 F 5.062(.T)
--.55 G .062(his can be determined in se)-5.062 F -.15(ve)-.25 G .062
-(ral w).15 F 2.562(ays. It)-.1 F .629(can be passed as \215ag to)102
-627.4 R F2(sendmail)3.129 E F1 5.629(.I)C 3.129(tc)-5.629 G .629
-(an be de\214ned in the)-3.129 F/F4 9/Times-Roman@0 SF -.315(NA)3.13 G
-(ME).315 E F1(en)3.13 E .63(vironment v)-.4 F 3.13(ariable. The)-.25 F
-(third)3.13 E .949(choice is the v)102 639.4 R .949
-(alue of the \231Full-Name:\232 line in the header if it e)-.25 F .948
+-.1 E -.65(y.)-.15 G(EDU.).65 E<9a>-.7 E(The)127 252.4 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)-5.062 F -.15(ve)-.25 G .063
+(ral w).15 F 2.563(ays. It)-.1 F .63(can be passed as \215ag to)102
+264.4 R F2(sendmail)3.13 E F1 5.629(.I)C 3.129(tc)-5.629 G .629
+(an be de\214ned in the)-3.129 F/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 276.4 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 651.4 R .526
+(comment \214eld of a \231From:\232 line.)102 288.4 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 663.4 Q(ed up in the)-.1 E F2(/etc/passwd)2.5
-E F1(\214le.)2.5 E .32 LW 76 673 72 673 DL 80 673 76 673 DL 84 673 80
-673 DL 88 673 84 673 DL 92 673 88 673 DL 96 673 92 673 DL 100 673 96 673
-DL 104 673 100 673 DL 108 673 104 673 DL 112 673 108 673 DL 116 673 112
-673 DL 120 673 116 673 DL 124 673 120 673 DL 128 673 124 673 DL 132 673
-128 673 DL 136 673 132 673 DL 140 673 136 673 DL 144 673 140 673 DL 148
-673 144 673 DL 152 673 148 673 DL 156 673 152 673 DL 160 673 156 673 DL
-164 673 160 673 DL 168 673 164 673 DL 172 673 168 673 DL 176 673 172 673
-DL 180 673 176 673 DL 184 673 180 673 DL 188 673 184 673 DL 192 673 188
-673 DL 196 673 192 673 DL 200 673 196 673 DL 204 673 200 673 DL 208 673
-204 673 DL 212 673 208 673 DL 216 673 212 673 DL/F5 5/Times-Roman@0 SF
-(17)93.6 683.4 Q/F6 8/Times-Roman@0 SF -.12(Fo)3.2 K 2(re).12 G
+(the full name is look)102 300.4 Q(ed up in the)-.1 E F2(/etc/passwd)2.5
+E F1(\214le.)2.5 E 1.32(When sending, the)127 316.6 R F0($h)3.82 E F1(,)
+A F0($u)3.82 E F1 3.82(,a)C(nd)-3.82 E 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)-3.821 F .517(local\) of the recipient.)102
+328.6 R .517(The \214rst tw)5.517 F 3.016(oa)-.1 G .516(re set from the)
+-3.016 F 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 340.6
+Q -.15(ve)-.25 G(ly).15 E(.)-.65 E(The)127 356.8 Q F0($p)3.806 E F1(and)
+3.806 E F0($t)3.806 E F1 1.306(macros are used to create unique strings \(e.g., for the \231Message-Id:\232 \214eld\).)
+3.806 F(The)102 368.8 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 380.8 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)-2.665 F(-)-.2 E(mally put in timestamps and has been pro)
+102 392.8 Q -.15(ve)-.15 G 2.5(ne).15 G(xtremely useful for deb)-2.65 E
+(ugging.)-.2 E(The)127 409 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-)-3.548 F 2.856
+(cessed. This)102 421 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 433 Q(The)127 449.2 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
+461.2 R(The)5.194 E 2.694(yc)-.15 G .194(an be set together using the)
+-2.694 F 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 473.2 Q F0(\255oM)2.5 E F1(\215ags.)2.5 E(The)127 489.4 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 501.4 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)-2.884 F
+(on that host.)102 513.4 Q(The)127 529.6 Q F0(${client_name})5.98 E F1
+(,)A F0(${client_addr})5.98 E F1 5.98(,a)C(nd)-5.98 E F0(${client_port})
+5.98 E F1 3.48(macros are set to the name,)5.98 F .786
+(address, and port number of the SMTP client who is in)102 541.6 R -.2
+(vo)-.4 G(king).2 E F2(sendmail)3.286 E F1 .786(as a serv)3.286 F(er)
+-.15 E 5.786(.T)-.55 G .786(hese can be)-5.786 F(used in the)102 553.6 Q
+F2 -.15(ch)2.5 G(ec).15 E(k_*)-.2 E F1(rulesets \(using the)2.5 E F0($&)
+2.5 E F1(deferred e)2.5 E -.25(va)-.25 G(luation form, of course!\).).25
+E F0 2.5(5.3. C)87 577.6 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 593.8 R .659(writing rules, where a)-.25 F .464(\231phrase\232 is a sequence of characters that does not contain space characters.)
+102 605.8 R -.15(Fo)5.465 G 2.965(re).15 G .465(xample a class of)-3.115
+F .654(all local names for this site might be created so that attempts to send to oneself can be eliminated.)
+102 617.8 R .041(These can either be de\214ned directly in the con\214guration \214le or read in from another \214le.)
+102 629.8 R .041(Classes are)5.041 F .649
+(named as a single letter or a w)102 641.8 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
+653.8 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)-3.139 E 1.05
+(from the set of upper case letters for short names or be)102 665.8 R
+1.05(ginning with an upper case letter for long)-.15 F .32 LW 76 675.4
+72 675.4 DL 80 675.4 76 675.4 DL 84 675.4 80 675.4 DL 88 675.4 84 675.4
+DL 92 675.4 88 675.4 DL 96 675.4 92 675.4 DL 100 675.4 96 675.4 DL 104
+675.4 100 675.4 DL 108 675.4 104 675.4 DL 112 675.4 108 675.4 DL 116
+675.4 112 675.4 DL 120 675.4 116 675.4 DL 124 675.4 120 675.4 DL 128
+675.4 124 675.4 DL 132 675.4 128 675.4 DL 136 675.4 132 675.4 DL 140
+675.4 136 675.4 DL 144 675.4 140 675.4 DL 148 675.4 144 675.4 DL 152
+675.4 148 675.4 DL 156 675.4 152 675.4 DL 160 675.4 156 675.4 DL 164
+675.4 160 675.4 DL 168 675.4 164 675.4 DL 172 675.4 168 675.4 DL 176
+675.4 172 675.4 DL 180 675.4 176 675.4 DL 184 675.4 180 675.4 DL 188
+675.4 184 675.4 DL 192 675.4 188 675.4 DL 196 675.4 192 675.4 DL 200
+675.4 196 675.4 DL 204 675.4 200 675.4 DL 208 675.4 204 675.4 DL 212
+675.4 208 675.4 DL 216 675.4 212 675.4 DL/F5 5/Times-Roman@0 SF(18)93.6
+685.8 Q/F6 8/Times-Roman@0 SF -.12(Fo)3.2 K 2(re).12 G
(xample, on some systems)-2.12 E/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(18)93.6 697 Q F6(Older v)3.2 I
+(thostbyname).08 E F6(.)A F5(19)93.6 699.4 Q F6(Older v)3.2 I
(ersions of sendmail didn')-.12 E 2(tp)-.144 G(re-de\214ne)-2 E/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: 36 32
+%%Page: 39 35
%%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 1.321
-(When sending, the)127 96 R F0($h)3.821 E F1(,)A F0($u)3.821 E F1 3.821
-(,a)C(nd)-3.821 E F0($z)3.821 E F1 1.321
-(macros get set to the host, user)3.821 F 3.82(,a)-.4 G 1.32
-(nd home directory \(if)-3.82 F .516(local\) of the recipient.)102 108 R
-.516(The \214rst tw)5.516 F 3.016(oa)-.1 G .516(re set from the)-3.016 F
-F0($@)3.016 E F1(and)3.016 E F0($:)3.016 E F1 .517(part of the re)3.017
-F .517(writing rules, respec-)-.25 F(ti)102 120 Q -.15(ve)-.25 G(ly).15
-E(.)-.65 E(The)127 136.2 Q F0($p)3.806 E F1(and)3.806 E F0($t)3.806 E F1
-1.306(macros are used to create unique strings \(e.g., for the \231Message-Id:\232 \214eld\).)
-3.806 F(The)102 148.2 Q F0($i)3.251 E F1 .751(macro is set to the queue id on this host; if put into the timestamp line it can be e)
-3.251 F(xtremely)-.15 E .165(useful for tracking messages.)102 160.2 R
-(The)5.165 E F0($v)2.665 E F1 .164(macro is set to be the v)2.665 F .164
-(ersion number of)-.15 F/F2 10/Times-Italic@0 SF(sendmail)2.664 E F1
-2.664(;t)C .164(his is nor)-2.664 F(-)-.2 E
-(mally put in timestamps and has been pro)102 172.2 Q -.15(ve)-.15 G 2.5
-(ne).15 G(xtremely useful for deb)-2.65 E(ugging.)-.2 E(The)127 188.4 Q
-F0($c)3.547 E F1 1.048(\214eld is set to the \231hop count,)3.547 F
-3.548<9a69>-.7 G 1.048
-(.e., the number of times this message has been pro-)-3.548 F 2.857
-(cessed. This)102 200.4 R .357(can be determined by the)2.857 F F0<ad68>
-2.857 E F1 .356
-(\215ag on the command line or by counting the timestamps)2.857 F
-(in the message.)102 212.4 Q(The)127 228.6 Q F0($r)2.832 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 .195(ing hostname.)102
-240.6 R(The)5.195 E 2.694(yc)-.15 G .194(an be set together using the)
--2.694 F F0<ad70>2.694 E F1 .194
-(command line \215ag or separately using the)2.694 F F0<ad4d>2.694 E F1
-(or)102 252.6 Q F0(\255oM)2.5 E F1(\215ags.)2.5 E(The)127 268.8 Q F0($_)
-2.966 E F1 .466(is set to a v)2.966 F .467(alidated sender host name.)
--.25 F .467(If the sender is running an RFC 1413 compli-)5.467 F .385
-(ant IDENT serv)102 280.8 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)-2.884 F
-(on that host.)102 292.8 Q(The)127 309 Q F0(${client_name})5.98 E F1(,)A
-F0(${client_addr})5.98 E F1 5.98(,a)C(nd)-5.98 E F0(${client_port})5.98
-E F1 3.48(macros are set to the name,)5.98 F .786
-(address, and port number of the SMTP client who is in)102 321 R -.2(vo)
--.4 G(king).2 E F2(sendmail)3.286 E F1 .786(as a serv)3.286 F(er)-.15 E
-5.786(.T)-.55 G .785(hese can be)-5.786 F(used in the)102 333 Q F2 -.15
-(ch)2.5 G(ec).15 E(k_*)-.2 E F1(rulesets \(using the)2.5 E F0($&)2.5 E
-F1(deferred e)2.5 E -.25(va)-.25 G(luation form, of course!\).).25 E F0
-2.5(5.3. C)87 357 R(and F \212 De\214ne Classes)2.5 E F1 .659(Classes of phrases may be de\214ned to match on the left hand side of re)
-127 373.2 R .66(writing rules, where a)-.25 F .192(\231phrase\232 is a sequence of characters that do not contain space characters.)
-102 385.2 R -.15(Fo)5.192 G 2.692(re).15 G .191(xample a class of all)
--2.842 F 1.428(local names for this site might be created so that attempts to send to oneself can be eliminated.)
-102 397.2 R .041(These can either be de\214ned directly in the con\214guration \214le or read in from another \214le.)
-102 409.2 R .04(Classes are)5.04 F .649(named as a single letter or a w)
-102 421.2 R .649(ord in {braces}.)-.1 F .649(Class names be)5.649 F .649
-(ginning with lo)-.15 F .649(wer case letters and)-.25 F .639
-(special characters are reserv)102 433.2 R .639(ed for system use.)-.15
-F .638(Classes de\214ned in con\214g \214les may be gi)5.639 F -.15(ve)
--.25 G 3.138(nn).15 G(ames)-3.138 E 1.05
-(from the set of upper case letters for short names or be)102 445.2 R
-1.05(ginning with an upper case letter for long)-.15 F(names.)102 457.2
-Q(The syntax is:)127 473.4 Q F0(C)142 489.6 Q F2 1.666(cp)C(hr)-1.666 E
-(ase1 phr)-.15 E(ase2...)-.15 E F0(F)142 501.6 Q F2 1.666<638c>C(le)
--1.666 E F1 .661(The \214rst form de\214nes the class)102 517.8 R F2(c)
-3.161 E F1 .661(to match an)3.161 F 3.161(yo)-.15 G 3.161(ft)-3.161 G
-.661(he named w)-3.161 F 3.161(ords. It)-.1 F .661
-(is permissible to split them)3.161 F(among multiple lines; for e)102
-529.8 Q(xample, the tw)-.15 E 2.5(of)-.1 G(orms:)-2.5 E
-(CHmonet ucbmonet)142 546 Q(and)102 562.2 Q(CHmonet)142 578.4 Q
-(CHucbmonet)142 590.4 Q(are equi)102 606.6 Q -.25(va)-.25 G 2.5
-(lent. The).25 F -.74(``)2.5 G(F').74 E 2.5('f)-.74 G
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-39)195.86 E/F1 10/Times-Roman@0 SF(names.)102 96 Q
+(The syntax is:)127 112.2 Q F0(C)142 128.4 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 140.4 Q
+F2 1.666<638c>C(le)-1.666 E F1 .661
+(The \214rst form de\214nes the class)102 156.6 R F2(c)3.161 E F1 .661
+(to match an)3.161 F 3.161(yo)-.15 G 3.161(ft)-3.161 G .661(he named w)
+-3.161 F 3.161(ords. It)-.1 F .661(is permissible to split them)3.161 F
+(among multiple lines; for e)102 168.6 Q(xample, the tw)-.15 E 2.5(of)
+-.1 G(orms:)-2.5 E(CHmonet ucbmonet)142 184.8 Q(and)102 201 Q(CHmonet)
+142 217.2 Q(CHucbmonet)142 229.2 Q(are equi)102 245.4 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)-2.5 E 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 622.8 R F0($=)
+(Elements of classes can be accessed in rules using)127 261.6 R F0($=)
3.839 E F1(or)3.839 E F0($~)3.839 E F1 6.339(.T)C(he)-6.339 E F0($~)
-3.839 E F1 1.339(\(match entries not in)3.839 F
-(class\) only matches a single w)102 634.8 Q(ord; multi-w)-.1 E
+3.839 E F1 1.338(\(match entries not in)3.839 F
+(class\) only matches a single w)102 273.6 Q(ord; multi-w)-.1 E
(ord entries in the class are ignored in this conte)-.1 E(xt.)-.15 E
-(Some classes ha)127 651 Q .3 -.15(ve i)-.2 H(nternal meaning to).15 E
-F2(sendmail)2.5 E F1(:)A 18.42($=e contains)102 667.2 R .562
-(the Content-T)3.062 F(ransfer)-.35 E .562(-Encodings that can be 8)-.2
-F/F3 10/Symbol SF<ae>A F1 3.062(7b)C .562(it encoded.)-3.062 F .561
-(It is prede\214ned to)5.561 F
-(contain \2317bit\232, \2318bit\232, and \231binary\232.)138 679.2 Q
-17.86($=k set)102 695.4 R(to be the same as)2.5 E F0($k)2.5 E F1 2.5(,t)
-C(hat is, the UUCP node name.)-2.5 E 15.08($=m set)102 711.6 R
+(Some classes ha)127 289.8 Q .3 -.15(ve i)-.2 H(nternal meaning to).15 E
+F2(sendmail)2.5 E F1(:)A 18.42($=e contains)102 306 R .561
+(the Content-T)3.061 F(ransfer)-.35 E .561(-Encodings that can be 8)-.2
+F/F3 10/Symbol SF<ae>A F1 3.062(7b)C .562(it encoded.)-3.062 F .562
+(It is prede\214ned to)5.562 F
+(contain \2317bit\232, \2318bit\232, and \231binary\232.)138 318 Q 17.86
+($=k set)102 334.2 R(to be the same as)2.5 E F0($k)2.5 E F1 2.5(,t)C
+(hat is, the UUCP node name.)-2.5 E 15.08($=m set)102 350.4 R
(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 EP
-%%Page: 37 33
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-37)195.86 E/F1 10/Times-Roman@0 SF 17.86($=n can)102 96 R .58
-(be set to the set of MIME body types that can ne)3.08 F -.15(ve)-.25 G
-3.081(rb).15 G 3.081(ee)-3.081 G .581(ight to se)-3.081 F -.15(ve)-.25 G
-3.081(nb).15 G .581(it encoded.)-3.081 F(It)5.581 E(def)138 108 Q 1.81
+(wn, initially just)-.25 E F0($m)2.5 E F1(.)A 17.86($=n can)102 366.6 R
+.581(be set to the set of MIME body types that can ne)3.081 F -.15(ve)
+-.25 G 3.08(rb).15 G 3.08(ee)-3.08 G .58(ight to se)-3.08 F -.15(ve)-.25
+G 3.08(nb).15 G .58(it encoded.)-3.08 F(It)5.58 E(def)138 378.6 Q 1.81
(aults to \231multipart/signed\232.)-.1 F 1.81
(Message types \231message/*\232 and \231multipart/*\232 are ne)6.81 F
--.15(ve)-.25 G(r).15 E 1.853(encoded directly)138 120 R 6.853(.M)-.65 G
-1.853(ultipart messages are al)-6.853 F -.1(wa)-.1 G 1.853
+-.15(ve)-.25 G(r).15 E 1.853(encoded directly)138 390.6 R 6.853(.M)-.65
+G 1.853(ultipart messages are al)-6.853 F -.1(wa)-.1 G 1.853
(ys handled recursi).1 F -.15(ve)-.25 G(ly).15 E 6.853(.T)-.65 G 1.853
(he handling of)-6.853 F(message/* messages are controlled by class)138
-132 Q F0($=s)2.5 E F1(.)A 17.86($=q A)102 148.2 R .712(set of Content-T)
-3.212 F .712(ypes that will ne)-.8 F -.15(ve)-.25 G 3.212(rb).15 G 3.212
-(ee)-3.212 G .712(ncoded as base64 \(if the)-3.212 F 3.212(yh)-.15 G
--2.25 -.2(av e)-3.212 H .711(to be encoded,)3.412 F(the)138 160.2 Q
-3.357(yw)-.15 G .858(ill be encoded as quoted-printable\).)-3.357 F .858
-(It can ha)5.858 F 1.158 -.15(ve p)-.2 H .858
-(rimary types \(e.g., \231te).15 F .858(xt\232\) or full)-.15 F
-(types \(such as \231te)138 172.2 Q 2.5(xt/plain\232\). The)-.15 F
+402.6 Q F0($=s)2.5 E F1(.)A 17.86($=q A)102 418.8 R .711
+(set of Content-T)3.211 F .712(ypes that will ne)-.8 F -.15(ve)-.25 G
+3.212(rb).15 G 3.212(ee)-3.212 G .712(ncoded as base64 \(if the)-3.212 F
+3.212(yh)-.15 G -2.25 -.2(av e)-3.212 H .712(to be encoded,)3.412 F(the)
+138 430.8 Q 3.358(yw)-.15 G .858(ill be encoded as quoted-printable\).)
+-3.358 F .858(It can ha)5.858 F 1.158 -.15(ve p)-.2 H .858
+(rimary types \(e.g., \231te).15 F .857(xt\232\) or full)-.15 F
+(types \(such as \231te)138 442.8 Q 2.5(xt/plain\232\). The)-.15 F
(class is initialized to ha)2.5 E .3 -.15(ve \231)-.2 H(te).15 E
-(xt/plain\232 only)-.15 E(.)-.65 E 18.97($=s contains)102 188.4 R .648
+(xt/plain\232 only)-.15 E(.)-.65 E 18.97($=s contains)102 459 R .648
(the set of subtypes of message that can be treated recursi)3.148 F -.15
(ve)-.25 G(ly).15 E 5.648(.B)-.65 G 3.148(yd)-5.648 G(ef)-3.148 E .648
-(ault it con-)-.1 F .969(tains only \231rfc822\232.)138 200.4 R .969
-(Other \231message/*\232 types cannot be 8)5.969 F/F2 10/Symbol SF<ae>A
-F1 3.469(7b)C .969(it encoded.)-3.469 F .97(If a message)5.97 F 1.045
-(containing eight bit data is sent to a se)138 212.4 R -.15(ve)-.25 G
+(ault it con-)-.1 F .97(tains only \231rfc822\232.)138 471 R .969
+(Other \231message/*\232 types cannot be 8)5.97 F F3<ae>A F1 3.469(7b)C
+.969(it encoded.)-3.469 F .969(If a message)5.969 F 1.045
+(containing eight bit data is sent to a se)138 483 R -.15(ve)-.25 G
3.545(nb).15 G 1.045(it host, and that message cannot be encoded)-3.545
-F(into se)138 224.4 Q -.15(ve)-.25 G 2.5(nb).15 G
-(its, it will be stripped to 7 bits.)-2.5 E 20.08($=t set)102 240.6 R
-.372(to the set of trusted users by the)2.872 F F0(T)2.872 E F1 .372
-(con\214guration line.)2.872 F .372(If you w)5.372 F .373
-(ant to read trusted users)-.1 F(from a \214le use)138 252.6 Q F0(Ft)2.5
-E/F3 10/Times-Italic@0 SF(/\214le/name)A F1(.)A 15.64($=w set)102 268.8
-R .513(to be the set of all names this host is kno)3.013 F .513(wn by)
--.25 F 5.513(.T)-.65 G .513(his can be used to match local host-)-5.513
-F(names.)138 280.8 Q F3(Sendmail)127 297 Q F1 .182
-(can be compiled to allo)2.682 F 2.682(wa)-.25 G F3(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 309 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)-3.205 F F3
-(/etc/passwd)3.054 E F1 .554(\214le into a)3.054 F(class, use)102 321 Q
-(FL/etc/passwd %[^:])142 337.2 Q(which reads e)102 353.4 Q -.15(ve)-.25
-G(ry line up to the \214rst colon.).15 E F0 2.5(5.4. M)87 377.4 R 2.5
-<8a44>2.5 G(e\214ne Mailer)-2.5 E F1(Programs and interf)127 393.6 Q
+F(into se)138 495 Q -.15(ve)-.25 G 2.5(nb).15 G
+(its, it will be stripped to 7 bits.)-2.5 E 20.08($=t set)102 511.2 R
+.372(to the set of trusted users by the)2.873 F F0(T)2.872 E F1 .372
+(con\214guration line.)2.872 F .372(If you w)5.372 F .372
+(ant to read trusted users)-.1 F(from a \214le, use)138 523.2 Q F0(Ft)
+2.5 E F2(/\214le/name)A F1(.)A 15.64($=w set)102 539.4 R .513
+(to be the set of all names this host is kno)3.013 F .513(wn by)-.25 F
+5.513(.T)-.65 G .513(his can be used to match local host-)-5.513 F
+(names.)138 551.4 Q F2(Sendmail)127 567.6 Q F1 .183
+(can be compiled to allo)2.683 F 2.683(wa)-.25 G F2(scanf)-.001 E F1
+.182(\(3\) string on the)B F0(F)2.682 E F1 2.682(line. This)2.682 F .182
+(lets you do simplistic)2.682 F .554(parsing of te)102 579.6 R .554
+(xt \214les.)-.15 F -.15(Fo)5.554 G 3.054(re).15 G .554
+(xample, to read all the user names in your system)-3.204 F F2
+(/etc/passwd)3.055 E F1 .555(\214le into a)3.055 F(class, use)102 591.6
+Q(FL/etc/passwd %[^:])142 607.8 Q(which reads e)102 624 Q -.15(ve)-.25 G
+(ry line up to the \214rst colon.).15 E F0 2.5(5.4. M)87 648 R 2.5<8a44>
+2.5 G(e\214ne Mailer)-2.5 E F1(Programs and interf)127 664.2 Q
(aces to mailers are de\214ned in this line.)-.1 E(The format is:)5 E F0
-(M)142 409.8 Q F3(name)A F1 2.5(,{)C F3(\214eld)-2.5 E F1(=)A F3(value)A
-F1(}*)1.666 E(where)102 426 Q F3(name)4.244 E F1 1.744(is the name of the mailer \(used internally only\) and the \231\214eld=name\232 pairs de\214ne)
-4.244 F(attrib)102 438 Q(utes of the mailer)-.2 E 5(.F)-.55 G
-(ields are:)-5 E -.15(Pa)142 454.2 S 51.87(th The).15 F
-(pathname of the mailer)2.5 E 47.83(Flags Special)142 466.2 R
-(\215ags for this mailer)2.5 E 41.73(Sender Re)142 478.2 R
-(writing set\(s\) for sender addresses)-.25 E 31.17(Recipient Re)142
-490.2 R(writing set\(s\) for recipient addresses)-.25 E(Ar)142 502.2 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 514.2 R
-(end-of-line string for this mailer)2.5 E 35.62(Maxsize The)142 526.2 R
-(maximum message length to this mailer)2.5 E 32.27(Linelimit The)142
-538.2 R(maximum line length in the message body)2.5 E 31.18
-(Directory The)142 550.2 R -.1(wo)2.5 G(rking directory for the mailer)
-.1 E 42.84(Userid The)142 562.2 R(def)2.5 E
-(ault user and group id to run as)-.1 E 50.62(Nice The)142 574.2 R
-(nice\(2\) increment for the mailer)2.5 E 38.95(Charset The)142 586.2 R
-(def)2.5 E(ault character set for 8-bit characters)-.1 E -.8(Ty)142
-598.2 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 614.4 Q
-(ed.)-.1 E .397(The follo)127 630.6 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)-2.896 F .075(to conditionally assign headers to messages destined for particular mailers.)
-102 642.6 R .075(Flags mark)5.075 F .075(ed with \207 are)-.1 F 1.193
-(not interpreted by the)102 654.6 R F3(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 666.6 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 678.6 Q 15.56(aR)102 694.8 S .987
-(un Extended SMTP \(ESMTP\) protocol \(de\214ned in RFCs 1651, 1652, and 1653\).)
--15.56 F .986(This \215ag)5.987 F(def)122 706.8 Q
-(aults on if the SMTP greeting message includes the w)-.1 E
-(ord \231ESMTP\232.)-.1 E EP
-%%Page: 38 34
+(M)142 680.4 Q F2(name)A F1 2.5(,{)C F2(\214eld)-2.5 E F1(=)A F2(value)A
+F1(}*)1.666 E(where)102 696.6 Q F2(name)4.244 E F1 1.744(is the name of the mailer \(used internally only\) and the \231\214eld=name\232 pairs de\214ne)
+4.244 F(attrib)102 708.6 Q(utes of the mailer)-.2 E 5(.F)-.55 G
+(ields are:)-5 E EP
+%%Page: 40 36
%%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 12.78(AL)
-102 96 S .762
+/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 -.15(Pa)
+142 96 S 51.87(th The).15 F(pathname of the mailer)2.5 E 47.83
+(Flags Special)142 108 R(\215ags for this mailer)2.5 E 41.73(Sender Re)
+142 120 R(writing set\(s\) for sender addresses)-.25 E 31.17
+(Recipient Re)142 132 R(writing set\(s\) for recipient addresses)-.25 E
+(Ar)142 144 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 156 R
+(end-of-line string for this mailer)2.5 E 35.62(Maxsize The)142 168 R
+(maximum message length to this mailer)2.5 E 32.27(Linelimit The)142 180
+R(maximum line length in the message body)2.5 E 31.18(Directory The)142
+192 R -.1(wo)2.5 G(rking directory for the mailer).1 E 42.84(Userid The)
+142 204 R(def)2.5 E(ault user and group id to run as)-.1 E 50.62
+(Nice The)142 216 R(nice\(2\) increment for the mailer)2.5 E 38.95
+(Charset The)142 228 R(def)2.5 E
+(ault character set for 8-bit characters)-.1 E -.8(Ty)142 240 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 256.2 Q
+(ed.)-.1 E .396(The follo)127 272.4 R .396
+(wing \215ags may be set in the mailer description.)-.25 F(An)5.396 E
+2.896(yo)-.15 G .397(ther \215ags may be used freely)-2.896 F .075(to conditionally assign headers to messages destined for particular mailers.)
+102 284.4 R .075(Flags mark)5.075 F .075(ed with \207 are)-.1 F 1.192
+(not interpreted by the)102 296.4 R/F2 10/Times-Italic@0 SF(sendmail)
+3.692 E F1 1.193(binary; these are the con)3.692 F -.15(ve)-.4 G 1.193
+(ntionally used to correlate to the \215ags).15 F .738(portion of the)
+102 308.4 R F0(H)3.238 E F1 3.237(line. Flags)3.238 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 320.4 Q 15.56(aR)102 336.6 S .987
+(un Extended SMTP \(ESMTP\) protocol \(de\214ned in RFCs 1869, 1652, and 1870\).)
+-15.56 F .987(This \215ag)5.987 F(def)122 348.6 Q
+(aults on if the SMTP greeting message includes the w)-.1 E
+(ord \231ESMTP\232.)-.1 E 12.78(AL)102 364.8 S .762
(ook up the user part of the address in the alias database.)-12.78 F
-.763(Normally this is only set for local)5.762 F(mailers.)122 108 Q 15
-(bF)102 124.2 S .456(orce a blank line on the end of a message.)-15.15 F
+.762(Normally this is only set for local)5.762 F(mailers.)122 376.8 Q 15
+(bF)102 393 S .456(orce a blank line on the end of a message.)-15.15 F
.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 136.2 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 148.2 Q(ork mail.)-.1 E 15.56(cD)102 164.4 S
-2.663(on)-15.56 G .163(ot include comments in addresses.)-2.663 F .163
+(er)-.15 E(-)-.2 E .362(sions of /bin/mail that require a blank line, b)
+122 405 R .362(ut do not pro)-.2 F .362(vide it themselv)-.15 F 2.861
+(es. It)-.15 F -.1(wo)2.861 G .361(uld not nor).1 F(-)-.2 E
+(mally be used on netw)122 417 Q(ork mail.)-.1 E 15.56(cD)102 433.2 S
+2.662(on)-15.56 G .163(ot include comments in addresses.)-2.662 F .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)-2.763 F 1.846
-(remote mailer that gets confused by comments.)122 176.4 R 1.846
+(remote mailer that gets confused by comments.)122 445.2 R 1.846
(This strips addresses of the form \231Phrase)6.846 F
-(<address>\232 or \231address \(Comment\)\232 do)122 188.4 Q
-(wn to just \231address\232.)-.25 E 5.83(C\210 If)102 204.6 R .214
-(mail is)2.714 F/F2 10/Times-Italic@0 SF -.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
+(<address>\232 or \231address \(Comment\)\232 do)122 457.2 Q
+(wn to just \231address\232.)-.25 E 5.83(C\210 If)102 473.4 R .213
+(mail is)2.713 F F2 -.37(re)2.713 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)-2.713 F -.15(ve)-.2 G .97
-(an at sign \(\231@\232\) after being re)122 216.6 R .97
+(an at sign \(\231@\232\) after being re)122 485.4 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 228.6 Q -.15(ve)
+(he \231@domain\232 clause from).15 F(the sender en)122 497.4 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 244.8 Q
--.8(To)162 256.8 S 2.5(:u).8 G(serb@hostb, userc)-2.5 E(to be re)122 273
-Q(written as:)-.25 E(From: usera@hosta)162 289.2 Q -.8(To)162 301.2 S
-2.5(:u).8 G(serb@hostb, userc@hosta)-2.5 E(automatically)122 317.4 Q 5
+(ws mail with headers of the form:)-.25 E(From: usera@hosta)162 513.6 Q
+-.8(To)162 525.6 S 2.5(:u).8 G(serb@hostb, userc)-2.5 E(to be re)122
+541.8 Q(written as:)-.25 E(From: usera@hosta)162 558 Q -.8(To)162 570 S
+2.5(:u).8 G(serb@hostb, userc@hosta)-2.5 E(automatically)122 586.2 Q 5
(.H)-.65 G -.25(ow)-5 G -2.15 -.25(ev e).25 H .8 -.4(r, i).25 H 2.5(td)
.4 G(oesn')-2.5 E 2.5(tr)-.18 G(eally w)-2.5 E(ork reliably)-.1 E(.)-.65
-E 15(dD)102 333.6 S 2.56(on)-15 G .06(ot include angle brack)-2.56 F .06
+E 15(dD)102 602.4 S 2.56(on)-15 G .06(ot include angle brack)-2.56 F .06
(ets around route-address syntax addresses.)-.1 F .06
-(This is useful on mailers)5.06 F .187(that are going to pass addresses to a shell that might interpret angle brack)
-122 345.6 R .188(ets as I/O redirection.)-.1 F 5.28(D\207 This)102 361.8
+(This is useful on mailers)5.06 F .188(that are going to pass addresses to a shell that might interpret angle brack)
+122 614.4 R .187(ets as I/O redirection.)-.1 F 5.28(D\207 This)102 630.6
R(mailer w)2.5 E(ants a \231Date:\232 header line.)-.1 E 15.56(eT)102
-378 S .174(his mailer is e)-15.56 F(xpensi)-.15 E .474 -.15(ve t)-.25 H
-2.674(oc).15 G .173(onnect to, so try to a)-2.674 F -.2(vo)-.2 G .173
-(id connecting normally; an).2 F 2.673(yn)-.15 G .173(ecessary con-)
--2.673 F(nection will occur during a queue run.)122 390 Q 13.89(EE)102
-406.2 S(scape lines be)-13.89 E
-(ginning with \231From\232 in the message with a `>' sign.)-.15 E 16.67
-(fT)102 422.4 S .19(he mailer w)-16.67 F .19(ants a)-.1 F F0<ad66>2.69 E
-F2(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 434.4 Q .3 -.15
-(ve a)-.25 H 2.5(ne).15 G(rror if the e)-2.5 E -.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 450.6 R(mailer w)2.5 E
-(ants a \231From:\232 header line.)-.1 E 15(gN)102 466.8 S(ormally)-15 E
-(,)-.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 478.8 R(Ho)
+646.8 S .173(his mailer is e)-15.56 F(xpensi)-.15 E .473 -.15(ve t)-.25
+H 2.673(oc).15 G .173(onnect to, so try to a)-2.673 F -.2(vo)-.2 G .174
+(id connecting normally; an).2 F 2.674(yn)-.15 G .174(ecessary con-)
+-2.674 F(nection will occur during a queue run.)122 658.8 Q 13.89(EE)102
+675 S(scape lines be)-13.89 E(ginning with \231From)-.15 E 2.5<9a69>5 G
+2.5(nt)-2.5 G(he message with a `>' sign.)-2.5 E 16.67(fT)102 691.2 S
+.19(he mailer w)-16.67 F .19(ants a)-.1 F F0<ad66>2.69 E F2(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 703.2 Q .3 -.15(ve a)-.25 H 2.5(ne).15 G(rror if the e)-2.5 E -.15
+(xe)-.15 G(cuting user does not ha).15 E .3 -.15(ve s)-.2 H
+(pecial permissions\).).15 E EP
+%%Page: 41 37
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-41)195.86 E/F1 10/Times-Roman@0 SF 6.94(F\207 This)102 96 R
+(mailer w)2.5 E(ants a \231From:\232 header line.)-.1 E 15(gN)102 112.2
+S(ormally)-15 E(,)-.65 E/F2 10/Times-Italic@0 SF(sendmail)4.892 E F1
+2.393(sends internally generated email \(e.g., error messages\) using the null)
+4.892 F 1.327(return address as required by RFC 1123.)122 124.2 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)-3.827
-F 3.311(address. If)122 490.8 R(necessary)3.311 E 3.311(,y)-.65 G .811
-(ou can set the)-3.311 F 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
+(ome mailers don').4 F 3.827(ta)-.18 G 1.327(ccept a null return)-3.827
+F 3.31(address. If)122 136.2 R(necessary)3.31 E 3.31(,y)-.65 G .81
+(ou can set the)-3.31 F F0(g)3.311 E F1 .811(\215ag to pre)3.311 F -.15
+(ve)-.25 G(nt).15 E F2(sendmail)3.311 E F1 .811(from obe)3.311 F .811
(ying the standards;)-.15 F 1.57
-(error messages will be sent as from the MAILER-D)122 502.8 R 1.57
+(error messages will be sent as from the MAILER-D)122 148.2 R 1.57
(AEMON \(actually)-.4 F 4.07(,t)-.65 G 1.57(he v)-4.07 F 1.57
-(alue of the)-.25 F F0($n)4.07 E F1(macro\).)122 514.8 Q 15(hU)102 531 S
-(pper case should be preserv)-15 E(ed in host names for this mailer)-.15
-E(.)-.55 E 17.22(iD)102 547.2 S 2.5(oU)-17.22 G(ser Database re)-2.5 E
-(writing on en)-.25 E -.15(ve)-.4 G(lope sender address.).15 E 16.67(IT)
-102 563.4 S .475(his mailer will be speaking SMTP to another)-16.67 F F2
-(sendmail)2.974 E F1 2.974<8a61>2.974 G 2.974(ss)-2.974 G .474
-(uch it can use special protocol)-2.974 F 3.632(features. This)122 575.4
-R 1.133(option is not required \(i.e., if this option is omitted the transmission will still)
-3.632 F(operate successfully)122 587.4 Q 2.5(,a)-.65 G
+(alue of the)-.25 F F0($n)4.07 E F1(macro\).)122 160.2 Q 15(hU)102 176.4
+S(pper case should be preserv)-15 E(ed in host names for this mailer)
+-.15 E(.)-.55 E 17.22(iD)102 192.6 S 2.5(oU)-17.22 G(ser Database re)
+-2.5 E(writing on en)-.25 E -.15(ve)-.4 G(lope sender address.).15 E
+16.67(IT)102 208.8 S .474(his mailer will be speaking SMTP to another)
+-16.67 F F2(sendmail)2.974 E F1 2.974<8a61>2.974 G 2.975(ss)-2.974 G
+.475(uch it can use special protocol)-2.975 F 3.633(features. This)122
+220.8 R 1.133(option is not required \(i.e., if this option is omitted the transmission will still)
+3.633 F(operate successfully)122 232.8 Q 2.5(,a)-.65 G
(lthough perhaps not as ef)-2.5 E(\214ciently as possible\).)-.25 E
-17.22(jD)102 603.6 S 2.5(oU)-17.22 G(ser Database re)-2.5 E
-(writing on recipients as well as senders.)-.25 E 15(kN)102 619.8 S 1.03
-(ormally when)-15 F 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)-3.529 G
-1.029(hecks to mak)-3.529 F 3.529(es)-.1 G 1.029(ure that this isn')
--3.529 F(t)-.18 E .562(accidently the same host name as might happen if)
-122 631.8 R F2(sendmail)3.062 E F1 .562
-(is miscon\214gured or if a long-haul)3.062 F(netw)122 643.8 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 655.8 Q(ery unusual circumstances.)-.15 E
-12.78(KC)102 672 S(urrently unimplemented.)-12.78 E(Reserv)5 E
-(ed for chunking.)-.15 E 17.22(lT)102 688.2 S
+17.22(jD)102 249 S 2.5(oU)-17.22 G(ser Database re)-2.5 E
+(writing on recipients as well as senders.)-.25 E 15(kN)102 265.2 S
+1.029(ormally when)-15 F F2(sendmail)3.529 E F1 1.029
+(connects to a host via SMTP)3.529 F 3.529(,i)-1.11 G 3.529(tc)-3.529 G
+1.03(hecks to mak)-3.529 F 3.53(es)-.1 G 1.03(ure that this isn')-3.53 F
+(t)-.18 E .562(accidently the same host name as might happen if)122
+277.2 R F2(sendmail)3.062 E F1 .562
+(is miscon\214gured or if a long-haul)3.062 F(netw)122 289.2 Q 1.073
+(ork interf)-.1 F 1.073(ace is set in loopback mode.)-.1 F 1.074
+(This \215ag disables the loopback check.)6.074 F 1.074(It should)6.074
+F(only be used under v)122 301.2 Q(ery unusual circumstances.)-.15 E
+12.78(KC)102 317.4 S(urrently unimplemented.)-12.78 E(Reserv)5 E
+(ed for chunking.)-.15 E 17.22(lT)102 333.6 S
(his mailer is local \(i.e., \214nal deli)-17.22 E -.15(ve)-.25 G
-(ry will be performed\).).15 E 13.89(LL)102 704.4 S .819
-(imit the line lengths as speci\214ed in RFC821.)-13.89 F .82
-(This deprecated option should be replaced by)5.819 F(the)122 716.4 Q F0
+(ry will be performed\).).15 E 13.89(LL)102 349.8 S .82
+(imit the line lengths as speci\214ed in RFC821.)-13.89 F .819
+(This deprecated option should be replaced by)5.819 F(the)122 361.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)-2.5 E F0(L)2.5 E F1(\215ag also sets the)2.5 E F0
-(7)2.5 E F1(\215ag.)2.5 E EP
-%%Page: 39 35
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-39)195.86 E/F1 10/Times-Roman@0 SF 12.22(mT)102 96 S .464(his mailer can send to multiple users on the same host in one transaction.)
--12.22 F .463(When a)5.463 F F0($u)2.963 E F1(macro)2.963 E .731
-(occurs in the)122 108 R/F2 10/Times-Italic@0 SF(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 120 Q 3.61(M\207 This)102 136.2 R
+(7)2.5 E F1(\215ag.)2.5 E 12.22(mT)102 378 S .463(his mailer can send to multiple users on the same host in one transaction.)
+-12.22 F .464(When a)5.464 F F0($u)2.964 E F1(macro)2.964 E .732
+(occurs in the)122 390 R F2(ar)3.232 E(gv)-.37 E F1 .732(part of the mailer de\214nition, that \214eld will be repeated as necessary for all)
+3.232 F(qualifying users.)122 402 Q 3.61(M\207 This)102 418.2 R
(mailer w)2.5 E(ants a \231Message-Id:\232 header line.)-.1 E 15(nD)102
-152.4 S 2.5(on)-15 G
+434.4 S 2.5(on)-15 G
(ot insert a UNIX-style \231From\232 line on the front of the message.)
--2.5 E 15(oA)102 168.6 S -.1(lwa)-15 G .816(ys run as the o).1 F .816
+-2.5 E 15(oA)102 450.6 S -.1(lwa)-15 G .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 180.6 R
+(locally generated mail or as \231daemon\232 \(actually)122 462.6 R
2.698(,t)-.65 G .198(he user speci\214ed in the)-2.698 F F0(u)2.698 E F1
-.198(option\) when deli)2.698 F(v-)-.25 E .981(ering netw)122 192.6 R
-.981(ork mail.)-.1 F .981(The normal beha)5.981 F .981
+.198(option\) when deli)2.698 F(v-)-.25 E .98(ering netw)122 474.6 R .98
+(ork mail.)-.1 F .98(The normal beha)5.98 F .981
(viour is required by most local mailers, which will not)-.2 F(allo)122
-204.6 Q 2.52(wt)-.25 G .02(he en)-2.52 F -.15(ve)-.4 G .021
+486.6 Q 2.521(wt)-.25 G .021(he en)-2.521 F -.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 216.6 Q F0(S)2.5 E
-F1(\215ag is set.)2.5 E 15(pU)102 232.8 S .498
-(se the route-addr style re)-15 F -.15(ve)-.25 G .498
-(rse-path in the SMTP \231MAIL FR).15 F .497
+.15 F .02(This \215ag is)5.02 F(ignored if the)122 498.6 Q F0(S)2.5 E F1
+(\215ag is set.)2.5 E 15(pU)102 514.8 S .497(se the route-addr style re)
+-15 F -.15(ve)-.25 G .498(rse-path in the SMTP \231MAIL FR).15 F .498
(OM:\232 command rather than just)-.4 F .385(the return address; although this is required in RFC821 section 3.1, man)
-122 244.8 R 2.886(yh)-.15 G .386(osts do not process)-2.886 F(re)122
-256.8 Q -.15(ve)-.25 G(rse-paths properly).15 E 5(.R)-.65 G -2.15 -.25
+122 526.8 R 2.885(yh)-.15 G .385(osts do not process)-2.885 F(re)122
+538.8 Q -.15(ve)-.25 G(rse-paths properly).15 E 5(.R)-.65 G -2.15 -.25
(ev e)-5 H(rse-paths are of).25 E(\214cially discouraged by RFC 1123.)
--.25 E 6.94(P\207 This)102 273 R(mailer w)2.5 E(ants a \231Return-P)-.1
-E(ath:\232 line.)-.15 E 15(qW)102 289.2 S .069
+-.25 E 6.94(P\207 This)102 555 R(mailer w)2.5 E(ants a \231Return-P)-.1
+E(ath:\232 line.)-.15 E 15(qW)102 571.2 S .068
(hen an address that resolv)-15 F .069(es to this mailer is v)-.15 F
-.068(eri\214ed \(SMTP VRFY command\), generate 250)-.15 F
-(responses instead of 252 responses.)122 301.2 Q
-(This will imply that the address is local.)5 E 16.67(rS)102 317.4 S
+.069(eri\214ed \(SMTP VRFY command\), generate 250)-.15 F
+(responses instead of 252 responses.)122 583.2 Q
+(This will imply that the address is local.)5 E 16.67(rS)102 599.4 S
(ame as)-16.67 E F0(f)2.5 E F1 2.5(,b)C(ut sends a)-2.7 E F0<ad72>2.5 E
-F1(\215ag.)2.5 E 13.33(RO)102 333.6 S .669
+F1(\215ag.)2.5 E 13.33(RO)102 615.6 S .67
(pen SMTP connections from a \231secure\232 port.)-13.33 F .669
-(Secure ports aren')5.669 F 3.169(t\()-.18 G .67(secure, that is\) e)
--3.169 F .67(xcept on)-.15 F
-(UNIX machines, so it is unclear that this adds an)122 345.6 Q(ything.)
--.15 E 16.11(sS)102 361.8 S(trip quote characters \(" and \\\) of)-16.11
+(Secure ports aren')5.669 F 3.169(t\()-.18 G .669(secure, that is\) e)
+-3.169 F .669(xcept on)-.15 F
+(UNIX machines, so it is unclear that this adds an)122 627.6 Q(ything.)
+-.15 E 16.11(sS)102 643.8 S(trip quote characters \(" and \\\) of)-16.11
E 2.5(fo)-.25 G 2.5(ft)-2.5 G(he address before calling the mailer)-2.5
-E(.)-.55 E 14.44(SD)102 378 S(on')-14.44 E 3.332(tr)-.18 G .832
-(eset the userid before calling the mailer)-3.332 F 5.831(.T)-.55 G .831
-(his w)-5.831 F .831(ould be used in a secure en)-.1 F(vironment)-.4 E
-(where)122 390 Q F2(sendmail)3.317 E F1 .817(ran as root.)3.317 F .817
+E(.)-.55 E 14.44(SD)102 660 S(on')-14.44 E 3.331(tr)-.18 G .831
+(eset the userid before calling the mailer)-3.331 F 5.831(.T)-.55 G .831
+(his w)-5.831 F .832(ould be used in a secure en)-.1 F(vironment)-.4 E
+(where)122 672 Q F2(sendmail)3.318 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
+(ged addresses.)-.18 F .817(If the)5.817 F F0(U=)3.317 E F1 .817
(\214eld is)3.317 F .974
-(also speci\214ed, this \215ag causes the user id to al)122 402 R -.1
+(also speci\214ed, this \215ag causes the user id to al)122 684 R -.1
(wa)-.1 G .974(ys be set to that user and group \(instead of).1 F(lea)
-122 414 Q(ving it as root\).)-.2 E 15(uU)102 430.2 S
+122 696 Q(ving it as root\).)-.2 E 15(uU)102 712.2 S
(pper case should be preserv)-15 E(ed in user names for this mailer)-.15
-E(.)-.55 E 12.78(UT)102 446.4 S(his mailer w)-12.78 E(ants UUCP-style \231From\232 lines with the ugly \231remote from <host>\232 on the end.)
--.1 E 12.78(wT)102 462.6 S .565(he user must ha)-12.78 F .865 -.15
+E(.)-.55 E EP
+%%Page: 42 38
+%%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 12.78(UT)
+102 96 S(his mailer w)-12.78 E(ants UUCP-style \231From\232 lines with the ugly \231remote from <host>\232 on the end.)
+-.1 E 12.78(wT)102 112.2 S .566(he user must ha)-12.78 F .866 -.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 474.6 Q
+(alid account on this machine, i.e., getpwnam must succeed.)-.1 F .565
+(If not, the)5.565 F(mail is bounced.)122 124.2 Q
(This is required to get \231.forw)5 E(ard\232 capability)-.1 E(.)-.65 E
-7.5(x\207 This)102 490.8 R(mailer w)2.5 E
-(ants a \231Full-Name:\232 header line.)-.1 E 12.78(XT)102 507 S .972
+7.5(x\207 This)102 140.4 R(mailer w)2.5 E
+(ants a \231Full-Name:\232 header line.)-.1 E 12.78(XT)102 156.6 S .972
(his mailer w)-12.78 F .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)-3.472 H(ine).15 E(be)122 519 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\).)
--3.446 F(This)5.797 E(insures that lines in the message containing a dot will not terminate the message prematurely)
-122 531 Q(.)-.65 E 15(0D)102 547.2 S(on')-15 E 2.5(tl)-.18 G
+-.1 F 3.472(,a)-.65 G 1.272 -.15(ny l)-3.472 H(ine).15 E(be)122 168.6 Q
+.797(ginning with a dot will ha)-.15 F 1.097 -.15(ve a)-.2 H 3.297(ne)
+.15 G .796(xtra dot prepended \(to be stripped at the other end\).)
+-3.447 F(This)5.796 E(insures that lines in the message containing a dot will not terminate the message prematurely)
+122 180.6 Q(.)-.65 E 15.56(zR)102 196.8 S .965(un Local Mail T)-15.56 F
+.965(ransfer Protocol \(LMTP\) between)-.35 F/F2 10/Times-Italic@0 SF
+(sendmail)3.465 E F1 .965(and the local mailer)3.465 F 5.965(.T)-.55 G
+.965(his is a)-5.965 F -.25(va)122 208.8 S .167(riant on SMTP de\214ned in RFC 2033 that is speci\214cally designed for deli)
+.25 F -.15(ve)-.25 G .167(ry to a local mail-).15 F(box.)122 220.8 Q 15
+(0D)102 237 S(on')-15 E 2.5(tl)-.18 G
(ook up MX records for hosts sent via SMTP)-2.5 E(.)-1.11 E 15(3E)102
-563.4 S .002(xtend the list of characters con)-15 F -.15(ve)-.4 G .001
-(rted to =XX notation when con).15 F -.15(ve)-.4 G .001
-(rting to Quoted-Printable to).15 F .977(include those that don')122
-575.4 R 3.478(tm)-.18 G .978(ap cleanly between ASCII and EBCDIC.)-3.478
-F .978(Useful if you ha)5.978 F 1.278 -.15(ve I)-.2 H(BM).15 E
-(mainframes on site.)122 587.4 Q 15(5I)102 603.6 S 2.717(fn)-15 G 2.717
-(oa)-2.717 G .217(liases are found for this address, pass the address through ruleset 5 for possible alternate)
--2.717 F 2.5(resolution. This)122 615.6 R(is intended to forw)2.5 E
+253.2 S .001(xtend the list of characters con)-15 F -.15(ve)-.4 G .002
+(rted to =XX notation when con).15 F -.15(ve)-.4 G .002
+(rting to Quoted-Printable to).15 F .978(include those that don')122
+265.2 R 3.478(tm)-.18 G .978(ap cleanly between ASCII and EBCDIC.)-3.478
+F .978(Useful if you ha)5.978 F 1.277 -.15(ve I)-.2 H(BM).15 E
+(mainframes on site.)122 277.2 Q 15(5I)102 293.4 S 2.716(fn)-15 G 2.716
+(oa)-2.716 G .217(liases are found for this address, pass the address through ruleset 5 for possible alternate)
+-2.716 F 2.5(resolution. This)122 305.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 631.8 S 1.14(trip all output to se)-15 F -.15(ve)-.25 G 3.64
-(nb).15 G 3.64(its. This)-3.64 F 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 643.8 R .295
+15(7S)102 321.6 S 1.141(trip all output to se)-15 F -.15(ve)-.25 G 3.641
+(nb).15 G 3.641(its. This)-3.641 F 1.141(is the def)3.641 F 1.141
+(ault if the)-.1 F F0(L)3.64 E F1 1.14(\215ag is set.)3.64 F 1.14
+(Note that clearing this)6.14 F .295(option is not suf)122 333.6 R .295
(\214cient to get full eight bit data passed through)-.25 F F2(sendmail)
2.795 E F1 5.295(.I)C 2.795(ft)-5.295 G(he)-2.795 E F0(7)2.795 E F1 .295
-(option is set,)2.795 F .716(this is essentially al)122 655.8 R -.1(wa)
+(option is set,)2.795 F .717(this is essentially al)122 345.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 667.8 Q 2.5(th)-.18 G -2.25
+(as stripped on input.)-.1 F .716(Note that this option)5.717 F
+(will only impact messages that didn')122 357.6 Q 2.5(th)-.18 G -2.25
-.2(av e)-2.5 H(8)2.7 E/F3 10/Symbol SF<ae>A F1 2.5(7b)C(it MIME con)
--2.5 E -.15(ve)-.4 G(rsions performed.).15 E 15(8I)102 684 S 3.783(fs)
+-2.5 E -.15(ve)-.4 G(rsions performed.).15 E 15(8I)102 373.8 S 3.782(fs)
-15 G 1.283(et, it is acceptable to send eight bit data to this mailer; the usual attempt to do 8)
--3.783 F F3<ae>A F1 3.782(7b)C(it)-3.782 E(MIME con)122 696 Q -.15(ve)
--.4 G(rsions will be bypassed.).15 E 15(9I)102 712.2 S 2.704(fs)-15 G
-.204(et, do)-2.704 F F2(limited)2.704 E F1(7)2.704 E F3<ae>A F1 2.704
-(8b)C .204(it MIME con)-2.704 F -.15(ve)-.4 G 2.704(rsions. These).15 F
-(con)2.704 E -.15(ve)-.4 G .205(rsions are limited to te).15 F .205
-(xt/plain data.)-.15 F EP
-%%Page: 40 36
-%%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 17.22(:C)
-102 96 S .982(heck addresses to see if the)-17.22 F 3.482(yb)-.15 G -.15
-(eg)-3.482 G .982(in \231:include:\232; if the).15 F 3.482(yd)-.15 G
-.982(o, con)-3.482 F -.15(ve)-.4 G .982
-(rt them to the \231*include*\232).15 F(mailer)122 108 Q(.)-.55 E 18(|C)
-102 124.2 S(heck addresses to see if the)-18 E 2.5(yb)-.15 G -.15(eg)
--2.5 G(in with a `|'; if the).15 E 2.5(yd)-.15 G(o, con)-2.5 E -.15(ve)
--.4 G(rt them to the \231prog\232 mailer).15 E(.)-.55 E 17.22(/C)102
-140.4 S(heck addresses to see if the)-17.22 E 2.5(yb)-.15 G -.15(eg)-2.5
-G(in with a `/'; if the).15 E 2.5(yd)-.15 G(o, con)-2.5 E -.15(ve)-.4 G
+-3.782 F F3<ae>A F1 3.783(7b)C(it)-3.783 E(MIME con)122 385.8 Q -.15(ve)
+-.4 G(rsions will be bypassed.).15 E 15(9I)102 402 S 2.705(fs)-15 G .205
+(et, do)-2.705 F F2(limited)2.705 E F1(7)2.705 E F3<ae>A F1 2.704(8b)C
+.204(it MIME con)-2.704 F -.15(ve)-.4 G 2.704(rsions. These).15 F(con)
+2.704 E -.15(ve)-.4 G .204(rsions are limited to te).15 F .204
+(xt/plain data.)-.15 F 17.22(:C)102 418.2 S .982
+(heck addresses to see if the)-17.22 F 3.482(yb)-.15 G -.15(eg)-3.482 G
+.982(in \231:include:\232; if the).15 F 3.482(yd)-.15 G .982(o, con)
+-3.482 F -.15(ve)-.4 G .982(rt them to the \231*include*\232).15 F
+(mailer)122 430.2 Q(.)-.55 E 18(|C)102 446.4 S
+(heck addresses to see if the)-18 E 2.5(yb)-.15 G -.15(eg)-2.5 G
+(in with a `|'; if the).15 E 2.5(yd)-.15 G(o, con)-2.5 E -.15(ve)-.4 G
+(rt them to the \231prog\232 mailer).15 E(.)-.55 E 17.22(/C)102 462.6 S
+(heck addresses to see if the)-17.22 E 2.5(yb)-.15 G -.15(eg)-2.5 G
+(in with a `/'; if the).15 E 2.5(yd)-.15 G(o, con)-2.5 E -.15(ve)-.4 G
(rt them to the \231*\214le*\232 mailer).15 E(.)-.55 E 10.79(@L)102
-156.6 S(ook up addresses in the user database.)-10.79 E .267
-(Con\214guration \214les prior to le)127 172.8 R -.15(ve)-.25 G 2.768
-(l6a).15 G .268(ssume the `)-2.768 F -1.11(A')-.8 G 2.768(,`)1.11 G .268
+478.8 S(ook up addresses in the user database.)-10.79 E .268
+(Con\214guration \214les prior to le)127 495 R -.15(ve)-.25 G 2.768(l6a)
+.15 G .268(ssume the `)-2.768 F -1.11(A')-.8 G 2.768(,`)1.11 G .268
(w', `5', `:', `|', `/', and `@' options on the)-2.768 F
-(mailer named \231local\232.)102 184.8 Q .306(The mailer with the special name \231error\232 can be used to generate a user error)
-127 201 R 5.305(.T)-.55 G .305(he \(optional\))-5.305 F .323
-(host \214eld is an e)102 213 R .323(xit status to be returned, and the user \214eld is a message to be printed.)
--.15 F .324(The e)5.324 F .324(xit sta-)-.15 F .891
-(tus may be numeric or one of the v)102 225 R .891(alues USA)-.25 F .891
-(GE, NOUSER, NOHOST)-.4 F 3.39(,U)-.74 G -.35(NA)-3.39 G -1.35(VA)-1 G
-.89(ILABLE, SOFT)1.35 F(-)-.92 E -1.2(WA)102 237 S 1.141(RE, TEMPF)1.2 F
-1.141(AIL, PR)-.74 F -1.88 -.4(OT O)-.4 H 1.141
-(COL, or CONFIG to return the corresponding EX_ e).4 F 1.142
+(mailer named \231local\232.)102 507 Q .306(The mailer with the special name \231error\232 can be used to generate a user error)
+127 523.2 R 5.306(.T)-.55 G .306(he \(optional\))-5.306 F .324
+(host \214eld is an e)102 535.2 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 547.2 R .891(alues USA)-.25 F
+.891(GE, NOUSER, NOHOST)-.4 F 3.391(,U)-.74 G -.35(NA)-3.391 G -1.35(VA)
+-1 G .891(ILABLE, SOFT)1.35 F(-)-.92 E -1.2(WA)102 559.2 S 1.142
+(RE, TEMPF)1.2 F 1.142(AIL, PR)-.74 F -1.88 -.4(OT O)-.4 H 1.142
+(COL, or CONFIG to return the corresponding EX_ e).4 F 1.141
(xit code, or an)-.15 F .288
-(enhanced error code as described in RFC 1893,)102 249 R/F2 10
-/Times-Italic@0 SF .288(Enhanced Mail System Status Codes.)2.788 F F1
--.15(Fo)5.287 G 2.787(re).15 G(xample,)-2.937 E(the entry:)102 261 Q
-($#error $@ NOHOST $: Host unkno)142 277.2 Q(wn in this domain)-.25 E
+(enhanced error code as described in RFC 1893,)102 571.2 R F2 .288
+(Enhanced Mail System Status Codes.)2.788 F F1 -.15(Fo)5.288 G 2.788(re)
+.15 G(xample,)-2.938 E(the entry:)102 583.2 Q
+($#error $@ NOHOST $: Host unkno)142 599.4 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 293.4 R .146(wn\232 e)-.25 F .146(xit sta-)-.15 F .491
-(tus to be returned if the LHS matches.)102 305.4 R .491
+102 615.6 R .145(wn\232 e)-.25 F .145(xit sta-)-.15 F .491
+(tus to be returned if the LHS matches.)102 627.6 R .491
(This mailer is only functional in rulesets 0, 5, or one of the)5.491 F
-(check_* rulesets.)102 317.4 Q .468(The mailer named \231local\232)127
-333.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 345.6 R -.15(ve)-.25 G .25(ral w).15 F 2.75(ays. Additionally)-.1 F
+(check_* rulesets.)102 639.6 Q .257
+(The mailer with the special name \231discard\232 causes an)127 655.8 R
+2.756(ym)-.15 G .256(ail sent to it to be discarded b)-2.756 F .256
+(ut oth-)-.2 F(erwise treated as though it were successfully deli)102
+667.8 Q -.15(ve)-.25 G(red.).15 E .468(The mailer named \231local\232)
+127 684 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 696 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,)-2.75 F .942(\231*\214le*\232, and \231*include*\232 may be de\214ned to tune the deli)
-102 357.6 R -.15(ve)-.25 G .942
-(ry of messages to programs, \214les, and).15 F
-(:include: lists respecti)102 369.6 Q -.15(ve)-.25 G(ly).15 E 5(.T)-.65
-G(he)-5 E 2.5(yd)-.15 G(ef)-2.5 E(ault to:)-.1 E
-(Mprog, P=/bin/sh, F=lsD, A=sh \255c $u)142 385.8 Q(M*\214le*, P=/de)142
-397.8 Q(v/null, F=lsDFMPEu, A=FILE)-.25 E(M*include*, P=/de)142 409.8 Q
-(v/null, F=su, A=INCLUDE)-.25 E .616(The Sender and Recipient re)127
-430.2 R .615
+102 708 R -.15(ve)-.25 G .942(ry of messages to programs, \214les, and)
+.15 F(:include: lists respecti)102 720 Q -.15(ve)-.25 G(ly).15 E 5(.T)
+-.65 G(he)-5 E 2.5(yd)-.15 G(ef)-2.5 E(ault to:)-.1 E EP
+%%Page: 43 39
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-43)195.86 E/F1 10/Times-Roman@0 SF
+(Mprog, P=/bin/sh, F=lsoDq9, T=DNS/RFC822/X-Unix, A=sh \255c $u)142 96 Q
+(M*\214le*, P=[FILE], F=lsDFMPEouq9, T=DNS/RFC822/X-Unix, A=FILE $u)142
+108 Q(M*include*, P=/de)142 120 Q(v/null, F=su, A=INCLUDE $u)-.25 E .616
+(The Sender and Recipient re)127 140.4 R .615
(writing sets may either be a simple ruleset id or may be tw)-.25 F
3.115(oi)-.1 G(ds)-3.115 E .575
-(separated by a slash; if so, the \214rst re)102 442.2 R .576
+(separated by a slash; if so, the \214rst re)102 152.4 R .576
(writing set is applied to en)-.25 F -.15(ve)-.4 G .576
-(lope addresses and the second is).15 F(applied to headers.)102 454.2 Q
-.197
+(lope addresses and the second is).15 F(applied to headers.)102 164.4 Q
+(Setting an)5 E 2.5(yv)-.15 G(alue zero disables corresponding mailer)
+-2.75 E(-speci\214c re)-.2 E(writing.)-.25 E .197
(The Directory is actually a colon-separated path of directories to try)
-127 470.4 R 5.196(.F)-.65 G .196(or e)-5.346 F .196
+127 180.6 R 5.196(.F)-.65 G .196(or e)-5.346 F .196
(xample, the de\214ni-)-.15 F .104
-(tion \231D=$z:/\232 \214rst tries to e)102 482.4 R -.15(xe)-.15 G .104
+(tion \231D=$z:/\232 \214rst tries to e)102 192.6 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)-2.604 F -.25(va)-.2 G .104
-(ilable, it tries to).25 F -.15(exe)102 494.4 S .816
+(ilable, it tries to).25 F -.15(exe)102 204.6 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.316(,s)-.4 G(ince)-3.316 E .367(some shells \(such as)102 506.4 R F2
-(csh)2.867 E F1 2.867(\)r)C .367(efuse to e)-2.867 F -.15(xe)-.15 G .368
-(cute if the).15 F 2.868(yc)-.15 G .368(annot read the home directory)
--2.868 F 5.368(.S)-.65 G .368(ince the queue)-5.368 F
-(directory is not normally readable by unpri)102 518.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.863(The Userid speci\214es the def)127 534.6 R 1.863
+3.316(,s)-.4 G(ince)-3.316 E .367(some shells \(such as)102 216.6 R/F2
+10/Times-Italic@0 SF(csh)2.867 E F1 2.867(\)r)C .367(efuse to e)-2.867 F
+-.15(xe)-.15 G .368(cute if the).15 F 2.868(yc)-.15 G .368
+(annot read the home directory)-2.868 F 5.368(.S)-.65 G .368
+(ince the queue)-5.368 F(directory is not normally readable by unpri)102
+228.6 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.863
+(The Userid speci\214es the def)127 244.8 R 1.863
(ault user and group id to run as, o)-.1 F -.15(ve)-.15 G 1.862
-(rriding the).15 F F0(DefaultUser)4.362 E F1 .286(option \(q.v)102 546.6
+(rriding the).15 F F0(DefaultUser)4.362 E F1 .286(option \(q.v)102 256.8
R 2.786(.\). If)-.65 F(the)2.786 E F0(S)2.786 E F1 .287(mailer \215ag is also speci\214ed, this is the user and group to run as in all circum-)
-2.786 F 2.588(stances. This)102 558.6 R .088(may be gi)2.588 F -.15(ve)
+2.786 F 2.588(stances. This)102 268.8 R .088(may be gi)2.588 F -.15(ve)
-.25 G 2.588(na).15 G(s)-2.588 E 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 570.6 R .541(ed up in the)
+-.15 E .541(or a symbolic name to be look)102 280.8 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)-5.541 G .542(nly a symbolic)-3.041 F
-(user name is speci\214ed, the group id in the)102 582.6 Q F2(passwd)2.5
+(user name is speci\214ed, the group id in the)102 292.8 Q F2(passwd)2.5
E F1(\214le for that user is used as the group id.)2.5 E .545
-(The Charset \214eld is used when con)127 598.8 R -.15(ve)-.4 G .545
+(The Charset \214eld is used when con)127 309 R -.15(ve)-.4 G .545
(rting a message to MIME; this is the character set used).15 F .465
-(in the Content-T)102 610.8 R .465(ype: header)-.8 F 5.465(.I)-.55 G
-2.965(ft)-5.465 G .465(his is not set, the)-2.965 F F0(DefaultCharset)
-2.966 E F1 .466(option is used, and if that is not)2.966 F .258
-(set, the v)102 622.8 R .258(alue \231unkno)-.25 F .258
-(wn-8bit\232 is used.)-.25 F F0 -1.2(WA)5.257 G(RNING:)1.2 E F1 .257
+(in the Content-T)102 321 R .465(ype: header)-.8 F 5.465(.I)-.55 G 2.965
+(ft)-5.465 G .465(his is not set, the)-2.965 F F0(DefaultCharset)2.966 E
+F1 .466(option is used, and if that is not)2.966 F .258(set, the v)102
+333 R .258(alue \231unkno)-.25 F .258(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.757(sm)-.55 G(ailer)
--2.757 E 2.757(,n)-.4 G .257(ot the)-2.757 F(recipient')102 634.8 Q
-2.701(sm)-.55 G(ailer)-2.701 E 5.201(.F)-.55 G .201(or e)-5.351 F .201
+-2.757 E 2.757(,n)-.4 G .257(ot the)-2.757 F(recipient')102 345 Q 2.701
+(sm)-.55 G(ailer)-2.701 E 5.201(.F)-.55 G .201(or e)-5.351 F .201
(xample, if the en)-.15 F -.15(ve)-.4 G .202
(lope sender address lists an address on the local netw).15 F(ork)-.1 E
-.48(and the recipient is on an e)102 646.8 R .48(xternal netw)-.15 F .48
+.48(and the recipient is on an e)102 357 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 658.8 Q(ork mailer)-.1 E 2.5(,n)-.4 G
+(the local netw)102 369 Q(ork mailer)-.1 E 2.5(,n)-.4 G
(ot that of the e)-2.5 E(xternal netw)-.15 E(ork mailer)-.1 E(.)-.55 E
-.794(The T)127 675 R .795(ype= \214eld sets the type information used in MIME error messages as de\214ned by RFC)
--.8 F 2.805(1894. It)102 687 R .305(is actually three v)2.805 F .305
+.794(The T)127 385.2 R .795(ype= \214eld sets the type information used in MIME error messages as de\214ned by RFC)
+-.8 F 2.805(1894. It)102 397.2 R .305(is actually three v)2.805 F .305
(alues separated by slashes: the MT)-.25 F .305
(A-type \(that is, the description of ho)-.93 F(w)-.25 E .083(hosts are named\), the address type \(the description of e-mail addresses\), and the diagnostic type \(the)
-102 699 R .143(description of error diagnostic codes\).)102 711 R .143
-(Each of these must be a re)5.143 F .142(gistered v)-.15 F .142
-(alue or be)-.25 F .142(gin with \231X\255\232.)-.15 F(The def)102 723 Q
-(ault is \231dns/rfc822/smtp\232.)-.1 E EP
-%%Page: 41 37
+102 409.2 R .143(description of error diagnostic codes\).)102 421.2 R
+.143(Each of these must be a re)5.143 F .142(gistered v)-.15 F .142
+(alue or be)-.25 F .142(gin with \231X\255\232.)-.15 F(The def)102 433.2
+Q(ault is \231dns/rfc822/smtp\232.)-.1 E F0 2.5(5.5. H)87 457.2 R 2.5
+<8a44>2.5 G(e\214ne Header)-2.5 E F1 1.135
+(The format of the header lines that)127 473.4 R F2(sendmail)3.636 E F1
+1.136(inserts into the message are de\214ned by the)3.636 F F0(H)3.636 E
+F1 2.5(line. The)102 485.4 R(syntax of this line is:)2.5 E F0(H)142
+501.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 outgoing message.)
+102 517.8 R(The)6.058 E F2(htemplate)3.557 E F1(is)3.557 E(macro-e)102
+529.8 Q 1.12(xpanded before insertion into the message.)-.15 F 1.12
+(If the)6.12 F F2(m\215a)3.62 E(gs)-.1 E F1 1.12
+(\(surrounded by question marks\))3.62 F .161(are speci\214ed, at least one of the speci\214ed \215ags must be stated in the mailer de\214nition for this header)
+102 541.8 R .191(to be automatically output.)102 553.8 R .192(If one of these headers is in the input it is re\215ected to the output re)
+5.191 F -.05(ga)-.15 G(rd-).05 E(less of these \215ags.)102 565.8 Q
+(Some headers ha)127 582 Q .3 -.15(ve s)-.2 H
+(pecial semantics that will be described later).15 E(.)-.55 E 2.711(As)
+127 598.2 S .211(econdary syntax allo)-2.711 F .211(ws v)-.25 F .211
+(alidation of headers as the)-.25 F 2.711(ya)-.15 G .211(re being read.)
+-2.711 F 1.81 -.8(To e)5.21 H .21(nable v).8 F(alidation,)-.25 E(use:)
+102 610.2 Q F0(H)142 626.4 Q F2(Header)A F0 2.5(:$)C(>)-2.5 E F2
+(Ruleset)A F1 .715(The indicated)102 642.6 R F2(Ruleset)3.215 E F1 .715
+(is called for the speci\214ed)3.215 F F2(Header)3.216 E F1 3.216(,a)C
+.716(nd can return)-3.216 F F0($#err)3.216 E(or)-.18 E F1 .716
+(to reject the mes-)3.216 F 1.972(sage or)102 654.6 R F0($#discard)4.472
+E F1 1.971(to discard the message \(as with the other)4.472 F F0(check_)
+4.471 E F1 4.471(*r)C 4.471(ulesets\). The)-4.471 F 1.971(header is)
+4.471 F(treated as a structured \214eld, that is, comments \(in parentheses\) are deleted before processing.)
+102 666.6 Q -.15(Fo)127 682.8 S 2.5(re).15 G
+(xample, the con\214guration lines:)-2.65 E EP
+%%Page: 44 40
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-41)195.86 E 2.5(5.5. H)87 96 R 2.5<8a44>2.5 G(e\214ne Header)
--2.5 E/F1 10/Times-Roman@0 SF 1.135(The format of the header lines that)
-127 112.2 R/F2 10/Times-Italic@0 SF(sendmail)3.636 E F1 1.136
-(inserts into the message are de\214ned by the)3.636 F F0(H)3.636 E F1
-2.5(line. The)102 124.2 R(syntax of this line is:)2.5 E F0(H)142 140.4 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 outgoing message.)
-102 156.6 R(The)6.058 E F2(htemplate)3.557 E F1(is)3.557 E 1.097
-(macro e)102 168.6 R 1.097(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.098
-(\(surrounded by question marks\))3.598 F .161(are speci\214ed, at least one of the speci\214ed \215ags must be stated in the mailer de\214nition for this header)
-102 180.6 R .191(to be automatically output.)102 192.6 R .192(If one of these headers is in the input it is re\215ected to the output re)
-5.191 F -.05(ga)-.15 G(rd-).05 E(less of these \215ags.)102 204.6 Q
-(Some headers ha)127 220.8 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 244.8 R 2.5<8a53>2.5 G(et Option)-2.5 E F1 .963(There are a number of global options that can be set from a con\214guration \214le.)
-127 261 R .962(Options are)5.962 F .86(represented by full w)102 273 R
-.86(ords; some are also representable as single characters for back compatibility)
--.1 F(.)-.65 E(The syntax of this line is:)102 285 Q F0(O)142 301.2 Q F2
-(option)7.5 E F0(=)A F2(value)A F1 .563(This sets option)102 317.4 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)-5.562 F F2(must)3.062 E F1 .562
-(be a space between the letter `O' and the)3.062 F(name of the option.)
-102 329.4 Q(An older v)5 E(ersion is:)-.15 E F0(O)142 345.6 Q F2 1.666
-(ov)C(alue)-1.666 E F1 .13(where the option)102 361.8 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,)-5.13 F 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 373.8 S
+/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
+(HMessage-Id: $>CheckMessageId)142 96 Q(SCheckMessageId)142 120 Q
+(R< $+ @ $+)142 132 Q 11.06(>$)5 G 2.5(@O)-11.06 G(K)-2.5 E 52.83
+(R$* $#error)142 144 R($: Ille)2.5 E -.05(ga)-.15 G 2.5(lM).05 G
+(essage-Id header)-2.5 E -.1(wo)102 160.2 S(uld refuse an).1 E 2.5(ym)
+-.15 G(essage that had a Message-Id: header of an)-2.5 E 2.5(yo)-.15 G
+2.5(ft)-2.5 G(he follo)-2.5 E(wing forms:)-.25 E(Message-Id: <>)142
+176.4 Q(Message-Id: some te)142 188.4 Q(xt)-.15 E(Message-Id: <le)142
+200.4 Q -.05(ga)-.15 G 2.5(lt).05 G -.15(ex)-2.5 G(t@domain> e).15 E
+(xtra crud)-.15 E F0 2.5(5.6. O)87 228.6 R 2.5<8a53>2.5 G(et Option)-2.5
+E F1 .962(There are a number of global options that can be set from a con\214guration \214le.)
+127 244.8 R .963(Options are)5.963 F .86(represented by full w)102 256.8
+R .86(ords; some are also representable as single characters for back compatibility)
+-.1 F(.)-.65 E(The syntax of this line is:)102 268.8 Q F0(O)142 285 Q/F2
+10/Times-Italic@0 SF(option)7.5 E F0(=)A F2(value)A F1 .562
+(This sets option)102 301.2 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)-5.562 F F2(must)3.062
+E F1 .562(be a space between the letter `O' and the)3.062 F
+(name of the option.)102 313.2 Q(An older v)5 E(ersion is:)-.15 E F0(O)
+142 329.4 Q F2 1.666(ov)C(alue)-1.666 E F1 .13(where the option)102
+345.6 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,)-5.13 F 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 357.6 S
(oolean \(with le)-2.5 E -.05(ga)-.15 G 2.5(lv).05 G
(alues \231t\232, \231T\232, \231f\232, or \231F\232; the def)-2.75 E
(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
-390 Q(ets\) are:)-.1 E(AliasFile=)102 406.2 Q F2(spec, spec, ...)A F1
-.44([A] Specify possible alias \214le\(s\).)174 418.2 R(Each)5.439 E F2
+373.8 Q(ets\) are:)-.1 E(AliasFile=)102 390 Q F2(spec, spec, ...)A F1
+.439([A] Specify possible alias \214le\(s\).)174 402 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.939 E F1 -.74('')C(where)174 430.2 Q F2
-(class)3.099 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.1 E F1 .187(is compiled, v)174
-442.2 R .187(alid classes are \231implicit\232 \(search through a compiled-in list of alias)
+(class)A F0(:)A F2(\214le)2.94 E F1 -.74('')C(where)174 414 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 426 R .187(alid classes are \231implicit\232 \(search through a compiled-in list of alias)
-.25 F 2.055(\214le types, for back compatibility\), \231hash\232 \(if)
-174 454.2 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 466.2 Q F1 1.588
-(is speci\214ed\), \231stab\232 \(internal symbol table \212 not normally used unless)
-4.089 F .074(you ha)174 478.2 R .374 -.15(ve n)-.2 H 2.574(oo).15 G .074
-(ther database lookup\), or \231nis\232 \(if)-2.574 F F3(NIS)2.574 E F1
-.075(is speci\214ed\).)2.575 F .075(If a list of)5.075 F F2(spec)2.575 E
-F1(s)A(are pro)174 490.2 Q(vided,)-.15 E F2(sendmail)2.5 E F1
-(searches them in order)2.5 E(.)-.55 E(AliasW)102 506.4 Q(ait=)-.8 E F2
-(timeout)A F1 .141([a] If set, w)174 518.4 R .141(ait up to)-.1 F F2
-(timeout)2.641 E F1 .141(\(units def)2.641 F .14
-(ault to minutes\) for an \231@:@\232 entry to e)-.1 F(xist)-.15 E .517
-(in the alias database before starting up.)174 530.4 R .517
-(If it does not appear in the)5.517 F F2(timeout)3.018 E F1(inter)3.018
-E(-)-.2 E -.25(va)174 542.4 S 3.21(lr).25 G(eb)-3.21 E .71
+174 438 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 450 Q F1 1.588(is speci\214ed\), \231stab\232 \(internal symbol table \212 not normally used unless)
+4.088 F .075(you ha)174 462 R .375 -.15(ve n)-.2 H 2.575(oo).15 G .075
+(ther database lookup\), or \231nis\232 \(if)-2.575 F 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 474 Q(vided,)-.15 E F2(sendmail)2.5 E F1
+(searches them in order)2.5 E(.)-.55 E(AliasW)102 490.2 Q(ait=)-.8 E F2
+(timeout)A F1 .14([a] If set, w)174 502.2 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 514.2 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 526.2 S 3.21(lr).25 G(eb)-3.21 E .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 554.4 S(rning.).1 E(Allo)102 570.6 Q(wBogusHELO)-.25 E 1.104
-([no short name] If set, allo)174 582.6 R 3.604(wH)-.25 G 1.104
-(ELO SMTP commands that don')-3.604 F 3.604(ti)-.18 G 1.104
-(nclude a host)-3.604 F 2.882(name. Setting)174 594.6 R .382
-(this violates RFC 1123 section 5.2.5, b)2.882 F .381
-(ut is necessary to interoper)-.2 F(-)-.2 E .06(ate with se)174 606.6 R
--.15(ve)-.25 G .06(ral SMTP clients.).15 F .061(If there is a v)5.06 F
-.061(alue, it is still check)-.25 F .061(ed for le)-.1 F(gitimac)-.15 E
--.65(y.)-.15 G(AutoReb)102 622.8 Q(uildAliases)-.2 E .128
-([D] If set, reb)174 634.8 R .128
+174 538.2 S(rning.).1 E(Allo)102 554.4 Q(wBogusHELO)-.25 E 1.104
+([no short name] If set, allo)174 566.4 R 3.604(wH)-.25 G 1.104
+(ELO SMTP commands that don')-3.604 F 3.604(ti)-.18 G 1.103
+(nclude a host)-3.604 F 2.881(name. Setting)174 578.4 R .382
+(this violates RFC 1123 section 5.2.5, b)2.881 F .382
+(ut is necessary to interoper)-.2 F(-)-.2 E .061(ate with se)174 590.4 R
+-.15(ve)-.25 G .061(ral SMTP clients.).15 F .061(If there is a v)5.061 F
+.06(alue, it is still check)-.25 F .06(ed for le)-.1 F(gitimac)-.15 E
+-.65(y.)-.15 G(AutoReb)102 606.6 Q(uildAliases)-.2 E .128
+([D] If set, reb)174 618.6 R .128
(uild the alias database if necessary and possible.)-.2 F .128
-(If this option is not)5.128 F(set,)174 646.8 Q F2(sendmail)4.885 E F1
+(If this option is not)5.128 F(set,)174 630.6 Q F2(sendmail)4.885 E F1
2.385(will ne)4.885 F -.15(ve)-.25 G 4.885(rr).15 G(eb)-4.885 E 2.385
(uild the alias database unless e)-.2 F 2.385(xplicitly requested)-.15 F
-(using)174 658.8 Q F0(\255bi)2.5 E F1 5(.N)C
-(ot recommended \212 can cause thrashing.)-5 E(BlankSub=)102 675 Q F2(c)
-A F1 1.255([B] Set the blank substitution character to)22.47 F F2(c)
+(using)174 642.6 Q F0(\255bi)2.5 E F1 5(.N)C
+(ot recommended \212 can cause thrashing.)-5 E(BlankSub=)102 658.8 Q F2
+(c)A F1 1.255([B] Set the blank substitution character to)22.47 F F2(c)
3.755 E F1 6.255(.U)C 1.255(nquoted spaces in addresses are)-6.255 F
-(replaced by this character)174 687 Q 5(.D)-.55 G(ef)-5 E
+(replaced by this character)174 670.8 Q 5(.D)-.55 G(ef)-5 E
(aults to space \(i.e., no change is made\).)-.1 E 14.51
-(CheckAliases [n])102 703.2 R -1.11(Va)2.5 G
+(CheckAliases [n])102 687 R -1.11(Va)2.5 G
(lidate the RHS of aliases when reb)1.11 E(uilding the alias database.)
--.2 E EP
-%%Page: 42 38
+-.2 E(CheckpointInterv)102 703.2 Q(al=)-.25 E F2(N)A F1 1.297
+([C] Checkpoints the queue e)174 715.2 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.296
+(If your system)6.296 F EP
+%%Page: 45 41
%%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
-(CheckpointInterv)102 96 Q(al=)-.25 E/F2 10/Times-Italic@0 SF(N)A F1
-1.296([C] Checkpoints the queue e)174 108 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 120 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)-3.446 F
-(last recipients.)174 132 Q(ClassF)102 148.2 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 160.2 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 172.2 R 7.637(.T)-.65 G 2.637
-(hus, messages with a higher Priority: will be)-7.637 F -.1(fa)174 184.2
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-45)195.86 E/F1 10/Times-Roman@0 SF .746(crashes during deli)174
+96 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.247(yb)-.15 G .747
+(ut the)-3.447 F(last recipients.)174 108 Q(ClassF)102 124.2 Q(actor=)
+-.15 E/F2 10/Times-Italic@0 SF(fact)A F1 1.625([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 .718
+(Precedence: \214eld in the user header and the)174 136.2 R F0(P)3.219 E
+F1 .719(lines in the con\214guration \214le\) and)3.219 F 2.638
+(subtracted from the priority)174 148.2 R 7.637(.T)-.65 G 2.637
+(hus, messages with a higher Priority: will be)-7.637 F -.1(fa)174 160.2
S -.2(vo)-.1 G 2.5(red. Def).2 F(aults to 1800.)-.1 E 3.95
-(ColonOkInAddr [no)102 200.4 R 4.679
+(ColonOkInAddr [no)102 176.4 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 212.4 R 1.04
+7.179 F 3.54(\231host:user\232\). If)174 188.4 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 224.4
-R 1.987(Doubled colons are)6.987 F(al)174 236.4 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 248.4 R
-1.037(Furthermore, this option def)6.037 F 1.036(aults on if the con-)
--.1 F .853(\214guration v)174 260.4 R .853(ersion le)-.15 F -.15(ve)-.25
-G 3.353(li).15 G 3.353(sl)-3.353 G .853
-(ess than 6 \(for back compatibility\).)-3.353 F(Ho)5.854 E(we)-.25 E
--.15(ve)-.25 G 1.654 -.4(r, i).15 H 3.354(tm).4 G(ust)-3.354 E(be of)174
-272.4 Q 2.5(ff)-.25 G(or full compatibility with RFC 822.)-2.5 E
-(ConnectionCacheSize=)102 288.6 Q F2(N)A F1 .242([k] The maximum number of open connections that will be cached at a time.)
-174 300.6 R(The)5.242 E(def)174 312.6 Q .385(ault is one.)-.1 F .386
+(ginning of a RFC 822 group con-)-.15 F 1.987
+(struct \(\231groupname: member1, member2, ... memberN;\232\).)174 200.4
+R 1.988(Doubled colons are)6.988 F(al)174 212.4 Q -.1(wa)-.1 G 2.215(ys acceptable \(\231nodename::user\232\) and proper route-addr nesting is under)
+.1 F(-)-.2 E 1.036(stood \(\231<@relay:user@host>\232\).)174 224.4 R
+1.037(Furthermore, this option def)6.036 F 1.037(aults on if the con-)
+-.1 F .854(\214guration v)174 236.4 R .854(ersion le)-.15 F -.15(ve)-.25
+G 3.354(li).15 G 3.354(sl)-3.354 G .853
+(ess than 6 \(for back compatibility\).)-3.354 F(Ho)5.853 E(we)-.25 E
+-.15(ve)-.25 G 1.653 -.4(r, i).15 H 3.353(tm).4 G(ust)-3.353 E(be of)174
+248.4 Q 2.5(ff)-.25 G(or full compatibility with RFC 822.)-2.5 E
+(ConnectionCacheSize=)102 264.6 Q F2(N)A F1 .242([k] The maximum number of open connections that will be cached at a time.)
+174 276.6 R(The)5.243 E(def)174 288.6 Q .386(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 324.6 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 336.6 R 2.046
-(aults to the old beha)-.1 F(vior)-.2 E 4.546(,t)-.4 G 2.047
+-.2(vo)-.4 G(ca-).2 E 1.191(tion of)174 300.6 R F2(sendmail)3.691 E F1
+1.191(needs to connect to another host or it terminates.)3.691 F 1.192
+(Setting it to)6.192 F 2.047(zero def)174 312.6 R 2.047
+(aults to the old beha)-.1 F(vior)-.2 E 4.546(,t)-.4 G 2.046
(hat is, connections are closed immediately)-4.546 F(.)-.65 E .266(Since this consumes \214le descriptors, the connection cache should be k)
-174 348.6 R .265(ept small: 4)-.1 F(is probably a practical maximum.)174
-360.6 Q(ConnectionCacheT)102 376.8 Q(imeout=)-.35 E F2(timeout)A F1 .708
+174 324.6 R .266(ept small: 4)-.1 F(is probably a practical maximum.)174
+336.6 Q(ConnectionCacheT)102 352.8 Q(imeout=)-.35 E F2(timeout)A F1 .708
([K] The maximum amount of time a cached connection will be permitted to idle)
-174 388.8 R 1.083(without acti)174 400.8 R(vity)-.25 E 6.083(.I)-.65 G
-3.583(ft)-6.083 G 1.083(his time is e)-3.583 F 1.082
-(xceeded, the connection is immediately closed.)-.15 F .417(This v)174
-412.8 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 424.8 R -.1(wa)-.1 G .507
-(ys sends a RSET command to check the connection; if).1 F .401(this f)
-174 436.8 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 448.8 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 460.8 S(id using up e).2 E(xcessi)
+174 364.8 R 1.082(without acti)174 376.8 R(vity)-.25 E 6.082(.I)-.65 G
+3.582(ft)-6.082 G 1.083(his time is e)-3.582 F 1.083
+(xceeded, the connection is immediately closed.)-.15 F .418(This v)174
+388.8 R .418(alue should be small \(on the order of ten minutes\).)-.25
+F(Before)5.418 E F2(sendmail)2.918 E F1 .417(uses a)2.917 F .507
+(cached connection, it al)174 400.8 R -.1(wa)-.1 G .508
+(ys sends a RSET command to check the connection; if).1 F .402(this f)
+174 412.8 R .402(ails, it reopens the connection.)-.1 F .401(This k)
+5.402 F .401(eeps your end from f)-.1 F .401(ailing if the other)-.1 F
+1.544(end times out.)174 424.8 R 1.545
+(The point of this option is to be a good netw)6.544 F 1.545
+(ork neighbor and)-.1 F -.2(avo)174 436.8 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.)-2.5 E
-(ConnectionRateThrottle=)102 477 Q F2(N)A F1 .21
-([no short name] If set to a positi)174 489 R .511 -.15(ve v)-.25 H .211
-(alue, allo)-.1 F 2.711(wn)-.25 G 2.711(om)-2.711 G .211(ore than)-2.711
-F F2(N)2.711 E F1 .211(incoming daemon)2.711 F 1.776
-(connections in a one second period.)174 501 R 1.776
-(This is intended to \215atten out peaks and)6.776 F(allo)174 513 Q 2.5
+(ConnectionRateThrottle=)102 453 Q F2(N)A F1 .211
+([no short name] If set to a positi)174 465 R .511 -.15(ve v)-.25 H .211
+(alue, allo)-.1 F 2.711(wn)-.25 G 2.71(om)-2.711 G .21(ore than)-2.71 F
+F2(N)2.71 E F1 .21(incoming daemon)2.71 F 1.776
+(connections in a one second period.)174 477 R 1.776
+(This is intended to \215atten out peaks and)6.776 F(allo)174 489 Q 2.5
(wt)-.25 G(he load a)-2.5 E -.15(ve)-.2 G(rage checking to cut in.).15 E
-(Def)5 E(aults to zero \(no limits\).)-.1 E(DaemonPortOptions=)102 529.2
-Q F2(options)A F1([O] Set serv)174 541.2 Q(er SMTP options.)-.15 E
+(Def)5 E(aults to zero \(no limits\).)-.1 E(DaemonPortOptions=)102 505.2
+Q F2(options)A F1([O] Set serv)174 517.2 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:)-2.5 E 52.83
-(Port Name/number)214 557.4 R(of listening port \(def)2.5 E
-(aults to "smtp"\))-.1 E 48.95(Addr Address)214 569.4 R(mask \(def)2.5 E
-(aults IN)-.1 E(ADDR_ANY\))-.35 E -.15(Fa)214 581.4 S 41.31
+(Port Name/number)214 533.4 R(of listening port \(def)2.5 E
+(aults to "smtp"\))-.1 E 48.95(Addr Address)214 545.4 R(mask \(def)2.5 E
+(aults IN)-.1 E(ADDR_ANY\))-.35 E -.15(Fa)214 557.4 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 593.4 R(of listen queue \(def)2.5 E(aults to 10\))
--.1 E 21.72(SndBufSize Size)214 605.4 R(of TCP send b)2.5 E(uf)-.2 E
-(fer)-.25 E 21.17(RcvBufSize Size)214 617.4 R(of TCP recei)2.5 E .3 -.15
-(ve b)-.25 H(uf)-.05 E(fer)-.25 E(The)174 633.6 Q F2(Addr)2.5 E F1
+44.5(Listen Size)214 569.4 R(of listen queue \(def)2.5 E(aults to 10\))
+-.1 E 21.72(SndBufSize Size)214 581.4 R(of TCP send b)2.5 E(uf)-.2 E
+(fer)-.25 E 21.17(RcvBufSize Size)214 593.4 R(of TCP recei)2.5 E .3 -.15
+(ve b)-.25 H(uf)-.05 E(fer)-.25 E(The)174 609.6 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 649.8 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 661.8 R
-.161(ut is not in MIME for)-.2 F(-)-.2 E .495(mat is con)174 673.8 R
--.15(ve)-.4 G .495
+(ork name.)-.1 E(Def)102 625.8 Q(aultCharSet=)-.1 E F2 -.15(ch)C(ar).15
+E(set)-.1 E F1 .161
+([no short name] When a message that has 8-bit characters b)174 637.8 R
+.16(ut is not in MIME for)-.2 F(-)-.2 E .494(mat is con)174 649.8 R -.15
+(ve)-.4 G .495
(rted to MIME \(see the EightBitMode option\) a character set must be)
-.15 F .487(included in the Content-T)174 685.8 R .487(ype: header)-.8 F
-5.487(.T)-.55 G .488(his character set is normally set from the)-5.487 F
-.133(Charset= \214eld of the mailer descriptor)174 697.8 R 5.133(.I)-.55
+.15 F .488(included in the Content-T)174 661.8 R .488(ype: header)-.8 F
+5.488(.T)-.55 G .487(his character set is normally set from the)-5.488 F
+.133(Charset= \214eld of the mailer descriptor)174 673.8 R 5.133(.I)-.55
G 2.633(ft)-5.133 G .133(hat is not set, the v)-2.633 F .133
-(alue of this option is)-.25 F 2.5(used. If)174 709.8 R
+(alue of this option is)-.25 F 2.5(used. If)174 685.8 R
(this option is not set, the v)2.5 E(alue \231unkno)-.25 E
-(wn-8bit\232 is used.)-.25 E EP
-%%Page: 43 39
+(wn-8bit\232 is used.)-.25 E(Def)102 702 Q(aultUser=)-.1 E F2(user:gr)A
+(oup)-.45 E F1 .014([u] Set the def)174 714 R .014
+(ault userid for mailers to)-.1 F F2(user:gr)2.513 E(oup)-.45 E F1 5.013
+(.I)C(f)-5.013 E F2(gr)2.513 E(oup)-.45 E F1 .013(is omitted and)2.513 F
+F2(user)2.513 E F1(is)2.513 E EP
+%%Page: 46 42
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-43)195.86 E/F1 10/Times-Roman@0 SF(Def)102 96 Q(aultUser=)-.1 E
-/F2 10/Times-Italic@0 SF(user:gr)A(oup)-.45 E F1 .013([u] Set the def)
-174 108 R .013(ault userid for mailers to)-.1 F F2(user:gr)2.513 E(oup)
--.45 E F1 5.013(.I)C(f)-5.013 E 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 120 S
-1.807(ser name \(as opposed to a numeric user id\) the def)-4.307 F
-1.806(ault group listed in the)-.1 F 1.153
-(/etc/passwd \214le for that user is used as the def)174 132 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 144 R 1.152
-(Mailers without the)6.152 F F2(S)3.652 E F1 1.152
+/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 4.306(au)
+174 96 S 1.807(ser name \(as opposed to a numeric user id\) the def)
+-4.306 F 1.807(ault group listed in the)-.1 F 1.153
+(/etc/passwd \214le for that user is used as the def)174 108 R 1.153
+(ault group.)-.1 F(Both)6.153 E/F2 10/Times-Italic@0 SF(user)3.653 E F1
+(and)3.652 E F2(gr)3.652 E(oup)-.45 E F1 1.152(may be numeric.)174 120 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 158 R 5.142(.D)-.55 G(ef)-5.142 E .142(aults to 1:1.)-.1 F .142
+174 134 R 5.142(.D)-.55 G(ef)-5.142 E .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)-2.642 G .142(ymbolic user name.)-2.642 F/F3 7
-/Times-Roman@0 SF(19)-4 I F1(Deli)102 174.2 Q -.15(ve)-.25 G(ryMode=).15
+/Times-Roman@0 SF(20)-4 I F1(Deli)102 150.2 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)-2.5 G(ode)
-2.5 E F2(x)2.5 E F1 5(.L)C -2.25 -.15(eg a)-5 H 2.5(lm).15 G(odes are:)
--2.5 E 17.22(iD)214 190.4 S(eli)-17.22 E -.15(ve)-.25 G 2.5(ri).15 G
+-2.5 E 17.22(iD)214 166.4 S(eli)-17.22 E -.15(ve)-.25 G 2.5(ri).15 G
(nteracti)-2.5 E -.15(ve)-.25 G(ly \(synchronously\)).15 E 15(bD)214
-202.4 S(eli)-15 E -.15(ve)-.25 G 2.5(ri).15 G 2.5(nb)-2.5 G
-(ackground \(asynchronously\))-2.5 E 15(qJ)214 214.4 S
+178.4 S(eli)-15 E -.15(ve)-.25 G 2.5(ri).15 G 2.5(nb)-2.5 G
+(ackground \(asynchronously\))-2.5 E 15(qJ)214 190.4 S
(ust queue the message \(deli)-15 E -.15(ve)-.25 G 2.5(rd).15 G
-(uring queue run\))-2.5 E 15(dD)214 226.4 S(efer deli)-15 E -.15(ve)-.25
+(uring queue run\))-2.5 E 15(dD)214 202.4 S(efer deli)-15 E -.15(ve)-.25
G(ry and all map lookups \(deli).15 E -.15(ve)-.25 G 2.5(rd).15 G
-(uring queue run\))-2.5 E(Def)174 242.6 Q .712(aults to `)-.1 F(`b')-.74
-E 3.212('i)-.74 G 3.212(fn)-3.212 G 3.211(oo)-3.212 G .711
+(uring queue run\))-2.5 E(Def)174 218.6 Q .711(aults to `)-.1 F(`b')-.74
+E 3.211('i)-.74 G 3.211(fn)-3.211 G 3.211(oo)-3.211 G .711
(ption is speci\214ed, `)-3.211 F(`i')-.74 E 3.211('i)-.74 G 3.211(fi)
--3.211 G 3.211(ti)-3.211 G 3.211(ss)-3.211 G .711(peci\214ed b)-3.211 F
-.711(ut gi)-.2 F -.15(ve)-.25 G 3.211(nn).15 G 3.211(oa)-3.211 G -.18
-(rg)-3.211 G(u-).18 E .094(ment \(i.e., `)174 254.6 R(`Od')-.74 E 2.594
+-3.211 G 3.211(ti)-3.211 G 3.211(ss)-3.211 G .712(peci\214ed b)-3.211 F
+.712(ut gi)-.2 F -.15(ve)-.25 G 3.212(nn).15 G 3.212(oa)-3.212 G -.18
+(rg)-3.212 G(u-).18 E .094(ment \(i.e., `)174 230.6 R(`Od')-.74 E 2.594
('i)-.74 G 2.594(se)-2.594 G(qui)-2.594 E -.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 270.8 Q F2(sleeptime)A F1 .799
-([no short name] Dial-on-demand netw)174 282.8 R .798
+(DialDelay=)102 246.8 Q F2(sleeptime)A F1 .798
+([no short name] Dial-on-demand netw)174 258.8 R .798
(ork connections can see timeouts if a con-)-.1 F .665
-(nection is opened before the call is set up.)174 294.8 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 306.8 R
-F2(sendmail)3.242 E F1 .742(will sleep for)3.242 F .31
-(this amount of time and try ag)174 318.8 R 2.81(ain. This)-.05 F .31
+(nection is opened before the call is set up.)174 270.8 R .665
+(If this is set to an interv)5.665 F .665(al and a con-)-.25 F .742
+(nection times out on the \214rst connection being attempted)174 282.8 R
+F2(sendmail)3.243 E F1 .743(will sleep for)3.243 F .31
+(this amount of time and try ag)174 294.8 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 330.8 R(vider)-.15 E
-6.543(.U)-.55 G 1.543(nits def)-6.543 F 1.542
-(ault to seconds, so \231DialDe-)-.1 F(lay=5\232 uses a \214v)174 342.8
+.15 F 1.542(the connection to your service pro)174 306.8 R(vider)-.15 E
+6.543(.U)-.55 G 1.543(nits def)-6.543 F 1.543
+(ault to seconds, so \231DialDe-)-.1 F(lay=5\232 uses a \214v)174 318.8
Q 2.5(es)-.15 G(econd delay)-2.5 E 5(.D)-.65 G(ef)-5 E
-(aults to zero \(no retry\).)-.1 E(DontExpandCnames)102 359 Q .559([no short name] The standards say that all host addresses used in a mail message)
-174 371 R 1.408(must be fully canonical.)174 383 R -.15(Fo)6.407 G 3.907
-(re).15 G 1.407(xample, if your host is named \231Cruft.F)-4.057 F
-(oo.ORG\232)-.15 E 1.462(and also has an alias of \231FTP)174 395 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 407 R .131
+(aults to zero \(no retry\).)-.1 E(DontBlameSendmail=)102 335 Q F2
+(option,option,...)A F1 .065([no short name] In order to a)174 347 R -.2
+(vo)-.2 G .064(id possible cracking attempts caused by w).2 F .064
+(orld- and)-.1 F .254(group-writable \214les and directories,)174 359 R
+F2(sendmail)2.754 E F1 .255(does paranoid checking when open-)2.754 F
+.298(ing most of its support \214les.)174 371 R .297
+(If for some reason you absolutely must run with, for)5.297 F -.15(ex)
+174 383 S .176(ample, a group-writable).15 F F2(/etc)2.677 E F1
+(directory)2.677 E 2.677(,t)-.65 G .177(hen you will ha)-2.677 F .477
+-.15(ve t)-.2 H 2.677(ot).15 G .177(urn of)-2.677 F 2.677(ft)-.25 G .177
+(his check-)-2.677 F .125
+(ing \(at the cost of making your system more vulnerable to attack\).)
+174 395 R .124(The ar)5.124 F(guments)-.18 E(are indi)174 407 Q
+(vidual options that turn of)-.25 E 2.5(fc)-.25 G(hecking:)-2.5 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(20)93.6
+689.2 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: 47 43
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-47)195.86 E/F1 10/Times-Roman@0 SF(Safe)214 96 Q(AssumeSafeCho)
+214 108 Q(wn)-.25 E(ClassFileInUnsafeDirP)214 120 Q(ath)-.15 E
+(ErrorHeaderInUnsafeDirP)214 132 Q(ath)-.15 E(FileDeli)214 144 Q -.15
+(ve)-.25 G(ryT).15 E(oHardLink)-.8 E(FileDeli)214 156 Q -.15(ve)-.25 G
+(ryT).15 E(oSymLink)-.8 E -.15(Fo)214 168 S(rw).15 E
+(ardFileInUnsafeDirP)-.1 E(ath)-.15 E -.15(Fo)214 180 S(rw).15 E
+(ardFileInUnsafeDirP)-.1 E(athSafe)-.15 E -.15(Fo)214 192 S(rw).15 E
+(ardFileIngroupWritableDirP)-.1 E(ath)-.15 E(GroupWritableAliasFile)214
+204 Q(GroupWritableDirP)214 216 Q(athSafe)-.15 E(GroupWritableF)214 228
+Q(orw)-.15 E(ardFileSafe)-.1 E(GroupWritableIncludeFileSafe)214 240 Q
+(HelpFileinUnsafeDirP)214 252 Q(ath)-.15 E(IncludeFileInUnsafeDirP)214
+264 Q(ath)-.15 E(IncludeFileInUnsafeDirP)214 276 Q(athSafe)-.15 E
+(IncludeFileIngroupWritableDirP)214 288 Q(ath)-.15 E(Link)214 300 Q
+(edAliasFileInWritableDir)-.1 E(Link)214 312 Q(edClassFileInWritableDir)
+-.1 E(Link)214 324 Q(edF)-.1 E(orw)-.15 E(ardFileInWritableDir)-.1 E
+(Link)214 336 Q(edIncludeFileInWritableDir)-.1 E(Link)214 348 Q
+(edMapInWritableDir)-.1 E(Link)214 360 Q
+(edServiceSwitchFileInWritableDir)-.1 E(MapInUnsafeDirP)214 372 Q(ath)
+-.15 E(RunProgramInUnsafeDirP)214 384 Q(ath)-.15 E(RunWritableProgram)
+214 396 Q -.8(Wo)214 408 S(rldWritableAliasFile).8 E(WriteMapT)214 420 Q
+(oHardLink)-.8 E(WriteMapT)214 432 Q(oSymLink)-.8 E(WriteStatsT)214 444
+Q(oHardLink)-.8 E(WriteStatsT)214 456 Q(oSymLink)-.8 E F0(Safe)174 472.2
+Q F1 1.223(is the def)3.723 F 3.723(ault. The)-.1 F 1.224
+(details of these \215ags are described abo)3.723 F -.15(ve)-.15 G(.).15
+E F0 1.224(Use of this)6.224 F(option is not r)174 484.2 Q(ecommended.)
+-.18 E F1(DontExpandCnames)102 500.4 Q .559([no short name] The standards say that all host addresses used in a mail message)
+174 512.4 R 1.407(must be fully canonical.)174 524.4 R -.15(Fo)6.407 G
+3.907(re).15 G 1.407(xample, if your host is named \231Cruft.F)-4.057 F
+(oo.ORG\232)-.15 E 1.462(and also has an alias of \231FTP)174 536.4 R
+(.F)-1.11 E 1.462(oo.ORG\232, the former name must be used at all)-.15 F
+2.63(times. This)174 548.4 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 419 R(Ho)5.662 E(we)-.25 E -.15(ve)-.25 G -.4(r,).15 G .455
-(the IETF is mo)174 431 R .455(ving to)-.15 F -.1(wa)-.25 G .455
+2.63 F .131(If this)5.131 F .662(option is set, the protocols are ignored and the \231wrong\232 thing is done.)
+174 560.4 R(Ho)5.661 E(we)-.25 E -.15(ve)-.25 G -.4(r,).15 G .455
+(the IETF is mo)174 572.4 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 443 R .509(note that hosts do)3.009 F .509
+3.01(acceptable. Please)174 584.4 R .509(note that hosts do)3.01 F .509
(wnstream may still re)-.25 F .509(write the address to be)-.25 F
-(the true canonical name ho)174 455 Q(we)-.25 E -.15(ve)-.25 G -.55(r.)
-.15 G 6.17(DontInitGroups [no)102 471.2 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 NIS, this causes a sequential scan of the groups.byname map, which can)
-174 483.2 R .436(cause your NIS serv)174 495.2 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 507.2 R(passw)174 519.2 Q 1.189(ord \214le\), which will mak)-.1 F
+(the true canonical name ho)174 596.4 Q(we)-.25 E -.15(ve)-.25 G -.55
+(r.).15 G 6.17(DontInitGroups [no)102 612.6 R .25(short name] If set,)
+2.75 F/F2 10/Times-Italic@0 SF(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 NIS, this causes a sequential scan of the groups.byname map, which can)
+174 624.6 R .435(cause your NIS serv)174 636.6 R .435(er to be badly o)
+-.15 F -.15(ve)-.15 G .435(rloaded in a lar).15 F .436(ge domain.)-.18 F
+.436(The cost of this)5.436 F .697(is that the only group found for users will be their primary group \(the one in the)
+174 648.6 R(passw)174 660.6 Q 1.189(ord \214le\), which will mak)-.1 F
3.689<658c>-.1 G 1.189(le access permissions some)-3.689 F 1.189
-(what more restric-)-.25 F(ti)174 531.2 Q -.15(ve)-.25 G 5(.H).15 G
+(what more restric-)-.25 F(ti)174 672.6 Q -.15(ve)-.25 G 5(.H).15 G
(as no ef)-5 E(fect on systems that don')-.25 E 2.5(th)-.18 G -2.25 -.2
-(av e)-2.5 H(group lists.)2.7 E -1.61(DontPruneRoutes [R])102 547.4 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)-3.905
-F 1.405(xplicit routes when)-.15 F .155
+(av e)-2.5 H(group lists.)2.7 E(DontProbeInterf)102 688.8 Q(aces)-.1 E
+1.713([no short name])174 700.8 R F2(Sendmail)4.213 E F1 1.712
+(normally \214nds the names of all interf)4.213 F 1.712(aces acti)-.1 F
+2.012 -.15(ve o)-.25 H(n).15 E 1.103
+(your machine when it starts up and adds their name to the)174 712.8 R
+F0($=w)3.603 E F1 1.103(class of kno)3.603 F(wn)-.25 E 1.836
+(host aliases.)174 724.8 R 1.836(If you ha)6.836 F 2.136 -.15(ve a l)-.2
+H(ar).15 E 1.836(ge number of virtual interf)-.18 F 1.835
+(aces or if your DNS)-.1 F EP
+%%Page: 48 44
+%%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(in)174 96
+Q -.15(ve)-.4 G .958(rse lookups are slo).15 F 3.458(wt)-.25 G .958
+(his can be time consuming.)-3.458 F .959(This option turns of)5.959 F
+3.459(ft)-.25 G(hat)-3.459 E 2.974(probing. Ho)174 108 R(we)-.25 E -.15
+(ve)-.25 G 1.274 -.4(r, y).15 H .474
+(ou will need to be certain to include all v).4 F .473
+(ariant names in the)-.25 F F0($=w)174 120 Q F1
+(class by some other mechanism.)2.5 E -1.61(DontPruneRoutes [R])102
+136.2 R(Normally)3.905 E(,)-.65 E/F2 10/Times-Italic@0 SF(sendmail)3.905
+E F1 1.405(tries to eliminate an)3.905 F 3.905(yu)-.15 G 1.405
+(nnecessary e)-3.905 F 1.405(xplicit routes when)-.15 F .155
(sending an error message \(as discussed in RFC 1123 \247 5.2.6\).)174
-559.4 R -.15(Fo)5.154 G 2.654(re).15 G .154(xample, when)-2.804 F
-(sending an error message to)174 571.4 Q(<@kno)214 587.6 Q(wn1,@kno)-.25
-E(wn2,@kno)-.25 E(wn3:user@unkno)-.25 E(wn>)-.25 E F2(sendmail)174 603.8
+148.2 R -.15(Fo)5.154 G 2.654(re).15 G .154(xample, when)-2.804 F
+(sending an error message to)174 160.2 Q(<@kno)214 176.4 Q(wn1,@kno)-.25
+E(wn2,@kno)-.25 E(wn3:user@unkno)-.25 E(wn>)-.25 E F2(sendmail)174 192.6
Q F1 1.155(will strip of)3.655 F 3.655(ft)-.25 G 1.155(he \231@kno)
-3.655 F(wn1,@kno)-.25 E 1.155(wn2\232 in order to mak)-.25 F 3.655(et)
--.1 G 1.155(he route as)-3.655 F .813(direct as possible.)174 615.8 R
+-.1 G 1.155(he route as)-3.655 F .813(direct as possible.)174 204.6 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)-3.313 E 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 627.8 R
+(mail will be sent to the \214rst address in the route, e)174 216.6 R
-.15(ve)-.25 G 2.51(ni).15 G 2.51(fl)-2.51 G .01(ater addresses are kno)
-2.51 F(wn.)-.25 E(This may be useful if you are caught behind a \214re)
-174 639.8 Q -.1(wa)-.25 G(ll.).1 E(DoubleBounceAddress=)102 656 Q F2
+174 228.6 Q -.1(wa)-.25 G(ll.).1 E(DoubleBounceAddress=)102 244.8 Q F2
(err)A(or)-.45 E(-addr)-.2 E(ess)-.37 E F1 .504([no short name] If an error occurs when sending an error message, send the error)
-174 668 R 1.999(report \(termed a \231double bounce\232 because it is an error \231bounce\232 that occurs)
-174 680 R .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(19)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: 44 40
-%%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 .818(when trying to send another error \231bounce\232\) to the indicated address.)
-174 96 R .817(If not set,)5.817 F(def)174 108 Q
-(aults to \231postmaster\232.)-.1 E(EightBitMode=)102 124.2 Q/F2 10
-/Times-Italic@0 SF(action)A F1 1.955
-([8] Set handling of eight-bit data.)174 136.2 R 1.955(There are tw)
-6.955 F 4.456(ok)-.1 G 1.956(inds of eight-bit data: that)-4.456 F 3.335
-(declared as such using the)174 148.2 R F0(BOD)5.834 E(Y=8BITMIME)-.4 E
-F1 3.334(ESMTP declaration or the)5.834 F F0(\255B8BITMIME)174 160.2 Q
-F1 .948
+174 256.8 R 1.999(report \(termed a \231double bounce\232 because it is an error \231bounce\232 that occurs)
+174 268.8 R .818(when trying to send another error \231bounce\232\) to the indicated address.)
+174 280.8 R .817(If not set,)5.817 F(def)174 292.8 Q
+(aults to \231postmaster\232.)-.1 E(EightBitMode=)102 309 Q F2(action)A
+F1 1.955([8] Set handling of eight-bit data.)174 321 R 1.955
+(There are tw)6.955 F 4.456(ok)-.1 G 1.956(inds of eight-bit data: that)
+-4.456 F 3.335(declared as such using the)174 333 R F0(BOD)5.834 E
+(Y=8BITMIME)-.4 E F1 3.334(ESMTP declaration or the)5.834 F F0
+(\255B8BITMIME)174 345 Q F1 .948
(command line \215ag, and undeclared 8-bit data, that is, input that)
-3.448 F 1.18(just happens to be eight bits.)174 172.2 R 1.18
+3.448 F 1.18(just happens to be eight bits.)174 357 R 1.18
(There are three basic operations that can happen:)6.18 F .995
-(undeclared 8-bit data can be automatically con)174 184.2 R -.15(ve)-.4
-G .996(rted to 8BITMIME, undeclared).15 F .887
-(8-bit data can be passed as-is without con)174 196.2 R -.15(ve)-.4 G
-.887(rsion to MIME \(`).15 F .887(`just send 8')-.74 F .886('\), and)
--.74 F 1.794(declared 8-bit data can be con)174 208.2 R -.15(ve)-.4 G
-1.794(rted to 7-bits for transmission to a non-8BIT).15 F(-)-.92 E
-(MIME mailer)174 220.2 Q 5(.T)-.55 G(he possible)-5 E F2(action)2.5 E F1
-2.5(sa)C(re:)-2.5 E 11.11(sR)219 236.4 S
+(undeclared 8-bit data can be automatically con)174 369 R -.15(ve)-.4 G
+.996(rted to 8BITMIME, undeclared).15 F .887
+(8-bit data can be passed as-is without con)174 381 R -.15(ve)-.4 G .887
+(rsion to MIME \(`).15 F .887(`just send 8')-.74 F .886('\), and)-.74 F
+1.794(declared 8-bit data can be con)174 393 R -.15(ve)-.4 G 1.794
+(rted to 7-bits for transmission to a non-8BIT).15 F(-)-.92 E
+(MIME mailer)174 405 Q 5(.T)-.55 G(he possible)-5 E F2(action)2.5 E F1
+2.5(sa)C(re:)-2.5 E 11.11(sR)219 421.2 S
(eject undeclared 8-bit data \(`)-11.11 E(`strict')-.74 E('\))-.74 E
-7.22(mC)219 248.4 S(on)-7.22 E -.15(ve)-.4 G
+7.22(mC)219 433.2 S(on)-7.22 E -.15(ve)-.4 G
(rt undeclared 8-bit data to MIME \(`).15 E(`mime')-.74 E('\))-.74 E 10
-(pP)219 260.4 S(ass undeclared 8-bit data \(`)-10.15 E(`pass')-.74 E
+(pP)219 445.2 S(ass undeclared 8-bit data \(`)-10.15 E(`pass')-.74 E
('\))-.74 E 2.228
-(In all cases properly declared 8BITMIME data will be con)174 276.6 R
--.15(ve)-.4 G 2.227(rted to 7BIT as).15 F(needed.)174 288.6 Q
-(ErrorHeader=)102 304.8 Q F2(\214le-or)A(-messa)-.2 E -.1(ge)-.1 G F1
-.486([E] Prepend error messages with the indicated message.)174 316.8 R
+(In all cases properly declared 8BITMIME data will be con)174 461.4 R
+-.15(ve)-.4 G 2.227(rted to 7BIT as).15 F(needed.)174 473.4 Q
+(ErrorHeader=)102 489.6 Q F2(\214le-or)A(-messa)-.2 E -.1(ge)-.1 G F1
+.486([E] Prepend error messages with the indicated message.)174 501.6 R
.486(If it be)5.486 F .487(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 328.8 R .86(mended setting\).)174 340.8 R .86
+174 513.6 R .86(mended setting\).)174 525.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 352.8 R(pro)174 364.8 Q .173(vide assistance in to end users.)-.15 F
+174 537.6 R(pro)174 549.6 Q .173(vide assistance in to end users.)-.15 F
.174(If the option is missing or null, or if it names a)5.173 F
-(\214le which does not e)174 376.8 Q
+(\214le which does not e)174 561.6 Q
(xist or which is not readable, no message is printed.)-.15 E
-(ErrorMode=)102 393 Q F2(x)A F1([e] Dispose of errors using mode)17.49 E
-F2(x)2.5 E F1 5(.T)C(he v)-5 E(alues for)-.25 E F2(x)2.5 E F1(are:)2.5 E
-15(pP)214 409.2 S(rint error messages \(def)-15 E(ault\))-.1 E 15(qN)214
-421.2 S 2.5(om)-15 G(essages, just gi)-2.5 E .3 -.15(ve ex)-.25 H
-(it status).15 E 12.22(mM)214 433.2 S(ail back errors)-12.22 E 12.78(wW)
-214 445.2 S(rite back errors \(mail if user not logged in\))-12.78 E
-15.56(eM)214 457.2 S(ail back errors and gi)-15.56 E .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 477.6 S
+(ErrorMode=)102 577.8 Q F2(x)A F1([e] Dispose of errors using mode)17.49
+E F2(x)2.5 E F1 5(.T)C(he v)-5 E(alues for)-.25 E F2(x)2.5 E F1(are:)2.5
+E 15(pP)214 594 S(rint error messages \(def)-15 E(ault\))-.1 E 15(qN)214
+606 S 2.5(om)-15 G(essages, just gi)-2.5 E .3 -.15(ve ex)-.25 H
+(it status).15 E 12.22(mM)214 618 S(ail back errors)-12.22 E 12.78(wW)
+214 630 S(rite back errors \(mail if user not logged in\))-12.78 E 15.56
+(eM)214 642 S(ail back errors and gi)-15.56 E .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 662.4 S
(llbackMXhost=).15 E F2(fallbac)A(khost)-.2 E F1 .797
-([V] If speci\214ed, the)174 489.6 R F2(fallbac)3.297 E(khost)-.2 E F1
+([V] If speci\214ed, the)174 674.4 R F2(fallbac)3.297 E(khost)-.2 E F1
.797(acts lik)3.297 F 3.296(eav)-.1 G .796(ery lo)-3.446 F 3.296(wp)-.25
G .796(riority MX on e)-3.296 F -.15(ve)-.25 G .796(ry host.).15 F
-(This is intended to be used by sites with poor netw)174 501.6 Q
-(ork connecti)-.1 E(vity)-.25 E(.)-.65 E -.15(Fo)102 517.8 S 16.88
+(This is intended to be used by sites with poor netw)174 686.4 Q
+(ork connecti)-.1 E(vity)-.25 E(.)-.65 E -.15(Fo)102 702.6 S 16.88
(rkEachJob [Y]).15 F .707(If set, deli)3.207 F -.15(ve)-.25 G 3.207(re)
.15 G .708(ach job that is run from the queue in a separate process.)
--3.207 F(Use)5.708 E .275(this option if you are short of memory)174
-529.8 R 2.774(,s)-.65 G .274(ince the def)-2.774 F .274
-(ault tends to consume consid-)-.1 F
-(erable amounts of memory while the queue is being processed.)174 541.8
-Q -.15(Fo)102 558 S(rw).15 E(ardP)-.1 E(ath=)-.15 E F2(path)A F1 1.511
-([J] Set the path for searching for users' .forw)174 570 R 1.512
+-3.207 F(Use)5.708 E 2.753(this option if you are short of memory)174
+714.6 R 5.252(,s)-.65 G 2.752(ince the def)-5.252 F 2.752
+(ault tends to consume)-.1 F EP
+%%Page: 49 45
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-49)195.86 E/F1 10/Times-Roman@0 SF
+(considerable amounts of memory while the queue is being processed.)174
+96 Q -.15(Fo)102 112.2 S(rw).15 E(ardP)-.1 E(ath=)-.15 E/F2 10
+/Times-Italic@0 SF(path)A F1 1.511
+([J] Set the path for searching for users' .forw)174 124.2 R 1.512
(ard \214les.)-.1 F 1.512(The def)6.512 F 1.512(ault is \231$z/.for)-.1
-F(-)-.2 E -.1(wa)174 582 S 5.8(rd\232. Some).1 F 3.299
+F(-)-.2 E -.1(wa)174 136.2 S 5.8(rd\232. Some).1 F 3.299
(sites that use the automounter may prefer to change this to)5.8 F
-(\231/v)174 594 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 606 Q 5.488(.I)-.65 G 2.988(tc)-5.488 G .488
+(\231/v)174 148.2 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 160.2 Q 5.488(.I)-.65 G 2.988(tc)-5.488 G .488
(an also be set to a sequence of paths separated by colons;)-2.988 F F2
(sendmail)2.987 E F1 .831
(stops at the \214rst \214le it can successfully and safely open.)174
-618 R -.15(Fo)5.831 G 3.331(re).15 G .831(xample, \231/v)-3.481 F
-(ar/for)-.25 E(-)-.2 E -.1(wa)174 630 S(rd/$u:$z/.forw).1 E .277
+172.2 R -.15(Fo)5.831 G 3.331(re).15 G .831(xample, \231/v)-3.481 F
+(ar/for)-.25 E(-)-.2 E -.1(wa)174 184.2 S(rd/$u:$z/.forw).1 E .277
(ard\232 will search \214rst in /v)-.1 F(ar/forw)-.25 E(ard/)-.1 E F2
(username)A F1 .276(and then in)2.777 F F2(~user)2.776 E(-)-.2 E(name)
-174 642 Q F1(/.forw)A(ard \(b)-.1 E
+174 196.2 Q F1(/.forw)A(ard \(b)-.1 E
(ut only if the \214rst \214le does not e)-.2 E(xist\).)-.15 E
-(HelpFile=)102 658.2 Q F2(\214le)A F1
+(HelpFile=)102 212.4 Q F2(\214le)A F1
([H] Specify the help \214le for SMTP)19.14 E(.)-1.11 E(HoldExpensi)102
-674.4 Q 8.54 -.15(ve [)-.25 H 1.393(c] If an outgoing mailer is mark).15
+228.6 Q 8.54 -.15(ve [)-.25 H 1.393(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.894(,d).15 G
(on')-3.894 E 3.894(tc)-.18 G 1.394(onnect immedi-)-3.894 F(ately)174
-686.4 Q 5.268(.T)-.65 G .268(his requires that queueing be compiled in, since it will depend on a queue)
--5.268 F(run process to actually send the mail.)174 698.4 Q EP
-%%Page: 45 41
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-45)195.86 E/F1 10/Times-Roman@0 SF(HostsFile=)102 96 Q/F2 10
-/Times-Italic@0 SF(path)A F1 .026([no short name] The path to the hosts database, normally \231/etc/hosts\232.)
+240.6 Q 5.268(.T)-.65 G .268(his requires that queueing be compiled in, since it will depend on a queue)
+-5.268 F(run process to actually send the mail.)174 252.6 Q(HostsFile=)
+102 268.8 Q F2(path)A F1 .026([no short name] The path to the hosts database, normally \231/etc/hosts\232.)
10.24 F .026(This option)5.026 F 1.417(is only consulted when sendmail is canonifying addresses, and then only when)
-174 108 R .783
-(\231\214les\232 is in the \231hosts\232 service switch entry)174 120 R
-5.784(.I)-.65 G 3.284(np)-5.784 G(articular)-3.284 E 3.284(,t)-.4 G .784
-(his \214le is)-3.284 F F2(ne)3.284 E(ver)-.15 E F1(used)3.284 E .202(when looking up host addresses; that is under the control of the system)
-174 132 R F2 -.1(ge)2.702 G(thostby-).1 E(name)174 144 Q F1
-(\(3\) routine.)A(HostStatusDirectory=)102 160.2 Q F2(path)A F1 .43
+174 280.8 R .783
+(\231\214les\232 is in the \231hosts\232 service switch entry)174 292.8
+R 5.784(.I)-.65 G 3.284(np)-5.784 G(articular)-3.284 E 3.284(,t)-.4 G
+.784(his \214le is)-3.284 F F2(ne)3.284 E(ver)-.15 E F1(used)3.284 E
+.202(when looking up host addresses; that is under the control of the system)
+174 304.8 R F2 -.1(ge)2.702 G(thostby-).1 E(name)174 316.8 Q F1
+(\(3\) routine.)A(HostStatusDirectory=)102 333 Q F2(path)A F1 .43
([no short name] The location of the long term host status information.)
-174 172.2 R .43(When set,)5.43 F 1.39
-(information about the status of hosts \(e.g., host do)174 184.2 R 1.39
+174 345 R .43(When set,)5.43 F 1.39
+(information about the status of hosts \(e.g., host do)174 357 R 1.39
(wn or not accepting connec-)-.25 F .162
-(tions\) will be shared between all)174 196.2 R F2(sendmail)2.663 E F1
+(tions\) will be shared between all)174 369 R F2(sendmail)2.663 E F1
.163(processes; normally)2.663 F 2.663(,t)-.65 G .163
(his information is)-2.663 F .123(only held within a single queue run.)
-174 208.2 R .123(This option requires a connection cache of at)5.123 F
-.688(least 1 to function.)174 220.2 R .688(If the option be)5.688 F .688
+174 381 R .123(This option requires a connection cache of at)5.123 F
+.688(least 1 to function.)174 393 R .688(If the option be)5.688 F .688
(gins with a leading `/', it is an absolute path-)-.15 F .617
-(name; otherwise, it is relati)174 232.2 R .917 -.15(ve t)-.25 H 3.117
-(ot).15 G .617(he mail queue directory)-3.117 F 5.617(.A)-.65 G .617
+(name; otherwise, it is relati)174 405 R .917 -.15(ve t)-.25 H 3.117(ot)
+.15 G .617(he mail queue directory)-3.117 F 5.617(.A)-.65 G .617
(suggested v)-2.5 F .616(alue for)-.25 F .558(sites desiring persistent host status is \231.hoststat\232 \(i.e., a subdirectory of the queue)
-174 244.2 R(directory\).)174 256.2 Q 24.51(IgnoreDots [i])102 272.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 284.4 Q
--.1(wa)-.1 G(ys accepted\) when reading SMTP mail.).1 E(LogLe)102 300.6
-Q -.15(ve)-.25 G(l=).15 E F2(n)A F1([L] Set the def)22.88 E(ault log le)
--.1 E -.15(ve)-.25 G 2.5(lt).15 G(o)-2.5 E F2(n)2.5 E F1 5(.D)C(ef)-5 E
-(aults to 9.)-.1 E(M)102 316.8 Q F2 1.666(xv)C(alue)-1.666 E F1 .255
-([no long v)35.344 F .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)-5.255 F(command line.)174 328.8
-Q(The)5 E F0<ad4d>2.5 E F1(\215ag is preferred.)2.5 E 11.17
-(MatchGECOS [G])102 345 R(Allo)3.334 E 3.334(wf)-.25 G .834
-(uzzy matching on the GECOS \214eld.)-3.334 F .833
+174 417 R(directory\).)174 429 Q 24.51(IgnoreDots [i])102 445.2 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 457.2 Q -.1
+(wa)-.1 G(ys accepted\) when reading SMTP mail.).1 E(LogLe)102 473.4 Q
+-.15(ve)-.25 G(l=).15 E F2(n)A F1([L] Set the log le)22.88 E -.15(ve)
+-.25 G 2.5(lt).15 G(o)-2.5 E F2(n)2.5 E F1 5(.D)C(ef)-5 E(aults to 9.)
+-.1 E(M)102 489.6 Q F2 1.666(xv)C(alue)-1.666 E F1 .255([no long v)
+35.344 F .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)
+-5.255 F(command line.)174 501.6 Q(The)5 E F0<ad4d>2.5 E F1
+(\215ag is preferred.)2.5 E 11.17(MatchGECOS [G])102 517.8 R(Allo)3.334
+E 3.334(wf)-.25 G .834(uzzy matching on the GECOS \214eld.)-3.334 F .833
(If this \215ag is set, and the usual)5.833 F .867(user name lookups f)
-174 357 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 369 S 1.155
+174 529.8 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 541.8 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 381 R 1.196(also requires that MA)3.696 F 1.196
+174 553.8 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 393 Q(MaxDaemonChildren=)102 409.2
-Q F2(N)A F1 .54([no short name] If set,)174 421.2 R F2(sendmail)3.039 E
-F1 .539(will refuse connections when it has more than)3.039 F F2(N)3.039
-E F1 1.086(children processing incoming mail.)174 433.2 R 1.087
+(This option is not recommended.)174 565.8 Q(MaxDaemonChildren=)102 582
+Q F2(N)A F1 .54([no short name] If set,)174 594 R F2(sendmail)3.039 E F1
+.539(will refuse connections when it has more than)3.039 F F2(N)3.039 E
+F1 1.086(children processing incoming mail.)174 606 R 1.087
(This does not limit the number of outgoing)6.086 F 3.37
-(connections. If)174 445.2 R .87
+(connections. If)174 618 R .87
(not set, there is no limit to the number of children -- that is, the)
-3.37 F(system load a)174 457.2 Q -.15(ve)-.2 G(raging controls this.).15
-E(MaxHopCount=)102 473.4 Q F2(N)A F1 1.237([h] The maximum hop count.)
-174 485.4 R 1.237(Messages that ha)6.237 F 1.538 -.15(ve b)-.2 H 1.238
+3.37 F(system load a)174 630 Q -.15(ve)-.2 G(raging controls this.).15 E
+(MaxHopCount=)102 646.2 Q F2(N)A F1 1.237([h] The maximum hop count.)174
+658.2 R 1.237(Messages that ha)6.237 F 1.538 -.15(ve b)-.2 H 1.238
(een processed more than).15 F F2(N)3.738 E F1
-(times are assumed to be in a loop and are rejected.)174 497.4 Q(Def)5 E
-(aults to 25.)-.1 E(MaxHostStatAge=)102 513.6 Q F2 -.1(age)C F1 .439
-([no short name] Not yet implemented.)174 525.6 R .438
+(times are assumed to be in a loop and are rejected.)174 670.2 Q(Def)5 E
+(aults to 25.)-.1 E(MaxHostStatAge=)102 686.4 Q F2 -.1(age)C F1 .439
+([no short name] Not yet implemented.)174 698.4 R .438
(This option speci\214es ho)5.438 F 2.938(wl)-.25 G .438
-(ong host status)-2.938 F .36(information will be retained.)174 537.6 R
+(ong host status)-2.938 F .36(information will be retained.)174 710.4 R
-.15(Fo)5.36 G 2.86(re).15 G .36(xample, if a host is found to be do)
-3.01 F .36(wn, connec-)-.25 F .246
-(tions to that host will not be retried for this interv)174 549.6 R
+(tions to that host will not be retried for this interv)174 722.4 R
2.746(al. The)-.25 F .246(units def)2.746 F .246(ault to minutes.)-.1 F
-(MaxMessageSize=)102 565.8 Q F2(N)A F1 2.562
-([no short name] Specify the maximum message size to be adv)174 577.8 R
-2.563(ertised in the)-.15 F(ESMTP EHLO response.)174 589.8 Q
-(Messages lar)5 E(ger than this will be rejected.)-.18 E
-(MaxQueueRunSize=)102 606 Q F2(N)A F1 .677([no short name] The maximum number of jobs that will be processed in a single)
-174 618 R .501(queue run.)174 630 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 642 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 654 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 666 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 678 Q(.)-.65 E(MeT)102 694.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)-2.5 G
-2.5(mi)-2.5 G 2.5(na)-2.5 G 2.5(na)-2.5 G(lias e)-2.5 E(xpansion.)-.15 E
-(MinFreeBlocks=)102 710.4 Q F2(N)A F1 1.538([b] Insist on at least)174
-722.4 R F2(N)4.038 E F1 1.539
-(blocks free on the \214lesystem that holds the queue \214les)4.039 F EP
-%%Page: 46 42
+EP
+%%Page: 50 46
%%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 .846
-(before accepting email via SMTP)174 96 R 5.846(.I)-1.11 G 3.346(ft)
--5.846 G .846(here is insuf)-3.346 F .846(\214cient space)-.25 F/F2 10
-/Times-Italic@0 SF(sendmail)3.346 E F1(gi)3.345 E -.15(ve)-.25 G 3.345
-(sa).15 G(452 response to the MAIL command.)174 108 Q(This in)5 E
+/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
+(MaxMessageSize=)102 96 Q/F2 10/Times-Italic@0 SF(N)A F1 2.562
+([no short name] Specify the maximum message size to be adv)174 108 R
+2.563(ertised in the)-.15 F(ESMTP EHLO response.)174 120 Q(Messages lar)
+5 E(ger than this will be rejected.)-.18 E(MaxQueueRunSize=)102 136.2 Q
+F2(N)A F1 .677([no short name] The maximum number of jobs that will be processed in a single)
+174 148.2 R .501(queue run.)174 160.2 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 172.2 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 184.2 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 196.2 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 208.2 Q(.)-.65 E(MaxRecipientsPerMessage=)
+102 224.4 Q F2(N)A F1 1.672([no short name] The maximum number of recipients that will be accepted per)
+174 236.4 R 1.459(message in an SMTP transaction.)174 248.4 R 1.458
+(Note: setting this too lo)6.458 F 3.958(wc)-.25 G 1.458
+(an interfere with)-3.958 F .048(sending mail from MU)174 260.4 R .048
+(As that use SMTP for initial submission.)-.4 F .049
+(If not set, there is)5.049 F
+(no limit on the number of recipients per en)174 272.4 Q -.15(ve)-.4 G
+(lope.).15 E(MeT)102 288.6 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)-2.5 G 2.5(mi)-2.5 G 2.5(na)-2.5 G
+2.5(na)-2.5 G(lias e)-2.5 E(xpansion.)-.15 E(MinFreeBlocks=)102 304.8 Q
+F2(N)A F1 1.539([b] Insist on at least)174 316.8 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 328.8 R 5.846(.I)-1.11 G 3.346
+(ft)-5.846 G .846(here is insuf)-3.346 F .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 340.8 Q(This in)5 E
(vites the sender to try ag)-.4 E(ain later)-.05 E(.)-.55 E
-(MinQueueAge=age)102 124.2 Q .886([no short name] Don')174 136.2 R 3.386
-(tp)-.18 G .886(rocess an)-3.386 F 3.386(yq)-.15 G .886
-(ueued jobs that ha)-3.386 F 1.187 -.15(ve b)-.2 H .887
-(een in the queue less).15 F 1.9(than the indicated time interv)174
-148.2 R 4.399(al. This)-.25 F 1.899(is intended to allo)4.399 F 4.399
-(wy)-.25 G 1.899(ou to get respon-)-4.399 F(si)174 160.2 Q -.15(ve)-.25
-G .665(ness by processing the queue f).15 F .665
+(MinQueueAge=age)102 357 Q .887([no short name] Don')174 369 R 3.387(tp)
+-.18 G .887(rocess an)-3.387 F 3.387(yq)-.15 G .886(ueued jobs that ha)
+-3.387 F 1.186 -.15(ve b)-.2 H .886(een in the queue less).15 F 1.899
+(than the indicated time interv)174 381 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-)
+-4.399 F(si)174 393 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 172.2 Q(The def)5 E
-(ault units are minutes.)-.1 E(MustQuoteChars=)102 188.4 Q F2(s)A F1
-1.253([no short name] Sets the list of characters that must be quoted if used in a full)
-174 200.4 R 1.217(name that is in the phrase part of a `)174 212.4 R
+(by trying jobs too often.)174 405 Q(The def)5 E
+(ault units are minutes.)-.1 E(MustQuoteChars=)102 421.2 Q F2(s)A F1
+1.252([no short name] Sets the list of characters that must be quoted if used in a full)
+174 433.2 R 1.217(name that is in the phrase part of a `)174 445.2 R
1.217(`phrase <address>')-.74 F 3.717('s)-.74 G 3.717(yntax. The)-3.717
-F(def)3.718 E 1.218(ault is)-.1 F -.74(``)174 224.4 S<b42e>.74 E -.74
+F(def)3.717 E 1.217(ault is)-.1 F -.74(``)174 457.2 S<b42e>.74 E -.74
('')-.7 G 5(.T).74 G(he characters `)-5 E(`@,;:\\\(\)[]')-.74 E 2.5('a)
-.74 G(re al)-2.5 E -.1(wa)-.1 G(ys added to this list.).1 E
-(NoRecipientAction)102 240.6 Q .555([no short name] The action to tak)
-174 252.6 R 3.055(ew)-.1 G .555(hen you recei)-3.055 F .855 -.15(ve a m)
--.25 H .554(essage that has no v).15 F(alid)-.25 E .625
-(recipient headers \(T)174 264.6 R .625(o:, Cc:, Bcc:, or Apparently-T)
--.8 F .625(o: \212 the last included for back)-.8 F .109
-(compatibility with old)174 276.6 R F2(sendmail)2.609 E F1 2.609
-(s\). It)B .109(can be)2.609 F F0(None)2.608 E F1 .108
-(to pass the message on unmod-)2.608 F .296
-(i\214ed, which violates the protocol,)174 288.6 R F0(Add-T)2.796 E(o)
--.92 E F1 .296(to add a T)2.796 F .296(o: header with an)-.8 F 2.797(yr)
--.15 G(ecipients)-2.797 E 1.638(it can \214nd in the en)174 300.6 R -.15
+(NoRecipientAction)102 473.4 Q .554([no short name] The action to tak)
+174 485.4 R 3.055(ew)-.1 G .555(hen you recei)-3.055 F .855 -.15(ve a m)
+-.25 H .555(essage that has no v).15 F(alid)-.25 E .625
+(recipient headers \(T)174 497.4 R .625(o:, Cc:, Bcc:, or Apparently-T)
+-.8 F .625(o: \212 the last included for back)-.8 F .108
+(compatibility with old)174 509.4 R F2(sendmail)2.608 E F1 2.608
+(s\). It)B .108(can be)2.608 F F0(None)2.608 E F1 .109
+(to pass the message on unmod-)2.609 F .297
+(i\214ed, which violates the protocol,)174 521.4 R F0(Add-T)2.796 E(o)
+-.92 E F1 .296(to add a T)2.796 F .296(o: header with an)-.8 F 2.796(yr)
+-.15 G(ecipients)-2.796 E 1.638(it can \214nd in the en)174 533.4 R -.15
(ve)-.4 G 1.638(lope \(which might e).15 F 1.638
-(xpose Bcc: recipients\),)-.15 F F0(Add-A)4.138 E(ppar)-.25 E(-)-.37 E
-(ently-T)174 312.6 Q(o)-.92 E F1 .337(to add an Apparently-T)2.837 F
-.337(o: header \(this is only for back-compatibility and)-.8 F .842
-(is of)174 324.6 R .841(\214cially deprecated\),)-.25 F F0(Add-T)3.341 E
-(o-Undisclosed)-.92 E F1 .841(to add a header \231T)3.341 F .841
-(o: undisclosed-)-.8 F .397(recipients:;\232 to mak)174 336.6 R 2.897
-(et)-.1 G .397(he header le)-2.897 F -.05(ga)-.15 G 2.897(lw).05 G .397
-(ithout disclosing an)-2.897 F .398(ything, or)-.15 F F0(Add-Bcc)2.898 E
-F1(to)2.898 E(add an empty Bcc: header)174 348.6 Q(.)-.55 E 1.18
-(OldStyleHeaders [o])102 364.8 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 376.8 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)-3.569 F 1.681
-(comma, parenthesis, or angle brack)174 388.8 R 1.681
-(et, it will be assumed that commas already)-.1 F -.15(ex)174 400.8 S
+(xpose Bcc: recipients\),)-.15 F F0(Add-A)4.139 E(ppar)-.25 E(-)-.37 E
+(ently-T)174 545.4 Q(o)-.92 E F1 .338(to add an Apparently-T)2.838 F
+.337(o: header \(this is only for back-compatibility and)-.8 F .841
+(is of)174 557.4 R .841(\214cially deprecated\),)-.25 F F0(Add-T)3.341 E
+(o-Undisclosed)-.92 E F1 .841(to add a header \231T)3.341 F .842
+(o: undisclosed-)-.8 F .398(recipients:;\232 to mak)174 569.4 R 2.898
+(et)-.1 G .397(he header le)-2.898 F -.05(ga)-.15 G 2.897(lw).05 G .397
+(ithout disclosing an)-2.897 F .397(ything, or)-.15 F F0(Add-Bcc)2.897 E
+F1(to)2.897 E(add an empty Bcc: header)174 581.4 Q(.)-.55 E 1.18
+(OldStyleHeaders [o])102 597.6 R 1.713(Assume that the headers may be in old format, i.e., spaces delimit names.)
+4.213 F 1.069(This actually turns on an adapti)174 609.6 R 1.368 -.15
+(ve a)-.25 H 1.068(lgorithm: if an).15 F 3.568(yr)-.15 G 1.068
+(ecipient address contains a)-3.568 F 1.681
+(comma, parenthesis, or angle brack)174 621.6 R 1.681
+(et, it will be assumed that commas already)-.1 F -.15(ex)174 633.6 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 412.8 Q(Def)5 E(aults to of)-.1
-E(f.)-.25 E(OperatorChars=)102 429 Q F2 -.15(ch)C(arlist).15 E F1 1.438
-([$o macro] The list of characters that are considered to be \231operators\232, that is,)
-174 441 R .82(characters that delimit tok)174 453 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 465 R
-2.578(ens. White)-.1 F .078(space characters sep-)2.578 F .269
-(arate tok)174 477 R .269(ens b)-.1 F .269(ut are not tok)-.2 F .269
+(put with commas between the names.)174 645.6 Q(Def)5 E(aults to of)-.1
+E(f.)-.25 E(OperatorChars=)102 661.8 Q F2 -.15(ch)C(arlist).15 E F1
+1.438([$o macro] The list of characters that are considered to be \231operators\232, that is,)
+174 673.8 R .82(characters that delimit tok)174 685.8 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
+697.8 R 2.578(ens. White)-.1 F .078(space characters sep-)2.578 F .27
+(arate tok)174 709.8 R .27(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 489 Q .433(ens, b)-.1 F .433
+.269(AAA.BBB\232 has three)-.8 F(tok)174 721.8 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 501 Q 2.5(,t)-.65 G
-(he characters \231\()-2.5 E 1.666(\)<>,;)1.666 G 2.5<9a61>-1.666 G
-(re al)-2.5 E -.1(wa)-.1 G(ys operators.).1 E(PostmasterCop)102 517.2 Q
-(y=)-.1 E F2(postmaster)A F1 .003
+(:@[])1.666 G<9a3b>-1.666 E EP
+%%Page: 51 47
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-51)195.86 E/F1 10/Times-Roman@0 SF(additionally)174 96 Q 2.5(,t)
+-.65 G(he characters \231\()-2.5 E 1.666(\)<>,;)1.666 G 2.5<9a61>-1.666
+G(re al)-2.5 E -.1(wa)-.1 G(ys operators.).1 E(PostmasterCop)102 112.2 Q
+(y=)-.1 E/F2 10/Times-Italic@0 SF(postmaster)A F1 .003
([P] If set, copies of error messages will be sent to the named)174
-529.2 R F2(postmaster)2.504 E F1 5.004(.O)C .004(nly the)-5.004 F .627
-(header of the f)174 541.2 R .627(ailed message is sent.)-.1 F .626
+124.2 R F2(postmaster)2.503 E F1 5.003(.O)C .003(nly the)-5.003 F .626
+(header of the f)174 136.2 R .626(ailed message is sent.)-.1 F .627
(Since most errors are user problems, this is)5.626 F .453
-(probably not a good idea on lar)174 553.2 R .453(ge sites, and ar)-.18
+(probably not a good idea on lar)174 148.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 565.2 R 1.978
+.25 G 1.978(violations, b)174 160.2 R 1.978
(ut it seems to be popular with certain operating systems v)-.2 F
-(endors.)-.15 E(Def)174 577.2 Q(aults to no postmaster copies.)-.1 E
-(Pri)102 593.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 605.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)-3.692 F 3.692(yo)-.15 G 3.692(ft)-3.692 G 1.192
-(hese are)-3.692 F .929(just a w)174 617.4 R .928
+(endors.)-.15 E(Def)174 172.2 Q(aults to no postmaster copies.)-.1 E
+(Pri)102 188.4 Q -.25(va)-.25 G -.15(cy).25 G(Options=).15 E F2
+(opt,opt,...)1.666 E F1 1.192([p] Set the pri)174 200.4 R -.25(va)-.25 G
+-.15(cy).25 G F2(opt)3.842 E F1 3.692(ions. `)B(`Pri)-.74 E -.25(va)-.25
+G -.15(cy).25 G 2.672 -.74('' i).15 H 3.692(sr).74 G 1.191
+(eally a misnomer; man)-3.692 F 3.691(yo)-.15 G 3.691(ft)-3.691 G 1.191
+(hese are)-3.691 F .928(just a w)174 212.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 629.4 Q EP
-%%Page: 47 43
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-47)195.86 E/F1 10/Times-Roman@0 SF 40.26(public Allo)214 96 R
-2.5(wo)-.25 G(pen access)-2.5 E 11.38(needmailhelo Insist)214 108 R
-(on HELO or EHLO command before MAIL)2.5 E(neede)214 120 Q 9.87
-(xpnhelo Insist)-.15 F(on HELO or EHLO command before EXPN)2.5 E(noe)214
-132 Q 35.97(xpn Disallo)-.15 F 2.5(wE)-.25 G(XPN entirely)-2.5 E 12.5
-(needvrfyhelo Insist)214 144 R(on HELO or EHLO command before VRFY)2.5 E
-(no)214 156 Q 38.75(vrfy Disallo)-.15 F 2.5(wV)-.25 G(RFY entirely)-2.5
-E 14.71(restrictmailq Restrict)214 168 R(mailq command)2.5 E 19.16
-(restrictqrun Restrict)214 180 R(\255q command line \215ag)2.5 E 24.16
-(noreceipts Don')214 192 R 2.5(tr)-.18 G(eturn success DSNs)-2.5 E(goa)
-214 204 Q -.1(wa)-.15 G 36.91(yD).1 G(isallo)-36.91 E 2.5(we)-.25 G
-(ssentially all SMTP status queries)-2.5 E(authw)214 216 Q 11.48
+5.929 E F2(opt)3.429 E F1(ions)A(can be selected from:)174 224.4 Q 40.26
+(public Allo)214 240.6 R 2.5(wo)-.25 G(pen access)-2.5 E 11.38
+(needmailhelo Insist)214 252.6 R(on HELO or EHLO command before MAIL)2.5
+E(neede)214 264.6 Q 9.87(xpnhelo Insist)-.15 F
+(on HELO or EHLO command before EXPN)2.5 E(noe)214 276.6 Q 35.97
+(xpn Disallo)-.15 F 2.5(wE)-.25 G(XPN entirely)-2.5 E 12.5
+(needvrfyhelo Insist)214 288.6 R(on HELO or EHLO command before VRFY)2.5
+E(no)214 300.6 Q 38.75(vrfy Disallo)-.15 F 2.5(wV)-.25 G(RFY entirely)
+-2.5 E 39.71(noetrn Disallo)214 312.6 R 2.5(wE)-.25 G(TRN entirely)-2.5
+E(no)214 324.6 Q -.15(ve)-.15 G 37.79(rb Disallo).15 F 2.5(wV)-.25 G
+(ERB entirely)-2.5 E 14.71(restrictmailq Restrict)214 336.6 R
+(mailq command)2.5 E 19.16(restrictqrun Restrict)214 348.6 R
+(\255q command line \215ag)2.5 E 24.16(noreceipts Don')214 362.6 R 2.5
+(tr)-.18 G(eturn success DSNs)-2.5 E/F3 7/Times-Roman@0 SF(21)-4 I F1
+(goa)214 374.6 Q -.1(wa)-.15 G 36.91(yD).1 G(isallo)-36.91 E 2.5(we)-.25
+G(ssentially all SMTP status queries)-2.5 E(authw)214 386.6 Q 11.48
(arnings Put)-.1 F(X-Authentication-W)2.5 E(arning: headers in messages)
--.8 E .485(The \231goa)174 232.2 R -.1(wa)-.15 G .485
+-.8 E .485(The \231goa)174 402.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 is restricted, only people in the same group as the queue directory can)
-174 244.2 R .207(print the queue.)174 256.2 R .207
+174 414.8 R .207(print the queue.)174 426.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 268.2 R
+(wner of the queue)-.25 F .066(directory can run the queue.)174 438.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 system, such as using an)
-174 280.2 R(non-standard queue directory)174 292.2 Q(.)-.65 E
-(QueueDirectory=)102 308.4 Q/F2 10/Times-Italic@0 SF(dir)A F1
-([Q] Use the named)174 320.4 Q F2(dir)2.5 E F1(as the queue directory)
-2.5 E(.)-.65 E(QueueF)102 336.6 Q(actor=)-.15 E F2(factor)A F1 .614
-([q] Use)174 348.6 R F2(factor)3.114 E F1 .613
+174 450.8 R(non-standard queue directory)174 462.8 Q(.)-.65 E
+(QueueDirectory=)102 479 Q F2(dir)A F1([Q] Use the named)174 491 Q F2
+(dir)2.5 E F1(as the queue directory)2.5 E(.)-.65 E(QueueF)102 507.2 Q
+(actor=)-.15 E F2(factor)A F1 .614([q] Use)174 519.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 360.6 R .415(This v)5.415
+3.114 F .415(up jobs rather than run them.)174 531.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 372.6 R -.15(ve)-.2
+(ference between the)-.25 F 1.004(current load a)174 543.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 384.6 Q(Def)5 E
-(aults to 600000.)-.1 E(QueueLA=)102 400.8 Q F2(LA)A F1 .164
+(the maximum message priority that will be sent.)174 555.2 Q(Def)5 E
+(aults to 600000.)-.1 E(QueueLA=)102 571.4 Q F2(LA)A F1 .164
([x] When the system load a)15.26 F -.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')-2.665 F 2.665(tt)-.18 G(ry)-2.665 E
-(to send them\).)174 412.8 Q(Def)5 E(aults to 8.)-.1 E(QueueSortOrder=)
-102 429 Q F2(algorithm)A F1 .097([no short name] Sets the)174 441 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 453 R
+(to send them\).)174 583.4 Q(Def)5 E(aults to 8.)-.1 E(QueueSortOrder=)
+102 599.6 Q F2(algorithm)A F1 .097([no short name] Sets the)174 611.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 623.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)-3.771 F .002
(\214rst host name of the \214rst recipient\), \231time\232 \(to order by the submission time\), and)
-174 465 R .986(\231priority\232 \(to order by message priority\).)174
-477 R .986(Host ordering mak)5.986 F .986(es better use of the)-.1 F
-.453(connection cache, b)174 489 R .452(ut may tend to process lo)-.2 F
-2.952(wp)-.25 G .452(riority messages that go to a sin-)-2.952 F .218
-(gle host o)174 501 R -.15(ve)-.15 G 2.718(rh).15 G .218
-(igh priority messages that go to se)-2.718 F -.15(ve)-.25 G .219
-(ral hosts; it probably shouldn').15 F(t)-.18 E .524(be used on slo)174
-513 R 3.024(wn)-.25 G(etw)-3.024 E .524(ork links.)-.1 F -.35(Ti)5.524 G
-.524(me ordering is almost al).35 F -.1(wa)-.1 G .523
-(ys a bad idea, since).1 F 1.127(it allo)174 525 R 1.127(ws lar)-.25 F
-1.127(ge, b)-.18 F 1.127(ulk mail to go out before smaller)-.2 F 3.627
-(,p)-.4 G 1.127(ersonal mail, b)-3.627 F 1.128(ut may ha)-.2 F -.15(ve)
--.2 G 1.363(applicability on some hosts with v)174 537 R 1.363(ery f)
--.15 F 1.363(ast connections.)-.1 F 1.362(Priority ordering is the)6.363
-F(def)174 549 Q(ault.)-.1 E(QueueT)102 565.2 Q(imeout=)-.35 E F2
-(timeout)A F1 .355([T] A synon)174 577.2 R .355(ym for \231T)-.15 F
-2.855(imeout.queuereturn\232. Use)-.35 F .356
-(that form instead of the \231Queue-)2.855 F -.35(Ti)174 589.2 S
-(meout\232 form.).35 E(Resolv)102 605.4 Q(erOptions=)-.15 E F2(options)A
-F1 .128([I] Set resolv)174 617.4 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)-2.627 E F2<8d61>174 629.4 Q(g)-.1 E F1 5.013(sc)C 2.513
-(an be \231deb)-5.013 F 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 641.4 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 653.4 Q F1 3.82(\)c)C 1.32
+174 635.6 R .986(\231priority\232 \(to order by message priority\).)174
+647.6 R .986(Host ordering mak)5.986 F .986(es better use of the)-.1 F
+1.834(connection cache, b)174 659.6 R 1.833(ut may tend to process lo)
+-.2 F 4.333(wp)-.25 G 1.833(riority messages that go to a)-4.333 F .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(21)93.6 679.6 Q/F5 8/Times-Roman@0 SF .817(N.B.: the)
+3.2 J/F6 8/Times-Bold@0 SF(nor)2.817 E(eceipts)-.144 E F5 .817
+(\215ag causes)2.817 F/F7 8/Times-Italic@0 SF(sendmail)2.817 E F5 .817
+(to violate RFC 1891, which requires that return receipts be pro)2.817 F
+.816(vided if Deli)-.12 F -.12(ve)-.2 G(ry).12 E
+(Status Noti\214cations are supported.)72 692.4 Q EP
+%%Page: 52 48
+%%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 2.605
+(single host o)174 96 R -.15(ve)-.15 G 5.106(rh).15 G 2.606
+(igh priority messages that go to se)-5.106 F -.15(ve)-.25 G 2.606
+(ral hosts; it probably).15 F(shouldn')174 108 Q 3.419(tb)-.18 G 3.419
+(eu)-3.419 G .919(sed on slo)-3.419 F 3.419(wn)-.25 G(etw)-3.419 E .919
+(ork links.)-.1 F -.35(Ti)5.918 G .918(me ordering is almost al).35 F
+-.1(wa)-.1 G .918(ys a bad).1 F .844(idea, since it allo)174 120 R .844
+(ws lar)-.25 F .844(ge, b)-.18 F .844(ulk mail to go out before smaller)
+-.2 F 3.345(,p)-.4 G .845(ersonal mail, b)-3.345 F(ut)-.2 E .708(may ha)
+174 132 R 1.008 -.15(ve a)-.2 H .707(pplicability on some hosts with v)
+.15 F .707(ery f)-.15 F .707(ast connections.)-.1 F .707(Priority order)
+5.707 F(-)-.2 E(ing is the def)174 144 Q(ault.)-.1 E(QueueT)102 160.2 Q
+(imeout=)-.35 E/F2 10/Times-Italic@0 SF(timeout)A F1 .355([T] A synon)
+174 172.2 R .355(ym for \231T)-.15 F 2.855(imeout.queuereturn\232. Use)
+-.35 F .356(that form instead of the \231Queue-)2.855 F -.35(Ti)174
+184.2 S(meout\232 form.).35 E(Resolv)102 200.4 Q(erOptions=)-.15 E F2
+(options)A F1 .128([I] Set resolv)174 212.4 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)-2.627 E F2<8d61>174 224.4 Q(g)-.1 E F1 5.013(sc)
+C 2.513(an be \231deb)-5.013 F 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 236.4 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 248.4 Q F1 3.82(\)c)C 1.32
(an be speci\214ed to turn of)-3.82 F 3.82(fm)-.25 G 1.32(atching ag)
-3.82 F 1.32(ainst MX records when doing name)-.05 F(canoni\214cations.)
-174 665.4 Q F0(N.B.)5.918 E F1 .917
+174 260.4 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 677.4 R
+(er be)-.15 F 1.025(responding in order to accept addresses.)174 272.4 R
1.025(This has been replaced by checking to)6.025 F .078(see if the \231dns\232 method is listed in the service switch entry for the \231hosts\232 service.)
-174 689.4 R(RunAsUser=)102 705.6 Q F2(user)A F1 3.752
+174 284.4 R(RunAsUser=)102 300.6 Q F2(user)A F1 3.752
([no short name] The)2.48 F F2(user)6.252 E F1 3.752
(parameter may be a user name \(look)6.252 F 3.753(ed up in)-.1 F F2
-(/etc/passwd)174 717.6 Q F1 3.046(\)o)C 3.046(ran)-3.046 G .546
+(/etc/passwd)174 312.6 Q F1 3.046(\)o)C 3.046(ran)-3.046 G .546
(umeric user id; either form can ha)-3.046 F .846 -.15(ve \231)-.2 H
-.545(:group\232 attached \(where).15 F EP
-%%Page: 48 44
-%%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 .965
-(group can be numeric or symbolic\).)174 96 R .966
-(If set to a non-zero \(non-root\) v)5.965 F(alue,)-.25 E/F2 10
-/Times-Italic@0 SF(send-)3.466 E(mail)174 110 Q F1 .484
+.545(:group\232 attached \(where).15 F .965
+(group can be numeric or symbolic\).)174 324.6 R .966
+(If set to a non-zero \(non-root\) v)5.965 F(alue,)-.25 E F2(send-)3.466
+E(mail)174 338.6 Q F1 .484
(will change to this user id shortly after startup)2.984 F/F3 7
-/Times-Roman@0 SF(20)-4 I F1 5.483(.T)4 K .483(his a)-5.483 F -.2(vo)-.2
-G .483(ids a certain class).2 F 1.844(of security problems.)174 122 R
+/Times-Roman@0 SF(22)-4 I F1 5.483(.T)4 K .483(his a)-5.483 F -.2(vo)-.2
+G .483(ids a certain class).2 F 1.844(of security problems.)174 350.6 R
(Ho)6.844 E(we)-.25 E -.15(ve)-.25 G 2.644 -.4(r, t).15 H 1.844
(his means that all \231.forw).4 F 1.844(ard\232 and \231:include:\232)
--.1 F .194(\214les must be readable by the indicated)174 134 R F2(user)
-2.694 E F1 2.694(,a)C .193(nd on systems that don')-2.694 F 2.693(ts)
--.18 G .193(upport the)-2.693 F(sa)174 146 Q -.15(ve)-.2 G 2.894(du).15
-G .394(id bit properly)-2.894 F 2.894(,a)-.65 G .394
+-.1 F .194(\214les must be readable by the indicated)174 362.6 R F2
+(user)2.694 E F1 2.694(,a)C .193(nd on systems that don')-2.694 F 2.693
+(ts)-.18 G .193(upport the)-2.693 F(sa)174 374.6 Q -.15(ve)-.2 G 2.894
+(du).15 G .394(id bit properly)-2.894 F 2.894(,a)-.65 G .394
(ll \214les to be written must be writable by)-2.894 F F2(user)2.895 E
-F1 .395(and all pro-)2.895 F 1.218(grams will be e)174 158 R -.15(xe)
+F1 .395(and all pro-)2.895 F 1.218(grams will be e)174 386.6 R -.15(xe)
-.15 G 1.218(cuted by).15 F F2(user)3.718 E F1 6.218(.I)C 3.717(ti)
-6.218 G 3.717(sa)-3.717 G 1.217(lso incompatible with the)-3.717 F F0
-(SafeFileEn)3.717 E(vi-)-.4 E -.18(ro)174 170 S(nment).18 E F1 3.177
+(SafeFileEn)3.717 E(vi-)-.4 E -.18(ro)174 398.6 S(nment).18 E F1 3.177
(option. In)3.177 F .677(other w)3.177 F .677
(ords, it may not actually add much to security on an)-.1 F -2.25 -.2
-(av e)174 182 T .624(rage system, and may in f).2 F .623
+(av e)174 410.6 T .624(rage system, and may in f).2 F .623
(act detract from security \(because other \214le permis-)-.1 F 1.948
-(sions must be loosened\).)174 194 R(Ho)6.948 E(we)-.25 E -.15(ve)-.25 G
-2.748 -.4(r, i).15 H 4.448(ts).4 G 1.948(hould be useful on \214re)
+(sions must be loosened\).)174 422.6 R(Ho)6.948 E(we)-.25 E -.15(ve)-.25
+G 2.748 -.4(r, i).15 H 4.448(ts).4 G 1.948(hould be useful on \214re)
-4.448 F -.1(wa)-.25 G 1.949(lls and other).1 F(places where users don')
-174 206 Q 2.5(th)-.18 G -2.25 -.2(av e)-2.5 H
+174 434.6 Q 2.5(th)-.18 G -2.25 -.2(av e)-2.5 H
(accounts and the aliases \214le is well constrained.)2.7 E(RecipientF)
-102 222.2 Q(actor=)-.15 E F2(fact)A F1 .638([y] The indicated)174 234.2
+102 450.8 Q(actor=)-.15 E F2(fact)A F1 .638([y] The indicated)174 462.8
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 246.2 R .231
+(job\) for each recipient, i.e., this v)174 474.8 R .231
(alue penalizes jobs with lar)-.25 F .231(ge numbers of recipi-)-.18 F
-2.5(ents. Def)174 258.2 R(aults to 30000.)-.1 E(RefuseLA=)102 274.4 Q F2
+2.5(ents. Def)174 486.8 R(aults to 30000.)-.1 E(RefuseLA=)102 503 Q F2
(LA)A F1 1.012([X] When the system load a)13.59 F -.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-)-3.512 F 2.5(tions. Def)174 286.4 R
-(aults to 12.)-.1 E(RetryF)102 302.6 Q(actor=)-.15 E F2(fact)A F1 .771
+(efuse incoming SMTP connec-)-3.512 F 2.5(tions. Def)174 515 R
+(aults to 12.)-.1 E(RetryF)102 531.2 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 314.6 R 3.493(alue. In)-.25 F 1.107(most en)174 326.6 R 1.107
+174 543.2 R 3.493(alue. In)-.25 F 1.107(most en)174 555.2 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)-3.608 F 1.108(wn are all too)-.25 F
-(often do)174 338.6 Q(wn for a long time.)-.25 E(Def)5 E
-(aults to 90000.)-.1 E(SafeFileEn)102 354.8 Q(vironment=)-.4 E F2(dir)A
-F1 .022([no short name] If this option is set,)174 366.8 R F2(sendmail)
+(often do)174 567.2 Q(wn for a long time.)-.25 E(Def)5 E
+(aults to 90000.)-.1 E(SafeFileEn)102 583.4 Q(vironment=)-.4 E F2(dir)A
+F1 .022([no short name] If this option is set,)174 595.4 R F2(sendmail)
2.521 E F1 .021(will do a)2.521 F F2 -.15(ch)2.521 G -.45(ro).15 G(ot)
-.45 E F1 .021(\(2\) call into the indi-)B(cated)174 378.8 Q F2(dir)2.832
+.45 E F1 .021(\(2\) call into the indi-)B(cated)174 607.4 Q F2(dir)2.832
E F1 .333(ectory before doing an)B 2.833<798c>-.15 G .333(le writes.)
-2.833 F .333(If the \214le name speci\214ed by the user)5.333 F(be)174
-390.8 Q .588(gins with)-.15 F F2(dir)3.088 E F1 3.087(,t)C .587
+619.4 Q .588(gins with)-.15 F F2(dir)3.088 E F1 3.087(,t)C .587
(hat partial path name will be stripped of)-3.087 F 3.087(fb)-.25 G .587
-(efore writing, so \(for)-3.087 F -.15(ex)174 402.8 S 2.224
+(efore writing, so \(for)-3.087 F -.15(ex)174 631.4 S 2.224
(ample\) if the SafeFileEn).15 F 2.224(vironment v)-.4 F 2.225
(ariable is set to \231/safe\232 then aliases of)-.25 F 1.557(\231/safe/logs/\214le\232 and \231/logs/\214le\232 actually indicate the same \214le.)
-174 414.8 R(Additionally)6.556 E 4.056(,i)-.65 G(f)-4.056 E
-(this option is set,)174 426.8 Q F2(sendmail)2.5 E F1(refuses to deli)
+174 643.4 R(Additionally)6.556 E 4.056(,i)-.65 G(f)-4.056 E
+(this option is set,)174 655.4 Q F2(sendmail)2.5 E F1(refuses to deli)
2.5 E -.15(ve)-.25 G 2.5(rt).15 G 2.5(os)-2.5 G(ymbolic links.)-2.5 E
-(Sa)102 443 Q -.15(ve)-.2 G 10.41(FromLine [f]).15 F(Sa)4.908 E 2.708
--.15(ve U)-.2 H 2.408
-(nix-style \231From\232 lines at the front of headers.).15 F 2.409
-(Normally the)7.409 F 4.909(ya)-.15 G(re)-4.909 E
-(assumed redundant and discarded.)174 455 Q(SendMIMEErrors)102 471.2 Q
-.815([j] If set, send error messages in MIME format \(see RFC1521 and RFC1344 for)
-174 483.2 R 2.914(details\). If)174 495.2 R(disabled,)2.914 E F2
-(sendmail)2.914 E F1 .415(will not return the DSN k)2.914 F -.15(ey)-.1
-G -.1(wo).15 G .415(rd in response to an).1 F 1.731
-(EHLO and will not do Deli)174 507.2 R -.15(ve)-.25 G 1.731
-(ry Status Noti\214cation processing as described in).15 F(RFC1891.)174
-519.2 Q(ServiceSwitchFile=)102 535.4 Q F2(\214lename)A F1 1.532([no short name] If your host operating system has a service switch abstraction)
-174 547.4 R .003(\(e.g., /etc/nsswitch.conf on Solaris or /etc/svc.conf on Ultrix and DEC OSF/1\) that)
-174 559.4 R .814(service will be consulted and this option is ignored.)
-174 571.4 R .814(Otherwise, this is the name)5.814 F 1.083
-(of a \214le that pro)174 583.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 595.4 R 3.57(ords. The)-.1 F(\214rst)3.57 E -.1(wo)174 607.4 S 1.364
-(rd is the service name, and follo).1 F 1.363(wing w)-.25 F 1.363
-(ords are service types.)-.1 F 1.363(The services)6.363 F(that)174 619.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)-6.61 F 1.755(\231dns\232, \231nis\232, \231nisplus\232, or \231\214les\232 \(with the ca)
-174 631.4 R -.15(ve)-.2 G 1.754(at that the appropriate support).15 F
-.791(must be compiled in before the service can be referenced\).)174
-643.4 R .791(If ServiceSwitchFile)5.791 F 1.303
-(is not speci\214ed, it def)174 655.4 R 1.303
-(aults to /etc/service.switch.)-.1 F 1.303(If that \214le does not e)
-6.303 F 1.303(xist, the)-.15 F(def)174 667.4 Q(ault switch is:)-.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
+.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
@@ -4223,372 +4486,391 @@ 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 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(20)93.6 689.2 Q/F5 8/Times-Roman@0 SF(When running as a daemon, it changes to this user after accepting a connection b)
+/Times-Roman@0 SF(22)93.6 689.2 Q/F5 8/Times-Roman@0 SF(When running as a daemon, it changes to this user after accepting a connection b)
3.2 I(ut before reading an)-.16 E(y)-.12 E F3(SMTP)2 E F5(commands.)2 E
EP
-%%Page: 49 45
+%%Page: 53 49
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-49)195.86 E/F1 10/Times-Roman@0 SF 38.6(aliases \214les)214 96 R
-44.7(hosts dns)214 108 R(nis \214les)2.5 E(The def)174 124.2 Q
-(ault \214le is \231/etc/service.switch\232.)-.1 E(Se)102 140.4 Q -.15
-(ve)-.25 G 12.12(nBitInput [7]).15 F .321(Strip input to se)2.821 F -.15
-(ve)-.25 G 2.821(nb).15 G .322(its for compatibility with old systems.)
--2.821 F .322(This shouldn')5.322 F 2.822(tb)-.18 G(e)-2.822 E
-(necessary)174 152.4 Q(.)-.65 E(SingleLineFromHeader)102 168.6 Q .959
-([no short name] If set, From: lines that ha)174 180.6 R 1.258 -.15
+(SMM:08-53)195.86 E/F1 10/Times-Roman@0 SF(Sa)102 96 Q -.15(ve)-.2 G
+10.41(FromLine [f]).15 F(Sa)4.908 E 2.708 -.15(ve U)-.2 H 2.408
+(nix-style \231From\232 lines at the front of headers.).15 F 2.409
+(Normally the)7.409 F 4.909(ya)-.15 G(re)-4.909 E
+(assumed redundant and discarded.)174 108 Q(SendMIMEErrors)102 124.2 Q
+.815([j] If set, send error messages in MIME format \(see RFC2045 and RFC1344 for)
+174 136.2 R 2.914(details\). If)174 148.2 R(disabled,)2.914 E/F2 10
+/Times-Italic@0 SF(sendmail)2.914 E F1 .415(will not return the DSN k)
+2.914 F -.15(ey)-.1 G -.1(wo).15 G .415(rd in response to an).1 F 1.731
+(EHLO and will not do Deli)174 160.2 R -.15(ve)-.25 G 1.731
+(ry Status Noti\214cation processing as described in).15 F(RFC1891.)174
+172.2 Q(ServiceSwitchFile=)102 188.4 Q F2(\214lename)A F1 1.532([no short name] If your host operating system has a service switch abstraction)
+174 200.4 R .003(\(e.g., /etc/nsswitch.conf on Solaris or /etc/svc.conf on Ultrix and DEC OSF/1\) that)
+174 212.4 R .814(service will be consulted and this option is ignored.)
+174 224.4 R .814(Otherwise, this is the name)5.814 F 1.083
+(of a \214le that pro)174 236.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 248.4 R 3.57(ords. The)-.1 F(\214rst)3.57 E -.1(wo)174 260.4 S 1.364
+(rd is the service name, and follo).1 F 1.363(wing w)-.25 F 1.363
+(ords are service types.)-.1 F 1.363(The services)6.363 F(that)174 272.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)-6.61 F 1.755(\231dns\232, \231nis\232, \231nisplus\232, or \231\214les\232 \(with the ca)
+174 284.4 R -.15(ve)-.2 G 1.754(at that the appropriate support).15 F
+.791(must be compiled in before the service can be referenced\).)174
+296.4 R .791(If ServiceSwitchFile)5.791 F 1.303
+(is not speci\214ed, it def)174 308.4 R 1.303
+(aults to /etc/service.switch.)-.1 F 1.303(If that \214le does not e)
+6.303 F 1.303(xist, the)-.15 F(def)174 320.4 Q(ault switch is:)-.1 E
+38.6(aliases \214les)214 336.6 R 44.7(hosts dns)214 348.6 R(nis \214les)
+2.5 E(The def)174 364.8 Q(ault \214le is \231/etc/service.switch\232.)
+-.1 E(Se)102 381 Q -.15(ve)-.25 G 12.12(nBitInput [7]).15 F .321
+(Strip input to se)2.821 F -.15(ve)-.25 G 2.821(nb).15 G .322
+(its for compatibility with old systems.)-2.821 F .322(This shouldn')
+5.322 F 2.822(tb)-.18 G(e)-2.822 E(necessary)174 393 Q(.)-.65 E
+(SingleLineFromHeader)102 409.2 Q .959
+([no short name] If set, From: lines that ha)174 421.2 R 1.258 -.15
(ve e)-.2 H .958(mbedded ne).15 F .958(wlines are unwrapped)-.25 F .242
-(onto one line.)174 192.6 R .243
+(onto one line.)174 433.2 R .243
(This is to get around a botch in Lotus Notes that apparently cannot)
-5.242 F(understand le)174 204.6 Q -.05(ga)-.15 G
-(lly wrapped RFC822 headers.).05 E(SingleThreadDeli)102 220.8 Q -.15(ve)
+5.242 F(understand le)174 445.2 Q -.05(ga)-.15 G
+(lly wrapped RFC822 headers.).05 E(SingleThreadDeli)102 461.4 Q -.15(ve)
-.25 G(ry).15 E .334([no short name] If set, a client machine will ne)
-174 232.8 R -.15(ve)-.25 G 2.833(rt).15 G .333(ry to open tw)-2.833 F
+174 473.4 R -.15(ve)-.25 G 2.833(rt).15 G .333(ry to open tw)-2.833 F
2.833(oS)-.1 G .333(MTP connec-)-2.833 F 1.711(tions to a single serv)
-174 244.8 R 1.712(er machine at the same time, e)-.15 F -.15(ve)-.25 G
+174 485.4 R 1.712(er machine at the same time, e)-.15 F -.15(ve)-.25 G
4.212(ni).15 G 4.212(nd)-4.212 G(if)-4.212 E 1.712(ferent processes.)
--.25 F .953(That is, if another)174 256.8 R/F2 10/Times-Italic@0 SF
-(sendmail)3.452 E F1 .952(is already talking to some host a ne)3.452 F
-(w)-.25 E F2(sendmail)3.452 E F1(will)3.452 E 2.387
-(not open another connection.)174 268.8 R 2.387(This property is of mix)
-7.387 F 2.388(ed v)-.15 F 2.388(alue; although this)-.25 F .386(reduces the load on the other machine, it can cause mail to be delayed \(for e)
-174 280.8 R(xam-)-.15 E .718(ple, if one)174 292.8 R F2(sendmail)3.218 E
+-.25 F .953(That is, if another)174 497.4 R F2(sendmail)3.452 E F1 .952
+(is already talking to some host a ne)3.452 F(w)-.25 E F2(sendmail)3.452
+E F1(will)3.452 E 2.387(not open another connection.)174 509.4 R 2.387
+(This property is of mix)7.387 F 2.388(ed v)-.15 F 2.388
+(alue; although this)-.25 F .386(reduces the load on the other machine, it can cause mail to be delayed \(for e)
+174 521.4 R(xam-)-.15 E .718(ple, if one)174 533.4 R F2(sendmail)3.218 E
F1 .718(is deli)3.218 F -.15(ve)-.25 G .718(ring a huge message, other)
.15 F F2(sendmail)3.219 E F1 3.219(sw)C(on')-3.319 E 3.219(tb)-.18 G
-3.219(ea)-3.219 G(ble)-3.219 E 1.543(to send e)174 304.8 R -.15(ve)-.25
+3.219(ea)-3.219 G(ble)-3.219 E 1.543(to send e)174 545.4 R -.15(ve)-.25
G 4.043(ns).15 G 1.543(mall messages\).)-4.043 F 1.542
(Also, it requires another \214le descriptor \(for the)6.543 F .996
-(lock \214le\) per connection, so you may ha)174 316.8 R 1.297 -.15
+(lock \214le\) per connection, so you may ha)174 557.4 R 1.297 -.15
(ve t)-.2 H 3.497(or).15 G .997(educe the)-3.497 F F0
-(ConnectionCacheSize)3.497 E F1 .235(option to a)174 328.8 R -.2(vo)-.2
+(ConnectionCacheSize)3.497 E F1 .235(option to a)174 569.4 R -.2(vo)-.2
G .235(id running out of per).2 F .234(-process \214le descriptors.)-.2
-F .234(Requires the)5.234 F F0(HostSta-)2.734 E(tusDir)174 340.8 Q
-(ectory)-.18 E F1(option.)2.5 E(SmtpGreetingMessage=)102 357 Q F2(messa)
-A -.1(ge)-.1 G F1 .344
-([$e macro] The message printed when the SMTP serv)174 369 R .345
+F .234(Requires the)5.234 F F0(HostSta-)2.734 E(tusDir)174 581.4 Q
+(ectory)-.18 E F1(option.)2.5 E(SmtpGreetingMessage=)102 597.6 Q F2
+(messa)A -.1(ge)-.1 G F1 .344
+([$e macro] The message printed when the SMTP serv)174 609.6 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 381 Q(StatusFile=)102 397.2 Q F2
+(Sendmail $v ready at $b\232.)174 621.6 Q(StatusFile=)102 637.8 Q F2
(\214le)A F1 .3([S] Log summary statistics in the named)14.13 F F2
(\214le)2.799 E F1 5.299(.I)C 2.799(fn)-5.299 G .299
-(ot set, no summary statistics are)-2.799 F(sa)174 409.2 Q -.15(ve)-.2 G
+(ot set, no summary statistics are)-2.799 F(sa)174 649.8 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)-3.775 G 3.775(ize. It)-3.775 F 1.275(can be printed using the)
-3.775 F F2(mailstats)3.775 E F1(\(8\))A(program.)174 421.2 Q 28.4
-(SuperSafe [s])102 437.4 R .373(Be super)2.873 F .373
+3.775 F F2(mailstats)3.775 E F1(\(8\))A(program.)174 661.8 Q 28.4
+(SuperSafe [s])102 678 R .373(Be super)2.873 F .373
(-safe when running things, i.e., al)-.2 F -.1(wa)-.1 G .372
(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 449.4 R -.15(ve)-.25 G
-(ry).15 E(.)-.65 E F2(Sendmail)5.697 E F1(al)3.198 E -.1(wa)-.1 G .698
-(ys instantiates the).1 F 2.688
-(queue \214le before returning control the client under an)174 461.4 R
-5.188(yc)-.15 G 5.188(ircumstances. This)-5.188 F(should really)174
-473.4 Q F2(always)2.5 E F1(be set.)2.5 E -.7(Te)102 489.6 S(mpFileMode=)
-.7 E F2(mode)A F1 .331([F] The \214le mode for queue \214les.)174 501.6
-R .331(It is interpreted in octal by def)5.331 F 2.832(ault. Def)-.1 F
-.332(aults to)-.1 F(0600.)174 513.6 Q -.35(Ti)102 529.8 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 541.8 R 2.796
-(alues. The)-.25 F .296(actual timeout is indi-)2.796 F 1.678
-(cated by the)174 553.8 R F2(type)4.178 E F1 6.678(.T)C 1.678
-(he recognized timeouts and their def)-6.678 F 1.679(ault v)-.1 F 1.679
-(alues, and their)-.25 F(minimum v)174 565.8 Q
-(alues speci\214ed in RFC 1123 section 5.3.2 are:)-.25 E EP
-%%Page: 50 46
+(if you are going to attempt immediate deli)174 690 R -.15(ve)-.25 G(ry)
+.15 E(.)-.65 E F2(Sendmail)5.697 E F1(al)3.198 E -.1(wa)-.1 G .698
+(ys instantiates the).1 F 1.509
+(queue \214le before returning control to the client under an)174 702 R
+4.009(yc)-.15 G 4.009(ircumstances. This)-4.009 F(should really)174 714
+Q F2(always)2.5 E F1(be set.)2.5 E EP
+%%Page: 54 50
%%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 23.6
-(initial w)214 96 R(ait for initial greeting message [5m, 5m])-.1 E
-29.72(helo reply)214 108 R(to HELO or EHLO command [5m, none])2.5 E
-29.16(mail reply)214 120 R(to MAIL command [10m, 5m])2.5 E 31.39
-(rcpt reply)214 132 R(to RCPT command [1h, 5m])2.5 E 16.94
-(datainit reply)214 144 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 156 R
-(block read [1h, 3m])2.5 E 12.5(data\214nal reply)214 168 R
+/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 -.7(Te)
+102 96 S(mpFileMode=).7 E/F2 10/Times-Italic@0 SF(mode)A F1 .331
+([F] The \214le mode for queue \214les.)174 108 R .331
+(It is interpreted in octal by def)5.331 F 2.832(ault. Def)-.1 F .332
+(aults to)-.1 F(0600.)174 120 Q -.35(Ti)102 136.2 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 148.2 R 2.796
+(alues. The)-.25 F .296(actual timeout is indi-)2.796 F 1.678
+(cated by the)174 160.2 R F2(type)4.178 E F1 6.678(.T)C 1.678
+(he recognized timeouts and their def)-6.678 F 1.679(ault v)-.1 F 1.679
+(alues, and their)-.25 F(minimum v)174 172.2 Q
+(alues speci\214ed in RFC 1123 section 5.3.2 are:)-.25 E 23.6(initial w)
+214 188.4 R(ait for initial greeting message [5m, 5m])-.1 E 29.72
+(helo reply)214 200.4 R(to HELO or EHLO command [5m, none])2.5 E 29.16
+(mail reply)214 212.4 R(to MAIL command [10m, 5m])2.5 E 31.39
+(rcpt reply)214 224.4 R(to RCPT command [1h, 5m])2.5 E 16.94
+(datainit reply)214 236.4 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 248.4 R
+(block read [1h, 3m])2.5 E 12.5(data\214nal reply)214 260.4 R
(to \214nal `)2.5 E(`.)-.74 E 1.48 -.74('' i)-.7 H 2.5(nd).74 G
-(ata [1h, 10m])-2.5 E 32.5(rset reply)214 180 R
-(to RSET command [5m, none])2.5 E 31.38(quit reply)214 192 R(to Q)2.5 E
-(UIT command [2m, none])-.1 E 28.05(misc reply)214 204 R
-(to NOOP and VERB commands [2m, none])2.5 E 26.94(ident IDENT)214 216 R
-(protocol timeout [30s, none])2.5 E 9.72(\214leopen\207 timeout)214 228
-R(on opening .forw)2.5 E(ard and :include: \214les [60s, none])-.1 E 2.5
-(command\207 command)214 240 R(read [1h, 5m])2.5 E(queuereturn\207ho)214
-252 Q 2.5(wl)-.25 G(ong until a message is returned [5d, 5d])-2.5 E
-(queue)214 264 Q -.1(wa)-.25 G -1.58(rn\207 ho).1 F 2.5(wl)-.25 G
-(ong until a w)-2.5 E(arning is sent [none, none])-.1 E 2.49
-(hoststatus\207 ho)214 276 R 2.5(wl)-.25 G(ong until host status is `)
--2.5 E(`stale')-.74 E 2.5('[)-.74 G(30m, none])-2.5 E .893(All b)174
-292.2 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)-5.892 G .892(he message is)-3.392 F .273(submitted using the)
-174 304.2 R/F2 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 316.2 Q F2(NO)3.038 E
+(ata [1h, 10m])-2.5 E 32.5(rset reply)214 272.4 R
+(to RSET command [5m, none])2.5 E 31.38(quit reply)214 284.4 R(to Q)2.5
+E(UIT command [2m, none])-.1 E 28.05(misc reply)214 296.4 R
+(to NOOP and VERB commands [2m, none])2.5 E 26.94(ident IDENT)214 308.4
+R(protocol timeout [30s, none])2.5 E 9.72(\214leopen\207 timeout)214
+320.4 R(on opening .forw)2.5 E(ard and :include: \214les [60s, none])-.1
+E 2.5(command\207 command)214 332.4 R(read [1h, 5m])2.5 E
+(queuereturn\207ho)214 344.4 Q 2.5(wl)-.25 G
+(ong until a message is returned [5d, 5d])-2.5 E(queue)214 356.4 Q -.1
+(wa)-.25 G -1.58(rn\207 ho).1 F 2.5(wl)-.25 G(ong until a w)-2.5 E
+(arning is sent [none, none])-.1 E 2.49(hoststatus\207 ho)214 368.4 R
+2.5(wl)-.25 G(ong until host status is `)-2.5 E(`stale')-.74 E 2.5('[)
+-.74 G(30m, none])-2.5 E .893(All b)174 384.6 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)-5.892 G .892(he message is)-3.392 F .273
+(submitted using the)174 396.6 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 408.6 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 message; the)
-174 328.2 R(y)-.15 E 1.9(must be one of \231ur)174 340.2 R 1.9
+174 420.6 R(y)-.15 E 1.9(must be one of \231ur)174 432.6 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 352.2 R .251
+(\(indicating a zero precedence\), or \231non-ur)174 444.6 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 364.2 S 4.423(re).15 G 1.923
+-.25 H(recedences\).).15 E -.15(Fo)174 456.6 S 4.423(re).15 G 1.923
(xample, setting \231T)-4.573 F(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 376.2 R .223(gent messages only to one hour)-.18 F 5.223(.T)
+(for ur)174 468.6 R .223(gent messages only to one hour)-.18 F 5.223(.T)
-.55 G .223(he def)-5.223 F .223(ault if no precedence is indicated is)
--.1 F(to set the timeout for all precedences.)174 388.2 Q -.35(Ti)102
-404.4 S(meZoneSpec=).35 E/F3 10/Times-Italic@0 SF(tzinfo)A F1 .218
-([t] Set the local time zone info to)174 416.4 R F3(tzinfo)2.718 E F1
+-.1 F(to set the timeout for all precedences.)174 480.6 Q -.35(Ti)102
+496.8 S(meZoneSpec=).35 E F2(tzinfo)A F1 .218
+([t] Set the local time zone info to)174 508.8 R F2(tzinfo)2.718 E F1
2.718<8a66>2.718 G .218(or e)-2.718 F .218(xample, \231PST8PDT\232.)-.15
F(Actually)5.217 E 2.717(,i)-.65 G(f)-2.717 E 1.345
-(this is not set, the TZ en)174 428.4 R 1.346(vironment v)-.4 F 1.346
+(this is not set, the TZ en)174 520.8 R 1.346(vironment v)-.4 F 1.346
(ariable is cleared \(so the system def)-.25 F 1.346(ault is)-.1 F .209
-(used\); if set b)174 440.4 R .208(ut null, the user')-.2 F 2.708(sT)
+(used\); if set b)174 532.8 R .208(ut null, the user')-.2 F 2.708(sT)
-.55 G 2.708(Zv)-2.708 G .208
(ariable is used, and if set and non-null the TZ)-2.958 F -.25(va)174
-452.4 S(riable is set to this v).25 E(alue.)-.25 E -.35(Tr)102 468.6 S
+544.8 S(riable is set to this v).25 E(alue.)-.25 E -.35(Tr)102 561 S
5.96(yNullMXList [w]).35 F .114
(If this system is the \231best\232 \(that is, lo)2.613 F .114
(west preference\) MX for a gi)-.25 F -.15(ve)-.25 G 2.614(nh).15 G .114
(ost, its)-2.614 F 1.168(con\214guration rules should normally detect this situation and treat that condition)
-174 480.6 R .257(specially by forw)174 492.6 R .258
+174 573 R .257(specially by forw)174 585 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 504.6 Q(we)-.25 E -.15(ve)-.25 G
-1.686 -.4(r, i).15 H 3.386(ns).4 G .886
-(ome cases \(such as Internet \214re)-3.386 F -.1(wa)-.25 G .886
-(lls\) you may w).1 F .885(ant to try to con-)-.1 F .07
+-.15(ve)-.25 G -.55(r.).15 G(Ho)174 597 Q(we)-.25 E -.15(ve)-.25 G 1.686
+-.4(r, i).15 H 3.386(ns).4 G .886(ome cases \(such as Internet \214re)
+-3.386 F -.1(wa)-.25 G .886(lls\) you may w).1 F .885
+(ant to try to con-)-.1 F .07
(nect directly to that host as though it had no MX records at all.)174
-516.6 R .07(Setting this option)5.07 F(causes)174 528.6 Q F3(sendmail)
-3.014 E F1 .514(to try this.)3.014 F .514(The do)5.514 F .514
-(wnside is that errors in your con\214guration are)-.25 F(lik)174 540.6
-Q 2.116(ely to be diagnosed as \231host unkno)-.1 F 2.116
+609 R .07(Setting this option)5.07 F(causes)174 621 Q F2(sendmail)3.014
+E F1 .514(to try this.)3.014 F .514(The do)5.514 F .514
+(wnside is that errors in your con\214guration are)-.25 F(lik)174 633 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 552.6 Q(This option is disrecommended.)5
-E(UnixFromLine=)102 568.8 Q F3(fr)A(omline)-.45 E F1 .236
-([$l macro] De\214nes the format used when)174 580.8 R F3(sendmail)2.736
+(something more meaningful.)174 645 Q(This option is disrecommended.)5 E
+(UnixFromLine=)102 661.2 Q F2(fr)A(omline)-.45 E F1 .236
+([$l macro] De\214nes the format used when)174 673.2 R F2(sendmail)2.736
E F1 .236(must add a UNIX-style From_)2.736 F 1.324
-(line \(that is, a line be)174 592.8 R 1.325
+(line \(that is, a line be)174 685.2 R 1.325
(ginning \231From<space>user\232\).)-.15 F(Def)6.325 E 1.325
-(aults to \231From $g)-.1 F($d\232.)6.325 E(Don')174 604.8 Q 2.646(tc)
+(aults to \231From $g)-.1 F($d\232.)6.325 E(Don')174 697.2 Q 2.646(tc)
-.18 G .146(hange this unless your system uses a dif)-2.646 F .146
-(ferent UNIX mailbox format \(v)-.25 F(ery)-.15 E(unlik)174 616.8 Q
-(ely\).)-.1 E(UnsafeGroupWrites)102 633 Q .211
-([no short name] If set, :include: and .forw)174 645 R .212
+(ferent UNIX mailbox format \(v)-.25 F(ery)-.15 E(unlik)174 709.2 Q
+(ely\).)-.1 E EP
+%%Page: 55 51
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-55)195.86 E/F1 10/Times-Roman@0 SF(UnsafeGroupWrites)102 96 Q
+.211([no short name] If set, :include: and .forw)174 108 R .212
(ard \214les that are group writable are con-)-.1 F .367
-(sidered \231unsafe\232, that is, the)174 657 R 2.867(yc)-.15 G .366
+(sidered \231unsafe\232, that is, the)174 120 R 2.867(yc)-.15 G .366
(annot reference programs or write directly to \214les.)-2.867 F -.8(Wo)
-174 669 S(rld writable :include: and .forw).8 E(ard \214les are al)-.1 E
--.1(wa)-.1 G(ys unsafe..).1 E(UseErrorsT)102 685.2 Q 21.15(o[)-.8 G .826
+174 132 S(rld writable :include: and .forw).8 E(ard \214les are al)-.1 E
+-.1(wa)-.1 G(ys unsafe..).1 E(UseErrorsT)102 148.2 Q 21.15(o[)-.8 G .826
(l] If there is an \231Errors-T)-21.15 F .826(o:\232 header)-.8 F 3.326
(,s)-.4 G .826(end error messages to the addresses listed)-3.326 F 3.135
-(there. The)174 697.2 R 3.135(yn)-.15 G .635(ormally go to the en)-3.135
+(there. The)174 160.2 R 3.135(yn)-.15 G .635(ormally go to the en)-3.135
F -.15(ve)-.4 G .635(lope sender).15 F 5.635(.U)-.55 G .634
-(se of this option causes)-5.635 F F3(send-)3.134 E(mail)174 709.2 Q F1
-(to violate RFC 1123.)2.5 E
-(This option is disrecommended and deprecated.)5 E EP
-%%Page: 51 47
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-51)195.86 E/F1 10/Times-Roman@0 SF(UserDatabaseSpec=)102 96 Q/F2
-10/Times-Italic@0 SF(udbspec)A F1
-([U] The user database speci\214cation.)174 108 Q 3.94
-(UserSubmission [no)102 124.2 R 1.369(short name] This is an initial submission directly from a Mail User Agent.)
+(se of this option causes)-5.635 F/F2 10/Times-Italic@0 SF(send-)3.134 E
+(mail)174 172.2 Q F1(to violate RFC 1123.)2.5 E
+(This option is disrecommended and deprecated.)5 E(UserDatabaseSpec=)102
+188.4 Q F2(udbspec)A F1([U] The user database speci\214cation.)174 200.4
+Q 3.94(UserSubmission [no)102 216.6 R 1.369(short name] This is an initial submission directly from a Mail User Agent.)
3.869 F .433(This can be set in the con\214guration \214le if you ha)174
-136.2 R .733 -.15(ve M)-.2 H -.4(UA).15 G 2.933(st).4 G .433(hat don')
+228.6 R .733 -.15(ve M)-.2 H -.4(UA).15 G 2.933(st).4 G .433(hat don')
-2.933 F 2.933(tp)-.18 G .433(ass the)-2.933 F F0<ad55>2.933 E F1 .37
-(\215ag or use the XUSR ESMTP e)174 148.2 R .371(xtension, b)-.15 F .371
-(ut some relayed mail may get inappro-)-.2 F(priately re)174 160.2 Q
-(written if you do.)-.25 E -1.11(Ve)102 176.4 S 37.29(rbose [v])1.11 F
+(\215ag or use the XUSR ESMTP e)174 240.6 R .371(xtension, b)-.15 F .371
+(ut some relayed mail may get inappro-)-.2 F(priately re)174 252.6 Q
+(written if you do.)-.25 E -1.11(Ve)102 268.8 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 188.4 Q F0(c)2.635 E F1
+(HoldExpensi)3.06 E -.1(ve)-.1 G F1(\(old)174 280.8 Q F0(c)2.635 E F1
2.635(\)a)C(nd)-2.635 E 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)-2.635 G .135
(hat all mail is deli)-2.635 F -.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 200.4 R -.15(ve)-.25 G
+(gle job so that you can see the entire deli)174 292.8 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 212.4 Q(ver)-.15 E F1(be set in the con\214guration \214le; it is intended for command line use only)
+(should)3.743 E F2(ne)174 304.8 Q(ver)-.15 E F1(be set in the con\214guration \214le; it is intended 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 228.6 R .109(ut most will cause)-.2 F F2(send-)2.609 E(mail)102
-240.6 Q F1 1.135(to relinquish its setuid permissions.)3.635 F 1.135
+102 321 R .109(ut most will cause)-.2 F F2(send-)2.609 E(mail)102 333 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 252.6 R -.15(ve)-.25 G .513
+([b], Deli)102 345 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)-3.014 F .514(oo [m], OldStyleHeaders)-.8 F
-.53([o], Pri)102 264.6 R -.25(va)-.25 G -.15(cy).25 G .53
-(Options [p], T).15 F .53(imeouts [r], SuperSafe [s], V)-.35 F .53
+.53([o], Pri)102 357 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 276.6 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 300.6 R 2.5<8a50>2.5 G -.18(re)-2.5 G
-(cedence De\214nitions).18 E F1 -1.11(Va)127 316.8 S .164
+E(enBitInput [7].)102 369 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 393 R 2.5<8a50>2.5 G -.18(re)-2.5 G
+(cedence De\214nitions).18 E F1 -1.11(Va)127 409.2 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 328.8 Q F0(P)142 345 Q F2
-(name)A F0(=)A F2(num)A F1 .384(When the)102 361.2 R F2(name)2.884 E F1
+(The syntax of this)5.164 F(\214eld is:)102 421.2 Q F0(P)142 437.4 Q F2
+(name)A F0(=)A F2(num)A F1 .384(When the)102 453.6 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)-5.383 F .85
-(mean higher precedence.)102 373.2 R .85(Numbers less than zero ha)5.85
+(mean higher precedence.)102 465.6 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 385.2 R 1.551(xpected to be used for)-.15 F<9962>102 397.2 Q .461
+102 477.6 R 1.551(xpected to be used for)-.15 F<9962>102 489.6 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)-3.112 F(precedences is:)102 409.2 Q
-(P\214rst-class=0)142 425.4 Q(Pspecial-deli)142 437.4 Q -.15(ve)-.25 G
-(ry=100).15 E(Plist=\25530)142 449.4 Q(Pb)142 461.4 Q(ulk=\25560)-.2 E
-(Pjunk=\255100)142 473.4 Q 1.059(People writing mailing list e)102 489.6
-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 501.6 Q F1
+(xample, our list of)-3.112 F(precedences is:)102 501.6 Q
+(P\214rst-class=0)142 517.8 Q(Pspecial-deli)142 529.8 Q -.15(ve)-.25 G
+(ry=100).15 E(Plist=\25530)142 541.8 Q(Pb)142 553.8 Q(ulk=\25560)-.2 E
+(Pjunk=\255100)142 565.8 Q 1.059(People writing mailing list e)102 582 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 594 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,)-3.69 F(gi)102 513.6 Q .599
-(ving it a def)-.25 F .598(ault precedence of zero.)-.1 F .598
-(This allo)5.598 F .598
+-.18 G 1.19(ecognize this name,)-3.69 F(gi)102 606 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
-525.6 Q 2.5(wv)-.25 G(ersions of)-2.65 E F2(sendmail)2.5 E F1(.)A F0 2.5
-(5.8. V)87 549.6 R 2.5<8a43>2.5 G(on\214guration V)-2.5 E(ersion Le)-1 E
--.1(ve)-.15 G(l).1 E F1 3.181 -.8(To p)127 565.8 T(ro).8 E 1.581
+618 Q 2.5(wv)-.25 G(ersions of)-2.65 E F2(sendmail)2.5 E F1(.)A F0 2.5
+(5.8. V)87 642 R 2.5<8a43>2.5 G(on\214guration V)-2.5 E(ersion Le)-1 E
+-.1(ve)-.15 G(l).1 E F1 3.181 -.8(To p)127 658.2 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
-577.8 R 1.11(ery basic semantics of the con\214guration \214le.)-.15 F
+670.2 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 589.8 R 2.533(,t)-.4 G(he)-2.533 E 2.533(yd)-.15 G
+(ports; rather)102 682.2 R 2.533(,t)-.4 G(he)-2.533 E 2.533(yd)-.15 G
.033(escribe compatibility features which will probably be remo)-2.533 F
-.15(ve)-.15 G 2.533(di).15 G 2.533(nf)-2.533 G .034(uture releases.)
--2.533 F F0(N.B.:)127 606 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
+-2.533 F F0(N.B.:)127 698.4 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-)-2.846 E
-(ple, as of this writing v)102 618 Q
+(ple, as of this writing v)102 710.4 Q
(ersion 8 con\214g \214les \(speci\214cally)-.15 E 2.5(,8)-.65 G
-(.7\) used v)-2.5 E(ersion le)-.15 E -.15(ve)-.25 G 2.5(l6c).15 G
-(on\214gurations.)-2.5 E 1.102
-(\231Old\232 con\214guration \214les are de\214ned as v)127 634.2 R
-1.102(ersion le)-.15 F -.15(ve)-.25 G 3.602(lo).15 G 3.602(ne. V)-3.602
-F 1.102(ersion le)-1.11 F -.15(ve)-.25 G 3.602(lt).15 G 1.302 -.1
-(wo \214)-3.602 H 1.103(les mak).1 F 3.603(et)-.1 G(he)-3.603 E(follo)
-102 646.2 Q(wing changes:)-.25 E 12.5(\(1\) Host)107 662.4 R .727(name canoni\214cation \($[ ... $]\) appends a dot if the name is recognized; this gi)
+(.9\) used v)-2.5 E(ersion le)-.15 E -.15(ve)-.25 G 2.5(l8c).15 G
+(on\214gurations.)-2.5 E EP
+%%Page: 56 52
+%%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 1.102
+(\231Old\232 con\214guration \214les are de\214ned as v)127 96 R 1.102
+(ersion le)-.15 F -.15(ve)-.25 G 3.602(lo).15 G 3.602(ne. V)-3.602 F
+1.102(ersion le)-1.11 F -.15(ve)-.25 G 3.602(lt).15 G 1.302 -.1(wo \214)
+-3.602 H 1.103(les mak).1 F 3.603(et)-.1 G(he)-3.603 E(follo)102 108 Q
+(wing changes:)-.25 E 12.5(\(1\) Host)107 124.2 R .727(name canoni\214cation \($[ ... $]\) appends a dot if the name is recognized; this gi)
3.227 F -.15(ve)-.25 G 3.226(st).15 G(he)-3.226 E 1.974
-(con\214g \214le a w)133.66 674.4 R 1.974(ay of \214nding out if an)-.1
+(con\214g \214le a w)133.66 136.2 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)-4.475 F .739
-(\231host\232 map with the \231\255a.)133.66 686.4 R 5.739<9a8d>-.7 G
+(\231host\232 map with the \231\255a.)133.66 148.2 R 5.739<9a8d>-.7 G
.739(ag \212 you can reset it to an)-5.739 F .738
-(ything you prefer by declaring the)-.15 F(map e)133.66 698.4 Q
-(xplicitly)-.15 E(.\))-.65 E EP
-%%Page: 52 48
-%%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 12.5
-(\(2\) Def)107 96 R .384(ault host name e)-.1 F .385
+(ything you prefer by declaring the)-.15 F(map e)133.66 160.2 Q
+(xplicitly)-.15 E(.\))-.65 E 12.5(\(2\) Def)107 176.4 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-)-2.885 F .83
-(rations turned of)133.66 108 R 3.33(fd)-.25 G .83(omain e)-3.33 F .83
+(rations turned of)133.66 188.4 R 3.33(fd)-.25 G .83(omain e)-3.33 F .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)-2.9 H .4
+F .4(points in processing.)133.66 200.4 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)-2.9 H .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
+(to indicate that the name is already canonical.)133.66 212.4 Q 12.5
+(\(3\) Local)107 228.6 R .072
(names that are not aliases are passed through a ne)2.572 F 2.572(wd)
-.25 G .072(istinguished ruleset \214v)-2.572 F .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(be used to append a local relay)133.66 240.6 R 6.426(.T)-.65 G
1.426(his beha)-6.426 F 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
+133.66 252.6 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
+(of \231vikki\232 will be passed through ruleset \214v)133.66 264.6 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
+(`@' stripped, will not be passed through ruleset \214v)133.66 276.6 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
+(as the prior e)133.66 288.6 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
+-.15 E .136(where mail sent to \231vikki\232 w)133.66 300.6 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
+(ut mail sent to \231vikki@localhost\232)-.2 F -.1(wa)133.66 312.6 S 2.5
(sd).1 G(eli)-2.5 E -.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
+127 328.8 S 1.382(rsion le)1.11 F -.15(ve)-.25 G 3.882(lt).15 G 1.382
(hree \214les allo)-3.882 F 3.882(w#i)-.25 G 1.382
(nitiated comments on all lines.)-3.882 F 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
+340.8 Q -1.11(Ve)127 357 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)-3.708 F -.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-)-3.707 F(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)
+(hree for historical rea-)-3.707 F(sons.)102 369 Q -1.11(Ve)127 385.2 S
+1.234(rsion le)1.11 F -.15(ve)-.25 G 3.734<6c8c>.15 G 1.534 -.15(ve c)
-3.734 H 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
+(to be just the \214rst)3.734 F(component of the hostname.)102 397.2 Q
+-1.11(Ve)127 413.4 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)-4.089 F 4.088(yo)-.15 G
4.088(ft)-4.088 G 1.588(he local processing options \(such as)-4.088 F
-.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.)-3.845 F(Le)6.345 E
+.48(aliasing and matching the be)102 425.4 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 437.4 R -.15(ve)-.15
+G 3.845(rt).15 G 1.345(he special local processing.)-3.845 F(Le)6.345 E
-.15(ve)-.25 G 3.845(ls).15 G 1.344
(ix con\214guration \214les may also use)-3.845 F 1.221
-(long option names.)102 369 R(The)6.221 E F0(ColonOkInAddr)3.721 E F1
+(long option names.)102 449.4 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\))-3.722 F(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; the con\214guration \214le requires some additional)
+(olons in the local-part of addresses\))-3.722 F(def)102 461.4 Q(aults)
+-.1 E F0(on)3.44 E F1 .94(for lo)3.44 F .94(wer numbered con\214guration \214les; the 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)-2.677 E F0(/)2.677 E/F2 10
-/Times-Italic@0 SF(vendor)A F1 .178
+473.4 Q -1.11(Ve)127 489.6 S 1.97(rsion le)1.11 F -.15(ve)-.25 G 4.47
+(ls).15 G -2.15 -.25(ev e)-4.47 H 4.47(nc).25 G 1.97
+(on\214guration \214les used ne)-4.47 F 4.47(wo)-.25 G 1.97
+(ption names to replace old macros \()-4.47 F F0($e)A F1(became)102
+501.6 Q F0(SmtpGr)4.993 E(eeetingMessage)-.18 E F1(,)A F0($l)4.993 E F1
+(became)4.993 E F0(UnixFr)4.993 E(omLine)-.18 E F1 4.992(,a)C(nd)-4.992
+E F0($o)4.992 E F1(became)4.992 E F0(OperatorChars)4.992 E F1(.)A .086
+(Also, prior to v)102 513.6 R .086(ersion se)-.15 F -.15(ve)-.25 G .086
+(n, the).15 F F0(F=q)2.586 E F1 .087
+(\215ag \(use 250 instead of 252 return v)2.586 F .087(alue for)-.25 F
+/F2 9/Times-Roman@0 SF .087(SMTP VRFY)2.587 F F1(com-)2.587 E(mands\) w)
+102 525.6 Q(as assumed.)-.1 E -1.11(Ve)127 541.8 S(rsion le)1.11 E -.15
+(ve)-.25 G 2.5(le).15 G(ight con\214guration \214les allo)-2.5 E(w)-.25
+E F0($#)2.5 E F1(on the left hand side of ruleset lines.)2.5 E(The)127
+558 Q F0(V)2.678 E F1 .178(line may ha)2.678 F .478 -.15(ve a)-.2 H
+2.677(no).15 G(ptional)-2.677 E F0(/)2.677 E/F3 10/Times-Italic@0 SF
+(vendor)A F1 .177
(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(21)-4 I F1 5.866(.Y)4 K .866(ou may use \231/Berk)
--6.966 F(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)-2.5 E 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)-2.75 E 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)-6.889 E 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)-3.291 F .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(The)127 644.6 Q F2(ar)4.064 E
-(guments)-.37 E F1 1.564(are passed to the map for arbitrary use.)4.064
-F 1.563(Most map classes can interpolate)6.563 F .882(these ar)102 656.6
-R .882(guments into their v)-.18 F .882(alues using the syntax \231%)
--.25 F F2(n)A F1 3.382<9a28>C(where)-3.382 E F2(n)3.382 E F1 .883
-(is a digit\) to indicate the corre-)3.382 F(sponding)102 668.6 Q F2(ar)
-2.5 E(gument)-.37 E F1 5(.A)C -.18(rg)-5 G
-(ument \231%0\232 indicates the database k).18 E -.15(ey)-.1 G 5(.F)-.5
-G(or e)-5.15 E(xample, the rule)-.15 E .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
+.866(tions speci\214c to a particular v)102 572 R(endor)-.15 E/F4 7
+/Times-Roman@0 SF(23)-4 I F1 5.866(.Y)4 K .866(ou may use \231/Berk)
+-6.966 F(ele)-.1 E .865(y\232 to emphasize that this con\214gura-)-.15 F
+(tion \214le uses the Berk)102 584 Q(ele)-.1 E 2.5(yd)-.15 G(ialect of)
+-2.5 E F3(sendmail)2.5 E F1(.)A F0 2.5(5.9. K)87 608 R 2.5<8a4b>2.5 G
+(ey File Declaration)-2.75 E F1
+(Special maps can be de\214ned using the line:)127 624.2 Q
+(Kmapname mapclass ar)142 640.4 Q(guments)-.18 E(The)102 656.6 Q F3
+(mapname)2.75 E F1 .251
+(is the handle by which this map is referenced in the re)2.75 F .251
+(writing rules.)-.25 F(The)5.251 E F3(mapclass)2.751 E F1(is)2.751 E
+1.889(the name of a type of map; these are compiled in to)102 668.6 R F3
+(sendmail)4.389 E F1 6.888(.T)C(he)-6.888 E F3(ar)4.388 E(guments)-.37 E
+F1 1.888(are interpreted)4.388 F .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
@@ -4596,1384 +4878,1178 @@ DL 108 678.2 104 678.2 DL 112 678.2 108 678.2 DL 116 678.2 112 678.2 DL
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(21)93.6 688.6 Q/F5 8
+678.2 212 678.2 DL/F5 5/Times-Roman@0 SF(23)93.6 688.6 Q/F6 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
+(endors by editing the routine)-.12 F/F7 8/Times-Italic@0 SF(setvendor)
+2.214 E F6(in)2.214 E F7(conf)72 701.4 Q(.c)-.12 E F6 4(.P)C
(lease send e-mail to sendmail@Sendmail.ORG to re)-4 E(gister your v)
-.12 E(endor dialect.)-.12 E EP
-%%Page: 53 49
+%%Page: 57 53
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-53)195.86 E/F1 10/Times-Roman@0 SF(R$\255 ! $+)142 96 Q
+(SMM:08-57)195.86 E/F1 10/Times-Roman@0 SF .79
+(depending on the class; typically)102 96 R 3.29(,t)-.65 G .791(here w)
+-3.29 F .791(ould be a single ar)-.1 F .791
+(gument naming the \214le containing the)-.18 F(map.)102 108 Q
+(Maps are referenced using the syntax:)127 124.2 Q($\()142 140.4 Q/F2 10
+/Times-Italic@0 SF(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 .641
+(where either or both of the)102 156.6 R F2(ar)3.141 E(guments)-.37 E F1
+(or)3.141 E F2(default)3.141 E F1 .64(portion may be omitted.)3.141 F
+(The)5.64 E F2 .64($@ ar)3.14 F(guments)-.37 E F1(may)3.14 E 1.276
+(appear more than once.)102 168.6 R 1.276(The indicated)6.276 F F2 -.1
+(ke)3.776 G(y)-.2 E F1(and)3.776 E F2(ar)3.776 E(guments)-.37 E F1 1.277
+(are passed to the appropriate mapping)3.777 F 3.253(function. If)102
+180.6 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 192.6 Q F2
+(default)2.5 E F1(replaces the input.)2.5 E
+(Otherwise, the input is unchanged.)5 E(The)127 208.8 Q F2(ar)4.063 E
+(guments)-.37 E F1 1.563(are passed to the map for arbitrary use.)4.063
+F 1.564(Most map classes can interpolate)6.564 F .883(these ar)102 220.8
+R .883(guments into their v)-.18 F .883(alues using the syntax \231%)
+-.25 F F2(n)A F1 3.382<9a28>C(where)-3.382 E F2(n)3.382 E F1 .882
+(is a digit\) to indicate the corre-)3.382 F(sponding)102 232.8 Q F2(ar)
+2.5 E(gument)-.37 E F1 5(.A)C -.18(rg)-5 G
+(ument \231%0\232 indicates the database k).18 E -.15(ey)-.1 G 5(.F)-.5
+G(or e)-5.15 E(xample, the rule)-.15 E(R$\255 ! $+)142 249 Q
($: $\(uucp $1 $@ $2 $: %1 @ %0 . UUCP $\))71.72 E 1.269(Looks up the UUCP name in a \(user de\214ned\) UUCP map; if not found it turns it into \231.UUCP\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(Note that)102 168.6 Q/F2 10/Times-Italic@0 SF
-(default)2.5 E F1(clauses ne)2.5 E -.15(ve)-.25 G 2.5(rd).15 G 2.5(ot)
--2.5 G(his mapping.)-2.5 E .741(The b)127 184.8 R .741(uilt in map with both name and class \231host\232 is the host name canonicalization lookup.)
--.2 F(Thus, the syntax:)102 196.8 Q($\(host)142 213 Q F2(hostname)2.5 E
-F1($\))A(is equi)102 229.2 Q -.25(va)-.25 G(lent to:).25 E($[)142 245.4
-Q F2(hostname)A F1($])A(There are man)127 265.8 Q 2.5(yd)-.15 G
-(e\214ned classes.)-2.5 E 51.72(dbm Database)102 282 R 1.623
+102 265.2 R 2.5(form. The)102 277.2 R
+(database might contain records lik)2.5 E(e:)-.1 E(decv)142 293.4 Q
+77.43(ax %1@%0.DEC.COM)-.25 F 72.19(research %1@%0.A)142 305.4 R(TT)
+-1.11 E(.COM)-.74 E(Note that)102 321.6 Q F2(default)2.5 E F1
+(clauses ne)2.5 E -.15(ve)-.25 G 2.5(rd).15 G 2.5(ot)-2.5 G
+(his mapping.)-2.5 E .742(The b)127 337.8 R .741(uilt in map with both name and class \231host\232 is the host name canonicalization lookup.)
+-.2 F(Thus, the syntax:)102 349.8 Q($\(host)142 366 Q F2(hostname)2.5 E
+F1($\))A(is equi)102 382.2 Q -.25(va)-.25 G(lent to:).25 E($[)142 398.4
+Q F2(hostname)A F1($])A(There are man)127 418.8 Q 2.5(yd)-.15 G
+(e\214ned classes.)-2.5 E 51.72(dbm Database)102 435 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 294 Q F1
-(de\214ned.)2.5 E 49.51(btree Database)102 310.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)-3.785 F(.)-.65 E F2(Send-)
-6.285 E(mail)174 322.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 338.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)-2.622 F(.)-.65 E F2(Sendmail)
-5.121 E F1(must be compiled with)174 350.4 Q F0(NEWDB)2.5 E F1
-(de\214ned.)2.5 E 57.83(nis NIS)102 366.6 R(lookups.)2.5 E F2(Sendmail)5
+E F1 1.623(must be compiled with)4.123 F F0(NDBM)174 447 Q F1
+(de\214ned.)2.5 E 49.51(btree Database)102 463.2 R .678
+(lookups using the btree interf)3.178 F .677(ace to the Berk)-.1 F(ele)
+-.1 E 3.177(yD)-.15 G 3.177(Bl)-3.177 G(ibrary)-3.177 E(.)-.65 E F2
+(Sendmail)5.677 E F1(must be compiled with)174 475.2 Q F0(NEWDB)2.5 E F1
+(de\214ned.)2.5 E 51.17(hash Database)102 491.4 R .828
+(lookups using the hash interf)3.328 F .828(ace to the Berk)-.1 F(ele)
+-.1 E 3.328(yD)-.15 G 3.329(Bl)-3.328 G(ibrary)-3.329 E(.)-.65 E F2
+(Sendmail)5.829 E F1(must be compiled with)174 503.4 Q F0(NEWDB)2.5 E F1
+(de\214ned.)2.5 E 57.83(nis NIS)102 519.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 382.8 R(lookups.)3.733 E F2(Sendmail)6.233 E F1 1.233
+(nisplus NIS+)102 535.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 394.8 R
+(ment is the name of the table to use for lookups, and the)174 547.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 406.8 Q .3 -.15(ey a)-.1 H(nd v).15 E
+2.995 F(used to set the k)174 559.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 423 R(lookups.)2.5 E F2(Sendmail)5 E F1
+(hesiod Hesiod)102 576 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 47.28
-(ldapx LD)102 439.2 R 1.783(AP X500 directory lookups.)-.4 F F2
-(Sendmail)6.783 E F1 1.784(must be compiled with)4.283 F F0(LD)4.284 E
-(APMAP)-.35 E F1 2.966(de\214ned. The)174 451.2 R .466
-(map supports most of the standard ar)2.966 F .465
-(guments and most of the com-)-.18 F(mand line ar)174 463.2 Q
+(ldapx LD)102 592.2 R 1.784(AP X500 directory lookups.)-.4 F F2
+(Sendmail)6.783 E F1 1.783(must be compiled with)4.283 F F0(LD)4.283 E
+(APMAP)-.35 E F1 2.965(de\214ned. The)174 604.2 R .465
+(map supports most of the standard ar)2.965 F .466
+(guments and most of the com-)-.18 F(mand line ar)174 616.2 Q
(guments of the)-.18 E F2(ldapsear)2.5 E -.15(ch)-.37 G F1(program.)2.65
-E 41.17(netinfo NeXT)102 479.4 R(NetInfo lookups.)2.5 E F2(Sendmail)5 E
+E 41.17(netinfo NeXT)102 632.4 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 495.6 Q 54.65(xt T)-.15 F -.15(ex)-.7 G 2.917<748c>.15 G .417
-(le lookups.)-2.917 F .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 507.6 Q F0<ad76>
+102 648.6 Q 54.65(xt T)-.15 F -.15(ex)-.7 G 2.918<748c>.15 G .418
+(le lookups.)-2.918 F .418(The format of the te)5.418 F .417
+(xt \214le is de\214ned by the)-.15 F F0<ad6b>2.917 E F1(\(k)2.917 E
+.717 -.15(ey \214)-.1 H .417(eld num-).15 F(ber\),)174 660.6 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 523.8 R
+(\(\214eld delimiter\) \215ags.)2.5 E 53.39(stab Internal)102 676.8 R
(symbol table lookups.)2.5 E(Used internally for aliasing.)5 E 38.38
-(implicit Really)102 540 R .546
+(implicit Really)102 693 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 552 Q
-(ault if no class is speci\214ed for alias \214les.)-.1 E 52.84
-(user Looks)102 568.2 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
+.546(ault lookups for alias)-.1 F(\214les, and is the def)174 705 Q
+(ault if no class is speci\214ed for alias \214les.)-.1 E EP
+%%Page: 58 54
+%%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/F1 10/Times-Roman@0 SF 52.84
+(user Looks)102 96 R .477(up users using)2.977 F/F2 10/Times-Italic@0 SF
+-.1(ge)2.977 G(tpwnam).1 E F1 2.977(\(3\). The)B F0<ad76>2.977 E F1 .476
(\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 580.2 R .142(xistence of)-.15 F 2.5(au)174 592.2 S(ser\).)-2.5 E
-52.83(host Canoni\214es)102 608.4 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)-2.7 F
-.2(er to \214nd)-.15 F(the canonical name for that host.)174 620.4 Q
-32.85(sequence The)102 636.6 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 648.6 Q .438
+174 108 R .142(xistence of)-.15 F 2.5(au)174 120 S(ser\).)-2.5 E 52.83
+(host Canoni\214es)102 136.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)-2.7 F .2
+(er to \214nd)-.15 F(the canonical name for that host.)174 148.2 Q 40.61
+(bestmx Returns)102 164.4 R 2.478(the best MX record for a host name gi)
+4.978 F -.15(ve)-.25 G 4.979(na).15 G 4.979(st)-4.979 G 2.479(he k)
+-4.979 F -.15(ey)-.1 G 7.479(.T)-.5 G 2.479(he current)-7.479 F .722
+(machine is al)174 176.4 R -.1(wa)-.1 G .721
+(ys preferred \212 that is, if the current machine is one of the hosts)
+.1 F .218(listed as a lo)174 188.4 R .219
+(west-preference MX record, then it will be guaranteed to be returned.)
+-.25 F .961(This can be used to \214nd out if this machine is the tar)
+174 200.4 R .961(get for an MX record, and)-.18 F .313
+(mail can be accepted on that basis.)174 212.4 R .313(If the)5.313 F F0
+<ad7a>2.813 E F1 .313(\215ag is gi)2.813 F -.15(ve)-.25 G .313
+(n, then all MX names are).15 F(returned, separated by the gi)174 224.4
+Q -.15(ve)-.25 G 2.5(nd).15 G(elimiter)-2.5 E(.)-.55 E 32.85
+(sequence The)102 240.6 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 252.6 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)-5.589 F(xample,)-.15 E
-(if the k)174 660.6 Q .3 -.15(ey d)-.1 H(e\214nition is:).15 E
-(Kmap1 ...)214 676.8 Q(Kmap2 ...)214 688.8 Q(Kseqmap sequence map1 map2)
-214 700.8 Q .968(then a lookup ag)174 717 R .968
+(if the k)174 264.6 Q .3 -.15(ey d)-.1 H(e\214nition is:).15 E
+(Kmap1 ...)214 280.8 Q(Kmap2 ...)214 292.8 Q(Kseqmap sequence map1 map2)
+214 304.8 Q .968(then a lookup ag)174 321 R .968
(ainst \231seqmap\232 \214rst does a lookup in map1.)-.05 F .968
-(If that is found, it)5.968 F EP
-%%Page: 54 50
-%%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
-(returns immediately)174 96 Q 5(.O)-.65 G(therwise, the same k)-5 E .3
--.15(ey i)-.1 H 2.5(su).15 G(sed for map2.)-2.5 E 43.39(switch Much)102
-112.2 R(lik)2.8 E 2.8(et)-.1 G .3(he \231sequence\232 map e)-2.8 F .301
+(If that is found, it)5.968 F(returns immediately)174 333 Q 5(.O)-.65 G
+(therwise, the same k)-5 E .3 -.15(ey i)-.1 H 2.5(su).15 G
+(sed for map2.)-2.5 E 43.39(switch Much)102 349.2 R(lik)2.8 E 2.8(et)-.1
+G .3(he \231sequence\232 map e)-2.8 F .301
(xcept that the order of maps is determined by the)-.15 F .392
-(service switch.)174 124.2 R .392(The ar)5.392 F .391
+(service switch.)174 361.2 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 136.2 R 3.993(wm)-.25 G(ap)-3.993 E 2.5(names. F)174 148.2 R(or e)
+174 373.2 R 3.993(wm)-.25 G(ap)-3.993 E 2.5(names. F)174 385.2 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 164.4 Q
-(together with the service switch entry:)174 180.6 Q 78.84(aliases nis)
-214 196.8 R(\214les)2.5 E 1.633(This causes a query ag)174 213 R 1.633
+E(Kali switch aliases)214 401.4 Q
+(together with the service switch entry:)174 417.6 Q 78.84(aliases nis)
+214 433.8 R(\214les)2.5 E 1.633(This causes a query ag)174 450 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 225 Q(.)-.55 E 37.84
-(dequote Strip)102 241.2 R .96(double quotes \("\) from a name.)3.46 F
+F(\231ali.\214les\232 in that order)174 462 Q(.)-.55 E 37.84
+(dequote Strip)102 478.2 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 253.2 R .172
+(strip quotes if the resulting string w)174 490.2 R .172
(ould contain unscannable syntax \(that is, basic)-.1 F .386(errors lik)
-174 265.2 R 2.886(eu)-.1 G .386(nbalanced angle brack)-2.886 F .386
+174 502.2 R 2.886(eu)-.1 G .386(nbalanced angle brack)-2.886 F .386
(ets; more sophisticated errors such as unkno)-.1 F(wn)-.25 E .252
-(hosts are not check)174 277.2 R 2.752(ed\). The)-.1 F .251
+(hosts are not check)174 514.2 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 289.2 Q
-("49ers::ubell")214 305.4 Q 2.5(At)174 321.6 S
+(tems such as DECnet that routinely quote odd syntax such as)174 526.2 Q
+("49ers::ubell")214 542.4 Q 2.5(At)174 558.6 S
(ypical usage is probably something lik)-2.5 E(e:)-.1 E
-(Kdequote dequote)214 337.8 Q(...)214 361.8 Q 88.19(R$\255 $:)214 385.8
-R($\(dequote $1 $\))2.5 E(R$\255 $+)214 397.8 Q($: $>3 $1 $2)77.55 E
-(Care must be tak)174 414 Q(en to pre)-.1 E -.15(ve)-.25 G(nt une).15 E
+(Kdequote dequote)214 574.8 Q(...)214 598.8 Q 88.19(R$\255 $:)214 622.8
+R($\(dequote $1 $\))2.5 E(R$\255 $+)214 634.8 Q($: $>3 $1 $2)77.55 E
+(Care must be tak)174 651 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 430.2 Q 1.31(will ha)174 446.4 R
+("|someprogram < input > output")214 667.2 Q 1.31(will ha)174 683.4 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
-458.4 S(rtunately these cases are rare.).15 E .488
-(Most of these accept as ar)127 474.6 R .488
+695.4 S(rtunately these cases are rare.).15 E(re)102 711.6 Q(ge)-.15 E
+50.09(xT)-.15 G .489(he map de\214nition on the)-50.09 F F0(K)2.989 E F1
+.489(line contains a re)2.989 F .488(gular e)-.15 F 2.988(xpression. An)
+-.15 F 2.988(yk)-.15 G .788 -.15(ey i)-3.088 H .488(nput is).15 F 3.665
+(compared to that e)174 723.6 R 3.666(xpression using the POSIX re)-.15
+F 3.666(gular e)-.15 F 3.666(xpressions routines)-.15 F EP
+%%Page: 59 55
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-59)195.86 E/F1 10/Times-Roman@0 SF(re)174 96 Q .474
+(gcomp\(\), re)-.15 F .474(gerr\(\), and re)-.15 F(ge)-.15 E -.15(xe)
+-.15 G 2.974(c\(\). Refer).15 F .474
+(to the documentation for those routines)2.974 F .585
+(for more information about the re)174 108 R .585(gular e)-.15 F .586
+(xpression matching.)-.15 F .586(No re)5.586 F .586(writing of the)-.25
+F -.1(ke)174 120 S 2.607(yi)-.05 G 2.607(sd)-2.607 G .107(one if the)
+-2.607 F F0<ad6d>2.607 E F1 .107(\215ag is used.)2.607 F -.4(Wi)5.107 G
+.107(thout it, the k).4 F .407 -.15(ey i)-.1 H 2.607(sd).15 G .107
+(iscarded or if)-2.607 F F0<ad73>2.606 E F1 .106(if used,)2.606 F 1.07
+(it is substituted by the substring matches, delimited by)174 132 R F0
+($|)3.57 E F1 1.07(or the string speci\214ed)3.57 F(with the the)174 144
+Q F0<ad64>2.5 E F1 2.5(\215ag. The)2.5 F(\215ags a)2.5 E -.25(va)-.2 G
+(ilable for the map are).25 E 97.17(-n not)214 160.2 R 98.84(-f case)214
+172.2 R(sensiti)2.5 E -.15(ve)-.25 G 97.17(-b basic)214 184.2 R(re)2.5 E
+(gular e)-.15 E(xpressions)-.15 E(\(def)322 196.2 Q(ault is e)-.1 E
+(xtended\))-.15 E 98.28(-s substring)214 208.2 R(match)2.5 E 97.17
+(-d set)214 220.2 R(the delimiter used for -s)2.5 E 97.73(-a append)214
+232.2 R(string to k)2.5 E -.15(ey)-.1 G 94.39(-m match)214 244.2 R(only)
+2.5 E 2.5(,d)-.65 G 2.5(on)-2.5 G(ot)-2.5 E(replace/discard v)322 256.2
+Q(alue)-.25 E(The)174 272.4 Q F0<ad73>2.551 E F1 .051(\215ag can include an optional parameter which can be used to select the sub-)
+2.551 F(strings in the result of the lookup.)174 284.4 Q -.15(Fo)5 G 2.5
+(re).15 G(xample,)-2.65 E(-s1,3,4)214 300.6 Q 35.62(program The)102 321
+R(ar)2.544 E .044(guments on the)-.18 F F0(K)2.544 E F1 .045
+(line are the pathname to a program and an)2.544 F 2.545(yi)-.15 G .045
+(nitial param-)-2.545 F .176(eters to be passed.)174 333 R .176
+(When the map is called, the k)5.176 F .475 -.15(ey i)-.1 H 2.675(sa).15
+G .175(dded to the initial parame-)-2.675 F .112
+(ters and the program is in)174 345 R -.2(vo)-.4 G -.1(ke).2 G 2.612(da)
+.1 G 2.612(st)-2.612 G .112(he def)-2.612 F .112(ault user/group id.)-.1
+F .112(The \214rst line of stan-)5.112 F .508
+(dard output is returned as the v)174 357 R .508(alue of the lookup.)
+-.25 F .508(This has man)5.508 F 3.007(yp)-.15 G .507(otential secu-)
+-3.007 F 1.277(rity problems, and has terrible performance; it should be used only when abso-)
+174 369 R(lutely necessary)174 381 Q(.)-.65 E .488
+(Most of these accept as ar)127 397.2 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 486.6 R .31(xtension appropriate)-.15 F
+102 409.2 R .31(xtension appropriate)-.15 F
(for the database type will be added to get the actual database name\).)
-102 498.6 Q(Kno)5 E(wn \215ags are:)-.25 E 58.86(\255o Indicates)102
-514.8 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 526.8 Q/F2 10/Times-Italic@0 SF(sendmail)2.5 E
+102 421.2 Q(Kno)5 E(wn \215ags are:)-.25 E 58.86(\255o Indicates)102
+437.4 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 449.4 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)-2.5 G
(he map e)-2.5 E(xisted b)-.15 E(ut w)-.2 E(as empty)-.1 E(.)-.65 E
-(\255N, \255O)102 543 Q .696(If neither)41.28 F F0<ad4e>3.197 E F1(or)
+(\255N, \255O)102 465.6 Q .696(If neither)41.28 F F0<ad4e>3.197 E F1(or)
3.197 E F0<ad4f>3.197 E F1 .697(are speci\214ed,)3.197 F F2(sendmail)
3.197 E F1 .697(uses an adapti)3.197 F .997 -.15(ve a)-.25 H .697
(lgorithm to decide).15 F .108
-(whether or not to look for null bytes on the end of k)174 555 R -.15
+(whether or not to look for null bytes on the end of k)174 477.6 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 567 R 3.319(yk)-.15 G 1.119 -.15(ey w)-3.419 H .819
+(it \214nds an)174 489.6 R 3.319(yk)-.15 G 1.119 -.15(ey w)-3.419 H .819
(ith a null byte it ne).15 F -.15(ve)-.25 G 3.319(rt).15 G .82(ries ag)
--3.319 F .82(ain without a null byte and vice)-.05 F -.15(ve)174 579 S
+-3.319 F .82(ain without a null byte and vice)-.05 F -.15(ve)174 501.6 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)
--2.828 F F0<ad4f>2.827 E F1 .327(is speci\214ed it)2.827 F(ne)174 591 Q
--.15(ve)-.25 G 2.886(rt).15 G .386(ries with a null byte.)-2.886 F .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 603 Q 5.546(.I)-.65 G 3.046(fb)
+-2.828 F F0<ad4f>2.827 E F1 .327(is speci\214ed it)2.827 F(ne)174 513.6
+Q -.15(ve)-.25 G 2.886(rt).15 G .386(ries with a null byte.)-2.886 F
+.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 525.6 Q 5.546(.I)-.65 G 3.046(fb)
-5.546 G(oth)-3.046 E 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)-3.045 F 3.045(ym)-.15 G
-(atches)-3.045 E(at all \212 that is, e)174 615 Q -.15(ve)-.25 G
-(rything will appear to f).15 E(ail.)-.1 E<ad61>102 631.2 Q F2(x)A F1
+(atches)-3.045 E(at all \212 that is, e)174 537.6 Q -.15(ve)-.25 G
+(rything will appear to f).15 E(ail.)-.1 E<ad61>102 553.8 Q F2(x)A F1
1.356(Append the string)57.48 F 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)-4.007 F(ault)-.1 E F2(host)3.857 E F1(map)3.857 E
-(appends a dot on successful matches.)174 643.2 Q 60.53(\255f Do)102
-659.4 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 675.6 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
-687.6 S 5.107 -.15(ey a)-7.406 H 4.807(nd not the v).15 F 4.807
+(appends a dot on successful matches.)174 565.8 Q<ad54>102 582 Q F2(x)A
+F1 .021(Append the string)55.81 F F2(x)2.521 E F1 .021(on temporary f)
+2.521 F 2.521(ailures. F)-.1 F .021(or e)-.15 F(xample,)-.15 E F2(x)
+2.521 E F1 -.1(wo)2.521 G .02(uld be appended if a).1 F .72
+(DNS lookup returned \231serv)174 594 R .72(er f)-.15 F .72
+(ailed\232 or an NIS lookup could not locate a serv)-.1 F(er)-.15 E(.)
+-.55 E(See also the)174 606 Q F0<ad74>2.5 E F1(\215ag.)2.5 E 60.53
+(\255f Do)102 622.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 638.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 650.4 S 5.107 -.15(ey a)-7.406 H 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 699.6 R 1.947(xample\), this \215ag pre)
+(\231hosts.byname\232 for e)174 662.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 711.6 S 2.849(lue. Ho).25 F(we)-.25 E -.15(ve)-.25 G 1.149 -.4
+(va)174 674.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 723.6 Q(en if the match f)-.1 E(ails.)-.1 E EP
-%%Page: 55 51
+F(still tak)174 686.4 Q(en if the match f)-.1 E(ails.)-.1 E<ad6b>102
+702.6 Q F2 -.1(ke)C(ycol)-.2 E F1 .52(The k)36.22 F .82 -.15(ey c)-.1 H
+.519(olumn name \(for NIS+\) or number \(for te).15 F .519
+(xt lookups\).)-.15 F -.15(Fo)5.519 G 3.019(rL).15 G -.4(DA)-3.019 G
+3.019(Pm).4 G(aps)-3.019 E .312(this is a \214lter string passed to printf with a %s where the string to be \231mapped\232 is)
+174 714.6 R EP
+%%Page: 60 56
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-55)195.86 E/F1 10/Times-Roman@0 SF<ad6b>102 96 Q/F2 10
-/Times-Italic@0 SF -.1(ke)C(ycol)-.2 E F1 .52(The k)36.22 F .82 -.15
-(ey c)-.1 H .519(olumn name \(for NIS+\) or number \(for te).15 F .519
-(xt lookups\).)-.15 F -.15(Fo)5.519 G 3.019(rL).15 G -.4(DA)-3.019 G
-3.019(Pm).4 G(aps)-3.019 E .312(this is a \214lter string passed to printf with a %s where the string to be \231mapped\232 is)
-174 108 R(inserted.)174 120 Q<ad76>102 136.2 Q F2(valcol)A F1 1.929
-(The v)36.92 F 1.928(alue column name \(for NIS+\) or number \(for te)
--.25 F 1.928(xt lookups\).)-.15 F -.15(Fo)6.928 G 4.428(rL).15 G -.4(DA)
--4.428 G(P).4 E(maps this is the name of the attrib)174 148.2 Q
-(ute to be returned.)-.2 E<ad7a>102 164.4 Q F2(delim)A F1 .218
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-60 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(inserted.)174 96 Q<ad76>102 112.2 Q/F2 10/Times-Italic@0 SF(valcol)A F1
+1.929(The v)36.92 F 1.928
+(alue column name \(for NIS+\) or number \(for te)-.25 F 1.928
+(xt lookups\).)-.15 F -.15(Fo)6.928 G 4.428(rL).15 G -.4(DA)-4.428 G(P)
+.4 E(maps this is the name of the attrib)174 124.2 Q
+(ute to be returned.)-.2 E<ad7a>102 140.4 Q F2(delim)A F1 .218
(The column delimiter \(for te)39.7 F .218(xt lookups\).)-.15 F .219
(It can be a single character or one of the)5.219 F 1.826
-(special strings \231)174 176.4 R 1.826(\\n\232 or \231)1.666 F 1.826
+(special strings \231)174 152.4 R 1.826(\\n\232 or \231)1.666 F 1.826
(\\t\232 to indicate ne)1.666 F 1.825(wline or tab respecti)-.25 F -.15
(ve)-.25 G(ly).15 E 6.825(.I)-.65 G 4.325(fo)-6.825 G(mitted)-4.325 E
-(entirely)174 188.4 Q 2.5(,t)-.65 G(he column separator is an)-2.5 E 2.5
-(ys)-.15 G(equence of whitespace.)-2.5 E 61.08(\255t Normally)102 204.6
+(entirely)174 164.4 Q 2.5(,t)-.65 G(he column separator is an)-2.5 E 2.5
+(ys)-.15 G(equence of whitespace.)-2.5 E 61.08(\255t Normally)102 180.6
R 2.726(,w)-.65 G .226(hen a map attempts to do a lookup and the serv)
-2.726 F .227(er f)-.15 F .227(ails \(e.g.,)-.1 F F2(sendmail)2.727 E F1
-(couldn')174 216.6 Q 2.776(tc)-.18 G .276(ontact an)-2.776 F 2.776(yn)
+(couldn')174 192.6 Q 2.776(tc)-.18 G .276(ontact an)-2.776 F 2.776(yn)
-.15 G .276(ame serv)-2.776 F .276(er; this is)-.15 F F2(not)2.776 E F1
.276(the same as an entry not being found)2.776 F .251(in the map\), the message being processed is queued for future processing.)
-174 228.6 R(The)5.251 E F0<ad74>2.751 E F1 1.623(\215ag turns of)174
-240.6 R 4.123(ft)-.25 G 1.623(his beha)-4.123 F(viour)-.2 E 4.123(,l)-.4
+174 204.6 R(The)5.251 E F0<ad74>2.751 E F1 1.623(\215ag turns of)174
+216.6 R 4.123(ft)-.25 G 1.623(his beha)-4.123 F(viour)-.2 E 4.123(,l)-.4
G 1.622(etting the temporary f)-4.123 F 1.622(ailure \(serv)-.1 F 1.622
(er do)-.15 F 1.622(wn\) act as)-.25 F .675
-(though it were a permanent f)174 252.6 R .675
+(though it were a permanent f)174 228.6 R .675
(ailure \(entry not found\).)-.1 F .676(It is particularly useful for)
-5.676 F .772(DNS lookups, where someone else')174 264.6 R 3.272(sm)-.55
+5.676 F .772(DNS lookups, where someone else')174 240.6 R 3.272(sm)-.55
G .772(iscon\214gured name serv)-3.272 F .772(er can cause prob-)-.15 F
-1.645(lems on your machine.)174 276.6 R(Ho)6.645 E(we)-.25 E -.15(ve)
+1.645(lems on your machine.)174 252.6 R(Ho)6.645 E(we)-.25 E -.15(ve)
-.25 G 2.445 -.4(r, c).15 H 1.645(are must be tak).4 F 1.646
(en to ensure that you don')-.1 F(t)-.18 E .263(bounce mail that w)174
-288.6 R .263(ould be resolv)-.1 F .262(ed correctly if you tried ag)-.15
-F 2.762(ain. A)-.05 F .262(common strat-)2.762 F -.15(eg)174 300.6 S 2.5
+264.6 R .263(ould be resolv)-.1 F .262(ed correctly if you tried ag)-.15
+F 2.762(ain. A)-.05 F .262(common strat-)2.762 F -.15(eg)174 276.6 S 2.5
(yi).15 G 2.5(st)-2.5 G 2.5(of)-2.5 G(orw)-2.5 E
(ard such mail to another)-.1 E 2.5(,p)-.4 G
(ossibly better connected, mail serv)-2.5 E(er)-.15 E(.)-.55 E<ad73>102
-316.8 Q F2(spacesub)A F1 -.15(Fo)25.81 G 3.1(rt).15 G .6
+292.8 Q F2(spacesub)A F1 -.15(Fo)25.81 G 3.1(rt).15 G .6
(he dequote map only)-3.1 F 3.101(,t)-.65 G .601
(he character to use to replace space characters after a)-3.101 F
-(successful dequote.)174 328.8 Q(The)127 345 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)-3.356 F(o)-.1 E F2
-(db)3.356 E F1(-based)A(maps append \231.db\232.)102 357 Q -.15(Fo)5 G
-2.5(re).15 G(xample, the map speci\214cation)-2.65 E -.15(Ku)142 373.2 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 389.4 R -.1(wa)-.1 G .21(ys has null bytes at the end of e).1 F -.15
+(successful dequote.)174 304.8 Q 58.86(\255q Don')102 321 R 2.5(td)-.18
+G(equote the k)-2.5 E .3 -.15(ey b)-.1 H(efore lookup.).15 E 56.64
+(\255A When)102 337.2 R(reb)3 E .5(uilding an alias \214le, the)-.2 F F0
+<ad41>3 E F1 .5(\215ag causes duplicate entries in the te)3 F .5(xt v)
+-.15 F(er)-.15 E(-)-.2 E(sion to be mer)174 349.2 Q 2.5(ged. F)-.18 F
+(or e)-.15 E(xample, tw)-.15 E 2.5(oe)-.1 G(ntries:)-2.5 E 90.49
+(list: user1,)214 365.4 R(user2)2.5 E 90.49(list: user3)214 377.4 R -.1
+(wo)174 393.6 S(uld be treated as though it were the single entry).1 E
+90.49(list: user1,)214 409.8 R(user2, user3)2.5 E
+(in the presence of the)174 426 Q F0<ad41>2.5 E F1(\215ag.)2.5 E(The)127
+442.2 Q F2(dbm)2.989 E F1 .489
+(map appends the strings \231.pag\232 and \231.dir\232 to the gi)2.989 F
+-.15(ve)-.25 G 2.99<6e8c>.15 G .49(lename; the)-2.99 F F2(hash)2.99 E F1
+(and)2.99 E F2(btr)2.99 E(ee)-.37 E F1(maps append \231.db\232.)102
+454.2 Q -.15(Fo)5 G 2.5(re).15 G(xample, the map speci\214cation)-2.65 E
+-.15(Ku)142 470.4 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 486.6 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 401.4 Q
-(,pag}.)-.4 E 1.095(The program)127 417.6 R F2(mak)3.595 E(emap)-.1 E F1
+(string, and the data is located in /usr/lib/uucpmap.{dir)102 498.6 Q
+(,pag}.)-.4 E 1.094(The program)127 514.8 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)-3.594 G 1.094(he three database-oriented maps.)-3.594 F(It)6.094 E
-(tak)102 429.6 Q(es the follo)-.1 E(wing \215ags:)-.25 E 60.53(\255f Do)
-102 445.8 R(not fold upper to lo)2.5 E(wer case in the map.)-.25 E 56.64
-(\255N Include)102 462 R(null bytes in k)2.5 E -.15(ey)-.1 G(s.).15 E
-58.86(\255o Append)102 478.2 R(to an e)2.5 E(xisting \(old\) \214le.)
--.15 E 60.53(\255r Allo)102 494.4 R 3.668(wr)-.25 G 1.168
-(eplacement of e)-3.668 F 1.168(xisting k)-.15 F -.15(ey)-.1 G 1.168
+(ft)-3.594 G 1.095(he three database-oriented maps.)-3.594 F(It)6.095 E
+(tak)102 526.8 Q(es the follo)-.1 E(wing \215ags:)-.25 E 60.53(\255f Do)
+102 543 R(not fold upper to lo)2.5 E(wer case in the map.)-.25 E 56.64
+(\255N Include)102 559.2 R(null bytes in k)2.5 E -.15(ey)-.1 G(s.).15 E
+58.86(\255o Append)102 575.4 R(to an e)2.5 E(xisting \(old\) \214le.)
+-.15 E 60.53(\255r Allo)102 591.6 R 3.669(wr)-.25 G 1.169
+(eplacement of e)-3.669 F 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)-3.668 F 1.168
-(xisting k)-.15 F 1.469 -.15(ey i)-.1 H 3.669(sa).15 G(n)-3.669 E(error)
-174 506.4 Q(.)-.55 E 58.86(\255v Print)102 522.6 R(what is happening.)
-2.5 E(The)102 538.8 Q F2(sendmail)3.606 E F1 1.106(daemon does not ha)
-3.606 F 1.406 -.15(ve t)-.2 H 3.606(ob).15 G 3.606(er)-3.606 G 1.106
-(estarted to read the ne)-3.606 F 3.605(wm)-.25 G 1.105
-(aps as long as you change)-3.605 F
-(them in place; \214le locking is used so that the maps w)102 552.8 Q
-(on')-.1 E 2.5(tb)-.18 G 2.5(er)-2.5 G(ead while the)-2.5 E 2.5(ya)-.15
-G(re being updated.)-2.5 E/F3 7/Times-Roman@0 SF(22)-4 I F1(Ne)127 569 Q
-2.5(wc)-.25 G(lasses can be added in the routine)-2.5 E 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
-593 R(User Database)2.5 E F1 .109(If you ha)127 609.2 R .409 -.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 621.2 Q
-(The location of this database is controlled with the)127 637.4 Q F0
-(UserDatabaseSpec)2.5 E F1(option.)2.5 E .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(22)93.6 679.6 Q/F5 8
-/Times-Roman@0 SF .465(That is, don')3.2 J 2.465(tc)-.144 G .465
-(reate ne)-2.465 F 2.465(wm)-.2 G .466(aps and then use)-2.465 F/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 .466
-(Since the maps are already open the ne)4.466 F 2.466(wm)-.2 G(aps)
--2.466 E(will ne)72 692.4 Q -.12(ve)-.2 G 2(rb).12 G 2(es)-2 G(een.)-2 E
+(xisting k)-.15 F 1.468 -.15(ey i)-.1 H 3.668(sa).15 G(n)-3.668 E(error)
+174 603.6 Q(.)-.55 E 58.86(\255v Print)102 619.8 R(what is happening.)
+2.5 E(The)102 636 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)-3.605 G 1.106
+(estarted to read the ne)-3.605 F 3.606(wm)-.25 G 1.106
+(aps as long as you change)-3.606 F
+(them in place; \214le locking is used so that the maps w)102 650 Q(on')
+-.1 E 2.5(tb)-.18 G 2.5(er)-2.5 G(ead while the)-2.5 E 2.5(ya)-.15 G
+(re being updated.)-2.5 E/F3 7/Times-Roman@0 SF(24)-4 I .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(24)93.6
+679.6 Q/F5 8/Times-Roman@0 SF .466(That is, don')3.2 J 2.466(tc)-.144 G
+.466(reate ne)-2.466 F 2.466(wm)-.2 G .466(aps and then use)-2.466 F/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)
+-2.465 E(will ne)72 692.4 Q -.12(ve)-.2 G 2(rb).12 G 2(es)-2 G(een.)-2 E
EP
-%%Page: 56 52
+%%Page: 61 57
%%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 2.5(5.10.1. Structur)102 96 R
-2.5(eo)-.18 G 2.5(ft)-2.5 G(he user database)-2.5 E/F1 10/Times-Roman@0
-SF(The database is a sorted \(BT)142 112.2 Q(ree-based\) structure.)-.35
-E(User records are stored with the k)5 E -.15(ey)-.1 G(:).15 E/F2 10
-/Times-Italic@0 SF(user)157 128.4 Q(-name)-.2 E F0(:)A F2(\214eld-name)A
-F1 .128(The sorted database format ensures that user records are clustered together)
-117 144.6 R 5.129(.M)-.55 G .129(eta-information is)-5.129 F(al)117
-156.6 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 172.8 Q
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-61)195.86 E/F1 10/Times-Roman@0 SF(Ne)127 96 Q 2.5(wc)-.25 G
+(lasses can be added in the routine)-2.5 E 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 120
+R(User Database)2.5 E F1 .108(If you ha)127 136.2 R .408 -.15(ve a ve)
+-.2 H .109(rsion of).15 F/F2 10/Times-Italic@0 SF(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 148.2 Q
+(The location of this database is controlled with the)127 164.4 Q F0
+(UserDatabaseSpec)2.5 E F1(option.)2.5 E F0 2.5(5.10.1. Structur)102
+188.4 R 2.5(eo)-.18 G 2.5(ft)-2.5 G(he user database)-2.5 E F1
+(The database is a sorted \(BT)142 204.6 Q(ree-based\) structure.)-.35 E
+(User records are stored with the k)5 E -.15(ey)-.1 G(:).15 E F2(user)
+157 220.8 Q(-name)-.2 E F0(:)A F2(\214eld-name)A F1 .128(The sorted database format ensures that user records are clustered together)
+117 237 R 5.128(.M)-.55 G .128(eta-information is)-5.128 F(al)117 249 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 265.2 Q
2.5(alue. De\214ned)-.25 F(\214elds include:)2.5 E 33.39(maildrop The)
-117 189 R(deli)4.873 E -.15(ve)-.25 G 2.373(ry address for this user).15
-F 7.373(.T)-.55 G 2.372(here may be multiple v)-7.373 F 2.372
-(alues of this)-.25 F 2.675(record. In)189 201 R(particular)2.675 E
+117 281.4 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)-7.372 F 2.373
+(alues of this)-.25 F 2.675(record. In)189 293.4 R(particular)2.675 E
2.675(,m)-.4 G .175(ailing lists will ha)-2.675 F .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 213 Q 30.06(mailname The)117 229.2 R 1.027
-(outgoing mailname for this user)3.527 F 6.026(.F)-.55 G 1.026
+F(on the list.)189 305.4 Q 30.06(mailname The)117 321.6 R 1.026
+(outgoing mailname for this user)3.526 F 6.026(.F)-.55 G 1.027
(or each outgoing name, there should)-6.176 F .08(be an appropriate)189
-241.2 R F2(maildr)2.58 E(op)-.45 E F1 .08(record for that name to allo)
+333.6 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.)-2.58 F .08(See also)5.08 F F2
-(:default:mailname)189 253.2 Q F1(.)A 25.62(mailsender Changes)117 269.4
-R(an)3.448 E 3.448(ym)-.15 G .948(ail sent to this address to ha)-3.448
-F 1.247 -.15(ve t)-.2 H .947(he indicated en).15 F -.15(ve)-.4 G .947
+(:default:mailname)189 345.6 Q F1(.)A 25.62(mailsender Changes)117 361.8
+R(an)3.447 E 3.447(ym)-.15 G .947(ail sent to this address to ha)-3.447
+F 1.248 -.15(ve t)-.2 H .948(he indicated en).15 F -.15(ve)-.4 G .948
(lope sender).15 F(.)-.55 E .498(This is intended for mailing lists, and will normally be the name of an appro-)
-189 281.4 R .755(priate -request address.)189 293.4 R .755(It is v)5.755
-F .755(ery similar to the o)-.15 F(wner)-.25 E(-)-.2 E F2(list)A F1 .754
-(syntax in the alias)3.254 F(\214le.)189 305.4 Q 33.95(fullname The)117
-321.6 R(full name of the user)2.5 E(.)-.55 E(of)117 337.8 Q 13.66
+189 373.8 R .754(priate -request address.)189 385.8 R .754(It is v)5.754
+F .755(ery similar to the o)-.15 F(wner)-.25 E(-)-.2 E F2(list)A F1 .755
+(syntax in the alias)3.255 F(\214le.)189 397.8 Q 33.95(fullname The)117
+414 R(full name of the user)2.5 E(.)-.55 E(of)117 430.2 Q 13.66
(\214ce-address The)-.25 F(of)2.5 E(\214ce address for this user)-.25 E
-(.)-.55 E(of)117 354 Q 19.21(\214ce-phone The)-.25 F(of)2.5 E
-(\214ce phone number for this user)-.25 E(.)-.55 E(of)117 370.2 Q
+(.)-.55 E(of)117 446.4 Q 19.21(\214ce-phone The)-.25 F(of)2.5 E
+(\214ce phone number for this user)-.25 E(.)-.55 E(of)117 462.6 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
-386.4 R(home address for this user)2.5 E(.)-.55 E 19.51(home-phone The)
-117 402.6 R(home phone number for this user)2.5 E(.)-.55 E(home-f)117
-418.8 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 435 R .855
-(\(short\) description of the project this person is af)3.355 F .856
-(\214liated with.)-.25 F .856(In the Uni-)5.856 F -.15(ve)189 447 S
+478.8 R(home address for this user)2.5 E(.)-.55 E 19.51(home-phone The)
+117 495 R(home phone number for this user)2.5 E(.)-.55 E(home-f)117
+511.2 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 527.4 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 539.4 S
(rsity this is often just the name of their graduate advisor).15 E(.)
--.55 E 52.28(plan A)117 463.2 R
+-.55 E 52.28(plan A)117 555.6 R
(pointer to a \214le from which plan information can be g)2.5 E
-(athered.)-.05 E .925(As of this writing, only a fe)142 479.4 R 3.424
-(wo)-.25 G 3.424(ft)-3.424 G .924
-(hese \214elds are actually being used by)-3.424 F F2(sendmail)3.424 E
-F1(:)A F2(mail-)3.424 E(dr)117 491.4 Q(op)-.45 E F1(and)2.5 E F2
+(athered.)-.05 E .924(As of this writing, only a fe)142 571.8 R 3.424
+(wo)-.25 G 3.424(ft)-3.424 G .925
+(hese \214elds are actually being used by)-3.424 F F2(sendmail)3.425 E
+F1(:)A F2(mail-)3.425 E(dr)117 583.8 Q(op)-.45 E F1(and)2.5 E F2
(mailname)2.5 E F1 5(.A)C F2(\214ng)-2.5 E(er)-.1 E F1
(program that uses the other \214elds is planned.)2.5 E F0 2.5
-(5.10.2. User)102 515.4 R(database semantics)2.5 E F1 .995(When the re)
-142 531.6 R .995(writing rules submit an address to the local mailer)
--.25 F 3.496(,t)-.4 G .996(he user name is passed)-3.496 F .781
-(through the alias \214le.)117 543.6 R .78(If no alias is found \(or if the alias points back to the same address\), the)
-5.781 F 1.777
-(name \(with \231:maildrop\232 appended\) is then used as a k)117 555.6
-R 2.078 -.15(ey i)-.1 H 4.278(nt).15 G 1.778(he user database.)-4.278 F
-1.778(If no match)6.778 F
-(occurs \(or if the maildrop points at the same address\), forw)117
-567.6 Q(arding is tried.)-.1 E .551(If the \214rst tok)142 583.8 R .55(en of the user name returned by ruleset 0 is an \231@\232 sign, the user database)
--.1 F .625(lookup is skipped.)117 595.8 R .625
-(The intent is that the user database will act as a set of def)5.625 F
-.626(aults for a cluster)-.1 F 1.533
-(\(in our case, the Computer Science Di)117 607.8 R 1.533
+(5.10.2. User)102 607.8 R(database semantics)2.5 E F1 .996(When the re)
+142 624 R .995(writing rules submit an address to the local mailer)-.25
+F 3.495(,t)-.4 G .995(he user name is passed)-3.495 F .78
+(through the alias \214le.)117 636 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 648 R
+2.077 -.15(ey i)-.1 H 4.277(nt).15 G 1.777(he user database.)-4.277 F
+1.777(If no match)6.777 F
+(occurs \(or if the maildrop points at the same address\), forw)117 660
+Q(arding is tried.)-.1 E .55(If the \214rst tok)142 676.2 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 688.2 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 700.2 R 1.533
(vision\); mail sent to a speci\214c machine should ignore)-.25 F
-(these def)117 619.8 Q(aults.)-.1 E .351
-(When mail is sent, the name of the sending user is look)142 636 R .351
-(ed up in the database.)-.1 F .352(If that user)5.351 F .041
-(has a \231mailname\232 record, the v)117 648 R .041
-(alue of that record is used as their outgoing name.)-.25 F -.15(Fo)5.04
-G 2.54(re).15 G .04(xample, I)-2.69 F(might ha)117 660 Q .3 -.15(ve a r)
--.2 H(ecord:).15 E 48.29(eric:mailname Eric.Allman@CS.Berk)157 676.2 R
-(ele)-.1 E -.65(y.)-.15 G(EDU).65 E(This w)117 692.4 Q
-(ould cause my outgoing mail to be sent as Eric.Allman.)-.1 E .519
-(If a \231maildrop\232 is found for the user)142 708.6 R 3.019(,b)-.4 G
-.52(ut no corresponding \231mailname\232 record e)-3.219 F .52
-(xists, the)-.15 F 1.128(record \231:def)117 720.6 R 1.128
-(ault:mailname\232 is consulted.)-.1 F 1.127
-(If present, this is the name of a host to o)6.128 F -.15(ve)-.15 G
-1.127(rride the).15 F EP
-%%Page: 57 53
+(these def)117 712.2 Q(aults.)-.1 E EP
+%%Page: 62 58
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-57)195.86 E/F1 10/Times-Roman@0 SF .625(local host.)117 96 R
--.15(Fo)5.625 G 3.125(re).15 G .625(xample, in our case we w)-3.275 F
-.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 108 Q
-.882(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 120 S 2.5(tp)
-.2 G(eople not listed in the database use the local hostname.)-2.5 E F0
-2.5(5.10.3. Cr)102 146 R(eating the database)-.18 E/F2 7/Times-Bold@0 SF
-(23)-4 I F1 .375(The user database is b)142 162.2 R .375(uilt from a te)
--.2 F .375(xt \214le using the)-.15 F/F3 10/Times-Italic@0 SF(mak)2.875
-E(emap)-.1 E F1 .375(utility \(in the distrib)2.875 F .375(ution in)-.2
-F 1.038(the mak)117 174.2 R 1.038(emap subdirectory\).)-.1 F 1.038
-(The te)6.038 F 1.039
+/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 .351
+(When mail is sent, the name of the sending user is look)142 96 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 108 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)-2.691 F(might ha)117 120 Q .3
+-.15(ve a r)-.2 H(ecord:).15 E 48.29(eric:mailname Eric.Allman@CS.Berk)
+157 136.2 R(ele)-.1 E -.65(y.)-.15 G(EDU).65 E(This w)117 152.4 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 168.6 R 3.019(,b)-.4 G
+.519(ut no corresponding \231mailname\232 record e)-3.219 F .519
+(xists, the)-.15 F 1.127(record \231:def)117 180.6 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 192.6 R -.15(Fo)5.625 G 3.125
+(re).15 G .625(xample, in our case we w)-3.275 F .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 204.6 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 216.6 S 2.5
+(tp).2 G(eople not listed in the database use the local hostname.)-2.5 E
+F0 2.5(5.10.3. Cr)102 242.6 R(eating the database)-.18 E/F2 7
+/Times-Bold@0 SF(25)-4 I F1 .375(The user database is b)142 258.8 R .375
+(uilt from a te)-.2 F .375(xt \214le using the)-.15 F/F3 10
+/Times-Italic@0 SF(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
+270.8 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.589(each line has a k)117 186.2 R 1.889 -.15(ey a)-.1 H 1.589(nd a v)
+1.588(each line has a k)117 282.8 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)-4.089 G 1.588
-(ys in the format).1 F(described abo)117 198.2 Q .3 -.15(ve \212 f)-.15
-H(or e).15 E(xample:)-.15 E(eric:maildrop)157 214.4 Q .447
+1.889 -.15(ey i)-.1 H 4.089(sa).15 G -.1(lwa)-4.089 G 1.589
+(ys in the format).1 F(described abo)117 294.8 Q .3 -.15(ve \212 f)-.15
+H(or e).15 E(xample:)-.15 E(eric:maildrop)157 311 Q .448
(This \214le is normally installed in a system directory; for e)117
-230.6 R .448(xample, it might be called)-.15 F F3(/etc/user)2.948 E(db)
--.37 E F1(.)A 1.6 -.8(To m)117 242.6 T(ak).8 E 2.5(et)-.1 G
+327.2 R .447(xample, it might be called)-.15 F F3(/etc/user)2.947 E(db)
+-.37 E F1(.)A 1.6 -.8(To m)117 339.2 T(ak).8 E 2.5(et)-.1 G
(he database v)-2.5 E(ersion of the map, run the program:)-.15 E(mak)157
-258.8 Q(emap btree /etc/userdb)-.1 E(.db < /etc/userdb)-.4 E .077
-(Then create a con\214g \214le that uses this.)117 275 R -.15(Fo)5.077 G
-2.577(re).15 G .077
+355.4 Q(emap btree /etc/userdb)-.1 E(.db < /etc/userdb)-.4 E .077
+(Then create a con\214g \214le that uses this.)117 371.6 R -.15(Fo)5.077
+G 2.577(re).15 G .077
(xample, using the V8 M4 con\214guration, include the)-2.727 F(follo)117
-287 Q(wing line in your .mc \214le:)-.25 E
-(de\214ne\(\222confUSERDB_SPEC\264, /etc/userdb)157 303.2 Q(.db\))-.4 E
-F0 2.5(6. O)72 331.4 R(THER CONFIGURA)-.4 E(TION)-.95 E F1 .907
+383.6 Q(wing line in your .mc \214le:)-.25 E
+(de\214ne\(\222confUSERDB_SPEC\264, /etc/userdb)157 399.8 Q(.db\))-.4 E
+F0 2.5(6. O)72 428 R(THER CONFIGURA)-.4 E(TION)-.95 E F1 .907
(There are some con\214guration changes that can be made by recompiling)
-112 347.6 R F3(sendmail)3.407 E F1 5.907(.T)C .907(his section)-5.907 F
+112 444.2 R F3(sendmail)3.407 E F1 5.907(.T)C .906(his section)-5.907 F
1.139(describes what changes can be made and what has to be modi\214ed to mak)
-87 359.6 R 3.639(et)-.1 G 3.639(hem. In)-3.639 F 1.138(most cases this)
-3.639 F(should be unnecessary unless you are porting)87 371.6 Q F3
+87 456.2 R 3.639(et)-.1 G 3.639(hem. In)-3.639 F 1.139(most cases this)
+3.639 F(should be unnecessary unless you are porting)87 468.2 Q F3
(sendmail)2.5 E F1(to a ne)2.5 E 2.5(we)-.25 G -.4(nv)-2.5 G(ironment.)
-.4 E F0 2.5(6.1. P)87 395.6 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 411.8
+.4 E F0 2.5(6.1. P)87 492.2 R(arameters in BuildT)-.1 E(ools/OS/$oscf)
+-.92 E F1 .92
+(These parameters are intended to describe the compilation en)127 508.4
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 423.8 Q(e\214le.)-.1 E 39.5
-(NDBM If)102 440 R .665(set, the ne)3.165 F 3.165(wv)-.25 G .664
-(ersion of the DBM library that allo)-3.315 F .664
-(ws multiple databases will be)-.25 F 2.542(used. If)174 452 R .042
+.739(should normally be de\214ned in the operating system con\214guration \214le.)
+102 520.4 R F0 .74(This section needs a com-)5.739 F(plete r)102 532.4 Q
+(ewrite.)-.18 E F1 39.5(NDBM If)102 548.6 R .665(set, the ne)3.165 F
+3.165(wv)-.25 G .664(ersion of the DBM library that allo)-3.315 F .664
+(ws multiple databases will be)-.25 F 2.542(used. If)174 560.6 R .042
(neither NDBM nor NEWDB are set, a much less ef)2.542 F .043
-(\214cient method of alias)-.25 F(lookup is used.)174 464 Q 32.84
-(NEWDB If)102 480.2 R .142(set, use the ne)2.642 F 2.642(wd)-.25 G .142
+(\214cient method of alias)-.25 F(lookup is used.)174 572.6 Q 32.84
+(NEWDB If)102 588.8 R .142(set, use the ne)2.642 F 2.642(wd)-.25 G .142
(atabase package from Berk)-2.642 F(ele)-.1 E 2.641(y\()-.15 G .141
(from 4.4BSD\).)-2.641 F .141(This package)5.141 F .266
-(is substantially f)174 492.2 R .267(aster than DBM or NDBM.)-.1 F .267
-(If NEWDB and NDBM are both set,)5.267 F F3(sendmail)174 504.2 Q F1
+(is substantially f)174 600.8 R .267(aster than DBM or NDBM.)-.1 F .267
+(If NEWDB and NDBM are both set,)5.267 F F3(sendmail)174 612.8 Q F1
(will read DBM \214les, b)2.5 E(ut will create and use NEWDB \214les.)
--.2 E 53.39(NIS Include)102 520.4 R .12(support for NIS.)2.62 F .119
+-.2 E 53.39(NIS Include)102 629 R .12(support for NIS.)2.62 F .119
(If set together with)5.119 F F3(both)2.619 E F1 .119(NEWDB and NDBM,)
2.619 F F3(sendmail)2.619 E F1 .947(will create both DBM and NEWDB \214les if and only if an alias \214le includes the)
-174 532.4 R 3.409(substring \231/yp/\232 in the name.)174 544.4 R 3.409
+174 641 R 3.409(substring \231/yp/\232 in the name.)174 653 R 3.409
(This is intended for compatibility with Sun)8.409 F(Microsystems')174
-556.4 Q F3(mkalias)2.5 E F1(program used on YP masters.)2.5 E 28.94
-(NISPLUS Compile)102 572.6 R(in support for NIS+.)2.5 E 26.73
-(NETINFO Compile)102 588.8 R(in support for NetInfo \(NeXT stations\).)
-2.5 E(LD)102 605 Q 22.12(APMAP Compile)-.4 F 1.225(in support for LD)
-3.725 F 1.225(AP X500 queries.)-.4 F 1.226
-(Requires libldap and liblber from)6.226 F(the Umich LD)174 617 Q
-(AP 3.2 or 3.3 release.)-.4 E 32.84(HESIOD Compile)102 633.2 R
-(in support for Hesiod.)2.5 E(_P)102 649.4 Q -1.11(AT)-.92 G
-(H_SENDMAILCF)1.11 E(The pathname of the sendmail.cf \214le.)174 661.4 Q
-.32 LW 76 671 72 671 DL 80 671 76 671 DL 84 671 80 671 DL 88 671 84 671
-DL 92 671 88 671 DL 96 671 92 671 DL 100 671 96 671 DL 104 671 100 671
-DL 108 671 104 671 DL 112 671 108 671 DL 116 671 112 671 DL 120 671 116
-671 DL 124 671 120 671 DL 128 671 124 671 DL 132 671 128 671 DL 136 671
-132 671 DL 140 671 136 671 DL 144 671 140 671 DL 148 671 144 671 DL 152
-671 148 671 DL 156 671 152 671 DL 160 671 156 671 DL 164 671 160 671 DL
-168 671 164 671 DL 172 671 168 671 DL 176 671 172 671 DL 180 671 176 671
-DL 184 671 180 671 DL 188 671 184 671 DL 192 671 188 671 DL 196 671 192
-671 DL 200 671 196 671 DL 204 671 200 671 DL 208 671 204 671 DL 212 671
-208 671 DL 216 671 212 671 DL/F4 5/Times-Roman@0 SF(23)93.6 681.4 Q/F5 8
-/Times-Roman@0 SF .288(These instructions are kno)3.2 J .289
+665 Q F3(mkalias)2.5 E F1(program used on YP masters.)2.5 E .32 LW 76
+674.6 72 674.6 DL 80 674.6 76 674.6 DL 84 674.6 80 674.6 DL 88 674.6 84
+674.6 DL 92 674.6 88 674.6 DL 96 674.6 92 674.6 DL 100 674.6 96 674.6 DL
+104 674.6 100 674.6 DL 108 674.6 104 674.6 DL 112 674.6 108 674.6 DL 116
+674.6 112 674.6 DL 120 674.6 116 674.6 DL 124 674.6 120 674.6 DL 128
+674.6 124 674.6 DL 132 674.6 128 674.6 DL 136 674.6 132 674.6 DL 140
+674.6 136 674.6 DL 144 674.6 140 674.6 DL 148 674.6 144 674.6 DL 152
+674.6 148 674.6 DL 156 674.6 152 674.6 DL 160 674.6 156 674.6 DL 164
+674.6 160 674.6 DL 168 674.6 164 674.6 DL 172 674.6 168 674.6 DL 176
+674.6 172 674.6 DL 180 674.6 176 674.6 DL 184 674.6 180 674.6 DL 188
+674.6 184 674.6 DL 192 674.6 188 674.6 DL 196 674.6 192 674.6 DL 200
+674.6 196 674.6 DL 204 674.6 200 674.6 DL 208 674.6 204 674.6 DL 212
+674.6 208 674.6 DL 216 674.6 212 674.6 DL/F4 5/Times-Roman@0 SF(25)93.6
+685 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)-2.289 F .289
(ersion of the user database is planned including things such as \214n-)
--.12 F(ger service \212 and good documentation.)72 694.2 Q EP
-%%Page: 58 54
+-.12 F(ger service \212 and good documentation.)72 697.8 Q EP
+%%Page: 63 59
%%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/F1 10/Times-Roman@0 SF(_P)102 96
-Q -1.11(AT)-.92 G(H_SENDMAILPID)1.11 E
-(The pathname of the sendmail.pid \214le.)174 108 Q 1.44
-(There are also se)127 124.2 R -.15(ve)-.25 G 1.439
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-63)195.86 E/F1 10/Times-Roman@0 SF 28.94(NISPLUS Compile)102 96
+R(in support for NIS+.)2.5 E 26.73(NETINFO Compile)102 112.2 R
+(in support for NetInfo \(NeXT stations\).)2.5 E(LD)102 128.4 Q 22.12
+(APMAP Compile)-.4 F 1.225(in support for LD)3.725 F 1.225
+(AP X500 queries.)-.4 F 1.226(Requires libldap and liblber from)6.226 F
+(the Umich LD)174 140.4 Q(AP 3.2 or 3.3 release.)-.4 E 32.84
+(HESIOD Compile)102 156.6 R(in support for Hesiod.)2.5 E(_P)102 172.8 Q
+-1.11(AT)-.92 G(H_SENDMAILCF)1.11 E
+(The pathname of the sendmail.cf \214le.)174 184.8 Q(_P)102 201 Q -1.11
+(AT)-.92 G(H_SENDMAILPID)1.11 E
+(The pathname of the sendmail.pid \214le.)174 213 Q 1.44
+(There are also se)127 229.2 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 136.2 R(the READ_ME \214le for the latest scoop on these \215ags.)
-2.5 E F0 2.5(6.2. P)87 160.2 R(arameters in sr)-.1 E(c/conf)-.18 E(.h)
--.15 E F1 -.15(Pa)127 176.4 S .895
+102 241.2 R
+(the src/README \214le for the latest scoop on these \215ags.)2.5 E F0
+2.5(6.2. P)87 265.2 R(arameters in sr)-.1 E(c/conf)-.18 E(.h)-.15 E F1
+-.15(Pa)127 281.4 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 188.4 R .192
+(Most of these need not normally)5.895 F .193(be tweak)102 293.4 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 200.4 Q(The numbers follo)
+(tors, etc., are included in this \214le.)102 305.4 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 compilation \215ags in conf.h \212 see)
-127 216.6 R(src/READ_ME or src/conf.h itself.)102 228.6 Q
-(MAXLINE [2048])102 244.8 Q 2.069(The maximum line length of an)11.14 F
-4.568(yi)-.15 G 2.068(nput line.)-4.568 F 2.068(If message lines e)7.068
-F 2.068(xceed this)-.15 F .575(length the)188.4 256.8 R 3.075(yw)-.15 G
-.575(ill still be processed correctly; ho)-3.075 F(we)-.25 E -.15(ve)
--.25 G 1.375 -.4(r, h).15 H .575(eader lines, con\214gura-).4 F
+127 321.6 R(src/README or src/conf.h itself.)102 333.6 Q(MAXLINE [2048])
+102 349.8 Q 2.069(The maximum line length of an)11.14 F 4.568(yi)-.15 G
+2.068(nput line.)-4.568 F 2.068(If message lines e)7.068 F 2.068
+(xceed this)-.15 F .575(length the)188.4 361.8 R 3.075(yw)-.15 G .575
+(ill still be processed correctly; ho)-3.075 F(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 268.8 Q(MAXN)102 285 Q(AME [256])-.35 E(The maximum length of an)
+188.4 373.8 Q(MAXN)102 390 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.)-2.5 E
-(MAXPV [40])102 301.2 Q .25(The maximum number of parameters to an)31.13
+(MAXPV [40])102 406.2 Q .25(The maximum number of parameters to an)31.13
F 2.75(ym)-.15 G(ailer)-2.75 E 5.25(.T)-.55 G .25
(his limits the number of)-5.25 F .375
-(recipients that may be passed in one transaction.)188.4 313.2 R .376
+(recipients that may be passed in one transaction.)188.4 418.2 R .376
(It can be set to an)5.376 F 2.876(ya)-.15 G(rbitrary)-2.876 E .876
-(number abo)188.4 325.2 R 1.176 -.15(ve a)-.15 H .876(bout 10, since).15
+(number abo)188.4 430.2 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 337.2 R 3.386(Ah)5.886 G .887
+(batches as needed.)188.4 442.2 R 3.386(Ah)5.886 G .887
(igher number may reduce load on your system, ho)-3.386 F(w-)-.25 E
--2.15 -.25(ev e)188.4 349.2 T -.55(r.).25 G(MAXA)102 365.4 Q -.18(TO)
+-2.15 -.25(ev e)188.4 454.2 T -.55(r.).25 G(MAXA)102 470.4 Q -.18(TO)
-1.11 G 2.5(M[).18 G 8.26(100] The)-2.5 F .064
(maximum number of atoms \(tok)2.564 F .063(ens\) in a single address.)
-.1 F -.15(Fo)5.063 G 2.563(re).15 G .063(xample, the)-2.713 F
-(address \231eric@CS.Berk)188.4 377.4 Q(ele)-.1 E -.65(y.)-.15 G
+(address \231eric@CS.Berk)188.4 482.4 Q(ele)-.1 E -.65(y.)-.15 G
(EDU\232 is se).65 E -.15(ve)-.25 G 2.5(na).15 G(toms.)-2.5 E
-(MAXMAILERS [25])102 393.6 Q .122(The maximum number of mailers that may be de\214ned in the con\214guration \214le.)
-.02 F(MAXR)102 409.8 Q(WSETS [200])-.55 E .432(The maximum number of re)
+(MAXMAILERS [25])102 498.6 Q .122(The maximum number of mailers that may be de\214ned in the con\214guration \214le.)
+.02 F(MAXR)102 514.8 Q(WSETS [200])-.55 E .432(The maximum number of re)
.01 F .432(writing sets that may be de\214ned.)-.25 F .431
-(The \214rst half of)5.431 F .034(these are reserv)188.4 421.8 R .034
+(The \214rst half of)5.431 F .034(these are reserv)188.4 526.8 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 433.8 R .492
+('\), while the upper half)-.74 F .492(are reserv)188.4 538.8 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 445.8 Q(`S99')-.74 E 2.5('w)-.74 G
+(attempt to use `)188.4 550.8 Q(`S99')-.74 E 2.5('w)-.74 G
(ill succeed, b)-2.5 E(ut `)-.2 E(`S100')-.74 E 2.5('w)-.74 G(ill f)-2.5
-E(ail.)-.1 E(MAXPRIORITIES [25])102 462 Q 2.481(The maximum number of v)
-188.4 474 R 2.482(alues for the \231Precedence:\232 \214eld that may be)
--.25 F(de\214ned \(using the)188.4 486 Q F0(P)2.5 E F1
-(line in sendmail.cf\).)2.5 E(MAXUSERENVIR)102 502.2 Q(ON [100])-.4 E
-.399(The maximum number of items in the user en)188.4 514.2 R .399
-(vironment that will be passed to)-.4 F(subordinate mailers.)188.4 526.2
-Q(MAXMXHOSTS [100])102 542.4 Q
-(The maximum number of MX records we will accept for an)188.4 554.4 Q
-2.5(ys)-.15 G(ingle host.)-2.5 E(MAXALIASDB [12])102 570.6 Q .767
+E(ail.)-.1 E(MAXPRIORITIES [25])102 567 Q 2.481(The maximum number of v)
+188.4 579 R 2.482(alues for the \231Precedence:\232 \214eld that may be)
+-.25 F(de\214ned \(using the)188.4 591 Q F0(P)2.5 E F1
+(line in sendmail.cf\).)2.5 E(MAXUSERENVIR)102 607.2 Q(ON [100])-.4 E
+.399(The maximum number of items in the user en)188.4 619.2 R .399
+(vironment that will be passed to)-.4 F(subordinate mailers.)188.4 631.2
+Q(MAXMXHOSTS [100])102 647.4 Q
+(The maximum number of MX records we will accept for an)188.4 659.4 Q
+2.5(ys)-.15 G(ingle host.)-2.5 E(MAXALIASDB [12])102 675.6 Q .767
(The maximum number of alias databases that can be open at an).58 F
3.267(yt)-.15 G 3.267(ime. Note)-3.267 F
-(that there may also be an open \214le limit.)188.4 582.6 Q(MAXMAPST)102
-598.8 Q -.4(AC)-.93 G 2.5(K[).4 G(12])-2.5 E 1.65
-(The maximum number of maps that may be "stack)188.4 610.8 R 1.65
-(ed" in a)-.1 F F0(sequence)4.15 E F1(class)4.15 E(map.)188.4 622.8 Q
-(MAXMIMEARGS [20])102 639 Q .718(The maximum number of ar)188.4 651 R
-.718(guments in a MIME Content-T)-.18 F .718(ype: header; addi-)-.8 F
-(tional ar)188.4 663 Q(guments will be ignored.)-.18 E
-(MAXMIMENESTING [20])102 679.2 Q .4(The maximum depth to which MIME messages may be nested \(that is, nested)
-188.4 691.2 R 1.344(Message or Multipart documents; this does not limit the number of compo-)
-188.4 703.2 R(nents in a single Multipart document\).)188.4 715.2 Q EP
-%%Page: 59 55
+(that there may also be an open \214le limit.)188.4 687.6 Q(MAXMAPST)102
+703.8 Q -.4(AC)-.93 G 2.5(K[).4 G(12])-2.5 E 1.65
+(The maximum number of maps that may be "stack)188.4 715.8 R 1.65
+(ed" in a)-.1 F F0(sequence)4.15 E F1(class)4.15 E EP
+%%Page: 64 60
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-59)195.86 E/F1 10/Times-Roman@0 SF 2.851(An)102 96 S .351
-(umber of other compilation options e)-2.851 F 2.851(xist. These)-.15 F
-.35(specify whether or not speci\214c code should be)2.851 F
-(compiled in.)102 108 Q(Ones mark)5 E(ed with \207 are 0/1 v)-.1 E
-(alued.)-.25 E 36.69(NETINET\207 If)102 124.2 R .829
+/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(map.)
+188.4 96 Q(MAXMIMEARGS [20])102 112.2 Q .718(The maximum number of ar)
+188.4 124.2 R .718(guments in a MIME Content-T)-.18 F .718
+(ype: header; addi-)-.8 F(tional ar)188.4 136.2 Q
+(guments will be ignored.)-.18 E(MAXMIMENESTING [20])102 152.4 Q .4(The maximum depth to which MIME messages may be nested \(that is, nested)
+188.4 164.4 R 1.344(Message or Multipart documents; this does not limit the number of compo-)
+188.4 176.4 R(nents in a single Multipart document\).)188.4 188.4 Q
+2.851(An)102 204.6 S .351(umber of other compilation options e)-2.851 F
+2.851(xist. These)-.15 F .35
+(specify whether or not speci\214c code should be)2.851 F(compiled in.)
+102 216.6 Q(Ones mark)5 E(ed with \207 are 0/1 v)-.1 E(alued.)-.25 E
+36.69(NETINET\207 If)102 232.8 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 136.2 R/F2 10/Times-Italic@0 SF(sendmail)
+(-)-.2 E .178(sions of)188.4 244.8 R/F2 10/Times-Italic@0 SF(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)-2.677 F
-2.677(wi)-.25 G(ncorrect.)-2.677 E(Def)188.4 148.2 Q 1.87
+2.677(wi)-.25 G(ncorrect.)-2.677 E(Def)188.4 256.8 Q 1.87
(aults on; turn it of)-.1 F 4.37(fi)-.25 G 4.37(nt)-4.37 G 1.87(he Mak)
-4.37 F 1.87(e\214le if your system doesn')-.1 F 4.37(ts)-.18 G 1.87
-(upport the)-4.37 F(Internet protocols.)188.4 160.2 Q 43.35
-(NETISO\207 If)102 176.4 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 188.4 Q
-(e\214le instead of conf.h\).)-.1 E 63.35(LOG If)102 204.6 R .5
+(upport the)-4.37 F(Internet protocols.)188.4 268.8 Q 43.35
+(NETISO\207 If)102 285 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 297 Q
+(e\214le instead of conf.h\).)-.1 E 63.35(LOG If)102 313.2 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 216.6 R
+(tional log record for each message processed, and mak)188.4 325.2 R
.504(es a higher priority log)-.1 F .052
-(record for internal system errors.)188.4 228.6 R F0(STR)5.052 E(ONGL)
+(record for internal system errors.)188.4 337.2 R F0(STR)5.052 E(ONGL)
-.3 E 2.552(YR)-.92 G(ECOMMENDED)-2.552 E F1 2.553<8a69>2.552 G 2.553
-(fy)-2.553 G(ou)-2.553 E -.1(wa)188.4 240.6 S(nt no logging, turn it of)
+(fy)-2.553 G(ou)-2.553 E -.1(wa)188.4 349.2 S(nt no logging, turn it of)
.1 E 2.5(fi)-.25 G 2.5(nt)-2.5 G(he con\214guration \214le.)-2.5 E(MA)
-102 256.8 Q 11.12(TCHGECOS\207 Compile)-1.11 F 3.555
+102 365.4 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)-6.055 G 3.555(he GECOS \214eld in)-6.055 F 2.5
-(/etc/passwd. This)188.4 268.8 R(also requires that the)2.5 E F0
-(MatchGECOS)2.5 E F1(option be turned on.)2.5 E -.35(NA)102 285 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)-2.913 F .413
-(er to)-.15 F(resolv)188.4 297 Q 2.5(eT)-.15 G(CP/IP host names.)-2.5 E
-(NO)102 313.2 Q 38.76(TUNIX If)-.4 F .248(you are using a non-UNIX mail format, you can set this \215ag to turn of)
+(/etc/passwd. This)188.4 377.4 R(also requires that the)2.5 E F0
+(MatchGECOS)2.5 E F1(option be turned on.)2.5 E -.35(NA)102 393.6 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)-2.913
+F .413(er to)-.15 F(resolv)188.4 405.6 Q 2.5(eT)-.15 G
+(CP/IP host names.)-2.5 E(NO)102 421.8 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-)-2.747 E
-(cial processing of UNIX-style \231From \232 lines.)188.4 325.2 Q -.1
-(QU)102 341.4 S 45.12(EUE\207 This).1 F 1.559
+(cial processing of UNIX-style \231From \232 lines.)188.4 433.8 Q -.1
+(QU)102 450 S 45.12(EUE\207 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 353.4 Q(.)-.55 E 52.78(SMTP\207 If)102 369.6 R .756
+188.4 462 Q(.)-.55 E 52.78(SMTP\207 If)102 478.2 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 381.6 R(means most machines e)188.4 393.6 Q -.15(ve)-.25 G
-(rywhere\).).15 E 39.45(USERDB\207 Include)102 409.8 R(the)3.449 E F0
+188.4 490.2 R(means most machines e)188.4 502.2 Q -.15(ve)-.25 G
+(rywhere\).).15 E 39.45(USERDB\207 Include)102 518.4 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.)-3.449 F(This)5.948 E .27(adds a ne)
-188.4 421.8 R 2.77(wl)-.25 G -2.15 -.25(ev e)-2.77 H 2.77(lo).25 G 2.77
+188.4 530.4 R 2.77(wl)-.25 G -2.15 -.25(ev e)-2.77 H 2.77(lo).25 G 2.77
(fl)-2.77 G .27(ocal name e)-2.77 F .27
(xpansion between aliasing and forw)-.15 F 2.77(arding. It)-.1 F
-(also uses the NEWDB package.)188.4 433.8 Q
-(This may change in future releases.)5 E(The follo)102 450 Q
+(also uses the NEWDB package.)188.4 542.4 Q
+(This may change in future releases.)5 E(The follo)102 558.6 Q
(wing options are normally turned on in per)-.25 E
-(-operating-system clauses in conf.h.)-.2 E(IDENTPR)102 466.2 Q -1.88
+(-operating-system clauses in conf.h.)-.2 E(IDENTPR)102 574.8 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.)-19.61 F .375
(This def)5.375 F .375(aults on for)-.1 F 1.053(all systems e)188.4
-478.2 R 1.053(xcept Ultrix, which apparently has the interesting \231feature\232 that)
--.15 F .83(when it recei)188.4 490.2 R -.15(ve)-.25 G 3.33(sa\231).15 G
+586.8 R 1.053(xcept Ultrix, which apparently has the interesting \231feature\232 that)
+-.15 F .83(when it recei)188.4 598.8 R -.15(ve)-.25 G 3.33(sa\231).15 G
.83(host unreachable\232 message it closes all open connections)-3.33 F
-1.921(to that host.)188.4 502.2 R 1.921(Since some \214re)6.921 F -.1
+1.921(to that host.)188.4 610.8 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 514.2 R(recei)188.4 526.2 Q .3 -.15(ve e)-.25 H
-(mail from such hosts.).15 E 39.45(SYSTEM5 Set)102 542.4 R
+188.4 622.8 R(recei)188.4 634.8 Q .3 -.15(ve e)-.25 H
+(mail from such hosts.).15 E 39.45(SYSTEM5 Set)102 651 R
(all of the compilation parameters appropriate for System V)2.5 E(.)
--1.29 E 26.12(HASFLOCK\207 Use)102 558.6 R(Berk)2.844 E(ele)-.1 E
+-1.29 E 26.12(HASFLOCK\207 Use)102 667.2 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 570.6
+F .184(the highly unusual semantics of locks across forks in)188.4 679.2
R F0(lockf)2.684 E F1 2.684(,t)C .184(his should al)-2.684 F -.1(wa)-.1
-G(ys).1 E(be used if at all possible.)188.4 582.6 Q(HASINITGR)102 598.8
+G(ys).1 E(be used if at all possible.)188.4 691.2 Q(HASINITGR)102 707.4
Q 4.86(OUPS Set)-.4 F 1.284(this if your system has the)3.783 F F2
(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
-610.8 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 622.8 Q
-(HASUN)102 639 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
+719.4 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 EP
+%%Page: 65 61
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-65)195.86 E/F1 10/Times-Roman@0 SF(HPUX.)188.4 96 Q(HASUN)102
+112.2 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 10/Times-Italic@0 SF(uname)3.648 E F1 1.149
(\(2\) system call \(or corresponding library rou-)B 2.5(tine\). Set)
-188.4 651 R(by def)2.5 E(ault if SYSTEM5 is set.)-.1 E(HASGETDT)102
-667.2 Q(ABLESIZE)-.93 E(Set this if you ha)188.4 679.2 Q .3 -.15(ve t)
+188.4 124.2 R(by def)2.5 E(ault if SYSTEM5 is set.)-.1 E(HASGETDT)102
+140.4 Q(ABLESIZE)-.93 E(Set this if you ha)188.4 152.4 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 695.4 Q 22.89(AITPID Set)-1.2 F(this if you ha)2.5 E .3 -.15
+(HASW)102 168.6 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 711.6 R .517
+(SFS_TYPE The)102 184.8 R .517
(mechanism that can be used to get \214le system capacity information.)
-3.017 F(The)5.516 E -.25(va)188.4 723.6 S .214
+3.017 F(The)5.516 E -.25(va)188.4 196.8 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 EP
-%%Page: 60 56
-%%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/F1 10/Times-Roman@0 SF .415
-(the four ar)188.4 96 R .415
-(gument statfs\(2\) syscall\), SFS_VFS \(use the tw)-.18 F 2.915(oa)-.1
-G -.18(rg)-2.915 G .415(ument statfs\(2\)).18 F .716
-(syscall including <sys/vfs.h>\), SFS_MOUNT \(use the tw)188.4 108 R
+(use the ustat\(2\) syscall\), SFS_4ARGS \(use)1.11 F .415(the four ar)
+188.4 208.8 R .415(gument statfs\(2\) syscall\), SFS_VFS \(use the tw)
+-.18 F 2.915(oa)-.1 G -.18(rg)-2.915 G .415(ument statfs\(2\)).18 F .716
+(syscall including <sys/vfs.h>\), SFS_MOUNT \(use the tw)188.4 220.8 R
3.217(oa)-.1 G -.18(rg)-3.217 G .717(ument statfs\(2\)).18 F 4.32
-(syscall including <sys/mount.h>\), SFS_ST)188.4 120 R -1.11(AT)-.93 G
+(syscall including <sys/mount.h>\), SFS_ST)188.4 232.8 R -1.11(AT)-.93 G
4.32(FS \(use the tw)1.11 F 6.82(oa)-.1 G -.18(rg)-6.82 G(ument).18 E
-1.108(statfs\(2\) syscall including <sys/statfs.h>\), SFS_ST)188.4 132 R
--1.11(AT)-.93 G 1.109(VFS \(use the tw)1.11 F 3.609(oa)-.1 G -.18(rg)
+1.108(statfs\(2\) syscall including <sys/statfs.h>\), SFS_ST)188.4 244.8
+R -1.11(AT)-.93 G 1.109(VFS \(use the tw)1.11 F 3.609(oa)-.1 G -.18(rg)
-3.609 G(u-).18 E 1.511(ment statfs\(2\) syscall including <sys/statvfs.h>\), or SFS_NONE \(no w)
-188.4 144 R 1.511(ay to)-.1 F(get this information\).)188.4 156 Q 40.57
-(LA_TYPE The)102 172.2 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 188.4
+188.4 256.8 R 1.511(ay to)-.1 F(get this information\).)188.4 268.8 Q
+40.57(LA_TYPE The)102 285 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 301.2
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 10
-/Times-Italic@0 SF(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 200.4 R F2
+(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 313.2 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)-2.766 E F2(type)2.766 E F1(is:)102 212.4 Q 48.91
-(LA_INT The)102 228.6 R -.1(ke)3.452 G .952(rnel stores the load a).1 F
+2.766(,w)C(here)-2.766 E F2(type)2.766 E F1(is:)102 325.2 Q 48.91
+(LA_INT The)102 341.4 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
-240.6 Q(alues are scaled by a f)-.25 E(actor FSCALE \(def)-.1 E
-(ault 256\).)-.1 E(LA_SHOR)102 256.8 Q 35.89(TT)-.6 G .794(he k)-35.89 F
+353.4 Q(alues are scaled by a f)-.25 E(actor FSCALE \(def)-.1 E
+(ault 256\).)-.1 E(LA_SHOR)102 369.6 Q 35.89(TT)-.6 G .794(he k)-35.89 F
.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 268.8 Q(alues are scaled by a f)-.25 E(actor FSCALE \(def)-.1 E
-(ault 256\).)-.1 E(LA_FLO)102 285 Q 37.03 -1.11(AT T)-.35 H .088(he k)
+188.4 381.6 Q(alues are scaled by a f)-.25 E(actor FSCALE \(def)-.1 E
+(ault 256\).)-.1 E(LA_FLO)102 397.8 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 297 Q(LA_MA)102 313.2 Q 35.97(CH Use)-.4 F(MA)2.5 E
+(\215oats.)188.4 409.8 Q(LA_MA)102 426 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
-329.4 R(the)2.5 E F2 -.1(ge)2.5 G(tloadavg).1 E F1
+442.2 R(the)2.5 E F2 -.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 345.6 Q 42.36(OA)-.4 G
+(rage as an array of doubles.).15 E(LA_ZER)102 458.4 Q 42.36(OA)-.4 G
-.1(lwa)-42.36 G(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
-361.8 R/F3 9/Times-Roman@0 SF(LA_INT)2.994 E F1(,)A F3(LA_SHOR)2.994 E
+474.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)-2.994 E 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 373.8 R F3(LA_A)3.448 E
+(\(the path to your system binary\) and)102 486.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 385.8 T
+(ariable containing the load)-.25 F -2.25 -.2(av e)102 498.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 409.8 R(in sr)2.5 E(c/conf)-.18 E(.c)-.15 E F1
-(The follo)127 426 Q(wing changes can be made in conf.c.)-.25 E F0 2.5
-(6.3.1. Built-in)102 450 R(Header Semantics)2.5 E F1 1.248
+(6.3. Con\214guration)87 522.6 R(in sr)2.5 E(c/conf)-.18 E(.c)-.15 E F1
+(The follo)127 538.8 Q(wing changes can be made in conf.c.)-.25 E F0 2.5
+(6.3.1. Built-in)102 562.8 R(Header Semantics)2.5 E F1 1.248
(Not all header semantics are de\214ned in the con\214guration \214le.)
-142 466.2 R 1.247(Header lines that should)6.247 F .305(only be included by certain mailers \(as well as other more obscure semantics\) must be speci\214ed)
-117 478.2 R .047(in the)117 490.2 R F2(HdrInfo)2.547 E F1 .047(table in)
+142 579 R 1.247(Header lines that should)6.247 F .305(only be included by certain mailers \(as well as other more obscure semantics\) must be speci\214ed)
+117 591 R .047(in the)117 603 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)-5.047 F
(wer)-.25 E(case\) and a set of header control \215ags \(described belo)
-117 502.2 Q(w\), The \215ags are:)-.25 E(H_A)117 518.4 Q 30.97
+117 615 Q(w\), The \215ags are:)-.25 E(H_A)117 631.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 530.4 S(ailer)-2.941 E(,)-.4 E F2(sendmail)2.941 E F1
+F 2.941(am)203.4 643.2 S(ailer)-2.941 E(,)-.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 542.4 Q F1
+(If this \215ag is set,)5.441 F F2(send-)2.94 E(mail)203.4 655.2 Q F1
.152(will delete e)2.652 F -.15(ve)-.25 G 2.652(ne).15 G .152
(xisting header lines.)-2.802 F .152
(That is, if this bit is set and the)5.152 F 1.425(mailer does not ha)
-203.4 554.4 R 1.725 -.15(ve \215)-.2 H 1.425
+203.4 667.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 566.4 R F2(always)4.704 E F1(deleted.)203.4 578.4 Q 51.13
-(H_EOH If)117 594.6 R .206(this header \214eld is set, treat it lik)
+203.4 679.2 R F2(always)4.704 E F1(deleted.)203.4 691.2 Q 51.13
+(H_EOH If)117 707.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)
--2.706 F(of the header and the be)203.4 606.6 Q
-(ginning of the message te)-.15 E(xt.)-.15 E 39.45(H_FORCE Add)117 622.8
-R 2.038(this header entry e)4.538 F -.15(ve)-.25 G 4.538(ni).15 G 4.538
-(fo)-4.538 G 2.038(ne e)-4.538 F 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 634.8 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 646.8 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 658.8 Q -.15(ve)-.25 G
-(ryone who handled it.).15 E(H_TRA)117 675 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 687 R
-.705(xceeds a preset amount the message is returned on the assump-)-.15
-F(tion that it has an aliasing loop.)203.4 699 Q EP
-%%Page: 61 57
+-2.706 F(of the header and the be)203.4 719.4 Q
+(ginning of the message te)-.15 E(xt.)-.15 E EP
+%%Page: 66 62
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-61)195.86 E/F1 10/Times-Roman@0 SF 46.67(H_RCPT If)117 96 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 108 R(sage.)203.4 120 Q(H_FR)117 136.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)-6.673 F .898(\214elds in the)203.4
-148.2 R/F2 10/Times-Italic@0 SF(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
-160.2 Q(H_ERR)117 176.4 Q(ORST)-.4 E 22.53(OA)-.18 G
-(ddresses in this header should recei)-22.53 E .3 -.15(ve e)-.25 H
-(rror messages.).15 E 52.79(H_CTE This)117 192.6 R
+/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 39.45
+(H_FORCE Add)117 96 R 2.038(this header entry e)4.538 F -.15(ve)-.25 G
+4.538(ni).15 G 4.538(fo)-4.538 G 2.038(ne e)-4.538 F 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 108 R 2.488 -.15(ve t)-.2 H 2.188
+(his bit set,).15 F/F2 10/Times-Italic@0 SF(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 120 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 132 Q -.15(ve)-.25 G
+(ryone who handled it.).15 E(H_TRA)117 148.2 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 160.2
+R .705(xceeds a preset amount the message is returned on the assump-)
+-.15 F(tion that it has an aliasing loop.)203.4 172.2 Q 46.67(H_RCPT If)
+117 188.4 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 200.4 R(sage.)203.4 212.4 Q(H_FR)117 228.6 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)-6.673 F .898(\214elds in the)
+203.4 240.6 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 252.6 Q(H_ERR)117 268.8 Q(ORST)
+-.4 E 22.53(OA)-.18 G(ddresses in this header should recei)-22.53 E .3
+-.15(ve e)-.25 H(rror messages.).15 E 52.79(H_CTE This)117 285 R
(header is a Content-T)2.5 E(ransfer)-.35 E(-Encoding header)-.2 E(.)
--.55 E 40.01(H_CTYPE This)117 208.8 R(header is a Content-T)2.5 E
-(ype header)-.8 E(.)-.55 E(H_STRIPV)117 225 Q 25.25(AL Strip)-1.35 F
-(the v)2.5 E(alue from the header \(for Bcc:\).)-.25 E(Let')117 241.2 Q
+-.55 E 40.01(H_CTYPE This)117 301.2 R(header is a Content-T)2.5 E
+(ype header)-.8 E(.)-.55 E(H_STRIPV)117 317.4 Q 25.25(AL Strip)-1.35 F
+(the v)2.5 E(alue from the header \(for Bcc:\).)-.25 E(Let')117 333.6 Q
2.5(sl)-.55 G(ook at a sample)-2.5 E F2(HdrInfo)2.5 E F1
-(speci\214cation:)2.5 E(struct hdrinfo)157 257.4 Q(HdrInfo[] =)84.6 E({)
-157 269.4 Q(/* originator \214elds, most to least signi\214cant)189.5
-281.4 Q(*/)5 E 52.29("resent-sender", H_FR)177 293.4 R(OM,)-.4 E 58.95
-("resent-from", H_FR)177 305.4 R(OM,)-.4 E 79.5("sender", H_FR)177 317.4
-R(OM,)-.4 E 86.16("from", H_FR)177 329.4 R(OM,)-.4 E 66.72
-("full-name", H_A)177 341.4 R(CHECK,)-.4 E 71.17("errors-to", H_FR)177
-353.4 R -1.667(OM | H_ERR)-.4 F(ORST)-.4 E(O,)-.18 E
-(/* destination \214elds */)189.5 365.4 Q 97.82("to", H_RCPT)177 377.4 R
-(,)-.74 E 70.61("resent-to", H_RCPT)177 389.4 R(,)-.74 E 96.72
-("cc", H_RCPT)177 401.4 R(,)-.74 E 91.72("bcc", H_RCPT)177 413.4 R .833
+(speci\214cation:)2.5 E(struct hdrinfo)157 349.8 Q(HdrInfo[] =)84.6 E({)
+157 361.8 Q(/* originator \214elds, most to least signi\214cant)189.5
+373.8 Q(*/)5 E 52.29("resent-sender", H_FR)177 385.8 R(OM,)-.4 E 58.95
+("resent-from", H_FR)177 397.8 R(OM,)-.4 E 79.5("sender", H_FR)177 409.8
+R(OM,)-.4 E 86.16("from", H_FR)177 421.8 R(OM,)-.4 E 66.72
+("full-name", H_A)177 433.8 R(CHECK,)-.4 E 71.17("errors-to", H_FR)177
+445.8 R -1.667(OM | H_ERR)-.4 F(ORST)-.4 E(O,)-.18 E
+(/* destination \214elds */)189.5 457.8 Q 97.82("to", H_RCPT)177 469.8 R
+(,)-.74 E 70.61("resent-to", H_RCPT)177 481.8 R(,)-.74 E 96.72
+("cc", H_RCPT)177 493.8 R(,)-.74 E 91.72("bcc", H_RCPT)177 505.8 R .833
(|H).833 G(_STRIPV)-.833 E(AL,)-1.35 E
-(/* message identi\214cation and control */)189.5 425.4 Q 71.72
-("message", H_EOH,)177 437.4 R("te)177 449.4 Q 90.75(xt", H_EOH,)-.15 F
-(/* trace \214elds */)189.5 461.4 Q("recei)177 473.4 Q -.15(ve)-.25 G
+(/* message identi\214cation and control */)189.5 517.8 Q 71.72
+("message", H_EOH,)177 529.8 R("te)177 541.8 Q 90.75(xt", H_EOH,)-.15 F
+(/* trace \214elds */)189.5 553.8 Q("recei)177 565.8 Q -.15(ve)-.25 G
72.13(d", H_TRA).15 F -1.667(CE | H_FORCE,)-.4 F
-(/* miscellaneous \214elds */)189.5 485.4 Q("content-transfer)177 497.4
-Q 2.5(-encoding", H_CTE,)-.2 F 55.61("content-type", H_CTYPE,)177 509.4
-R 87.1(NULL, 0,)177 533.4 R(};)157 545.4 Q 2.435
-(This structure indicates that the \231T)117 561.6 R 2.435
+(/* miscellaneous \214elds */)189.5 577.8 Q("content-transfer)177 589.8
+Q 2.5(-encoding", H_CTE,)-.2 F 55.61("content-type", H_CTYPE,)177 601.8
+R 87.1(NULL, 0,)177 625.8 R(};)157 637.8 Q 2.435
+(This structure indicates that the \231T)117 654 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 573.6 R 3.161<7999>-.15 G .662(Full-Name:\232 \214eld will be deleted unless the required mailer \215ag \(indicated in)
--3.161 F .246(the con\214guration \214le\) is speci\214ed.)117 585.6 R
+(addresses. An)117 666 R 3.161<7999>-.15 G .662(Full-Name:\232 \214eld will be deleted unless the required mailer \215ag \(indicated in)
+-3.161 F .246(the con\214guration \214le\) is speci\214ed.)117 678 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 597.6 R 1.936
+(these are used by random dissenters around the netw)117 690 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 609.6 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 625.8 R .445
+1.937(d:\232 \214eld will).15 F(al)117 702 Q -.1(wa)-.1 G
+(ys be added, and can be used to trace messages.).1 E EP
+%%Page: 67 63
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-67)195.86 E/F1 10/Times-Roman@0 SF .446
+(There are a number of important points here.)142 96 R .445
(First, header \214elds are not added automati-)5.446 F .656
-(cally just because the)117 637.8 R 3.156(ya)-.15 G .656(re in the)
--3.156 F F2(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)-3.157 F .728
-(\214le in order to be added to the message.)117 649.8 R(An)5.727 E
+(cally just because the)117 108 R 3.156(ya)-.15 G .656(re in the)-3.156
+F/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)-3.157 F
+.728(\214le in order to be added to the message.)117 120 R(An)5.727 E
3.227(yh)-.15 G .727
(eader \214elds mentioned in the con\214guration \214le)-3.227 F -.2(bu)
-117 661.8 S 3.24(tn).2 G .74(ot mentioned in the)-3.24 F F2(HdrInfo)3.24
-E F1 .74(structure ha)3.24 F 1.04 -.15(ve d)-.2 H(ef).15 E .74
+117 132 S 3.24(tn).2 G .74(ot mentioned in the)-3.24 F 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)-3.24 E
-1.375(added unless the)117 673.8 R 3.875(yw)-.15 G 1.375
+1.375(added unless the)117 144 R 3.875(yw)-.15 G 1.375
(ere in the message already)-3.875 F 6.375(.S)-.65 G 1.374(econd, the)
-6.375 F 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 685.8 R -.05(ga)-.15 G .325(rdless of the sta-).05 F .481
-(tus speci\214ed in)117 697.8 R F2(HdrInfo)2.981 E F1 5.481(.F)C .481
+117 156 R -.05(ga)-.15 G .325(rdless of the sta-).05 F .481
+(tus speci\214ed in)117 168 R F2(HdrInfo)2.981 E F1 5.481(.F)C .481
(or e)-5.631 F .481
(xample, the \231Sender:\232 and \231From:\232 \214elds are al)-.15 F
--.1(wa)-.1 G .48(ys scanned on).1 F EP
-%%Page: 62 58
-%%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(ARP)117
-98 Q .751(ANET mail to determine the sender)-.92 F/F2 7/Times-Roman@0 SF
-(24)-4 I F1 3.251(;t)4 K .75
+-.1(wa)-.1 G .48(ys scanned on).1 F(ARP)117 182 Q .751
+(ANET mail to determine the sender)-.92 F/F3 7/Times-Roman@0 SF(26)-4 I
+F1 3.251(;t)4 K .75
(his is used to perform the \231return to sender\232 func-)-3.251 F
-2.976(tion. The)117 110 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 122 Q F0($x)2.5 E F1
+2.976(tion. The)117 194 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 206 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 146 R(Use of Email)2.5 E F1 .15
-(If it is necessary to restrict mail through a relay)142 162.2 R 2.649
-(,t)-.65 G(he)-2.649 E/F3 10/Times-Italic@0 SF -.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 174.2 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 186.2
-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 198.2 R 2.763(,a)
--.65 G .263(nd other v)-2.763 F .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.)-2.764 F .264(It is up to)5.264 F F3 -.15(ch)2.764 G
-(ec).15 E(k-)-.2 E(compat)117 210.2 Q F1 .43
-(to print an error message \(using)2.93 F F3(usr)2.929 E(err)-.37 E F1
-2.929(\)i)C 2.929(ft)-2.929 G .429(he message is rejected.)-2.929 F -.15
-(Fo)5.429 G 2.929(re).15 G(xample,)-3.079 E F3 -.15(ch)2.929 G(ec).15 E
-(k-)-.2 E(compat)117 222.2 Q F1(could read:)2.5 E F4(int)157 237.2 Q
-(checkcompat\(to, e\))157 248 Q(re)175 258.8 Q(gister ADDRESS *to;)-.135
-E(re)175 269.6 Q(gister ENVELOPE *e;)-.135 E({)157 280.4 Q(re)175 291.2
-Q(gister ST)-.135 E(AB *s;)-.837 E 2.25(s=s)175 312.8 S(tab\("pri)-2.25
-E -.225(va)-.225 G(te", ST_MAILER, ST_FIND\);).225 E
-(if \(s != NULL && e\255>e_from.q_mailer != LocalMailer &&)175 323.6 Q
-(to->q_mailer == s->s_mailer\))184 334.4 Q({)175 345.2 Q
-(usrerr\("No pri)193 356 Q -.225(va)-.225 G(te net mail allo).225 E
-(wed through this machine"\);)-.225 E(return \(EX_UN)193 366.8 Q -1.215
-(AVA)-.315 G(ILABLE\);)1.215 E(})175 377.6 Q
+102 230 R(Use of Email)2.5 E F1 .15
+(If it is necessary to restrict mail through a relay)142 246.2 R 2.649
+(,t)-.65 G(he)-2.649 E 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 258.2 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 270.2 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 282.2 R 2.763(,a)-.65 G .263(nd other v)-2.763 F .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.)-2.764 F .264
+(It is up to)5.264 F F2 -.15(ch)2.764 G(ec).15 E(k-)-.2 E(compat)117
+294.2 Q F1 .43(to print an error message \(using)2.93 F F2(usr)2.929 E
+(err)-.37 E F1 2.929(\)i)C 2.929(ft)-2.929 G .429
+(he message is rejected.)-2.929 F -.15(Fo)5.429 G 2.929(re).15 G
+(xample,)-3.079 E F2 -.15(ch)2.929 G(ec).15 E(k-)-.2 E(compat)117 306.2
+Q F1(could read:)2.5 E F4(int)157 321.2 Q(checkcompat\(to, e\))157 332 Q
+(re)175 342.8 Q(gister ADDRESS *to;)-.135 E(re)175 353.6 Q
+(gister ENVELOPE *e;)-.135 E({)157 364.4 Q(re)175 375.2 Q(gister ST)
+-.135 E(AB *s;)-.837 E 2.25(s=s)175 396.8 S(tab\("pri)-2.25 E -.225(va)
+-.225 G(te", ST_MAILER, ST_FIND\);).225 E
+(if \(s != NULL && e\255>e_from.q_mailer != LocalMailer &&)175 407.6 Q
+(to->q_mailer == s->s_mailer\))184 418.4 Q({)175 429.2 Q
+(usrerr\("No pri)193 440 Q -.225(va)-.225 G(te net mail allo).225 E
+(wed through this machine"\);)-.225 E(return \(EX_UN)193 450.8 Q -1.215
+(AVA)-.315 G(ILABLE\);)1.215 E(})175 461.6 Q
(if \(MsgSize > 50000 && bitnset\(M_LOCALMAILER, to\255>q_mailer\)\))175
-388.4 Q({)175 399.2 Q(usrerr\("Message too lar)193 410 Q
+472.4 Q({)175 483.2 Q(usrerr\("Message too lar)193 494 Q
(ge for non-local deli)-.162 E -.135(ve)-.225 G(ry"\);).135 E
-(e\255>e_\215ags |= EF_NORETURN;)193 420.8 Q(return \(EX_UN)193 431.6 Q
--1.215(AVA)-.315 G(ILABLE\);)1.215 E(})175 442.4 Q(return \(EX_OK\);)175
-453.2 Q(})157 464 Q F1 .969(This w)117 480.2 R .969
+(e\255>e_\215ags |= EF_NORETURN;)193 504.8 Q(return \(EX_UN)193 515.6 Q
+-1.215(AVA)-.315 G(ILABLE\);)1.215 E(})175 526.4 Q(return \(EX_OK\);)175
+537.2 Q(})157 548 Q F1 .969(This w)117 564.2 R .969
(ould reject messages greater than 50000 bytes unless the)-.1 F 3.469
-(yw)-.15 G .97(ere local.)-3.469 F(The)5.97 E F3(EF_NORE-)3.47 E(TURN)
-117 492.2 Q F1 .652(\215ag can be set in)3.152 F F3(e)3.152 E/F5 10
-/Symbol SF<ae>A F3(e_\215a)A(gs)-.1 E F1 .651
+(yw)-.15 G .97(ere local.)-3.469 F(The)5.97 E F2(EF_NORE-)3.47 E(TURN)
+117 576.2 Q F1 .652(\215ag can be set in)3.152 F F2(e)3.152 E/F5 10
+/Symbol SF<ae>A F2(e_\215a)A(gs)-.1 E F1 .651
(to suppress the return of the actual body of the message in)3.152 F
-.655(the error return.)117 504.2 R .655(The actual use of this routine is highly dependent on the implementation, and)
-5.655 F(use should be limited.)117 516.2 Q F0 2.5(6.3.3. Load)102 540.2
-R -.6 -1(Av e)2.5 H(rage Computation)1 E F1 .18(The routine)142 556.4 R
-F3 -.1(ge)2.68 G(tla).1 E F1 .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 568.4 Q(ger)-.15 E 5(.T)-.55 G
-(here are se)-5 E -.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 592.4 R(Database Map Classes)
-2.5 E F1(Ne)142 608.6 Q 2.875(wk)-.25 G .675 -.15(ey m)-2.975 H .375(aps can be added by creating a class initialization function and a lookup func-)
-.15 F 2.5(tion. These)117 620.6 R(are then added to the routine)2.5 E F3
-(setupmaps.)2.5 E F1(The initialization function is called as)142 636.8
-Q F3(xxx)157 653 Q F1(_map_init\(MAP *map, char *ar)A(gs\))-.18 E(The)
-117 669.2 Q F3(map)3.28 E F1 .78(is an internal data structure.)3.28 F
-(The)5.78 E F3(ar)3.279 E(gs)-.37 E F1 .779
-(is a pointer to the portion of the con\214guration)3.279 F .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/F6 5/Times-Roman@0 SF(24)93.6
-689.2 Q/F7 8/Times-Roman@0 SF(Actually)3.2 I 2.631(,t)-.52 G .631
+.655(the error return.)117 588.2 R .655(The actual use of this routine is highly dependent on the implementation, and)
+5.655 F(use should be limited.)117 600.2 Q F0 2.5(6.3.3. New)102 624.2 R
+(Database Map Classes)2.5 E F1(Ne)142 640.4 Q 2.876(wk)-.25 G .676 -.15
+(ey m)-2.976 H .375(aps can be added by creating a class initialization function and a lookup func-)
+.15 F 2.5(tion. These)117 652.4 R(are then added to the routine)2.5 E F2
+(setupmaps.)2.5 E .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/F6 5/Times-Roman@0 SF(26)93.6 679.6 Q/F7 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)
-2.631 F -.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 702 Q
+.632(ANET protocols did)-.736 F(not completely distinguish en)72 692.4 Q
-.12(ve)-.32 G(lope from header).12 E(.)-.44 E EP
-%%Page: 63 59
+%%Page: 68 64
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-63)195.86 E/F1 10/Times-Roman@0 SF .396(\214le line follo)117 96
-R .396(wing the map class name; \215ags and \214lenames can be e)-.25 F
-.397(xtracted from this line.)-.15 F(The)5.397 E
-(initialization function must return)117 108 Q/F2 9/Times-Roman@0 SF(TR)
-2.5 E(UE)-.36 E F1(if it successfully opened the map,)2.5 E F2 -.666(FA)
-2.5 G(LSE).666 E F1(otherwise.)2.5 E(The lookup function is called as)
-142 124.2 Q/F3 10/Times-Italic@0 SF(xxx)157 140.4 Q F1
+/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
+(The initialization function is called as)142 96 Q/F2 10/Times-Italic@0
+SF(xxx)157 112.2 Q F1(_map_init\(MAP *map, char *ar)A(gs\))-.18 E(The)
+117 128.4 Q F2(map)3.279 E F1 .779(is an internal data structure.)3.279
+F(The)5.779 E F2(ar)3.279 E(gs)-.37 E F1 .78
+(is a pointer to the portion of the con\214guration)3.279 F .397
+(\214le line follo)117 140.4 R .396
+(wing the map class name; \215ags and \214lenames can be e)-.25 F .396
+(xtracted from this line.)-.15 F(The)5.396 E
+(initialization function must return)117 152.4 Q/F3 9/Times-Roman@0 SF
+(TR)2.5 E(UE)-.36 E F1(if it successfully opened the map,)2.5 E F3 -.666
+(FA)2.5 G(LSE).666 E F1(otherwise.)2.5 E
+(The lookup function is called as)142 168.6 Q F2(xxx)157 184.8 Q F1
(_map_lookup\(MAP *map, char b)A(uf[], char **a)-.2 E 1.3 -.65(v, i)-.2
-H(nt *statp\)).65 E(The)117 156.6 Q F3(map)2.773 E F1 .273
-(de\214nes the map internally)2.773 F 5.273(.T)-.65 G(he)-5.273 E F3 -.2
+H(nt *statp\)).65 E(The)117 201 Q F2(map)2.772 E F1 .272
+(de\214nes the map internally)2.772 F 5.273(.T)-.65 G(he)-5.273 E F2 -.2
(bu)2.773 G(f).2 E F1 .273(has the input k)2.773 F -.15(ey)-.1 G 5.273
-(.T)-.5 G .272(his may be \(and often is\) used)-5.273 F(destructi)117
-168.6 Q -.15(ve)-.25 G(ly).15 E 5.151(.T)-.65 G(he)-5.151 E F3(av)2.651
-E F1 .151(is a list of ar)2.651 F .151(guments passed in from the re)
--.18 F .152(write line.)-.25 F .152(The lookup function)5.152 F .205
-(should return a pointer to the ne)117 180.6 R 2.705(wv)-.25 G 2.705
-(alue. IF)-2.955 F .205(the map lookup f)2.705 F(ails,)-.1 E F3(*statp)
-2.705 E F1 .204(should be set to an e)2.705 F(xit)-.15 E .301
-(status code; in particular)117 192.6 R 2.801(,i)-.4 G 2.801(ts)-2.801 G
-.302(hould be set to)-2.801 F F2(EX_TEMPF)2.802 E(AIL)-.666 E F1 .302
-(if reco)2.802 F -.15(ve)-.15 G .302(ry is to be attempted by the).15 F
-(higher le)117 204.6 Q -.15(ve)-.25 G 2.5(lc).15 G(ode.)-2.5 E F0 2.5
-(6.3.5. Queueing)102 228.6 R(Function)2.5 E F1 .783(The routine)142
-244.8 R F3(shouldqueue)3.283 E F1 .783
+(.T)-.5 G .273(his may be \(and often is\) used)-5.273 F(destructi)117
+213 Q -.15(ve)-.25 G(ly).15 E 5.152(.T)-.65 G(he)-5.152 E F2(av)2.652 E
+F1 .151(is a list of ar)2.652 F .151(guments passed in from the re)-.18
+F .151(write line.)-.25 F .151(The lookup function)5.151 F .322
+(should return a pointer to the ne)117 225 R 2.822(wv)-.25 G 2.822
+(alue. If)-3.072 F .322(the map lookup f)2.822 F(ails,)-.1 E F2(*statp)
+2.822 E F1 .322(should be set to an e)2.822 F(xit)-.15 E .302
+(status code; in particular)117 237 R 2.802(,i)-.4 G 2.802(ts)-2.802 G
+.302(hould be set to)-2.802 F F3(EX_TEMPF)2.802 E(AIL)-.666 E F1 .302
+(if reco)2.802 F -.15(ve)-.15 G .301(ry is to be attempted by the).15 F
+(higher le)117 249 Q -.15(ve)-.25 G 2.5(lc).15 G(ode.)-2.5 E F0 2.5
+(6.3.4. Queueing)102 273 R(Function)2.5 E F1 .782(The routine)142 289.2
+R F2(shouldqueue)3.282 E F1 .783
(is called to decide if a message should be queued or processed)3.283 F
-(immediately)117 256.8 Q 6.618(.T)-.65 G 1.618
+(immediately)117 301.2 Q 6.619(.T)-.65 G 1.618
(ypically this compares the message priority to the current load a)
--7.418 F -.15(ve)-.2 G 4.119(rage. The).15 F(def)117 268.8 Q
-(ault de\214nition is:)-.1 E(bool)157 285 Q(shouldqueue\(pri, ctime\))
-157 297 Q(long pri;)175 309 Q(time_t ctime;)175 321 Q({)157 333 Q
-(if \(CurrentLA < QueueLA\))175 345 Q(return \(F)193 357 Q(ALSE\);)-.74
-E(return \(pri > \(QueueF)175 369 Q
-(actor / \(CurrentLA \255 QueueLA + 1\)\)\);)-.15 E(})157 381 Q 2.063
-(If the current load a)117 397.2 R -.15(ve)-.2 G 2.062(rage \(global v)
-.15 F(ariable)-.25 E F3(Curr)4.562 E(entLA)-.37 E F1 4.562(,w)C 2.062
-(hich is set before this function is)-4.562 F 1.057
-(called\) is less than the lo)117 409.2 R 3.558(wt)-.25 G 1.058
+-7.419 F -.15(ve)-.2 G 4.118(rage. The).15 F(def)117 313.2 Q
+(ault de\214nition is:)-.1 E(bool)157 329.4 Q(shouldqueue\(pri, ctime\))
+157 341.4 Q(long pri;)175 353.4 Q(time_t ctime;)175 365.4 Q({)157 377.4
+Q(if \(CurrentLA < QueueLA\))175 389.4 Q(return \(F)193 401.4 Q(ALSE\);)
+-.74 E(return \(pri > \(QueueF)175 413.4 Q
+(actor / \(CurrentLA \255 QueueLA + 1\)\)\);)-.15 E(})157 425.4 Q 2.062
+(If the current load a)117 441.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)-4.562 F 1.058
+(called\) is less than the lo)117 453.6 R 3.558(wt)-.25 G 1.058
(hreshold load a)-3.558 F -.15(ve)-.2 G 1.058(rage \(option).15 F F0(x)
-3.558 E F1 3.558(,v)C(ariable)-3.808 E F3(QueueLA)3.558 E F1(\),)A F3
-(shouldqueue)3.558 E F1(returns)117 421.2 Q F2 -.666(FA)2.587 G(LSE).666
-E F1 .086(immediately \(that is, it should)2.587 F F3(not)2.586 E F1
+3.557 E F1 3.557(,v)C(ariable)-3.807 E F2(QueueLA)3.557 E F1(\),)A F2
+(shouldqueue)3.557 E F1(returns)117 465.6 Q F3 -.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
-.086(rage e).15 F .086(xceeds the)-.15 F .587(high threshold load a)117
-433.2 R -.15(ve)-.2 G .587(rage \(option).15 F F0(X)3.087 E F1 3.087(,v)
-C(ariable)-3.337 E F3(RefuseLA)3.087 E F1(\),)A F3(shouldqueue)3.088 E
-F1(returns)3.088 E F2(TR)3.088 E(UE)-.36 E F1(immedi-)3.088 E(ately)117
-445.2 Q 7.126(.O)-.65 G 2.125
-(therwise, it computes the function based on the message priority)-7.126
-F 4.625(,t)-.65 G 2.125(he queue f)-4.625 F(actor)-.1 E(\(option)117
-457.2 Q F0(q)2.5 E F1 2.5(,g)C(lobal v)-2.5 E(ariable)-.25 E F3(QueueF)
+.087(rage e).15 F .087(xceeds the)-.15 F .588(high threshold load a)117
+477.6 R -.15(ve)-.2 G .588(rage \(option).15 F F0(X)3.087 E F1 3.087(,v)
+C(ariable)-3.337 E 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
+489.6 Q 7.125(.O)-.65 G 2.125
+(therwise, it computes the function based on the message priority)-7.125
+F 4.626(,t)-.65 G 2.126(he queue f)-4.626 F(actor)-.1 E(\(option)117
+501.6 Q F0(q)2.5 E F1 2.5(,g)C(lobal v)-2.5 E(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.066(An implementation wishing to tak)142 473.4
-R 3.566(et)-.1 G 1.067
-(he actual age of the message into account can also)-3.566 F 1.41
-(use the)117 485.4 R F3(ctime)3.91 E F1(parameter)3.91 E 3.91(,w)-.4 G
+(ve)-.2 G(rages.).15 E 1.067(An implementation wishing to tak)142 517.8
+R 3.567(et)-.1 G 1.066
+(he actual age of the message into account can also)-3.567 F 1.41
+(use the)117 529.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)-3.91 F 1.41
-(as \214rst submitted to)-.1 F F3(sendmail)3.91 E F1(.)A .928
-(Note that the)117 497.4 R F3(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 509.4 R .395
+(as \214rst submitted to)-.1 F F2(sendmail)3.91 E F1(.)A .929
+(Note that the)117 541.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 553.8 R .395
(wer the priority of the message with time\); the e)-.25 F .395
-(xpectation is that)-.15 F(the)117 521.4 Q F3(ctime)2.674 E F1 -.1(wo)
+(xpectation is that)-.15 F(the)117 565.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 545.4 R(Incoming SMTP Connections)2.5 E F1 1.149
-(The function)142 561.6 R F3 -.37(re)3.648 G(fuseconnections).37 E F1
-(returns)3.648 E F2(TR)3.648 E(UE)-.36 E F1 1.148
-(if incoming SMTP connections should be)3.648 F 3.563(refused. The)117
-573.6 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 585.6 Q -.15(ve)-.2 G
+(6.3.5. Refusing)102 589.8 R(Incoming SMTP Connections)2.5 E F1 1.148
+(The function)142 606 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
+618 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 630 Q -.15(ve)-.2 G
(rage option \(option).15 E F0(X)2.5 E F1 2.5(,g)C(lobal v)-2.5 E
-(ariable)-.25 E F3(RefuseLA)2.5 E F1(\):)A(bool)157 601.8 Q
-(refuseconnections\(\))157 613.8 Q({)157 625.8 Q
-(return \(CurrentLA >= RefuseLA\);)175 637.8 Q(})157 649.8 Q 2.5(Am)117
-666 S(ore cle)-2.5 E -.15(ve)-.25 G 2.5(ri).15 G
-(mplementation could look at more system resources.)-2.5 E F0 2.5
-(6.3.7. Load)102 690 R -.6 -1(Av e)2.5 H(rage Computation)1 E F1 .244
-(The routine)142 706.2 R F3 -.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.743 E
-(ution)-.2 E 1.156(includes se)117 718.2 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)-3.657 G 1.157(ironment you may).4 F EP
-%%Page: 64 60
+(ariable)-.25 E F2(RefuseLA)2.5 E F1(\):)A(bool)157 646.2 Q
+(refuseconnections\(\))157 658.2 Q({)157 670.2 Q
+(return \(CurrentLA >= RefuseLA\);)175 682.2 Q(})157 694.2 Q 2.5(Am)117
+710.4 S(ore cle)-2.5 E -.15(ve)-.25 G 2.5(ri).15 G
+(mplementation could look at more system resources.)-2.5 E EP
+%%Page: 69 65
%%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
-(need to add some ne)117 98 Q 2.5(wt)-.25 G(weaks.)-2.5 E/F2 7
-/Times-Roman@0 SF(25)-4 I F0 2.5(6.4. Con\214guration)87 122 R(in sr)2.5
-E(c/daemon.c)-.18 E F1 .4(The \214le)127 138.2 R/F3 10/Times-Italic@0 SF
-(sr)2.9 E(c/daemon.c)-.37 E F1 .4
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-69)195.86 E 2.5(6.3.6. Load)102 96 R -.6 -1(Av e)2.5 H
+(rage Computation)1 E/F1 10/Times-Roman@0 SF .243(The routine)142 112.2
+R/F2 10/Times-Italic@0 SF -.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 124.2 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)-3.657 G 1.157(ironment you may).4 F
+(need to add some ne)117 138.2 Q 2.5(wt)-.25 G(weaks.)-2.5 E/F3 7
+/Times-Roman@0 SF(27)-4 I F0 2.5(6.4. Con\214guration)87 162.2 R(in sr)
+2.5 E(c/daemon.c)-.18 E F1 .4(The \214le)127 178.4 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 150.2 Q 2.5(vironment. The)-.4 F -.15(ve)2.5 G
+F(ork-)-.1 E(ing en)102 190.4 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 166.4 R 2.16
-(vious releases, we recommended that you modify the routine)-.25 F F3
-(maphostname)4.66 E F1 2.16(if you)4.66 F -.1(wa)102 178.4 S 1.919
+.15 E(ets.)-.1 E 2.16(In pre)127 206.6 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 218.6 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)-4.418 H 1.918
-(ecommend that you create a ne).25 F 4.418(wk)-.25 G -.15(ey)-4.518 G
-1.918(ed map).15 F(instead.)102 190.4 Q F0 2.5(7. CHANGES)72 214.4 R
-(IN VERSION 8)2.5 E F1 .195(The follo)112 230.6 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 F3(sendmail)2.696 E F1
-(\(5.67\).)2.696 E -.15(Fo)87 242.6 S 2.703(rad).15 G .203
-(etailed list, consult the \214le RELEASE_NO)-2.703 F .203
-(TES in the root directory of the)-.4 F F3(sendmail)2.702 E F1(distrib)
-2.702 E(ution.)-.2 E F0 2.5(7.1. Connection)87 266.6 R(Caching)2.5 E F1
-.397(Instead of closing SMTP connections immediately)127 282.8 R 2.897
-(,t)-.65 G .398(hose connections are cached for possible)-2.897 F .598
-(future use.)102 294.8 R .598(The adv)5.598 F .597
-(ent of MX records made this ef)-.15 F(fecti)-.25 E .897 -.15(ve f)-.25
-H .597(or mailing lists; in addition, substantial).15 F
-(performance impro)102 306.8 Q -.15(ve)-.15 G(ments can be e).15 E
-(xpected for queue processing.)-.15 E F0 2.5(7.2. MX)87 330.8 R
-(Piggybacking)2.5 E F1 1.257(If tw)127 347 R 3.757(oh)-.1 G 1.257
-(osts with dif)-3.757 F 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 359 R 3.44(yc)
--.15 G .94(an be sent in the same transaction.)-3.44 F -1.11(Ve)5.94 G
-.94(rsion 8 notices this and tries to batch the mes-)1.11 F(sages.)102
-371 Q F0 2.5(7.3. RFC)87 395 R(1123 Compliance)2.5 E F1 3.462(An)127
-411.2 S .962(umber of changes ha)-3.462 F 1.262 -.15(ve b)-.2 H .962
-(een made to mak).15 F(e)-.1 E F3(sendmail)3.462 E F1 .963
-(\231conditionally compliant\232 \(that is,)3.463 F F3(sendmail)102
-423.2 Q F1 .05(satis\214es all of the \231MUST\232 clauses and most b)
-2.55 F .049(ut not all of the \231SHOULD\232 clauses in RFC)-.2 F
-(1123\).)102 435.2 Q(The major areas of change are \(numbers are RFC 1123 section numbers\):)
-127 451.4 Q 15(5.2.7 Response)102 467.6 R(to RCPT command is f)2.5 E
-(ast.)-.1 E 15(5.2.8 Numeric)102 483.8 R
-(IP addresses are logged in Recei)2.5 E -.15(ve)-.25 G(d: lines.).15 E
-10(5.2.17 Self)102 500 R(domain literal is properly handled.)2.5 E 15
-(5.3.2 Better)102 516.2 R(control o)2.5 E -.15(ve)-.15 G 2.5(ri).15 G
-(ndi)-2.5 E(vidual timeouts.)-.25 E 15(5.3.3 Error)102 532.4 R
-(messages are sent as \231From:<>\232.)2.5 E 15(5.3.3 Error)102 548.6 R
-(messages are ne)2.5 E -.15(ve)-.25 G 2.5(rs).15 G(ent to \231<>\232.)
--2.5 E 15(5.3.3 Route-addrs)102 564.8 R(are pruned.)2.5 E
-(The areas in which)102 581 Q F3(sendmail)2.5 E F1
-(is not \231unconditionally compliant\232 are:)2.5 E(5.2.6)102 597.2 Q
-F3(Sendmail)17.5 E F1(does do header munging.)2.5 E(5.2.10)102 613.4 Q
-F3(Sendmail)12.5 E F1(doesn')2.5 E 2.5(ta)-.18 G -.1(lwa)-2.5 G
-(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 629.6 Q F3(Sendmail)10 E F1(doesn')2.5 E 2.5(tg)-.18
-G(uarantee only one connect for each host in queue runs.)-2.5 E(5.3.1.1)
-102 645.8 Q F3(Sendmail)10 E F1(doesn')2.5 E 2.5(ta)-.18 G -.1(lwa)-2.5
-G(ys pro).1 E(vide adequate concurrenc)-.15 E 2.5(yl)-.15 G(imits.)-2.5
-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(25)93.6 689.2 Q/F5 8/Times-Roman@0 SF
+(ecommend that you create a ne).25 F 4.419(wk)-.25 G -.15(ey)-4.519 G
+1.919(ed map).15 F(instead.)102 230.6 Q F0 2.5(7. A)72 254.6 R(CKNO)-.55
+E(WLEDGEMENTS)-.5 E F1(I')112 270.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)-4.237 F 4.237(ye)-.15 G(mplo)-4.237 E 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 282.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)-5.404
+F .282(INGRES Project at the Uni)87 294.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)-2.782 F .281(ain on the Mammoth)
+-.05 F(and T)87 306.8 Q(itan Projects at Berk)-.35 E(ele)-.1 E -.65(y.)
+-.15 G .789(Much of the second w)112 323 R -2.25 -.2(av e)-.1 H .789
+(of impro)3.489 F -.15(ve)-.15 G .789(ments resulting in v).15 F .79
+(ersion 8.1 should be credited to Bryan)-.15 F .545
+(Costales of the International Computer Science Institute.)87 335 R .545
+(As he passed me drafts of his book on)5.545 F F2(send-)3.045 E(mail)87
+347 Q F1 2.5(Iw)2.5 G(as inspired to start w)-2.6 E(orking on things ag)
+-.1 E 2.5(ain. Bryan)-.05 F -.1(wa)2.5 G 2.5(sa).1 G(lso a)-2.5 E -.25
+(va)-.2 G(ilable to bounce ideas of).25 E 2.5(fo)-.25 G(f.)-2.5 E(Gre)
+112 363.2 Q .667(gory Neil Shapiro of W)-.15 F .668
+(orchester Polytechnic Institute has become instrumental in all phases)
+-.8 F(of)87 375.2 Q F2(sendmail)3.1 E F1 .6(support and de)3.1 F -.15
+(ve)-.25 G .6(lopment, and w).15 F .599(as lar)-.1 F .599
+(gely responsible for getting v)-.18 F .599(ersions 8.8 and 8.9 out)-.15
+F(the door)87 387.2 Q(.)-.55 E(Man)112 403.4 Q 2.856 -.65(y, m)-.15 H
+(an).65 E 4.056(yp)-.15 G 1.556(eople contrib)-4.056 F 1.556
+(uted chunks of code and ideas to)-.2 F F2(sendmail)4.056 E F1 6.556(.I)
+C 4.056(th)-6.556 G 1.557(as pro)-4.056 F -.15(ve)-.15 G 4.057(nt).15 G
+4.057(ob)-4.057 G 4.057(ea)-4.057 G .464(group netw)87 415.4 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 427.4 Q(utions:)-.2 E
+(John Beck, He)127 443.6 Q(wlett-P)-.25 E(ackard & Sun Microsystems)-.15
+E -.25(Ke)127 455.6 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 467.6 Q
+2.5(wC)-.25 G(heng, Sun Microsystems)-2.5 E(Michael J. Corrig)127 479.6
+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 & InfoBeat)127
+491.6 Q -.15(Pa)127 503.6 S -.5(..)-4.402 -6 O 2.5(r\().552 6 O
+(Pell\) Emanuelsson)-2.5 E(Craig Ev)127 515.6 Q(erhart, T)-.15 E
+(ransarc Corporation)-.35 E(Per Hedeland, Ericsson)127 527.6 Q -.8(To)
+127 539.6 S 2.5(mI).8 G -.25(va)-2.5 G 2.5(rH).25 G(elbekkmo, Norwe)-2.5
+E(gian School of Economics)-.15 E
+(Kari Hurtta, Finnish Meteorological Institute)127 551.6 Q
+(Allan E. Johannesen, WPI)127 563.6 Q(Jonathan Kamens, OpenV)127 575.6 Q
+(ision T)-.6 E(echnologies, Inc.)-.7 E -.8(Ta)127 587.6 S
+(kahiro Kanbe, Fuji Xerox Information Systems Co., Ltd.).8 E
+(Brian Kantor)127 599.6 Q 2.5(,U)-.4 G(ni)-2.5 E -.15(ve)-.25 G
+(rsity of California, San Die).15 E(go)-.15 E(John K)127 611.6 Q(ennedy)
+-.25 E 2.5(,C)-.65 G(al State Uni)-2.5 E -.15(ve)-.25 G(rsity).15 E 2.5
+(,C)-.65 G(hico)-2.5 E(Murray S. K)127 623.6 Q(uchera)-.15 E(wy)-.15 E
+2.5(,H)-.65 G(ookUp Communication Corp.)-2.5 E(Bruce Lilly)127 635.6 Q
+2.5(,S)-.65 G(on)-2.5 E 2.5(yU)-.15 G(.S.)-2.5 E(Karl London)127 647.6 Q
+(Motonori Nakamura, Ritsumeikan Uni)127 659.6 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 671.6 Q(gie Mellon Uni)-.15 E -.15(ve)
+-.25 G(rsity).15 E .32 LW 76 681.2 72 681.2 DL 80 681.2 76 681.2 DL 84
+681.2 80 681.2 DL 88 681.2 84 681.2 DL 92 681.2 88 681.2 DL 96 681.2 92
+681.2 DL 100 681.2 96 681.2 DL 104 681.2 100 681.2 DL 108 681.2 104
+681.2 DL 112 681.2 108 681.2 DL 116 681.2 112 681.2 DL 120 681.2 116
+681.2 DL 124 681.2 120 681.2 DL 128 681.2 124 681.2 DL 132 681.2 128
+681.2 DL 136 681.2 132 681.2 DL 140 681.2 136 681.2 DL 144 681.2 140
+681.2 DL 148 681.2 144 681.2 DL 152 681.2 148 681.2 DL 156 681.2 152
+681.2 DL 160 681.2 156 681.2 DL 164 681.2 160 681.2 DL 168 681.2 164
+681.2 DL 172 681.2 168 681.2 DL 176 681.2 172 681.2 DL 180 681.2 176
+681.2 DL 184 681.2 180 681.2 DL 188 681.2 184 681.2 DL 192 681.2 188
+681.2 DL 196 681.2 192 681.2 DL 200 681.2 196 681.2 DL 204 681.2 200
+681.2 DL 208 681.2 204 681.2 DL 212 681.2 208 681.2 DL 216 681.2 212
+681.2 DL/F4 5/Times-Roman@0 SF(27)93.6 691.6 Q/F5 8/Times-Roman@0 SF
(If you do, please send updates to sendmail@Sendmail.ORG.)3.2 I EP
-%%Page: 65 61
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-65)195.86 E 2.5(7.4. Extended)87 96 R(SMTP Support)2.5 E/F1 10
-/Times-Roman@0 SF -1.11(Ve)127 112.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(by RFC 1651 \(basic\) and RFC 1653 \(SIZE\); and limited support for RFC 1652 \(BOD)
-102 124.2 Q(Y\).)-.55 E F0 2.5(7.5. Eight-Bit)87 148.2 R(Clean)2.5 E F1
-(Pre)127 164.4 Q 1.264(vious v)-.25 F 1.264(ersions of)-.15 F/F2 10
-/Times-Italic@0 SF(sendmail)3.764 E F1 1.264
-(used the 0200 bit for quoting.)3.764 F 1.263(This v)6.263 F 1.263
-(ersion a)-.15 F -.2(vo)-.2 G 1.263(ids that use.).2 F(Ho)102 176.4 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.)-2.5 E(Indi)127 192.6 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.)-2.5 E F0 2.5(7.6. User)87 216.6
-R(Database)2.5 E F1 1.072(The user database is an as-yet e)127 232.8 R
-1.072(xperimental attempt to pro)-.15 F 1.073(vide uni\214ed lar)-.15 F
-1.073(ge-site name sup-)-.18 F 2.5(port. W)102 244.8 R 2.5(ea)-.8 G
-(re installing it at Berk)-2.5 E(ele)-.1 E(y; future v)-.15 E
-(ersions may sho)-.15 E 2.5(ws)-.25 G(igni\214cant modi\214cations.)-2.5
-E F0 2.5(7.7. Impr)87 268.8 R -.1(ove)-.18 G 2.5(dB).1 G(IND Support)
--2.5 E F1 .489
-(The BIND support, particularly for MX records, had a number of anno)127
-285 R .489(ying \231features\232 which)-.1 F(ha)102 297 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)
--3.412 G .912(his release.)-3.412 F .912(In particular)5.912 F 3.412(,t)
--.4 G .912(hese more tightly bind \(pun intended\) the name)-3.412 F
-(serv)102 309 Q(er to)-.15 E F2(sendmail)2.5 E F1 2.5(,s)C 2.5(ot)-2.5 G
-(hat the name serv)-2.5 E
-(er resolution rules are incorporated directly into)-.15 E F0(sendmail)
-2.5 E F1(.)A F0 2.5(7.8. K)87 333 R(ey)-.25 E(ed Files)-.1 E F1 .366
-(Generalized k)127 349.2 R -.15(ey)-.1 G .366(ed \214les is an idea tak)
-.15 F .366(en directly from)-.1 F/F3 9/Times-Roman@0 SF(ID)2.865 E(A)
--.36 E F2(sendmail)2.865 E F1 .365(\(albeit with a completely)2.865 F
-(dif)102 361.2 Q(ferent implementation\).)-.25 E(The)5 E 2.5(yc)-.15 G
-(an be useful on lar)-2.5 E(ge sites.)-.18 E -1.11(Ve)127 377.4 S
-(rsion 8 also understands YP)1.11 E(.)-1.11 E F0 2.5(7.9. Multi-W)87
-401.4 R(ord Classes)-.75 E F1(Classes can no)127 417.6 Q 2.5(wb)-.25 G
-2.5(em)-2.5 G(ultiple w)-2.5 E 2.5(ords. F)-.1 F(or e)-.15 E(xample,)
--.15 E(CShofmann.CS.Berk)142 433.8 Q(ele)-.1 E -.65(y.)-.15 G(EDU).65 E
-(allo)102 450 Q 2.663
-(ws you to match the entire string \231hofmann.CS.Berk)-.25 F(ele)-.1 E
--.65(y.)-.15 G 2.664(EDU\232 using the single construct).65 F
-(\231$=S\232.)102 462 Q F0 2.5(7.10. Deferr)87 486 R(ed Macr)-.18 E 2.5
-(oE)-.18 G(xpansion)-2.5 E F1(The)127 502.2 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 526.2 R(Pr)2.5 E(otocol Support)-.18 E F1
-(The IDENT protocol as de\214ned in RFC 1413 is supported.)127 542.4 Q
-F0 2.5(7.12. P)87 566.4 R(arsing Bug Fixes)-.1 E F1 4.03(An)127 582.6 S
-1.53(umber of small b)-4.03 F 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)-4.03 F(comments ha)102 594.6 Q .3
--.15(ve b)-.2 H(een \214x).15 E(ed.)-.15 E F0 2.5(7.13. Separate)87
-618.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 634.8
-R -.15(ve)-.4 G .854(lope sender).15 F 3.354(,t)-.4 G .854(hese ha)
--3.354 F 1.154 -.15(ve b)-.2 H .854(oth been).15 F .428
-(made visible; the)102 646.8 R F0($g)2.928 E F1 .428
-(macro is set to the en)2.928 F -.15(ve)-.4 G .427
-(lope sender during processing of mailer ar).15 F .427(gument v)-.18 F
-(ec-)-.15 E(tors and the header sender during processing of headers.)102
-658.8 Q .084(It is also possible to specify separate per)127 675 R .085
-(-mailer en)-.2 F -.15(ve)-.4 G .085(lope and header processing.).15 F
-(The)5.085 E F0(S)2.585 E F1(ender)A(-)-.2 E -.55(RW)102 687 S .513
-(Set and).55 F F0(R)3.013 E F1(ecipientR)A .513(Wset ar)-.55 F .512
-(guments for mailers can be speci\214ed as)-.18 F F2(en)3.012 E
-(velope/header)-.4 E F1 .512(to gi)3.012 F .812 -.15(ve d)-.25 H(if-).15
-E(ferent re)102 699 Q(writings for en)-.25 E -.15(ve)-.4 G(lope v).15 E
-(ersus header addresses.)-.15 E EP
-%%Page: 66 62
-%%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 2.5(7.14. Owner)87 96 R
-(-List Pr)-.37 E(opagates to En)-.18 E -.1(ve)-.4 G(lope).1 E/F1 10
-/Times-Roman@0 SF 1(When an alias has an associated o)127 112.2 R 1.001
-(wner\255list name, that alias is used to change the en)-.25 F -.15(ve)
--.4 G(lope).15 E(sender address.)102 124.2 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 148.2 R(Header Allocation)2.5 E F1(The \214x)127
-164.4 Q(ed size limit on header lines has been eliminated.)-.15 E F0 2.5
-(7.16. New)87 188.4 R(Command Line Flags)2.5 E F1(The)127 204.6 Q F0
-<ad42>2.5 E F1(\215ag has been added to pass in body type information.)
-2.5 E(The)127 220.8 Q F0<ad70>2.5 E F1
-(\215ag has been added to pass in protocol information.)2.5 E(The)127
-237 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)-2.6 F/F2 10
-/Times-Italic@0 SF(sendmail)2.6 E F1 .1(for deb)2.6 F(ug-)-.2 E(ging.)
-102 249 Q(The)127 265.2 Q F0<ad4f>2.5 E F1
-(\215ag implies setting long-form options.)2.5 E F0 2.5(7.17. Enhanced)
-87 289.2 R(Command Line Flags)2.5 E F1(The)127 305.4 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 F0(\255qR)102 317.4 Q F2(substring)A F0 2.5<2cad>C(qS)-2.5 E F2
-(substring)A F0 2.5(,o)C 2.5<72ad>-2.5 G(qI)-2.5 E 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
-341.4 R(and Old Con\214guration Line T)2.5 E(ypes)-.74 E F1(The)127
-357.6 Q F0(K)2.5 E F1(line has been added to declare database maps.)2.5
-E(The)127 373.8 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 390 Q F0(M)2.797 E F1 .296(line has a \231D=\232 \214eld that lets you change into a temporary directory while that mailer)
-2.797 F .58(is running.)102 402 R .58
-(It also has a \231U=\232 \214eld to allo)5.58 F 3.08(wy)-.25 G .581
-(ou to set the user and group id to be used when run-)-3.08 F
-(ning the mailer)102 414 Q(.)-.55 E F0 2.5(7.19. New)87 438 R(Options)
-2.5 E F1(Se)127 454.2 Q -.15(ve)-.25 G .9(ral ne).15 F 3.4(wo)-.25 G .9
-(ptions ha)-3.4 F 1.2 -.15(ve b)-.2 H .9(een added, man).15 F 3.4(yt)
--.15 G 3.4(os)-3.4 G .9(upport ne)-3.4 F 3.4(wf)-.25 G .9
-(eatures, others to allo)-3.4 F 3.4(wt)-.25 G(uning)-3.4 E 1.722(that w)
-102 466.2 R 1.722(as pre)-.1 F 1.722(viously a)-.25 F -.25(va)-.2 G
-1.722(ilable only by recompiling.).25 F(The)6.722 E 4.222(ya)-.15 G
-1.722(re described in detail in Section 5.6.)-4.222 F(Brie\215y)102
-478.2 Q(,)-.65 E 31(bI)102 494.4 S
-(nsist on a minimum number of disk blocks.)-31 E 29.33(CS)102 510.6 S
-(et checkpoint interv)-29.33 E(al.)-.25 E 29.89(ED)102 526.8 S(ef)-29.89
-E(ault error message.)-.1 E 28.78(GE)102 543 S(nable GECOS matching.)
--28.78 E 31(hM)102 559.2 S(aximum hop count.)-31 E 33.22(jS)102 575.4 S
-(end errors in MIME-encapsulated format.)-33.22 E 32.11(JF)102 591.6 S
-(orw)-32.26 E(ard \214le path.)-.1 E 31(kC)102 607.8 S
-(onnection cache size)-31 E 28.78(KC)102 624 S
-(onnection cache lifetime.)-28.78 E 33.22(lE)102 640.2 S .334
-(nable Errors-T)-33.22 F .334(o: header)-.8 F 5.334(.T)-.55 G .334
-(hese headers violate RFC 1123; this option is included to pro-)-5.334 F
-(vide back compatibility with old v)138 652.2 Q(ersions of)-.15 E F2
-(sendmail)2.5 E F1(.)A 28.78(OS)102 668.4 S
-(et incoming SMTP daemon options, such as an alternate SMTP port.)-28.78
-E 31(pP)102 684.6 S(ri)-31 E -.25(va)-.25 G .3 -.15(cy o).25 H(ptions.)
-.15 E 29.33(RD)102 700.8 S(on')-29.33 E 2.5(tp)-.18 G(rune route-addrs.)
--2.5 E EP
-%%Page: 67 63
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-67)195.86 E/F1 10/Times-Roman@0 SF 28.78(UU)102 96 S
-(ser database spec.)-28.78 E 28.78(VF)102 112.2 S
-(allback \231MX\232 host.)-28.93 E 28.78<7799>102 128.4 S
-(Best MX\232 handling technique.)-28.78 E 31(7D)102 144.6 S 2.5(on)-31 G
-(ot run eight bit clean.)-2.5 E 31(8E)102 160.8 S
-(ight bit data handling mode.)-31 E F0 2.5(7.20. Extended)87 184.8 R
-(Options)2.5 E F1(The)127 201 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 213 Q
-F0 2.5(7.21. New)87 237 R(Mailer Flags)2.5 E F1(Se)127 253.2 Q -.15(ve)
--.25 G(ral ne).15 E 2.5(wm)-.25 G(ailer \215ags ha)-2.5 E .3 -.15(ve b)
--.2 H(een added.).15 E 31.56(aT)102 269.4 S .636
-(ry to use ESMTP when creating a connection.)-31.91 F .636
-(If this is not set,)5.636 F/F2 10/Times-Italic@0 SF(sendmail)3.136 E F1
-.635(will still try if)3.136 F .22(the other end hints that it kno)138
-281.4 R .221
-(ws about ESMTP in its greeting message; this \215ag says to try)-.25 F
--2.15 -.25(ev e)138 293.4 T 2.596(ni).25 G 2.596(fi)-2.596 G 2.596(td)
--2.596 G(oesn')-2.596 E 2.596(th)-.18 G 2.596(int. If)-2.596 F .095
-(the EHLO \(e)2.595 F .095(xtended hello\) command f)-.15 F(ails,)-.1 E
-F2(sendmail)2.595 E F1 -.1(fa)2.595 G .095(lls back to).1 F(old SMTP)138
-305.4 Q(.)-1.11 E 28.78(AT)102 321.6 S
-(ry the user part of addresses for this mailer as aliases.)-29.13 E 31
-(bE)102 337.8 S
-(nsure that there is a blank line at the end of all messages.)-31 E
-31.56(cS)102 354 S .68(trip all comments from addresses; this should only be used as a last resort when dealing)
--31.56 F(with crank)138 366 Q 2.5(ym)-.15 G(ailers.)-2.5 E 31(gN)102
-382.2 S -2.15 -.25(ev e)-31 H 2.641(ru).25 G .141
-(se the null sender as the en)-2.641 F -.15(ve)-.4 G .141(lope sender)
-.15 F 2.641(,e)-.4 G -.15(ve)-2.891 G 2.641(nw).15 G .14
-(hen running SMTP)-2.641 F 5.14(.A)-1.11 G .14(lthough this)-5.14 F
-1.521(violates RFC 1123, it may be necessary when you must deal with some obnoxious old)
-138 394.2 R(hosts.)138 406.2 Q 31(kT)102 422.4 S(urn of)-31.45 E 2.5(ft)
--.25 G(he loopback check in the HELO protocol; doing this may cause mailer loops.)
--2.5 E 31(oA)102 438.6 S -.1(lwa)-31 G
-(ys run the mailer as the recipient of the message.).1 E 28.78(wT)102
-454.8 S(his user should ha)-28.78 E .3 -.15(ve a p)-.2 H
-(asswd \214le entry).15 E(.)-.65 E 31(5T)102 471 S
-(ry ruleset 5 if no local aliases.)-31.35 E 31(7S)102 487.2 S
-(trip all output to 7 bits.)-31 E 33.22(:C)102 503.4 S
-(heck for :include: \214les.)-33.22 E 34(|C)102 519.6 S
-(heck for |program addresses.)-34 E 33.22(/C)102 535.8 S
-(heck for /\214le addresses.)-33.22 E 26.79(@C)102 552 S
-(heck this user ag)-26.79 E(ainst the user database.)-.05 E F0 2.5
-(7.22. Long)87 576 R(Option Names)2.5 E F1 .856
-(All options can be speci\214ed using long names, and some ne)127 592.2
-R 3.356(wo)-.25 G .856(ptions can only be speci\214ed)-3.356 F
-(with long names.)102 604.2 Q F0 2.5(7.23. New)87 628.2 R(Pr)2.5 E
-(e-De\214ned Macr)-.18 E(os)-.18 E F1(The follo)127 644.4 Q
-(wing macros are pre-de\214ned:)-.25 E 23.5($k The)102 660.6 R
-(UUCP node name, nominally from)2.5 E F2(uname)2.5 E F1(\(2\) call.)A
-20.72($m The)102 676.8 R(domain part of our full hostname.)2.5 E 23.5
-($_ The)102 693 R(RFC 1413-pro)2.5 E(vided sender address.)-.15 E EP
-%%Page: 68 64
-%%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 2.5(7.24. New)87 96 R(LHS T)2.5
-E(ok)-.92 E(en)-.1 E/F1 10/Times-Roman@0 SF -1.11(Ve)127 112.2 S 1.375
-(rsion 8 allo)1.11 F(ws)-.25 E F0($@)3.875 E F1 1.376
-(on the Left Hand Side of an \231R\232 line to match zero tok)3.875 F
-3.876(ens. This)-.1 F(is)3.876 E
-(intended to be used to match the null input.)102 124.2 Q F0 2.5
-(7.25. Bigger)87 148.2 R(Defaults)2.5 E F1 -1.11(Ve)127 164.4 S 1.284
-(rsion 8 allo)1.11 F 1.284(ws up to 100 rulesets instead of 30.)-.25 F
-1.283(It is recommended that rulesets 0\2559 be)6.284 F(reserv)102 176.4
-Q(ed for)-.15 E/F2 10/Times-Italic@0 SF(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 192.6 Q .335(The number of queued messages that can be handled at one time has been raised from 600 to)
-127 208.8 R(1000.)102 220.8 Q F0 2.5(7.26. Differ)87 244.8 R
-(ent Default T)-.18 E(uning P)-.92 E(arameters)-.1 E F1 -1.11(Ve)127 261
-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)-3.3 F .712(recipients more important than the size of the message \(for small messages\).)
-102 273 R .712(This is reasonable if)5.712 F
-(you are connected with reasonably f)102 285 Q(ast links.)-.1 E F0 2.5
-(7.27. A)87 309 R(uto-Quoting in Addr)-.5 E(esses)-.18 E F1(Pre)127
-325.2 Q(viously)-.25 E 2.611(,t)-.65 G .111
-(he \231Full Name <email address>\232 syntax w)-2.611 F .111
-(ould generate incorrect protocol output)-.1 F
-(if \231Full Name\232 had special characters such as dot.)102 337.2 Q
-(This v)5 E(ersion puts quotes around such names.)-.15 E F0 2.5
-(7.28. Symbolic)87 361.2 R(Names On Err)2.5 E(or Mailer)-.18 E F1(Se)127
-377.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 401.4 R(VRFY Doesn't Expand)2.5 E F1(Pre)127 417.6 Q
-1.437(vious v)-.25 F 1.437(ersions of)-.15 F F2(sendmail)3.937 E F1
-1.438(treated VRFY and EXPN the same.)3.937 F 1.438(In this v)6.438 F
-1.438(ersion, VRFY)-.15 F(doesn')102 429.6 Q 2.5(te)-.18 G
-(xpand aliases or follo)-2.65 E 2.5(w.)-.25 G(forw)-2.5 E(ard \214les.)
--.1 E(EXPN still does.)5 E .682
-(As an optimization, if you run with your def)127 445.8 R .681
-(ault deli)-.1 F -.15(ve)-.25 G .681(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 457.8 R 1.582(ard \214les.)-.1 F 1.583(It will chase)6.582 F
-(them when it processes the queue.)102 469.8 Q F0 2.5(7.30. [IPC])87
-493.8 R(Mailers Allo)2.5 E 2.5(wM)-.1 G(ultiple Hosts)-2.5 E F1 .448
-(When an address resolv)127 510 R .448
-(es to a mailer that has \231[IPC]\232 as its \231P)-.15 F .447
-(ath\232, the $@ part \(host name\))-.15 F .137
-(can be a colon-separated list of hosts instead of a single hostname.)
-102 522 R .138(This asks)5.138 F F2(sendmail)2.638 E F1 .138
-(to search the)2.638 F .161(list for the \214rst entry that is a)102 534
-R -.25(va)-.2 G .161(ilable e).25 F .16
-(xactly as though it were an MX record.)-.15 F .16
-(The intent is to route)5.16 F .737(internal traf)102 546 R .738
-(\214c through internal netw)-.25 F .738
-(orks without publishing an MX record to the net.)-.1 F .738(MX e)5.738
-F(xpan-)-.15 E(sion is still done on the indi)102 558 Q(vidual items.)
--.25 E F0 2.5(7.31. Aliases)87 582 R(Extended)2.5 E F1 1.457
-(The implementation has been mer)127 598.2 R 1.457(ged with maps.)-.18 F
-1.456(Among other things, this supports NIS-)6.457 F(based aliases.)102
-610.2 Q F0 2.5(7.32. P)87 634.2 R(ortability and Security Enhancements)
--.2 E F1 2.5(An)127 650.4 S(umber of internal changes ha)-2.5 E .3 -.15
-(ve b)-.2 H(een made to enhance portability).15 E(.)-.65 E(Se)127 666.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 690.6 R(Changes)2.5 E F2(Sendmail)127 706.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 EP
-%%Page: 69 65
+%%Page: 70 66
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-69)195.86 E/F1 10/Times-Roman@0 SF -1 -.8(Tw o)127 96 T 1.646
-(people using the same program in their .forw)4.946 F 1.647
-(ard \214le are considered dif)-.1 F 1.647(ferent so that)-.25 F
-(duplicate elimination doesn')102 108 Q 2.5(td)-.18 G
-(elete one of them.)-2.5 E(The)127 124.2 Q/F2 10/Times-Italic@0 SF
-(mailstats)3.181 E F1 .681
-(program prints mailer names and gets the location of the)3.181 F F2
-(sendmail.st)3.18 E F1 .68(\214le from)3.18 F F2(/etc/sendmail.cf)102
-136.2 Q F1(.)A(Man)127 152.4 Q 2.5(ym)-.15 G(inor b)-2.5 E(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
-168.6 S(ook \(ruleset 5\) has been added to allo)-2.5 E 2.5(wr)-.25 G
--.25(ew)-2.5 G(riting of local addresses after aliasing.).25 E F0 2.5
-(8. A)72 192.6 R(CKNO)-.55 E(WLEDGEMENTS)-.5 E F1(I')112 208.8 Q 2.036
--.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)-4.237 F 4.237(ye)
--.15 G(mplo)-4.237 E 1.737(yers ha)-.1 F 2.037 -.15(ve b)-.2 H 1.737
-(een remarkably patient).15 F .404(about letting me w)87 220.8 R .404
-(ork on a lar)-.1 F .404(ge project that w)-.18 F .403
-(as not part of my of)-.1 F .403(\214cial job)-.25 F 5.403(.T)-.4 G .403
-(his includes time on the)-5.403 F .281(INGRES Project at the Uni)87
-232.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)-2.782 F
-.282(ain on the Mammoth)-.05 F(and T)87 244.8 Q(itan Projects at Berk)
--.35 E(ele)-.1 E -.65(y.)-.15 G .454(Much of the second w)112 261 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 .453(As he)
-5.453 F .781(passed me drafts of his book on)87 273 R F2(sendmail)3.281
-E F1 3.281(Iw)3.281 G .781(as inspired to start w)-3.381 F .781
-(orking on things ag)-.1 F 3.282(ain. Bryan)-.05 F -.1(wa)3.282 G(s).1 E
-(also a)87 285 Q -.25(va)-.2 G(ilable to bounce ideas of).25 E 2.5(fo)
--.25 G(f.)-2.5 E(Man)112 301.2 Q 2.857 -.65(y, m)-.15 H(an).65 E 4.057
-(yp)-.15 G 1.557(eople contrib)-4.057 F 1.556
-(uted chunks of code and ideas to)-.2 F F2(sendmail)4.056 E F1 6.556(.I)
-C 4.056(th)-6.556 G 1.556(as pro)-4.056 F -.15(ve)-.15 G 4.056(nt).15 G
-4.056(ob)-4.056 G 4.056(ea)-4.056 G .463(group netw)87 313.2 R .463
-(ork ef)-.1 F 2.963(fort. V)-.25 F .463(ersion 8 in particular w)-1.11 F
-.463(as a group project.)-.1 F .464(The follo)5.464 F .464
-(wing people made notable)-.25 F(contrib)87 325.2 Q(utions:)-.2 E
-(John Beck, He)127 341.4 Q(wlett-P)-.25 E(ackard)-.15 E -.25(Ke)127
-353.4 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 365.4 Q
-2.5(wC)-.25 G(heng, Sun Microsystems)-2.5 E(Michael J. Corrig)127 377.4
-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
-389.4 Q -.15(Pa)127 401.4 S -.5(..)-4.402 -6 O 2.5(r\().552 6 O
-(Pell\) Emanuelsson)-2.5 E(Craig Ev)127 413.4 Q(erhart, T)-.15 E
-(ransarc Corporation)-.35 E -.8(To)127 425.4 S 2.5(mI).8 G -.25(va)-2.5
-G 2.5(rH).25 G(elbekkmo, Norwe)-2.5 E(gian School of Economics)-.15 E
-(Allan E. Johannesen, WPI)127 437.4 Q(Jonathan Kamens, OpenV)127 449.4 Q
-(ision T)-.6 E(echnologies, Inc.)-.7 E -.8(Ta)127 461.4 S
-(kahiro Kanbe, Fuji Xerox Information Systems Co., Ltd.).8 E
-(Brian Kantor)127 473.4 Q 2.5(,U)-.4 G(ni)-2.5 E -.15(ve)-.25 G
-(rsity of California, San Die).15 E(go)-.15 E(Murray S. K)127 485.4 Q
-(uchera)-.15 E(wy)-.15 E 2.5(,H)-.65 G(ookUp Communication Corp.)-2.5 E
-(Bruce Lilly)127 497.4 Q 2.5(,S)-.65 G(on)-2.5 E 2.5(yU)-.15 G(.S.)-2.5
-E(Karl London)127 509.4 Q(Motonori Nakamura, Ritsumeikan Uni)127 521.4 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 533.4 Q(gie Mellon Uni)-.15 E -.15(ve)
--.25 G(rsity).15 E(Neil Rick)127 545.4 Q(ert, Northern Illinois Uni)-.1
-E -.15(ve)-.25 G(rsity).15 E(Eric Schnoebelen, Con)127 557.4 Q .3 -.15
-(vex C)-.4 H(omputer Corp.).15 E(Eric W)127 569.4 Q(assenaar)-.8 E 2.5
-(,N)-.4 G(ational Institute for Nuclear and High Ener)-2.5 E(gy Ph)-.18
-E(ysics, Amsterdam)-.05 E(Christophe W)127 581.4 Q(olfhugel, P)-.8 E
-(asteur Institute & Herv)-.15 E 2.5(eS)-.15 G(chauer Consultants \(P)
--2.5 E(aris\))-.15 E 3.22(Ia)87 597.6 S .72(pologize for an)-3.22 F .72
-(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 .719(At this point, I)5.719 F 1.092
-(suspect that at least a hundred people ha)87 609.6 R 1.393 -.15(ve c)
--.2 H(ontrib).15 E 1.093(uted code, and man)-.2 F 3.593(ym)-.15 G 1.093
-(ore ha)-3.593 F 1.393 -.15(ve c)-.2 H(ontrib).15 E 1.093(uted ideas,)
--.2 F 1.534(comments, and encouragement.)87 621.6 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.533
-(TES in the distrib)-.4 F(ution)-.2 E(directory)87 633.6 Q 5(.I)-.65 G
-(appreciate their contrib)-2.5 E(ution as well.)-.2 E .742
-(Special thanks are reserv)112 649.8 R .742(ed for Michael Corrig)-.15 F
-.743(an and Christophe W)-.05 F .743(olfhugel, who besides being)-.8 F
--.1(wo)87 661.8 S 2.1(nderful guinea pigs and contrib).1 F 2.1(utors ha)
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-70 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(Neil Rick)127 96 Q(ert, Northern Illinois Uni)-.1 E -.15(ve)-.25 G
+(rsity).15 E(Gre)127 108 Q(gory Neil Shapiro, WPI)-.15 E
+(Eric Schnoebelen, Con)127 120 Q .3 -.15(vex C)-.4 H(omputer Corp.).15 E
+(Eric W)127 132 Q(assenaar)-.8 E 2.5(,N)-.4 G
+(ational Institute for Nuclear and High Ener)-2.5 E(gy Ph)-.18 E
+(ysics, Amsterdam)-.05 E(Randall W)127 144 Q(inchester)-.4 E 2.5(,U)-.4
+G(ni)-2.5 E -.15(ve)-.25 G(rsity of Maryland).15 E(Christophe W)127 156
+Q(olfhugel, P)-.8 E(asteur Institute & Herv)-.15 E 2.5(eS)-.15 G
+(chauer Consultants \(P)-2.5 E(aris\))-.15 E 3.219(Ia)87 172.2 S .719
+(pologize for an)-3.219 F .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 184.2 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)-3.592 F 1.392 -.15(ve c)-.2 H(ontrib).15 E 1.092(uted ideas,)
+-.2 F 1.533(comments, and encouragement.)87 196.2 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 208.2 Q 5(.I)-.65 G
+(appreciate their contrib)-2.5 E(ution as well.)-.2 E .743
+(Special thanks are reserv)112 224.4 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 236.4 S 2.1(nderful guinea pigs and contrib).1 F 2.1(utors ha)
-.2 F 2.4 -.15(ve a)-.2 H 2.1(lso consented to be added to the `).15 F
-(`sendmail@Send-)-.74 E(mail.ORG')87 673.8 Q 3.61('l)-.74 G 1.11
-(ist and, by answering the b)-3.61 F 1.111
-(ulk of the questions sent to that list, ha)-.2 F 1.411 -.15(ve f)-.2 H
-1.111(reed me up to do).15 F(other w)87 685.8 Q(ork.)-.1 E EP
-%%Page: 70 66
+(`sendmail@Send-)-.74 E(mail.ORG')87 248.4 Q 3.611('l)-.74 G 1.111
+(ist and, by answering the b)-3.611 F 1.111
+(ulk of the questions sent to that list, ha)-.2 F 1.41 -.15(ve f)-.2 H
+1.11(reed me up to do).15 F(other w)87 260.4 Q(ork.)-.1 E EP
+%%Page: 71 67
%%BeginPageSetup
BP
%%EndPageSetup
@@ -5993,28 +6069,28 @@ BP
(erify addresses, don')-.15 E 2.5(tc)-.18 G(ollect or deli)-2.5 E -.15
(ve)-.25 G(r).15 E 17.22(iI)184 317.4 S(nitialize the alias database)
-17.22 E 15(pP)184 329.4 S(rint the mail queue)-15 E<ad42>72 349.8 Q F2
-(type)A F1(Indicate body type.)43.03 E<ad43>72 366 Q F2(\214le)A F1 .947
+(type)A F1(Indicate body type.)43.03 E<ad43>72 366 Q F2(\214le)A F1 .946
(Use a dif)47.47 F .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 378 Q<ad64>72 394.2 Q F2(le)A(vel)-.15 E F1(Set deb)42.63 E
(ugging le)-.2 E -.15(ve)-.25 G(l.).15 E<ad66>72 410.4 Q F2(addr)2.5 E
F1(The sender')41.64 E 2.5(sm)-.55 G(achine address is)-2.5 E F2(addr)
-2.5 E F1(.)A<ad46>72 426.6 Q F2(name)A F1
-(Sets the full name of this user to)39.14 E F2(name)2.5 E F1(.)A<ad68>72
-442.8 Q F2(cnt)2.5 E F1 .725(Sets the \231hop count\232 to)46.64 F F2
-(cnt)3.225 E F1 5.725(.T)C .726
+2.5 E F1(.)A<ad46>72 426.6 Q F2(name)2.5 E F1
+(Sets the full name of this user to)36.64 E F2(name)2.5 E F1(.)A<ad68>72
+442.8 Q F2(cnt)2.5 E F1 .726(Sets the \231hop count\232 to)46.64 F F2
+(cnt)3.226 E F1 5.725(.T)C .725
(his represents the number of times this message has been)-5.725 F .02
(processed by)144 454.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 466.8 R F2(sendmail)4.021 E F1(thro)144 478.8 Q(ws a)-.25 E -.1(wa)
+144 466.8 R F2(sendmail)4.02 E F1(thro)144 478.8 Q(ws a)-.25 E -.1(wa)
-.15 G 2.5(yt).1 G(he message with an error)-2.5 E(.)-.55 E 58.86
(\255n Don')72 495 R 2.5(td)-.18 G 2.5(oa)-2.5 G(liasing or forw)-2.5 E
(arding.)-.1 E<ad4e>72 511.2 Q F2(noti\214cations)2.5 E F1 -.8(Ta)7.19 G
-3.128(ga).8 G .628(ll addresses being sent as w)-3.128 F .628
-(anting the indicated)-.1 F F2(noti\214cations)3.128 E F1 3.127(,w)C
-.627(hich consists of the)-3.127 F -.1(wo)144 523.2 S .474
+3.127(ga).8 G .627(ll addresses being sent as w)-3.127 F .628
+(anting the indicated)-.1 F F2(noti\214cations)3.128 E F1 3.128(,w)C
+.628(hich consists of the)-3.128 F -.1(wo)144 523.2 S .474
(rd \231NEVER\232 or a comma-separated list of \231SUCCESS\232, \231F).1
F .474(AILURE\232, and \231DELA)-.74 F<599a>-1.05 E .86
(for successful deli)144 535.2 R -.15(ve)-.25 G(ry).15 E 3.36(,f)-.65 G
@@ -6025,21 +6101,21 @@ E(Y\232.)-1.05 E<ad72>72 563.4 Q F2(addr)2.5 E F1(An obsolete form of)
(xv)C(alue)-1.666 E F1(Set option)33.594 E 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.)-5 E<ad4f>72 595.8 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
+(option)A F3(=)A F2(value)A F1(Set)6.22 E F2(option)5.174 E F1 2.674
+(to the speci\214ed)5.174 F F2(value)5.174 E F1 2.674
+(\(for long form option names\).)5.174 F 2.673(These options are)7.674 F
(described in Section 5.6.)144 607.8 Q<ad4d>72 624 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)-2.5 G
(he speci\214ed value)-2.5 E(.)-.15 E F1<ad70>72 640.2 Q F2(pr)A(otocol)
--.45 E F1 .401(Set the sending protocol.)27.92 F .401
-(Programs are encouraged to set this.)5.401 F .4
-(The protocol \214eld can be)5.401 F .114(in the form)144 652.2 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,)-2.765 E 2.147(\231\255pUUCP:uunet\232 sets the sending protocol to UUCP and the sending host to uunet.)
-144 664.2 R .973(\(Some e)144 676.2 R .974
+-.45 E F1 .4(Set the sending protocol.)27.92 F .401
+(Programs are encouraged to set this.)5.4 F .401
+(The protocol \214eld can be)5.401 F .115(in the form)144 652.2 R F2(pr)
+2.615 E(otocol)-.45 E F3(:)A F2(host)A F1 .114
+(to set both the sending protocol and sending host.)2.615 F -.15(Fo)
+5.114 G 2.614(re).15 G(xample,)-2.764 E 2.147(\231\255pUUCP:uunet\232 sets the sending protocol to UUCP and the sending host to uunet.)
+144 664.2 R .974(\(Some e)144 676.2 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 .32 LW 76 685.8 72 685.8
+-.15 F -.25(va)-.25 G .973(lent to using).25 F .32 LW 76 685.8 72 685.8
DL 80 685.8 76 685.8 DL 84 685.8 80 685.8 DL 88 685.8 84 685.8 DL 92
685.8 88 685.8 DL 96 685.8 92 685.8 DL 100 685.8 96 685.8 DL 104 685.8
100 685.8 DL 108 685.8 104 685.8 DL 112 685.8 108 685.8 DL 116 685.8 112
@@ -6052,60 +6128,65 @@ DL 80 685.8 76 685.8 DL 84 685.8 80 685.8 DL 88 685.8 84 685.8 DL 92
685.8 DL 192 685.8 188 685.8 DL 196 685.8 192 685.8 DL 200 685.8 196
685.8 DL 204 685.8 200 685.8 DL 208 685.8 204 685.8 DL 212 685.8 208
685.8 DL 216 685.8 212 685.8 DL/F4 8/Times-Roman@0 SF(\207Deprecated.)
-93.6 697.8 Q F3 193.36(SMM:08-70 Sendmail)72 756 R
-(Installation and Operation Guide)2.5 E EP
-%%Page: 71 67
+93.6 697.8 Q F3(Sendmail Installation and Operation Guide)72 756 Q
+(SMM:08-71)195.86 E EP
+%%Page: 72 68
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-71)195.86 E/F1 10/Times-Roman@0 SF(\255p.\))144 96 Q<ad71>72
-112.2 Q/F2 10/Times-Italic@0 SF(time)A F1 -.35(Tr)44.14 G 3.168(yt).35 G
-3.167(op)-3.168 G .667(rocess the queued up mail.)-3.167 F .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
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-72 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(\255p.\))
+144 96 Q<ad71>72 112.2 Q/F2 10/Times-Italic@0 SF(time)A F1 -.35(Tr)44.14
+G 3.167(yt).35 G 3.167(op)-3.167 G .667(rocess the queued up mail.)
+-3.167 F .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 124.2 Q(al to deli)-.25 E -.15(ve)
-.25 G 2.5(rq).15 G(ueued mail; otherwise, it only runs once.)-2.5 E
-<ad71>72 140.4 Q F2(Xstring)A F1 .312
+<ad71>72 140.4 Q F2(Xstring)A F1 .313
(Run the queue once, limiting the jobs to those matching)31.91 F F2
-(Xstring)2.813 E F1 5.313(.T)C .313(he k)-5.313 F .613 -.15(ey l)-.1 H
-(etter).15 E F2(X)2.813 E F1 .313(can be)2.813 F F0(I)144 152.4 Q F1
-.671(to limit based on queue identi\214er)3.171 F(,)-.4 E F0(R)3.171 E
-F1 .67(to limit based on recipient, or)3.171 F F0(S)3.17 E F1 .67
-(to limit based on)3.17 F(sender)144 164.4 Q 6.053(.A)-.55 G 1.054(particular queued job is accepted if one of the corresponding addresses con-)
--2.5 F(tains the indicated)144 176.4 Q F2(string)2.5 E F1(.)A(\255R ret)
-72 192.6 Q 1.687(What information you w)46.64 F 1.687
+(Xstring)2.812 E F1 5.312(.T)C .312(he k)-5.312 F .612 -.15(ey l)-.1 H
+(etter).15 E F2(X)2.812 E F1 .312(can be)2.812 F F0(I)144 152.4 Q F1 .67
+(to limit based on queue identi\214er)3.17 F(,)-.4 E F0(R)3.17 E F1 .671
+(to limit based on recipient, or)3.17 F F0(S)3.171 E F1 .671
+(to limit based on)3.171 F(sender)144 164.4 Q 6.054(.A)-.55 G 1.054(particular queued job is accepted if one of the corresponding addresses con-)
+-2.5 F .032(tains the indicated)144 176.4 R F2(string)2.533 E F1 5.033
+(.M)C(ultiple)-5.033 E F2(\255qX)2.533 E F1 .033
+(\215ags are permitted, with items with the same k)2.533 F -.15(ey)-.1 G
+(letter \231or'ed\232 together)144 188.4 Q 2.5(,a)-.4 G
+(nd items with dif)-2.5 E(ferent k)-.25 E .3 -.15(ey l)-.1 H
+(etters \231and'ed\232 together).15 E(.)-.55 E(\255R ret)72 204.6 Q
+1.687(What information you w)46.64 F 1.687
(ant returned if the message bounces;)-.1 F F2 -.37(re)4.187 G(t).37 E
F1 1.687(can be \231HDRS\232 for)4.187 F .877
-(headers only or \231FULL\232 for headers plus body)144 204.6 R 5.877
+(headers only or \231FULL\232 for headers plus body)144 216.6 R 5.877
(.T)-.65 G .878(his is a request only; the other end is)-5.877 F
-(not required to honor the parameter)144 216.6 Q(.)-.55 E 61.08
-(\255t Read)72 232.8 R .752(the header for \231T)3.252 F .752
+(not required to honor the parameter)144 228.6 Q(.)-.55 E 61.08
+(\255t Read)72 244.8 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 244.8 R
+(ve)-.25 G .752(ryone listed in those).15 F 2.539(lists. The)144 256.8 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)-2.539 F .04(gument v)-.18 F
-(ec-)-.15 E(tor will be deleted from the send list.)144 256.8 Q 56.64
-(\255U Indicate)72 273 R 1.029
+(ec-)-.15 E(tor will be deleted from the send list.)144 268.8 Q 56.64
+(\255U Indicate)72 285 R 1.029
(that this is an initial User Agent submission.)3.529 F 1.028
(In future releases, sendmail may)6.028 F 1.12
-(complain about syntactically in)144 285 R -.25(va)-.4 G 1.121
+(complain about syntactically in)144 297 R -.25(va)-.4 G 1.121
(lid messages rather than \214xing them when this \215ag is).25 F
-(not set.)144 297 Q(\255V en)72 313.2 Q 32.32(vid The)-.4 F(indicated)
+(not set.)144 309 Q(\255V en)72 325.2 Q 32.32(vid The)-.4 F(indicated)
3.18 E F2(en)3.18 E(vid)-.4 E F1 .68(is passed with the en)3.18 F -.15
(ve)-.4 G .679(lope of the message and returned if the mes-).15 F
-(sage bounces.)144 325.2 Q<ad58>72 341.4 Q F2(lo)2.5 E(g\214le)-.1 E F1
+(sage bounces.)144 337.2 Q<ad58>72 353.4 Q F2(lo)2.5 E(g\214le)-.1 E F1
.724(Log all traf)31.74 F .724(\214c in and out of)-.25 F F2(sendmail)
3.225 E F1 .725(in the indicated)3.225 F F2(lo)3.225 E(g\214le)-.1 E F1
.725(for deb)3.225 F .725(ugging mailer prob-)-.2 F 2.5(lems. This)144
-353.4 R(produces a lot of data v)2.5 E
+365.4 R(produces a lot of data v)2.5 E
(ery quickly and should be used sparingly)-.15 E(.)-.65 E .638
(There are a number of options that may be speci\214ed as primiti)97
-369.6 R .937 -.15(ve \215)-.25 H 3.137(ags. These).15 F .637
-(are the e, i, m, and v)3.137 F 2.5(options. Also,)72 381.6 R
+381.6 R .937 -.15(ve \215)-.25 H 3.137(ags. These).15 F .637
+(are the e, i, m, and v)3.137 F 2.5(options. Also,)72 393.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: 72 68
+%%Page: 73 69
%%BeginPageSetup
BP
%%EndPageSetup
@@ -6193,16 +6274,16 @@ S 2.703(message. This)-24.407 F .203(line is printed by the)2.703 F F3
(mailq)2.703 E F1 .204
(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)
--2.5 G(t.).15 E F2 193.36(SMM:08-72 Sendmail)72 756 R
-(Installation and Operation Guide)2.5 E EP
-%%Page: 73 69
+-2.5 G(t.).15 E F2(Sendmail Installation and Operation Guide)72 756 Q
+(SMM:08-73)195.86 E EP
+%%Page: 74 70
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-73)195.86 E/F1 10/Times-Roman@0 SF 30.44(FF)72 96 S .044
-(lag bits, represented as one letter per \215ag.)-30.44 F .043
-(De\214ned \215ag bits are)5.043 F F0(r)2.543 E F1 .043
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-74 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 30.44(FF)
+72 96 S .044(lag bits, represented as one letter per \215ag.)-30.44 F
+.043(De\214ned \215ag bits are)5.043 F F0(r)2.543 E F1 .043
(indicating that this is a response)2.543 F .142(message and)108 108 R
F0(w)2.642 E F1 .142(indicating that a w)2.642 F .143
(arning message has been sent announcing that the mail has been)-.1 F
@@ -6237,24 +6318,24 @@ E(fe.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G(EDU\232).65 E/F2 7
-.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
+(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)
+(Fri, 17 Jul 1992 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
+(id AAA06698; Fri, 17 Jul 1992 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 1992 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 1992 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)
+(y.)-.15 G(EDU).65 E(HSubject: this is an e)112 555.8 Q(xample message)
-.15 E .658(This sho)72 572 R .658(ws the person who sent the message, the submission time \(in seconds 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.)-2.5
@@ -6276,7 +6357,7 @@ E .32 LW 76 669.2 72 669.2 DL 80 669.2 76 669.2 DL 84 669.2 80 669.2 DL
-.32 F -.12(ove)2.719 G 2.719(ri).12 G 2.719(tt)-2.719 G 2.719(og)-2.719
G .719(et an idea; nothing can replace)-2.719 F(looking at what your o)
72 692.4 Q(wn system generates.)-.2 E EP
-%%Page: 74 70
+%%Page: 75 71
%%BeginPageSetup
BP
%%EndPageSetup
@@ -6303,32 +6384,36 @@ F1(.)A 5.9(/etc/sendmail.cf The)72 325.8 R
(/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 .337(use this in scripts; use `)144 398.4 R
-.337(`head \2551')-.74 F 2.838('t)-.74 G 2.838(og)-2.838 G .338
-(et just the \214rst line; later v)-2.838 F .338(ersions of)-.15 F F2
-(sendmail)2.838 E F1(may)2.838 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
+2.818 F .318(If you)5.318 F 1.047(use this in scripts; use `)144 398.4 R
+1.047(`head \2551')-.74 F 3.548('t)-.74 G 3.548(og)-3.548 G 1.048
+(et just the \214rst line; the second line contains the)-3.548 F .68
+(command line used to in)144 410.4 R -.2(vo)-.4 G .879 -.1(ke t).2 H
+.679(he daemon, and later v).1 F .679(ersions of)-.15 F F2(sendmail)
+3.179 E F1 .679(may add more)3.179 F(information to subsequent lines.)
+144 422.4 Q 25.62(/etc/aliases The)72 438.6 R(te)2.5 E(xtual v)-.15 E
+(ersion of the alias \214le.)-.15 E 13.12(/etc/aliases.db The)72 454.8 R
+(alias \214le in)2.5 E F2(hash)2.5 E F1(\(3\) format.)1.666 E
+(/etc/aliases.{pag,dir})72 471 Q(The alias \214le in)144 483 Q F2(ndbm)
+2.5 E F1(\(3\) format.)1.666 E(/v)72 499.2 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
+511.2 Q(/v)72 527.4 Q(ar/spool/mqueue/qf*)-.25 E
+(Control \(queue\) \214les for messages.)144 539.4 Q(/v)72 555.6 Q
+(ar/spool/mqueue/df*)-.25 E(Data \214les.)144 567.6 Q(/v)72 583.8 Q
+(ar/spool/mqueue/tf*)-.25 E -.7(Te)144 595.8 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.)-2.5 E F3 193.36(SMM:08-74 Sendmail)
-72 756 R(Installation and Operation Guide)2.5 E EP
-%%Page: 75 71
+-.2 E(/v)72 612 Q(ar/spool/mqueue/xf*)-.25 E 2.5(At)144 624 S
+(ranscript of the current session.)-2.5 E F3
+(Sendmail Installation and Operation Guide)72 756 Q(SMM:08-75)195.86 E
+EP
+%%Page: 76 72
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-75)195.86 E/F1 10/Times-Roman@0 SF
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-76 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 72
+%%Page: 3 73
%%BeginPageSetup
BP
%%EndPageSetup
@@ -6337,209 +6422,167 @@ BP
(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)31 E 2.5(1.1. Compiling)87 139.2 R .43(Sendmail ..............................................................................................................)
-2.5 F(7)31 E 2.5(1.1.1. T)102 153.6 R(weaking the Mak)-.8 E 1.64(e\214le .................................................................................................)
--.1 F(7)31 E 2.5(1.1.2. Compilation)102 168 R(and installation)2.5 E
+2.5 F(7)31 E 2.5(1.1.1. T)102 153.6 R(weaking the Build In)-.8 E -.2(vo)
+-.4 G .19(cation .....................................................................................)
+.2 F(7)31 E 2.5(1.1.2. Creating)102 168 R 2.5(aS)2.5 G
+(ite Con\214guration File)-2.5 E 28.5(................................................................................ 7)
+2.94 F 2.5(1.1.3. T)102 182.4 R(weaking the Mak)-.8 E 1.64(e\214le .................................................................................................)
+-.1 F(8)31 E 2.5(1.1.4. Compilation)102 196.8 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)31 E 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 23.5(............................................................................................................ 10)
-4.9 F 2.5(1.3.3. /usr/bin/ne)102 240 R -.1(wa)-.25 G 2.19(liases .......................................................................................................)
-.1 F(10)26 E 2.5(1.3.4. /usr/bin/hoststat)102 254.4 R 23.5(............................................................................................................ 10)
-4.6 F 2.5(1.3.5. /usr/bin/pur)102 268.8 R 1.18(gestat ..........................................................................................................)
--.18 F(10)26 E 2.5(1.3.6. /v)102 283.2 R 1.81(ar/spool/mqueue ........................................................................................................)
--.25 F(10)26 E 2.5(1.3.7. /v)102 297.6 R .97(ar/spool/mqueue/.hoststat ..........................................................................................)
--.25 F(10)26 E 2.5(1.3.8. /etc/aliases*)102 312 R 23.5(.................................................................................................................. 10)
-4.62 F 2.5(1.3.9. /etc/rc)102 326.4 R 23.5(............................................................................................................................ 11)
-3.51 F 2.5(1.3.10. /usr/lib/sendmail.hf)102 340.8 R 23.5(..................................................................................................... 11)
-2.94 F 2.5(1.3.11. /etc/sendmail.st)102 355.2 R 23.5(........................................................................................................... 11)
-3.5 F 2.5(1.3.12. /usr/bin/mailq)102 369.6 R 23.5(............................................................................................................. 11)
-4.88 F 2.5(2. NORMAL)72 384 R(OPERA)2.5 E 1.56(TIONS .............................................................................................................)
--1.11 F(12)26 E 2.5(2.1. The)87 398.4 R(System Log)2.5 E 23.5(.................................................................................................................... 12)
-4.89 F 2.5(2.1.1. F)102 412.8 R 2.26(ormat ..........................................................................................................................)
--.15 F(13)26 E 2.5(2.1.2. Le)102 427.2 R -.15(ve)-.25 G 2.24(ls ...........................................................................................................................)
-.15 F(13)26 E 2.5(2.2. Dumping)87 441.6 R .72(State .......................................................................................................................)
-2.5 F(14)26 E 2.5(2.3. The)87 456 R(Mail Queue)2.5 E 23.5(..................................................................................................................... 14)
-2.96 F 2.5(2.3.1. Printing)102 470.4 R(the queue)2.5 E 23.5(......................................................................................................... 14)
-2.67 F 2.5(2.3.2. F)102 484.8 R(orcing the queue)-.15 E 23.5(......................................................................................................... 14)
-3.94 F 2.5(2.4. Disk)87 499.2 R(Based Connection Information)2.5 E 23.5
-(..................................................................................... 15)
-3.79 F 2.5(2.5. The)87 513.6 R(Service Switch)2.5 E 23.5(................................................................................................................ 15)
-2.68 F 2.5(2.6. The)87 528 R(Alias Database)2.5 E 23.5(................................................................................................................ 16)
-2.69 F 2.5(2.6.1. Reb)102 542.4 R(uilding the alias database)-.2 E 23.5
+4.6 F 2.5(1.2. Con\214guration)87 211.2 R .99(Files ................................................................................................................)
+2.5 F(8)31 E 2.5(1.3. Details)87 225.6 R(of Installation Files)2.5 E
+23.5(................................................................................................... 10)
+4.89 F 2.5(1.3.1. /usr/sbin/sendmail)102 240 R 23.5(......................................................................................................... 10)
+2.66 F 2.5(1.3.2. /etc/sendmail.cf)102 254.4 R 23.5(............................................................................................................ 10)
+4.9 F 2.5(1.3.3. /usr/bin/ne)102 268.8 R -.1(wa)-.25 G 2.19(liases .......................................................................................................)
+.1 F(10)26 E 2.5(1.3.4. /usr/bin/hoststat)102 283.2 R 23.5(............................................................................................................ 10)
+4.6 F 2.5(1.3.5. /usr/bin/pur)102 297.6 R 1.18(gestat ..........................................................................................................)
+-.18 F(10)26 E 2.5(1.3.6. /v)102 312 R 1.81(ar/spool/mqueue ........................................................................................................)
+-.25 F(10)26 E 2.5(1.3.7. /v)102 326.4 R .97(ar/spool/mqueue/.hoststat ..........................................................................................)
+-.25 F(11)26 E 2.5(1.3.8. /etc/aliases*)102 340.8 R 23.5(.................................................................................................................. 11)
+4.62 F 2.5(1.3.9. /etc/rc)102 355.2 R(or /etc/init.d/sendmail)2.5 E 23.5
+(........................................................................................ 11)
+3.23 F 2.5(1.3.10. /usr/lib/sendmail.hf)102 369.6 R 23.5(..................................................................................................... 11)
+2.94 F 2.5(1.3.11. /etc/sendmail.st)102 384 R 23.5(........................................................................................................... 11)
+3.5 F 2.5(1.3.12. /usr/bin/mailq)102 398.4 R 23.5(............................................................................................................. 13)
+4.88 F 2.5(2. NORMAL)72 412.8 R(OPERA)2.5 E 1.56(TIONS .............................................................................................................)
+-1.11 F(13)26 E 2.5(2.1. The)87 427.2 R(System Log)2.5 E 23.5(.................................................................................................................... 13)
+4.89 F 2.5(2.1.1. F)102 441.6 R 2.26(ormat ..........................................................................................................................)
+-.15 F(13)26 E 2.5(2.1.2. Le)102 456 R -.15(ve)-.25 G 2.24(ls ...........................................................................................................................)
+.15 F(14)26 E 2.5(2.2. Dumping)87 470.4 R .72(State .......................................................................................................................)
+2.5 F(14)26 E 2.5(2.3. The)87 484.8 R(Mail Queue)2.5 E 23.5(..................................................................................................................... 14)
+2.96 F 2.5(2.3.1. Printing)102 499.2 R(the queue)2.5 E 23.5(......................................................................................................... 14)
+2.67 F 2.5(2.3.2. F)102 513.6 R(orcing the queue)-.15 E 23.5(......................................................................................................... 14)
+3.94 F 2.5(2.4. Disk)87 528 R(Based Connection Information)2.5 E 23.5(..................................................................................... 15)
+3.79 F 2.5(2.5. The)87 542.4 R(Service Switch)2.5 E 23.5(................................................................................................................ 16)
+2.68 F 2.5(2.6. The)87 556.8 R(Alias Database)2.5 E 23.5(................................................................................................................ 16)
+2.69 F 2.5(2.6.1. Reb)102 571.2 R(uilding the alias database)-.2 E 23.5
(....................................................................................... 17)
-4.27 F 2.5(2.6.2. Potential)102 556.8 R .72(problems ........................................................................................................)
-2.5 F(17)26 E 2.5(2.6.3. List)102 571.2 R -.25(ow)2.5 G 1.81(ners ...................................................................................................................)
-.25 F(17)26 E 2.5(2.7. User)87 585.6 R(Information Database)2.5 E 23.5(.................................................................................................... 18)
-2.7 F 2.5(2.8. Per)87 600 R(-User F)-.2 E(orw)-.15 E(arding \(.forw)-.1
-E(ard Files\))-.1 E 23.5(................................................................................... 18)
-4.09 F 2.5(2.9. Special)87 614.4 R(Header Lines)2.5 E 23.5(............................................................................................................. 18)
-2.97 F 2.5(2.9.1. Errors-T)102 628.8 R 2.09(o: .....................................................................................................................)
--.8 F(18)26 E 2.5(2.9.2. Apparently-T)102 643.2 R 2.09(o: .............................................................................................................)
--.8 F(18)26 E 2.5(2.9.3. Precedence)102 657.6 R 23.5(.................................................................................................................... 18)
-2.97 F 2.5(2.10. IDENT)87 672 R(Protocol Support)2.5 E 23.5(..................................................................................................... 19)
-2.95 F 2.5(3. ARGUMENTS)72 686.4 R 23.5(............................................................................................................................... 19)
-3.78 F 2.5(3.1. Queue)87 700.8 R(Interv)2.5 E 1.55(al .......................................................................................................................)
--.25 F(19)26 E 2.5(3.2. Daemon)87 715.2 R 1.29(Mode .......................................................................................................................)
-2.5 F(19)26 E EP
-%%Page: 4 73
+4.27 F 2.5(2.6.2. Potential)102 585.6 R .72(problems ........................................................................................................)
+2.5 F(17)26 E 2.5(2.6.3. List)102 600 R -.25(ow)2.5 G 1.81(ners ...................................................................................................................)
+.25 F(18)26 E 2.5(2.7. User)87 614.4 R(Information Database)2.5 E 23.5(.................................................................................................... 18)
+2.7 F 2.5(2.8. Per)87 628.8 R(-User F)-.2 E(orw)-.15 E(arding \(.forw)
+-.1 E(ard Files\))-.1 E 23.5(................................................................................... 18)
+4.09 F 2.5(2.9. Special)87 643.2 R(Header Lines)2.5 E 23.5(............................................................................................................. 18)
+2.97 F 2.5(2.9.1. Errors-T)102 657.6 R 2.09(o: .....................................................................................................................)
+-.8 F(19)26 E 2.5(2.9.2. Apparently-T)102 672 R 2.09(o: .............................................................................................................)
+-.8 F(19)26 E 2.5(2.9.3. Precedence)102 686.4 R 23.5(.................................................................................................................... 19)
+2.97 F 2.5(2.10. IDENT)87 700.8 R(Protocol Support)2.5 E 23.5(..................................................................................................... 19)
+2.95 F 2.5(3. ARGUMENTS)72 715.2 R 23.5(............................................................................................................................... 20)
+3.78 F EP
+%%Page: 4 74
%%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.3. F)87 96 R(orcing the Queue)-.15 E 23.5(................................................................................................................. 20)
-4.22 F 2.5(3.4. Deb)87 110.4 R 1.76(ugging .............................................................................................................................)
--.2 F(20)26 E 2.5(3.5. Changing)87 124.8 R(the V)2.5 E(alues of Options)
--1.11 E 23.5(............................................................................................ 20)
-3.23 F 2.5(3.6. T)87 139.2 R(rying a Dif)-.35 E
+(3.1. Queue)87 96 R(Interv)2.5 E 1.55(al .......................................................................................................................)
+-.25 F(20)26 E 2.5(3.2. Daemon)87 110.4 R 1.29(Mode .......................................................................................................................)
+2.5 F(20)26 E 2.5(3.3. F)87 124.8 R(orcing the Queue)-.15 E 23.5(................................................................................................................. 20)
+4.22 F 2.5(3.4. Deb)87 139.2 R 1.76(ugging .............................................................................................................................)
+-.2 F(20)26 E 2.5(3.5. Changing)87 153.6 R(the V)2.5 E(alues of Options)
+-1.11 E 23.5(............................................................................................ 21)
+3.23 F 2.5(3.6. T)87 168 R(rying a Dif)-.35 E
(ferent Con\214guration File)-.25 E 23.5(................................................................................... 21)
-4.67 F 2.5(3.7. Logging)87 153.6 R -.35(Tr)2.5 G(af).35 E .5(\214c ......................................................................................................................)
--.25 F(21)26 E 2.5(3.8. T)87 168 R(esting Con\214guration Files)-.7 E
-23.5(................................................................................................... 21)
-4.19 F 2.5(3.9. Persistent)87 182.4 R(Host Status Information)2.5 E 23.5
+4.67 F 2.5(3.7. Logging)87 182.4 R -.35(Tr)2.5 G(af).35 E .5(\214c ......................................................................................................................)
+-.25 F(21)26 E 2.5(3.8. T)87 196.8 R(esting Con\214guration Files)-.7 E
+23.5(................................................................................................... 22)
+4.19 F 2.5(3.9. Persistent)87 211.2 R(Host Status Information)2.5 E 23.5
(........................................................................................ 22)
-3.5 F 2.5(4. TUNING)72 196.8 R 23.5(......................................................................................................................................... 22)
-2.68 F 2.5(4.1. T)87 211.2 R 1.07(imeouts ................................................................................................................................)
--.35 F(22)26 E 2.5(4.1.1. Queue)102 225.6 R(interv)2.5 E 2.1(al ..............................................................................................................)
--.25 F(23)26 E 2.5(4.1.2. Read)102 240 R 1(timeouts ...............................................................................................................)
-2.5 F(23)26 E 2.5(4.1.3. Message)102 254.4 R 1.56(timeouts .........................................................................................................)
-2.5 F(24)26 E 2.5(4.2. F)87 268.8 R(orking During Queue Runs)-.15 E 23.5
-(................................................................................................. 24)
-4.49 F 2.5(4.3. Queue)87 283.2 R .73(Priorities .....................................................................................................................)
-2.5 F(24)26 E 2.5(4.4. Load)87 297.6 R .44(Limiting ........................................................................................................................)
-2.5 F(25)26 E 2.5(4.5. Deli)87 312 R -.15(ve)-.25 G(ry Mode).15 E 23.5(....................................................................................................................... 25)
-3.08 F 2.5(4.6. Log)87 326.4 R(Le)2.5 E -.15(ve)-.25 G 2.52(l.).15 G
+3.5 F 2.5(4. TUNING)72 225.6 R 23.5(......................................................................................................................................... 22)
+2.68 F 2.5(4.1. T)87 240 R 1.07(imeouts ................................................................................................................................)
+-.35 F(23)26 E 2.5(4.1.1. Queue)102 254.4 R(interv)2.5 E 2.1(al ..............................................................................................................)
+-.25 F(23)26 E 2.5(4.1.2. Read)102 268.8 R 1(timeouts ...............................................................................................................)
+2.5 F(23)26 E 2.5(4.1.3. Message)102 283.2 R 1.56(timeouts .........................................................................................................)
+2.5 F(24)26 E 2.5(4.2. F)87 297.6 R(orking During Queue Runs)-.15 E 23.5
+(................................................................................................. 25)
+4.49 F 2.5(4.3. Queue)87 312 R .73(Priorities .....................................................................................................................)
+2.5 F(25)26 E 2.5(4.4. Load)87 326.4 R .44(Limiting ........................................................................................................................)
+2.5 F(25)26 E 2.5(4.5. Deli)87 340.8 R -.15(ve)-.25 G(ry Mode).15 E 23.5
+(....................................................................................................................... 26)
+3.08 F 2.5(4.6. Log)87 355.2 R(Le)2.5 E -.15(ve)-.25 G 2.52(l.).15 G
23.5(.............................................................................................................................. 26)
--2.52 F 2.5(4.7. File)87 340.8 R .72(Modes .............................................................................................................................)
-2.5 F(26)26 E 2.5(4.7.1. T)102 355.2 R 2.5(os)-.8 G(uid or not to suid?)
--2.5 E 23.5(................................................................................................. 26)
-6.52 F 2.5(4.7.2. Should)102 369.6 R(my alias database be writable?)2.5
-E 23.5(........................................................................ 26)
-5.47 F 2.5(4.8. Connection)87 384 R 1.56(Caching ..............................................................................................................)
-2.5 F(27)26 E 2.5(4.9. Name)87 398.4 R(Serv)2.5 E(er Access)-.15 E 23.5
-(.............................................................................................................. 27)
-2.85 F 2.5(4.10. Mo)87 412.8 R(ving the Per)-.15 E(-User F)-.2 E(orw)
--.15 E(ard Files)-.1 E 23.5(.................................................................................... 28)
-3.84 F 2.5(4.11. Free)87 427.2 R 1.85(Space ...........................................................................................................................)
-2.5 F(28)26 E 2.5(4.12. Maximum)87 441.6 R(Message Size)2.5 E 23.5(..................................................................................................... 28)
-4.62 F 2.5(4.13. Pri)87 456 R -.25(va)-.25 G .3 -.15(cy F).25 H 1.93(lags .......................................................................................................................)
-.15 F(29)26 E 2.5(4.14. Send)87 470.4 R(to Me T)2.5 E 2.08(oo ...................................................................................................................)
--.8 F(29)26 E 2.5(5. THE)72 484.8 R(WHOLE SCOOP ON THE CONFIGURA)2.5 E
+-2.52 F 2.5(4.7. File)87 369.6 R .72(Modes .............................................................................................................................)
+2.5 F(27)26 E 2.5(4.7.1. T)102 384 R 2.5(os)-.8 G(uid or not to suid?)
+-2.5 E 23.5(................................................................................................. 27)
+6.52 F 2.5(4.7.2. T)102 398.4 R(urning of)-.45 E 2.5(fs)-.25 G
+(ecurity checks)-2.5 E 23.5(.......................................................................................... 27)
+3.95 F 2.5(4.8. Connection)87 412.8 R 1.56(Caching ..............................................................................................................)
+2.5 F(29)26 E 2.5(4.9. Name)87 427.2 R(Serv)2.5 E(er Access)-.15 E 23.5
+(.............................................................................................................. 29)
+2.85 F 2.5(4.10. Mo)87 441.6 R(ving the Per)-.15 E(-User F)-.2 E(orw)
+-.15 E(ard Files)-.1 E 23.5(.................................................................................... 30)
+3.84 F 2.5(4.11. Free)87 456 R 1.85(Space ...........................................................................................................................)
+2.5 F(31)26 E 2.5(4.12. Maximum)87 470.4 R(Message Size)2.5 E 23.5(..................................................................................................... 31)
+4.62 F 2.5(4.13. Pri)87 484.8 R -.25(va)-.25 G .3 -.15(cy F).25 H 1.93(lags .......................................................................................................................)
+.15 F(31)26 E 2.5(4.14. Send)87 499.2 R(to Me T)2.5 E 2.08(oo ...................................................................................................................)
+-.8 F(31)26 E 2.5(5. THE)72 513.6 R(WHOLE SCOOP ON THE CONFIGURA)2.5 E
(TION FILE)-1.11 E 23.5
-(........................................................ 29)4.64 F 2.5
-(5.1. R)87 499.2 R(and S \212 Re)2.5 E(writing Rules)-.25 E 23.5(.................................................................................................. 29)
-4.3 F 2.5(5.1.1. The)102 513.6 R(left hand side)2.5 E 23.5(......................................................................................................... 30)
-4.07 F 2.5(5.1.2. The)102 528 R(right hand side)2.5 E 23.5(....................................................................................................... 30)
-3.51 F 2.5(5.1.3. Semantics)102 542.4 R(of re)2.5 E(writing rule sets)
--.25 E 23.5(................................................................................... 31)
-4.6 F 2.5(5.1.4. Ruleset)102 556.8 R 2.11(hooks ...............................................................................................................)
-2.5 F(32)26 E 2.5(5.1.4.1. check_relay)117 571.2 R 23.5(.......................................................................................................... 32)
-2.69 F 2.5(5.1.4.2. check_mail)117 585.6 R 23.5(.......................................................................................................... 32)
-4.9 F 2.5(5.1.4.3. check_rcpt)117 600 R 23.5(........................................................................................................... 32)
-4.63 F 2.5(5.1.4.4. check_compat)117 614.4 R 23.5(...................................................................................................... 32)
-3.24 F 2.5(5.1.5. IPC)102 628.8 R 1(mailers ...................................................................................................................)
-2.5 F(33)26 E 2.5(5.2. D)87 643.2 R 2.5<8a44>2.5 G(e\214ne Macro)-2.5 E
-23.5(................................................................................................................ 33)
-3.52 F 2.5(5.3. C)87 657.6 R(and F \212 De\214ne Classes)2.5 E 23.5(..................................................................................................... 36)
-2.67 F 2.5(5.4. M)87 672 R 2.5<8a44>2.5 G(e\214ne Mailer)-2.5 E 23.5(............................................................................................................... 37)
-3.79 F 2.5(5.5. H)87 686.4 R 2.5<8a44>2.5 G(e\214ne Header)-2.5 E 23.5(............................................................................................................... 41)
-3.25 F 2.5(5.6. O)87 700.8 R 2.5<8a53>2.5 G(et Option)-2.5 E 23.5(..................................................................................................................... 41)
-3.22 F 2.5(5.7. P)87 715.2 R 2.5<8a50>2.5 G(recedence De\214nitions)-2.5
-E 23.5(.................................................................................................. 51)
-2.96 F EP
-%%Page: 5 74
+(........................................................ 31)4.64 F 2.5
+(5.1. R)87 528 R(and S \212 Re)2.5 E(writing Rules)-.25 E 23.5(.................................................................................................. 31)
+4.3 F 2.5(5.1.1. The)102 542.4 R(left hand side)2.5 E 23.5(......................................................................................................... 32)
+4.07 F 2.5(5.1.2. The)102 556.8 R(right hand side)2.5 E 23.5(....................................................................................................... 32)
+3.51 F 2.5(5.1.3. Semantics)102 571.2 R(of re)2.5 E(writing rule sets)
+-.25 E 23.5(................................................................................... 34)
+4.6 F 2.5(5.1.4. Ruleset)102 585.6 R 2.11(hooks ...............................................................................................................)
+2.5 F(34)26 E 2.5(5.1.4.1. check_relay)117 600 R 23.5(.......................................................................................................... 35)
+2.69 F 2.5(5.1.4.2. check_mail)117 614.4 R 23.5(.......................................................................................................... 35)
+4.9 F 2.5(5.1.4.3. check_rcpt)117 628.8 R 23.5(........................................................................................................... 35)
+4.63 F 2.5(5.1.4.4. check_compat)117 643.2 R 23.5(...................................................................................................... 35)
+3.24 F 2.5(5.1.5. IPC)102 657.6 R 1(mailers ...................................................................................................................)
+2.5 F(35)26 E 2.5(5.2. D)87 672 R 2.5<8a44>2.5 G(e\214ne Macro)-2.5 E
+23.5(................................................................................................................ 35)
+3.52 F 2.5(5.3. C)87 686.4 R(and F \212 De\214ne Classes)2.5 E 23.5(..................................................................................................... 38)
+2.67 F 2.5(5.4. M)87 700.8 R 2.5<8a44>2.5 G(e\214ne Mailer)-2.5 E 23.5(............................................................................................................... 39)
+3.79 F 2.5(5.5. H)87 715.2 R 2.5<8a44>2.5 G(e\214ne Header)-2.5 E 23.5(............................................................................................................... 43)
+3.25 F EP
+%%Page: 5 75
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
-(SMM:08-5)200.86 E/F1 10/Times-Roman@0 SF 2.5(5.8. V)87 96 R 2.5<8a43>
-2.5 G(on\214guration V)-2.5 E(ersion Le)-1.11 E -.15(ve)-.25 G 2.8(l.)
-.15 G 23.5(........................................................................................ 51)
--2.8 F 2.5(5.9. K)87 110.4 R 2.5<8a4b>2.5 G .3 -.15(ey F)-2.75 H
-(ile Declaration).15 E 23.5(..................................................................................................... 52)
-2.81 F 2.5(5.10. The)87 124.8 R(User Database)2.5 E 23.5(.............................................................................................................. 55)
-4.92 F 2.5(5.10.1. Structure)102 139.2 R(of the user database)2.5 E 23.5
-(..................................................................................... 56)
-2.7 F 2.5(5.10.2. User)102 153.6 R(database semantics)2.5 E 23.5(............................................................................................. 56)
-3.25 F 2.5(5.10.3. Creating)102 170 R(the database)2.5 E/F2 7
-/Times-Roman@0 SF(23)-4 I F1 23.5(............................................................................................... 57)
-2.91 4 N 2.5(6. O)72 184.4 R(THER CONFIGURA)-.4 E 1.97(TION .........................................................................................................)
--1.11 F(57)26 E 2.5(6.1. P)87 198.8 R(arameters in src/Mak)-.15 E 1.55(e\214le ....................................................................................................)
--.1 F(57)26 E 2.5(6.2. P)87 213.2 R(arameters in src/conf.h)-.15 E 23.5
-(........................................................................................................ 58)
-4.23 F 2.5(6.3. Con\214guration)87 227.6 R(in src/conf.c)2.5 E 23.5(.................................................................................................... 60)
-3.51 F 2.5(6.3.1. Built-in)102 242 R(Header Semantics)2.5 E 23.5(........................................................................................... 60)
-4.9 F 2.5(6.3.2. Restricting)102 256.4 R(Use of Email)2.5 E 23.5(.............................................................................................. 62)
-4.34 F 2.5(6.3.3. Load)102 270.8 R -1.17 -.74(Av e)2.5 H
-(rage Computation).74 E 23.5(.......................................................................................... 62)
-2.74 F 2.5(6.3.4. Ne)102 285.2 R 2.5(wD)-.25 G(atabase Map Classes)-2.5
-E 23.5(......................................................................................... 62)
-4.89 F 2.5(6.3.5. Queueing)102 299.6 R 1.56(Function .......................................................................................................)
-2.5 F(63)26 E 2.5(6.3.6. Refusing)102 314 R(Incoming SMTP Connections)
-2.5 E 23.5(....................................................................... 63)
-2.94 F 2.5(6.3.7. Load)102 328.4 R -1.17 -.74(Av e)2.5 H
-(rage Computation).74 E 23.5(.......................................................................................... 63)
-2.74 F 2.5(6.4. Con\214guration)87 342.8 R(in src/daemon.c)2.5 E 23.5(.............................................................................................. 64)
-4.62 F 2.5(7. CHANGES)72 357.2 R(IN VERSION 8)2.5 E 23.5(.......................................................................................................... 64)
-4.9 F 2.5(7.1. Connection)87 371.6 R 1.56(Caching ..............................................................................................................)
-2.5 F(64)26 E 2.5(7.2. MX)87 386 R 2.39(Piggybacking .................................................................................................................)
-2.5 F(64)26 E 2.5(7.3. RFC)87 400.4 R(1123 Compliance)2.5 E 23.5(.......................................................................................................... 64)
-3.77 F 2.5(7.4. Extended)87 414.8 R(SMTP Support)2.5 E 23.5(....................................................................................................... 65)
-2.94 F 2.5(7.5. Eight-Bit)87 429.2 R .44(Clean ......................................................................................................................)
-2.5 F(65)26 E 2.5(7.6. User)87 443.6 R .47(Database ........................................................................................................................)
-2.5 F(65)26 E 2.5(7.7. Impro)87 458 R -.15(ve)-.15 G 2.5(dB).15 G
-(IND Support)-2.5 E 23.5(....................................................................................................... 65)
-3.81 F 2.5(7.8. K)87 472.4 R -.15(ey)-.25 G(ed Files).15 E 23.5(............................................................................................................................ 65)
-3.35 F 2.5(7.9. Multi-W)87 486.8 R(ord Classes)-.8 E 23.5(............................................................................................................... 65)
-3.47 F 2.5(7.10. Deferred)87 501.2 R(Macro Expansion)2.5 E 23.5(................................................................................................. 65)
-4.65 F 2.5(7.11. IDENT)87 515.6 R(Protocol Support)2.5 E 23.5(..................................................................................................... 65)
-2.95 F 2.5(7.12. P)87 530 R(arsing Bug Fix)-.15 E .46(es ................................................................................................................)
--.15 F(65)26 E 2.5(7.13. Separate)87 544.4 R(En)2.5 E -.15(ve)-.4 G
-(lope/Header Processing).15 E 23.5(................................................................................ 65)
-4.37 F 2.5(7.14. Owner)87 558.8 R(-List Propag)-.2 E(ates to En)-.05 E
--.15(ve)-.4 G 1.27(lope ....................................................................................)
-.15 F(66)26 E 2.5(7.15. Dynamic)87 573.2 R(Header Allocation)2.5 E 23.5
-(................................................................................................ 66)
-3.25 F 2.5(7.16. Ne)87 587.6 R 2.5(wC)-.25 G(ommand Line Flags)-2.5 E
-23.5(.................................................................................................. 66)
-3.2 F 2.5(7.17. Enhanced)87 602 R(Command Line Flags)2.5 E 23.5(......................................................................................... 66)
-4.9 F 2.5(7.18. Ne)87 616.4 R 2.5(wa)-.25 G
-(nd Old Con\214guration Line T)-2.5 E .4(ypes ..............................................................................)
--.8 F(66)26 E 2.5(7.19. Ne)87 630.8 R 2.5(wO)-.25 G .7(ptions ........................................................................................................................)
--2.5 F(66)26 E 2.5(7.20. Extended)87 645.2 R 1.56(Options ................................................................................................................)
-2.5 F(67)26 E 2.5(7.21. Ne)87 659.6 R 2.5(wM)-.25 G(ailer Flags)-2.5 E
-23.5(................................................................................................................ 67)
-4.04 F 2.5(7.22. Long)87 674 R(Option Names)2.5 E 23.5(............................................................................................................ 67)
-4.34 F 2.5(7.23. Ne)87 688.4 R 2.5(wP)-.25 G(re-De\214ned Macros)-2.5 E
-23.5(.................................................................................................... 67)
-4.06 F 2.5(7.24. Ne)87 702.8 R 2.5(wL)-.25 G(HS T)-2.5 E(ok)-.8 E 1.33(en ..................................................................................................................)
--.1 F(68)26 E 2.5(7.25. Bigger)87 717.2 R(Def)2.5 E(aults ....................................................................................................................)
--.1 E(68)26 E EP
-%%Page: 6 75
+(SMM:08-5)200.86 E/F1 10/Times-Roman@0 SF 2.5(5.6. O)87 96 R 2.5<8a53>
+2.5 G(et Option)-2.5 E 23.5(..................................................................................................................... 44)
+3.22 F 2.5(5.7. P)87 110.4 R 2.5<8a50>2.5 G(recedence De\214nitions)-2.5
+E 23.5(.................................................................................................. 55)
+2.96 F 2.5(5.8. V)87 124.8 R 2.5<8a43>2.5 G(on\214guration V)-2.5 E
+(ersion Le)-1.11 E -.15(ve)-.25 G 2.8(l.).15 G 23.5(........................................................................................ 55)
+-2.8 F 2.5(5.9. K)87 139.2 R 2.5<8a4b>2.5 G .3 -.15(ey F)-2.75 H
+(ile Declaration).15 E 23.5(..................................................................................................... 56)
+2.81 F 2.5(5.10. The)87 153.6 R(User Database)2.5 E 23.5(.............................................................................................................. 61)
+4.92 F 2.5(5.10.1. Structure)102 168 R(of the user database)2.5 E 23.5(..................................................................................... 61)
+2.7 F 2.5(5.10.2. User)102 182.4 R(database semantics)2.5 E 23.5(............................................................................................. 61)
+3.25 F 2.5(5.10.3. Creating)102 198.8 R(the database)2.5 E/F2 7
+/Times-Roman@0 SF(25)-4 I F1 23.5(............................................................................................... 62)
+2.91 4 N 2.5(6. O)72 213.2 R(THER CONFIGURA)-.4 E 1.97(TION .........................................................................................................)
+-1.11 F(62)26 E 2.5(6.1. P)87 227.6 R(arameters in BuildT)-.15 E 2.23(ools/OS/$oscf ......................................................................................)
+-.8 F(62)26 E 2.5(6.2. P)87 242 R(arameters in src/conf.h)-.15 E 23.5(........................................................................................................ 63)
+4.23 F 2.5(6.3. Con\214guration)87 256.4 R(in src/conf.c)2.5 E 23.5(.................................................................................................... 65)
+3.51 F 2.5(6.3.1. Built-in)102 270.8 R(Header Semantics)2.5 E 23.5(........................................................................................... 65)
+4.9 F 2.5(6.3.2. Restricting)102 285.2 R(Use of Email)2.5 E 23.5(.............................................................................................. 67)
+4.34 F 2.5(6.3.3. Ne)102 299.6 R 2.5(wD)-.25 G(atabase Map Classes)-2.5
+E 23.5(......................................................................................... 67)
+4.89 F 2.5(6.3.4. Queueing)102 314 R 1.56(Function .......................................................................................................)
+2.5 F(68)26 E 2.5(6.3.5. Refusing)102 328.4 R(Incoming SMTP Connections)
+2.5 E 23.5(....................................................................... 68)
+2.94 F 2.5(6.3.6. Load)102 342.8 R -1.17 -.74(Av e)2.5 H
+(rage Computation).74 E 23.5(.......................................................................................... 69)
+2.74 F 2.5(6.4. Con\214guration)87 357.2 R(in src/daemon.c)2.5 E 23.5(.............................................................................................. 69)
+4.62 F 2.5(7. A)72 371.6 R(CKNO)-.4 E .1(WLEDGEMENTS ............................................................................................................)
+-.35 F(69)26 E(Appendix A.)72 386 Q(COMMAND LINE FLA)5 E 1.97(GS .........................................................................................)
+-.4 F(71)26 E(Appendix B.)72 400.4 Q -.1(QU)5 G(EUE FILE FORMA).1 E 1.38
+(TS ............................................................................................)
+-1.11 F(73)26 E(Appendix C.)72 414.8 Q(SUMMAR)5 E 2.5(YO)-.65 G 2.5(FS)
+-2.5 G(UPPOR)-2.5 E 2.5(TF)-.6 G 1.12(ILES ..............................................................................)
+-2.5 F(75)26 E EP
+%%Page: 6 76
%%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 2.5
-(7.26. Dif)87 96 R(ferent Def)-.25 E(ault T)-.1 E(uning P)-.45 E 1.99(arameters ..................................................................................)
--.15 F(68)26 E 2.5(7.27. Auto-Quoting)87 110.4 R(in Addresses)2.5 E 23.5
-(................................................................................................. 68)
-3.51 F 2.5(7.28. Symbolic)87 124.8 R(Names On Error Mailer)2.5 E 23.5(...................................................................................... 68)
-4.91 F 2.5(7.29. SMTP)87 139.2 R(VRFY Doesn')2.5 E 2.5(tE)-.18 G 1.18(xpand ............................................................................................)
--2.5 F(68)26 E 2.5(7.30. [IPC])87 153.6 R(Mailers Allo)2.5 E 2.5(wM)-.25
-G(ultiple Hosts)-2.5 E 23.5(................................................................................... 68)
-3.75 F 2.5(7.31. Aliases)87 168 R 1.29(Extended .................................................................................................................)
-2.5 F(68)26 E 2.5(7.32. Portability)87 182.4 R
-(and Security Enhancements)2.5 E 23.5(............................................................................... 68)
-2.68 F 2.5(7.33. Miscellaneous)87 196.8 R 1.29(Changes .......................................................................................................)
-2.5 F(68)26 E 2.5(8. A)72 211.2 R(CKNO)-.4 E .1(WLEDGEMENTS ............................................................................................................)
--.35 F(69)26 E(Appendix A.)72 225.6 Q(COMMAND LINE FLA)5 E 1.97(GS .........................................................................................)
--.4 F(70)26 E(Appendix B.)72 240 Q -.1(QU)5 G(EUE FILE FORMA).1 E 1.38(TS ............................................................................................)
--1.11 F(72)26 E(Appendix C.)72 254.4 Q(SUMMAR)5 E 2.5(YO)-.65 G 2.5(FS)
--2.5 G(UPPOR)-2.5 E 2.5(TF)-.6 G 1.12(ILES ..............................................................................)
--2.5 F(74)26 E EP
+(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
%%Trailer
end
%%EOF
diff --git a/doc/usenix/Makefile b/doc/usenix/Makefile
index ea0665c..d2308cb 100644
--- a/doc/usenix/Makefile
+++ b/doc/usenix/Makefile
@@ -1,4 +1,4 @@
-# @(#)Makefile 8.2 (Berkeley) 2/28/94
+# @(#)Makefile 8.2 (Berkeley) 2/28/1994
SRCS= usenix.me
MACROS= -me
diff --git a/doc/usenix/usenix.me b/doc/usenix/usenix.me
index 0fbb672..4f88a94 100644
--- a/doc/usenix/usenix.me
+++ b/doc/usenix/usenix.me
@@ -1,6 +1,6 @@
.nr si 3n
.he 'Mail Systems and Addressing in 4.2bsd''%'
-.fo 'Version 8.2'USENIX \- Jan 83'Last Mod 11/27/93'
+.fo 'Version 8.2'USENIX \- Jan 83'Last Mod 11/27/1993'
.if n .ls 2
.+c
.(l C
diff --git a/doc/usenix/usenix.ps b/doc/usenix/usenix.ps
index 31f2f67..e6add99 100644
--- a/doc/usenix/usenix.ps
+++ b/doc/usenix/usenix.ps
@@ -1,15 +1,16 @@
%!PS-Adobe-3.0
-%%Creator: groff version 1.08
+%%Creator: groff version 1.10
+%%CreationDate: Tue Dec 29 09:59:22 1998
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Italic
%%+ font Times-Bold
-%%DocumentSuppliedResources: procset grops 1.08 0
+%%DocumentSuppliedResources: procset grops 1.10 0
%%Pages: 9
%%PageOrder: Ascend
%%Orientation: Portrait
%%EndComments
%%BeginProlog
-%%BeginResource: procset grops 1.08 0
+%%BeginResource: procset grops 1.10 0
/setpacking where{
pop
currentpacking
@@ -46,7 +47,7 @@ dup setfont
/MF{
findfont
[5 2 roll
-0 3 1 roll
+0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
@@ -55,6 +56,9 @@ dup setfont
/RES 0 def
/PL 0 def
/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
@@ -165,840 +169,866 @@ setpacking
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Italic
%%IncludeResource: font Times-Bold
-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
+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/.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
+/.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
+/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(Mail Systems and Addressing)204.196 141 Q(in 4.2bsd)
-262.331 157.8 Q/F1 10/Times-Roman@0 SF(Eric Allman*)260.92 181.8 Q/F2 10
-/Times-Italic@0 SF(Britton-Lee)254.86 199.8 Q 2.5(,I)-.1 G(nc.)309.2 199.8 Q
-(1919 Addison Str)225.13 211.8 Q(eet, Suite 105.)-.37 E(Berk)232.645 223.8 Q
-(ele)-.1 E 1.1 -.55(y, C)-.3 H(alifornia 94704.).55 E F1(eric@Berk)244.175
-241.8 Q(ele)-.1 E -.65(y.)-.15 G(ARP).65 E(A)-.92 E(ucb)264.6 253.8 Q -.25(va)
--.15 G(x!eric).25 E(ABSTRA)262.085 286.2 Q(CT)-.4 E .966
-(Routing mail through a heterogeneous internet presents man)112 302.4 R 3.466
-(yn)-.15 G 1.466 -.25(ew p)373.438 302.4 T 3.466(roblems. Among).25 F .297
+/F0 14/Times-Roman@0 SF(Mail Systems and Addressing)204.196 141 Q
+(in 4.2bsd)262.331 157.8 Q/F1 10/Times-Roman@0 SF(Eric Allman*)260.92
+181.8 Q/F2 10/Times-Italic@0 SF(Britton-Lee)254.86 199.8 Q 2.5(,I)-.1 G
+(nc.)-2.5 E(1919 Addison Str)225.13 211.8 Q(eet, Suite 105.)-.37 E(Berk)
+232.645 223.8 Q(ele)-.1 E 1.1 -.55(y, C)-.3 H(alifornia 94704.).55 E F1
+(eric@Berk)244.175 241.8 Q(ele)-.1 E -.65(y.)-.15 G(ARP).65 E(A)-.92 E
+(ucb)264.6 253.8 Q -.25(va)-.15 G(x!eric).25 E(ABSTRA)262.085 286.2 Q
+(CT)-.4 E .966
+(Routing mail through a heterogeneous internet presents man)112 302.4 R
+3.466(yn)-.15 G 1.466 -.25(ew p)-3.466 H 3.466(roblems. Among).25 F .297
(the w)112 314.4 R .297(orst of these is that of address mapping.)-.1 F
-(Historically)5.297 E 2.797(,t)-.65 G .298(his has been handled on an)355.03
-314.4 R(ad hoc basis.)112 326.4 Q(Ho)5 E(we)-.25 E -.15(ve)-.25 G .8 -.4(r, t)
-.15 H(his approach has become unmanageable as internets gro).4 E -.65(w.)-.25 G
-.099(Sendmail acts a uni\214ed \231post of)112 342.6 R .098
-(\214ce\232 to which all mail can be submitted.)-.25 F .098(Address inter)5.098
-F(-)-.2 E .754(pretation is controlled by a production system, which can parse\
- both old and ne)112 354.6 R 3.255(wf)-.25 G(or)452.54 354.6 Q(-)-.2 E .242
-(mat addresses.)112 366.6 R .242(The ne)5.242 F 2.742(wf)-.25 G .242
-(ormat is \231domain-based,)216.578 366.6 R 2.742<9a618d>-.7 G -.15(ex)334.326
-366.6 S .241(ible technique that can handle).15 F(man)112 378.6 Q 2.606(yc)-.15
-G .106(ommon situations.)141.116 378.6 R .106
-(Sendmail is not intended to perform user interf)5.106 F .107(ace functions.)
--.1 F .399(Sendmail will replace deli)112 394.8 R -.15(ve)-.25 G .399
-(rmail in the Berk).15 F(ele)-.1 E 2.899(y4)-.15 G .399(.2 distrib)320.504
-394.8 R 2.899(ution. Se)-.2 F -.15(ve)-.25 G .399(ral major hosts).15 F .421
-(are no)112 406.8 R 2.921(wo)-.25 G 2.921(rw)152.022 406.8 S .421
-(ill soon be running sendmail.)165.493 406.8 R .421(This change will af)5.421 F
-.422(fect an)-.25 F 2.922(yu)-.15 G .422(sers that route)407.056 406.8 R 1.5
-(mail through a sendmail g)112 418.8 R(ate)-.05 E -.1(wa)-.25 G 5.3 -.65(y. T)
-.1 H 1.5(he changes that will be user visible are empha-).65 F(sized.)112 430.8
-Q .906(The mail system to appear in 4.2bsd will contain a number of changes.)97
-475.2 R .906(Most of these changes are)5.906 F .469
+(Historically)5.297 E 2.797(,t)-.65 G .298(his has been handled on an)
+-2.797 F(ad hoc basis.)112 326.4 Q(Ho)5 E(we)-.25 E -.15(ve)-.25 G .8
+-.4(r, t).15 H(his approach has become unmanageable as internets gro).4
+E -.65(w.)-.25 G .099(Sendmail acts a uni\214ed \231post of)112 342.6 R
+.098(\214ce\232 to which all mail can be submitted.)-.25 F .098
+(Address inter)5.098 F(-)-.2 E .754(pretation is controlled by a production system, which can parse both old and ne)
+112 354.6 R 3.255(wf)-.25 G(or)-3.255 E(-)-.2 E .242(mat addresses.)112
+366.6 R .242(The ne)5.242 F 2.742(wf)-.25 G .242
+(ormat is \231domain-based,)-2.742 F 2.742<9a618d>-.7 G -.15(ex)-2.742 G
+.241(ible technique that can handle).15 F(man)112 378.6 Q 2.606(yc)-.15
+G .106(ommon situations.)-2.606 F .106
+(Sendmail is not intended to perform user interf)5.106 F .107
+(ace functions.)-.1 F .399(Sendmail will replace deli)112 394.8 R -.15
+(ve)-.25 G .399(rmail in the Berk).15 F(ele)-.1 E 2.899(y4)-.15 G .399
+(.2 distrib)-2.899 F 2.899(ution. Se)-.2 F -.15(ve)-.25 G .399
+(ral major hosts).15 F .421(are no)112 406.8 R 2.921(wo)-.25 G 2.921(rw)
+-2.921 G .421(ill soon be running sendmail.)-2.921 F .421
+(This change will af)5.421 F .422(fect an)-.25 F 2.922(yu)-.15 G .422
+(sers that route)-2.922 F 1.5(mail through a sendmail g)112 418.8 R(ate)
+-.05 E -.1(wa)-.25 G 5.3 -.65(y. T).1 H 1.5
+(he changes that will be user visible are empha-).65 F(sized.)112 430.8
+Q .906
+(The mail system to appear in 4.2bsd will contain a number of changes.)
+97 475.2 R .906(Most of these changes are)5.906 F .469
(based on the replacement of)72 487.2 R F2(delivermail)2.969 E F1 .469
-(with a ne)2.969 F 2.969(wm)-.25 G .469(odule called)292.871 487.2 R F2 2.97
+(with a ne)2.969 F 2.969(wm)-.25 G .469(odule called)-2.969 F F2 2.97
(sendmail. Sendmail)2.97 F F1 .47(implements a gen-)2.97 F 1.834
-(eral internetw)72 499.2 R 1.834(ork mail routing f)-.1 F(acility)-.1 E 4.333
-(,f)-.65 G 1.833(eaturing aliasing and forw)239.739 499.2 R 1.833
-(arding, automatic routing to netw)-.1 F(ork)-.1 E -.05(ga)72 511.2 S(te).05 E
--.1(wa)-.25 G .205(ys, and \215e).1 F .205(xible con\214guration.)-.15 F .205
-(Of k)5.205 F .505 -.15(ey i)-.1 H .205
-(nterest to the mail system user will be the changes in the net-).15 F -.1(wo)
-72 523.2 S(rk addressing structure.).1 E .624(In a simple netw)97 539.4 R .624
-(ork, each node has an address, and resources can be identi\214ed with a host-\
-resource)-.1 F .374(pair; in particular)72 551.4 R 2.874(,t)-.4 G .374
-(he mail system can refer to users using a host-username pair)149.932 551.4 R
-5.374(.H)-.55 G .375(ost names and numbers)409.276 551.4 R(ha)72 563.4 Q .3
--.15(ve t)-.2 H 2.5(ob).15 G 2.5(ea)108.31 563.4 S
-(dministered by a central authority)119.69 563.4 Q 2.5(,b)-.65 G
-(ut usernames can be assigned locally to each host.)263.82 563.4 Q .397
+(eral internetw)72 499.2 R 1.834(ork mail routing f)-.1 F(acility)-.1 E
+4.333(,f)-.65 G 1.833(eaturing aliasing and forw)-4.333 F 1.833
+(arding, automatic routing to netw)-.1 F(ork)-.1 E -.05(ga)72 511.2 S
+(te).05 E -.1(wa)-.25 G .205(ys, and \215e).1 F .205
+(xible con\214guration.)-.15 F .205(Of k)5.205 F .505 -.15(ey i)-.1 H
+.205(nterest to the mail system user will be the changes in the net-).15
+F -.1(wo)72 523.2 S(rk addressing structure.).1 E .624(In a simple netw)
+97 539.4 R .624(ork, each node has an address, and resources can be identi\214ed with a host-resource)
+-.1 F .374(pair; in particular)72 551.4 R 2.874(,t)-.4 G .374
+(he mail system can refer to users using a host-username pair)-2.874 F
+5.374(.H)-.55 G .375(ost names and numbers)-5.374 F(ha)72 563.4 Q .3
+-.15(ve t)-.2 H 2.5(ob).15 G 2.5(ea)-2.5 G
+(dministered by a central authority)-2.5 E 2.5(,b)-.65 G
+(ut usernames can be assigned locally to each host.)-2.7 E .397
(In an internet, multiple netw)97 579.6 R .396(orks with dif)-.1 F .396
(ferent characteristics and managements must communicate.)-.25 F .389
(In particular)72 591.6 R 2.889(,t)-.4 G .389
-(he syntax and semantics of resource identi\214cation change.)129.308 591.6 R
-.39(Certain special cases can be han-)5.389 F 1.033(dled tri)72 603.6 R 1.033
-(vially by)-.25 F F2 1.033(ad hoc)3.533 F F1 1.032(techniques, such as pro)
-3.533 F 1.032(viding netw)-.15 F 1.032
-(ork names that appear local to hosts on other)-.1 F(netw)72 615.6 Q 1.621
-(orks, as with the Ethernet at Xerox P)-.1 F 4.121(ARC. Ho)-.92 F(we)-.25 E
--.15(ve)-.25 G 2.421 -.4(r, t).15 H 1.622(he general case is e).4 F 1.622
-(xtremely comple)-.15 F 4.122(x. F)-.15 F(or)-.15 E -.15(ex)72 627.6 S .29
-(ample, some netw).15 F .29(orks require that the route the message tak)-.1 F
-.29(es be e)-.1 F .29(xplicitly speci\214ed by the sender)-.15 F 2.79(,s)-.4 G
-(im-)490.11 627.6 Q 1.618(plifying the database update problem since only adja\
-cent hosts must be entered into the system tables,)72 639.6 R .573(while other\
-s use logical addressing, where the sender speci\214es the location of the rec\
-ipient b)72 651.6 R .573(ut not ho)-.2 F 3.072(wt)-.25 G(o)499 651.6 Q 1.065
-(get there.)72 663.6 R 1.065(Some netw)6.065 F 1.066(orks use a left-associati)
--.1 F 1.366 -.15(ve s)-.25 H 1.066(yntax and others use a right-associati).15 F
-1.366 -.15(ve s)-.25 H 1.066(yntax, causing).15 F .32 LW 76 673.2 72 673.2 DL
-80 673.2 76 673.2 DL 84 673.2 80 673.2 DL 88 673.2 84 673.2 DL 92 673.2 88
-673.2 DL 96 673.2 92 673.2 DL 100 673.2 96 673.2 DL 104 673.2 100 673.2 DL 108
-673.2 104 673.2 DL 112 673.2 108 673.2 DL 116 673.2 112 673.2 DL 120 673.2 116
-673.2 DL 124 673.2 120 673.2 DL 128 673.2 124 673.2 DL 132 673.2 128 673.2 DL
-136 673.2 132 673.2 DL 140 673.2 136 673.2 DL 144 673.2 140 673.2 DL 148 673.2
-144 673.2 DL 152 673.2 148 673.2 DL 156 673.2 152 673.2 DL 160 673.2 156 673.2
-DL 164 673.2 160 673.2 DL 168 673.2 164 673.2 DL 172 673.2 168 673.2 DL 176
-673.2 172 673.2 DL 180 673.2 176 673.2 DL 184 673.2 180 673.2 DL 188 673.2 184
-673.2 DL 192 673.2 188 673.2 DL 196 673.2 192 673.2 DL 200 673.2 196 673.2 DL
-204 673.2 200 673.2 DL 208 673.2 204 673.2 DL 212 673.2 208 673.2 DL 216 673.2
-212 673.2 DL/F3 8/Times-Roman@0 SF .556(*A considerable part of this w)93.6
-685.2 R .556(ork w)-.08 F .556(as done while under the emplo)-.08 F 2.557(yo)
--.08 G 2.557(ft)323.107 685.2 S .557(he INGRES Project at the Uni)330.552 685.2
-R -.12(ve)-.2 G .557(rsity of California at).12 F(Berk)72 694.8 Q(ele)-.08 E
--.52(y.)-.12 G/F4 10/Times-Bold@0 SF(Mail Systems and Addr)72 756 Q
-(essing in 4.2bsd)-.18 E(1)499 756 Q EP
+(he syntax and semantics of resource identi\214cation change.)-2.889 F
+.39(Certain special cases can be han-)5.389 F 1.033(dled tri)72 603.6 R
+1.033(vially by)-.25 F F2 1.033(ad hoc)3.533 F F1 1.032
+(techniques, such as pro)3.533 F 1.032(viding netw)-.15 F 1.032
+(ork names that appear local to hosts on other)-.1 F(netw)72 615.6 Q
+1.621(orks, as with the Ethernet at Xerox P)-.1 F 4.121(ARC. Ho)-.92 F
+(we)-.25 E -.15(ve)-.25 G 2.421 -.4(r, t).15 H 1.622
+(he general case is e).4 F 1.622(xtremely comple)-.15 F 4.122(x. F)-.15
+F(or)-.15 E -.15(ex)72 627.6 S .29(ample, some netw).15 F .29
+(orks require that the route the message tak)-.1 F .29(es be e)-.1 F .29
+(xplicitly speci\214ed by the sender)-.15 F 2.79(,s)-.4 G(im-)-2.79 E
+1.618(plifying the database update problem since only adjacent hosts must be entered into the system tables,)
+72 639.6 R .573(while others use logical addressing, where the sender speci\214es the location of the recipient b)
+72 651.6 R .573(ut not ho)-.2 F 3.072(wt)-.25 G(o)-3.072 E 1.065
+(get there.)72 663.6 R 1.065(Some netw)6.065 F 1.066
+(orks use a left-associati)-.1 F 1.366 -.15(ve s)-.25 H 1.066
+(yntax and others use a right-associati).15 F 1.366 -.15(ve s)-.25 H
+1.066(yntax, causing).15 F .32 LW 76 673.2 72 673.2 DL 80 673.2 76 673.2
+DL 84 673.2 80 673.2 DL 88 673.2 84 673.2 DL 92 673.2 88 673.2 DL 96
+673.2 92 673.2 DL 100 673.2 96 673.2 DL 104 673.2 100 673.2 DL 108 673.2
+104 673.2 DL 112 673.2 108 673.2 DL 116 673.2 112 673.2 DL 120 673.2 116
+673.2 DL 124 673.2 120 673.2 DL 128 673.2 124 673.2 DL 132 673.2 128
+673.2 DL 136 673.2 132 673.2 DL 140 673.2 136 673.2 DL 144 673.2 140
+673.2 DL 148 673.2 144 673.2 DL 152 673.2 148 673.2 DL 156 673.2 152
+673.2 DL 160 673.2 156 673.2 DL 164 673.2 160 673.2 DL 168 673.2 164
+673.2 DL 172 673.2 168 673.2 DL 176 673.2 172 673.2 DL 180 673.2 176
+673.2 DL 184 673.2 180 673.2 DL 188 673.2 184 673.2 DL 192 673.2 188
+673.2 DL 196 673.2 192 673.2 DL 200 673.2 196 673.2 DL 204 673.2 200
+673.2 DL 208 673.2 204 673.2 DL 212 673.2 208 673.2 DL 216 673.2 212
+673.2 DL/F3 8/Times-Roman@0 SF .556(*A considerable part of this w)93.6
+685.2 R .556(ork w)-.08 F .556(as done while under the emplo)-.08 F
+2.557(yo)-.08 G 2.557(ft)-2.557 G .557(he INGRES Project at the Uni)
+-2.557 F -.12(ve)-.2 G .557(rsity of California at).12 F(Berk)72 694.8 Q
+(ele)-.08 E -.52(y.)-.12 G/F4 10/Times-Bold@0 SF(Mail Systems and Addr)
+72 756 Q(essing in 4.2bsd)-.18 E(1)259.93 E EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)-.18 E(2)
-499 60 Q/F1 10/Times-Roman@0 SF(ambiguity in mix)72 96 Q(ed addresses.)-.15 E
-.679(Internet standards seek to eliminate these problems.)97 112.2 R(Initially)
-5.678 E 3.178(,t)-.65 G .678(hese proposed e)353.138 112.2 R .678
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(2)259.93 E/F1 10/Times-Roman@0 SF(ambiguity in mix)72 96 Q
+(ed addresses.)-.15 E .679
+(Internet standards seek to eliminate these problems.)97 112.2 R
+(Initially)5.678 E 3.178(,t)-.65 G .678(hese proposed e)-3.178 F .678
(xpanding the address)-.15 F .331
(pairs to address triples, consisting of {netw)72 124.2 R .331
-(ork, host, username} triples.)-.1 F(Netw)5.332 E .332(ork numbers must be uni)
--.1 F -.15(ve)-.25 G -.2(r-).15 G 1.452
-(sally agreed upon, and hosts can be assigned locally on each netw)72 136.2 R
-3.952(ork. The)-.1 F(user)3.952 E(-le)-.2 E -.15(ve)-.25 G 3.952(lp).15 G 1.452
-(resentation w)440.718 136.2 R(as)-.1 E .249(changed to address domains, compr\
-ised of a local resource identi\214cation and a hierarchical domain speci\214-)
+(ork, host, username} triples.)-.1 F(Netw)5.332 E .332
+(ork numbers must be uni)-.1 F -.15(ve)-.25 G -.2(r-).15 G 1.452
+(sally agreed upon, and hosts can be assigned locally on each netw)72
+136.2 R 3.952(ork. The)-.1 F(user)3.952 E(-le)-.2 E -.15(ve)-.25 G 3.952
+(lp).15 G 1.452(resentation w)-3.952 F(as)-.1 E .249(changed to address domains, comprised of a local resource identi\214cation and a hierarchical domain speci\214-)
72 148.2 R 1.54(cation with a common static root.)72 160.2 R 1.539
-(The domain technique separates the issue of ph)6.539 F 1.539(ysical v)-.05 F
-1.539(ersus logical)-.15 F 3.001(addressing. F)72 172.2 R .501(or e)-.15 F .502
-(xample, an address of the form \231eric@a.cc.berk)-.15 F(ele)-.1 E -.65(y.)
--.15 G .502(arpa\232 describes the logical or).65 F -.05(ga)-.18 G(niza-).05 E
-.443(tion of the address space \(user \231eric\232 on host \231a\232 in the Co\
-mputer Center at Berk)72 184.2 R(ele)-.1 E .443(y\) b)-.15 F .443
-(ut not the ph)-.2 F(ysical)-.05 E(netw)72 196.2 Q .934(orks used \(for e)-.1 F
-.934(xample, this could go o)-.15 F -.15(ve)-.15 G 3.434(rd).15 G(if)274.722
-196.2 Q .934(ferent netw)-.25 F .935
+(The domain technique separates the issue of ph)6.539 F 1.539(ysical v)
+-.05 F 1.539(ersus logical)-.15 F 3.001(addressing. F)72 172.2 R .501
+(or e)-.15 F .502(xample, an address of the form \231eric@a.cc.berk)-.15
+F(ele)-.1 E -.65(y.)-.15 G .502(arpa\232 describes the logical or).65 F
+-.05(ga)-.18 G(niza-).05 E .443(tion of the address space \(user \231eric\232 on host \231a\232 in the Computer Center at Berk)
+72 184.2 R(ele)-.1 E .443(y\) b)-.15 F .443(ut not the ph)-.2 F(ysical)
+-.05 E(netw)72 196.2 Q .934(orks used \(for e)-.1 F .934
+(xample, this could go o)-.15 F -.15(ve)-.15 G 3.434(rd).15 G(if)-3.434
+E .934(ferent netw)-.25 F .935
(orks depending on whether \231a\232 were on an)-.1 F
-(ethernet or a store-and-forw)72 208.2 Q(ard netw)-.1 E(ork\).)-.1 E/F2 10
-/Times-Italic@0 SF(Sendmail)97 224.4 Q F1 .493
-(is intended to help bridge the g)2.993 F .493(ap between the totally)-.05 F F2
-.493(ad hoc)2.993 F F1 -.1(wo)2.993 G .493(rld of netw).1 F .493(orks that kno)
--.1 F(w)-.25 E .854(nothing of each other and the clean, tightly-coupled w)72
-236.4 R .854(orld of unique netw)-.1 F .855(ork numbers.)-.1 F .855
-(It can accept old)5.855 F .633(arbitrary address syntax)72 248.4 R .632(es, r\
-esolving ambiguities using heuristics speci\214ed by the system administrator)
--.15 F 3.132(,a)-.4 G(s)500.11 248.4 Q .347(well as domain-based addressing.)72
-260.4 R .347(It helps guide the con)5.347 F -.15(ve)-.4 G .347
-(rsion of message formats between disparate net-).15 F -.1(wo)72 272.4 S 3.395
-(rks. In).1 F(short,)3.395 E F2(sendmail)3.395 E F1 .894
-(is designed to assist a graceful transition to consistent internetw)3.395 F
-.894(ork addressing)-.1 F(schemes.)72 284.4 Q .689
-(Section 1 de\214nes some of the terms frequently left fuzzy when w)97 312.6 R
-.69(orking in mail systems.)-.1 F .69(Section 2)5.69 F .595
-(discusses the design goals for)72 324.6 R F2(sendmail)3.095 E F1 5.595(.I)C
-3.095(ns)243.33 324.6 S .595(ection 3, the ne)255.315 324.6 R 3.095(wa)-.25 G
-.594(ddress formats and basic features of)332.705 324.6 R F2(send-)3.094 E
+(ethernet or a store-and-forw)72 208.2 Q(ard netw)-.1 E(ork\).)-.1 E/F2
+10/Times-Italic@0 SF(Sendmail)97 224.4 Q F1 .493
+(is intended to help bridge the g)2.993 F .493(ap between the totally)
+-.05 F F2 .493(ad hoc)2.993 F F1 -.1(wo)2.993 G .493(rld of netw).1 F
+.493(orks that kno)-.1 F(w)-.25 E .854
+(nothing of each other and the clean, tightly-coupled w)72 236.4 R .854
+(orld of unique netw)-.1 F .855(ork numbers.)-.1 F .855
+(It can accept old)5.855 F .633(arbitrary address syntax)72 248.4 R .632
+(es, resolving ambiguities using heuristics speci\214ed by the system administrator)
+-.15 F 3.132(,a)-.4 G(s)-3.132 E .347(well as domain-based addressing.)
+72 260.4 R .347(It helps guide the con)5.347 F -.15(ve)-.4 G .347
+(rsion of message formats between disparate net-).15 F -.1(wo)72 272.4 S
+3.395(rks. In).1 F(short,)3.395 E F2(sendmail)3.395 E F1 .894
+(is designed to assist a graceful transition to consistent internetw)
+3.395 F .894(ork addressing)-.1 F(schemes.)72 284.4 Q .689
+(Section 1 de\214nes some of the terms frequently left fuzzy when w)97
+312.6 R .69(orking in mail systems.)-.1 F .69(Section 2)5.69 F .595
+(discusses the design goals for)72 324.6 R F2(sendmail)3.095 E F1 5.595
+(.I)C 3.095(ns)-5.595 G .595(ection 3, the ne)-3.095 F 3.095(wa)-.25 G
+.594(ddress formats and basic features of)-3.095 F F2(send-)3.094 E
(mail)72 336.6 Q F1 .893(are described.)3.393 F .893
-(Section 4 discusses some of the special problems of the UUCP netw)5.893 F
-3.394(ork. The)-.1 F(dif)3.394 E(fer)-.25 E(-)-.2 E(ences between)72 348.6 Q F2
-(sendmail)2.5 E F1(and)2.5 E F2(delivermail)2.5 E F1
-(are presented in section 5.)2.5 E F0(DISCLAIMER:)112 376.8 Q F1 3.333(An)3.333
-G .833(umber of e)199.216 376.8 R .832
-(xamples in this paper use names of actual people and)-.15 F(or)112 388.8 Q
--.05(ga)-.18 G 4.572(nizations. This).05 F 2.072
-(is not intended to imply a commitment or e)4.572 F -.15(ve)-.25 G 4.573(na).15
-G 4.573(ni)409.987 388.8 S(ntellectual)422.34 388.8 Q 1.094
-(agreement on the part of these people or or)112 400.8 R -.05(ga)-.18 G 3.594
-(nizations. In).05 F(particular)3.594 E 3.594(,B)-.4 G 1.094(ell T)408.896
-400.8 R(elephone)-.7 E .656
-(Laboratories \(BTL\), Digital Equipment Corporation \(DEC\), La)112 412.8 R
-.657(wrence Berk)-.15 F(ele)-.1 E 3.157(yL)-.15 G(abo-)446.23 412.8 Q 2.136
-(ratories \(LBL\), Britton-Lee Incorporated \(BLI\), and the Uni)112 424.8 R
--.15(ve)-.25 G 2.136(rsity of California at).15 F(Berk)112 436.8 Q(ele)-.1 E
-3.088(ya)-.15 G .588(re not committed to an)155.378 436.8 R 3.089(yo)-.15 G
-3.089(ft)261.219 436.8 S .589(hese proposals at this time.)270.418 436.8 R .589
-(Much of this paper)5.589 F
-(represents no more than the personal opinions of the author)112 448.8 Q(.)-.55
-E F0 2.5(1. DEFINITIONS)72 477 R F1 .266(There are four basic concepts that mu\
-st be clearly distinguished when dealing with mail systems:)112 493.2 R .514
-(the user \(or the user')87 505.2 R 3.014(sa)-.55 G .515(gent\), the user')
-182.6 505.2 R 3.015(si)-.55 G .515(denti\214cation, the user')253.025 505.2 R
-3.015(sa)-.55 G .515(ddress, and the route.)354.56 505.2 R .515(These are dis-)
-5.515 F(tinguished primarily by their position independence.)87 517.2 Q F0 2.5
-(1.1. User)87 541.2 R(and Identi\214cation)2.5 E F1 .264
-(The user is the being \(a person or program\) that is creating or recei)127
-557.4 R .263(ving a message.)-.25 F(An)5.263 E F2 -.1(age)2.763 G(nt).1 E F1
-.659(is an entity operating on behalf of the user \212 such as a secretary who\
- handles my mail.)102 569.4 R .66(or a pro-)5.66 F(gram that automatically ret\
-urns a message such as \231I am at the UNICOM conference.)102 581.4 Q<9a>-.7 E
-.931(The identi\214cation is the tag that goes along with the particular user)
-127 597.6 R 5.931(.T)-.55 G .931(his tag is completely)418.707 597.6 R .216
-(independent of location.)102 609.6 R -.15(Fo)5.216 G 2.716(re).15 G .216
-(xample, my identi\214cation is the string \231Eric Allman,)225.324 609.6 R
-2.717<9a61>-.7 G .217(nd this identi-)448.006 609.6 R 1.228
-(\214cation does not change whether I am located at U.C. Berk)102 621.6 R(ele)
--.1 E 2.527 -.65(y, a)-.15 H 3.727(tB).65 G 1.227
-(ritton-Lee, or at a scienti\214c)390.502 621.6 R(institute in Austria.)102
-633.6 Q 2.379
-(Since the identi\214cation is frequently ambiguous \(e.g., there are tw)127
-649.8 R 4.879<6f99>-.1 G 2.38(Robert Henry\232s at)426.48 649.8 R(Berk)102
-661.8 Q(ele)-.1 E .316(y\) it is common to add other disambiguating informatio\
-n that is not strictly part of the iden-)-.15 F
-(ti\214cation \(e.g., Robert \231Code Generator\232 Henry v)102 673.8 Q
-(ersus Robert \231System Administrator\232 Henry\).)-.15 E F0 -1(Ve)72 756 S
-(rsion 8.2)1 E(USENIX \255 J)249.805 756 Q(an 83)-.15 E(Last Mod 11/27/93)
-424.55 756 Q EP
+(Section 4 discusses some of the special problems of the UUCP netw)5.893
+F 3.394(ork. The)-.1 F(dif)3.394 E(fer)-.25 E(-)-.2 E(ences between)72
+348.6 Q F2(sendmail)2.5 E F1(and)2.5 E F2(delivermail)2.5 E F1
+(are presented in section 5.)2.5 E F0(DISCLAIMER:)112 376.8 Q F1 3.333
+(An)3.333 G .833(umber of e)-3.333 F .832
+(xamples in this paper use names of actual people and)-.15 F(or)112
+388.8 Q -.05(ga)-.18 G 4.572(nizations. This).05 F 2.072
+(is not intended to imply a commitment or e)4.572 F -.15(ve)-.25 G 4.573
+(na).15 G 4.573(ni)-4.573 G(ntellectual)-4.573 E 1.094
+(agreement on the part of these people or or)112 400.8 R -.05(ga)-.18 G
+3.594(nizations. In).05 F(particular)3.594 E 3.594(,B)-.4 G 1.094(ell T)
+-3.594 F(elephone)-.7 E .656
+(Laboratories \(BTL\), Digital Equipment Corporation \(DEC\), La)112
+412.8 R .657(wrence Berk)-.15 F(ele)-.1 E 3.157(yL)-.15 G(abo-)-3.157 E
+2.136(ratories \(LBL\), Britton-Lee Incorporated \(BLI\), and the Uni)
+112 424.8 R -.15(ve)-.25 G 2.136(rsity of California at).15 F(Berk)112
+436.8 Q(ele)-.1 E 3.088(ya)-.15 G .588(re not committed to an)-3.088 F
+3.089(yo)-.15 G 3.089(ft)-3.089 G .589(hese proposals at this time.)
+-3.089 F .589(Much of this paper)5.589 F
+(represents no more than the personal opinions of the author)112 448.8 Q
+(.)-.55 E F0 2.5(1. DEFINITIONS)72 477 R F1 .266(There are four basic concepts that must be clearly distinguished when dealing with mail systems:)
+112 493.2 R .514(the user \(or the user')87 505.2 R 3.014(sa)-.55 G .515
+(gent\), the user')-3.014 F 3.015(si)-.55 G .515
+(denti\214cation, the user')-3.015 F 3.015(sa)-.55 G .515
+(ddress, and the route.)-3.015 F .515(These are dis-)5.515 F
+(tinguished primarily by their position independence.)87 517.2 Q F0 2.5
+(1.1. User)87 541.2 R(and Identi\214cation)2.5 E F1 .264(The user is the being \(a person or program\) that is creating or recei)
+127 557.4 R .263(ving a message.)-.25 F(An)5.263 E F2 -.1(age)2.763 G
+(nt).1 E F1 .659(is an entity operating on behalf of the user \212 such as a secretary who handles my mail.)
+102 569.4 R .66(or a pro-)5.66 F(gram that automatically returns a message such as \231I am at the UNICOM conference.)
+102 581.4 Q<9a>-.7 E .931(The identi\214cation is the tag that goes along with the particular user)
+127 597.6 R 5.931(.T)-.55 G .931(his tag is completely)-5.931 F .216
+(independent of location.)102 609.6 R -.15(Fo)5.216 G 2.716(re).15 G
+.216(xample, my identi\214cation is the string \231Eric Allman,)-2.866 F
+2.717<9a61>-.7 G .217(nd this identi-)-2.717 F 1.228
+(\214cation does not change whether I am located at U.C. Berk)102 621.6
+R(ele)-.1 E 2.527 -.65(y, a)-.15 H 3.727(tB).65 G 1.227
+(ritton-Lee, or at a scienti\214c)-3.727 F(institute in Austria.)102
+633.6 Q 2.379(Since the identi\214cation is frequently ambiguous \(e.g., there are tw)
+127 649.8 R 4.879<6f99>-.1 G 2.38(Robert Henry\232s at)-4.879 F(Berk)102
+661.8 Q(ele)-.1 E .316(y\) it is common to add other disambiguating information that is not strictly part of the iden-)
+-.15 F(ti\214cation \(e.g., Robert \231Code Generator\232 Henry v)102
+673.8 Q(ersus Robert \231System Administrator\232 Henry\).)-.15 E F0 -1
+(Ve)72 756 S(rsion 8.2)1 E(USENIX \255 J)130.475 E(an 83)-.15 E
+(Last Mod 11/27/1993)88.355 E EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)-.18 E(3)
-499 60 Q 2.5(1.2. Addr)87 96 R(ess)-.18 E/F1 10/Times-Roman@0 SF .785
-(The address speci\214es a location.)127 112.2 R .786(As I mo)5.786 F 1.086
--.15(ve a)-.15 H .786(round, my address changes.).15 F -.15(Fo)5.786 G 3.286
-(re).15 G .786(xample, my)455.994 112.2 R 9.712
-(address might change from \231eric@Berk)102 124.2 R(ele)-.1 E -.65(y.)-.15 G
-(ARP).65 E 9.711(A\232 to \231eric@bli.UUCP\232 or \231all-)-.92 F
-(man@IIASA.Austria\232 depending on my current af)102 136.2 Q(\214liation.)-.25
-E(Ho)127 152.4 Q(we)-.25 E -.15(ve)-.25 G 2.819 -.4(r, a).15 H 4.519(na).4 G
-2.019(ddress is independent of the location of an)188.018 152.4 R 2.019
-(yone else.)-.15 F 2.02(That is, my address)7.02 F .385(remains the same to e)
-102 164.4 R -.15(ve)-.25 G .385(ryone who might be sending me mail.).15 F -.15
-(Fo)5.385 G 2.885(re).15 G .385(xample, a person at MIT and a)379.22 164.4 R
-(person at USC could both send to \231eric@Berk)102 176.4 Q(ele)-.1 E -.65(y.)
--.15 G(ARP).65 E(A\232 and ha)-.92 E .3 -.15(ve i)-.2 H 2.5(ta).15 G(rri)388.44
-176.4 Q .3 -.15(ve t)-.25 H 2.5(ot).15 G(he same mailbox.)422.48 176.4 Q .627
-(Ideally a \231white pages\232 service w)127 192.6 R .627(ould be pro)-.1 F
-.627(vided to map user identi\214cations into addresses)-.15 F .444(\(for e)102
-204.6 R .444(xample, see [Solomon81]\).)-.15 F .444
-(Currently this is handled by passing around scraps of paper or by)5.444 F
-(calling people on the telephone to \214nd out their address.)102 216.6 Q F0
-2.5(1.3. Route)87 240.6 R F1 .288(While an address speci\214es)127 256.8 R/F2
-10/Times-Italic@0 SF(wher)2.788 E(e)-.37 E F1 .289
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(3)259.93 E 2.5(1.2. Addr)87 96 R(ess)-.18 E/F1 10/Times-Roman@0
+SF .785(The address speci\214es a location.)127 112.2 R .786(As I mo)
+5.786 F 1.086 -.15(ve a)-.15 H .786(round, my address changes.).15 F
+-.15(Fo)5.786 G 3.286(re).15 G .786(xample, my)-3.436 F .749
+(address might change from \231eric@Berk)102 124.2 R(ele)-.1 E -.65(y.)
+-.15 G(ARP).65 E .749
+(A\232 to \231eric@bli.UUCP\232 or \231allman@IIASA.Aus-)-.92 F
+(tria\232 depending on my current af)102 136.2 Q(\214liation.)-.25 E(Ho)
+127 152.4 Q(we)-.25 E -.15(ve)-.25 G 2.819 -.4(r, a).15 H 4.519(na).4 G
+2.019(ddress is independent of the location of an)-4.519 F 2.019
+(yone else.)-.15 F 2.02(That is, my address)7.02 F .385
+(remains the same to e)102 164.4 R -.15(ve)-.25 G .385
+(ryone who might be sending me mail.).15 F -.15(Fo)5.385 G 2.885(re).15
+G .385(xample, a person at MIT and a)-3.035 F
+(person at USC could both send to \231eric@Berk)102 176.4 Q(ele)-.1 E
+-.65(y.)-.15 G(ARP).65 E(A\232 and ha)-.92 E .3 -.15(ve i)-.2 H 2.5(ta)
+.15 G(rri)-2.5 E .3 -.15(ve t)-.25 H 2.5(ot).15 G(he same mailbox.)-2.5
+E .627(Ideally a \231white pages\232 service w)127 192.6 R .627
+(ould be pro)-.1 F .627
+(vided to map user identi\214cations into addresses)-.15 F .444(\(for e)
+102 204.6 R .444(xample, see [Solomon81]\).)-.15 F .444
+(Currently this is handled by passing around scraps of paper or by)5.444
+F(calling people on the telephone to \214nd out their address.)102 216.6
+Q F0 2.5(1.3. Route)87 240.6 R F1 .288(While an address speci\214es)127
+256.8 R/F2 10/Times-Italic@0 SF(wher)2.788 E(e)-.37 E F1 .289
(to \214nd a mailbox, a route speci\214es)2.789 F F2(how)2.789 E F1 .289
-(to \214nd the mailbox.)2.789 F(Speci\214cally)102 268.8 Q 2.607(,i)-.65 G
-2.607(ts)156.457 268.8 S .106(peci\214es a path from sender to recei)165.734
-268.8 R -.15(ve)-.25 G 3.706 -.55(r. A).15 H 2.606(ss).55 G .106
-(uch, the route is potentially dif)343.364 268.8 R .106(ferent for)-.25 F -2.15
--.25(ev e)102 280.8 T(ry pair of people in the electronic uni).25 E -.15(ve)
--.25 G(rse.).15 E .258(Normally the route is hidden from the user by the softw)
-127 297 R 2.758(are. Ho)-.1 F(we)-.25 E -.15(ve)-.25 G 1.058 -.4(r, s).15 H
-.258(ome netw).4 F .258(orks put the)-.1 F -.2(bu)102 309 S 1.972
-(rden of determining the route onto the sender).2 F 6.971(.A)-.55 G 1.971
-(lthough this simpli\214es the softw)322.544 309 R 1.971(are, it also)-.1 F
-(greatly impairs the usability for most users.)102 321 Q(The UUCP netw)5 E
-(ork is an e)-.1 E(xample of such a netw)-.15 E(ork.)-.1 E F0 2.5(2. DESIGN)72
-345 R(GO)2.5 E(ALS)-.4 E F1(Design goals for)112 363.2 Q F2(sendmail)2.5 E/F3 7
-/Times-Roman@0 SF(1)216.71 359.2 Q F1(include:)222.71 363.2 Q 12.5
-(\(1\) Compatibility)92 379.4 R 1.363(with the e)3.863 F 1.363
-(xisting mail programs, including Bell v)-.15 F 1.363(ersion 6 mail, Bell v)
--.15 F 1.364(ersion 7)-.15 F 3.589(mail, Berk)118.66 391.4 R(ele)-.1 E(y)-.15 E
-F2(Mail)6.089 E F1 3.589
-([Shoens79], BerkNet mail [Schmidt79], and hopefully UUCP mail)6.089 F([No)
-118.66 403.4 Q 2.5(witz78]. ARP)-.25 F(ANET mail [Crock)-.92 E(er82] w)-.1 E
-(as also required.)-.1 E 12.5(\(2\) Reliability)92 419.6 R 4.002(,i)-.65 G
-4.002(nt)169.522 419.6 S 1.502(he sense of guaranteeing that e)181.304 419.6 R
--.15(ve)-.25 G 1.502(ry message is correctly deli).15 F -.15(ve)-.25 G 1.503
-(red or at least).15 F .368
-(brought to the attention of a human for correct disposal; no message should e)
-118.66 431.6 R -.15(ve)-.25 G 2.868(rb).15 G 2.868(ec)452.252 431.6 S
-(ompletely)464 431.6 Q 2.54(lost. This)118.66 443.6 R .04(goal w)2.54 F .041
-(as considered essential because of the emphasis on mail in our en)-.1 F 2.541
-(vironment. It)-.4 F 1.755
-(has turned out to be one of the hardest goals to satisfy)118.66 455.6 R 4.254
-(,e)-.65 G 1.754(specially in the f)363.756 455.6 R 1.754(ace of the man)-.1 F
-(y)-.15 E .977(anomalous message formats produced by v)118.66 467.6 R .977
-(arious ARP)-.25 F .977(ANET sites.)-.92 F -.15(Fo)5.977 G 3.478(re).15 G .978
-(xample, certain sites)420.114 467.6 R .069
-(generate improperly formated addresses, occasionally causing error)118.66
-479.6 R .069(-message loops.)-.2 F .068(Some hosts)5.069 F .766(use blanks in \
-names, causing problems with mail programs that assume that an address is one)
+(to \214nd the mailbox.)2.789 F(Speci\214cally)102 268.8 Q 2.607(,i)-.65
+G 2.607(ts)-2.607 G .106(peci\214es a path from sender to recei)-2.607 F
+-.15(ve)-.25 G 3.706 -.55(r. A).15 H 2.606(ss).55 G .106
+(uch, the route is potentially dif)-2.606 F .106(ferent for)-.25 F -2.15
+-.25(ev e)102 280.8 T(ry pair of people in the electronic uni).25 E -.15
+(ve)-.25 G(rse.).15 E .258
+(Normally the route is hidden from the user by the softw)127 297 R 2.758
+(are. Ho)-.1 F(we)-.25 E -.15(ve)-.25 G 1.058 -.4(r, s).15 H .258
+(ome netw).4 F .258(orks put the)-.1 F -.2(bu)102 309 S 1.972
+(rden of determining the route onto the sender).2 F 6.971(.A)-.55 G
+1.971(lthough this simpli\214es the softw)-6.971 F 1.971(are, it also)
+-.1 F(greatly impairs the usability for most users.)102 321 Q
+(The UUCP netw)5 E(ork is an e)-.1 E(xample of such a netw)-.15 E(ork.)
+-.1 E F0 2.5(2. DESIGN)72 345 R(GO)2.5 E(ALS)-.4 E F1(Design goals for)
+112 363.2 Q F2(sendmail)2.5 E/F3 7/Times-Roman@0 SF(1)-4 I F1(include:)
+2.5 4 M 12.5(\(1\) Compatibility)92 379.4 R 1.363(with the e)3.863 F
+1.363(xisting mail programs, including Bell v)-.15 F 1.363
+(ersion 6 mail, Bell v)-.15 F 1.364(ersion 7)-.15 F 3.589(mail, Berk)
+118.66 391.4 R(ele)-.1 E(y)-.15 E F2(Mail)6.089 E F1 3.589
+([Shoens79], BerkNet mail [Schmidt79], and hopefully UUCP mail)6.089 F
+([No)118.66 403.4 Q 2.5(witz78]. ARP)-.25 F(ANET mail [Crock)-.92 E
+(er82] w)-.1 E(as also required.)-.1 E 12.5(\(2\) Reliability)92 419.6 R
+4.002(,i)-.65 G 4.002(nt)-4.002 G 1.502(he sense of guaranteeing that e)
+-4.002 F -.15(ve)-.25 G 1.502(ry message is correctly deli).15 F -.15
+(ve)-.25 G 1.503(red or at least).15 F .368(brought to the attention of a human for correct disposal; no message should e)
+118.66 431.6 R -.15(ve)-.25 G 2.868(rb).15 G 2.868(ec)-2.868 G
+(ompletely)-2.868 E 2.54(lost. This)118.66 443.6 R .04(goal w)2.54 F
+.041(as considered essential because of the emphasis on mail in our en)
+-.1 F 2.541(vironment. It)-.4 F 1.755
+(has turned out to be one of the hardest goals to satisfy)118.66 455.6 R
+4.254(,e)-.65 G 1.754(specially in the f)-4.254 F 1.754(ace of the man)
+-.1 F(y)-.15 E .977(anomalous message formats produced by v)118.66 467.6
+R .977(arious ARP)-.25 F .977(ANET sites.)-.92 F -.15(Fo)5.977 G 3.478
+(re).15 G .978(xample, certain sites)-3.628 F .069
+(generate improperly formated addresses, occasionally causing error)
+118.66 479.6 R .069(-message loops.)-.2 F .068(Some hosts)5.069 F .766(use blanks in names, causing problems with mail programs that assume that an address is one)
118.66 491.6 R -.1(wo)118.66 503.6 S 3.924(rd. The).1 F 1.423
(semantics of some \214elds are interpreted slightly dif)3.923 F 1.423
-(ferently by dif)-.25 F 1.423(ferent sites.)-.25 F(In)6.423 E(summary)118.66
-515.6 Q 3.022(,t)-.65 G .523(he obscure features of the ARP)163.532 515.6 R
-.523(ANET mail protocol really)-.92 F F2(ar)3.023 E(e)-.37 E F1 .523
-(used and are dif)3.023 F(\214cult)-.25 E(to support, b)118.66 527.6 Q
-(ut must be supported.)-.2 E 12.5(\(3\) Existing)92 543.8 R(softw)2.939 E .439
-(are to do actual deli)-.1 F -.15(ve)-.25 G .439(ry should be used whene).15 F
--.15(ve)-.25 G 2.938(rp).15 G 2.938(ossible. This)387.658 543.8 R .438
-(goal deri)2.938 F -.15(ve)-.25 G 2.938(sa).15 G(s)500.11 543.8 Q
-(much from political and practical considerations as technical.)118.66 555.8 Q
-12.5(\(4\) Easy)92 572 R -.15(ex)2.898 G .398(pansion to f).15 F .398
-(airly comple)-.1 F 2.898(xe)-.15 G -.4(nv)261.06 572 S .399
-(ironments, including multiple connections to a single net-).4 F -.1(wo)118.66
-584 S .63(rk type \(such as with multiple UUCP or Ethernets\).).1 F .63
-(This goal requires consideration of the)5.63 F
-(contents of an address as well as its syntax in order to determine which g)
-118.66 596 Q(ate)-.05 E -.1(wa)-.25 G 2.5(yt).1 G 2.5(ou)443.48 596 S(se.)
-455.98 596 Q 12.5(\(5\) Con\214guration)92 612.2 R 1.048
-(information should not be compiled into the code.)3.548 F 3.549(As)6.049 G
-1.049(ingle compiled program)405.802 612.2 R .084
+(ferently by dif)-.25 F 1.423(ferent sites.)-.25 F(In)6.423 E(summary)
+118.66 515.6 Q 3.022(,t)-.65 G .523(he obscure features of the ARP)
+-3.022 F .523(ANET mail protocol really)-.92 F F2(ar)3.023 E(e)-.37 E F1
+.523(used and are dif)3.023 F(\214cult)-.25 E(to support, b)118.66 527.6
+Q(ut must be supported.)-.2 E 12.5(\(3\) Existing)92 543.8 R(softw)2.939
+E .439(are to do actual deli)-.1 F -.15(ve)-.25 G .439
+(ry should be used whene).15 F -.15(ve)-.25 G 2.938(rp).15 G 2.938
+(ossible. This)-2.938 F .438(goal deri)2.938 F -.15(ve)-.25 G 2.938(sa)
+.15 G(s)-2.938 E
+(much from political and practical considerations as technical.)118.66
+555.8 Q 12.5(\(4\) Easy)92 572 R -.15(ex)2.898 G .398(pansion to f).15 F
+.398(airly comple)-.1 F 2.898(xe)-.15 G -.4(nv)-2.898 G .399
+(ironments, including multiple connections to a single net-).4 F -.1(wo)
+118.66 584 S .63(rk type \(such as with multiple UUCP or Ethernets\).).1
+F .63(This goal requires consideration of the)5.63 F(contents of an address as well as its syntax in order to determine which g)
+118.66 596 Q(ate)-.05 E -.1(wa)-.25 G 2.5(yt).1 G 2.5(ou)-2.5 G(se.)-2.5
+E 12.5(\(5\) Con\214guration)92 612.2 R 1.048
+(information should not be compiled into the code.)3.548 F 3.549(As)
+6.049 G 1.049(ingle compiled program)-3.549 F .084
(should be able to run as is at an)118.66 624.2 R 2.584(ys)-.15 G .083
-(ite \(barring such basic changes as the CPU type or the operat-)256.196 624.2
-R .342(ing system\).)118.66 636.2 R 1.942 -.8(We h)5.342 H -2.25 -.2(av e).8 H
-.343(found this seemingly unimportant goal to be critical in real life.)3.042 F
-(Besides)5.343 E .734(the simple problems that occur when an)118.66 648.2 R
-3.234(yp)-.15 G .734(rogram gets recompiled in a dif)295.568 648.2 R .733
-(ferent en)-.25 F(vironment,)-.4 E(man)118.66 660.2 Q 2.5(ys)-.15 G(ites lik)
-147.12 660.2 Q 2.5(et)-.1 G 2.5<6f99>183.69 660.2 S(\214ddle\232 with an)195.63
-660.2 Q(ything that the)-.15 E 2.5(yw)-.15 G(ill be recompiling an)327.27 660.2
-Q(yw)-.15 E(ay)-.1 E(.)-.65 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(1)93.6 689.2 Q/F5 8/Times-Roman@0 SF(This section mak)3.2 I
-(es no distinction between)-.08 E/F6 8/Times-Italic@0 SF(delivermail)2 E F5
-(and)2 E F6(sendmail.)2 E F0 -1(Ve)72 756 S(rsion 8.2)1 E(USENIX \255 J)249.805
-756 Q(an 83)-.15 E(Last Mod 11/27/93)424.55 756 Q EP
+(ite \(barring such basic changes as the CPU type or the operat-)-2.584
+F .342(ing system\).)118.66 636.2 R 1.942 -.8(We h)5.342 H -2.25 -.2
+(av e).8 H .343
+(found this seemingly unimportant goal to be critical in real life.)
+3.042 F(Besides)5.343 E .734(the simple problems that occur when an)
+118.66 648.2 R 3.234(yp)-.15 G .734(rogram gets recompiled in a dif)
+-3.234 F .733(ferent en)-.25 F(vironment,)-.4 E(man)118.66 660.2 Q 2.5
+(ys)-.15 G(ites lik)-2.5 E 2.5(et)-.1 G 2.5<6f99>-2.5 G
+(\214ddle\232 with an)-2.5 E(ything that the)-.15 E 2.5(yw)-.15 G
+(ill be recompiling an)-2.5 E(yw)-.15 E(ay)-.1 E(.)-.65 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(1)93.6
+689.2 Q/F5 8/Times-Roman@0 SF(This section mak)3.2 I
+(es no distinction between)-.08 E/F6 8/Times-Italic@0 SF(delivermail)2 E
+F5(and)2 E F6(sendmail.)2 E F0 -1(Ve)72 756 S(rsion 8.2)1 E
+(USENIX \255 J)130.475 E(an 83)-.15 E(Last Mod 11/27/1993)88.355 E EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)-.18 E(4)
-499 60 Q/F1 10/Times-Roman@0 SF(\(6\))92 96 Q/F2 10/Times-Italic@0 SF(Sendmail)
-118.66 96 Q F1 .184(must be able to let v)2.684 F .184
-(arious groups maintain their o)-.25 F .184(wn mailing lists, and let indi)-.25
-F(viduals)-.25 E(specify their o)118.66 108 Q(wn forw)-.25 E
-(arding, without modifying the system alias \214le.)-.1 E 12.5(\(7\) Each)92
-124.2 R .313(user should be able to specify which mailer to e)2.814 F -.15(xe)
--.15 G .313(cute to process mail being deli).15 F -.15(ve)-.25 G .313(red for)
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(4)259.93 E/F1 10/Times-Roman@0 SF(\(6\))92 96 Q/F2 10
+/Times-Italic@0 SF(Sendmail)15 E F1 .184(must be able to let v)2.684 F
+.184(arious groups maintain their o)-.25 F .184
+(wn mailing lists, and let indi)-.25 F(viduals)-.25 E(specify their o)
+118.66 108 Q(wn forw)-.25 E
+(arding, without modifying the system alias \214le.)-.1 E 12.5
+(\(7\) Each)92 124.2 R .313
+(user should be able to specify which mailer to e)2.814 F -.15(xe)-.15 G
+.313(cute to process mail being deli).15 F -.15(ve)-.25 G .313(red for)
.15 F 3.098(him. This)118.66 136.2 R .598(feature allo)3.098 F .598
(ws users who are using specialized mailers that use a dif)-.25 F .598
(ferent format to)-.25 F -.2(bu)118.66 148.2 S .25(ild their en).2 F .25
(vironment without changing the system, and f)-.4 F .25
-(acilitates specialized functions \(such)-.1 F(as returning an \231I am on v)
-118.66 160.2 Q(acation\232 message\).)-.25 E 12.5(\(8\) Netw)92 176.4 R 1.552
-(ork traf)-.1 F 1.552(\214c should be minimized by batching addresses to a sin\
-gle host where possible,)-.25 F(without assistance from the user)118.66 188.4 Q
-(.)-.55 E .375(These goals moti)112 204.6 R -.25(va)-.25 G .375
+(acilitates specialized functions \(such)-.1 F
+(as returning an \231I am on v)118.66 160.2 Q(acation\232 message\).)
+-.25 E 12.5(\(8\) Netw)92 176.4 R 1.552(ork traf)-.1 F 1.552(\214c should be minimized by batching addresses to a single host where possible,)
+-.25 F(without assistance from the user)118.66 188.4 Q(.)-.55 E .375
+(These goals moti)112 204.6 R -.25(va)-.25 G .375
(ted the architecture illustrated in \214gure 1.).25 F .374
-(The user interacts with a mail gen-)5.375 F .49(erating and sending program.)
-87 216.6 R .491(When the mail is created, the generator calls)5.49 F F2
-(sendmail)2.991 E F1 2.991(,w)C .491(hich routes the)444.138 216.6 R .841
+(The user interacts with a mail gen-)5.375 F .49
+(erating and sending program.)87 216.6 R .491
+(When the mail is created, the generator calls)5.49 F F2(sendmail)2.991
+E F1 2.991(,w)C .491(hich routes the)-2.991 F .841
(message to the correct mailer\(s\).)87 228.6 R .841
(Since some of the senders may be netw)5.841 F .84(ork serv)-.1 F .84
-(ers and some of the)-.15 F(mailers may be netw)87 240.6 Q(ork clients,)-.1 E
-F2(sendmail)2.5 E F1(may be used as an internet mail g)2.5 E(ate)-.05 E -.1(wa)
--.25 G -.65(y.).1 G F0 2.5(3. USA)72 264.6 R(GE)-.55 E 2.5(3.1. Addr)87 288.6 R
-(ess F)-.18 E(ormats)-.25 E F1(Ar)127 304.8 Q .886
-(guments may be \215ags or addresses.)-.18 F .886(Flags set v)5.886 F .886
-(arious processing options.)-.25 F -.15(Fo)5.886 G(llo).15 E .886(wing \215ag)
--.25 F(ar)102 316.8 Q .611(guments, address ar)-.18 F .611(guments may be gi)
--.18 F -.15(ve)-.25 G 3.111(n. Addresses).15 F(follo)3.111 E 3.111(wt)-.25 G
-.611(he syntax in RFC822 [Crock)365.558 316.8 R(er82])-.1 E(for ARP)102 328.8 Q
-(ANET address formats.)-.92 E(In brief, the format is:)5 E 12.5(\(1\) An)107
-345 R(ything in parentheses is thro)-.15 E(wn a)-.25 E -.1(wa)-.15 G 2.5(y\().1
-G(as a comment\).)299.65 345 Q 12.5(\(2\) An)107 361.2 R .051
+(ers and some of the)-.15 F(mailers may be netw)87 240.6 Q(ork clients,)
+-.1 E F2(sendmail)2.5 E F1(may be used as an internet mail g)2.5 E(ate)
+-.05 E -.1(wa)-.25 G -.65(y.).1 G F0 2.5(3. USA)72 264.6 R(GE)-.55 E 2.5
+(3.1. Addr)87 288.6 R(ess F)-.18 E(ormats)-.25 E F1(Ar)127 304.8 Q .886
+(guments may be \215ags or addresses.)-.18 F .886(Flags set v)5.886 F
+.886(arious processing options.)-.25 F -.15(Fo)5.886 G(llo).15 E .886
+(wing \215ag)-.25 F(ar)102 316.8 Q .611(guments, address ar)-.18 F .611
+(guments may be gi)-.18 F -.15(ve)-.25 G 3.111(n. Addresses).15 F(follo)
+3.111 E 3.111(wt)-.25 G .611(he syntax in RFC822 [Crock)-3.111 F(er82])
+-.1 E(for ARP)102 328.8 Q(ANET address formats.)-.92 E
+(In brief, the format is:)5 E 12.5(\(1\) An)107 345 R
+(ything in parentheses is thro)-.15 E(wn a)-.25 E -.1(wa)-.15 G 2.5(y\()
+.1 G(as a comment\).)-2.5 E 12.5(\(2\) An)107 361.2 R .051
(ything in angle brack)-.15 F .051(ets \(\231<)-.1 F .051
-(>\232\) is preferred o)1.666 F -.15(ve)-.15 G 2.551(ra).15 G -.15(ny)348.064
-361.2 S .051(thing else.).15 F .051(This rule implements the)5.051 F(ARP)133.66
-373.2 Q(ANET standard that addresses of the form)-.92 E .4 LW 77 408 72 408 DL
-79 408 74 408 DL 84 408 79 408 DL 89 408 84 408 DL 94 408 89 408 DL 99 408 94
-408 DL 104 408 99 408 DL 109 408 104 408 DL 114 408 109 408 DL 119 408 114 408
-DL 124 408 119 408 DL 129 408 124 408 DL 134 408 129 408 DL 139 408 134 408 DL
-144 408 139 408 DL 149 408 144 408 DL 154 408 149 408 DL 159 408 154 408 DL 164
-408 159 408 DL 169 408 164 408 DL 174 408 169 408 DL 179 408 174 408 DL 184 408
-179 408 DL 189 408 184 408 DL 194 408 189 408 DL 199 408 194 408 DL 204 408 199
-408 DL 209 408 204 408 DL 214 408 209 408 DL 219 408 214 408 DL 224 408 219 408
-DL 229 408 224 408 DL 234 408 229 408 DL 239 408 234 408 DL 244 408 239 408 DL
-249 408 244 408 DL 254 408 249 408 DL 259 408 254 408 DL 264 408 259 408 DL 269
-408 264 408 DL 274 408 269 408 DL 279 408 274 408 DL 284 408 279 408 DL 289 408
-284 408 DL 294 408 289 408 DL 299 408 294 408 DL 304 408 299 408 DL 309 408 304
-408 DL 314 408 309 408 DL 319 408 314 408 DL 324 408 319 408 DL 329 408 324 408
-DL 334 408 329 408 DL 339 408 334 408 DL 344 408 339 408 DL 349 408 344 408 DL
-354 408 349 408 DL 359 408 354 408 DL 364 408 359 408 DL 369 408 364 408 DL 374
-408 369 408 DL 379 408 374 408 DL 384 408 379 408 DL 389 408 384 408 DL 394 408
-389 408 DL 399 408 394 408 DL 404 408 399 408 DL 409 408 404 408 DL 414 408 409
-408 DL 419 408 414 408 DL 424 408 419 408 DL 429 408 424 408 DL 434 408 429 408
-DL 439 408 434 408 DL 444 408 439 408 DL 449 408 444 408 DL 454 408 449 408 DL
-459 408 454 408 DL 464 408 459 408 DL 469 408 464 408 DL 474 408 469 408 DL 479
-408 474 408 DL 484 408 479 408 DL 489 408 484 408 DL 494 408 489 408 DL 499 408
-494 408 DL 504 408 499 408 DL(Figure 1 \212 Sendmail System Structure.)208 660
-Q 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 F0 -1(Ve)72 756 S(rsion 8.2)1 E
-(USENIX \255 J)249.805 756 Q(an 83)-.15 E(Last Mod 11/27/93)424.55 756 Q EP
+(>\232\) is preferred o)1.666 F -.15(ve)-.15 G 2.551(ra).15 G -.15(ny)
+-2.551 G .051(thing else.).15 F .051(This rule implements the)5.051 F
+(ARP)133.66 373.2 Q(ANET standard that addresses of the form)-.92 E .4
+LW 77 408 72 408 DL 79 408 74 408 DL 84 408 79 408 DL 89 408 84 408 DL
+94 408 89 408 DL 99 408 94 408 DL 104 408 99 408 DL 109 408 104 408 DL
+114 408 109 408 DL 119 408 114 408 DL 124 408 119 408 DL 129 408 124 408
+DL 134 408 129 408 DL 139 408 134 408 DL 144 408 139 408 DL 149 408 144
+408 DL 154 408 149 408 DL 159 408 154 408 DL 164 408 159 408 DL 169 408
+164 408 DL 174 408 169 408 DL 179 408 174 408 DL 184 408 179 408 DL 189
+408 184 408 DL 194 408 189 408 DL 199 408 194 408 DL 204 408 199 408 DL
+209 408 204 408 DL 214 408 209 408 DL 219 408 214 408 DL 224 408 219 408
+DL 229 408 224 408 DL 234 408 229 408 DL 239 408 234 408 DL 244 408 239
+408 DL 249 408 244 408 DL 254 408 249 408 DL 259 408 254 408 DL 264 408
+259 408 DL 269 408 264 408 DL 274 408 269 408 DL 279 408 274 408 DL 284
+408 279 408 DL 289 408 284 408 DL 294 408 289 408 DL 299 408 294 408 DL
+304 408 299 408 DL 309 408 304 408 DL 314 408 309 408 DL 319 408 314 408
+DL 324 408 319 408 DL 329 408 324 408 DL 334 408 329 408 DL 339 408 334
+408 DL 344 408 339 408 DL 349 408 344 408 DL 354 408 349 408 DL 359 408
+354 408 DL 364 408 359 408 DL 369 408 364 408 DL 374 408 369 408 DL 379
+408 374 408 DL 384 408 379 408 DL 389 408 384 408 DL 394 408 389 408 DL
+399 408 394 408 DL 404 408 399 408 DL 409 408 404 408 DL 414 408 409 408
+DL 419 408 414 408 DL 424 408 419 408 DL 429 408 424 408 DL 434 408 429
+408 DL 439 408 434 408 DL 444 408 439 408 DL 449 408 444 408 DL 454 408
+449 408 DL 459 408 454 408 DL 464 408 459 408 DL 469 408 464 408 DL 474
+408 469 408 DL 479 408 474 408 DL 484 408 479 408 DL 489 408 484 408 DL
+494 408 489 408 DL 499 408 494 408 DL 504 408 499 408 DL
+(Figure 1 \212 Sendmail System Structure.)208 660 Q 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 F0 -1(Ve)72 756 S(rsion 8.2)1 E
+(USENIX \255 J)130.475 E(an 83)-.15 E(Last Mod 11/27/1993)88.355 E EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)-.18 E(5)
-499 60 Q/F1 10/Times-Roman@0 SF(user name <machine-address>)173.66 96 Q(will s\
-end to the electronic \231machine-address\232 rather than the human \231user n\
-ame.)133.66 112.2 Q<9a>-.7 E 12.5(\(3\) Double)107 128.4 R 2.246(quotes \()
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(5)259.93 E/F1 10/Times-Roman@0 SF(user name <machine-address>)
+173.66 96 Q(will send to the electronic \231machine-address\232 rather than the human \231user name.)
+133.66 112.2 Q<9a>-.7 E 12.5(\(3\) Double)107 128.4 R 2.246(quotes \()
4.746 F -2.754 2.5("\) q)2.5 H 2.246
-(uote phrases; backslashes quote characters.)224.188 128.4 R 2.246
-(Backslashes are more)7.246 F(po)133.66 140.4 Q .654(werful in that the)-.25 F
-3.154(yw)-.15 G .655(ill cause otherwise equi)229.196 140.4 R -.25(va)-.25 G
-.655(lent phrases to compare dif).25 F .655(ferently \212 for)-.25 F -.15(ex)
-133.66 152.4 S(ample,).15 E/F2 10/Times-Italic@0 SF(user)3.873 E F1(and)3.873 E
-F2("user")3.872 E F1 1.372(are equi)3.872 F -.25(va)-.25 G 1.372(lent, b).25 F
-(ut)-.2 E F2(\\user)3.872 E F1 1.372(is dif)3.872 F 1.372
-(ferent from either of them.)-.25 F(This)6.372 E(might be used to a)133.66
-164.4 Q -.2(vo)-.2 G(id normal aliasing or duplicate suppression algorithms.).2
-E -.15(Pa)127 180.6 S 1.12(rentheses, angle brack).15 F 1.12
-(ets, and double quotes must be properly balanced and nested.)-.1 F(The)6.12 E
-(re)102 194.6 Q(writing rules control remaining parsing)-.25 E/F3 7
-/Times-Roman@0 SF(2)266.17 190.6 Q F1(.)269.67 194.6 Q .644(Although old style\
- addresses are still accepted in most cases, the preferred address format is)
+(uote phrases; backslashes quote characters.)-2.5 F 2.246
+(Backslashes are more)7.246 F(po)133.66 140.4 Q .654(werful in that the)
+-.25 F 3.154(yw)-.15 G .655(ill cause otherwise equi)-3.154 F -.25(va)
+-.25 G .655(lent phrases to compare dif).25 F .655(ferently \212 for)
+-.25 F -.15(ex)133.66 152.4 S(ample,).15 E/F2 10/Times-Italic@0 SF(user)
+3.873 E F1(and)3.873 E F2("user")3.872 E F1 1.372(are equi)3.872 F -.25
+(va)-.25 G 1.372(lent, b).25 F(ut)-.2 E F2(\\user)3.872 E F1 1.372
+(is dif)3.872 F 1.372(ferent from either of them.)-.25 F(This)6.372 E
+(might be used to a)133.66 164.4 Q -.2(vo)-.2 G
+(id normal aliasing or duplicate suppression algorithms.).2 E -.15(Pa)
+127 180.6 S 1.12(rentheses, angle brack).15 F 1.12
+(ets, and double quotes must be properly balanced and nested.)-.1 F(The)
+6.12 E(re)102 194.6 Q(writing rules control remaining parsing)-.25 E/F3
+7/Times-Roman@0 SF(2)-4 I F1(.)4 I .644(Although old style addresses are still accepted in most cases, the preferred address format is)
127 210.8 R .299(based on ARP)102 222.8 R(ANET)-.92 E .299
(-style domain-based addresses [Su82a].)-.92 F .299
(These addresses are based on a hierar)5.299 F(-)-.2 E .13
(chical, logical decomposition of the address space.)102 234.8 R .13
-(The addresses are hierarchical in a sense similar)5.13 F 1.133(to the U.S. po\
-stal addresses: the messages may \214rst be routed to the correct state, with \
-no initial)102 246.8 R .72
-(consideration of the city or other addressing details.)102 258.8 R .72
-(The addresses are logical in that each step in)5.72 F(the hierarch)102 270.8 Q
-2.5(yc)-.05 G
-(orresponds to a set of \231naming authorities\232 rather than a ph)161.37
-270.8 Q(ysical netw)-.05 E(ork.)-.1 E -.15(Fo)127 287 S 2.5(re).15 G
-(xample, the address:)147.53 287 Q(eric@HostA.BigSite.ARP)142 303.2 Q(A)-.92 E
--.1(wo)102 319.4 S .851
-(uld \214rst look up the domain BigSite in the namespace administrated by ARP)
+(The addresses are hierarchical in a sense similar)5.13 F 1.133(to the U.S. postal addresses: the messages may \214rst be routed to the correct state, with no initial)
+102 246.8 R .72(consideration of the city or other addressing details.)
+102 258.8 R .72(The addresses are logical in that each step in)5.72 F
+(the hierarch)102 270.8 Q 2.5(yc)-.05 G
+(orresponds to a set of \231naming authorities\232 rather than a ph)-2.5
+E(ysical netw)-.05 E(ork.)-.1 E -.15(Fo)127 287 S 2.5(re).15 G
+(xample, the address:)-2.65 E(eric@HostA.BigSite.ARP)142 303.2 Q(A)-.92
+E -.1(wo)102 319.4 S .851(uld \214rst look up the domain BigSite in the namespace administrated by ARP)
.1 F 3.351(A. A)-.92 F .851(query could)3.351 F 1.476
-(then be sent to BigSite for interpretation of HostA.)102 331.4 R(Ev)6.475 E
-1.475(entually the mail w)-.15 F 1.475(ould arri)-.1 F 1.775 -.15(ve a)-.25 H
-3.975(tH).15 G(ostA,)482.61 331.4 Q(which w)102 343.4 Q
-(ould then do \214nal deli)-.1 E -.15(ve)-.25 G(ry to user \231eric.).15 E<9a>
--.7 E F0 2.5(3.2. Mail)87 367.4 R(to Files and Pr)2.5 E(ograms)-.18 E F1 .609
-(Files and programs are le)127 383.6 R .609(gitimate message recipients.)-.15 F
-.609(Files pro)5.609 F .609(vide archi)-.15 F -.25(va)-.25 G 3.109(ls).25 G .61
-(torage of mes-)445.02 383.6 R .124
-(sages, useful for project administration and history)102 395.6 R 5.124(.P)-.65
-G .124(rograms are useful as recipients in a v)318.308 395.6 R .124(ariety of)
--.25 F .69(situations, for e)102 407.6 R .691(xample, to maintain a public rep\
-ository of systems messages \(such as the Berk)-.15 F(ele)-.1 E(y)-.15 E F2
-(msgs)102 419.6 Q F1(program\).)2.5 E(An)127 435.8 Q 3.188(ya)-.15 G .688(ddre\
-ss passing through the initial parsing algorithm as a local address \(i.e, not\
- appear)151.698 435.8 R(-)-.2 E .276(ing to be a v)102 447.8 R .276
-(alid address for another mailer\) is scanned for tw)-.25 F 2.776(os)-.1 G .277
-(pecial cases.)362.128 447.8 R .277(If pre\214x)5.277 F .277(ed by a v)-.15 F
-(erti-)-.15 E .18(cal bar \(\231)102 459.8 R .833<7c9a>.833 G 2.68(\)t)-.833 G
-.179(he rest of the address is processed as a shell command.)156.456 459.8 R
-.179(If the user name be)5.179 F .179(gins with a)-.15 F(slash mark \(\231/)102
-471.8 Q(\232\) the name is used as a \214le name, instead of a login name.).833
-E F0 2.5(3.3. Aliasing,)87 495.8 R -.25(Fo)2.5 G(rwarding, Inclusion).25 E F2
-(Sendmail)127 512 Q F1 1.074(reroutes mail three w)3.574 F 3.574(ays. Aliasing)
--.1 F 1.075(applies system wide.)3.575 F -.15(Fo)6.075 G(rw).15 E 1.075
-(arding allo)-.1 F 1.075(ws each)-.25 F .233
+(then be sent to BigSite for interpretation of HostA.)102 331.4 R(Ev)
+6.475 E 1.475(entually the mail w)-.15 F 1.475(ould arri)-.1 F 1.775
+-.15(ve a)-.25 H 3.975(tH).15 G(ostA,)-3.975 E(which w)102 343.4 Q
+(ould then do \214nal deli)-.1 E -.15(ve)-.25 G(ry to user \231eric.).15
+E<9a>-.7 E F0 2.5(3.2. Mail)87 367.4 R(to Files and Pr)2.5 E(ograms)-.18
+E F1 .609(Files and programs are le)127 383.6 R .609
+(gitimate message recipients.)-.15 F .609(Files pro)5.609 F .609
+(vide archi)-.15 F -.25(va)-.25 G 3.109(ls).25 G .61(torage of mes-)
+-3.109 F .124(sages, useful for project administration and history)102
+395.6 R 5.124(.P)-.65 G .124(rograms are useful as recipients in a v)
+-5.124 F .124(ariety of)-.25 F .69(situations, for e)102 407.6 R .691(xample, to maintain a public repository of systems messages \(such as the Berk)
+-.15 F(ele)-.1 E(y)-.15 E F2(msgs)102 419.6 Q F1(program\).)2.5 E(An)127
+435.8 Q 3.188(ya)-.15 G .688(ddress passing through the initial parsing algorithm as a local address \(i.e, not appear)
+-3.188 F(-)-.2 E .276(ing to be a v)102 447.8 R .276
+(alid address for another mailer\) is scanned for tw)-.25 F 2.776(os)-.1
+G .277(pecial cases.)-2.776 F .277(If pre\214x)5.277 F .277(ed by a v)
+-.15 F(erti-)-.15 E .18(cal bar \(\231)102 459.8 R .833<7c9a>.833 G 2.68
+(\)t)-.833 G .179
+(he rest of the address is processed as a shell command.)-2.68 F .179
+(If the user name be)5.179 F .179(gins with a)-.15 F(slash mark \(\231/)
+102 471.8 Q
+(\232\) the name is used as a \214le name, instead of a login name.).833
+E F0 2.5(3.3. Aliasing,)87 495.8 R -.25(Fo)2.5 G(rwarding, Inclusion).25
+E F2(Sendmail)127 512 Q F1 1.074(reroutes mail three w)3.574 F 3.574
+(ays. Aliasing)-.1 F 1.075(applies system wide.)3.575 F -.15(Fo)6.075 G
+(rw).15 E 1.075(arding allo)-.1 F 1.075(ws each)-.25 F .233
(user to reroute incoming mail destined for that account.)102 524 R .233
-(Inclusion directs)5.233 F F2(sendmail)2.733 E F1 .233(to read a \214le for)
-2.733 F 2.5(al)102 536 S
-(ist of addresses, and is normally used in conjunction with aliasing.)111.72
-536 Q F0 2.5(3.3.1. Aliasing)102 560 R F1 .065
-(Aliasing maps local addresses to address lists using a system-wide \214le.)142
-576.2 R .065(This \214le is hashed)5.065 F 1.546(to speed access.)117 588.2 R
-1.545(Only addresses that parse as local are allo)6.546 F 1.545
-(wed as aliases; this guarantees a)-.25 F(unique k)117 600.2 Q .3 -.15(ey \()
--.1 H(since there are no nicknames for the local host\).).15 E F0 2.5(3.3.2. F)
-102 624.2 R(orwarding)-.25 E F1 .641
-(After aliasing, if an recipient address speci\214es a local user)142 640.4 R
-F2(sendmail)3.141 E F1 .641(searches for a \231.for)3.141 F(-)-.2 E -.1(wa)117
-652.4 S .413(rd\232 \214le in the recipient').1 F 2.913(sh)-.55 G .413
-(ome directory)235.335 652.4 R 5.413(.I)-.65 G 2.913(fi)302.161 652.4 S 2.913
-(te)311.184 652.4 S .413(xists, the message is)321.167 652.4 R F2(not)2.913 E
-F1 .412(sent to that user)2.913 F 2.912(,b)-.4 G(ut)496.22 652.4 Q .745
+(Inclusion directs)5.233 F F2(sendmail)2.733 E F1 .233
+(to read a \214le for)2.733 F 2.5(al)102 536 S
+(ist of addresses, and is normally used in conjunction with aliasing.)
+-2.5 E F0 2.5(3.3.1. Aliasing)102 560 R F1 .065(Aliasing maps local addresses to address lists using a system-wide \214le.)
+142 576.2 R .065(This \214le is hashed)5.065 F 1.546(to speed access.)
+117 588.2 R 1.545(Only addresses that parse as local are allo)6.546 F
+1.545(wed as aliases; this guarantees a)-.25 F(unique k)117 600.2 Q .3
+-.15(ey \()-.1 H(since there are no nicknames for the local host\).).15
+E F0 2.5(3.3.2. F)102 624.2 R(orwarding)-.25 E F1 .641
+(After aliasing, if an recipient address speci\214es a local user)142
+640.4 R F2(sendmail)3.141 E F1 .641(searches for a \231.for)3.141 F(-)
+-.2 E -.1(wa)117 652.4 S .413(rd\232 \214le in the recipient').1 F 2.913
+(sh)-.55 G .413(ome directory)-2.913 F 5.413(.I)-.65 G 2.913(fi)-5.413 G
+2.913(te)-2.913 G .413(xists, the message is)-3.063 F F2(not)2.913 E F1
+.412(sent to that user)2.913 F 2.912(,b)-.4 G(ut)-3.112 E .745
(rather to the list of addresses in that \214le.)117 664.4 R .746
(Often this list will contain only one address, and the)5.746 F
-(feature will be used for netw)117 676.4 Q(ork mail forw)-.1 E(arding.)-.1 E
-.32 LW 76 686 72 686 DL 80 686 76 686 DL 84 686 80 686 DL 88 686 84 686 DL 92
-686 88 686 DL 96 686 92 686 DL 100 686 96 686 DL 104 686 100 686 DL 108 686 104
-686 DL 112 686 108 686 DL 116 686 112 686 DL 120 686 116 686 DL 124 686 120 686
-DL 128 686 124 686 DL 132 686 128 686 DL 136 686 132 686 DL 140 686 136 686 DL
-144 686 140 686 DL 148 686 144 686 DL 152 686 148 686 DL 156 686 152 686 DL 160
-686 156 686 DL 164 686 160 686 DL 168 686 164 686 DL 172 686 168 686 DL 176 686
-172 686 DL 180 686 176 686 DL 184 686 180 686 DL 188 686 184 686 DL 192 686 188
-686 DL 196 686 192 686 DL 200 686 196 686 DL 204 686 200 686 DL 208 686 204 686
-DL 212 686 208 686 DL 216 686 212 686 DL/F4 5/Times-Roman@0 SF(2)93.6 696.4 Q
-/F5 8/Times-Roman@0 SF(Disclaimer: Some special processing is done after re)3.2
-I(writing local names; see belo)-.2 E -.52(w.)-.2 G F0 -1(Ve)72 756 S
-(rsion 8.2)1 E(USENIX \255 J)249.805 756 Q(an 83)-.15 E(Last Mod 11/27/93)
-424.55 756 Q EP
+(feature will be used for netw)117 676.4 Q(ork mail forw)-.1 E(arding.)
+-.1 E .32 LW 76 686 72 686 DL 80 686 76 686 DL 84 686 80 686 DL 88 686
+84 686 DL 92 686 88 686 DL 96 686 92 686 DL 100 686 96 686 DL 104 686
+100 686 DL 108 686 104 686 DL 112 686 108 686 DL 116 686 112 686 DL 120
+686 116 686 DL 124 686 120 686 DL 128 686 124 686 DL 132 686 128 686 DL
+136 686 132 686 DL 140 686 136 686 DL 144 686 140 686 DL 148 686 144 686
+DL 152 686 148 686 DL 156 686 152 686 DL 160 686 156 686 DL 164 686 160
+686 DL 168 686 164 686 DL 172 686 168 686 DL 176 686 172 686 DL 180 686
+176 686 DL 184 686 180 686 DL 188 686 184 686 DL 192 686 188 686 DL 196
+686 192 686 DL 200 686 196 686 DL 204 686 200 686 DL 208 686 204 686 DL
+212 686 208 686 DL 216 686 212 686 DL/F4 5/Times-Roman@0 SF(2)93.6 696.4
+Q/F5 8/Times-Roman@0 SF
+(Disclaimer: Some special processing is done after re)3.2 I
+(writing local names; see belo)-.2 E -.52(w.)-.2 G F0 -1(Ve)72 756 S
+(rsion 8.2)1 E(USENIX \255 J)130.475 E(an 83)-.15 E(Last Mod 11/27/1993)
+88.355 E EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)-.18 E(6)
-499 60 Q/F1 10/Times-Roman@0 SF -.15(Fo)142 96 S(rw).15 E 1.152
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(6)259.93 E/F1 10/Times-Roman@0 SF -.15(Fo)142 96 S(rw).15 E 1.152
(arding also permits a user to specify a pri)-.1 F -.25(va)-.25 G 1.151
-(te incoming mailer).25 F 6.151(.F)-.55 G 1.151(or e)437.348 96 R 1.151
-(xample, for)-.15 F(-)-.2 E -.1(wa)117 108 S(rding to:).1 E -2.5 .833("| /)157
-124.2 T(usr/local/ne)-.833 E(wmail myname")-.25 E(will use a dif)117 140.4 Q
-(ferent incoming mailer)-.25 E(.)-.55 E F0 2.5(3.3.3. Inclusion)102 164.4 R F1
-(Inclusion is speci\214ed in RFC 733 [Crock)142 180.6 Q(er77] syntax:)-.1 E
-(:Include: pathname)157 196.8 Q .391
+(te incoming mailer).25 F 6.151(.F)-.55 G 1.151(or e)-6.301 F 1.151
+(xample, for)-.15 F(-)-.2 E -.1(wa)117 108 S(rding to:).1 E -2.5 .833
+("| /)157 124.2 T(usr/local/ne)-.833 E(wmail myname")-.25 E
+(will use a dif)117 140.4 Q(ferent incoming mailer)-.25 E(.)-.55 E F0
+2.5(3.3.3. Inclusion)102 164.4 R F1
+(Inclusion is speci\214ed in RFC 733 [Crock)142 180.6 Q(er77] syntax:)
+-.1 E(:Include: pathname)157 196.8 Q .391
(An address of this form reads the \214le speci\214ed by)117 213 R/F2 10
/Times-Italic@0 SF(pathname)2.891 E F1 .391
(and sends to all users listed in that)2.891 F(\214le.)117 225 Q .645
(The intent is)142 241.2 R F2(not)3.145 E F1 .644
(to support direct use of this feature, b)3.145 F .644
-(ut rather to use this as a subset of)-.2 F 2.5(aliasing. F)117 253.2 R(or e)
--.15 E(xample, an alias of the form:)-.15 E
-(project: :include:/usr/project/userlist)157 269.4 Q 1.93(is a method of letti\
-ng a project maintain a mailing list without interaction with the system)117
-285.6 R(administration, e)117 297.6 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)203.54
-297.6 S(he alias \214le is protected.)212.15 297.6 Q 2.025
-(It is not necessary to reb)142 313.8 R 2.025(uild the inde)-.2 F 4.524(xo)-.15
-G 4.524(nt)317.828 313.8 S 2.024(he alias database when a :include: list is)
-330.132 313.8 R(changed.)117 325.8 Q F0 2.5(3.4. Message)87 349.8 R(Collection)
-2.5 E F1 .857(Once all recipient addresses are parsed and v)127 366 R .857
-(eri\214ed, the message is collected.)-.15 F .857(The message)5.857 F .574
-(comes in tw)102 378 R 3.074(op)-.1 G .574
-(arts: a message header and a message body)164.452 378 R 3.074(,s)-.65 G .574
-(eparated by a blank line.)349.734 378 R .573(The body is)5.574 F
+(ut rather to use this as a subset of)-.2 F 2.5(aliasing. F)117 253.2 R
+(or e)-.15 E(xample, an alias of the form:)-.15 E
+(project: :include:/usr/project/userlist)157 269.4 Q 1.93(is a method of letting a project maintain a mailing list without interaction with the system)
+117 285.6 R(administration, e)117 297.6 Q -.15(ve)-.25 G 2.5(ni).15 G
+2.5(ft)-2.5 G(he alias \214le is protected.)-2.5 E 2.025
+(It is not necessary to reb)142 313.8 R 2.025(uild the inde)-.2 F 4.524
+(xo)-.15 G 4.524(nt)-4.524 G 2.024
+(he alias database when a :include: list is)-4.524 F(changed.)117 325.8
+Q F0 2.5(3.4. Message)87 349.8 R(Collection)2.5 E F1 .857
+(Once all recipient addresses are parsed and v)127 366 R .857
+(eri\214ed, the message is collected.)-.15 F .857(The message)5.857 F
+.574(comes in tw)102 378 R 3.074(op)-.1 G .574
+(arts: a message header and a message body)-3.074 F 3.074(,s)-.65 G .574
+(eparated by a blank line.)-3.074 F .573(The body is)5.574 F
(an uninterpreted sequence of te)102 390 Q(xt lines.)-.15 E
(The header is formated as a series of lines of the form)127 406.2 Q
-(\214eld-name: \214eld-v)178 422.4 Q(alue)-.25 E(Field-v)102 438.6 Q 1.366
-(alue can be split across lines by starting the follo)-.25 F 1.366
-(wing lines with a space or a tab)-.25 F 6.366(.S)-.4 G(ome)486.78 438.6 Q .211
-(header \214elds ha)102 450.6 R .511 -.15(ve s)-.2 H .211
+(\214eld-name: \214eld-v)178 422.4 Q(alue)-.25 E(Field-v)102 438.6 Q
+1.366(alue can be split across lines by starting the follo)-.25 F 1.366
+(wing lines with a space or a tab)-.25 F 6.366(.S)-.4 G(ome)-6.366 E
+.211(header \214elds ha)102 450.6 R .511 -.15(ve s)-.2 H .211
(pecial internal meaning, and ha).15 F .511 -.15(ve a)-.2 H .211
(ppropriate special processing.).15 F .21(Other headers)5.21 F
(are simply passed through.)102 462.6 Q
(Some header \214elds may be added automatically)5 E 2.5(,s)-.65 G
-(uch as time stamps.)413.53 462.6 Q F0 2.5(4. THE)72 486.6 R(UUCP PR)2.5 E
-(OBLEM)-.3 E F1 .43(Of particular interest is the UUCP netw)112 502.8 R 2.93
-(ork. The)-.1 F -.15(ex)2.93 G .43(plicit routing used in the UUCP en).15 F
-(vironment)-.4 E .909(causes a number of serious problems.)87 514.8 R .909
-(First, gi)5.909 F .908(ving out an address is impossible without kno)-.25 F
-.908(wing the)-.25 F .453(address of your potential correspondent.)87 526.8 R
-.454(This is typically handled by specifying the address relati)5.453 F .754
+(uch as time stamps.)-2.5 E F0 2.5(4. THE)72 486.6 R(UUCP PR)2.5 E
+(OBLEM)-.3 E F1 .43(Of particular interest is the UUCP netw)112 502.8 R
+2.93(ork. The)-.1 F -.15(ex)2.93 G .43
+(plicit routing used in the UUCP en).15 F(vironment)-.4 E .909
+(causes a number of serious problems.)87 514.8 R .909(First, gi)5.909 F
+.908(ving out an address is impossible without kno)-.25 F .908(wing the)
+-.25 F .453(address of your potential correspondent.)87 526.8 R .454
+(This is typically handled by specifying the address relati)5.453 F .754
-.15(ve t)-.25 H(o).15 E 1.208(some \231well-kno)87 538.8 R 1.208
-(wn\232 host \(e.g., ucb)-.25 F -.25(va)-.15 G 3.708(xo).25 G 3.708(rd)253.47
-538.8 S(ecv)265.508 538.8 Q 3.708(ax\). Second,)-.25 F 1.207(it is often dif)
+(wn\232 host \(e.g., ucb)-.25 F -.25(va)-.15 G 3.708(xo).25 G 3.708(rd)
+-3.708 G(ecv)-3.708 E 3.708(ax\). Second,)-.25 F 1.207(it is often dif)
3.708 F 1.207(\214cult to compute the set of)-.25 F .157
(addresses to reply to without some kno)87 550.8 R .157
-(wledge of the topology of the netw)-.25 F 2.657(ork. Although)-.1 F .157
-(it may be easy)2.657 F .352(for a human being to do this under man)87 562.8 R
-2.851(yc)-.15 G .351(ircumstances, a program does not ha)259.713 562.8 R .651
--.15(ve e)-.2 H .351(qually sophisticated).15 F 1.153(heuristics b)87 574.8 R
-1.153(uilt in.)-.2 F 1.154(Third, certain addresses will become painfully and \
-unnecessarily long, as when a)6.153 F .406(message is routed through man)87
-586.8 R 2.906(yh)-.15 G .406(osts in the USENET)225.81 586.8 R 5.406(.A)-.74 G
-.406(nd \214nally)322.804 586.8 R 2.905(,c)-.65 G .405(ertain \231mix)370.465
-586.8 R .405(ed domain\232 addresses)-.15 F
-(are impossible to parse unambiguously \212 e.g.,)87 598.8 Q(decv)127 615 Q
-(ax!ucb)-.25 E -.25(va)-.15 G(x!lbl-h!user@LBL-CSAM).25 E .378(might ha)87
-631.2 R .678 -.15(ve m)-.2 H(an).15 E 2.878(yp)-.15 G .379
-(ossible resolutions, depending on whether the message w)164.574 631.2 R .379
-(as \214rst routed to decv)-.1 F .379(ax or)-.25 F(to LBL-CSAM.)87 643.2 Q 2.32
--.8(To s)112 659.4 T(olv).8 E 3.22(et)-.15 G .72
-(his problem, the UUCP syntax w)152.49 659.4 R .719(ould ha)-.1 F 1.019 -.15
-(ve t)-.2 H 3.219(ob).15 G 3.219(ec)346.956 659.4 S .719
-(hanged to use addresses rather than)359.055 659.4 R 3.718(routes. F)87 671.4 R
-1.218(or e)-.15 F 1.218(xample, the address \231decv)-.15 F(ax!ucb)-.25 E -.25
-(va)-.15 G 1.218(x!eric\232 might be e).25 F 1.218(xpressed as \231eric@ucb)
--.15 F -.25(va)-.15 G(x.UUCP\232).25 E .079(\(with the hop through decv)87
-683.4 R .079(ax implied\).)-.25 F .079(This address w)5.079 F .078
+(wledge of the topology of the netw)-.25 F 2.657(ork. Although)-.1 F
+.157(it may be easy)2.657 F .352(for a human being to do this under man)
+87 562.8 R 2.851(yc)-.15 G .351(ircumstances, a program does not ha)
+-2.851 F .651 -.15(ve e)-.2 H .351(qually sophisticated).15 F 1.153
+(heuristics b)87 574.8 R 1.153(uilt in.)-.2 F 1.154(Third, certain addresses will become painfully and unnecessarily long, as when a)
+6.153 F .406(message is routed through man)87 586.8 R 2.906(yh)-.15 G
+.406(osts in the USENET)-2.906 F 5.406(.A)-.74 G .406(nd \214nally)
+-5.406 F 2.905(,c)-.65 G .405(ertain \231mix)-2.905 F .405
+(ed domain\232 addresses)-.15 F
+(are impossible to parse unambiguously \212 e.g.,)87 598.8 Q(decv)127
+615 Q(ax!ucb)-.25 E -.25(va)-.15 G(x!lbl-h!user@LBL-CSAM).25 E .378
+(might ha)87 631.2 R .678 -.15(ve m)-.2 H(an).15 E 2.878(yp)-.15 G .379
+(ossible resolutions, depending on whether the message w)-2.878 F .379
+(as \214rst routed to decv)-.1 F .379(ax or)-.25 F(to LBL-CSAM.)87 643.2
+Q 2.32 -.8(To s)112 659.4 T(olv).8 E 3.22(et)-.15 G .72
+(his problem, the UUCP syntax w)-3.22 F .719(ould ha)-.1 F 1.019 -.15
+(ve t)-.2 H 3.219(ob).15 G 3.219(ec)-3.219 G .719
+(hanged to use addresses rather than)-3.219 F 3.718(routes. F)87 671.4 R
+1.218(or e)-.15 F 1.218(xample, the address \231decv)-.15 F(ax!ucb)-.25
+E -.25(va)-.15 G 1.218(x!eric\232 might be e).25 F 1.218
+(xpressed as \231eric@ucb)-.15 F -.25(va)-.15 G(x.UUCP\232).25 E .079
+(\(with the hop through decv)87 683.4 R .079(ax implied\).)-.25 F .079
+(This address w)5.079 F .078
(ould itself be a domain-based address; for e)-.1 F(xam-)-.15 E
-(ple, an address might be of the form:)87 695.4 Q(mark@d.cbosg.btl.UUCP)127
-711.6 Q F0 -1(Ve)72 756 S(rsion 8.2)1 E(USENIX \255 J)249.805 756 Q(an 83)-.15
-E(Last Mod 11/27/93)424.55 756 Q EP
+(ple, an address might be of the form:)87 695.4 Q(mark@d.cbosg.btl.UUCP)
+127 711.6 Q F0 -1(Ve)72 756 S(rsion 8.2)1 E(USENIX \255 J)130.475 E
+(an 83)-.15 E(Last Mod 11/27/1993)88.355 E EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)-.18 E(7)
-499 60 Q/F1 10/Times-Roman@0 SF .311(Hosts outside of Bell T)87 96 R .311
-(elephone Laboratories w)-.7 F .311(ould then only need to kno)-.1 F 2.811(wh)
--.25 G .811 -.25(ow t)402.982 96 T 2.811(og).25 G .312(et to a designated)
-433.354 96 R(BTL relay)87 108 Q 2.5(,a)-.65 G(nd the BTL topology w)137.17 108
-Q(ould only be maintained inside Bell.)-.1 E .543(There are three major proble\
-ms associated with turning UUCP addresses into something reason-)112 124.2 R
-.465(able: de\214ning the namespace, creating and propag)87 136.2 R .465
-(ating the necessary softw)-.05 F .466(are, and b)-.1 F .466(uilding and main-)
--.2 F(taining the database.)87 148.2 Q F0 2.5(4.1. De\214ning)87 172.2 R
-(the Namespace)2.5 E F1 1.015(Putting all UUCP hosts into a \215at namespace \
-\(e.g., \231...@host.UUCP\232\) is not practical for a)127 188.4 R .222
-(number of reasons.)102 200.4 R .222(First, with o)5.222 F -.15(ve)-.15 G 2.722
-(r1).15 G .222(600 sites already)253.292 200.4 R 2.722(,a)-.65 G .222
-(nd \(with the increasing a)329.958 200.4 R -.25(va)-.2 G .222
-(ilability of ine).25 F(x-)-.15 E(pensi)102 212.4 Q 1.973 -.15(ve m)-.25 H
-1.673(icrocomputers and autodialers\) se).15 F -.15(ve)-.25 G 1.672
-(ral thousand more coming within a fe).15 F 4.172(wy)-.25 G 1.672(ears, the)
-469.008 212.4 R .078
-(database update problem is simply intractable if the namespace is \215at.)102
-224.4 R .078(Second, there are almost cer)5.078 F(-)-.2 E 2.446
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(7)259.93 E/F1 10/Times-Roman@0 SF .311(Hosts outside of Bell T)87
+96 R .311(elephone Laboratories w)-.7 F .311(ould then only need to kno)
+-.1 F 2.811(wh)-.25 G .811 -.25(ow t)-2.811 H 2.811(og).25 G .312
+(et to a designated)-2.811 F(BTL relay)87 108 Q 2.5(,a)-.65 G
+(nd the BTL topology w)-2.5 E(ould only be maintained inside Bell.)-.1 E
+.543(There are three major problems associated with turning UUCP addresses into something reason-)
+112 124.2 R .465(able: de\214ning the namespace, creating and propag)87
+136.2 R .465(ating the necessary softw)-.05 F .466(are, and b)-.1 F .466
+(uilding and main-)-.2 F(taining the database.)87 148.2 Q F0 2.5
+(4.1. De\214ning)87 172.2 R(the Namespace)2.5 E F1 1.015(Putting all UUCP hosts into a \215at namespace \(e.g., \231...@host.UUCP\232\) is not practical for a)
+127 188.4 R .222(number of reasons.)102 200.4 R .222(First, with o)5.222
+F -.15(ve)-.15 G 2.722(r1).15 G .222(600 sites already)-2.722 F 2.722
+(,a)-.65 G .222(nd \(with the increasing a)-2.722 F -.25(va)-.2 G .222
+(ilability of ine).25 F(x-)-.15 E(pensi)102 212.4 Q 1.973 -.15(ve m)-.25
+H 1.673(icrocomputers and autodialers\) se).15 F -.15(ve)-.25 G 1.672
+(ral thousand more coming within a fe).15 F 4.172(wy)-.25 G 1.672
+(ears, the)-4.172 F .078(database update problem is simply intractable if the namespace is \215at.)
+102 224.4 R .078(Second, there are almost cer)5.078 F(-)-.2 E 2.446
(tainly name con\215icts today)102 236.4 R 7.446(.T)-.65 G 2.446
-(hird, as the number of sites gro)232.794 236.4 R 4.946(wt)-.25 G 2.446
-(he names become e)386.316 236.4 R -.15(ve)-.25 G 4.946(rl).15 G(ess)491.78
-236.4 Q(mnemonic.)102 248.4 Q .534(It seems ine)127 264.6 R .535
-(vitable that there be some sort of naming authority for the set of top le)-.25
-F -.15(ve)-.25 G 3.035(ln).15 G(ames)483.45 264.6 Q .157
-(in the UUCP domain, as unpleasant a possibility as that may seem.)102 276.6 R
-.157(It will simply not be possible to)5.157 F(ha)102 288.6 Q .536 -.15(ve o)
--.2 H .236(ne host resolving all names.).15 F .236(It may ho)5.236 F(we)-.25 E
--.15(ve)-.25 G 2.736(rb).15 G 2.736(ep)316.144 288.6 S .236
-(ossible to handle this in a f)328.32 288.6 R .237(ashion similar to)-.1 F
-1.582(that of assigning names of ne)102 300.6 R 1.582(wsgroups in USENET)-.25 F
-6.582(.H)-.74 G -.25(ow)334.758 300.6 S -2.15 -.25(ev e).25 H 2.382 -.4(r, i)
-.25 H 4.082(tw).4 G 1.582(ill be essential to encourage)386.582 300.6 R -2.15
--.25(ev e)102 312.6 T .52(ryone to become subdomains of an e).25 F .52
-(xisting domain whene)-.15 F -.15(ve)-.25 G 3.02(rp).15 G .52(ossible \212 e)
-374.85 312.6 R -.15(ve)-.25 G 3.02(nt).15 G .52(hough this will)442.95 312.6 R
-.077(certainly bruise some e)102 324.6 R 2.577(gos. F)-.15 F .077(or e)-.15 F
-.077(xample, if a ne)-.15 F 2.577(wh)-.25 G .076
-(ost named \231blid\232 were to be added to the UUCP)310.843 324.6 R(netw)102
-336.6 Q .65(ork, it w)-.1 F .651(ould probably actually be addressed as \231d.\
-bli.UUCP\232 \(i.e., as host \231d\232 in the pseudo-)-.1 F
-(domain \231bli\232 rather than as host \231blid\232 in the UUCP domain\).)102
-348.6 Q F0 2.5(4.2. Cr)87 372.6 R(eating and Pr)-.18 E(opagating the Softwar)
--.18 E(e)-.18 E F1 .078(The softw)127 388.8 R .078
-(are required to implement a consistent namespace is relati)-.1 F -.15(ve)-.25
-G .077(ly tri).15 F 2.577(vial. T)-.25 F .277 -.1(wo m)-.8 H(odules).1 E
-(are needed, one to handle incoming mail and one to handle outgoing mail.)102
-400.8 Q 1.136(The incoming module must be prepared to handle either old or ne)
-127 417 R 3.636(ws)-.25 G 1.136(tyle addresses.)416.448 417 R(Ne)6.136 E(w-)
--.25 E .025(style addresses can be passed through unchanged.)102 429 R .024
-(Old style addresses must be turned into ne)5.025 F 2.524(ws)-.25 G(tyle)489
-429 Q(addresses where possible.)102 441 Q 2.247
-(The outgoing module is slightly trickier)127 457.2 R 7.247(.I)-.55 G 4.747(tm)
-309.932 457.2 S 2.247(ust do a database lookup on the recipient)325.239 457.2 R
-.823(addresses \(passed on the command line\) to determine what hosts to send \
-the message to.)102 469.2 R .823(If those)5.823 F .023(hosts do not accept ne)
-102 481.2 R .024(w-style addresses, it must transform all addresses in the hea\
-der of the message)-.25 F(into old style using the database lookup.)102 493.2 Q
-1.197(Both of these modules are straightforw)127 509.4 R 1.197(ard e)-.1 F
-1.197(xcept for the issue of modifying the header)-.15 F 6.197(.I)-.55 G(t)
-501.22 509.4 Q .944
-(seems prudent to choose one format for the message headers.)102 521.4 R -.15
-(Fo)5.944 G 3.444(ran).15 G .944(umber of reasons, Berk)391.448 521.4 R(ele)-.1
-E(y)-.15 E .824(has elected to use the ARP)102 533.4 R .824
-(ANET protocols for message formats.)-.92 F(Ho)5.823 E(we)-.25 E -.15(ve)-.25 G
-1.623 -.4(r, t).15 H .823(his protocol is some-).4 F(what dif)102 545.4 Q
-(\214cult to parse.)-.25 E(Propag)127 561.6 Q 1.903(ation is some)-.05 F 1.903
-(what more dif)-.25 F 4.403(\214cult. There)-.25 F 1.903(are a lar)4.403 F
-1.903(ge number of hosts connected to)-.18 F .812(UUCP that will w)102 573.6 R
-.811(ant to run completely standard systems \(for v)-.1 F .811
+(hird, as the number of sites gro)-7.446 F 4.946(wt)-.25 G 2.446
+(he names become e)-4.946 F -.15(ve)-.25 G 4.946(rl).15 G(ess)-4.946 E
+(mnemonic.)102 248.4 Q .534(It seems ine)127 264.6 R .535(vitable that there be some sort of naming authority for the set of top le)
+-.25 F -.15(ve)-.25 G 3.035(ln).15 G(ames)-3.035 E .157
+(in the UUCP domain, as unpleasant a possibility as that may seem.)102
+276.6 R .157(It will simply not be possible to)5.157 F(ha)102 288.6 Q
+.536 -.15(ve o)-.2 H .236(ne host resolving all names.).15 F .236
+(It may ho)5.236 F(we)-.25 E -.15(ve)-.25 G 2.736(rb).15 G 2.736(ep)
+-2.736 G .236(ossible to handle this in a f)-2.736 F .237
+(ashion similar to)-.1 F 1.582(that of assigning names of ne)102 300.6 R
+1.582(wsgroups in USENET)-.25 F 6.582(.H)-.74 G -.25(ow)-6.582 G -2.15
+-.25(ev e).25 H 2.382 -.4(r, i).25 H 4.082(tw).4 G 1.582
+(ill be essential to encourage)-4.082 F -2.15 -.25(ev e)102 312.6 T .52
+(ryone to become subdomains of an e).25 F .52(xisting domain whene)-.15
+F -.15(ve)-.25 G 3.02(rp).15 G .52(ossible \212 e)-3.02 F -.15(ve)-.25 G
+3.02(nt).15 G .52(hough this will)-3.02 F .077(certainly bruise some e)
+102 324.6 R 2.577(gos. F)-.15 F .077(or e)-.15 F .077(xample, if a ne)
+-.15 F 2.577(wh)-.25 G .076
+(ost named \231blid\232 were to be added to the UUCP)-2.577 F(netw)102
+336.6 Q .65(ork, it w)-.1 F .651(ould probably actually be addressed as \231d.bli.UUCP\232 \(i.e., as host \231d\232 in the pseudo-)
+-.1 F(domain \231bli\232 rather than as host \231blid\232 in the UUCP domain\).)
+102 348.6 Q F0 2.5(4.2. Cr)87 372.6 R(eating and Pr)-.18 E
+(opagating the Softwar)-.18 E(e)-.18 E F1 .078(The softw)127 388.8 R
+.078(are required to implement a consistent namespace is relati)-.1 F
+-.15(ve)-.25 G .077(ly tri).15 F 2.577(vial. T)-.25 F .277 -.1(wo m)-.8
+H(odules).1 E(are needed, one to handle incoming mail and one to handle outgoing mail.)
+102 400.8 Q 1.136
+(The incoming module must be prepared to handle either old or ne)127 417
+R 3.636(ws)-.25 G 1.136(tyle addresses.)-3.636 F(Ne)6.136 E(w-)-.25 E
+.025(style addresses can be passed through unchanged.)102 429 R .024
+(Old style addresses must be turned into ne)5.025 F 2.524(ws)-.25 G
+(tyle)-2.524 E(addresses where possible.)102 441 Q 2.247
+(The outgoing module is slightly trickier)127 457.2 R 7.247(.I)-.55 G
+4.747(tm)-7.247 G 2.247(ust do a database lookup on the recipient)-4.747
+F .823(addresses \(passed on the command line\) to determine what hosts to send the message to.)
+102 469.2 R .823(If those)5.823 F .023(hosts do not accept ne)102 481.2
+R .024(w-style addresses, it must transform all addresses in the header of the message)
+-.25 F(into old style using the database lookup.)102 493.2 Q 1.197
+(Both of these modules are straightforw)127 509.4 R 1.197(ard e)-.1 F
+1.197(xcept for the issue of modifying the header)-.15 F 6.197(.I)-.55 G
+(t)-6.197 E .944
+(seems prudent to choose one format for the message headers.)102 521.4 R
+-.15(Fo)5.944 G 3.444(ran).15 G .944(umber of reasons, Berk)-3.444 F
+(ele)-.1 E(y)-.15 E .824(has elected to use the ARP)102 533.4 R .824
+(ANET protocols for message formats.)-.92 F(Ho)5.823 E(we)-.25 E -.15
+(ve)-.25 G 1.623 -.4(r, t).15 H .823(his protocol is some-).4 F
+(what dif)102 545.4 Q(\214cult to parse.)-.25 E(Propag)127 561.6 Q 1.903
+(ation is some)-.05 F 1.903(what more dif)-.25 F 4.403(\214cult. There)
+-.25 F 1.903(are a lar)4.403 F 1.903(ge number of hosts connected to)
+-.18 F .812(UUCP that will w)102 573.6 R .811
+(ant to run completely standard systems \(for v)-.1 F .811
(ery good reasons\).)-.15 F .811(The strate)5.811 F .811(gy is)-.15 F
(not to con)102 585.6 Q -.15(ve)-.4 G(rt the entire netw).15 E
-(ork \212 only enough of it it alle)-.1 E(viate the problem.)-.25 E F0 2.5
-(4.3. Building)87 609.6 R(and Maintaining the Database)2.5 E F1 .127
-(This is by f)127 625.8 R .127(ar the most dif)-.1 F .128(\214cult problem.)
--.25 F 2.628(Ap)5.128 G .128(rototype for this database already e)309.736 625.8
-R .128(xists, b)-.15 F .128(ut it is)-.2 F
-(maintained by hand and does not pretend to be complete.)102 637.8 Q .701(This\
- problem will be reduced considerably if people choose to group their hosts in\
-to subdo-)127 654 R 3.219(mains. This)102 666 R -.1(wo)3.219 G .719
-(uld require a global update only when a ne).1 F 3.22(wt)-.25 G .72(op le)
-356.47 666 R -.15(ve)-.25 G 3.22(ld).15 G .72(omain joined the netw)396.95 666
-R(ork.)-.1 E 2.805(Am)102 678 S .305
-(essage to a host in a subdomain could simply be routed to a kno)119.805 678 R
-.304(wn domain g)-.25 F(ate)-.05 E -.1(wa)-.25 G 2.804(yf).1 G .304(or further)
-465.656 678 R 3.073(processing. F)102 690 R .573(or e)-.15 F .573(xample, the \
-address \231eric@a.bli.UUCP\232 might be routed to the \231bli\232 g)-.15 F
-(ate)-.05 E -.1(wa)-.25 G 3.074(yf).1 G(or)495.67 690 Q(redistrib)102 702 Q
-1.376(ution; ne)-.2 F 3.876(wh)-.25 G 1.375
-(osts could be added within BLI without notifying the rest of the w)187.632 702
-R 3.875(orld. Of)-.1 F(course, other hosts)102 714 Q/F2 10/Times-Italic@0 SF
-(could)2.5 E F1(be noti\214ed as an ef)2.5 E(\214cienc)-.25 E 2.5(ym)-.15 G
-(easure.)321.01 714 Q F0 -1(Ve)72 756 S(rsion 8.2)1 E(USENIX \255 J)249.805 756
-Q(an 83)-.15 E(Last Mod 11/27/93)424.55 756 Q EP
+(ork \212 only enough of it it alle)-.1 E(viate the problem.)-.25 E F0
+2.5(4.3. Building)87 609.6 R(and Maintaining the Database)2.5 E F1 .127
+(This is by f)127 625.8 R .127(ar the most dif)-.1 F .128
+(\214cult problem.)-.25 F 2.628(Ap)5.128 G .128
+(rototype for this database already e)-2.628 F .128(xists, b)-.15 F .128
+(ut it is)-.2 F(maintained by hand and does not pretend to be complete.)
+102 637.8 Q .701(This problem will be reduced considerably if people choose to group their hosts into subdo-)
+127 654 R 3.219(mains. This)102 666 R -.1(wo)3.219 G .719
+(uld require a global update only when a ne).1 F 3.22(wt)-.25 G .72
+(op le)-3.22 F -.15(ve)-.25 G 3.22(ld).15 G .72(omain joined the netw)
+-3.22 F(ork.)-.1 E 2.805(Am)102 678 S .305
+(essage to a host in a subdomain could simply be routed to a kno)-2.805
+F .304(wn domain g)-.25 F(ate)-.05 E -.1(wa)-.25 G 2.804(yf).1 G .304
+(or further)-2.804 F 3.073(processing. F)102 690 R .573(or e)-.15 F .573
+(xample, the address \231eric@a.bli.UUCP\232 might be routed to the \231bli\232 g)
+-.15 F(ate)-.05 E -.1(wa)-.25 G 3.074(yf).1 G(or)-3.074 E(redistrib)102
+702 Q 1.376(ution; ne)-.2 F 3.876(wh)-.25 G 1.375
+(osts could be added within BLI without notifying the rest of the w)
+-3.876 F 3.875(orld. Of)-.1 F(course, other hosts)102 714 Q/F2 10
+/Times-Italic@0 SF(could)2.5 E F1(be noti\214ed as an ef)2.5 E
+(\214cienc)-.25 E 2.5(ym)-.15 G(easure.)-2.5 E F0 -1(Ve)72 756 S
+(rsion 8.2)1 E(USENIX \255 J)130.475 E(an 83)-.15 E(Last Mod 11/27/1993)
+88.355 E EP
%%Page: 8 8
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)-.18 E(8)
-499 60 Q/F1 10/Times-Roman@0 SF .966(There may be more than one domain g)127 96
-R(ate)-.05 E -.1(wa)-.25 G 4.767 -.65(y. A).1 H .967
-(domain such as BTL, for instance, might)4.117 F(ha)102 108 Q .653 -.15(ve a d)
--.2 H .353(ozen g).15 F(ate)-.05 E -.1(wa)-.25 G .353(ys to the outside w).1 F
-.352(orld; a non-BTL site could choose the closest g)-.1 F(ate)-.05 E -.1(wa)
--.25 G 4.152 -.65(y. T).1 H(he).65 E .308(only restriction w)102 120 R .308
-(ould be that all g)-.1 F(ate)-.05 E -.1(wa)-.25 G .308
-(ys maintain a consistent vie).1 F 2.808(wo)-.25 G 2.808(ft)390.998 120 S .308
-(he domain the)399.916 120 R 2.808(yr)-.15 G(epresent.)468.18 120 Q F0 2.5
-(4.4. Logical)87 144 R(Structur)2.5 E(e)-.18 E F1(Logically)127 160.2 Q 3.803
-(,d)-.65 G 1.303(omains are or)175.983 160.2 R -.05(ga)-.18 G 1.303
-(nized into a tree.).05 F 1.303(There need not be a host actually associated)
-6.303 F .462(with each le)102 172.2 R -.15(ve)-.25 G 2.962(li).15 G 2.962(nt)
-168.806 172.2 S .462(he tree \212 for e)179.548 172.2 R .462
-(xample, there will be no host associated with the name \231UUCP)-.15 F -.7
-<2e9a>-1.11 G(Similarly)102 184.2 Q 3.115(,a)-.65 G 3.115(no)148.635 184.2 S
--2.19 -.18(rg a)161.75 184.2 T .614
-(nization might group names together for administrati).18 F .914 -.15(ve r)-.25
-H .614(easons; for e).15 F .614(xample, the)-.15 F(name)102 196.2 Q
-(CAD.research.BigCorp.UUCP)142 212.4 Q(might not actually ha)102 228.6 Q .3
--.15(ve a h)-.2 H(ost representing \231research.).15 E<9a>-.7 E(Ho)127 244.8 Q
-(we)-.25 E -.15(ve)-.25 G 1.531 -.4(r, i).15 H 3.231(tm).4 G .731
-(ay frequently be con)184.902 244.8 R -.15(ve)-.4 G .731(nient to ha).15 F
-1.031 -.15(ve a h)-.2 H .732(ost or hosts that \231represent\232 a domain.).15
-F -.15(Fo)102 256.8 S 3.466(re).15 G .966(xample, if a single host e)123.496
-256.8 R .966(xists that represents Berk)-.15 F(ele)-.1 E 2.266 -.65(y, t)-.15 H
-.966(hen mail from outside Berk).65 F(ele)-.1 E 3.466(yc)-.15 G(an)494.56 256.8
-Q(forw)102 268.8 Q .796
-(ard mail to that host for further resolution without kno)-.1 F .796(wing Berk)
--.25 F(ele)-.1 E(y')-.15 E 3.296(s\()-.55 G .797(rather v)417.066 268.8 R .797
-(olatile\) topol-)-.2 F(ogy)102 280.8 Q 5(.T)-.65 G(his is not unlik)129.96
-280.8 Q 2.5(et)-.1 G(he operation of the telephone netw)198.76 280.8 Q(ork.)-.1
-E .053(This may also be useful inside certain lar)127 297 R .053(ge domains.)
--.18 F -.15(Fo)5.053 G 2.553(re).15 G .053(xample, at Berk)365.352 297 R(ele)
--.1 E 2.553(yi)-.15 G 2.553(tm)450.801 297 S .053(ay be pre-)463.914 297 R .722
-(sumed that most hosts kno)102 309 R 3.222(wa)-.25 G .722
-(bout other hosts inside the Berk)225.64 309 R(ele)-.1 E 3.223(yd)-.15 G 3.223
-(omain. But)380.825 309 R .723(if the)3.223 F 3.223(yp)-.15 G .723(rocess an)
-466.347 309 R .405(address that is unkno)102 321 R .405(wn, the)-.25 F 2.905
-(yc)-.15 G .405(an pass it \231upstairs\232 for further e)229.165 321 R 2.905
-(xamination. Thus)-.15 F .405(as ne)2.905 F 2.905(wh)-.25 G .405(osts are)
-473.325 321 R .488(added only one host \(the domain master\))102 333 R/F2 10
-/Times-Italic@0 SF(must)2.989 E F1 .489
-(be updated immediately; other hosts can be updated)2.989 F(as con)102 345 Q
--.15(ve)-.4 G(nient.).15 E .583(Ideally this name resolution process w)127
-361.2 R .583(ould be performed by a name serv)-.1 F .582
-(er \(e.g., [Su82b]\) to)-.15 F -.2(avo)102 373.2 S .507(id unnecessary cop).2
-F .507(ying of the message.)-.1 F(Ho)5.507 E(we)-.25 E -.15(ve)-.25 G 1.307 -.4
-(r, i).15 H 3.007(nab).4 G .507(atch netw)346.623 373.2 R .508
-(ork such as UUCP this could)-.1 F(result in unnecessary delays.)102 385.2 Q F0
-2.5(5. COMP)72 409.2 R(ARISON WITH DELIVERMAIL)-.74 E F2(Sendmail)112 425.4 Q
-F1(is an outgro)2.5 E(wth of)-.25 E F2(delivermail)2.5 E F1 5(.T)C
-(he primary dif)286.18 425.4 Q(ferences are:)-.25 E 12.5(\(1\) Con\214guration)
-92 441.6 R .573(information is not compiled in.)3.073 F .572
-(This change simpli\214es man)5.572 F 3.072(yo)-.15 G 3.072(ft)433.684 441.6 S
-.572(he problems of)442.866 441.6 R(mo)118.66 453.6 Q(ving to other machines.)
--.15 E(It also allo)5 E(ws easy deb)-.25 E(ugging of ne)-.2 E 2.5(wm)-.25 G
-(ailers.)388.06 453.6 Q 12.5(\(2\) Address)92 469.8 R .491
-(parsing is more \215e)2.991 F 2.991(xible. F)-.15 F .491(or e)-.15 F(xample,)
--.15 E F2(delivermail)2.992 E F1 .492(only supported one g)2.992 F(ate)-.05 E
--.1(wa)-.25 G 2.992(yt).1 G 2.992(oa)481.718 469.8 S -.15(ny)494.15 469.8 S
-(netw)118.66 481.8 Q(ork, whereas)-.1 E F2(sendmail)2.5 E F1(can be sensiti)2.5
-E .3 -.15(ve t)-.25 H 2.5(oh).15 G(ost names and reroute to dif)310.9 481.8 Q
-(ferent g)-.25 E(ate)-.05 E -.1(wa)-.25 G(ys.).1 E 12.5(\(3\) F)92 498 R(orw)
--.15 E 2.878(arding and :include: features eliminate the requirement that the \
-system alias \214le be)-.1 F 1.073(writable by an)118.66 510 R 3.573(yu)-.15 G
-1.073
-(ser \(or that an update program be written, or that the system administration)
-191.439 510 R(mak)118.66 522 Q 2.5(ea)-.1 G(ll changes\).)147.16 522 Q(\(4\))92
-538.2 Q F2(Sendmail)118.66 538.2 Q F1 .443
-(supports message batching across netw)2.944 F .443
-(orks when a message is being sent to multiple)-.1 F(recipients.)118.66 550.2 Q
-12.5(\(5\) A)92 566.4 R 1.945(mail queue is pro)4.445 F 1.946(vided in)-.15 F
-F2(sendmail.)4.446 E F1 1.946(Mail that cannot be deli)6.946 F -.15(ve)-.25 G
-1.946(red immediately b).15 F 1.946(ut can)-.2 F .439(potentially be deli)
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(8)259.93 E/F1 10/Times-Roman@0 SF .966
+(There may be more than one domain g)127 96 R(ate)-.05 E -.1(wa)-.25 G
+4.767 -.65(y. A).1 H .967(domain such as BTL, for instance, might)4.117
+F(ha)102 108 Q .653 -.15(ve a d)-.2 H .353(ozen g).15 F(ate)-.05 E -.1
+(wa)-.25 G .353(ys to the outside w).1 F .352
+(orld; a non-BTL site could choose the closest g)-.1 F(ate)-.05 E -.1
+(wa)-.25 G 4.152 -.65(y. T).1 H(he).65 E .308(only restriction w)102 120
+R .308(ould be that all g)-.1 F(ate)-.05 E -.1(wa)-.25 G .308
+(ys maintain a consistent vie).1 F 2.808(wo)-.25 G 2.808(ft)-2.808 G
+.308(he domain the)-2.808 F 2.808(yr)-.15 G(epresent.)-2.808 E F0 2.5
+(4.4. Logical)87 144 R(Structur)2.5 E(e)-.18 E F1(Logically)127 160.2 Q
+3.803(,d)-.65 G 1.303(omains are or)-3.803 F -.05(ga)-.18 G 1.303
+(nized into a tree.).05 F 1.303
+(There need not be a host actually associated)6.303 F .462(with each le)
+102 172.2 R -.15(ve)-.25 G 2.962(li).15 G 2.962(nt)-2.962 G .462
+(he tree \212 for e)-2.962 F .462
+(xample, there will be no host associated with the name \231UUCP)-.15 F
+-.7<2e9a>-1.11 G(Similarly)102 184.2 Q 3.115(,a)-.65 G 3.115(no)-3.115 G
+-2.19 -.18(rg a)-3.115 H .614
+(nization might group names together for administrati).18 F .914 -.15
+(ve r)-.25 H .614(easons; for e).15 F .614(xample, the)-.15 F(name)102
+196.2 Q(CAD.research.BigCorp.UUCP)142 212.4 Q(might not actually ha)102
+228.6 Q .3 -.15(ve a h)-.2 H(ost representing \231research.).15 E<9a>-.7
+E(Ho)127 244.8 Q(we)-.25 E -.15(ve)-.25 G 1.531 -.4(r, i).15 H 3.231(tm)
+.4 G .731(ay frequently be con)-3.231 F -.15(ve)-.4 G .731(nient to ha)
+.15 F 1.031 -.15(ve a h)-.2 H .732
+(ost or hosts that \231represent\232 a domain.).15 F -.15(Fo)102 256.8 S
+3.466(re).15 G .966(xample, if a single host e)-3.616 F .966
+(xists that represents Berk)-.15 F(ele)-.1 E 2.266 -.65(y, t)-.15 H .966
+(hen mail from outside Berk).65 F(ele)-.1 E 3.466(yc)-.15 G(an)-3.466 E
+(forw)102 268.8 Q .796
+(ard mail to that host for further resolution without kno)-.1 F .796
+(wing Berk)-.25 F(ele)-.1 E(y')-.15 E 3.296(s\()-.55 G .797(rather v)
+-3.296 F .797(olatile\) topol-)-.2 F(ogy)102 280.8 Q 5(.T)-.65 G
+(his is not unlik)-5 E 2.5(et)-.1 G(he operation of the telephone netw)
+-2.5 E(ork.)-.1 E .053(This may also be useful inside certain lar)127
+297 R .053(ge domains.)-.18 F -.15(Fo)5.053 G 2.553(re).15 G .053
+(xample, at Berk)-2.703 F(ele)-.1 E 2.553(yi)-.15 G 2.553(tm)-2.553 G
+.053(ay be pre-)-2.553 F .722(sumed that most hosts kno)102 309 R 3.222
+(wa)-.25 G .722(bout other hosts inside the Berk)-3.222 F(ele)-.1 E
+3.223(yd)-.15 G 3.223(omain. But)-3.223 F .723(if the)3.223 F 3.223(yp)
+-.15 G .723(rocess an)-3.223 F .405(address that is unkno)102 321 R .405
+(wn, the)-.25 F 2.905(yc)-.15 G .405
+(an pass it \231upstairs\232 for further e)-2.905 F 2.905
+(xamination. Thus)-.15 F .405(as ne)2.905 F 2.905(wh)-.25 G .405
+(osts are)-2.905 F .488(added only one host \(the domain master\))102
+333 R/F2 10/Times-Italic@0 SF(must)2.989 E F1 .489
+(be updated immediately; other hosts can be updated)2.989 F(as con)102
+345 Q -.15(ve)-.4 G(nient.).15 E .583
+(Ideally this name resolution process w)127 361.2 R .583
+(ould be performed by a name serv)-.1 F .582(er \(e.g., [Su82b]\) to)
+-.15 F -.2(avo)102 373.2 S .507(id unnecessary cop).2 F .507
+(ying of the message.)-.1 F(Ho)5.507 E(we)-.25 E -.15(ve)-.25 G 1.307
+-.4(r, i).15 H 3.007(nab).4 G .507(atch netw)-3.007 F .508
+(ork such as UUCP this could)-.1 F(result in unnecessary delays.)102
+385.2 Q F0 2.5(5. COMP)72 409.2 R(ARISON WITH DELIVERMAIL)-.74 E F2
+(Sendmail)112 425.4 Q F1(is an outgro)2.5 E(wth of)-.25 E F2
+(delivermail)2.5 E F1 5(.T)C(he primary dif)-5 E(ferences are:)-.25 E
+12.5(\(1\) Con\214guration)92 441.6 R .573
+(information is not compiled in.)3.073 F .572
+(This change simpli\214es man)5.572 F 3.072(yo)-.15 G 3.072(ft)-3.072 G
+.572(he problems of)-3.072 F(mo)118.66 453.6 Q(ving to other machines.)
+-.15 E(It also allo)5 E(ws easy deb)-.25 E(ugging of ne)-.2 E 2.5(wm)
+-.25 G(ailers.)-2.5 E 12.5(\(2\) Address)92 469.8 R .491
+(parsing is more \215e)2.991 F 2.991(xible. F)-.15 F .491(or e)-.15 F
+(xample,)-.15 E F2(delivermail)2.992 E F1 .492(only supported one g)
+2.992 F(ate)-.05 E -.1(wa)-.25 G 2.992(yt).1 G 2.992(oa)-2.992 G -.15
+(ny)-2.992 G(netw)118.66 481.8 Q(ork, whereas)-.1 E F2(sendmail)2.5 E F1
+(can be sensiti)2.5 E .3 -.15(ve t)-.25 H 2.5(oh).15 G
+(ost names and reroute to dif)-2.5 E(ferent g)-.25 E(ate)-.05 E -.1(wa)
+-.25 G(ys.).1 E 12.5(\(3\) F)92 498 R(orw)-.15 E 2.878(arding and :include: features eliminate the requirement that the system alias \214le be)
+-.1 F 1.073(writable by an)118.66 510 R 3.573(yu)-.15 G 1.073(ser \(or that an update program be written, or that the system administration)
+-3.573 F(mak)118.66 522 Q 2.5(ea)-.1 G(ll changes\).)-2.5 E(\(4\))92
+538.2 Q F2(Sendmail)15 E F1 .443(supports message batching across netw)
+2.944 F .443(orks when a message is being sent to multiple)-.1 F
+(recipients.)118.66 550.2 Q 12.5(\(5\) A)92 566.4 R 1.945
+(mail queue is pro)4.445 F 1.946(vided in)-.15 F F2(sendmail.)4.446 E F1
+1.946(Mail that cannot be deli)6.946 F -.15(ve)-.25 G 1.946
+(red immediately b).15 F 1.946(ut can)-.2 F .439(potentially be deli)
118.66 578.4 R -.15(ve)-.25 G .438
-(red later is stored in this queue for a later retry).15 F 5.438(.T)-.65 G .438
-(he queue also pro)404.088 578.4 R .438(vides a)-.15 F -.2(bu)118.66 590.4 S
--.25(ff).2 G .838(er ag).25 F .839(ainst system crashes; after the message has\
- been collected it may be reliably redeli)-.05 F(v-)-.25 E(ered e)118.66 602.4
-Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)162.13 602.4 S
-(he system crashes during the initial deli)170.74 602.4 Q -.15(ve)-.25 G(ry).15
-E(.)-.65 E(\(6\))92 618.6 Q F2(Sendmail)118.66 618.6 Q F1 1.351(uses the netw)
-3.851 F 1.351(orking support pro)-.1 F 1.351(vided by 4.2BSD to pro)-.15 F 1.35
-(vide a direct interf)-.15 F 1.35(ace net-)-.1 F -.1(wo)118.66 630.6 S .283
-(rks such as the ARP).1 F .284
+(red later is stored in this queue for a later retry).15 F 5.438(.T)-.65
+G .438(he queue also pro)-5.438 F .438(vides a)-.15 F -.2(bu)118.66
+590.4 S -.25(ff).2 G .838(er ag).25 F .839(ainst system crashes; after the message has been collected it may be reliably redeli)
+-.05 F(v-)-.25 E(ered e)118.66 602.4 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5
+(ft)-2.5 G(he system crashes during the initial deli)-2.5 E -.15(ve)-.25
+G(ry).15 E(.)-.65 E(\(6\))92 618.6 Q F2(Sendmail)15 E F1 1.351
+(uses the netw)3.851 F 1.351(orking support pro)-.1 F 1.351
+(vided by 4.2BSD to pro)-.15 F 1.35(vide a direct interf)-.15 F 1.35
+(ace net-)-.1 F -.1(wo)118.66 630.6 S .283(rks such as the ARP).1 F .284
(ANET and/or Ethernet using SMTP \(the Simple Mail T)-.92 F .284
(ransfer Protocol\))-.35 F -.15(ove)118.66 642.6 S 2.5(raT).15 G
-(CP/IP connection.)151.68 642.6 Q F0 -1(Ve)72 756 S(rsion 8.2)1 E
-(USENIX \255 J)249.805 756 Q(an 83)-.15 E(Last Mod 11/27/93)424.55 756 Q EP
+(CP/IP connection.)-2.5 E F0 -1(Ve)72 756 S(rsion 8.2)1 E(USENIX \255 J)
+130.475 E(an 83)-.15 E(Last Mod 11/27/1993)88.355 E EP
%%Page: 9 9
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(REFERENCES)264.105 132 Q([Crock)87 148.2 Q 56.73
-(er77] Crock)-.1 F(er)-.1 E 3.535(,D)-.4 G 3.535(.H)239.965 148.2 S 1.035(., V)
-253.22 148.2 R 1.035(ittal, J. J., Pogran, K. T)-.6 F 1.035
-(., and Henderson, D. A. Jr)-.74 F(.,)-.55 E/F1 10/Times-Italic@0 SF(Stan-)
-3.535 E(dar)195 160.2 Q 2.627(df)-.37 G .127(or the F)218.927 160.2 R .127
-(ormat of ARP)-1.05 F 2.627(AN)-.9 G .128(etwork T)320.112 160.2 R -.2(ex)-.92
-G 2.628(tM).2 G(essa)377.018 160.2 Q -.1(ge)-.1 G(s.).1 E F0 .128
-(RFC 733, NIC 41952.)5.128 F(In [Feinler78].)195 172.2 Q(No)5 E -.15(ve)-.15 G
-(mber 1977.).15 E([Crock)87 188.4 Q 56.73(er82] Crock)-.1 F(er)-.1 E 4.272(,D)
--.4 G 4.272(.H)240.702 188.4 S(.,)254.694 188.4 Q F1(Standar)4.272 E 4.272(df)
--.37 G 1.772(or the F)307.318 188.4 R 1.772(ormat of Arpa Internet T)-1.05 F
--.2(ex)-.92 G 4.271(tM).2 G(essa)471.15 188.4 Q -.1(ge)-.1 G(s.).1 E F0 .025
-(RFC 822.)195 200.4 R(Netw)5.025 E .025(ork Information Center)-.1 F 2.526(,S)
--.4 G .026(RI International, Menlo P)363.506 200.4 R .026(ark, Cali-)-.15 F 2.5
-(fornia. August)195 212.4 R(1982.)2.5 E 60.51([Feinler78] Feinler)87 228.6 R
-2.938(,E)-.4 G .438(., and Postel, J.)234.478 228.6 R(\(eds.\),)5.438 E F1(ARP)
-2.938 E .438(ANET Pr)-.9 F .438(otocol Handbook.)-.45 F F0 .438(NIC 7104,)5.438
-F(Netw)195 240.6 Q 3.011(ork Information Center)-.1 F 5.511(,S)-.4 G 3.012
-(RI International, Menlo P)328.513 240.6 R 3.012(ark, California.)-.15 F(1978.)
+(er77] Crock)-.1 F(er)-.1 E 3.535(,D)-.4 G 3.535(.H)-3.535 G 1.035(., V)
+-3.535 F 1.035(ittal, J. J., Pogran, K. T)-.6 F 1.035
+(., and Henderson, D. A. Jr)-.74 F(.,)-.55 E/F1 10/Times-Italic@0 SF
+(Stan-)3.535 E(dar)195 160.2 Q 2.627(df)-.37 G .127(or the F)-2.627 F
+.127(ormat of ARP)-1.05 F 2.627(AN)-.9 G .128(etwork T)-2.627 F -.2(ex)
+-.92 G 2.628(tM).2 G(essa)-2.628 E -.1(ge)-.1 G(s.).1 E F0 .128
+(RFC 733, NIC 41952.)5.128 F(In [Feinler78].)195 172.2 Q(No)5 E -.15(ve)
+-.15 G(mber 1977.).15 E([Crock)87 188.4 Q 56.73(er82] Crock)-.1 F(er)-.1
+E 4.272(,D)-.4 G 4.272(.H)-4.272 G(.,)-4.272 E F1(Standar)4.272 E 4.272
+(df)-.37 G 1.772(or the F)-4.272 F 1.772(ormat of Arpa Internet T)-1.05
+F -.2(ex)-.92 G 4.271(tM).2 G(essa)-4.271 E -.1(ge)-.1 G(s.).1 E F0 .025
+(RFC 822.)195 200.4 R(Netw)5.025 E .025(ork Information Center)-.1 F
+2.526(,S)-.4 G .026(RI International, Menlo P)-2.526 F .026(ark, Cali-)
+-.15 F 2.5(fornia. August)195 212.4 R(1982.)2.5 E 60.51
+([Feinler78] Feinler)87 228.6 R 2.938(,E)-.4 G .438(., and Postel, J.)
+-2.938 F(\(eds.\),)5.438 E F1(ARP)2.938 E .438(ANET Pr)-.9 F .438
+(otocol Handbook.)-.45 F F0 .438(NIC 7104,)5.438 F(Netw)195 240.6 Q
+3.011(ork Information Center)-.1 F 5.511(,S)-.4 G 3.012
+(RI International, Menlo P)-5.511 F 3.012(ark, California.)-.15 F(1978.)
195 252.6 Q([No)87 268.8 Q 59.65(witz78] No)-.25 F .479
(witz, D. A., and Lesk, M. E.,)-.25 F F1 2.978(AD)2.978 G .478
-(ial-Up Network of UNIX Systems.)344.67 268.8 R F0(Bell)5.478 E 3.528
-(Laboratories. In)195 280.8 R 1.029(UNIX Programmer')3.528 F 3.529(sM)-.55 G
-1.029(anual, Se)363.524 280.8 R -.15(ve)-.25 G 1.029(nth Edition, V).15 F 1.029
-(olume 2.)-1.29 F(August, 1978.)195 292.8 Q 55.5([Schmidt79] Schmidt,)87 309 R
-(E.,)2.631 E F1 .131(An Intr)2.631 F .131(oduction to the Berk)-.45 F(ele)-.1 E
-2.631(yN)-.3 G(etwork.)382.277 309 Q F0(Uni)5.131 E -.15(ve)-.25 G .131
-(rsity of Califor).15 F(-)-.2 E(nia, Berk)195 321 Q(ele)-.1 E 2.5(yC)-.15 G 2.5
-(alifornia. 1979.)257.24 321 R 59.95([Shoens79] Shoens,)87 337.2 R(K.,)3.227 E
-F1 .728(Mail Refer)3.227 F .728(ence Manual.)-.37 F F0(Uni)5.728 E -.15(ve)-.25
-G .728(rsity of California, Berk).15 F(ele)-.1 E 4.528 -.65(y. I)-.15 H(n).65 E
-3.478(UNIX Programmer')195 349.2 R 5.977(sM)-.55 G 3.477(anual, Se)297.495
-349.2 R -.15(ve)-.25 G 3.477(nth Edition, V).15 F 3.477(olume 2C.)-1.29 F
-(December)8.477 E(1979.)195 361.2 Q 52.72([Solomon81] Solomon,)87 377.4 R .251
-(M., Landweber)2.75 F 2.751(,L)-.4 G .251(., and Neuhengen, D.,)308.952 377.4 R
-F1 .251(The Design of the CSNET)2.751 F .397(Name Server)195 389.4 R(.)-1.11 E
-F0 2.896(CS-DN-2. Uni)5.397 F -.15(ve)-.25 G .396(rsity of W).15 F .396
-(isconsin, Madison.)-.4 F .396(October 1981.)5.396 F 73.84([Su82a] Su,)87 405.6
-R(Za)2.844 E .344(w-Sing, and Postel, Jon,)-.15 F F1 .344
-(The Domain Naming Con)2.844 F .344(vention for Internet)-.4 F 2.71
-(User Applications.)195 417.6 R F0 5.21(RFC819. Netw)7.71 F 2.71
-(ork Information Center)-.1 F 5.21(,S)-.4 G 2.71(RI Interna-)457.14 417.6 R
-(tional, Menlo P)195 429.6 Q(ark, California.)-.15 E(August 1982.)5 E 73.28
-([Su82b] Su,)87 445.8 R(Za)4.174 E(w-Sing,)-.15 E F1 4.174(AD)4.174 G(istrib)
-275.702 445.8 Q 1.675(uted System for Internet Name Service)-.2 F(.)-.15 E F0
-(RFC830.)6.675 E(Netw)195 457.8 Q 3.012(ork Information Center)-.1 F 5.512(,S)
--.4 G 3.011(RI International, Menlo P)328.516 457.8 R 3.011(ark, California.)
--.15 F(October 1982.)195 469.8 Q/F2 10/Times-Bold@0 SF(Mail Systems and Addr)72
-756 Q(essing in 4.2bsd)-.18 E(9)499 756 Q EP
+(ial-Up Network of UNIX Systems.)-2.978 F F0(Bell)5.478 E 3.528
+(Laboratories. In)195 280.8 R 1.029(UNIX Programmer')3.528 F 3.529(sM)
+-.55 G 1.029(anual, Se)-3.529 F -.15(ve)-.25 G 1.029(nth Edition, V).15
+F 1.029(olume 2.)-1.29 F(August, 1978.)195 292.8 Q 55.5
+([Schmidt79] Schmidt,)87 309 R(E.,)2.631 E F1 .131(An Intr)2.631 F .131
+(oduction to the Berk)-.45 F(ele)-.1 E 2.631(yN)-.3 G(etwork.)-2.631 E
+F0(Uni)5.131 E -.15(ve)-.25 G .131(rsity of Califor).15 F(-)-.2 E
+(nia, Berk)195 321 Q(ele)-.1 E 2.5(yC)-.15 G 2.5(alifornia. 1979.)-2.5 F
+59.95([Shoens79] Shoens,)87 337.2 R(K.,)3.227 E F1 .728(Mail Refer)3.227
+F .728(ence Manual.)-.37 F F0(Uni)5.728 E -.15(ve)-.25 G .728
+(rsity of California, Berk).15 F(ele)-.1 E 4.528 -.65(y. I)-.15 H(n).65
+E 3.478(UNIX Programmer')195 349.2 R 5.977(sM)-.55 G 3.477(anual, Se)
+-5.977 F -.15(ve)-.25 G 3.477(nth Edition, V).15 F 3.477(olume 2C.)-1.29
+F(December)8.477 E(1979.)195 361.2 Q 52.72([Solomon81] Solomon,)87 377.4
+R .251(M., Landweber)2.75 F 2.751(,L)-.4 G .251(., and Neuhengen, D.,)
+-2.751 F F1 .251(The Design of the CSNET)2.751 F .397(Name Server)195
+389.4 R(.)-1.11 E F0 2.896(CS-DN-2. Uni)5.397 F -.15(ve)-.25 G .396
+(rsity of W).15 F .396(isconsin, Madison.)-.4 F .396(October 1981.)5.396
+F 73.84([Su82a] Su,)87 405.6 R(Za)2.844 E .344(w-Sing, and Postel, Jon,)
+-.15 F F1 .344(The Domain Naming Con)2.844 F .344(vention for Internet)
+-.4 F 2.71(User Applications.)195 417.6 R F0 5.21(RFC819. Netw)7.71 F
+2.71(ork Information Center)-.1 F 5.21(,S)-.4 G 2.71(RI Interna-)-5.21 F
+(tional, Menlo P)195 429.6 Q(ark, California.)-.15 E(August 1982.)5 E
+73.28([Su82b] Su,)87 445.8 R(Za)4.174 E(w-Sing,)-.15 E F1 4.174(AD)4.174
+G(istrib)-4.174 E 1.675(uted System for Internet Name Service)-.2 F(.)
+-.15 E F0(RFC830.)6.675 E(Netw)195 457.8 Q 3.012(ork Information Center)
+-.1 F 5.512(,S)-.4 G 3.011(RI International, Menlo P)-5.512 F 3.011
+(ark, California.)-.15 F(October 1982.)195 469.8 Q/F2 10/Times-Bold@0 SF
+(Mail Systems and Addr)72 756 Q(essing in 4.2bsd)-.18 E(9)259.93 E EP
%%Trailer
end
%%EOF
diff --git a/mail.local/Build b/mail.local/Build
new file mode 120000
index 0000000..6308dba
--- /dev/null
+++ b/mail.local/Build
@@ -0,0 +1 @@
+../BuildTools/bin/Build \ No newline at end of file
diff --git a/mail.local/Makefile b/mail.local/Makefile
deleted file mode 100644
index e8556d8..0000000
--- a/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/mail.local/Makefile.dist b/mail.local/Makefile.dist
deleted file mode 100644
index 8faf755..0000000
--- a/mail.local/Makefile.dist
+++ /dev/null
@@ -1,38 +0,0 @@
-# @(#)Makefile.dist 8.4 (Berkeley) 2/19/97
-
-BINDIR= ${DESTDIR}/usr/lib
-BINOWN= root
-BINMODE=4555
-
-# For Solaris, uncomment one of the CC= lines and the LIBS= line
-# Also, if you're running 2.6 or later, uncomment the ENVDEF= line
-#CC= cc -Xc
-#CC= gcc
-#LIBS= -lsocket -lnsl
-#ENVDEF= -DSOLARIS=20600
-
-# Which *roff program has -mandoc support
-NROFF= groff -Tascii
-#NROFF= nroff -h
-MANDOC= -mandoc
-
-ALL= mail.local mail.local.0
-
-all: ${ALL}
-
-mail.local: mail.local.c
- ${CC} -O -o mail.local ${ENVDEF} mail.local.c ${LIBS}
-
-mail.local.0: mail.local.8
- ${NROFF} ${MANDOC} mail.local.8 > mail.local.0
-
-install: install-mail.local install-docs
-
-install-mail.local: mail.local
- install -s -o ${BINOWN} -m ${BINMODE} mail.local ${BINDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: mail.local.0
-
-clean:
- rm -f mail.local core a.out mail.local.0
diff --git a/mail.local/Makefile.m4 b/mail.local/Makefile.m4
new file mode 100644
index 0000000..bf9a155
--- /dev/null
+++ b/mail.local/Makefile.m4
@@ -0,0 +1,106 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.22 (Berkeley) 7/12/1998
+#
+
+# 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)
+EBINDIR=${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 ${EBINDIR}
+
+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/mail.local/README b/mail.local/README
new file mode 100644
index 0000000..5da44bb
--- /dev/null
+++ b/mail.local/README
@@ -0,0 +1,12 @@
+# @(#)README 8.1 (Berkeley) 2/17/1998
+
+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/mail.local/mail.local.0 b/mail.local/mail.local.0
index ec60526..ffc0891 100644
--- a/mail.local/mail.local.0
+++ b/mail.local/mail.local.0
@@ -19,10 +19,13 @@ DDEESSCCRRIIPPTTIIOONN
ing 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 mes-
sage. A greater-than character (``>'') is prepended to any line in the
- message which could be mistaken for a ``From '' delimiter line.
+ message which could be mistaken for a ``From '' delimiter line (that is,
+ a line beginning with the five characters ``From '' following a blank
+ line).
The mail files are exclusively locked with flock(2) while mail is append-
- ed.
+ ed, and a _u_s_e_r_._l_o_c_k file also is created while the mailbox is locked for
+ compatibility with older MUAs.
If the ``biff'' service is returned by getservbyname(3), the biff server
is notified of delivered mail.
@@ -35,6 +38,8 @@ EENNVVIIRROONNMMEENNTT
FFIILLEESS
/tmp/local.XXXXXX temporary files
/var/mail/user user's mailbox directory
+ /var/mail/user.lock
+ lock file for a user's mailbox
SSEEEE AALLSSOO
mail(1), xsend(1), flock(2), getservbyname(3), comsat(8), send-
@@ -44,4 +49,4 @@ HHIISSTTOORRYY
A superset of mmaaiill..llooccaall (handling mailbox reading as well as mail deliv-
ery) appeared in Version 7 AT&T UNIX. as the program mmaaiill.
-BSDI BSD/OS December 11, 1993 1
+BSDI BSD/OS May 19, 1998 1
diff --git a/mail.local/mail.local.8 b/mail.local/mail.local.8
index 661615c..05f11ed 100644
--- a/mail.local/mail.local.8
+++ b/mail.local/mail.local.8
@@ -1,37 +1,15 @@
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
.\" 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.
+.\" 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.
.\"
-.\" @(#)mail.local.8 8.2 (Berkeley) 12/11/93
+.\" @(#)mail.local.8 8.7 (Berkeley) 5/19/1998
.\"
-.Dd December 11, 1993
+.Dd May 19, 1998
.Dt MAIL.LOCAL 8
.Os
.Sh NAME
@@ -63,11 +41,18 @@ 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.
+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.
+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 ,
@@ -87,6 +72,8 @@ Used to set the appropriate time zone on the timestamp.
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 ,
diff --git a/mail.local/mail.local.c b/mail.local/mail.local.c
index e7f1211..abe1a19 100644
--- a/mail.local/mail.local.c
+++ b/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.83 (Berkeley) 12/17/1998";
#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,12 +63,37 @@ 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)
# define USE_VSYSLOG 0
#endif
@@ -98,7 +102,7 @@ static char sccsid[] = "@(#)mail.local.c 8.43 (Berkeley) 8/2/97";
# define USE_VSYSLOG 0
#endif
-#if defined(NeXT)
+#if defined(NeXT) && !defined(__APPLE__)
# include <libc.h>
# define _PATH_MAILDIR "/usr/spool/mail"
# define __dead /* empty */
@@ -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,23 @@ 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. */
+#ifndef MAILER_DAEMON
+# define MAILER_DAEMON "MAILER-DAEMON"
+#endif
+
+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 +245,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,18 +261,21 @@ 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;
case 'f':
case 'r': /* Backward compatible. */
if (from != NULL) {
- warn("multiple -f options");
+ mailerr(NULL, "multiple -f options");
usage();
}
from = optarg;
break;
+ case 'l':
+ lmtpmode++;
+ break;
case '?':
default:
usage();
@@ -239,6 +283,9 @@ main(argc, argv)
argc -= optind;
argv += optind;
+ if (lmtpmode)
+ dolmtp();
+
if (!*argv)
usage();
@@ -261,16 +308,289 @@ 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)) ||
+ strchr(".-_", *p))
+ p++;
+ }
+ if (*p == ',' && p[1] == '@')
+ p++;
+ else if (*p == ':' && p[1] != '@')
+ p++;
+ else
+ return NULL;
+ }
+
+ s = p;
+
+ /* 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)) ||
+ strchr(".-_", *p))
+ p++;
+ }
+ }
+
+ if (*p++ != '>')
+ return NULL;
+ if (*p && *p != ' ')
+ return NULL;
+ len = p - s - 1;
+ if (*s == '\0' || len <= 0)
+ {
+ s = MAILER_DAEMON;
+ len = strlen(s);
+ }
+
+ 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;
+ FILE *fp = NULL;
time_t tval;
int fd, eline;
char line[2048];
@@ -278,16 +598,42 @@ 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 {
+ mailerr("451 4.3.0", "unable to open temporary file");
+ exit(eval);
+ }
}
(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);) {
+ size_t line_len = strlen(line);
+
+ if (line_len >= 2 &&
+ line[line_len - 2] == '\r' &&
+ line[line_len - 1] == '\n') {
+ strcpy(line + line_len - 2, "\n");
+ }
+ if (lmtprcpts && line[0] == '.') {
+ char *src = line + 1, *dest = line;
+
+ if (line[1] == '\n')
+ goto lmtpdot;
+ while (*src != '\0')
+ *dest++ = *src++;
+ *dest = '\0';
+ }
if (line[0] == '\n')
eline = 1;
else {
@@ -298,20 +644,47 @@ 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 {
+ mailerr("451 4.3.0",
+ "temporary file write error");
+ fclose(fp);
+ exit(eval);
+ }
}
}
+ 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 {
+ mailerr("451 4.3.0", "temporary file write error");
+ fclose(fp);
+ exit(eval);
+ }
}
return (fd);
}
@@ -327,15 +700,31 @@ 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 {
+ char *errcode = NULL;
+
+ if (eval == EX_TEMPFAIL)
+ errcode = "451 4.3.0";
+ else
+ errcode = "550 5.1.1";
+ mailerr(errcode, "unknown name: %s", name);
+ }
return;
}
endpwent();
@@ -385,11 +774,12 @@ 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;
- warn("%s: lstat: file changed after open", path);
+ mailerr("550 5.2.0",
+ "%s: lstat: file changed after open", path);
goto err1;
}
else
@@ -398,25 +788,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 ||
@@ -429,32 +818,34 @@ tryagain:
#endif
sb.st_uid != fsb.st_uid) {
eval = EX_TEMPFAIL;
- warn("%s: fstat: file changed after open", path);
+ mailerr("550 5.2.0", "%s: fstat: file changed after open",
+ path);
goto err1;
}
/* 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 +855,56 @@ 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) {
+#if 0
+ /* already printed an error above for this recipient */
e_to_sys(errno);
- warn("setreuid(0, 0): %s", strerror(errno));
+ mailerr("450 4.2.0", "setreuid(0, 0): %s",
+ strerror(errno));
+#endif
}
#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 +927,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 +935,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,12 +973,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"))) {
- warn("localhost: %s", strerror(errno));
+ if ((hp = gethostbyname("localhost")) == NULL) {
return;
}
addr.sin_family = hp->h_addrtype;
@@ -587,63 +985,49 @@ notifybiff(msg)
addr.sin_port = sp->s_port;
}
if (f < 0 && (f = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
- warn("socket: %s", strerror(errno));
return;
}
len = strlen(msg) + 1;
- if (sendto(f, msg, len, 0, (struct sockaddr *)&addr, sizeof(addr))
- != len)
- warn("sendto biff: %s", strerror(errno));
+ (void) sendto(f, msg, len, 0, (struct sockaddr *)&addr, sizeof(addr));
}
void
usage()
{
eval = EX_USAGE;
- err("usage: mail.local [-f from] user ...");
-}
-
-#if __STDC__
-void
-err(const char *fmt, ...)
-#else
-void
-err(fmt, va_alist)
- const char *fmt;
- va_dcl
-#endif
-{
- va_list ap;
-
-#if __STDC__
- va_start(ap, fmt);
-#else
- va_start(ap);
-#endif
- vwarn(fmt, ap);
- va_end(ap);
-
+ mailerr(NULL, "usage: mail.local [-l] [-f from] user ...");
exit(eval);
}
void
-#if __STDC__
-warn(const char *fmt, ...)
+#ifdef __STDC__
+mailerr(const char *hdr, const char *fmt, ...)
#else
-warn(fmt, va_alist)
+mailerr(hdr, fmt, va_alist)
+ const char *hdr;
const char *fmt;
va_dcl
#endif
{
va_list ap;
-#if __STDC__
+#ifdef __STDC__
va_start(ap, fmt);
#else
va_start(ap);
#endif
- vwarn(fmt, ap);
- va_end(ap);
+ if (lmtpmode)
+ {
+ if (hdr != NULL)
+ printf("%s ", hdr);
+ vprintf(fmt, ap);
+ printf("\r\n");
+ }
+ else
+ {
+ e_to_sys(errno);
+ vwarn(fmt, ap);
+ }
}
void
@@ -669,7 +1053,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 +1152,7 @@ e_to_sys(num)
}
}
-#if !defined(BSD4_4) && !defined(__osf__)
+#if !HASSTRERROR
char *
strerror(eno)
@@ -778,40 +1162,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 +1290,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/mail.local/pathnames.h b/mail.local/pathnames.h
index 8e43925..33d949e 100644
--- a/mail.local/pathnames.h
+++ b/mail.local/pathnames.h
@@ -1,36 +1,14 @@
/*-
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
* 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.
+ * 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.
*
- * @(#)pathnames.h 8.1 (Berkeley) 6/4/93
+ * @(#)pathnames.h 8.5 (Berkeley) 5/19/1998
*/
#include <paths.h>
diff --git a/mailstats/Build b/mailstats/Build
new file mode 120000
index 0000000..6308dba
--- /dev/null
+++ b/mailstats/Build
@@ -0,0 +1 @@
+../BuildTools/bin/Build \ No newline at end of file
diff --git a/mailstats/Makefile b/mailstats/Makefile
deleted file mode 100644
index d1a3996..0000000
--- a/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/mailstats/Makefile.dist b/mailstats/Makefile.dist
deleted file mode 100644
index 5bf0f20..0000000
--- a/mailstats/Makefile.dist
+++ /dev/null
@@ -1,78 +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.dist 8.2 (Berkeley) 9/21/96
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# location of sendmail source directory
-SRCDIR= ../src
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I${SRCDIR} -I/usr/sww/include
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-LIBS=
-
-# location of mailstats binary (usually /usr/sbin or /usr/etc)
-BINDIR= ${DESTDIR}/usr/sbin
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${ENVDEF}
-
-OBJS= mailstats.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-BINOWN= bin
-BINGRP= bin
-BINMODE=555
-
-ALL= mailstats mailstats.0
-
-all: ${ALL}
-
-mailstats: ${BEFORE} ${OBJS}
- ${CC} -o mailstats ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-mailstats.0: mailstats.8
- ${NROFF} ${MANDOC} mailstats.8 > mailstats.0
-
-install: install-mailstats install-docs
-
-install-mailstats: mailstats
- install -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} mailstats ${BINDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: mailstats.0
-
-clean:
- rm -f ${OBJS} mailstats mailstats.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: ${SRCDIR}/sendmail.h ${SRCDIR}/mailstats.h ${SRCDIR}/conf.h
diff --git a/mailstats/Makefile.m4 b/mailstats/Makefile.m4
new file mode 100644
index 0000000..2de9904
--- /dev/null
+++ b/mailstats/Makefile.m4
@@ -0,0 +1,97 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.15 (Berkeley) 7/12/1998
+#
+
+# 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)
+SBINDIR=${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 ${SBINDIR}
+
+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/mailstats/mailstats.0 b/mailstats/mailstats.0
index b6fbcf2..06b9b02 100644
--- a/mailstats/mailstats.0
+++ b/mailstats/mailstats.0
@@ -19,6 +19,8 @@ DDEESSCCRRIIPPTTIIOONN
bbyytteess__ffrroomm Kbytes from the mailer.
mmssggssttoo Number of messages to the mailer.
bbyytteess__ttoo Kbytes to the mailer.
+ mmssggssrreejj Number of messages rejected.
+ mmssggssddiiss Number of messages discarded.
MMaaiilleerr The name of the mailer.
After this display, a line totaling the values for all of the mailers is
diff --git a/mailstats/mailstats.8 b/mailstats/mailstats.8
index 3fe87c9..be2203d 100644
--- a/mailstats/mailstats.8
+++ b/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.8 (Berkeley) 11/13/1998
+.\"
.Dd April 25, 1996
.Dt MAILSTATS 1
.Os BSD 3
@@ -8,6 +16,7 @@
.Sh SYNOPSIS
.Nm mailstats
.Op Fl o
+.if \nP .Op Fl p
.Op Fl C Ar cffile
.Op Fl f Ar stfile
.Sh DESCRIPTION
@@ -33,6 +42,10 @@ Kbytes from the mailer.
Number of messages to the mailer.
.It Sy bytes_to
Kbytes to the mailer.
+.It Sy msgsrej
+Number of messages rejected.
+.It Sy msgsdis
+Number of messages discarded.
.It Sy Mailer
The name of the mailer.
.El
@@ -56,6 +69,11 @@ specified in the
.Nm sendmail
.Dq cf
file.
+.if \nP \
+\{
+.It Fl p
+Output information in program-readable mode and clear statistics.
+.\}
.It Fl o
Don't display the name of the mailer in the output.
.El
@@ -65,12 +83,14 @@ The
utility exits 0 on success, and >0 if an error occurs.
.Sh FILES
.Bl -tag -width /var/log/sendmail.stXX -compact
-.It Pa /etc/sendmail.cf
+.ie \nP .It Pa /etc/mail/sendmail.cf
+.el .It Pa /etc/sendmail.cf
The default
.Nm sendmail
.Dq cf
file.
-.It Pa /var/log/sendmail.st
+.ie \nP .It Pa /etc/mail/statistics
+.el .It Pa /var/log/sendmail.st
The default
.Nm sendmail
statistics file.
diff --git a/mailstats/mailstats.c b/mailstats/mailstats.c
index ffbb2bb..56e9357 100644
--- a/mailstats/mailstats.c
+++ b/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.29 (Berkeley) 1/25/1999";
#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,16 +45,20 @@ main(argc, argv)
char *cfile;
FILE *cfp;
bool mnames;
- long frmsgs = 0, frbytes = 0, tomsgs = 0, tobytes = 0;
+ bool progmode;
+ 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];
+ time_t now;
extern char *ctime();
cfile = _PATH_SENDMAILCF;
sfile = NULL;
mnames = TRUE;
- while ((ch = getopt(argc, argv, "C:f:o")) != EOF)
+ progmode = FALSE;
+ while ((ch = getopt(argc, argv, "C:f:op")) != EOF)
{
switch (ch)
{
@@ -89,11 +74,22 @@ main(argc, argv)
mnames = FALSE;
break;
+#if _FFR_MAILSTATS_PROGMODE
+ case 'p':
+ progmode = TRUE;
+ break;
+#endif
+
case '?':
default:
usage:
- fputs("usage: mailstats [-C cffile] [-f stfile] -o\n",
+#if _FFR_MAILSTATS_PROGMODE
+ fputs("usage: mailstats [-C cffile] [-f stfile] -o -p\n",
+ stderr);
+#else
+ fputs("usage: mailstats [-C cffile] [-f stfile] -o \n",
stderr);
+#endif
exit(EX_USAGE);
}
}
@@ -129,13 +125,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 +145,7 @@ main(argc, argv)
{
fprintf(stderr,
"StatusFile filename too long: %.30s...\n",
- s);
+ b);
exit(EX_CONFIG);
}
strcpy(sfilebuf, b);
@@ -158,7 +154,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 +173,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 +205,67 @@ 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",
- mnames ? " Mailer" : "");
+ if (progmode)
+ {
+ time(&now);
+ printf("%ld %ld\n", (long) stat.stat_itime, (long) now);
+ }
+ else
+ {
+ printf("Statistics from %s", ctime(&stat.stat_itime));
+ 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,
+ char *format;
+
+ if (progmode)
+ format = "%2d %8ld %10ld %8ld %10ld %6ld %6ld";
+ else
+ format = "%2d %8ld %10ldK %8ld %10ldK %6ld %6ld";
+ printf(format, 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 +273,24 @@ 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);
+ if (progmode)
+ {
+ printf(" T %8ld %10ld %8ld %10ld %6ld %6ld\n",
+ frmsgs, frbytes, tomsgs, tobytes, rejmsgs, dismsgs);
+ close(fd);
+ fd = open(sfile, O_RDWR | O_TRUNC);
+ if (fd >= 0)
+ close(fd);
+ }
+ else
+ {
+ printf("=============================================================\n");
+ printf(" T %8ld %10ldK %8ld %10ldK %6ld %6ld\n",
+ frmsgs, frbytes, tomsgs, tobytes, rejmsgs, dismsgs);
+ }
exit(EX_OK);
}
diff --git a/makemap/Build b/makemap/Build
new file mode 120000
index 0000000..6308dba
--- /dev/null
+++ b/makemap/Build
@@ -0,0 +1 @@
+../BuildTools/bin/Build \ No newline at end of file
diff --git a/makemap/Makefile b/makemap/Makefile
deleted file mode 100644
index e64e093..0000000
--- a/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/makemap/Makefile.dist b/makemap/Makefile.dist
deleted file mode 100644
index ad1ca5d..0000000
--- a/makemap/Makefile.dist
+++ /dev/null
@@ -1,90 +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.dist 8.7 (Berkeley) 6/10/97
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# location of sendmail source directory
-SRCDIR= ../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.
-#
-DBMDEF= -DNDBM -DNEWDB
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DNOT_SENDMAIL
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I${SRCDIR} -I/usr/sww/include
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-LIBS= -ldb -ldbm
-
-# location of makemap binary (usually /usr/sbin or /usr/etc)
-BINDIR= ${DESTDIR}/usr/sbin
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= makemap.o safefile.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-BINOWN= bin
-BINGRP= bin
-BINMODE=555
-
-ALL= makemap makemap.0
-
-all: ${ALL}
-
-makemap: ${BEFORE} ${OBJS}
- ${CC} -o makemap ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-safefile.c: ${SRCDIR}/safefile.c
- ln -s ${SRCDIR}/safefile.c safefile.c
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-makemap.0: makemap.8
- ${NROFF} ${MANDOC} makemap.8 > makemap.0
-
-INSTALL=install
-
-install: install-makemap install-docs
-
-install-makemap: makemap
- ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} makemap ${BINDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: makemap.0
-
-clean:
- rm -f ${OBJS} makemap makemap.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: ${SRCDIR}/conf.h
diff --git a/makemap/Makefile.m4 b/makemap/Makefile.m4
new file mode 100644
index 0000000..983ffdf
--- /dev/null
+++ b/makemap/Makefile.m4
@@ -0,0 +1,110 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.21 (Berkeley) 7/12/1998
+#
+
+# 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)
+SBINDIR=${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 ${SBINDIR}
+
+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/makemap/makemap.0 b/makemap/makemap.0
index 73a3862..eb6cd77 100644
--- a/makemap/makemap.0
+++ b/makemap/makemap.0
@@ -4,7 +4,7 @@ NNAAMMEE
mmaakkeemmaapp - create database maps for sendmail
SSYYNNOOPPSSIISS
- mmaakkeemmaapp [--NN] [--dd] [--ff] [--oo] [--rr] [--vv] _m_a_p_t_y_p_e _m_a_p_n_a_m_e
+ mmaakkeemmaapp [--NN] [--dd] [--ff] [--oo] [--rr] [--ss] [--vv] _m_a_p_t_y_p_e _m_a_p_n_a_m_e
DDEESSCCRRIIPPTTIIOONN
mmaakkeemmaapp creates the database maps used by the keyed map lookups in
@@ -16,10 +16,11 @@ DDEESSCCRRIIPPTTIIOONN
dbm DBM format maps. This requires the ndbm(3) library.
- btree B-Tree format maps. This requires the new Berkeley db(3) li-
+ btree B-Tree format maps. This requires the new Berkeley DB li-
brary.
- hash Hash format maps. This also requires the db(3) library.
+ hash Hash format maps. This also requires the Berkeley DB li-
+ brary.
In all cases, mmaakkeemmaapp reads lines from the standard input consisting of
two words separated by white space. The first is the database key, the
@@ -47,6 +48,10 @@ DDEESSCCRRIIPPTTIIOONN
--rr Allow replacement of existing keys. Normally mmaakkeemmaapp com-
plains if you repeat a key, and does not do the insert.
+ --ss Ignore safety checks on maps being created. This includes
+ checking for hard or symbolic links in world writable direc-
+ tories.
+
--vv Verbosely print what it is doing.
SSEEEE AALLSSOO
diff --git a/makemap/makemap.8 b/makemap/makemap.8
index 3c1f6fa..81f53a8 100644
--- a/makemap/makemap.8
+++ b/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.12 (Berkeley) 11/13/1998
.\"
.Dd November 16, 1992
.Dt MAKEMAP 8
@@ -40,10 +18,13 @@
.Sh SYNOPSIS
.Nm
.Op Fl N
+.if \nP .Op Fl c Ar cachesize
.Op Fl d
.Op Fl f
+.if \nP .Op Fl l
.Op Fl o
.Op Fl r
+.Op Fl s
.Op Fl v
.Ar maptype
.Ar mapname
@@ -70,13 +51,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
@@ -99,6 +78,11 @@ Include the null byte that terminates strings
in the map.
This must match the \-N flag in the sendmail.cf
``K'' line.
+.if \nP \
+\{\
+.It Fl c
+Use the specified hash and B-Tree cache size.
+.\}
.It Fl d
Allow duplicate keys in the map.
This is only allowed on B-Tree format maps.
@@ -113,6 +97,11 @@ This is intended to mesh with the
\fBK\fP
line in sendmail.cf.
The value is never case folded.
+.if \nP \
+\{\
+.It Fl l
+List supported map types.
+.\}
.It Fl o
Append to an old file.
This allows you to augment an existing file.
@@ -122,6 +111,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/makemap/makemap.c b/makemap/makemap.c
index 9d088c6..aaaba32 100644
--- a/makemap/makemap.c
+++ b/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.71 (Berkeley) 11/29/1998";
#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 };
@@ -75,36 +57,44 @@ uid_t RunAsUid;
uid_t RunAsGid;
char *RunAsUserName;
int Verbose = 2;
-bool DontInitGroups = TRUE;
-bool UnsafeGroupWrites = FALSE;
+bool DontInitGroups = FALSE;
+long DontBlameSendmail = DBS_SAFE;
u_char tTdvect[100];
+uid_t TrustedUid = 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;
- char *mapname;
- char *ext;
+ char *typename = NULL;
+ char *mapname = NULL;
+ char *ext = NULL;
int lineno;
int st;
int mode;
- int putflags;
+ int putflags = 0;
+#ifdef NEWDB
long dbcachesize = 1024 * 1024;
+#endif
enum type type;
+#if !O_EXLOCK
int fd;
+#endif
+ int sff = SFF_ROOTOK|SFF_REGONLY;
+ struct passwd *pw;
union
{
#ifdef NDBM
@@ -117,22 +107,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_USER
+ 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,25 +145,31 @@ 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:dflorsv"
#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;
#if _FFR_NEW_MAKEMAP_FLAGS
case 'c':
+# ifdef NEWDB
dbcachesize = atol(optarg);
+# endif
break;
#endif
@@ -174,6 +181,19 @@ main(argc, argv)
foldcase = FALSE;
break;
+#if _FFR_NEW_MAKEMAP_FLAGS
+ case 'l':
+# ifdef NDBM
+ printf("dbm\n");
+# endif
+# ifdef NEWDB
+ printf("hash\n");
+ printf("btree\n");
+# endif
+ exit(EX_OK);
+ break;
+#endif
+
case 'o':
notrunc = TRUE;
break;
@@ -182,11 +202,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 +216,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,15 +251,74 @@ main(argc, argv)
type = T_UNKNOWN;
}
+#if _FFR_TRUSTED_USER
+ 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, " TrustedUser", 12) == 0 &&
+ !(isascii(b[12]) && isalnum(b[12])))
+ {
+ b = strchr(b, '=');
+ if (b == NULL)
+ continue;
+ while (isascii(*++b) && isspace(*b))
+ continue;
+ if (isascii(*b) && isdigit(*b))
+ TrustedUid = atoi(b);
+ else
+ {
+ register struct passwd *pw;
+
+ TrustedUid = 0;
+ pw = getpwnam(b);
+ if (pw == NULL)
+ fprintf(stderr,
+ "TrustedUser: unknown user %s\n", b);
+ else
+ TrustedUid = pw->pw_uid;
+ }
+
+# ifdef UID_MAX
+ if (TrustedUid > UID_MAX)
+ {
+ syserr("TrustedUser: uid value (%ld) > UID_MAX (%ld)",
+ TrustedUid, UID_MAX);
+ TrustedUid = 0;
+ }
+# endif
+ break;
+ }
+
+
+ default:
+ continue;
+ }
+ }
+ (void) fclose(cfp);
+#endif
switch (type)
{
case T_ERR:
#if _FFR_NEW_MAKEMAP_FLAGS
fprintf(stderr,
- "Usage: %s [-N] [-c cachesize] [-d] [-f] [-o] [-r] [-s] [-v] type mapname\n",
+ "Usage: %s [-N] [-c cachesize] [-d] [-f] [-l] [-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 +340,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 +436,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 +456,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 +465,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 +493,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 +514,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 +524,144 @@ main(argc, argv)
dbm_close(dbp.dbm);
exit(EX_CANTCREAT);
}
+#if _FFR_TRUSTED_USER
+ if (geteuid() == 0 && TrustedUid != 0)
+ {
+ if (fchown(dbm_dirfno(dbp.dbm), TrustedUid, -1) < 0 ||
+ fchown(dbm_pagfno(dbp.dbm), TrustedUid, -1) < 0)
+ {
+ fprintf(stderr,
+ "WARNING: ownership change on %s failed: %s",
+ mapname, errstring(errno));
+ }
+ }
+#endif
+
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 _FFR_TRUSTED_USER
+ if (geteuid() == 0 && TrustedUid != 0)
+ {
+ if (fchown(fd, TrustedUid, -1) < 0)
+ {
+ fprintf(stderr,
+ "WARNING: ownership change on %s failed: %s",
+ mapname, errstring(errno));
+ }
+ }
+#endif
}
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 _FFR_TRUSTED_USER
+ if (geteuid() == 0 && TrustedUid != 0)
+ {
+ if (fchown(fd, TrustedUid, -1) < 0)
+ {
+ fprintf(stderr,
+ "WARNING: ownership change on %s failed: %s",
+ mapname, errstring(errno));
+ }
+ }
+#endif
}
break;
#endif
@@ -506,23 +700,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 +732,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 +765,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 +821,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 +833,8 @@ main(argc, argv)
exitstat = EX_IOERR;
}
#endif
+ default:
+ break;
}
#if !O_EXLOCK
@@ -680,7 +909,7 @@ lockfile(fd, filename, ext, type)
return FALSE;
}
-/*VARARGS2*/
+/*VARARGS1*/
void
#ifdef __STDC__
message(const char *msg, ...)
@@ -694,7 +923,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 +933,7 @@ message(msg, va_alist)
fprintf(stderr, "\n");
}
-/*VARARGS2*/
+/*VARARGS1*/
void
#ifdef __STDC__
syserr(const char *msg, ...)
@@ -716,7 +947,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);
@@ -728,10 +961,12 @@ const char *
errstring(err)
int err;
{
+#if !HASSTRERROR
static char errstr[64];
-#if !HASSTRERROR && !defined(ERRLIST_PREDEFINED)
+# if !defined(ERRLIST_PREDEFINED)
extern char *sys_errlist[];
extern int sys_nerr;
+# endif
#endif
/* handle pseudo-errors internal to sendmail */
@@ -771,7 +1006,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/praliases/Build b/praliases/Build
new file mode 120000
index 0000000..6308dba
--- /dev/null
+++ b/praliases/Build
@@ -0,0 +1 @@
+../BuildTools/bin/Build \ No newline at end of file
diff --git a/praliases/Makefile b/praliases/Makefile
deleted file mode 100644
index 4285a5b..0000000
--- a/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/praliases/Makefile.dist b/praliases/Makefile.dist
deleted file mode 100644
index 093f6ab..0000000
--- a/praliases/Makefile.dist
+++ /dev/null
@@ -1,85 +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.dist 8.2 (Berkeley) 9/21/96
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# location of sendmail source directory
-SRCDIR= ../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.
-#
-DBMDEF= -DNDBM -DNEWDB
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I${SRCDIR} -I/usr/sww/include/db
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-LIBS= -ldb -ldbm
-
-# location of praliases binary (usually /usr/sbin or /usr/etc)
-BINDIR= ${DESTDIR}/usr/sbin
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF}
-
-OBJS= praliases.o ${OBJADD}
-
-LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq
-BINOWN= bin
-BINGRP= bin
-BINMODE=555
-
-ALL= praliases praliases.0
-
-all: ${ALL}
-
-praliases: ${BEFORE} ${OBJS}
- ${CC} -o praliases ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-#NROFF= nroff -h
-NROFF= groff -Tascii
-MANDOC= -mandoc
-
-praliases.0: praliases.8
- ${NROFF} ${MANDOC} praliases.8 > praliases.0
-
-install: install-praliases install-docs
-
-install-praliases: praliases
- install -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} praliases ${BINDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: praliases.0
-
-clean:
- rm -f ${OBJS} praliases praliases.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: ${SRCDIR}/conf.h
diff --git a/praliases/Makefile.m4 b/praliases/Makefile.m4
new file mode 100644
index 0000000..7e78412
--- /dev/null
+++ b/praliases/Makefile.m4
@@ -0,0 +1,104 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.16 (Berkeley) 7/12/1998
+#
+
+# 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)
+SBINDIR=${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 ${SBINDIR}
+
+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/praliases/praliases.8 b/praliases/praliases.8
index 46082ba..0833701 100644
--- a/praliases/praliases.8
+++ b/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/1998
+.\"
.Dd April 25, 1996
.Dt PRALIASES 1
.Os BSD 3
diff --git a/praliases/praliases.c b/praliases/praliases.c
index 361edac..3935191 100644
--- a/praliases/praliases.c
+++ b/praliases/praliases.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.
*/
#ifndef lint
@@ -39,14 +17,43 @@ static char copyright[] =
#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)praliases.c 8.5 (Berkeley) 5/28/97";
+static char sccsid[] = "@(#)praliases.c 8.21 (Berkeley) 12/27/1998";
#endif /* not lint */
-#include <ndbm.h>
-#define NOT_SENDMAIL
+#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>
+#include <pathnames.h>
#ifdef NEWDB
-#include <db.h>
+# 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
+
+static void praliases __P((char *, int, char **));
+#ifdef NDBM
+static void praliases_dbm __P((char *, int, char **));
#endif
int
@@ -56,30 +63,148 @@ main(argc, 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];
+ char *cfile;
+#if _FFR_GRAB_ALIASFILE_OPTION
+ char *filename = NULL;
+#else
+ char *filename = "/etc/aliases";
#endif
+ FILE *cfp;
+ int ch;
+ char afilebuf[MAXLINE];
+ char buf[MAXLINE];
- filename = "/etc/aliases";
+ cfile = _PATH_SENDMAILCF;
+#if _FFR_GRAB_ALIASFILE_OPTION
+ while ((ch = getopt(argc, argv, "C:f:")) != EOF)
+#else
while ((ch = getopt(argc, argv, "f:")) != EOF)
- switch((char)ch) {
+#endif
+ {
+ switch ((char)ch) {
+ case 'C':
+ cfile = optarg;
+ break;
case 'f':
filename = optarg;
break;
case '?':
default:
- (void)fprintf(stderr, "usage: praliases [-f file]\n");
+ (void)fprintf(stderr,
+#if _FFR_GRAB_ALIASFILE_OPTION
+ "usage: praliases [-C cffile] [-f aliasfile]\n");
+#else
+ "usage: praliases [-f aliasfile]\n");
+#endif
exit(EX_USAGE);
}
+ }
argc -= optind;
argv += optind;
+ if (filename != NULL)
+ {
+ praliases(filename, argc, argv);
+ exit(EX_OK);
+ }
+
+ if ((cfp = fopen(cfile, "r")) == NULL)
+ {
+ fprintf(stderr, "praliases: ");
+ perror(cfile);
+ exit(EX_NOINPUT);
+ }
+
+ while (fgets(buf, sizeof(buf), cfp) != NULL)
+ {
+ register char *b, *p;
+
+ b = buf;
+ switch (*b++)
+ {
+ case 'O': /* option -- see if alias file */
+ if (strncasecmp(b, " AliasFile", 10) == 0 &&
+ !(isascii(b[10]) && isalnum(b[10])))
+ {
+ /* new form -- find value */
+ b = strchr(b, '=');
+ if (b == NULL)
+ continue;
+ while (isascii(*++b) && isspace(*b))
+ continue;
+ }
+ else if (*b++ != 'A')
+ {
+ /* something else boring */
+ continue;
+ }
+
+ /* this is the A or AliasFile option -- save it */
+ if (strlen(b) >= sizeof afilebuf)
+ {
+ fprintf(stderr,
+ "AliasFile filename too long: %.30s...\n",
+ b);
+ (void) fclose(cfp);
+ exit(EX_CONFIG);
+ }
+ strcpy(afilebuf, b);
+ b = afilebuf;
+
+ for (p = b; p != NULL; )
+ {
+ while (isascii(*p) && isspace(*p))
+ p++;
+ if (*p == '\0')
+ break;
+ b = p;
+
+ p = strpbrk(p, " ,/");
+ /* find end of spec */
+ if (p != NULL)
+ p = strpbrk(p, ",\n");
+ if (p != NULL)
+ *p++ = '\0';
+
+ praliases(b, argc, argv);
+ }
+
+ default:
+ continue;
+ }
+ }
+ (void) fclose(cfp);
+ exit(EX_OK);
+}
+
+static void
+praliases(filename, argc, argv)
+ char *filename;
+ int argc;
+ char **argv;
+{
+#ifdef NEWDB
+ DB *db;
+ DBT newdbkey, newdbcontent;
+ char buf[MAXNAME];
+#endif
+ char *class;
+
+ class = strchr(filename, ':');
+ if (class != NULL)
+ {
+ if (strncasecmp(filename, "dbm:", 4) == 0)
+ {
+#ifdef NDBM
+ praliases_dbm(class + 1, argc, argv);
+ return;
+#else
+ fprintf(stderr, "class dbm not available\n");
+ exit(EX_DATAERR);
+#endif
+ }
+ filename = class + 1;
+ }
#ifdef NEWDB
if (strlen(filename) + 4 >= sizeof buf)
{
@@ -88,51 +213,158 @@ main(argc, argv)
}
(void) strcpy(buf, filename);
(void) strcat(buf, ".db");
- if (db = dbopen(buf, O_RDONLY, 0444 , DB_HASH, NULL)) {
- if (!argc) {
+# 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 DB_VERSION_MAJOR > 2 || DB_VERSION_MINOR >=6
+ if ((errno = db->cursor(db, NULL, &dbc, 0)) == 0)
+# else
+ if ((errno = db->cursor(db, NULL, &dbc)) == 0)
+# endif
+ {
+ while ((errno = dbc->c_get(dbc, &newdbkey,
+ &newdbcontent,
+ DB_NEXT)) == 0)
+# endif
printf("%.*s:%.*s\n",
- newdbkey.size, newdbkey.data,
- newdbcontent.size, newdbcontent.data);
+ (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));
+ errno = db->close(db, 0);
+ exit(EX_DATAERR);
+ }
+# endif
}
- else for (; *argv; ++argv) {
+ 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))
- printf("%s:%.*s\n", newdbkey.data,
- newdbcontent.size, newdbcontent.data);
+# 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",
- newdbkey.data);
+ (char *) newdbkey.data);
}
+# if DB_VERSION_MAJOR < 2
+ (void)db->close(db);
+# else
+ errno = db->close(db, 0);
+# endif
}
- else {
+ else
+ {
#endif
- if ((dbp = dbm_open(filename, O_RDONLY, 0)) == NULL) {
- (void)fprintf(stderr,
- "praliases: %s: %s\n", filename, strerror(errno));
- exit(EX_OSFILE);
+#ifdef NDBM
+ praliases_dbm(filename, argc, argv);
+#endif
+#ifdef NEWDB
+ }
+#endif
+}
+
+#ifdef NDBM
+static void
+praliases_dbm(filename, argc, argv)
+ char *filename;
+ int argc;
+ char **argv;
+{
+ DBM *dbp;
+ datum content, key;
+
+ 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);
}
- 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) {
+ }
+ else
+ {
+ for (; *argv; ++argv)
+ {
+ /*
+ ** Use the sendmail adaptive algorithm of trying
+ ** the key first without, then if needed with,
+ ** the terminating NULL byte.
+ */
key.dptr = *argv;
- key.dsize = strlen(*argv) + 1;
+ key.dsize = strlen(*argv);
content = dbm_fetch(dbp, key);
- if (!content.dptr)
- (void)printf("%s: No such key\n", key.dptr);
- else
+ if (content.dptr == NULL)
+ {
+ key.dsize++;
+ content = dbm_fetch(dbp, key);
+ }
+ if (content.dptr != NULL)
(void)printf("%s:%.*s\n", key.dptr,
- content.dsize, content.dptr);
+ (int) content.dsize, content.dptr);
+ else
+ (void)printf("%s: No such key\n", key.dptr);
}
-#ifdef NEWDB
}
+ dbm_close(dbp);
+}
#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/rmail/Build b/rmail/Build
new file mode 120000
index 0000000..6308dba
--- /dev/null
+++ b/rmail/Build
@@ -0,0 +1 @@
+../BuildTools/bin/Build \ No newline at end of file
diff --git a/rmail/Makefile b/rmail/Makefile
deleted file mode 100644
index eb2fb48..0000000
--- a/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/rmail/Makefile.m4 b/rmail/Makefile.m4
new file mode 100644
index 0000000..9f2d87b
--- /dev/null
+++ b/rmail/Makefile.m4
@@ -0,0 +1,105 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.17 (Berkeley) 7/12/1998
+#
+
+# 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)
+UBINDIR=${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 ${UBINDIR}
+
+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/rmail/rmail.0 b/rmail/rmail.0
new file mode 100644
index 0000000..e8eb25e
--- /dev/null
+++ b/rmail/rmail.0
@@ -0,0 +1,26 @@
+RMAIL(8) BSD System Manager's Manual RMAIL(8)
+
+NNAAMMEE
+ rrmmaaiill - handle remote mail received via uucp
+
+SSYYNNOOPPSSIISS
+ rrmmaaiill _u_s_e_r _._._.
+
+DDEESSCCRRIIPPTTIIOONN
+ RRmmaaiill interprets incoming mail received via uucp(1), collapsing ``From''
+ lines in the form generated by mail.local(8) into a single line of the
+ form ``return-path!sender'', and passing the processed mail on to
+ sendmail(8).
+
+ RRmmaaiill is explicitly designed for use with uucp and sendmail.
+
+SSEEEE AALLSSOO
+ uucp(1), mail.local(8), sendmail(8)
+
+HHIISSTTOORRYY
+ The rrmmaaiill program appeared in 4.2BSD.
+
+BBUUGGSS
+ RRmmaaiill should not reside in _/_b_i_n.
+
+4.2 Berkeley Distribution May 19, 1998 1
diff --git a/rmail/rmail.8 b/rmail/rmail.8
index 2079d4e..9f6ee26 100644
--- a/rmail/rmail.8
+++ b/rmail/rmail.8
@@ -1,37 +1,15 @@
-.\" Copyright (c) 1983, 1990 The Regents of the University of California.
-.\" All rights reserved.
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\" 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.
+.\" 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.
.\"
-.\" @(#)rmail.8 6.10 (Berkeley) 4/29/93
+.\" @(#)rmail.8 6.14 (Berkeley) 5/19/1998
.\"
-.Dd April 29, 1993
+.Dd May 19, 1998
.Dt RMAIL 8
.Os BSD 4.2
.Sh NAME
diff --git a/rmail/rmail.c b/rmail/rmail.c
index 29af02a..f3f5cf6 100644
--- a/rmail/rmail.c
+++ b/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.18 (Berkeley) 10/23/1998";
#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)
@@ -94,10 +136,10 @@ main(argc, argv)
extern int errno, optind;
FILE *fp;
struct stat sb;
- size_t fplen, fptlen, len;
+ size_t fplen = 0, fptlen = 0, len;
off_t offset;
int ch, debug, i, pdes[2], pid, status;
- char *addrp, *domain, *p, *t;
+ char *addrp = NULL, *domain, *p, *t;
char *from_path, *from_sys, *from_user;
char *args[100], buf[2048], lbuf[2048];
@@ -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/smrsh/Build b/smrsh/Build
new file mode 120000
index 0000000..6308dba
--- /dev/null
+++ b/smrsh/Build
@@ -0,0 +1 @@
+../BuildTools/bin/Build \ No newline at end of file
diff --git a/smrsh/Makefile b/smrsh/Makefile
deleted file mode 100644
index f2629a8..0000000
--- a/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/smrsh/Makefile.dist b/smrsh/Makefile.dist
deleted file mode 100644
index 52b4a20..0000000
--- a/smrsh/Makefile.dist
+++ /dev/null
@@ -1,76 +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.dist 8.2 (Berkeley) 9/25/96
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# location of sendmail source directory
-SRCDIR= ../src
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF=
-
-# include directories
-INCDIRS=-I${SRCDIR} -I/usr/sww/include
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system
-LIBS=
-
-# location of smrsh binary (usually /usr/libexec or /usr/etc)
-BINDIR= ${DESTDIR}/usr/libexec
-
-# additional .o files needed
-OBJADD=
-
-################### end of user configuration flags ######################
-
-CFLAGS= -I. $O ${INCDIRS} ${ENVDEF}
-
-OBJS= smrsh.o ${OBJADD}
-
-BINOWN= bin
-BINGRP= bin
-BINMODE=555
-
-ALL= smrsh smrsh.0
-
-all: ${ALL}
-
-smrsh: ${BEFORE} ${OBJS}
- ${CC} -o smrsh ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-# Which *roff program has -mandoc support
-NROFF= groff -Tascii
-#NROFF= nroff -h
-MANDOC= -mandoc
-
-smrsh.0: smrsh.8
- ${NROFF} ${MANDOC} smrsh.8 > smrsh.0
-
-install: install-smrsh install-docs
-
-install-smrsh: smrsh
- install -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} smrsh ${BINDIR}
-
-# doesn't actually install them -- you may want to install pre-nroff versions
-install-docs: smrsh.0
-
-clean:
- rm -f ${OBJS} smrsh smrsh.0
-
-# dependencies
-# gross overkill, and yet still not quite enough....
-${OBJS}: ${SRCDIR}/conf.h
diff --git a/smrsh/Makefile.m4 b/smrsh/Makefile.m4
new file mode 100644
index 0000000..5cae3f0
--- /dev/null
+++ b/smrsh/Makefile.m4
@@ -0,0 +1,96 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.14 (Berkeley) 7/12/1998
+#
+
+# 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)
+EBINDIR=${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 ${EBINDIR}
+
+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/smrsh/README b/smrsh/README
index 13f545c..fa4e2de 100644
--- a/smrsh/README
+++ b/smrsh/README
@@ -3,7 +3,7 @@
README smrsh - sendmail restricted shell.
- @(#)README 8.2 11/11/95
+ @(#)README 8.2 11/11/1995
This README file is provided as a courtesy of the CERT Coordination Center,
diff --git a/smrsh/smrsh.8 b/smrsh/smrsh.8
index a28bd0a..af08fc4 100644
--- a/smrsh/smrsh.8
+++ b/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/1998
.\"
.TH SMRSH 8 11/02/93
.SH NAME
diff --git a/smrsh/smrsh.c b/smrsh/smrsh.c
index c3314e6..d4af285 100644
--- a/smrsh/smrsh.c
+++ b/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/1998";
#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/src/Build b/src/Build
new file mode 120000
index 0000000..6308dba
--- /dev/null
+++ b/src/Build
@@ -0,0 +1 @@
+../BuildTools/bin/Build \ No newline at end of file
diff --git a/src/Makefile b/src/Makefile
deleted file mode 100644
index 0be76ad..0000000
--- a/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/src/Makefile.m4 b/src/Makefile.m4
new file mode 100644
index 0000000..d88d35b
--- /dev/null
+++ b/src/Makefile.m4
@@ -0,0 +1,152 @@
+#
+# This Makefile is designed to work on any reasonably current version of
+# "make" program.
+#
+# @(#)Makefile.m4 8.26 (Berkeley) 1/23/1999
+#
+
+# 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 control.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 sendmail.st aliases.${MAN5SRC} mailq.${MAN1SRC} newaliases.${MAN1SRC} sendmail.${MAN8SRC}
+
+all: ${ALL}
+
+sendmail: ${BEFORE} ${OBJS}
+ ${CC} -o sendmail ${LDOPTS} ${LIBDIRS} ${OBJS} ${LIBS}
+
+undivert(3)
+
+sendmail.st:
+ cp /dev/null sendmail.st
+
+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}/sendmail.hf
+ ${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/src/Makefiles/Makefile.386BSD b/src/Makefiles/Makefile.386BSD
deleted file mode 100644
index 4eb18ff..0000000
--- a/src/Makefiles/Makefile.386BSD
+++ /dev/null
@@ -1,45 +0,0 @@
-# @(#)Makefile.386BSD 8.6 (Berkeley) 8/7/97
-
-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 safefile.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 \
- /usr/sbin/sendmail /usr/bin/hoststat \
- /usr/sbin/sendmail /usr/bin/purgestat
-INSTALL=install
-BINDIR= /usr/sbin
-BINOWN= root
-BINGRP= kmem
-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/src/Makefiles/Makefile.A-UX b/src/Makefiles/Makefile.A-UX
deleted file mode 100644
index 69f75e7..0000000
--- a/src/Makefiles/Makefile.A-UX
+++ /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).
-#
-# @(#)Makefile.A-UX 8.16 (Berkeley) 8/7/97
-#
-# Tested on A/UX 3.1.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
-# It may be necessary to change -lUTIL to -lmalloc on older versions
-LIBS= -ldbm -ldb -lposix -lUTIL
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.AIX b/src/Makefiles/Makefile.AIX
deleted file mode 100644
index b5fabce..0000000
--- a/src/Makefiles/Makefile.AIX
+++ /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 AIX 3.1.5 and 3.2.3e.
-#
-# @(#)Makefile.AIX 8.13 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/sbin/hoststat ${DESTDIR}/usr/sbin/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= system
-BINMODE=4555
-
-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/src/Makefiles/Makefile.AIX.2 b/src/Makefiles/Makefile.AIX.2
deleted file mode 100644
index 047ebb1..0000000
--- a/src/Makefiles/Makefile.AIX.2
+++ /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 AIX/RT V2.2.1 OPSYS level 1773
-#
-# @(#)Makefile.AIX.2 8.5 (Berkeley) 8/7/97
-#
-
-SMROOT= /usr/local/newmail
-
-# use O=-O (usual) or O=-g (debugging)
-O= -g
-
-# define the database mechanism used for alias lookups:
-# -DNDBM -- use new DBM (or GNU dbm)
-# -DNEWDB -- use new Berkeley DB (recommended)
-# -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 -DNIS
-#
-# If you did not install the NEWDB on your AIX/RT V2 platform, get the latest
-# GNU dbm, and use:
-#DBMDEF=-DNDBM
-
-# environment definitions (drag in BSD compatibility)
-ENVDEF= -DBSD -DBSD_INCLUDES -DBSD_REMAP_SIGNAL_TO_SIGVEC \
- -D_PATH_SENDMAILCF=\"${SMROOT}/sendmail.cf\" \
- -D_PATH_SENDMAILPID=\"${SMROOT}/sendmail.pid\"
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-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
-
-# library directories
-#LIBDIRS=-L/usr/sww/lib
-
-# libraries required on your system --
-# This port uses the AIX/RT BSD compatibility library -lbsd,
-# Add to this the location of either the NEWDB package library, or
-# the GNU DBM library. the system supplied DBM utilities are ANCIENT.
-#
-LIBS= -lbsd /u/markw/src/db.1.85/PORT/aixrt/libdb.a /usr/local/lib/libgldavg.a /fs/work/src/bind/res/libresolv.a
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= ${SMROOT}/bin
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${SMROOT}
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${SMROOT}
-
-# 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 \
- safefile.o savemail.o srvrsmtp.o stab.o stats.o sysexits.o \
- trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
-
-LINKS= newaliases mailq hoststat purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= system
-BINMODE=4555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-NROFF= nroff -Tlp
-#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/src/Makefiles/Makefile.AIX.4 b/src/Makefiles/Makefile.AIX.4
deleted file mode 100644
index be3cfa4..0000000
--- a/src/Makefiles/Makefile.AIX.4
+++ /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 AIX 3.1.5 and 3.2.3e.
-#
-# @(#)Makefile.AIX 8.11 (Berkeley) 9/20/96
-#
-
-# use O=-O (usual) or O=-g (debugging)
-# you can use -O3 on AIX 3.2.4 or greater ONLY!
-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
-#
-# If you did not install the NEWDB on your AIX platform, use:
-#DBMDEF=-DNDBM
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -D_AIX4
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/sbin/hoststat ${DESTDIR}/usr/sbin/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= system
-BINMODE=4555
-
-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/src/Makefiles/Makefile.Altos b/src/Makefiles/Makefile.Altos
deleted file mode 100644
index 04a344c..0000000
--- a/src/Makefiles/Makefile.Altos
+++ /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 Altos System V.
-#
-# @(#)Makefile.Altos 8.8 (Berkeley) 3/28/97
-#
-
-# The Altos System V compiler does not understand ANSI
-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=
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -DALTOS_SYSTEM_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 \
- safefile.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 \
- ${DESTDIR}/usr/bin/hoststat ${DESTDIR}/usr/bin/purgestat
-INSTALL=cp
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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
- -mv ${BINDIR}/sendmail ${BINDIR}/sendmail.old
- ${INSTALL} sendmail ${BINDIR}
- chown ${BINOWN} ${BINDIR}/sendmail
- chgrp ${BINGRP} ${BINDIR}/sendmail
- chmod ${BINMODE} ${BINDIR}/sendmail
- for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
- ${INSTALL} /dev/null ${STDIR}/sendmail.st
- chown ${BINOWN} ${STDIR}/sendmail.st
- chgrp ${BINGRP} ${STDIR}/sendmail.st
- chmod 644 ${STDIR}/sendmail.st
- ${INSTALL} sendmail.hf ${HFDIR}
- chown ${BINOWN} ${HFDIR}/sendmail.hf
- chgrp ${BINGRP} ${HFDIR}/sendmail.hf
- chmod 444 ${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/src/Makefiles/Makefile.BSD-OS b/src/Makefiles/Makefile.BSD-OS
deleted file mode 100644
index deb9a1b..0000000
--- a/src/Makefiles/Makefile.BSD-OS
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# This Makefile is for BSDI boxes running BSD-OS (formerly BSD-386).
-#
-# @(#)Makefile.BSD-OS 8.7 (Berkeley) 8/7/97
-#
-
-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 safefile.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 \
- /usr/sbin/sendmail /usr/bin/hoststat \
- /usr/sbin/sendmail /usr/bin/purgestat
-INSTALL=install
-BINDIR= /usr/sbin
-BINOWN= root
-BINGRP= kmem
-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/src/Makefiles/Makefile.BSD43 b/src/Makefiles/Makefile.BSD43
deleted file mode 100644
index 9cb506f..0000000
--- a/src/Makefiles/Makefile.BSD43
+++ /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 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.11 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.CLIX b/src/Makefiles/Makefile.CLIX
deleted file mode 100644
index 521490f..0000000
--- a/src/Makefiles/Makefile.CLIX
+++ /dev/null
@@ -1,120 +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.9 (Berkeley) 8/7/97
-#
-
-# 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=
-
-################### 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 \
- safefile.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 \
- ${DESTDIR}/usr/bin/hoststat ${DESTDIR}/usr/bin/purgestat
-INSTALL=cp
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-
-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/src/Makefiles/Makefile.CSOS b/src/Makefiles/Makefile.CSOS
deleted file mode 100644
index 6d6baf4..0000000
--- a/src/Makefiles/Makefile.CSOS
+++ /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 -- which is fine since there is no nroff under CSOS.
-#
-# Contributed by Scott Bolte <scott@craycos.com>.
-#
-# @(#)Makefile.CSOS 8.9 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=cpset
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-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/src/Makefiles/Makefile.ConvexOS b/src/Makefiles/Makefile.ConvexOS
deleted file mode 100644
index f4a814f..0000000
--- a/src/Makefiles/Makefile.ConvexOS
+++ /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 CxOS 11.0 beta 1 and 10.x.
-#
-# @(#)Makefile.ConvexOS 8.14 (Berkeley) 8/7/97
-#
-
-
-# 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)
-# -D_ACL and -D_AUDIT are needed for SecureWare/SecureOS on ConvexOS
-#ENVDEF=-D_ACL -D_AUDIT -DSECUREWARE
-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
-# -lshare is for the Fair Share Scheduler
-# -lprot is for the SecureWare hooks
-#LIBS= -lshare -lprot
-LIBS= -lshare
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.Dell b/src/Makefiles/Makefile.Dell
deleted file mode 100644
index 06f31e3..0000000
--- a/src/Makefiles/Makefile.Dell
+++ /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).
-#
-# 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.10 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-
-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/src/Makefiles/Makefile.DomainOS b/src/Makefiles/Makefile.DomainOS
deleted file mode 100644
index f46682c..0000000
--- a/src/Makefiles/Makefile.DomainOS
+++ /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 DomainOS 10.3.5
-#
-# @(#)Makefile.DomainOS 8.13 (Berkeley) 8/7/97
-#
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.Dynix b/src/Makefiles/Makefile.Dynix
deleted file mode 100644
index 63c454a..0000000
--- a/src/Makefiles/Makefile.Dynix
+++ /dev/null
@@ -1,119 +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.10 (Berkeley) 7/6/97
-#
-
-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=
-
-# 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
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-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/src/Makefiles/Makefile.EWS-UX_V b/src/Makefiles/Makefile.EWS-UX_V
deleted file mode 100644
index e97d2be..0000000
--- a/src/Makefiles/Makefile.EWS-UX_V
+++ /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 NEC EWS-UX/V 4.2
-#
-# @(#)Makefile.EWS-UX_V 8.8 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.FreeBSD b/src/Makefiles/Makefile.FreeBSD
deleted file mode 100644
index f3ae29a..0000000
--- a/src/Makefiles/Makefile.FreeBSD
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# Makefile for FreeBSD
-#
-# @(#)Makefile.FreeBSD 8.8 (Berkeley) 8/7/97
-
-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
-
-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 safefile.c \
- savemail.c srvrsmtp.c stab.c stats.c sysexits.c trace.c udb.c \
- usersmtp.c util.c version.c
-DPADD= ${LIBUTIL}
-LDADD= -lutil
-#
-# 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 \
- /usr/sbin/sendmail /usr/bin/hoststat \
- /usr/sbin/sendmail /usr/bin/purgestat
-INSTALL=install
-BINDIR= /usr/sbin
-BINOWN= root
-BINGRP= kmem
-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/src/Makefiles/Makefile.HP-UX b/src/Makefiles/Makefile.HP-UX
deleted file mode 100644
index 5745386..0000000
--- a/src/Makefiles/Makefile.HP-UX
+++ /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).
-#
-# This has been tested on HP-UX 9.05 on 7xx series and HP-UX 9.04
-# on 8xx series.
-#
-# @(#)Makefile.HP-UX 8.17 (Berkeley) 8/7/97
-#
-
-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 \
- safefile.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 \
- ${DESTDIR}/usr/bin/hoststat ${DESTDIR}/usr/bin/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-
-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/src/Makefiles/Makefile.HP-UX.10.x b/src/Makefiles/Makefile.HP-UX.10.x
deleted file mode 100644
index 87b8f3a..0000000
--- a/src/Makefiles/Makefile.HP-UX.10.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).
-#
-# 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.11 (Berkeley) 8/7/97
-#
-
-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 \
- safefile.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 \
- ${DESTDIR}/usr/bin/hoststat ${DESTDIR}/usr/bin/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-
-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/src/Makefiles/Makefile.IRIX b/src/Makefiles/Makefile.IRIX
deleted file mode 100644
index 4235f02..0000000
--- a/src/Makefiles/Makefile.IRIX
+++ /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 IRIX 4.0.4.
-#
-# @(#)Makefile.IRIX 8.15 (Berkeley) 8/7/97
-#
-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.
-#
-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
-# If running bind-4.9.5, you may need to remove -lsun
-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 \
- safefile.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 \
- ${DESTDIR}/usr/bsd/hoststat ${DESTDIR}/usr/bsd/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.IRIX.5.x b/src/Makefiles/Makefile.IRIX.5.x
deleted file mode 100644
index 76b25b6..0000000
--- a/src/Makefiles/Makefile.IRIX.5.x
+++ /dev/null
@@ -1,112 +0,0 @@
-#
-# This Makefile is designed to work on the old "make" program.
-#
-# Tested on IRIX 5.3 by Kari E. Hurtta <Kari.Hurtta@fmi.fi>.
-#
-# @(#)Makefile.IRIX.5.x 8.11 (Berkeley) 3/28/97
-#
-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
-
-# 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}/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 \
- safefile.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 \
- ${DESTDIR}/usr/bsd/hoststat ${DESTDIR}/usr/bsd/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.IRIX.6.x b/src/Makefiles/Makefile.IRIX.6.x
deleted file mode 100644
index ed09ab0..0000000
--- a/src/Makefiles/Makefile.IRIX.6.x
+++ /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).
-#
-# IRIX 6.2 is successor of IRIX 5.3. It combines 64bit IRIX 6.[01] and
-# 32bit IRIX 5.x.
-#
-# IRIX 6.2 support provided by Kari Hurtta <Kari.Hurtta@dionysos.fmi.fi>.
-#
-# @(#)Makefile.IRIX.6.x 8.5 (Berkeley) 4/7/97
-#
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# 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
-ABI= -n32
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB (requires -ldb)
-# -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.
-#
-# 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)
-# -DIRIX6 is needed, if you use ABI=-32
-# (or conf.h can't make difference between IRIX 5.3 and IRIX 6.2)
-ENVDEF= -DIRIX6 ${ABI}
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lelf
-
-# loader options
-LDOPTS= ${ABI}
-
-# 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}/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 \
- safefile.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 \
- ${DESTDIR}/usr/bsd/hoststat ${DESTDIR}/usr/bsd/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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} -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/src/Makefiles/Makefile.IRIX64.6.0 b/src/Makefiles/Makefile.IRIX64.6.0
deleted file mode 100644
index 4d405ab..0000000
--- a/src/Makefiles/Makefile.IRIX64.6.0
+++ /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.6.0 8.8 (Berkeley) 8/7/97
-#
-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.
-#
-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 \
- safefile.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 \
- ${DESTDIR}/usr/bsd/hoststat ${DESTDIR}/usr/bsd/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.IRIX64.6.1 b/src/Makefiles/Makefile.IRIX64.6.1
deleted file mode 100644
index 4d405ab..0000000
--- a/src/Makefiles/Makefile.IRIX64.6.1
+++ /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.6.0 8.8 (Berkeley) 8/7/97
-#
-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.
-#
-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 \
- safefile.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 \
- ${DESTDIR}/usr/bsd/hoststat ${DESTDIR}/usr/bsd/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.IRIX64.6.x b/src/Makefiles/Makefile.IRIX64.6.x
deleted file mode 100644
index ed09ab0..0000000
--- a/src/Makefiles/Makefile.IRIX64.6.x
+++ /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).
-#
-# IRIX 6.2 is successor of IRIX 5.3. It combines 64bit IRIX 6.[01] and
-# 32bit IRIX 5.x.
-#
-# IRIX 6.2 support provided by Kari Hurtta <Kari.Hurtta@dionysos.fmi.fi>.
-#
-# @(#)Makefile.IRIX.6.x 8.5 (Berkeley) 4/7/97
-#
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# 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
-ABI= -n32
-
-# define the database mechanisms available for map & alias lookups:
-# -DNDBM -- use new DBM
-# -DNEWDB -- use new Berkeley DB (requires -ldb)
-# -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.
-#
-# 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)
-# -DIRIX6 is needed, if you use ABI=-32
-# (or conf.h can't make difference between IRIX 5.3 and IRIX 6.2)
-ENVDEF= -DIRIX6 ${ABI}
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lelf
-
-# loader options
-LDOPTS= ${ABI}
-
-# 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}/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 \
- safefile.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 \
- ${DESTDIR}/usr/bsd/hoststat ${DESTDIR}/usr/bsd/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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} -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/src/Makefiles/Makefile.ISC b/src/Makefiles/Makefile.ISC
deleted file mode 100644
index 04f8bf4..0000000
--- a/src/Makefiles/Makefile.ISC
+++ /dev/null
@@ -1,109 +0,0 @@
-#
-# Makefile for ISC (SunSoft) UNIX.
-#
-# Contributed by J.J. Bailey <jjb@jagware.bcc.com>
-#
-# @(#)Makefile.ISC 8.11 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.KSR b/src/Makefiles/Makefile.KSR
deleted file mode 100644
index 291b19c..0000000
--- a/src/Makefiles/Makefile.KSR
+++ /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 KSR OS 1.2.2. Contributed by Todd C. Miller
-# <Todd.Miller@cs.colorado.edu>
-#
-# @(#)Makefile.KSR 8.5 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${BINDIR}/hoststat ${BINDIR}/purgestat
-INSTALL=installbsd
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.LUNA b/src/Makefiles/Makefile.LUNA
deleted file mode 100644
index 9fdc842..0000000
--- a/src/Makefiles/Makefile.LUNA
+++ /dev/null
@@ -1,148 +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.8 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.Linux b/src/Makefiles/Makefile.Linux
deleted file mode 100644
index 0b91323..0000000
--- a/src/Makefiles/Makefile.Linux
+++ /dev/null
@@ -1,137 +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.20 (Berkeley) 8/7/97
-#
-
-# 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= -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
-# you may need to add -lresolv if you've installed BIND on
-# your system (see the BIND section for linux in src/READ_ME)
-LIBS= -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 \
- safefile.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 \
- ${DESTDIR}/usr/bin/hoststat ${DESTDIR}/usr/bin/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.Linux.ppc b/src/Makefiles/Makefile.Linux.ppc
deleted file mode 100644
index e518f71..0000000
--- a/src/Makefiles/Makefile.Linux.ppc
+++ /dev/null
@@ -1,139 +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!).
-#
-# This Makefile contributed by Paul DuBois <dubois@primate.wisc.edu>.
-#
-# @(#)Makefile.Linux.ppc 8.4 (Berkeley) 8/7/97
-#
-
-# 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= -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
-# you may need to add -lresolv if you've installed BIND on
-# your system (see the BIND section for linux in src/READ_ME)
-LIBS= -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}/var/log
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/bin/hoststat ${DESTDIR}/usr/bin/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-
-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/src/Makefiles/Makefile.Mach386 b/src/Makefiles/Makefile.Mach386
deleted file mode 100644
index c1c4335..0000000
--- a/src/Makefiles/Makefile.Mach386
+++ /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.Mach386 8.10 (Berkeley) 8/7/97
-#
-
-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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.NCR.MP-RAS.2.x b/src/Makefiles/Makefile.NCR.MP-RAS.2.x
deleted file mode 100644
index 65ba6ac..0000000
--- a/src/Makefiles/Makefile.NCR.MP-RAS.2.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).
-#
-# NCR 3000 support from Kevin Darcy <kevin@tech.mis.cfc.com>
-# and Tom Moore <tmoore@fievel.DaytonOH.NCR.COM>.
-#
-# @(#)Makefile.NCR.MP-RAS.2.x 8.17 (Berkeley) 8/7/97
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O2
-
-# 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= -DNCR_MP_RAS2
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.NCR.MP-RAS.3.x b/src/Makefiles/Makefile.NCR.MP-RAS.3.x
deleted file mode 100644
index aa63826..0000000
--- a/src/Makefiles/Makefile.NCR.MP-RAS.3.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).
-#
-# NCR SVR4 MP-RAS 3.x support from
-# Tom Moore <tmoore@fievel.DaytonOH.NCR.COM>.
-#
-# @(#)Makefile.NCR.MP-RAS.3.x 8.7 (Berkeley) 8/7/97
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O2
-
-# 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= -DNCR_MP_RAS3
-
-# 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= -lsocket -lnsl -lresolv -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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.NEWS-OS.4.x b/src/Makefiles/Makefile.NEWS-OS.4.x
deleted file mode 100644
index 0a76a1f..0000000
--- a/src/Makefiles/Makefile.NEWS-OS.4.x
+++ /dev/null
@@ -1,120 +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.9 (Berkeley) 8/7/97
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# native compiler on RISC OS requires -Olimit to optimize properly
-#CC= cc -Olimit 1100
-
-# 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=
-
-# things to be made before compilation begins
-BEFORE= limits.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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
-
-limits.h:
- touch limits.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/src/Makefiles/Makefile.NEWS-OS.6.x b/src/Makefiles/Makefile.NEWS-OS.6.x
deleted file mode 100644
index 9f257af..0000000
--- a/src/Makefiles/Makefile.NEWS-OS.6.x
+++ /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 NEWS-OS 6.0.3
-#
-# @(#)Makefile.NEWS-OS.6.x 8.8 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.NeXT.2.x b/src/Makefiles/Makefile.NeXT.2.x
deleted file mode 100644
index 85c3e2e..0000000
--- a/src/Makefiles/Makefile.NeXT.2.x
+++ /dev/null
@@ -1,123 +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.2.x 8.13 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.NeXT.3.x b/src/Makefiles/Makefile.NeXT.3.x
deleted file mode 100644
index 3f976e8..0000000
--- a/src/Makefiles/Makefile.NeXT.3.x
+++ /dev/null
@@ -1,131 +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.NeXT.3.x 8.8 (Berkeley) 8/7/97
-#
-
-# 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
-ARCH= ${RC_CFLAGS}
-
-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
-# -DNETINFO -- include NETINFO 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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 ${BEFORE} ${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/src/Makefiles/Makefile.NetBSD b/src/Makefiles/Makefile.NetBSD
deleted file mode 100644
index 9635243..0000000
--- a/src/Makefiles/Makefile.NetBSD
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# NetBSD Makefile
-#
-# @(#)Makefile.NetBSD 8.7 (Berkeley) 8/7/97
-# @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
-
-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
-MAN= aliases.5 mailq.1 newaliases.1 sendmail.8
-#MAN1= mailq.0 newaliases.0
-#MAN5= aliases.0
-#MAN8= sendmail.0
-LINKS= /usr/sbin/sendmail /usr/bin/newaliases \
- /usr/sbin/sendmail /usr/bin/mailq \
- /usr/sbin/sendmail /usr/bin/hoststat \
- /usr/sbin/sendmail /usr/bin/purgestat
-INSTALL=install
-BINDIR= /usr/sbin
-BINOWN= root
-BINGRP= kmem
-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/src/Makefiles/Makefile.NonStop-UX b/src/Makefiles/Makefile.NonStop-UX
deleted file mode 100644
index 56f3f18..0000000
--- a/src/Makefiles/Makefile.NonStop-UX
+++ /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).
-#
-# 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.9 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-
-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/src/Makefiles/Makefile.OSF1 b/src/Makefiles/Makefile.OSF1
deleted file mode 100644
index 848d084..0000000
--- a/src/Makefiles/Makefile.OSF1
+++ /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 OSF/1 1.3
-#
-# @(#)Makefile.OSF1 8.12 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${BINDIR}/hoststat ${BINDIR}/purgestat
-INSTALL=installbsd
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.OpenBSD b/src/Makefiles/Makefile.OpenBSD
deleted file mode 100644
index 22b80da..0000000
--- a/src/Makefiles/Makefile.OpenBSD
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# OpenBSD Makefile
-#
-# @(#)Makefile.OpenBSD 8.2 (Berkeley) 8/7/97
-#
-
-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
-
-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
-MAN= aliases.5 mailq.1 newaliases.1 sendmail.8
-#MAN1= mailq.0 newaliases.0
-#MAN5= aliases.0
-#MAN8= sendmail.0
-LINKS= /usr/sbin/sendmail /usr/bin/newaliases \
- /usr/sbin/sendmail /usr/bin/mailq \
- /usr/sbin/sendmail /usr/bin/hoststat \
- /usr/sbin/sendmail /usr/bin/purgestat
-INSTALL=install
-BINDIR= /usr/sbin
-BINOWN= root
-BINGRP= kmem
-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/src/Makefiles/Makefile.PTX b/src/Makefiles/Makefile.PTX
deleted file mode 100644
index a833582..0000000
--- a/src/Makefiles/Makefile.PTX
+++ /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).
-#
-# For Sequent DYNIX/ptx.
-#
-# From Tim "Pinball Wizard" Wright <timw@sequent.com>.
-#
-# @(#)Makefile.PTX 8.12 (Berkeley) 8/7/97
-#
-
-# 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 -lelf -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 \
- safefile.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 \
- ${DESTDIR}/usr/bin/hoststat ${DESTDIR}/usr/bin/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.Paragon b/src/Makefiles/Makefile.Paragon
deleted file mode 100644
index 4eafb43..0000000
--- a/src/Makefiles/Makefile.Paragon
+++ /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 OSF/1 1.3
-#
-# @(#)Makefile.Paragon 8.9 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${BINDIR}/hoststat ${BINDIR}/purgestat
-INSTALL=installbsd
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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} ${STDIR}/sendmail.st
- chgrp ${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/src/Makefiles/Makefile.PowerUX b/src/Makefiles/Makefile.PowerUX
deleted file mode 100644
index 1ccb2d3..0000000
--- a/src/Makefiles/Makefile.PowerUX
+++ /dev/null
@@ -1,126 +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.PowerUX 8.3 (Berkeley) 8/7/97
-#
-# Harris Nighthawk 6000 series (nh6000) PowerUX Makefile
-# Bob Miorelli, Pratt & Whitney <miorelli@pweh.com>
-#
-
-# make sure the shell constructs below use the right shell
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-CC= cc
-DESTDIR=/etc/mail
-
-# 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
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -D__svr4__
-
-# 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= -Bstatic -ldb -lresolv -lsocket -lnsl -lelf -lgen
-
-# location of sendmail binary (usually /usr/sbin or /usr/lib)
-BINDIR= /usr/local/bin
-
-# location of sendmail.st file (usually /var/log or /usr/lib)
-STDIR= ${DESTDIR}
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}
-
-# 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 \
- safefile.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=/usr/ucb/install
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-NROFF= nroff -h
-MANDOC= -man
-
-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
- cp sendmail ${DESTDIR}
- chown ${BINOWN} ${DESTDIR}/sendmail
- chgrp ${BINGRP} ${DESTDIR}/sendmail
- chmod ${BINMODE} ${DESTDIR}/sendmail
-
- for i in ${LINKS}; do rm -f $$i; ln -s ${DESTDIR}/sendmail $$i; done
- cp /dev/null ${STDIR}/sendmail.st
- chown ${BINOWN} ${STDIR}/sendmail.st
- chgrp ${BINGRP} ${STDIR}/sendmail.st
- chmod 0644 ${STDIR}/sendmail.st
-
- cp sendmail.hf ${STDIR}/sendmail.hf
- chown ${BINOWN} ${STDIR}/sendmail.hf
- chgrp ${BINGRP} ${STDIR}/sendmail.hf
- chmod 0444 ${STDIR}/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/src/Makefiles/Makefile.RISCos b/src/Makefiles/Makefile.RISCos
deleted file mode 100644
index 5d803bb..0000000
--- a/src/Makefiles/Makefile.RISCos
+++ /dev/null
@@ -1,126 +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.15 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/bsd43/bin/install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-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
-
-#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/src/Makefiles/Makefile.RISCos.4_0 b/src/Makefiles/Makefile.RISCos.4_0
deleted file mode 100644
index d0b28b2..0000000
--- a/src/Makefiles/Makefile.RISCos.4_0
+++ /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).
-#
-# For Mips RISC/os 4.0, 4.01. Contributed by Paul DuBois
-# <dubois@primate.wisc.edu>, based on Makefile for RISC/os 4.50
-# by Harlan Stenn. I have also found it necessary to set TimeZoneSpec
-# in the *.mc file, or sendmail doesn't get the right offset from GMT.
-#
-# @(#)Makefile.RISCos.4_0 8.2 (Berkeley) 8/7/97
-#
-
-# 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 -DRISCOS_4_0
-
-# 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}/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= 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/etc/mipsinstall
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0
-
-all: ${ALL}
-
-sendmail: ${BEFORE} ${OBJS}
- ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS}
-
-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
-
-#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} -f 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 -f 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/src/Makefiles/Makefile.SCO b/src/Makefiles/Makefile.SCO
deleted file mode 100644
index f84fe2f..0000000
--- a/src/Makefiles/Makefile.SCO
+++ /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 SCO.
-#
-# @(#)Makefile.SCO 8.12 (Berkeley) 8/7/97
-#
-
-# 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 -lprot_s -lx -lc_s
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.SCO.4.2 b/src/Makefiles/Makefile.SCO.4.2
deleted file mode 100644
index 5a868e9..0000000
--- a/src/Makefiles/Makefile.SCO.4.2
+++ /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).
-#
-# Tested on SCO rel 4.2 by Marian Durkovic <marian@svf.stuba.sk>.
-#
-# @(#)Makefile.SCO.4.2 8.6 (Berkeley) 8/7/97
-#
-
-# 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 -lprot_s -lx -lc_s
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.SCO.5.x b/src/Makefiles/Makefile.SCO.5.x
deleted file mode 100644
index 8c19e3e..0000000
--- a/src/Makefiles/Makefile.SCO.5.x
+++ /dev/null
@@ -1,111 +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 OpenServer 5 by Keith Reynolds <keithr@sco.COM>.
-#
-# @(#)Makefile.SCO.5.x 8.6 (Berkeley) 8/7/97
-#
-
-# 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=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -lsocket -lndbm -lprot -lcurses -lm -lx
-
-# 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 ######################
-
-CC= cc -b elf
-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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.SINIX b/src/Makefiles/Makefile.SINIX
deleted file mode 100644
index 99e6ab8..0000000
--- a/src/Makefiles/Makefile.SINIX
+++ /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).
-#
-# Contributed by Gerald Rinske <Gerald.Rinske@mch.sni.de>.
-#
-# @(#)Makefile.SINIX 8.4 (Berkeley) 9/13/97
-#
-
-# make sure the shell constructs below use the right shell
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-CC= /usr/bin/cc
-#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
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -D__svr4__
-
-# 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= -ldb -lsocket -lnsl -lresolv -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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-
-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/src/Makefiles/Makefile.SMP_DC.OSx.NILE b/src/Makefiles/Makefile.SMP_DC.OSx.NILE
deleted file mode 100644
index d301bde..0000000
--- a/src/Makefiles/Makefile.SMP_DC.OSx.NILE
+++ /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).
-#
-# For Pyramid NILE running DC/OSx.
-#
-# Contributed by Earle F. Ake <akee@wpdis03.wpafb.af.mil>.
-#
-# @(#)Makefile.SMP_DC.OSx.NILE 8.3 (Berkeley) 3/28/97
-#
-
-# make sure the shell constructs below use the right shell
-SHELL= /bin/sh
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-CC= cc
-#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
-
-# environment definitions (e.g., -D_AIX3)
-ENVDEF= -D__svr4__ -DDCOSx
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= -ldb -lresolv -lsocket -lnsl -lelf
-
-# 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/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/share/lib/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 \
- safefile.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 \
- ${DESTDIR}/usr/bin/hoststat ${DESTDIR}/usr/bin/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=4511
-
-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/src/Makefiles/Makefile.SVR4 b/src/Makefiles/Makefile.SVR4
deleted file mode 100644
index bf485d1..0000000
--- a/src/Makefiles/Makefile.SVR4
+++ /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).
-#
-# 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.10 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-
-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/src/Makefiles/Makefile.SunOS b/src/Makefiles/Makefile.SunOS
deleted file mode 100644
index 01cff7f..0000000
--- a/src/Makefiles/Makefile.SunOS
+++ /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 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.12 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.SunOS.4.0 b/src/Makefiles/Makefile.SunOS.4.0
deleted file mode 100644
index f001e8d..0000000
--- a/src/Makefiles/Makefile.SunOS.4.0
+++ /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 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.14 (Berkeley) 8/7/97
-#
-
-# 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 limits.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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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 limits.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/src/Makefiles/Makefile.SunOS.5.1 b/src/Makefiles/Makefile.SunOS.5.1
deleted file mode 100644
index 57122af..0000000
--- a/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. It DOES NOT WORK on
-# versions of Solaris after 2.2.
-#
-# @(#)Makefile.SunOS.5.1 8.21 (Berkeley) 8/7/97
-#
-
-# 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)
-ENVDEF= -DSOLARIS=20100
-
-# 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}/etc/mail
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.SunOS.5.2 b/src/Makefiles/Makefile.SunOS.5.2
deleted file mode 100644
index 57122af..0000000
--- a/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. It DOES NOT WORK on
-# versions of Solaris after 2.2.
-#
-# @(#)Makefile.SunOS.5.1 8.21 (Berkeley) 8/7/97
-#
-
-# 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)
-ENVDEF= -DSOLARIS=20100
-
-# 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}/etc/mail
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.SunOS.5.3 b/src/Makefiles/Makefile.SunOS.5.3
deleted file mode 100644
index 6628c7f..0000000
--- a/src/Makefiles/Makefile.SunOS.5.3
+++ /dev/null
@@ -1,123 +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.21 (Berkeley) 8/7/97
-#
-
-# 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=20300
-
-# 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}/etc/mail
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/bin/hoststat ${DESTDIR}/usr/bin/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.SunOS.5.4 b/src/Makefiles/Makefile.SunOS.5.4
deleted file mode 100644
index 32c8558..0000000
--- a/src/Makefiles/Makefile.SunOS.5.4
+++ /dev/null
@@ -1,126 +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.23 (Berkeley) 8/7/97
-#
-
-# 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
-# -DLDAPMAP -- include LDAP support (requires Umich ldap & lber libraries)
-# -DSUNET_ID -- include Stanford LDAP tweaks
-# 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=20400
-
-# 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
-# add -lldap -llber -lkrb -ldes for LDAP support
-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}/etc/mail
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/bin/hoststat ${DESTDIR}/usr/bin/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.SunOS.5.5 b/src/Makefiles/Makefile.SunOS.5.5
deleted file mode 100644
index 9322440..0000000
--- a/src/Makefiles/Makefile.SunOS.5.5
+++ /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 signficant work on sendmail).
-#
-# This has been tested on Solaris 2.5.
-#
-# @(#)Makefile.SunOS.5.5 8.12 (Berkeley) 8/7/97
-#
-
-# 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=20500
-
-# 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
-# add -ldb if you add -DNEWDB above (in DBMDEF)
-LIBS= -lresolv -l44bsd -lsocket -lnsl -lkstat
-
-# 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=
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/bin/hoststat ${DESTDIR}/usr/bin/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.SunOS.5.6 b/src/Makefiles/Makefile.SunOS.5.6
deleted file mode 100644
index 872a207..0000000
--- a/src/Makefiles/Makefile.SunOS.5.6
+++ /dev/null
@@ -1,123 +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.6.
-#
-# @(#)Makefile.SunOS.5.6 8.4 (Berkeley) 8/7/97
-#
-
-# 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=20600
-
-# 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 -lkstat
-
-# 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=
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/bin/hoststat ${DESTDIR}/usr/bin/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.Titan b/src/Makefiles/Makefile.Titan
deleted file mode 100644
index e46307d..0000000
--- a/src/Makefiles/Makefile.Titan
+++ /dev/null
@@ -1,120 +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.10 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.ULTRIX b/src/Makefiles/Makefile.ULTRIX
deleted file mode 100644
index c44e75e..0000000
--- a/src/Makefiles/Makefile.ULTRIX
+++ /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 Ultrix 4.2A and 4.3A.
-#
-# @(#)Makefile.ULTRIX 8.15 (Berkeley) 8/7/97
-#
-
-# use O=-O (usual) or O=-g (debugging)
-O= -O
-
-# native compiler requires -Olimit to optimize properly
-CC= cc -Olimit 950
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.UMAX b/src/Makefiles/Makefile.UMAX
deleted file mode 100644
index b74b4ea..0000000
--- a/src/Makefiles/Makefile.UMAX
+++ /dev/null
@@ -1,120 +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.10 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.UNICOS b/src/Makefiles/Makefile.UNICOS
deleted file mode 100644
index f3b273c..0000000
--- a/src/Makefiles/Makefile.UNICOS
+++ /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).
-#
-# 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.8 (Berkeley) 8/7/97
-#
-
-# 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=
-
-# 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=
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.UNIX_SV.4.x.i386 b/src/Makefiles/Makefile.UNIX_SV.4.x.i386
deleted file mode 100644
index 9a0b50b..0000000
--- a/src/Makefiles/Makefile.UNIX_SV.4.x.i386
+++ /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).
-#
-# 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.9 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-
-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/src/Makefiles/Makefile.UX4800 b/src/Makefiles/Makefile.UX4800
deleted file mode 100644
index be1e748..0000000
--- a/src/Makefiles/Makefile.UX4800
+++ /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).
-#
-# This has been tested on NEC UX4800.
-# Contributed by Kazuhisa Shimizu <shimizu@lang.csd.nes.nec.co.jp>.
-#
-# @(#)Makefile.UX4800 8.6 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= root
-BINGRP= sys
-BINMODE=4555
-
-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/src/Makefiles/Makefile.UXPDS.V10 b/src/Makefiles/Makefile.UXPDS.V10
deleted file mode 100644
index b2cdf53..0000000
--- a/src/Makefiles/Makefile.UXPDS.V10
+++ /dev/null
@@ -1,142 +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.
-#
-# Additional changes for UXP/DS V20L10 (SVR4.2) from Fumio Moriya
-# and Toshiaki Nomura of the Fujitsu FreeSoftware Group
-# <dsfrsoft@oai6.yk.fujitsu.co.jp>.
-#
-# @(#)Makefile.UXPDS.V10 8.9 (Berkeley) 8/7/97
-#
-
-# make sure the shell constructs below use the right shell
-SHELL= /bin/sh
-
-CC= /usr/ccs/bin/cc
-
-# 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=10
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I/usr/include -I/usr/ucbinclude
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= /usr/ucblib/libdbm.a /usr/ucblib/libucb.a -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
-
-# location and mode for man pages
-MAN1= /usr/local/man/man1
-MAN4= /usr/local/man/man4
-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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-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= groff -Tascii
-
-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: ${MAN1} ${MAN4} 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
-
-${MAN1} ${MAN4}:
- mkdir -p $@
-
-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/src/Makefiles/Makefile.UXPDS.V20 b/src/Makefiles/Makefile.UXPDS.V20
deleted file mode 100644
index 51ce445..0000000
--- a/src/Makefiles/Makefile.UXPDS.V20
+++ /dev/null
@@ -1,148 +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.
-#
-# Additional changes for UXP/DS V20L10 (SVR4.2) from Fumio Moriya
-# and Toshiaki Nomura of the Fujitsu FreeSoftware Group
-# <dsfrsoft@oai6.yk.fujitsu.co.jp>.
-#
-# @(#)Makefile.UXPDS.V20 8.9 (Berkeley) 8/7/97
-#
-
-# make sure the shell constructs below use the right shell
-SHELL= /bin/sh
-
-CC= /usr/ccs/bin/cc
-
-# 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=20
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=
-
-# library directories
-LIBDIRS=
-
-# libraries required on your system
-LIBS= /usr/ucblib/libdbm.a -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
-
-# location and mode for man pages
-MAN1= /usr/local/man/man1
-MAN4= /usr/local/man/man4
-MANMODE=444
-
-# additional .o files needed
-OBJADD=
-
-# things to be made before compilation begins
-BEFORE= netinet/ip_var.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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-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}
-
-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
-
-NROFF= groff -Tascii
-
-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: ${MAN1} ${MAN4} 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
-
-${MAN1} ${MAN4}:
- mkdir -p $@
-
-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/src/Makefiles/Makefile.Utah b/src/Makefiles/Makefile.Utah
deleted file mode 100644
index f5e8965..0000000
--- a/src/Makefiles/Makefile.Utah
+++ /dev/null
@@ -1,43 +0,0 @@
-# @(#)Makefile.Utah 8.6 (Berkeley) 8/7/97
-
-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 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= ${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 \
- ${DESTDIR}/usr/sbin/sendmail ${DESTDIR}/usr/bin/hoststat \
- ${DESTDIR}/usr/sbin/sendmail ${DESTDIR}/usr/bin/purgestat
-INSTALL=install
-BINDIR= /usr/sbin
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.dgux b/src/Makefiles/Makefile.dgux
deleted file mode 100644
index 0ff26ff..0000000
--- a/src/Makefiles/Makefile.dgux
+++ /dev/null
@@ -1,109 +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.12 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= bin
-BINMODE=4555
-
-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/src/Makefiles/Makefile.dist b/src/Makefiles/Makefile.dist
deleted file mode 100644
index 44d9d9d..0000000
--- a/src/Makefiles/Makefile.dist
+++ /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.dist 8.20 (Berkeley) 8/7/97
-#
-
-# 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/sww/include
-
-# loader options
-LDOPTS=
-
-# 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 -ldbm -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/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/usr/share/misc
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=install
-BINOWN= root
-BINGRP= kmem
-BINMODE=4555
-
-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/src/Makefiles/Makefile.maxion b/src/Makefiles/Makefile.maxion
deleted file mode 100644
index 1047a66..0000000
--- a/src/Makefiles/Makefile.maxion
+++ /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).
-#
-# @(#)Makefile.maxion 8.5 (Berkeley) 8/7/97
-#
-# Concurrent Computer Corporation Maxion support contributed by
-# Donald R. Laster Jr. <laster@access.digex.net>.
-#
-CC=/usr/ucb/cc
-#
-# 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=-D__MAXION__
-
-# see also conf.h for additional compilation flags
-
-# include directories
-INCDIRS=-I ../
-
-# loader options
-LDOPTS=
-
-# library directories
-LIBDIRS=-L/usr/ucblib -L/usr/local/lib
-
-# libraries required on your system
-# delete -lresolv if you are not running BIND 4.9.x
-LIBS= -ldbm -lresolv -lgen -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/adm/log
-
-# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
-HFDIR= ${DESTDIR}/etc/ucbmail
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/ucb/hoststat ${DESTDIR}/usr/ucb/purgestat
-INSTALL=/usr/ucb/install
-BINOWN= smtp
-BINGRP= mail
-BINMODE=4555
-
-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/src/Makefiles/Makefile.uts.systemV b/src/Makefiles/Makefile.uts.systemV
deleted file mode 100644
index 503d3a7..0000000
--- a/src/Makefiles/Makefile.uts.systemV
+++ /dev/null
@@ -1,190 +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.7 (Berkeley) 8/7/97
-#
-
-# 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 \
- safefile.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 \
- ${DESTDIR}/usr/lib/hoststat ${DESTDIR}/usr/lib/purgestat
-BINOWN= root
-BINGRP= mail
-BINMODE=4555
-
-#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/src/READ_ME b/src/README
index 7eea267..7106e8c 100644
--- a/src/READ_ME
+++ b/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.211 (Berkeley) 2/2/1999
#
-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
@@ -165,17 +115,25 @@ HESIOD Support for Hesiod (from the DEC/Athena distribution). You
work. You may be able to get this to work with the MIT/Athena
version of Hesiod, but that's likely to be a lot of work.
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.
+ have to install the UMich or OpenLDAP ldap and lber
+ libraries to use this flag.
+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:
@@ -888,6 +844,12 @@ Digital UNIX (formerly DEC OSF/1)
This warning can be ignored.
+ Digital UNIX's linker checks /usr/ccs/lib/ before /usr/lib/.
+ If you have installed a new version of BIND in /usr/include
+ and /usr/lib, you will experience difficulties as Digital ships
+ libresolv.a in /usr/ccs/lib/ as well. Be sure to replace both
+ copies of libresolv.a.
+
IRIX
The header files on SGI IRIX are completely prototyped, and as
a result you can sometimes get some warning messages during
@@ -920,13 +882,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 +904,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 +928,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 +973,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 +994,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 +1010,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 +1044,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 +1062,34 @@ 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.
+
+ A number of problems have been reported regarding the Linux 2.2.0
+ kernel. So far, these problems have been tracked down to syslog()
+ and DNS resolution. We believe the problem is with the poll()
+ implementation in the Linux 2.2.0 kernel and poll()-aware versions
+ of glib (at least up to 2.0.111).
+
+AIX 4.2
+ The AIX m4 implements a different mechanism for ifdef which is
+ inconsistent with other versions of m4. Therefore, it will not
+ work properly with the sendmail Build architecture or m4
+ configuration method. To work around this problem, please use
+ GNU m4 from ftp://ftp.gnu.org/pub/gnu/.
AIX 3.x
This version of sendmail does not support MB, MG, and MR resource
@@ -1136,6 +1123,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 +1140,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 +1157,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 +1226,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 +1291,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 +1318,18 @@ 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.
+
+ The LDAP map supports both the UMich LDAP 3.2 and 3.3 libraries as
+ well as the OpenLDAP (http://www.openldap.org/) libraries.
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 +1340,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 +1365,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 +1402,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 +1444,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 +1461,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.211, last update 2/2/1999 15:28:18)
diff --git a/src/TRACEFLAGS b/src/TRACEFLAGS
index db461db..04b9b3c 100644
--- a/src/TRACEFLAGS
+++ b/src/TRACEFLAGS
@@ -1,7 +1,9 @@
+# @(#)TRACEFLAGS 8.21 (Berkeley) 4/27/1998
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/src/alias.c b/src/alias.c
index cebd805..a7149f2 100644
--- a/src/alias.c
+++ b/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.96 (Berkeley) 12/18/1998";
#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 == TrustedUid)))
{
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);
@@ -522,7 +510,9 @@ rebuildaliases(map, automatic)
username());
}
map->map_mflags |= MF_OPEN|MF_WRITABLE;
+ map->map_pid = getpid();
readaliases(map, af, !automatic, TRUE);
+ success = TRUE;
}
else
{
@@ -550,6 +540,7 @@ rebuildaliases(map, automatic)
#ifdef SIGTSTP
(void) setsignal(SIGTSTP, oldsigtstp);
#endif
+ return success;
}
/*
** READALIASES -- read and process the alias file.
@@ -607,6 +598,7 @@ readaliases(map, af, announcestats, logstats)
p--;
if (fgets(p, SPACELEFT(line, p), af) == NULL)
break;
+ LineNumber++;
p = strchr(p, '\n');
}
#endif
@@ -855,6 +847,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/src/aliases.0 b/src/aliases.0
index aa88a57..1163f42 100644
--- a/src/aliases.0
+++ b/src/aliases.0
@@ -45,4 +45,4 @@ BBUUGGSS
HHIISSTTOORRYY
The aalliiaasseess file format appeared in 4.0BSD.
-4th Berkeley Distribution December 11, 1993 1
+4th Berkeley Distribution May 19, 1998 1
diff --git a/src/aliases.5 b/src/aliases.5
index 3519467..bf45838 100644
--- a/src/aliases.5
+++ b/src/aliases.5
@@ -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) 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.
+.\" 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.
.\"
-.\" @(#)aliases.5 8.3 (Berkeley) 2/1/97
+.\" @(#)aliases.5 8.8 (Berkeley) 5/19/1998
.\"
-.Dd February 1, 1997
+.Dd May 19, 1998
.Dt ALIASES 5
.Os BSD 4
.Sh NAME
diff --git a/src/arpadate.c b/src/arpadate.c
index f289020..c02decd 100644
--- a/src/arpadate.c
+++ b/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.14 (Berkeley) 2/2/1999";
#endif /* not lint */
# include "sendmail.h"
@@ -95,7 +73,7 @@ arpadate(ud)
** to resolve the timezone.
*/
- (void) time(&t);
+ t = curtime();
if (ud == NULL)
ud = ctime(&t);
@@ -178,7 +156,12 @@ arpadate(ud)
{
extern char *tzname[];
- tz = tzname[lt->tm_isdst];
+ if (lt->tm_isdst > 0)
+ tz = tzname[1];
+ else if (lt->tm_isdst == 0)
+ tz = tzname[0];
+ else
+ tz = NULL;
}
#endif
#if TZ_TYPE == TZ_TIMEZONE
diff --git a/src/clock.c b/src/clock.c
index 6940b29..e6466e6 100644
--- a/src/clock.c
+++ b/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.35 (Berkeley) 2/2/1999";
#endif /* not lint */
# include "sendmail.h"
@@ -82,7 +60,7 @@ setevent(intvl, func, arg)
}
wasblocked = blocksignal(SIGALRM);
- (void) time(&now);
+ now = curtime();
/* search event queue for correct position */
for (evp = &EventQueue; (ev = *evp) != NULL; evp = &ev->ev_link)
@@ -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/src/collect.c b/src/collect.c
index 58f0dc7..a8916b1 100644
--- a/src/collect.c
+++ b/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.93 (Berkeley) 1/26/1999";
#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;
@@ -79,6 +57,7 @@ static EVENT *CollectTimeout;
#define MS_UFROM 0 /* reading Unix from line */
#define MS_HEADER 1 /* reading message header */
#define MS_BODY 2 /* reading message body */
+#define MS_DISCARD 3 /* discarding rest of message */
void
collect(fp, smtpmode, hdrp, e)
@@ -99,12 +78,12 @@ collect(fp, smtpmode, hdrp, e)
volatile int istate;
volatile int mstate;
u_char *volatile pbp;
+ int hdrslen = 0;
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 tferror __P((FILE *volatile, ENVELOPE *));
headeronly = hdrp != NULL;
@@ -123,7 +102,7 @@ collect(fp, smtpmode, hdrp, e)
{
syserr("Cannot create %s", dfname);
e->e_flags |= EF_NO_BODY_RETN;
- finis();
+ finis(TRUE, ExitStat);
}
if (fstat(fileno(tf), &stbuf) < 0)
e->e_dfino = -1;
@@ -285,12 +264,17 @@ collect(fp, smtpmode, hdrp, e)
bufferchar:
if (!headeronly)
e->e_msgsize++;
- if (mstate == MS_BODY)
+ switch (mstate)
{
+ case MS_BODY:
/* just put the character out */
if (MaxMessageSize <= 0 ||
e->e_msgsize <= MaxMessageSize)
putc(c, tf);
+
+ /* fall through */
+
+ case MS_DISCARD:
continue;
}
@@ -321,7 +305,23 @@ bufferchar:
#endif
}
else if (c != '\0')
+ {
*bp++ = c;
+ if (MaxHeadersLength > 0 &&
+ ++hdrslen > MaxHeadersLength)
+ {
+ sm_syslog(LOG_NOTICE, e->e_id,
+ "headers too large (%d max) from %s during message collect",
+ MaxHeadersLength,
+ CurHostName != NULL ? CurHostName : "localhost");
+ errno = 0;
+ e->e_flags |= EF_CLRQUEUE;
+ e->e_status = "5.6.0";
+ usrerr("552 Headers too large (%d max)",
+ MaxHeadersLength);
+ mstate = MS_DISCARD;
+ }
+ }
if (istate == IS_BOL)
break;
}
@@ -333,14 +333,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);
@@ -375,8 +373,12 @@ nextstate:
if (*--bp != '\n' || *--bp != '\r')
bp++;
*bp = '\0';
+
if (bitset(H_EOH, chompheader(buf, FALSE, hdrp, e)))
+ {
mstate = MS_BODY;
+ goto nextstate;
+ }
break;
case MS_BODY:
@@ -433,7 +435,7 @@ readerr:
{
tferror(tf, e);
flush_errors(TRUE);
- finis();
+ finis(TRUE, ExitStat);
}
/* An EOF when running SMTP is an error */
@@ -456,16 +458,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;
@@ -475,7 +477,7 @@ readerr:
/* and don't try to deliver the partial message either */
if (InChild)
ExitStat = EX_QUIT;
- finis();
+ finis(TRUE, ExitStat);
}
/*
@@ -490,11 +492,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 +525,6 @@ readerr:
/* no valid recipient headers */
register ADDRESS *q;
char *hdr = NULL;
- extern void addheader();
/* create an Apparently-To: field */
/* that or reject the message.... */
@@ -600,7 +597,7 @@ readerr:
{
/* we haven't acked receipt yet, so just chuck this */
syserr("Cannot reopen %s", dfname);
- finis();
+ finis(TRUE, ExitStat);
}
}
@@ -634,29 +631,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 +682,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 +720,7 @@ char *MonthList[] =
void
eatfrom(fm, e)
- char *fm;
+ char *volatile fm;
register ENVELOPE *e;
{
register char *p;
diff --git a/src/conf.c b/src/conf.c
index cd51efc..3cfa73b 100644
--- a/src/conf.c
+++ b/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.452 (Berkeley) 1/26/1999";
#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,12 @@ 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 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 +231,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();
+ }
+ TrustedUid = 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 +260,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
@@ -240,11 +284,15 @@ setdefaults(e)
ColonOkInAddr = TRUE;
DontLockReadFiles = TRUE;
DoubleBounceAddr = "postmaster";
+ MaxHeadersLength = MAXHDRSLEN;
snprintf(buf, sizeof buf, "%s%sdead.letter",
_PATH_VARTMP,
_PATH_VARTMP[sizeof _PATH_VARTMP - 2] == '/' ? "" : "/");
DeadLetterDrop = newstr(buf);
- setdefuser();
+#ifdef HESIOD_INIT
+ HesiodContext = NULL;
+#endif
+ ControlSocketName = NULL;
setupmaps();
setupmailers();
setupheaders();
@@ -265,6 +313,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 +325,6 @@ void
setupmailers()
{
char buf[100];
- extern void makemailer();
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];
@@ -778,6 +838,14 @@ switch_map_find(service, maptype, mapreturn)
*p++ = '\0';
if (buf[0] == '\0')
continue;
+ if (p == NULL)
+ {
+ sm_syslog(LOG_ERR, NOQID,
+ "Bad line on %.100s: %.100s",
+ ServiceSwitchFile,
+ buf);
+ continue;
+ }
while (isspace(*p))
p++;
if (*p == '\0')
@@ -830,38 +898,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 +1031,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 +1286,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 +1408,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 +1738,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 +1751,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 +1878,8 @@ getla()
#endif /* LA_TYPE == LA_DEVSHORT */
#if LA_TYPE == LA_ALPHAOSF
+struct rtentry;
+struct mbuf;
# include <sys/table.h>
int getla()
@@ -2065,7 +2039,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())
@@ -2081,7 +2055,7 @@ refuseconnections(port)
else if (conncnt++ > ConnRateThrottle && ConnRateThrottle > 0)
{
/* sleep to flatten out connection load */
- setproctitle("deferring connections on port %d: %d per second",
+ sm_setproctitle(TRUE, "deferring connections on port %d: %d per second",
port, ConnRateThrottle);
if (LogLevel >= 14)
sm_syslog(LOG_INFO, NOQID,
@@ -2093,7 +2067,7 @@ refuseconnections(port)
CurrentLA = getla();
if (CurrentLA >= refusela)
{
- setproctitle("rejecting connections on port %d: load average: %d",
+ sm_setproctitle(TRUE, "rejecting connections on port %d: load average: %d",
port, CurrentLA);
if (LogLevel >= 14)
sm_syslog(LOG_INFO, NOQID,
@@ -2104,7 +2078,7 @@ refuseconnections(port)
if (!enoughdiskspace(MinBlocksFree + 1))
{
- setproctitle("rejecting connections on port %d: min free: %d",
+ sm_setproctitle(TRUE, "rejecting connections on port %d: min free: %d",
port, MinBlocksFree);
if (LogLevel >= 14)
sm_syslog(LOG_INFO, NOQID,
@@ -2115,12 +2089,10 @@ refuseconnections(port)
if (MaxChildren > 0 && CurChildren >= MaxChildren)
{
- extern void proc_list_probe __P((void));
-
proc_list_probe();
if (CurChildren >= MaxChildren)
{
- setproctitle("rejecting connections on port %d: %d children, max %d",
+ sm_setproctitle(TRUE, "rejecting connections on port %d: %d children, max %d",
port, CurChildren, MaxChildren);
if (LogLevel >= 14)
sm_syslog(LOG_INFO, NOQID,
@@ -2204,12 +2176,12 @@ typedef unsigned int *pt_entry_t;
# define SPT_PADCHAR ' '
# endif
+#endif /* SPT_TYPE != SPT_NONE && SPT_TYPE != SPT_BUILTIN */
+
# ifndef SPT_BUFSIZE
# define SPT_BUFSIZE MAXLINE
# endif
-#endif /* SPT_TYPE != SPT_NONE && SPT_TYPE != SPT_BUILTIN */
-
/*
** Pointers for setproctitle.
** This allows "ps" listings to give more useful information.
@@ -2246,18 +2218,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
@@ -2349,6 +2326,44 @@ setproctitle(fmt, va_alist)
#endif /* SPT_TYPE != SPT_BUILTIN */
/*
+** SM_SETPROCTITLE -- set process task and set process title for ps
+**
+** Possibly set process status and call setproctitle() to
+** change the ps display.
+**
+** Parameters:
+** status -- whether or not to store as process status
+** fmt -- a printf style format string.
+** a, b, c -- possible parameters to fmt.
+**
+** Returns:
+** none.
+*/
+
+/*VARARGS2*/
+void
+# ifdef __STDC__
+sm_setproctitle(bool status, const char *fmt, ...)
+# else
+sm_setproctitle(status, fmt, va_alist)
+ bool status;
+ const char *fmt;
+ va_dcl
+#endif
+{
+ char buf[SPT_BUFSIZE];
+
+ VA_LOCAL_DECL
+ /* print the argument string */
+ VA_START(fmt);
+ (void) vsnprintf(buf, SPT_BUFSIZE, fmt, ap);
+ VA_END;
+
+ if (status)
+ proc_list_set(getpid(), buf);
+ setproctitle("%s", buf);
+}
+ /*
** WAITFOR -- wait for a particular process id.
**
** Parameters:
@@ -2720,6 +2735,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)
*/
@@ -2801,8 +2833,8 @@ dgux_inet_addr(host)
/*
-** this version hacked to add `atend' flag to allow state machine
-** to reset if invoked by the program to scan args for a 2nd time
+** this version hacked to add `atend' flag to allow state machine
+** to reset if invoked by the program to scan args for a 2nd time
*/
#if defined(LIBC_SCCS) && !defined(lint)
@@ -2918,333 +2950,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 +2969,9 @@ dopr_outch( c )
# if defined(_AIX3) || defined(_AIX4)
# include <userconf.h>
+# if _AIX4 >= 40200
+# include <userpw.h>
+# endif
# include <usersec.h>
# endif
@@ -3298,9 +3006,18 @@ char *DefaultUserShells[] =
"/bin/bsh", /* Bourne shell */
"/usr/bin/bsh",
#endif
-#ifdef __svr4__
+#if defined(__svr4__) || defined(__svr5__)
+ "/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 +3052,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 +3087,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 +3111,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 +3223,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 +3414,7 @@ lockfile(fd, filename, ext, type)
int type;
{
int i;
+ int save_errno;
# if !HASFLOCK
int action;
struct flock lfd;
@@ -3721,9 +3447,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 +3461,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 +3494,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 +3513,7 @@ lockfile(fd, filename, ext, type)
# endif
if (tTd(55, 60))
printf("FAIL\n");
+ errno = save_errno;
return FALSE;
}
/*
@@ -3858,7 +3583,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 +3600,7 @@ chownsafe(fd, safedir)
return safedir && errno == 0 && rval IS_SAFE_CHOWN;
# endif
#else
- return ChownAlwaysSafe;
+ return bitset(DBS_ASSUMESAFECHOWN, DontBlameSendmail);
#endif
}
/*
@@ -3935,7 +3660,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",
@@ -3984,9 +3709,63 @@ setvendor(vendor)
}
#endif
+#if defined(VENDOR_NAME) && defined(VENDOR_CODE)
+ if (strcasecmp(vendor, VENDOR_NAME) == 0)
+ {
+ VendorCode = VENDOR_CODE;
+ return TRUE;
+ }
+#endif
+
return FALSE;
}
/*
+** GETVENDOR -- return vendor name based on vendor code
+**
+** Parameters:
+** vendorcode -- numeric representation of vendor.
+**
+** Returns:
+** string containing vendor name.
+*/
+
+char *
+getvendor(vendorcode)
+ int vendorcode;
+{
+#if defined(VENDOR_NAME) && defined(VENDOR_CODE)
+ /*
+ ** Can't have the same switch case twice so need to
+ ** handle VENDOR_CODE outside of switch. It might
+ ** match one of the existing VENDOR_* codes.
+ */
+
+ if (vendorcode == VENDOR_CODE)
+ return VENDOR_NAME;
+#endif
+
+ switch (vendorcode)
+ {
+ case VENDOR_BERKELEY:
+ return "Berkeley";
+
+ case VENDOR_SUN:
+ return "Sun";
+
+ case VENDOR_HP:
+ return "HP";
+
+ case VENDOR_IBM:
+ return "IBM";
+
+ case VENDOR_SENDMAIL:
+ return "Sendmail";
+
+ default:
+ return "Unknown";
+ }
+}
+ /*
** VENDOR_PRE_DEFAULTS, VENDOR_POST_DEFAULTS -- set vendor-specific defaults
**
** Vendor_pre_defaults is called before reading the configuration
@@ -4026,6 +3805,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
@@ -4042,7 +3828,7 @@ vendor_daemon_setup(e)
if (getluid() != -1)
{
usrerr("Daemon cannot have LUID");
- exit(EX_USAGE);
+ finis(FALSE, EX_USAGE);
}
#endif /* SECUREWARE */
}
@@ -4087,8 +3873,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 +3886,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 +3959,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.
*
@@ -4463,11 +4271,88 @@ secureware_setup_secure(uid)
rc, uid);
break;
}
- exit(EX_NOPERM);
+ finis(FALSE, EX_NOPERM);
}
}
#endif /* SECUREWARE */
/*
+** ADD_LOCAL_HOST_NAMES -- Add a hostname to class 'w' based on IP address
+**
+** Add hostnames to class 'w' based on the IP address read from
+** the network interface.
+**
+** Parameters:
+** sa -- a pointer to a SOCKADDR containing the address
+**
+** Returns:
+** 0 if successful, -1 if host lookup fails.
+*/
+
+int
+add_hostnames(sa)
+ SOCKADDR *sa;
+{
+ struct hostent *hp;
+
+ /* lookup name with IP address */
+ switch (sa->sa.sa_family)
+ {
+ case AF_INET:
+ hp = sm_gethostbyaddr((char *) &sa->sin.sin_addr,
+ sizeof(sa->sin.sin_addr), sa->sa.sa_family);
+ break;
+
+ default:
+#if _FFR_LOG_UNSUPPORTED_FAMILIES
+ /* XXX: Give warning about unsupported family */
+ if (LogLevel > 3)
+ sm_syslog(LOG_WARNING, NOQID,
+ "Unsupported address family %d: %.100s",
+ sa->sa.sa_family, anynet_ntoa(sa));
+#endif
+ return -1;
+ }
+
+ if (hp == NULL)
+ {
+ int save_errno = errno;
+
+ if (LogLevel > 3)
+ sm_syslog(LOG_WARNING, NOQID,
+ "gethostbyaddr(%.100s) failed: %d\n",
+ anynet_ntoa(sa),
+#if NAMED_BIND
+ h_errno
+#else
+ -1
+#endif
+ );
+ errno = save_errno;
+ return -1;
+ }
+
+ /* save its cname */
+ if (!wordinclass((char *) hp->h_name, 'w'))
+ {
+ setclass('w', (char *) hp->h_name);
+ if (tTd(0, 4))
+ printf("\ta.k.a.: %s\n", hp->h_name);
+ }
+
+ /* save all it aliases name */
+ while (*hp->h_aliases)
+ {
+ if (!wordinclass(*hp->h_aliases, 'w'))
+ {
+ setclass('w', *hp->h_aliases);
+ if (tTd(0, 4))
+ printf("\ta.k.a.: %s\n", *hp->h_aliases);
+ }
+ hp->h_aliases++;
+ }
+ return 0;
+}
+ /*
** LOAD_IF_NAMES -- load interface-specific names into $=w
**
** Parameters:
@@ -4487,6 +4372,9 @@ struct mbuf;
# ifndef SUNOS403
# include <sys/time.h>
# endif
+# if _AIX4 >= 40300
+# undef __P
+# endif
# include <net/if.h>
#endif
@@ -4541,9 +4429,8 @@ load_if_names()
for (i = 0; i < ifc.ifc_len; )
{
struct ifreq *ifr = (struct ifreq *) &ifc.ifc_buf[i];
- struct sockaddr *sa = &ifr->ifr_addr;
+ SOCKADDR *sa = (SOCKADDR *) &ifr->ifr_addr;
struct in_addr ia;
- struct hostent *hp;
#ifdef SIOCGIFFLAGS
struct ifreq ifrf;
#endif
@@ -4551,14 +4438,14 @@ load_if_names()
extern char *inet_ntoa();
#ifdef BSD4_4_SOCKADDR
- if (sa->sa_len > sizeof ifr->ifr_addr)
- i += sizeof ifr->ifr_name + sa->sa_len;
+ if (sa->sa.sa_len > sizeof ifr->ifr_addr)
+ i += sizeof ifr->ifr_name + sa->sa.sa_len;
else
#endif
i += sizeof *ifr;
if (tTd(0, 20))
- printf("%s\n", anynet_ntoa((SOCKADDR *) sa));
+ printf("%s\n", anynet_ntoa(sa));
if (ifr->ifr_addr.sa_family != AF_INET)
continue;
@@ -4577,7 +4464,7 @@ load_if_names()
continue;
/* extract IP address from the list*/
- ia = (((struct sockaddr_in *) sa)->sin_addr);
+ ia = sa->sin.sin_addr;
if (ia.s_addr == INADDR_ANY || ia.s_addr == INADDR_NONE)
{
message("WARNING: interface %s is UP with %s address",
@@ -4600,41 +4487,7 @@ load_if_names()
if (bitset(IFF_LOOPBACK, IFRFREF.ifr_flags))
continue;
- /* lookup name with IP address */
- hp = sm_gethostbyaddr((char *) &ia, sizeof(ia), AF_INET);
- if (hp == NULL)
- {
- if (LogLevel > 3)
- sm_syslog(LOG_WARNING, NOQID,
- "gethostbyaddr(%.100s) failed: %d\n",
- inet_ntoa(ia),
-#if NAMED_BIND
- h_errno);
-#else
- -1);
-#endif
- continue;
- }
-
- /* save its cname */
- if (!wordinclass((char *) hp->h_name, 'w'))
- {
- setclass('w', (char *) hp->h_name);
- if (tTd(0, 4))
- printf("\ta.k.a.: %s\n", hp->h_name);
- }
-
- /* save all it aliases name */
- while (*hp->h_aliases)
- {
- if (!wordinclass(*hp->h_aliases, 'w'))
- {
- setclass('w', *hp->h_aliases);
- if (tTd(0, 4))
- printf("\ta.k.a.: %s\n", *hp->h_aliases);
- }
- hp->h_aliases++;
- }
+ (void) add_hostnames(sa);
}
free(ifc.ifc_buf);
close(s);
@@ -4696,7 +4549,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 *, va_list));
SyslogErrno = errno;
if (id == NULL)
@@ -4805,7 +4661,7 @@ bufalloc:
** syslog succeeds during interrupt handlers.
*/
-#ifdef __hpux
+#if defined(__hpux) && !defined(HPUX11)
# define MAXSYSLOGTRIES 100
# undef syslog
@@ -4879,15 +4735,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 +4762,7 @@ char *CompileOptions[] =
#if NAMED_BIND
"NAMED_BIND",
#endif
-#if NDBM
+#ifdef NDBM
"NDBM",
#endif
#if NETINET
@@ -4924,13 +4783,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 +4804,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 +4816,7 @@ char *CompileOptions[] =
#if XDEBUG
"XDEBUG",
#endif
-#if XLA
+#ifdef XLA
"XLA",
#endif
NULL
diff --git a/src/conf.h b/src/conf.h
index de37c14..6097c27 100644
--- a/src/conf.h
+++ b/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.385 (Berkeley) 1/28/1999
*/
/*
@@ -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,17 @@ 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 */
+# if _FFR_MAX_MIME_HEADER_LENGTH
+# define MAXMACNAMELEN 25 /* max macro name length */
+# else
+# define MAXMACNAMELEN 20 /* max macro name length */
+# endif
+# ifndef MAXHDRSLEN
+# define MAXHDRSLEN (32 * 1024) /* max size of message headers */
+# endif
/**********************************************************************
** Compilation options.
@@ -167,11 +159,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 +179,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 +208,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 +225,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
@@ -347,25 +352,31 @@ typedef int pid_t;
# define GIDSET_T gid_t
# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */
# define SFS_BAVAIL f_bfree /* alternate field name */
+# define SYSLOG_BUFSIZE 512
# 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
# else
# 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 +438,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 +468,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 +625,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
@@ -657,6 +682,41 @@ typedef int pid_t;
#endif
+/*
+** Apple Rhapsody
+** Contributed by Wilfredo Sanchez <wsanchez@apple.com>
+*/
+
+#ifdef __APPLE__
+# define HASFCHMOD 1 /* has fchmod(2) syscall */
+# define HASFLOCK 1 /* has flock(2) syscall */
+# define HASUNAME 1 /* has uname(2) syscall */
+# define HASUNSETENV 1
+# define HASSETSID 1 /* has the setsid(2) POSIX syscall */
+# define HASINITGROUPS 1
+# define HASSETVBUF 1
+# define HASSETREUID 1
+# define USESETEUID 1 /* has useable seteuid(2) call */
+# define HASLSTAT 1
+# define HASSETRLIMIT 1
+# define HASWAITPID 1
+# define HASSTRERROR 1 /* has strerror(3) */
+# define HASSNPRINTF 1 /* has snprintf(3) and vsnprintf(3) */
+# define USESTRERROR 1 /* has strerror(3) */
+# define HASGETDTABLESIZE 1
+# define HASGETUSERSHELL 1
+# define NEEDGETOPT 1 /* need a replacement for getopt(3) */
+# define BSD4_4_SOCKADDR /* has sa_len */
+# define NETLINK 1 /* supports AF_LINK */
+# define HAS_ST_GEN 1 /* has st_gen field in stat struct */
+# define GIDSET_T gid_t
+# define LA_TYPE LA_SUBR /* use getloadavg(3) */
+# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */
+# define SPT_TYPE SPT_PSSTRINGS
+# define SPT_PADCHAR '\0' /* pad process title with nulls */
+# define ERRLIST_PREDEFINED /* don't declare sys_errlist */
+#endif
+
/*
** 4.4 BSD
@@ -675,6 +735,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 +769,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 +839,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
@@ -758,12 +857,15 @@ typedef int pid_t;
# endif
# if defined(__FreeBSD__)
# undef SPT_TYPE
-# if __FreeBSD__ == 2
-# include <osreldate.h> /* and this works */
-# if __FreeBSD_version >= 199512 /* 2.2-current right now */
+# if __FreeBSD__ >= 2
+# include <osreldate.h>
+# if __FreeBSD_version >= 199512 /* 2.2-current when it appeared */
# include <libutil.h>
# define SPT_TYPE SPT_BUILTIN
# endif
+# if __FreeBSD_version >= 222000 /* 2.2.2-release and later */
+# define HASSETUSERCONTEXT 1 /* BSDI-style login classes */
+# endif
# endif
# ifndef SPT_TYPE
# define SPT_TYPE SPT_REUSEARGV
@@ -905,7 +1007,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 +1019,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 */
@@ -1157,9 +1262,9 @@ extern void *malloc();
** Florian La Roche <rzsfl@rz.uni-sb.de>
** Karl London <karl@borg.demon.co.uk>
**
-** Last compiled against: [06/10/96 @ 09:21:40 PM (Monday)]
-** sendmail 8.8-a4 named bind-4.9.4-T4B db-1.85
-** gcc 2.7.2 libc-5.3.12 linux 2.0.0
+** Last compiled against: [07/21/98 @ 11:47:34 AM (Tuesday)]
+** sendmail 8.9.1 bind-8.1.2 db-2.4.14
+** gcc-2.8.1 glibc-2.0.94 linux-2.1.109
**
** NOTE: Override HASFLOCK as you will but, as of 1.99.6, mixed-style
** file locking is no longer allowed. In particular, make sure
@@ -1169,6 +1274,7 @@ extern void *malloc();
#ifdef __linux__
# define BSD 1 /* include BSD defines */
+# define USESETEUID 0 /* Have it due to POSIX, but doesn't work */
# define NEEDGETOPT 1 /* need a replacement for getopt(3) */
# define HASUNAME 1 /* use System V uname(2) system call */
# define HASUNSETENV 1 /* has unsetenv(3) call */
@@ -1193,10 +1299,12 @@ extern void *malloc();
# endif
# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() impl */
# define SPT_PADCHAR '\0' /* pad process title with nulls */
+# ifndef TZ_TYPE
+# define TZ_TYPE TZ_NONE /* no standard for Linux */
+# endif
# ifndef _PATH_SENDMAILPID
# define _PATH_SENDMAILPID "/var/run/sendmail.pid"
# endif
-# define TZ_TYPE TZ_TNAME
# include <sys/sysmacros.h>
# undef atol /* wounded in <stdlib.h> */
#endif
@@ -1425,6 +1533,37 @@ typedef int pid_t;
# endif
#endif
+/*
+** System V Rel 5.x (a.k.a Unixware7 w/o BSD-Compatiblity Libs ie. native)
+**
+** Contributed by Paul Gampe <paulg@apnic.net>
+*/
+
+#ifdef __svr5__
+# include <sys/mkdev.h>
+# define __svr4__
+# define SYS5SIGNALS 1
+# define HASSETSID 1
+# define HASSETREUID 1
+# define HASWAITPID 1
+# define HASGETDTABLESIZE 1
+# define GIDSET_T gid_t
+# define SOCKADDR_LEN_T size_t
+# define SOCKOPT_LEN_T size_t
+# ifndef _PATH_UNIX
+# define _PATH_UNIX "/stand/unix"
+# endif
+# define SPT_PADCHAR '\0' /* pad process title with nulls */
+# define SYSLOG_BUFSIZE 1024 /* unsure */
+# ifndef _PATH_VENDOR_CF
+# define _PATH_VENDOR_CF "/etc/sendmail.cf"
+# endif
+# ifndef _PATH_SENDMAILPID
+# define _PATH_SENDMAILPID "/etc/sendmail.pid"
+# endif
+#endif
+
+/* ###################################################################### */
/*
** UnixWare 2.x
@@ -1457,7 +1596,9 @@ typedef int pid_t;
# define LA_TYPE LA_ZERO
# undef WIFEXITED
# undef WEXITSTATUS
-# define _PATH_UNIX "/unix"
+# ifndef _PATH_UNIX
+# define _PATH_UNIX "/unix"
+# endif
# ifndef _PATH_VENDOR_CF
# define _PATH_VENDOR_CF "/usr/ucblib/sendmail.cf"
# endif
@@ -1557,11 +1698,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 +1921,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 +1994,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 +2103,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 +2132,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 +2188,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 +2237,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 +2330,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 +2417,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 +2462,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/src/control.c b/src/control.c
new file mode 100644
index 0000000..415818c
--- /dev/null
+++ b/src/control.c
@@ -0,0 +1,356 @@
+/*
+ * 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.
+ *
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)control.c 8.18 (Berkeley) 1/17/1999";
+#endif /* not lint */
+
+#include "sendmail.h"
+
+int ControlSocket = -1;
+
+ /*
+** OPENCONTROLSOCKET -- create/open the daemon control named socket
+**
+** Creates and opens a named socket for external control over
+** the sendmail daemon.
+**
+** Parameters:
+** none.
+**
+** Returns:
+** 0 if successful, -1 otherwise
+*/
+
+int
+opencontrolsocket()
+{
+#ifdef NETUNIX
+# if _FFR_CONTROL_SOCKET
+ int rval;
+ int sff = SFF_SAFEDIRPATH|SFF_OPENASROOT|SFF_NOLINK|SFF_CREAT|SFF_MUSTOWN;
+ struct sockaddr_un controladdr;
+
+ if (ControlSocketName == NULL)
+ return 0;
+
+ if (strlen(ControlSocketName) >= sizeof controladdr.sun_path)
+ {
+ errno = ENAMETOOLONG;
+ return -1;
+ }
+
+ rval = safefile(ControlSocketName, RunAsUid, RunAsGid, RunAsUserName,
+ sff, S_IRUSR|S_IWUSR, NULL);
+
+ /* if not safe, don't create */
+ if (rval != 0)
+ {
+ errno = rval;
+ return -1;
+ }
+
+ ControlSocket = socket(AF_UNIX, SOCK_STREAM, 0);
+ if (ControlSocket < 0)
+ return -1;
+
+ unlink(ControlSocketName);
+ bzero(&controladdr, sizeof controladdr);
+ controladdr.sun_family = AF_UNIX;
+ strcpy(controladdr.sun_path, ControlSocketName);
+
+ if (bind(ControlSocket, (struct sockaddr *) &controladdr,
+ sizeof controladdr) < 0)
+ {
+ int save_errno = errno;
+
+ clrcontrol();
+ errno = save_errno;
+ return -1;
+ }
+
+# if _FFR_TRUSTED_USER
+ if (geteuid() == 0 && TrustedUid != 0)
+ {
+ if (chown(ControlSocketName, TrustedUid, -1) < 0)
+ {
+ int save_errno = errno;
+
+ sm_syslog(LOG_ALERT, NOQID,
+ "ownership change on %s failed: %s",
+ ControlSocketName, errstring(save_errno));
+ message("050 ownership change on %s failed: %s",
+ ControlSocketName, errstring(save_errno));
+ closecontrolsocket(TRUE);
+ errno = save_errno;
+ return -1;
+ }
+ }
+# endif
+
+ if (chmod(ControlSocketName, S_IRUSR|S_IWUSR) < 0)
+ {
+ int save_errno = errno;
+
+ closecontrolsocket(TRUE);
+ errno = save_errno;
+ return -1;
+ }
+
+ if (listen(ControlSocket, 8) < 0)
+ {
+ int save_errno = errno;
+
+ closecontrolsocket(TRUE);
+ errno = save_errno;
+ return -1;
+ }
+# endif
+#endif
+ return 0;
+}
+ /*
+** CLOSECONTROLSOCKET -- close the daemon control named socket
+**
+** Close a named socket.
+**
+** Parameters:
+** fullclose -- if set, close the socket and remove it;
+** otherwise, just remove it
+**
+** Returns:
+** none.
+*/
+
+void
+closecontrolsocket(fullclose)
+ bool fullclose;
+{
+#ifdef NETUNIX
+# if _FFR_CONTROL_SOCKET
+ int sff = SFF_SAFEDIRPATH|SFF_OPENASROOT|SFF_NOLINK|SFF_CREAT|SFF_MUSTOWN;
+
+ if (ControlSocket >= 0)
+ {
+ int rval;
+
+ if (fullclose)
+ {
+ (void) close(ControlSocket);
+ ControlSocket = -1;
+ }
+
+ rval = safefile(ControlSocketName, RunAsUid, RunAsGid, RunAsUserName,
+ sff, S_IRUSR|S_IWUSR, NULL);
+
+ /* if not safe, don't unlink */
+ if (rval != 0)
+ return;
+
+ if (unlink(ControlSocketName) < 0)
+ {
+ sm_syslog(LOG_WARNING, NOQID,
+ "Could not remove control socket: %s",
+ errstring(errno));
+ return;
+ }
+ }
+# endif
+#endif
+ return;
+}
+ /*
+** CLRCONTROL -- reset the control connection
+**
+** Parameters:
+** none.
+**
+** Returns:
+** none.
+**
+** Side Effects:
+** releases any resources used by the control interface.
+*/
+
+void
+clrcontrol()
+{
+#ifdef NETUNIX
+# if _FFR_CONTROL_SOCKET
+ if (ControlSocket >= 0)
+ (void) close(ControlSocket);
+ ControlSocket = -1;
+# endif
+#endif
+}
+
+#ifndef NOT_SENDMAIL
+
+ /*
+** CONTROL_COMMAND -- read and process command from named socket
+**
+** Read and process the command from the opened socket.
+** Return the results down the same socket.
+**
+** Parameters:
+** sock -- the opened socket from getrequests()
+** e -- the current envelope
+**
+** Returns:
+** none.
+*/
+
+struct cmd
+{
+ char *cmdname; /* command name */
+ int cmdcode; /* internal code, see below */
+};
+
+/* values for cmdcode */
+# define CMDERROR 0 /* bad command */
+# define CMDRESTART 1 /* restart daemon */
+# define CMDSHUTDOWN 2 /* end daemon */
+# define CMDHELP 3 /* help */
+# define CMDSTATUS 4 /* daemon status */
+
+static struct cmd CmdTab[] =
+{
+ { "help", CMDHELP },
+ { "restart", CMDRESTART },
+ { "shutdown", CMDSHUTDOWN },
+ { "status", CMDSTATUS },
+ { NULL, CMDERROR }
+};
+
+void
+control_command(sock, e)
+ int sock;
+ ENVELOPE *e;
+{
+ FILE *s;
+ FILE *traffic;
+ FILE *oldout;
+ char *cmd;
+ char *p;
+ struct cmd *c;
+ char cmdbuf[MAXLINE];
+ char inp[MAXLINE];
+ extern char **SaveArgv;
+ extern void help __P((char *));
+
+ sm_setproctitle(FALSE, "control cmd read");
+
+ s = fdopen(sock, "r+");
+ if (s == NULL)
+ {
+ int save_errno = errno;
+
+ close(sock);
+ errno = save_errno;
+ return;
+ }
+ setbuf(s, NULL);
+
+ if (fgets(inp, sizeof inp, s) == NULL)
+ {
+ fclose(s);
+ return;
+ }
+ (void) fflush(s);
+
+ /* clean up end of line */
+ fixcrlf(inp, TRUE);
+
+ sm_setproctitle(FALSE, "control: %s", inp);
+
+ /* break off command */
+ for (p = inp; isascii(*p) && isspace(*p); p++)
+ continue;
+ cmd = cmdbuf;
+ while (*p != '\0' &&
+ !(isascii(*p) && isspace(*p)) &&
+ cmd < &cmdbuf[sizeof cmdbuf - 2])
+ *cmd++ = *p++;
+ *cmd = '\0';
+
+ /* throw away leading whitespace */
+ while (isascii(*p) && isspace(*p))
+ p++;
+
+ /* decode command */
+ for (c = CmdTab; c->cmdname != NULL; c++)
+ {
+ if (!strcasecmp(c->cmdname, cmdbuf))
+ break;
+ }
+
+ switch (c->cmdcode)
+ {
+ case CMDHELP: /* get help */
+ traffic = TrafficLogFile;
+ TrafficLogFile = NULL;
+ oldout = OutChannel;
+ OutChannel = s;
+ help("control");
+ TrafficLogFile = traffic;
+ OutChannel = oldout;
+ break;
+
+ case CMDRESTART: /* restart the daemon */
+ if (SaveArgv[0][0] != '/')
+ {
+ fprintf(s, "ERROR: could not restart: need full path\r\n");
+ break;
+ }
+ if (LogLevel > 3)
+ sm_syslog(LOG_INFO, NOQID,
+ "restarting %s on due to control command",
+ SaveArgv[0]);
+ closecontrolsocket(FALSE);
+ if (drop_privileges(TRUE) != EX_OK)
+ {
+ if (LogLevel > 0)
+ sm_syslog(LOG_ALERT, NOQID,
+ "could not set[ug]id(%d, %d): %m",
+ RunAsUid, RunAsGid);
+
+ fprintf(s, "ERROR: could not set[ug]id(%d, %d): %s, exiting...\r\n",
+ (int)RunAsUid, (int)RunAsGid, errstring(errno));
+ finis(FALSE, EX_OSERR);
+ }
+ fprintf(s, "OK\r\n");
+ clrcontrol();
+ (void) fcntl(sock, F_SETFD, 1);
+ execve(SaveArgv[0], (ARGV_T) SaveArgv, (ARGV_T) ExternalEnviron);
+ if (LogLevel > 0)
+ sm_syslog(LOG_ALERT, NOQID, "could not exec %s: %m",
+ SaveArgv[0]);
+ fprintf(s, "ERROR: could not exec %s: %s, exiting...\r\n",
+ SaveArgv[0], errstring(errno));
+ finis(FALSE, EX_OSFILE);
+ break;
+
+ case CMDSHUTDOWN: /* kill the daemon */
+ fprintf(s, "OK\r\n");
+ finis(FALSE, EX_OK);
+ break;
+
+ case CMDSTATUS: /* daemon status */
+ proc_list_probe();
+ fprintf(s, "%d/%d\r\n", CurChildren, MaxChildren);
+ proc_list_display(s);
+ break;
+
+ case CMDERROR: /* unknown command */
+ fprintf(s, "Bad command (%s)\r\n", cmdbuf);
+ break;
+ }
+ fclose(s);
+}
+#endif
diff --git a/src/convtime.c b/src/convtime.c
index 5ca1b39..ab8591d 100644
--- a/src/convtime.c
+++ b/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/1998";
#endif /* not lint */
# include "sendmail.h"
diff --git a/src/daemon.c b/src/daemon.c
index e62aaf1..ae6b004 100644
--- a/src/daemon.c
+++ b/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.236 (Berkeley) 1/25/1999 (with daemon mode)";
#else
-static char sccsid[] = "@(#)daemon.c 8.195 (Berkeley) 10/23/97 (without daemon mode)";
+static char sccsid[] = "@(#)daemon.c 8.236 (Berkeley) 1/25/1999 (without daemon mode)";
#endif
#endif /* not lint */
@@ -125,15 +103,22 @@ getrequests(e)
ENVELOPE *e;
{
int t;
- bool refusingconnections = TRUE;
+ time_t refuse_connections_until = 0;
+ bool firsttime = TRUE;
FILE *pidf;
+ int sff;
int socksize;
u_short port;
#if XDEBUG
bool j_has_dot;
#endif
- extern void reapchild();
+ char status[MAXLINE];
+ extern void reapchild __P((int));
+#ifdef NETUNIX
+ extern int ControlSocket;
+#endif
extern int opendaemonsocket __P((bool));
+ extern int opencontrolsocket __P((void));
/*
** Set up the address for the mailer.
@@ -191,11 +176,18 @@ getrequests(e)
/* get a socket for the SMTP connection */
socksize = opendaemonsocket(TRUE);
+ if (opencontrolsocket() < 0)
+ sm_syslog(LOG_WARNING, NOQID,
+ "daemon could not open control socket %s: %s",
+ ControlSocketName, errstring(errno));
+
(void) setsignal(SIGCHLD, reapchild);
/* write the pid to the log file for posterity */
- pidf = safefopen(PidFile, O_WRONLY|O_TRUNC, 0644,
- SFF_NOLINK|SFF_ROOTOK|SFF_REGONLY|SFF_CREAT);
+ sff = SFF_NOLINK|SFF_ROOTOK|SFF_REGONLY|SFF_CREAT;
+ if (TrustedUid != 0 && RealUid == TrustedUid)
+ sff |= SFF_OPENASROOT;
+ pidf = safefopen(PidFile, O_WRONLY|O_TRUNC, 0644, sff);
if (pidf == NULL)
{
sm_syslog(LOG_ERR, NOQID, "unable to write %s", PidFile);
@@ -223,6 +215,9 @@ getrequests(e)
}
#endif
+ /* Add parent process as first item */
+ proc_list_add(getpid(), "Sendmail daemon");
+
if (tTd(15, 1))
printf("getrequests: %d\n", DaemonSocket);
@@ -230,30 +225,34 @@ getrequests(e)
{
register pid_t pid;
auto SOCKADDR_LEN_T lotherend;
+ bool timedout = FALSE;
+ bool control = FALSE;
int savederrno;
int pipefd[2];
- extern bool refuseconnections();
+ extern bool refuseconnections __P((int));
/* see if we are rejecting connections */
(void) blocksignal(SIGALRM);
- if (refuseconnections(ntohs(port)))
+ if (curtime() >= refuse_connections_until)
{
- if (DaemonSocket >= 0)
+ if (refuseconnections(ntohs(port)))
{
- /* close socket so peer will fail quickly */
- (void) close(DaemonSocket);
- DaemonSocket = -1;
- }
- refusingconnections = TRUE;
- sleep(15);
- continue;
- }
+ if (DaemonSocket >= 0)
+ {
+ /* close socket so peer fails quickly */
+ (void) close(DaemonSocket);
+ DaemonSocket = -1;
+ }
- /* arrange to (re)open the socket if necessary */
- if (refusingconnections)
- {
- (void) opendaemonsocket(FALSE);
- refusingconnections = FALSE;
+ /* refuse connections for next 15 seconds */
+ refuse_connections_until = curtime() + 15;
+ }
+ else if (DaemonSocket < 0 || firsttime)
+ {
+ /* arrange to (re)open the socket if needed */
+ (void) opendaemonsocket(FALSE);
+ firsttime = FALSE;
+ }
}
#if XDEBUG
@@ -280,9 +279,6 @@ getrequests(e)
}
#endif
- /* wait for a connection */
- setproctitle("accepting connections on port %d",
- ntohs(port));
#if 0
/*
** Andrew Sun <asun@ieps-sun.ml.com> claims that this will
@@ -290,34 +286,97 @@ getrequests(e)
** so is it worth doing this?
*/
- if (SetNonBlocking(DaemonSocket, FALSE) < 0)
+ if (DaemonSocket >= 0 &&
+ SetNonBlocking(DaemonSocket, FALSE) < 0)
log an error here;
#endif
(void) releasesignal(SIGALRM);
for (;;)
{
+ int highest = -1;
fd_set readfds;
struct timeval timeout;
FD_ZERO(&readfds);
- FD_SET(DaemonSocket, &readfds);
- timeout.tv_sec = 60;
+
+ /* wait for a connection */
+ if (DaemonSocket >= 0)
+ {
+ sm_setproctitle(TRUE,
+ "accepting connections on port %d",
+ ntohs(port));
+ if (DaemonSocket > highest)
+ highest = DaemonSocket;
+ FD_SET(DaemonSocket, &readfds);
+ }
+#ifdef NETUNIX
+ if (ControlSocket >= 0)
+ {
+ if (ControlSocket > highest)
+ highest = ControlSocket;
+ FD_SET(ControlSocket, &readfds);
+ }
+#endif
+ if (DaemonSocket >= 0)
+ timeout.tv_sec = 60;
+ else
+ timeout.tv_sec = 5;
timeout.tv_usec = 0;
- t = select(DaemonSocket + 1, FDSET_CAST &readfds,
- NULL, NULL, &timeout);
+ t = select(highest + 1, FDSET_CAST &readfds,
+ NULL, NULL, &timeout);
+
if (DoQueueRun)
(void) runqueue(TRUE, FALSE);
- if (t <= 0 || !FD_ISSET(DaemonSocket, &readfds))
- continue;
+ if (t <= 0)
+ {
+ timedout = TRUE;
+ break;
+ }
+ control = FALSE;
errno = 0;
- lotherend = socksize;
- t = accept(DaemonSocket,
- (struct sockaddr *)&RealHostAddr, &lotherend);
+ if (DaemonSocket >= 0 &&
+ FD_ISSET(DaemonSocket, &readfds))
+ {
+ lotherend = socksize;
+ t = accept(DaemonSocket,
+ (struct sockaddr *)&RealHostAddr,
+ &lotherend);
+ }
+#ifdef NETUNIX
+ else if (ControlSocket >= 0 &&
+ FD_ISSET(ControlSocket, &readfds))
+ {
+ struct sockaddr_un sa_un;
+
+ lotherend = sizeof sa_un;
+ t = accept(ControlSocket,
+ (struct sockaddr *)&sa_un,
+ &lotherend);
+ control = TRUE;
+ }
+#endif
if (t >= 0 || errno != EINTR)
break;
}
+ if (timedout)
+ {
+ timedout = FALSE;
+ continue;
+ }
+ if (control)
+ {
+ if (t >= 0)
+ {
+ extern void control_command __P((int, ENVELOPE *));
+
+ control_command(t, e);
+ }
+ else
+ syserr("getrequests: control accept");
+ continue;
+ }
savederrno = errno;
(void) blocksignal(SIGALRM);
if (t < 0)
@@ -328,8 +387,6 @@ getrequests(e)
/* arrange to re-open the socket next time around */
(void) close(DaemonSocket);
DaemonSocket = -1;
- refusingconnections = TRUE;
- sleep(5);
continue;
}
@@ -382,12 +439,16 @@ getrequests(e)
(void) setsignal(SIGCHLD, SIG_DFL);
(void) setsignal(SIGHUP, intsig);
(void) close(DaemonSocket);
+ clrcontrol();
proc_list_clear();
+ /* Add parent process as first child item */
+ proc_list_add(getpid(), "daemon child");
+
/* don't schedule queue runs if we are told to ETRN */
QueueIntvl = 0;
- setproctitle("startup with %s",
+ sm_setproctitle(TRUE, "startup with %s",
anynet_ntoa(&RealHostAddr));
if (pipefd[0] != -1)
@@ -417,36 +478,34 @@ getrequests(e)
if (strlen(p) > (SIZE_T) MAXNAME)
p[MAXNAME] = '\0';
RealHostName = newstr(p);
- setproctitle("startup with %s", p);
+ sm_setproctitle(TRUE, "startup with %s", p);
if ((inchannel = fdopen(t, "r")) == NULL ||
(t = dup(t)) < 0 ||
(outchannel = fdopen(t, "w")) == NULL)
{
syserr("cannot open SMTP server channel, fd=%d", t);
- exit(0);
+ finis(FALSE, EX_OK);
}
InChannel = inchannel;
OutChannel = outchannel;
DisConnected = FALSE;
- /* open maps for check_relay ruleset */
- initmaps(FALSE, e);
-
#ifdef XLA
if (!xla_host_ok(RealHostName))
{
message("421 Too many SMTP sessions for this host");
- exit(0);
+ finis(FALSE, EX_OK);
}
#endif
-
break;
}
/* parent -- keep track of children */
- proc_list_add(pid);
+ snprintf(status, sizeof status, "SMTP server child for %s",
+ anynet_ntoa(&RealHostAddr));
+ proc_list_add(pid, status);
(void) releasesignal(SIGCHLD);
/* close the read end of the synchronization pipe */
@@ -574,7 +633,7 @@ opendaemonsocket(firsttime)
return socksize;
} while (ntries++ < MAXOPENTRIES && transienterror(saveerrno));
syserr("!opendaemonsocket: server SMTP socket wedged: exiting");
- finis();
+ /*NOTREACHED*/
return -1; /* avoid compiler warning on IRIX */
}
/*
@@ -814,7 +873,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 +969,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 +1106,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 +1135,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 +1306,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 +1323,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 +1333,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))
@@ -1273,19 +1361,18 @@ getauthinfo(fd)
/* translate that to a host name */
RealHostName = newstr(hostnamebyanyaddr(&RealHostAddr));
if (strlen(RealHostName) > MAXNAME)
- RealHostName[MAXNAME - 1] = '\0';
+ RealHostName[MAXNAME] = '\0';
}
/* cross check RealHostName with forward DNS lookup */
- if (anynet_ntoa(&RealHostAddr)[0] == '[')
+ if (anynet_ntoa(&RealHostAddr)[0] == '[' ||
+ RealHostName[0] == '[')
{
- /* address is not a socket */
- may_be_forged = FALSE;
- }
- else if (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 +1380,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 +1494,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 +1644,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 +1889,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 +1903,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 +1950,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 +1978,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 +1997,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 +2134,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/src/deliver.c b/src/deliver.c
index 9575515..ed03328 100644
--- a/src/deliver.c
+++ b/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.367 (Berkeley) 1/18/1999";
#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));
/*
@@ -367,7 +360,7 @@ sendall(e, mode)
if (mode != SM_VERIFY && bitset(EF_HAS_DF, e->e_flags))
dup_queue_file(e, ee, 'd');
openxscript(ee);
- if (LogLevel > 4)
+ if (mode != SM_VERIFY && LogLevel > 4)
sm_syslog(LOG_INFO, ee->e_id,
"clone %s, owner=%s",
e->e_id, owner);
@@ -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,8 +547,12 @@ sendall(e, mode)
/* prevent parent from waiting if there was an error */
if (pid < 0)
{
+# if HASFLOCK
e->e_flags |= EF_INQUEUE;
- finis();
+# else
+ e->e_id = NULL;
+# endif /* HASFLOCK */
+ finis(TRUE, ExitStat);
}
/* be sure to give error messages in child */
@@ -543,6 +570,15 @@ sendall(e, mode)
mci_flush(FALSE, NULL);
+ /*
+ ** Since the delivery may happen in a child and the parent
+ ** does not wait, the parent may close the maps thereby
+ ** removing any shared memory used by the map. Therefore,
+ ** open a copy of the maps for the delivery process.
+ */
+
+ initmaps(FALSE, e);
+
# if HASFLOCK
break;
# else
@@ -551,10 +587,15 @@ 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();
+ finis(TRUE, ExitStat);
# endif /* !HASFLOCK */
}
@@ -572,13 +613,13 @@ sendall(e, mode)
Verbose = oldverbose;
if (mode == SM_FORK)
- finis();
+ finis(TRUE, ExitStat);
}
void
sendenvelope(e, mode)
register ENVELOPE *e;
- char mode;
+ int mode;
{
register ADDRESS *q;
bool didany;
@@ -830,10 +871,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 +886,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 +920,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 +951,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 +1082,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);
@@ -1043,8 +1100,9 @@ deliver(e, firstto)
e->e_from.q_paddr, to->q_paddr, e);
if (rcode == EX_OK)
{
- /* do in-code checking */
- rcode = checkcompat(to, e);
+ /* do in-code checking if not discarding */
+ if (!bitset(EF_DISCARD, e->e_flags))
+ rcode = checkcompat(to, e);
}
if (rcode != EX_OK)
{
@@ -1052,6 +1110,22 @@ deliver(e, firstto)
giveresponse(rcode, m, NULL, ctladdr, xstart, e);
continue;
}
+ if (bitset(EF_DISCARD, e->e_flags))
+ {
+ if (tTd(10, 5))
+ {
+ printf("deliver: discarding recipient ");
+ printaddr(to, FALSE);
+ }
+
+ /*
+ ** Remove discard bit to prevent discard of
+ ** future recipients
+ */
+ e->e_flags &= ~EF_DISCARD;
+
+ continue;
+ }
/*
** Strip quote bits from names if the mailer is dumb
@@ -1090,13 +1164,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 +1194,7 @@ deliver(e, firstto)
}
}
to->q_statdate = curtime();
+ markstats(e, to, FALSE);
continue;
}
@@ -1216,7 +1304,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 +1381,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 *));
@@ -1348,7 +1435,7 @@ tryhost:
}
/* try the connection */
- setproctitle("%s %s: %s", e->e_id, hostbuf, "user open");
+ sm_setproctitle(TRUE, "%s %s: %s", e->e_id, hostbuf, "user open");
if (port == 0)
message("Connecting to %s via %s...",
hostbuf, m->m_name);
@@ -1406,6 +1493,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 +1535,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 +1547,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 +1566,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 +1583,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 +1610,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 +1685,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 +1734,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 +1776,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 +1803,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 +1824,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 +1834,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 +1866,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 +1939,7 @@ tryhost:
}
#endif
+do_transfer:
/* clear out per-message flags from connection structure */
mci->mci_flags &= ~(MCIF_CVT7TO8|MCIF_CVT8TO7);
@@ -1857,8 +2001,9 @@ tryhost:
** Format and send message.
*/
+ mci->mci_contentlen = 0;
putfromline(mci, e);
- (*e->e_puthdr)(mci, e->e_header, e);
+ (*e->e_puthdr)(mci, e->e_header, e, M87F_OUTER);
(*e->e_putbody)(mci, e, NULL);
/* get the exit status */
@@ -1870,7 +2015,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 +2096,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,14 +2113,16 @@ 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)
+ if (strlen(to->q_paddr) + strlen(tobuf) + 2 > sizeof tobuf)
{
syserr("LMTP tobuf overflow");
}
@@ -1998,7 +2143,6 @@ tryhost:
}
}
else
-# endif
#endif
{
/* mark bad addresses */
@@ -2034,7 +2178,6 @@ tryhost:
}
#if SMTP
-# if _FFR_LMTP
if (bitnset(M_LMTP, m->m_flags))
{
/*
@@ -2049,13 +2192,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 +2218,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 +2276,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 +2482,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 +2528,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 +2679,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 +2796,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 +2839,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;
@@ -2708,7 +2853,7 @@ putfromline(mci, e)
char hname[MAXNAME];
/*
- ** If we can construct a UUCP path, do so
+ ** If we can construct a UUCP path, do so
*/
at = strrchr(buf, '@');
@@ -2763,6 +2908,7 @@ putbody(mci, e, separator)
char *separator;
{
char buf[MAXLINE];
+ char *boundaries[MAXMIMENESTING + 1];
/*
** Output the body of the message
@@ -2804,8 +2950,6 @@ putbody(mci, e, separator)
#if MIME8TO7
if (bitset(MCIF_CVT8TO7, mci->mci_flags))
{
- char *boundaries[MAXMIMENESTING + 1];
-
/*
** Do 8 to 7 bit MIME conversion.
*/
@@ -2824,6 +2968,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
@@ -2832,6 +2977,13 @@ putbody(mci, e, separator)
mime7to8(mci, e->e_header, e);
}
# endif
+ else if (MaxMimeHeaderLength > 0 || MaxMimeFieldLength > 0)
+ {
+ /* Use mime8to7 to check multipart for MIME header overflows */
+ boundaries[0] = NULL;
+ mci->mci_flags |= MCIF_INHEADER;
+ mime8to7(mci, e->e_header, e, boundaries, M87F_OUTER|M87F_NO8TO7);
+ }
else
#endif
{
@@ -2843,9 +2995,9 @@ putbody(mci, e, separator)
int padc;
char *buflim;
int pos = 0;
+ size_t eol_len;
char peekbuf[10];
- /* we can pass it through unmodified */
if (bitset(MCIF_INHEADER, mci->mci_flags))
{
putline("", mci);
@@ -2857,6 +3009,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 +3078,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 +3115,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 +3148,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 +3166,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 +3175,7 @@ putch:
if (TrafficLogFile != NULL)
putc(c, TrafficLogFile);
putc(c, mci->mci_out);
+ mci->mci_contentlen++;
pos++;
ostate = OS_INLINE;
}
@@ -3029,7 +3192,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 +3203,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 +3243,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 +3258,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 +3272,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 +3281,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 +3295,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
@@ -3136,6 +3323,7 @@ mailfile(filename, ctladdr, sfflags, e)
/* child -- actually write to file */
struct stat stb;
MCI mcibuf;
+ int err;
volatile int oflags = O_WRONLY|O_APPEND;
if (e->e_lockfp != NULL)
@@ -3159,7 +3347,11 @@ mailfile(filename, ctladdr, sfflags, e)
ev = NULL;
#ifdef HASLSTAT
- if (lstat(filename, &stb) < 0)
+ if (bitset(DBS_FILEDELIVERYTOSYMLINK, DontBlameSendmail))
+ err = stat(filename, &stb);
+ else
+ err = lstat(filename, &stb);
+ if (err < 0)
#else
if (stat(filename, &stb) < 0)
#endif
@@ -3168,7 +3360,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 +3394,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 +3412,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 +3424,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 +3447,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 +3487,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,13 +3538,38 @@ 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_puthdr)(&mcibuf, e->e_header, e, M87F_OUTER);
(*e->e_putbody)(&mcibuf, e, NULL);
putline("\n", &mcibuf);
if (fflush(f) < 0 || ferror(f))
@@ -3330,11 +3596,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/src/domain.c b/src/domain.c
index 2031726..ec79be8 100644
--- a/src/domain.c
+++ b/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.81 (Berkeley) 1/21/1999 (with name server)";
#else
-static char sccsid[] = "@(#)domain.c 8.68 (Berkeley) 8/2/97 (without name server)";
+static char sccsid[] = "@(#)domain.c 8.81 (Berkeley) 1/21/1999 (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;
@@ -466,19 +446,50 @@ bestmx_map_lookup(map, name, av, statp)
int *statp;
{
int nmx;
- auto int rcode;
int saveopts = _res.options;
+ int i, len = 0;
+ char *p;
char *mxhosts[MAXMXHOSTS + 1];
+ char buf[PSBUFSIZE / 2];
_res.options &= ~(RES_DNSRCH|RES_DEFNAMES);
- nmx = getmxrr(name, mxhosts, FALSE, &rcode);
+ nmx = getmxrr(name, mxhosts, FALSE, statp);
_res.options = saveopts;
if (nmx <= 0)
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 +546,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);
@@ -651,7 +662,7 @@ cnameloop:
qtype = T_A;
continue;
}
- else if (qtype == T_A && !gotmx && trymx)
+ else if (qtype == T_A && !gotmx && (trymx || **dp == '\0'))
{
qtype = T_MX;
continue;
@@ -812,7 +823,7 @@ cnameloop:
if (qtype == T_ANY)
qtype = T_A;
- else if (qtype == T_A && !gotmx && trymx)
+ else if (qtype == T_A && !gotmx && (trymx || **dp == '\0'))
qtype = T_MX;
else
{
diff --git a/src/envelope.c b/src/envelope.c
index 3e0fc20..2cc90d6 100644
--- a/src/envelope.c
+++ b/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.122 (Berkeley) 1/25/1999";
#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)
@@ -821,7 +800,7 @@ setsender(from, e, delimptr, delimchar, internal)
if (FullName != NULL && !internal)
define('x', FullName, e);
}
- else if (!internal && OpMode != MD_DAEMON)
+ else if (!internal && OpMode != MD_DAEMON && OpMode != MD_SMTP)
{
if (e->e_from.q_home == NULL)
{
@@ -847,8 +826,8 @@ setsender(from, e, delimptr, delimchar, internal)
if (LogLevel > 2)
sm_syslog(LOG_NOTICE, e->e_id,
"cannot prescan from (%s)",
- shortenstring(from, 203));
- finis();
+ shortenstring(from, MAXSHORTSTR));
+ finis(TRUE, ExitStat);
}
(void) rewrite(pvp, 3, 0, e);
(void) rewrite(pvp, 1, 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/src/err.c b/src/err.c
index f08d960..1a875a2 100644
--- a/src/err.c
+++ b/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/1998";
#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/src/headers.c b/src/headers.c
index 857e9c3..6c43dcb 100644
--- a/src/headers.c
+++ b/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.136 (Berkeley) 1/26/1999";
#endif /* not lint */
# include <errno.h>
@@ -99,6 +77,7 @@ chompheader(line, def, hdrp, e)
bool headeronly;
STAB *s;
struct hdrinfo *hi;
+ bool nullheader = FALSE;
BITMAP mopts;
if (tTd(31, 6))
@@ -145,17 +124,22 @@ chompheader(line, def, hdrp, e)
return 0;
}
*fvalue = '\0';
- fvalue = p;
/* strip field value on front */
- if (*fvalue == ' ')
- fvalue++;
+ if (*p == ' ')
+ p++;
+ fvalue = p;
+
+ /* if the field is null, go ahead and use the default */
+ while (isascii(*p) && isspace(*p))
+ p++;
+ if (*p == '\0')
+ nullheader = TRUE;
/* security scan: long field names are end-of-header */
if (strlen(fname) > 100)
return H_EOH;
-#if _FFR_HEADER_RSCHECK
/* check to see if it represents a ruleset call */
if (def)
{
@@ -177,7 +161,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 +189,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;
/*
@@ -260,6 +243,11 @@ chompheader(line, def, hdrp, e)
bitset(H_DEFAULT, h->h_flags) &&
!bitset(H_FORCE, h->h_flags))
{
+ if (nullheader)
+ {
+ /* user-supplied value was null */
+ return 0;
+ }
h->h_value = NULL;
if (!cond)
{
@@ -278,6 +266,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 +455,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 +500,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,15 +524,17 @@ 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);
#if 0
/*
- ** Change functionality so a fatal error on an
- ** address doesn't affect the entire envelope.
+ ** Change functionality so a fatal error on an
+ ** address doesn't affect the entire envelope.
*/
/* delete fatal errors generated by this address */
@@ -1152,6 +1161,7 @@ crackaddr(addr)
** mci -- the connection information.
** h -- the header to put.
** e -- envelope to use.
+** flags -- MIME conversion flags.
**
** Returns:
** none.
@@ -1168,10 +1178,11 @@ crackaddr(addr)
#endif
void
-putheader(mci, hdr, e)
+putheader(mci, hdr, e, flags)
register MCI *mci;
HDR *hdr;
register ENVELOPE *e;
+ int flags;
{
register HDR *h;
char buf[MAX(MAXLINE,BUFSIZ)];
@@ -1181,11 +1192,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))
{
@@ -1193,9 +1212,69 @@ putheader(mci, hdr, e)
xputs(p);
}
- /* suppress Content-Transfer-Encoding: if we are MIMEing */
+#if _FFR_MAX_MIME_HEADER_LENGTH
+ /* heuristic shortening of MIME fields to avoid MUA overflows */
+ if (MaxMimeFieldLength > 0 &&
+ wordinclass(h->h_field,
+ macid("{checkMIMEFieldHeaders}", NULL)))
+ {
+ extern bool fix_mime_header __P((char *));
+
+ if (fix_mime_header(h->h_value))
+ {
+ sm_syslog(LOG_ALERT, e->e_id,
+ "Truncated MIME %s header due to field size (possible attack)",
+ h->h_field);
+ if (tTd(34, 11))
+ printf(" truncated MIME %s header due to field size (possible attack)\n",
+ h->h_field);
+ }
+ }
+
+ if (MaxMimeHeaderLength > 0 &&
+ wordinclass(h->h_field,
+ macid("{checkMIMETextHeaders}", NULL)))
+ {
+ if (strlen(h->h_value) > MaxMimeHeaderLength)
+ {
+ h->h_value[MaxMimeHeaderLength - 1] = '\0';
+ sm_syslog(LOG_ALERT, e->e_id,
+ "Truncated long MIME %s header (possible attack)",
+ h->h_field);
+ if (tTd(34, 11))
+ printf(" truncated long MIME %s header (possible attack)\n",
+ h->h_field);
+ }
+ }
+
+ if (MaxMimeHeaderLength > 0 &&
+ wordinclass(h->h_field,
+ macid("{checkMIMEHeaders}", NULL)))
+ {
+ extern bool shorten_rfc822_string __P((char *, int));
+
+ if (shorten_rfc822_string(h->h_value, MaxMimeHeaderLength))
+ {
+ sm_syslog(LOG_ALERT, e->e_id,
+ "Truncated long MIME %s header (possible attack)",
+ h->h_field);
+ if (tTd(34, 11))
+ printf(" truncated long MIME %s header (possible attack)\n",
+ h->h_field);
+ }
+ }
+#endif
+
+ /*
+ ** Suppress Content-Transfer-Encoding: if we are MIMEing
+ ** and we are potentially converting from 8 bit to 7 bit
+ ** MIME. If converting, add a new CTE header in
+ ** mime8to7().
+ */
if (bitset(H_CTE, h->h_flags) &&
- bitset(MCIF_CVT8TO7|MCIF_CVT7TO8|MCIF_INMIME, mci->mci_flags))
+ bitset(MCIF_CVT8TO7|MCIF_CVT7TO8|MCIF_INMIME,
+ mci->mci_flags) &&
+ !bitset(M87F_NO8TO7, flags))
{
if (tTd(34, 11))
printf(" (skipped (content-transfer-encoding))\n");
@@ -1483,7 +1562,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);
@@ -1563,3 +1642,69 @@ copyheader(header)
return ret;
}
+ /*
+** FIX_MIME_HEADER -- possibly truncate/rebalance parameters in a MIME header
+**
+** Run through all of the parameters of a MIME header and
+** possibly truncate and rebalance the parameter according
+** to MaxMimeFieldLength.
+**
+** Parameters:
+** string -- the full header
+**
+** Returns:
+** TRUE if the header was modified, FALSE otherwise
+**
+** Side Effects:
+** string modified in place
+*/
+
+bool
+fix_mime_header(string)
+ char *string;
+{
+ bool modified = FALSE;
+ char *begin = string;
+ char *end;
+ extern char *find_character __P((char *, char));
+ extern bool shorten_rfc822_string __P((char *, int));
+
+ if (string == NULL || *string == '\0')
+ return FALSE;
+
+ /* Split on each ';' */
+ while ((end = find_character(begin, ';')) != NULL)
+ {
+ char save = *end;
+ char *bp;
+
+ *end = '\0';
+
+ /* Shorten individual parameter */
+ if (shorten_rfc822_string(begin, MaxMimeFieldLength))
+ modified = TRUE;
+
+ /* Collapse the possibly shortened string with rest */
+ bp = begin + strlen(begin);
+ if (bp != end)
+ {
+ char *ep = end;
+
+ *end = save;
+ end = bp;
+
+ /* copy character by character due to overlap */
+ while (*ep != '\0')
+ *bp++ = *ep++;
+ *bp = '\0';
+ }
+ else
+ *end = save;
+ if (*end == '\0')
+ break;
+
+ /* Move past ';' */
+ begin = end + 1;
+ }
+ return modified;
+}
diff --git a/src/ldap_map.h b/src/ldap_map.h
index dd85da3..7d40329 100644
--- a/src/ldap_map.h
+++ b/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.12 (Berkeley) 2/2/1999
*/
#ifndef _LDAP_MAP_H
@@ -52,11 +61,31 @@ typedef struct ldap_map_struct LDAP_MAP_STRUCT;
#define DEFAULT_LDAP_MAP_DEREF LDAP_DEREF_NEVER
#define DEFAULT_LDAP_MAP_SIZELIMIT 0
#define DEFAULT_LDAP_MAP_ATTRSONLY 0
-#define LDAP_MAP_MAX_FILTER 256
+#define LDAP_MAP_MAX_FILTER 1024
#ifdef LDAP_REFERRALS
# define DEFAULT_LDAP_MAP_LDAP_OPTIONS LDAP_OPT_REFERRALS
#else /* LDAP_REFERRALS */
# define DEFAULT_LDAP_MAP_LDAP_OPTIONS 0
#endif /* LDAP_REFERRALS */
+/*
+** ldap_init(3) is broken in Umich 3.x and OpenLDAP 1.0/1.1.
+** Use the lack of LDAP_OPT_SIZELIMIT to detect old API implementations
+** and assume (falsely) that all old API implementations are broken.
+** (OpenLDAP 1.2 and later have a working ldap_init(), add -DUSE_LDAP_INIT)
+*/
+
+#if defined(LDAP_OPT_SIZELIMIT) && !defined(USE_LDAP_INIT)
+# define USE_LDAP_INIT 1
+#endif
+
+/*
+** LDAP_OPT_SIZELIMIT is not defined under Umich 3.x nor OpenLDAP 1.x,
+** hence ldap_set_option() must not exist.
+*/
+
+#if defined(LDAP_OPT_SIZELIMIT) && !defined(USE_LDAP_SET_OPTION)
+# define USE_LDAP_SET_OPTION 1
+#endif
+
#endif /* _LDAP_MAP_H */
diff --git a/src/macro.c b/src/macro.c
index 0f31d11..d45a0c7 100644
--- a/src/macro.c
+++ b/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.26 (Berkeley) 11/8/1998";
#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.
@@ -353,7 +333,7 @@ macid(p, ep)
{
int mid;
register char *bp;
- char mbuf[21];
+ char mbuf[MAXMACNAMELEN + 1];
if (tTd(35, 14))
{
@@ -381,7 +361,7 @@ macid(p, ep)
return *p;
}
bp = mbuf;
- while (*++p != '\0' && *p != '}' && bp < &mbuf[sizeof mbuf])
+ while (*++p != '\0' && *p != '}' && bp < &mbuf[sizeof mbuf - 1])
{
if (isascii(*p) && (isalnum(*p) || *p == '_'))
*bp++ = *p;
diff --git a/src/mailq.0 b/src/mailq.0
index f1a996f..0f6c376 100644
--- a/src/mailq.0
+++ b/src/mailq.0
@@ -38,4 +38,4 @@ SSEEEE AALLSSOO
HHIISSTTOORRYY
The mmaaiillqq command appeared in 4.0BSD.
-4th Berkeley Distribution February 22, 1994 1
+4th Berkeley Distribution May 19, 1998 1
diff --git a/src/mailq.1 b/src/mailq.1
index b489f31..8b6e63a 100644
--- a/src/mailq.1
+++ b/src/mailq.1
@@ -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) 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.
+.\" 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.
.\"
-.\" @(#)mailq.1 8.5 (Berkeley) 2/1/97
+.\" @(#)mailq.1 8.10 (Berkeley) 5/19/1998
.\"
-.Dd February 1, 1997
+.Dd May 19, 1998
.Dt MAILQ 1
.Os BSD 4
.Sh NAME
diff --git a/src/mailstats.h b/src/mailstats.h
index 0164d91..86390b3 100644
--- a/src/mailstats.h
+++ b/src/mailstats.h
@@ -1,49 +1,34 @@
/*
- * 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.
*
- * @(#)mailstats.h 8.1 (Berkeley) 6/7/93
+ * @(#)mailstats.h 8.8 (Berkeley) 5/19/1998
*/
+#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/src/main.c b/src/main.c
index c496adb..cea9d15 100644
--- a/src/main.c
+++ b/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.322 (Berkeley) 12/18/1998";
#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,22 +111,25 @@ 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 SIGFUNC_DECL quiesce __P((int));
extern void initmacros __P((ENVELOPE *));
extern void init_md __P((int, char **));
extern int getdtsize __P((void));
@@ -159,6 +144,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 +238,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 +302,36 @@ 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);
+ finis(FALSE, 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 +412,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 +526,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,8 +543,12 @@ 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.
+ ** Crack argv.
*/
av = argv;
@@ -690,15 +714,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:
@@ -798,8 +834,7 @@ main(argc, argv, envp)
# endif
default:
- ExitStat = EX_USAGE;
- finis();
+ finis(TRUE, EX_USAGE);
break;
}
}
@@ -850,7 +885,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,16 +969,20 @@ 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 &&
+ RealUid != TrustedUid)
{
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);
+ finis(FALSE, EX_USAGE);
}
if (MeToo)
@@ -954,8 +993,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 +1032,7 @@ main(argc, argv, envp)
case MD_INITALIAS:
Verbose = 2;
CurEnv->e_errormode = EM_PRINT;
+ HoldErrs = FALSE;
/* fall through... */
case MD_PRINT:
@@ -997,9 +1047,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 +1084,24 @@ main(argc, argv, envp)
setoption('d', "", TRUE, FALSE, CurEnv);
}
+#ifdef VENDOR_CODE
+ /* check for vendor mismatch */
+ if (VendorCode != VENDOR_CODE)
+ {
+ extern char *getvendor __P((int));
+
+ message("Warning: .cf file vendor code mismatch: sendmail expects vendor %s, .cf file vendor is %s",
+ getvendor(VENDOR_CODE), getvendor(VendorCode));
+ }
+#endif
+
+ /* 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;
@@ -1120,6 +1211,22 @@ main(argc, argv, envp)
setclass('b', "application/octet-stream");
#endif
+#if _FFR_MAX_MIME_HEADER_LENGTH
+ /* MIME headers which have fields to check for overflow */
+ setclass(macid("{checkMIMEFieldHeaders}", NULL), "content-disposition");
+ setclass(macid("{checkMIMEFieldHeaders}", NULL), "content-type");
+
+ /* MIME headers to check for length overflow */
+ setclass(macid("{checkMIMETextHeaders}", NULL), "content-description");
+
+ /* MIME headers to check for overflow and rebalance */
+ setclass(macid("{checkMIMEHeaders}", NULL), "content-disposition");
+ setclass(macid("{checkMIMEHeaders}", NULL), "content-id");
+ setclass(macid("{checkMIMEHeaders}", NULL), "content-transfer-encoding");
+ setclass(macid("{checkMIMEHeaders}", NULL), "content-type");
+ setclass(macid("{checkMIMEHeaders}", NULL), "mime-version");
+#endif
+
/* operate in queue directory */
if (QueueDir == NULL)
{
@@ -1162,18 +1269,14 @@ main(argc, argv, envp)
{
/* nope, really a botch */
usrerr("You do not have permission to process the queue");
- exit (EX_NOPERM);
+ finis(FALSE, EX_NOPERM);
}
}
# endif /* QUEUE */
/* if we've had errors so far, exit now */
if (ExitStat != EX_OK && OpMode != MD_TEST)
- {
- endpwent();
- setuid(RealUid);
- exit(ExitStat);
- }
+ finis(FALSE, ExitStat);
#if XDEBUG
checkfd012("before main() initmaps");
@@ -1189,47 +1292,44 @@ main(argc, argv, envp)
/* print the queue */
#if QUEUE
dropenvelope(CurEnv, TRUE);
+ signal(SIGPIPE, quiesce);
printqueue();
- endpwent();
- setuid(RealUid);
- exit(EX_OK);
+ finis(FALSE, EX_OK);
#else /* QUEUE */
usrerr("No queue to print");
- finis();
+ finis(FALSE, ExitStat);
#endif /* QUEUE */
+ break;
case MD_HOSTSTAT:
+ signal(SIGPIPE, quiesce);
mci_traverse_persistent(mci_print_persistent, NULL);
- exit(EX_OK);
+ finis(FALSE, EX_OK);
break;
case MD_PURGESTAT:
mci_traverse_persistent(mci_purge_persistent, NULL);
- exit(EX_OK);
+ finis(FALSE, EX_OK);
break;
case MD_INITALIAS:
- /* initialize alias database */
+ /* initialize maps */
initmaps(TRUE, CurEnv);
- endpwent();
- setuid(RealUid);
- exit(ExitStat);
+ finis(FALSE, ExitStat);
+ break;
case MD_SMTP:
- nullserver = FALSE;
- /* fall through... */
-
case MD_DAEMON:
/* reset DSN parameters */
DefaultNotify = QPINGONFAILURE|QPINGONDELAY;
CurEnv->e_envid = NULL;
CurEnv->e_flags &= ~(EF_RET_PARAM|EF_NO_BODY_RETN);
- /* don't open alias database -- done in srvrsmtp */
+ /* don't open maps for daemon -- done below in child */
break;
default:
- /* open the alias database */
+ /* open the maps */
initmaps(FALSE, CurEnv);
break;
}
@@ -1279,15 +1379,15 @@ 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)
- finis();
+ finis(TRUE, ExitStat);
p = strchr(buf, '\n');
if (p != NULL)
*p = '\0';
- if (!Verbose)
+ if (Verbose < 2)
printf("> %s\n", buf);
testmodeline(buf, CurEnv);
}
@@ -1301,7 +1401,7 @@ main(argc, argv, envp)
if (queuemode && OpMode != MD_DAEMON && QueueIntvl == 0)
{
(void) runqueue(FALSE, Verbose);
- finis();
+ finis(TRUE, ExitStat);
}
# endif /* QUEUE */
@@ -1326,7 +1426,7 @@ main(argc, argv, envp)
if (i < 0)
syserr("daemon: cannot fork");
if (i != 0)
- exit(0);
+ finis(FALSE, EX_OK);
/* disconnect from our controlling tty */
disconnect(2, CurEnv);
@@ -1379,13 +1479,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 +1493,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 +1519,17 @@ main(argc, argv, envp)
snprintf(pbuf, sizeof pbuf, "0");
define(macid("{client_port}", NULL), newstr(pbuf), &BlankEnvelope);
+ /* initialize maps now for check_relay ruleset */
+ initmaps(FALSE, CurEnv);
+
+ if (OpMode == MD_DAEMON)
+ {
+ /* validate the connection */
+ HoldErrs = TRUE;
+ nullserver = validate_connection(&RealHostAddr,
+ RealHostName, CurEnv);
+ HoldErrs = FALSE;
+ }
smtp(nullserver, CurEnv);
}
# endif /* SMTP */
@@ -1421,9 +1538,7 @@ main(argc, argv, envp)
if (OpMode == MD_VERIFY)
{
CurEnv->e_sendmode = SM_VERIFY;
- CurEnv->e_errormode = EM_PRINT;
PostMasterCopy = NULL;
- HoldErrs = FALSE;
}
else
{
@@ -1451,7 +1566,7 @@ main(argc, argv, envp)
/* collect body for UUCP return */
if (OpMode != MD_VERIFY)
collect(InChannel, FALSE, NULL, CurEnv);
- finis();
+ finis(TRUE, ExitStat);
}
/*
@@ -1464,6 +1579,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.
*/
@@ -1480,7 +1610,7 @@ main(argc, argv, envp)
/* bail out if message too large */
if (bitset(EF_CLRQUEUE, CurEnv->e_flags))
{
- finis();
+ finis(TRUE, ExitStat);
/*NOTREACHED*/
return -1;
}
@@ -1504,6 +1634,7 @@ main(argc, argv, envp)
}
CurEnv->e_to = NULL;
CurrentLA = getla();
+ GrabTo = FALSE;
sendall(CurEnv, SM_DEFAULT);
/*
@@ -1511,12 +1642,20 @@ main(argc, argv, envp)
** Don't send return error message if in VERIFY mode.
*/
- finis();
+ finis(TRUE, ExitStat);
/*NOTREACHED*/
return -1;
}
+/* ARGSUSED */
+SIGFUNC_DECL
+quiesce(sig)
+ int sig;
+{
+ finis(FALSE, EX_OK);
+}
+/* ARGSUSED */
SIGFUNC_DECL
intindebug(sig)
int sig;
@@ -1530,7 +1669,8 @@ intindebug(sig)
** FINIS -- Clean up and exit.
**
** Parameters:
-** none
+** drop -- whether or not to drop CurEnv envelope
+** exitstat -- exit status to use for exit() call
**
** Returns:
** never
@@ -1540,14 +1680,21 @@ intindebug(sig)
*/
void
-finis()
+finis(drop, exitstat)
+ bool drop;
+ volatile int exitstat;
{
+ extern void closemaps __P((void));
+#ifdef USERDB
+ extern void _udbx_close __P((void));
+#endif
+
if (tTd(2, 1))
{
- extern void printenvflags();
+ extern void printenvflags __P((ENVELOPE *));
printf("\n====finis: stat %d e_id=%s e_flags=",
- ExitStat,
+ exitstat,
CurEnv->e_id == NULL ? "NOQUEUE" : CurEnv->e_id);
printenvflags(CurEnv);
}
@@ -1563,12 +1710,20 @@ finis()
/* clean up temp files */
CurEnv->e_to = NULL;
- if (CurEnv->e_id != NULL)
+ if (drop && CurEnv->e_id != NULL)
dropenvelope(CurEnv, TRUE);
/* flush any cached connections */
mci_flush(TRUE, NULL);
+ /* close maps belonging to this pid */
+ closemaps();
+
+#ifdef USERDB
+ /* close UserDatabase */
+ _udbx_close();
+#endif
+
# ifdef XLA
/* clean up extended load average stuff */
xla_all_end();
@@ -1580,14 +1735,14 @@ finis()
sm_syslog(LOG_DEBUG, CurEnv->e_id,
"finis, pid=%d",
getpid());
- if (ExitStat == EX_TEMPFAIL || CurEnv->e_errormode == EM_BERKNET)
- ExitStat = EX_OK;
+ if (exitstat == EX_TEMPFAIL || CurEnv->e_errormode == EM_BERKNET)
+ exitstat = EX_OK;
/* reset uid for process accounting */
endpwent();
setuid(RealUid);
- exit(ExitStat);
+ exit(exitstat);
}
/*
** INTSIG -- clean up on interrupt
@@ -1605,6 +1760,7 @@ finis()
** Unlocks the current job.
*/
+/* ARGSUSED */
SIGFUNC_DECL
intsig(sig)
int sig;
@@ -1613,15 +1769,11 @@ intsig(sig)
sm_syslog(LOG_DEBUG, CurEnv->e_id, "interrupt");
FileName = NULL;
unlockqueue(CurEnv);
+ closecontrolsocket(TRUE);
#ifdef XLA
xla_all_end();
#endif
-
- /* reset uid for process accounting */
- endpwent();
- setuid(RealUid);
-
- exit(EX_OK);
+ finis(FALSE, EX_OK);
}
/*
** INITMACROS -- initialize the macro system
@@ -1752,7 +1904,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 +1918,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 +2043,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 +2184,7 @@ dumpstate(when)
}
+/* ARGSUSED */
SIGFUNC_DECL
sigusr1(sig)
int sig;
@@ -2026,6 +2194,7 @@ sigusr1(sig)
}
+/* ARGSUSED */
SIGFUNC_DECL
sighup(sig)
int sig;
@@ -2034,23 +2203,24 @@ sighup(sig)
{
if (LogLevel > 3)
sm_syslog(LOG_INFO, NOQID, "could not restart: need full path");
- exit(EX_OSFILE);
+ finis(FALSE, EX_OSFILE);
}
if (LogLevel > 3)
sm_syslog(LOG_INFO, NOQID, "restarting %s on signal", SaveArgv[0]);
alarm(0);
releasesignal(SIGHUP);
+ closecontrolsocket(TRUE);
if (drop_privileges(TRUE) != EX_OK)
{
if (LogLevel > 0)
sm_syslog(LOG_ALERT, NOQID, "could not set[ug]id(%d, %d): %m",
RunAsUid, RunAsGid);
- exit(EX_OSERR);
+ finis(FALSE, EX_OSERR);
}
execve(SaveArgv[0], (ARGV_T) SaveArgv, (ARGV_T) ExternalEnviron);
if (LogLevel > 0)
sm_syslog(LOG_ALERT, NOQID, "could not exec %s: %m", SaveArgv[0]);
- exit(EX_OSFILE);
+ finis(FALSE, EX_OSFILE);
}
/*
** DROP_PRIVILEGES -- reduce privileges to those of the RunAsUser option
@@ -2069,13 +2239,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 +2255,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 +2560,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 +2587,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 +2718,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/src/makesendmail b/src/makesendmail
index a28e2f4..6308dba 100755..120000
--- a/src/makesendmail
+++ b/src/makesendmail
@@ -1,331 +1 @@
-#!/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
+../BuildTools/bin/Build \ No newline at end of file
diff --git a/src/map.c b/src/map.c
index e889736..8fc3387 100644
--- a/src/map.c
+++ b/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.261 (Berkeley) 2/2/1999";
#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");
@@ -450,9 +437,9 @@ map_init(s, pass)
pass);
/*
- ** Pass 0 opens all non-rebuildable maps.
- ** Pass 1 opens all rebuildable maps for read.
- ** Pass 2 rebuilds all rebuildable maps.
+ ** Pass 0 opens all non-rebuildable maps.
+ ** Pass 1 opens all rebuildable maps for read.
+ ** Pass 2 rebuilds all rebuildable maps.
*/
rebuildable = (bitset(MF_ALIAS, map->map_mflags) &&
@@ -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;
}
@@ -491,6 +478,7 @@ map_init(s, pass)
map->map_file == NULL ? "NULL" :
map->map_file);
map->map_mflags |= MF_OPEN;
+ map->map_pid = getpid();
}
else
{
@@ -509,10 +497,55 @@ map_init(s, pass)
map->map_class = &BogusMapClass;
map->map_mflags |= MF_OPEN;
+ map->map_pid = getpid();
}
}
}
/*
+** CLOSEMAPS -- close all open maps opened by the current pid.
+**
+** Parameters:
+** none
+**
+** Returns:
+** none.
+*/
+
+void
+closemaps()
+{
+ extern void map_close __P((STAB *, int));
+
+ stabapply(map_close, 0);
+}
+
+/* ARGSUSED1 */
+void
+map_close(s, unused)
+ register STAB *s;
+ int unused;
+{
+ MAP *map;
+
+ if (s->s_type != ST_MAP)
+ return;
+
+ map = &s->s_map;
+
+ if (!bitset(MF_VALID, map->map_mflags) ||
+ !bitset(MF_OPEN, map->map_mflags) ||
+ map->map_pid != getpid())
+ return;
+
+ if (tTd(38, 5))
+ printf("closemaps: closing %s (%s)\n",
+ map->map_mname == NULL ? "NULL" : map->map_mname,
+ map->map_file == NULL ? "NULL" : map->map_file);
+
+ map->map_class->map_close(map);
+ map->map_mflags &= ~(MF_OPEN|MF_WRITABLE);
+}
+ /*
** GETCANONNAME -- look up name using service switch
**
** Parameters:
@@ -760,26 +793,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 +873,15 @@ ndbm_map_open(map, mode)
int dirfd;
int pagfd;
+ int sff = SFF_CREAT|SFF_OPENASROOT;
- dirfd = safeopen(dirfile, mode, DBMMODE,
- SFF_NOLINK|SFF_CREAT|SFF_OPENASROOT);
- pagfd = safeopen(pagfile, mode, DBMMODE,
- SFF_NOLINK|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);
+ pagfd = safeopen(pagfile, mode, DBMMODE, sff);
if (dirfd < 0 || pagfd < 0)
{
@@ -901,8 +967,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 +999,22 @@ ndbm_map_open(map, mode)
else
{
map->map_mflags |= MF_LOCKED;
+#if _FFR_TRUSTED_USER
+ if (geteuid() == 0 && TrustedUid != 0)
+ {
+ if (fchown(dfd, TrustedUid, -1) < 0 ||
+ fchown(pfd, TrustedUid, -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));
+ }
+ }
+#endif
}
if (fstat(dfd, &st) >= 0)
map->map_mtime = st.st_mtime;
@@ -975,7 +1057,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,22 +1065,24 @@ 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;
+ map->map_pid = getpid();
if ((omode && O_ACCMODE) == O_RDWR)
map->map_mflags |= MF_WRITABLE;
goto lockdbm;
}
else
{
- if (!bitset(MF_OPTIONAL, map->map_mflags))
+ if (!bitset(MF_OPTIONAL, map->map_mflags))
{
extern MAPCLASS BogusMapClass;
*statp = EX_TEMPFAIL;
map->map_class = &BogusMapClass;
map->map_mflags |= MF_OPEN;
+ map->map_pid = getpid();
syserr("Cannot reopen NDBM database %s",
map->map_file);
}
@@ -1082,7 +1166,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,14 +1202,14 @@ 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))
{
#ifdef NDBM_YP_COMPAT
bool inclnull;
- char buf[200];
+ char buf[MAXHOSTNAMELEN];
inclnull = bitset(MF_INCLNULL, map->map_mflags);
map->map_mflags &= ~MF_INCLNULL;
@@ -1179,14 +1264,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 +1287,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 +1309,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 +1335,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 +1363,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 +1421,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 +1439,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 +1471,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 +1509,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 +1539,36 @@ 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 _FFR_TRUSTED_USER
+ if (geteuid() == 0 && TrustedUid != 0)
+ {
+ if (fchown(fd, TrustedUid, -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));
+ }
+ }
+#endif
+ }
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 +1599,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 +1622,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,9 +1639,10 @@ 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;
+ map->map_pid = getpid();
if ((omode && O_ACCMODE) == O_RDWR)
map->map_mflags |= MF_WRITABLE;
db = (DB *) map->map_db2;
@@ -1468,40 +1650,76 @@ 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;
*statp = EX_TEMPFAIL;
map->map_class = &BogusMapClass;
map->map_mflags |= MF_OPEN;
+ map->map_pid = getpid();
syserr("Cannot reopen DB database %s",
map->map_file);
}
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 +1750,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 +1778,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 +1807,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 +1822,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 +1830,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,19 +1861,43 @@ 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)
- syserr("readaliases: db close failure");
+#else
+ /*
+ ** Berkeley DB can use internal shared memory
+ ** locking for its memory pool. Closing a map
+ ** opened by another process will interfere
+ ** with the shared memory and locks of the parent
+ ** process leaving things in a bad state.
+ */
+
+ /*
+ ** If this map was not opened by the current
+ ** process, do not close the map but recover
+ ** the file descriptor.
+ */
+ if (map->map_pid != getpid())
+ {
+ int fd = -1;
+
+ errno = db->fd(db, &fd);
+ if (fd >= 0)
+ (void) close(fd);
+ return;
+ }
+
+ if ((errno = db->close(db, 0)) != 0)
+#endif
+ syserr("db_map_close(%s, %s, %lx): db close failure",
+ map->map_mname, map->map_file, map->map_mflags);
}
#endif
@@ -1734,6 +2004,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 +2181,7 @@ nisplus_map_open(map, mode)
mode &= O_ACCMODE;
if (mode != O_RDONLY)
{
- errno = ENODEV;
+ errno = EPERM;
return FALSE;
}
@@ -1920,7 +2191,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 +2224,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 +2238,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 +2254,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 +2262,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 +2274,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 +2297,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;
}
@@ -2057,14 +2328,17 @@ nisplus_map_lookup(map, name, av, statp)
if (!bitset(MF_OPEN, map->map_mflags))
{
if (nisplus_map_open(map, O_RDONLY))
+ {
map->map_mflags |= MF_OPEN;
+ map->map_pid = getpid();
+ }
else
{
*statp = EX_UNAVAILABLE;
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 +2569,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 +2631,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,21 +2656,63 @@ ldap_map_start(map)
if (tTd(38,9))
printf("ldap_open(%s, %d)\n", lmap->ldaphost, lmap->ldapport);
- if ((ld = ldap_open(lmap->ldaphost,lmap->ldapport)) == NULL)
+ /* 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);
+ }
+
+#ifdef USE_LDAP_INIT
+ ld = ldap_init(lmap->ldaphost,lmap->ldapport);
+#else
+ ld = ldap_open(lmap->ldaphost,lmap->ldapport);
+#endif
+
+ /* clear the event if it has not sprung */
+ if (lmap->timeout.tv_sec != 0)
+ clrevent(ev);
+
+ if (ld == NULL)
{
if (!bitset(MF_OPTIONAL, map->map_mflags))
{
- syserr("ldapopen failed to %s in map %s",
+ syserr("%sldapopen failed to %s in map %s",
+ bitset(MF_NODEFER, map->map_mflags) ? "" : "421 ",
lmap->ldaphost, map->map_mname);
}
return FALSE;
}
+#ifdef USE_LDAP_SET_OPTION
+ ldap_set_option(ld, LDAP_OPT_DEREF, &lmap->deref);
+ ldap_set_option(ld, LDAP_OPT_TIMELIMIT, &lmap->timelimit);
+ ldap_set_option(ld, LDAP_OPT_SIZELIMIT, &lmap->sizelimit);
+ ldap_set_option(ld, LDAP_OPT_REFERRALS,
+ bitset(LDAP_OPT_REFERRALS, lmap->ldap_options) ?
+ LDAP_OPT_ON : LDAP_OPT_OFF);
+#else
+ /* 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;
ld->ld_options = lmap->ldap_options;
+#endif
+#ifdef USE_LDAP_INIT
+ /* ld needs to be cast into the map struct */
+ lmap->ld = ld;
+ return TRUE;
+#else
if (ldap_bind_s(ld, lmap->binddn,lmap->passwd,lmap->method) != LDAP_SUCCESS)
{
if (!bitset(MF_OPTIONAL, map->map_mflags))
@@ -2403,28 +2729,43 @@ ldap_map_start(map)
}
return FALSE;
+#endif
}
/*
-** LDAP_MAP_CLOSE -- close ldap map
+** LDAP_MAP_STOP -- close the ldap connection
*/
void
-ldap_map_close(map)
+ldap_map_stop(map)
MAP *map;
{
- LDAP_MAP_STRUCT *lmap ;
+ LDAP_MAP_STRUCT *lmap;
+
lmap = (LDAP_MAP_STRUCT *) map->map_db1;
if (lmap->ld != NULL)
+ {
ldap_unbind(lmap->ld);
+ lmap->ld = NULL;
+ }
}
+/*
+** LDAP_MAP_CLOSE -- close ldap map
+*/
+
+void
+ldap_map_close(map)
+ MAP *map;
+{
+ ldap_map_stop(map);
+}
#ifdef SUNET_ID
/*
-** SUNET_ID_HASH -- Convert a string to it's Sunet_id canonical form
-** This only makes sense at Stanford University.
+** SUNET_ID_HASH -- Convert a string to it's Sunet_id canonical form
+** This only makes sense at Stanford University.
*/
char *
@@ -2458,7 +2799,7 @@ sunet_id_hash(str)
#endif /* SUNET_ID */
/*
-** LDAP_MAP_LOOKUP -- look up a datum in a LDAP map
+** LDAP_MAP_LOOKUP -- look up a datum in a LDAP map
*/
char *
@@ -2477,6 +2818,7 @@ ldap_map_lookup(map, name, av, statp)
char **attr_values = NULL;
char *result;
int name_len;
+ char *fp, *p, *q;
if (tTd(38, 20))
printf("ldap_map_lookup(%s, %s)\n", map->map_mname, name);
@@ -2505,15 +2847,35 @@ ldap_map_lookup(map, name, av, statp)
makelower(keybuf);
#endif /*SUNET_ID */
- /* sprintf keybuf into filter */
- snprintf(filter, sizeof filter, lmap->filter, keybuf);
+ /* substitute keybuf into filter, perhaps multiple times */
+ fp = filter;
+ p = lmap->filter;
+ while ((q = strchr(p, '%')) != NULL)
+ {
+ if (q[1] == 's')
+ {
+ snprintf(fp, SPACELEFT(filter, fp), "%.*s%s",
+ q - p, p, keybuf);
+ p = q + 2;
+ }
+ else
+ {
+ snprintf(fp, SPACELEFT(filter, fp), "%.*s",
+ q - p + 1, p);
+ p = q + (q[1] == '%' ? 2 : 1);
+ }
+ fp += strlen(fp);
+ }
+ snprintf(fp, SPACELEFT(filter, fp), "%s", p);
+ if (tTd(38, 20))
+ printf("ldap search filter=%s\n", filter);
if (ldap_search_st(lmap->ld, lmap->base,lmap->scope,filter,
lmap->attr, lmap->attrsonly, &(lmap->timeout),
&(lmap->res)) != LDAP_SUCCESS)
{
- /* try close/opening map */
- ldap_map_close(map);
+ /* try stopping/starting map */
+ ldap_map_stop(map);
if (!ldap_map_start(map))
{
result = NULL;
@@ -2527,7 +2889,8 @@ ldap_map_lookup(map, name, av, statp)
{
if (!bitset(MF_OPTIONAL, map->map_mflags))
{
- syserr("Error in ldap_search_st using %s in map %s",
+ syserr("%sError in ldap_search_st using %s in map %s",
+ bitset(MF_NODEFER, map->map_mflags) ? "" : "421 ",
filter, map->map_mname);
}
result = NULL;
@@ -2574,13 +2937,13 @@ ldap_map_lookup(map, name, av, statp)
ldap_value_free(attr_values);
if (lmap != NULL)
ldap_msgfree(lmap->res);
- ldap_map_close(map);
+ ldap_map_stop(map);
return result ;
}
/*
-** LDAP_MAP_DEQUOTE - helper routine for ldap_map_parseargs
+** LDAP_MAP_DEQUOTE - helper routine for ldap_map_parseargs
*/
char *
@@ -2610,7 +2973,7 @@ ldap_map_dequote(str)
}
/*
-** LDAP_MAP_PARSEARGS -- parse ldap map definition args.
+** LDAP_MAP_PARSEARGS -- parse ldap map definition args.
*/
bool
@@ -2642,6 +3005,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 +3056,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 +3088,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 +3104,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 +3140,7 @@ ldap_map_parseargs(map,args)
while (isascii(*++p) && isspace(*p))
continue;
lmap->timelimit = atoi(p);
+ lmap->timeout.tv_sec = lmap->timelimit;
break;
}
@@ -2792,13 +3171,14 @@ 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));
/*
- ** We need to swallow up all the stuff into a struct
- ** and dump it into map->map_dbptr1
+ ** We need to swallow up all the stuff into a struct
+ ** and dump it into map->map_dbptr1
*/
if (lmap->ldaphost != NULL)
@@ -2856,15 +3236,15 @@ ldap_map_parseargs(map,args)
#endif /* LDAP Modules */
/*
-** syslog map
+** syslog map
*/
-#if _FFR_SYSLOG_MAP
+#if _FFR_MAP_SYSLOG
#define map_prio map_lockfd /* overload field */
/*
-** SYSLOG_MAP_PARSEARGS -- check for priority level to syslog messages.
+** SYSLOG_MAP_PARSEARGS -- check for priority level to syslog messages.
*/
bool
@@ -2895,7 +3275,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;
@@ -2946,7 +3326,7 @@ syslog_map_parseargs(map, args)
}
/*
-** SYSLOG_MAP_LOOKUP -- rewrite and syslog message. Always return empty string
+** SYSLOG_MAP_LOOKUP -- rewrite and syslog message. Always return empty string
*/
char *
@@ -2966,20 +3346,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 +3382,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 +3404,7 @@ hes_map_open(map, mode)
syserr("421 cannot initialize Hesiod map (%d)", hes_error());
return FALSE;
+#endif /* HESIOD_INIT */
}
char *
@@ -3044,14 +3432,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 +3493,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
@@ -3103,8 +3523,6 @@ ni_map_open(map, mode)
MAP *map;
int mode;
{
- char *p;
-
if (tTd(38, 2))
printf("ni_map_open(%s, %s, %d)\n",
map->map_mname, map->map_file, mode);
@@ -3162,6 +3580,7 @@ ni_getcanonname(name, hbsize, statp)
int *statp;
{
char *vptr;
+ char *ptr;
char nbuf[MAXNAME + 1];
if (tTd(38, 20))
@@ -3183,7 +3602,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 +3610,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);
@@ -3382,7 +3805,7 @@ ni_propval(keydir, keyprop, keyval, valprop, sepchar)
return propval;
}
-#endif
+#endif /* NETINFO */
/*
** TEXT (unindexed text file) Modules
**
@@ -3411,7 +3834,7 @@ text_map_open(map, mode)
mode &= O_ACCMODE;
if (mode != O_RDONLY)
{
- errno = ENODEV;
+ errno = EPERM;
return FALSE;
}
@@ -3429,8 +3852,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 +3873,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 +3887,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,
@@ -3556,6 +3981,11 @@ text_map_lookup(map, name, av, statp)
return NULL;
}
vp = get_column(linebuf, map->map_valcolno, delim, buf, sizeof buf);
+ if (vp == NULL)
+ {
+ *statp = EX_NOTFOUND;
+ return NULL;
+ }
vsize = strlen(vp);
*statp = EX_OK;
if (bitset(MF_MATCHONLY, map->map_mflags))
@@ -3633,6 +4063,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 +4126,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 +4241,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 +4349,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 +4779,7 @@ seq_map_store(map, key, val)
** NULL stubs
*/
+/* ARGSUSED */
bool
null_map_open(map, mode)
MAP *map;
@@ -4348,6 +4788,7 @@ null_map_open(map, mode)
return TRUE;
}
+/* ARGSUSED */
void
null_map_close(map)
MAP *map;
@@ -4366,6 +4807,7 @@ null_map_lookup(map, key, args, pstat)
return NULL;
}
+/* ARGSUSED */
void
null_map_store(map, key, val)
MAP *map;
@@ -4397,3 +4839,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/src/mci.c b/src/mci.c
index 929d82d..41649a2 100644
--- a/src/mci.c
+++ b/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.83 (Berkeley) 10/13/1998";
#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))
{
@@ -510,7 +503,7 @@ mci_dump_all(logit)
mci_dump(MciCache[i], logit);
}
/*
-** MCI_LOCK_HOST -- Lock host while sending.
+** MCI_LOCK_HOST -- Lock host while sending.
**
** If we are contacting a host, we'll need to
** update the status information in the host status
@@ -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)
{
@@ -650,7 +643,7 @@ mci_unlock_host(mci)
errno = saveErrno;
}
/*
-** MCI_LOAD_PERSISTENT -- load persistent host info
+** MCI_LOAD_PERSISTENT -- load persistent host info
**
** Load information about host that is kept
** in common for all running sendmails.
@@ -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);
@@ -1011,8 +1016,8 @@ mci_traverse_persistent(action, pathname)
*hostptr = '\0';
/*
- ** Do something with the file containing the persistent
- ** information.
+ ** Do something with the file containing the persistent
+ ** information.
*/
ret = (*action)(pathname, host);
}
@@ -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];
@@ -1162,7 +1167,7 @@ mci_purge_persistent(pathname, hostname)
return 0;
}
/*
-** MCI_GENERATE_PERSISTENT_PATH -- generate path from hostname
+** MCI_GENERATE_PERSISTENT_PATH -- generate path from hostname
**
** Given `host', convert from a.b.c to $QueueDir/.hoststat/c./b./a,
** putting the result into `path'. if `createflag' is set, intervening
@@ -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/src/mime.c b/src/mime.c
index 3e5a610..7156891 100644
--- a/src/mime.c
+++ b/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.71 (Berkeley) 1/18/1999";
#endif /* not lint */
/*
@@ -247,7 +225,8 @@ mime8to7(mci, header, e, boundaries, flags)
** Do a recursive descent into the message.
*/
- if (strcasecmp(type, "multipart") == 0 && !bitset(M87F_NO8BIT, flags))
+ if (strcasecmp(type, "multipart") == 0 &&
+ (!bitset(M87F_NO8BIT, flags) || bitset(M87F_NO8TO7, flags)))
{
int blen;
@@ -306,6 +285,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);
@@ -328,7 +308,7 @@ mime8to7(mci, header, e, boundaries, flags)
collect(e->e_dfp, FALSE, &hdr, e);
if (tTd(43, 101))
putline("+++after collect", mci);
- putheader(mci, hdr, e);
+ putheader(mci, hdr, e, flags);
if (tTd(43, 101))
putline("+++after putheader", mci);
bt = mime8to7(mci, hdr, e, boundaries, flags);
@@ -380,7 +360,7 @@ mime8to7(mci, header, e, boundaries, flags)
collect(e->e_dfp, FALSE, &hdr, e);
if (tTd(43, 101))
putline("+++after collect", mci);
- putheader(mci, hdr, e);
+ putheader(mci, hdr, e, flags);
if (tTd(43, 101))
putline("+++after putheader", mci);
if (hvalue("MIME-Version", hdr) == NULL)
@@ -400,7 +380,7 @@ mime8to7(mci, header, e, boundaries, flags)
*/
sectionsize = sectionhighbits = 0;
- if (!bitset(M87F_NO8BIT, flags))
+ if (!bitset(M87F_NO8BIT|M87F_NO8TO7, flags))
{
/* remember where we were */
offset = ftell(e->e_dfp);
@@ -462,8 +442,18 @@ mime8to7(mci, header, e, boundaries, flags)
if (sectionhighbits == 0)
{
/* no encoding necessary */
- if (cte != NULL)
+ if (cte != NULL &&
+ bitset(MCIF_INMIME, mci->mci_flags) &&
+ !bitset(M87F_NO8TO7, flags))
{
+ /*
+ ** Skip _unless_ in MIME mode and potentially
+ ** converting from 8 bit to 7 bit MIME. See
+ ** putheader() for the counterpart where the
+ ** CTE header is skipped in the opposite
+ ** situation.
+ */
+
snprintf(buf, sizeof buf,
"Content-Transfer-Encoding: %.200s", cte);
putline(buf, mci);
@@ -683,15 +673,22 @@ mime_getchar(fp, boundaries, btp)
static bool atbol = TRUE; /* at beginning of line */
static int bt = MBT_SYNTAX; /* boundary type of next EOF */
static u_char buf[128]; /* need not be a full line */
+ int start = 0; /* indicates position of - in buffer */
- if (buflen > 0)
+ if (buflen == 1 && *bp == '\n')
+ {
+ /* last \n in buffer may be part of next MIME boundary */
+ c = *bp;
+ }
+ else if (buflen > 0)
{
buflen--;
return *bp++;
}
+ else
+ c = getc(fp);
bp = buf;
buflen = 0;
- c = getc(fp);
if (c == '\n')
{
/* might be part of a MIME boundary */
@@ -703,6 +700,7 @@ mime_getchar(fp, boundaries, btp)
ungetc(c, fp);
return c;
}
+ start = 1;
}
if (c != EOF)
*bp++ = c;
@@ -731,7 +729,7 @@ mime_getchar(fp, boundaries, btp)
*bp++ = c;
}
*bp = '\0';
- bt = mimeboundary((char *) &buf[1], boundaries);
+ bt = mimeboundary((char *) &buf[start], boundaries);
switch (bt)
{
case MBT_FINAL:
@@ -992,6 +990,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 +1145,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/src/newaliases.0 b/src/newaliases.0
index 648bab7..25b0285 100644
--- a/src/newaliases.0
+++ b/src/newaliases.0
@@ -24,4 +24,4 @@ SSEEEE AALLSSOO
HHIISSTTOORRYY
The nneewwaalliiaasseess command appeared in 4.0BSD.
-4th Berkeley Distribution February 22, 1994 1
+4th Berkeley Distribution May 19, 1998 1
diff --git a/src/newaliases.1 b/src/newaliases.1
index 7168c13..b9673cd 100644
--- a/src/newaliases.1
+++ b/src/newaliases.1
@@ -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) 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.
+.\" 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.
.\"
-.\" @(#)newaliases.1 8.5 (Berkeley) 2/1/97
+.\" @(#)newaliases.1 8.10 (Berkeley) 5/19/1998
.\"
-.Dd February 1, 1997
+.Dd May 19, 1998
.Dt NEWALIASES 1
.Os BSD 4
.Sh NAME
diff --git a/src/parseaddr.c b/src/parseaddr.c
index 7831834..86762fd 100644
--- a/src/parseaddr.c
+++ b/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.156 (Berkeley) 10/27/1998";
#endif /* not lint */
# include "sendmail.h"
@@ -89,8 +67,7 @@ parseaddr(addr, a, flags, delim, delimptr, e)
auto char *delimptrbuf;
bool queueup;
char pvpbuf[PSBUFSIZE];
- extern ADDRESS *buildaddr();
- extern bool invalidaddr();
+ extern bool invalidaddr __P((char *, char *));
extern void allocaddr __P((ADDRESS *, int, char *));
/*
@@ -668,12 +645,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 +738,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 +823,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 +1047,7 @@ rewrite(pvp, ruleset, reclevel, e)
}
else
{
- /* vanilla replacement */
+ /* some sort of replacement */
if (avp >= &npvp[MAXATOM])
{
toolong:
@@ -1079,16 +1055,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 +1263,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 +1331,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)
{
@@ -1425,8 +1449,17 @@ map_lookup(map, key, argvect, pstat, e)
/* XXX should try to auto-open the map here */
if (tTd(60, 1))
- printf("map_lookup(%s, %s) => ",
- map->s_name, key);
+ {
+ printf("map_lookup(%s, %s", map->s_name, key);
+ if (tTd(60, 5))
+ {
+ int i;
+
+ for (i = 0; argvect[i] != NULL; i++)
+ printf(", %%%d=%s", i, argvect[i]);
+ }
+ printf(") => ");
+ }
replac = (*map->s_map.map_class->map_lookup)(&map->s_map,
key, argvect, &stat);
if (tTd(60, 1))
@@ -1448,10 +1481,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,9 +1557,11 @@ 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];
+ static char ubuf[MAXNAME + 2];
if (tTd(24, 5))
{
@@ -1522,6 +1576,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 +2052,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 +2313,7 @@ dequote_init(map, args)
** else -- The dequoted buffer.
*/
+/* ARGSUSED2 */
char *
dequote_map(map, name, av, statp)
MAP *map;
@@ -2356,9 +2419,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 +2468,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 +2532,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/src/pathnames.h b/src/pathnames.h
index a364fba..7a06b12 100644
--- a/src/pathnames.h
+++ b/src/pathnames.h
@@ -1,36 +1,14 @@
/*-
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
* 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.
+ * 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.
*
- * @(#)pathnames.h 8.4 (Berkeley) 6/19/95
+ * @(#)pathnames.h 8.8 (Berkeley) 5/19/1998
*/
#ifndef _PATH_SENDMAILCF
diff --git a/src/queue.c b/src/queue.c
index d48efb1..b02fc08 100644
--- a/src/queue.c
+++ b/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.211 (Berkeley) 1/25/1999 (with queueing)";
#else
-static char sccsid[] = "@(#)queue.c 8.175 (Berkeley) 10/4/97 (without queueing)";
+static char sccsid[] = "@(#)queue.c 8.211 (Berkeley) 1/25/1999 (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,10 +346,9 @@ 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')
+ if (h->h_value == NULL)
continue;
/* don't output resent headers on non-resent messages */
@@ -477,7 +462,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 +584,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,31 +609,26 @@ runqueue(forkflag, verbose)
if (pid != 0)
{
/* parent -- pick up intermediate zombie */
-#ifndef SIGCHLD
- (void) waitfor(pid);
-#else
(void) blocksignal(SIGALRM);
- proc_list_add(pid);
+ proc_list_add(pid, "Queue runner");
(void) releasesignal(SIGALRM);
releasesignal(SIGCHLD);
-#endif /* SIGCHLD */
if (QueueIntvl != 0)
(void) setevent(QueueIntvl, runqueueevent, 0);
return TRUE;
}
/* child -- double fork and clean up signals */
+ clrcontrol();
proc_list_clear();
-#ifndef SIGCHLD
- if (fork() != 0)
- exit(EX_OK);
-#else /* SIGCHLD */
+
+ /* Add parent process as first child item */
+ proc_list_add(getpid(), "Queue runner child process");
releasesignal(SIGCHLD);
(void) setsignal(SIGCHLD, SIG_DFL);
-#endif /* SIGCHLD */
(void) setsignal(SIGHUP, intsig);
}
- setproctitle("running queue: %s", QueueDir);
+ sm_setproctitle(TRUE, "running queue: %s", QueueDir);
if (LogLevel > 69)
sm_syslog(LOG_DEBUG, NOQID,
@@ -775,7 +753,6 @@ runqueue(forkflag, verbose)
else
{
pid_t pid;
- extern pid_t dowork();
if (Verbose)
{
@@ -796,7 +773,7 @@ runqueue(forkflag, verbose)
/* exit without the usual cleanup */
e->e_id = NULL;
- finis();
+ finis(TRUE, ExitStat);
/*NOTREACHED*/
return TRUE;
}
@@ -842,20 +819,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 +883,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);
@@ -898,10 +895,26 @@ orderq(doall)
continue;
if (strlen(d->d_name) > MAXQFNAME)
+ {
+ if (Verbose)
+ printf("orderq: %s too long, %d max characters\n",
+ d->d_name, MAXQFNAME);
+ if (LogLevel > 0)
+ sm_syslog(LOG_ALERT, NOQID,
+ "orderq: %s too long, %d max characters",
+ 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 +997,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 +1044,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 +1107,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 +1133,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 +1156,7 @@ orderq(doall)
}
else if (QueueSortOrder == QS_BYTIME)
{
- extern workcmpf3();
+ extern int workcmpf3();
/*
** Simple sort based on submission time only.
@@ -1133,7 +1166,7 @@ orderq(doall)
}
else
{
- extern workcmpf0();
+ extern int workcmpf0();
/*
** Simple sort based on queue priority only.
@@ -1163,6 +1196,7 @@ orderq(doall)
if (WorkList != NULL)
free(WorkList);
WorkList = NULL;
+ WorkListSize = 0;
if (tTd(40, 1))
{
@@ -1279,6 +1313,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 +1321,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 +1355,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 +1367,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 +1428,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);
@@ -1418,6 +1454,16 @@ dowork(id, forkflag, requeueflag, e)
{
/* child -- error messages to the transcript */
QuickAbort = OnlyOneError = FALSE;
+
+ /*
+ ** Since the delivery may happen in a child and the
+ ** parent does not wait, the parent may close the
+ ** maps thereby removing any shared memory used by
+ ** the map. Therefore, open a copy of the maps for
+ ** the delivery process.
+ */
+
+ initmaps(FALSE, e);
}
}
else
@@ -1449,7 +1495,7 @@ dowork(id, forkflag, requeueflag, e)
disconnect(1, e);
OpMode = MD_DELIVER;
}
- setproctitle("%s: from queue", id);
+ sm_setproctitle(TRUE, "%s: from queue", id);
if (LogLevel > 76)
sm_syslog(LOG_DEBUG, e->e_id,
"dowork, pid=%d",
@@ -1461,11 +1507,11 @@ 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)
- exit(EX_OK);
+ finis(FALSE, EX_OK);
else
return 0;
}
@@ -1481,7 +1527,7 @@ dowork(id, forkflag, requeueflag, e)
/* finish up and exit */
if (forkflag)
- finis();
+ finis(TRUE, ExitStat);
else
dropenvelope(e, TRUE);
}
@@ -1748,10 +1794,10 @@ 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();
if (Verbose || tTd(40, 8))
printf("%s: too young (%s)\n",
@@ -1825,7 +1871,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 +2146,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 +2186,7 @@ queuename(e, type)
while (c1 < '~' || c2 < 'Z')
{
int i;
+ int attempts = 0;
if (c2 >= 'Z')
{
@@ -2151,12 +2205,34 @@ queuename(e, type)
continue;
syserr("queuename: Cannot create \"%s\" in \"%s\" (euid=%d)",
qf, QueueDir, geteuid());
- exit(EX_UNAVAILABLE);
+ finis(FALSE, 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());
+ finis(FALSE, EX_OSERR);
}
/* a reader got the file; abandon it and try again */
@@ -2166,7 +2242,7 @@ queuename(e, type)
{
syserr("queuename: Cannot create \"%s\" in \"%s\" (euid=%d)",
qf, QueueDir, geteuid());
- exit(EX_OSERR);
+ finis(FALSE, EX_OSERR);
}
e->e_id = newstr(&qf[2]);
define('i', e->e_id, e);
diff --git a/src/readcf.c b/src/readcf.c
index 681c3d3..df40097 100644
--- a/src/readcf.c
+++ b/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.238 (Berkeley) 1/28/1999";
#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.
@@ -128,19 +106,19 @@ readcf(cfname, safe, e)
if (cf == NULL)
{
syserr("cannot open");
- exit(EX_OSFILE);
+ finis(FALSE, EX_OSFILE);
}
if (fstat(fileno(cf), &statb) < 0)
{
syserr("cannot fstat");
- exit(EX_OSFILE);
+ finis(FALSE, EX_OSFILE);
}
if (!S_ISREG(statb.st_mode))
{
syserr("not a plain file");
- exit(EX_OSFILE);
+ finis(FALSE, EX_OSFILE);
}
if (OpMode != MD_TEST && bitset(S_IWGRP|S_IWOTH, statb.st_mode))
@@ -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);
@@ -544,7 +518,7 @@ readcf(cfname, safe, e)
if (ferror(cf))
{
syserr("I/O read error");
- exit(EX_OSFILE);
+ finis(FALSE, EX_OSFILE);
}
fclose(cf);
FileName = NULL;
@@ -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,35 +1493,44 @@ 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_USER
+#define O_TRUSTUSER 0xa7
+ { "TrustedUser", O_TRUSTUSER, FALSE },
+#endif
+#if _FFR_MAX_MIME_HEADER_LENGTH
+#define O_MAXMIMEHDRLEN 0xa8
+ { "MaxMimeHeaderLength", O_MAXMIMEHDRLEN, FALSE },
+#endif
+#if _FFR_CONTROL_SOCKET
+#define O_CONTROLSOCKET 0xa9
+ { "ControlSocketName", O_CONTROLSOCKET, FALSE },
+#endif
+#if _FFR_MAX_HEADERS_LENGTH
+#define O_MAXHDRSLEN 0xaa
+ { "MaxHeadersLength", O_MAXHDRSLEN, FALSE },
+#endif
{ NULL, '\0', FALSE }
};
@@ -1543,10 +1548,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;
@@ -1712,7 +1718,7 @@ setoption(opt, val, safe, sticky, e)
default:
syserr("Unknown 8-bit mode %c", *val);
- exit(EX_USAGE);
+ finis(FALSE, EX_USAGE);
}
break;
#endif
@@ -1776,8 +1782,11 @@ setoption(opt, val, safe, sticky, e)
default:
syserr("Unknown delivery mode %c", *val);
- exit(EX_USAGE);
+ finis(FALSE, 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 +2061,10 @@ setoption(opt, val, safe, sticky, e)
}
}
if (isascii(*val) && isdigit(*val))
+ {
DefUid = atoi(val);
+ setdefuser();
+ }
else
{
register struct passwd *pw;
@@ -2065,6 +2077,7 @@ setoption(opt, val, safe, sticky, e)
{
DefUid = pw->pw_uid;
DefGid = pw->pw_gid;
+ DefUser = newstr(pw->pw_name);
}
}
@@ -2075,7 +2088,6 @@ setoption(opt, val, safe, sticky, e)
DefUid, UID_MAX);
}
#endif
- setdefuser();
/* handle the group if it is there */
if (*p == '\0')
@@ -2240,7 +2252,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 +2283,7 @@ setoption(opt, val, safe, sticky, e)
}
if (isascii(*val) && isdigit(*val))
{
- if (RunAsUid == 0)
+ if (can_setuid)
RunAsUid = atoi(val);
}
else
@@ -2280,7 +2293,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 +2301,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 +2344,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 +2405,81 @@ 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_USER
+ case O_TRUSTUSER:
+ if (isascii(*val) && isdigit(*val))
+ TrustedUid = atoi(val);
+ else
+ {
+ register struct passwd *pw;
+
+ TrustedUid = 0;
+ pw = sm_getpwnam(val);
+ if (pw == NULL)
+ syserr("readcf: option TrustedUser: unknown user %s", val);
+ else
+ TrustedUid = pw->pw_uid;
+ }
+
+#ifdef UID_MAX
+ if (TrustedUid > UID_MAX)
+ {
+ syserr("readcf: option TrustedUser: uid value (%ld) > UID_MAX (%ld)",
+ TrustedUid, UID_MAX);
+ TrustedUid = 0;
+ }
+#endif
+ break;
+#endif
+
+#if _FFR_MAX_MIME_HEADER_LENGTH
+ case O_MAXMIMEHDRLEN:
+ p = strchr(val, '/');
+ if (p != NULL)
+ *p++ = '\0';
+ MaxMimeHeaderLength = atoi(val);
+ if (p != NULL && *p != '\0')
+ MaxMimeFieldLength = atoi(p);
+ else
+ MaxMimeFieldLength = MaxMimeHeaderLength / 2;
+
+ if (MaxMimeHeaderLength < 0)
+ MaxMimeHeaderLength = 0;
+ else if (MaxMimeHeaderLength < 128)
+ printf("Warning: MaxMimeHeaderLength: header length limit set lower than 128\n");
+
+ if (MaxMimeFieldLength < 0)
+ MaxMimeFieldLength = 0;
+ else if (MaxMimeFieldLength < 40)
+ printf("Warning: MaxMimeHeaderLength: field length limit set lower than 40\n");
+ break;
+#endif
+
+#if _FFR_CONTROL_SOCKET
+ case O_CONTROLSOCKET:
+ if (ControlSocketName != NULL)
+ free(ControlSocketName);
+ ControlSocketName = newstr(val);
+ break;
+#endif
+
+#if _FFR_MAX_HEADERS_LENGTH
+ case O_MAXHDRSLEN:
+ MaxHeadersLength = atoi(val);
+
+ if (MaxHeadersLength > 0 &&
+ MaxHeadersLength < (MAXHDRSLEN / 2))
+ printf("Warning: MaxHeadersLength: headers length limit set lower than %d\n", MAXHDRSLEN);
+ break;
+#endif
+
default:
if (tTd(37, 1))
{
@@ -2536,7 +2651,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 +2673,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 +2738,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 +2765,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 +2837,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/src/recipient.c b/src/recipient.c
index adcce7a..f7e221f 100644
--- a/src/recipient.c
+++ b/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.163 (Berkeley) 1/23/1999";
#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))
{
@@ -349,8 +331,11 @@ recipient(a, sendq, aliaslevel, e)
}
/* add address on list */
- *pq = a;
- a->q_next = NULL;
+ if (pq != NULL)
+ {
+ *pq = a;
+ a->q_next = NULL;
+ }
/*
** Alias the name and handle special mailer types.
@@ -358,7 +343,10 @@ recipient(a, sendq, aliaslevel, e)
trylocaluser:
if (tTd(29, 7))
- printf("at trylocaluser %s\n", a->q_user);
+ {
+ printf("at trylocaluser: ");
+ printaddr(a, FALSE);
+ }
if (bitset(QDONTSEND|QBADADDR|QVERIFIED, a->q_flags))
goto testselfdestruct;
@@ -383,12 +371,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 +384,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 +415,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 +441,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 +845,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 +891,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 +908,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 +920,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);
@@ -943,7 +937,7 @@ include(fname, forwarding, ctladdr, sendq, aliaslevel, e)
(int) getuid(), (int) geteuid());
if (forwarding)
- sfflags |= SFF_MUSTOWN|SFF_ROOTOK|SFF_NOSLINK;
+ sfflags |= SFF_MUSTOWN|SFF_ROOTOK|SFF_NOWLINK;
ca = getctladdr(ctladdr);
if (ca == NULL)
@@ -964,9 +958,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 +985,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 +1016,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 +1089,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 +1180,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)
@@ -1145,28 +1195,37 @@ resetuid:
{
/* don't do any more now */
ctladdr->q_flags |= QVERIFIED;
+ ctladdr->q_flags &= ~QDONTSEND;
e->e_nrcpts++;
xfclose(fp, "include", fname);
return rval;
}
/*
- ** Check to see if some bad guy can write this file
+ ** Check to see if some bad guy can write this file
**
** 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 +1267,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);
}
@@ -1351,6 +1410,8 @@ self_reference(a, e)
c = a;
while (c != NULL)
{
+ if (tTd(27, 10))
+ printf(" %s", c->q_user);
if (bitnset(M_HASPWENT, c->q_mailer->m_flags))
{
if (tTd(27, 2))
@@ -1369,6 +1430,22 @@ self_reference(a, e)
if (tTd(27, 2))
printf("failed\n");
}
+ else
+ {
+ /* if local delivery, compare usernames */
+ if (bitnset(M_LOCALMAILER, c->q_mailer->m_flags) &&
+ b->q_mailer == c->q_mailer)
+ {
+ if (tTd(27, 2))
+ printf("\t... local match (%s)\n", c->q_user);
+ if (sameaddr(b, c))
+ return b;
+ else
+ return c;
+ }
+ }
+ if (tTd(27, 10))
+ printf("\n");
c = c->q_alias;
}
diff --git a/src/safefile.c b/src/safefile.c
index 842a09f..ff94b3d 100644
--- a/src/safefile.c
+++ b/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.43 (Berkeley) 10/13/1998";
#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 != TrustedUid)
#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 && stbuf.st_uid == TrustedUid)
+ ;
+ 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 && st->st_uid == TrustedUid)
+ ;
+ 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 == TrustedUid ||
!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/src/savemail.c b/src/savemail.c
index 76209dc..6a18ee6 100644
--- a/src/savemail.c
+++ b/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.140 (Berkeley) 1/18/1999";
#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))
{
@@ -113,8 +91,7 @@ savemail(e, sendbody)
RF_COPYPARSE|RF_SENDERADDR, '\0', NULL, e) == NULL)
{
syserr("553 Cannot parse Postmaster!");
- ExitStat = EX_SOFTWARE;
- finis();
+ finis(TRUE, EX_SOFTWARE);
}
}
e->e_to = NULL;
@@ -366,9 +343,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 +378,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,9 +392,10 @@ 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);
+ (*e->e_puthdr)(&mcibuf, e->e_header, e, M87F_OUTER);
(*e->e_putbody)(&mcibuf, e, NULL);
putline("\n", &mcibuf);
(void) fflush(fp);
@@ -483,7 +463,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 +542,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 +621,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 +744,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 +787,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 +815,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 +859,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);
}
}
@@ -1155,7 +1139,7 @@ errbody(mci, e, separator)
}
}
putline("", mci);
- putheader(mci, e->e_parent->e_header, e->e_parent);
+ putheader(mci, e->e_parent->e_header, e->e_parent, M87F_OUTER);
if (sendbody)
putbody(mci, e->e_parent, e->e_msgboundary);
else if (e->e_msgboundary == NULL)
diff --git a/src/sendmail.0 b/src/sendmail.0
index d4472e8..0046bd3 100644
--- a/src/sendmail.0
+++ b/src/sendmail.0
@@ -14,8 +14,8 @@ DDEESSCCRRIIPPTTIIOONN
warding as necessary to deliver the message to the correct place.
SSeennddmmaaiill is not intended as a user interface routine; other programs pro-
- vide user-friendly front ends; sseennddmmaaiill is used only to deliver pre-
- formatted messages.
+ vide user-friendly front ends; sseennddmmaaiill is used only to deliver pre-for-
+ matted messages.
With no flags, sseennddmmaaiill reads its standard input up to an end-of-file or
a line consisting only of a single dot and sends a copy of the message
@@ -135,15 +135,13 @@ DDEESSCCRRIIPPTTIIOONN
--tt 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 _n_o_t receive
- copies even if listed in the message header.
+ deleted before transmission.
--UU Initial (user) submission. This should _a_l_w_a_y_s be set when
called from a user agent such as MMaaiill or eexxmmhh and _n_e_v_e_r be
set when called by a network delivery agent such as rrmmaaiill.
- --VV _e_n_v_i_d Set the original envelope id. This is propogated across SMTP
+ --VV _e_n_v_i_d Set the original envelope id. This is propagated across SMTP
to servers that support DSNs and is returned in DSN-compliant
error messages.
@@ -154,6 +152,9 @@ DDEESSCCRRIIPPTTIIOONN
file. This should only be used as a last resort for debug-
ging mailer bugs. It will log a lot of data very quickly.
+ ---- Stop processing command flags and use the rest of the argu-
+ ments as addresses.
+
OOppttiioonnss
There are also a number of processing options that may be set. Normally
these will only be used by a system administrator. Options may be set
@@ -194,7 +195,6 @@ DDEESSCCRRIIPPTTIIOONN
sage is not mailed back by modes `m' or `w' and if the sender
is local to this machine, a copy of the message is appended
-
to the file _d_e_a_d_._l_e_t_t_e_r in the sender's home directory.
SaveFromLine
@@ -329,9 +329,9 @@ DDEESSCCRRIIPPTTIIOONN
invoked as mmaaiillqq, sseennddmmaaiill will print the contents of the mail queue.
FFIILLEESS
- Except for the file _/_e_t_c_/_s_e_n_d_m_a_i_l_._c_f itself, the following pathnames are
- all specified in _/_e_t_c_/_s_e_n_d_m_a_i_l_._c_f_. Thus, these values are only approxima-
- tions.
+ Except for the file _/_e_t_c_/_s_e_n_d_m_a_i_l_._c_f itself and the daemon process ID
+ file, the following pathnames are all specified in _/_e_t_c_/_s_e_n_d_m_a_i_l_._c_f_.
+ Thus, these values are only approximations.
/etc/aliases raw data for alias names
/etc/aliases.db data base of alias names
@@ -339,8 +339,6 @@ FFIILLEESS
/etc/sendmail.hf help file
/var/log/sendmail.st collected statistics
/var/spool/mqueue/* temp files
- /var/run/sendmail.pid
- The process id of the daemon
SSEEEE AALLSSOO
binmail(1), mail(1), rmail(1), syslog(3), aliases(5), mailaddr(7),
@@ -355,4 +353,4 @@ SSEEEE AALLSSOO
HHIISSTTOORRYY
The sseennddmmaaiill command appeared in 4.2BSD.
-4th Berkeley Distribution September 20, 1996 6
+4th Berkeley Distribution August 2, 1998 6
diff --git a/src/sendmail.8 b/src/sendmail.8
index 9a0a687..093b6e6 100644
--- a/src/sendmail.8
+++ b/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.20 (Berkeley) 8/2/1998
.\"
-.Dd February 1, 1997
+.Dd August 2, 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
@@ -304,6 +277,9 @@ Log all traffic in and out of mailers in the indicated log file.
This should only be used as a last resort
for debugging mailer bugs.
It will log a lot of data very quickly.
+.It Fl -
+Stop processing command flags and use the rest of the arguments
+as addresses.
.El
.Ss Options
There are also a number of processing options that may be set.
@@ -553,7 +529,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 +548,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/src/sendmail.h b/src/sendmail.h
index fc3bf49..ff2697e 100644
--- a/src/sendmail.h
+++ b/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.295 (Berkeley) 1/26/1999
*/
/*
@@ -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.295 1/26/1999";
# 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 *));
@@ -477,7 +464,7 @@ struct envelope
short e_sendmode; /* message send mode */
short e_errormode; /* error return mode */
short e_timeoutclass; /* message timeout class */
- void (*e_puthdr)__P((MCI *, HDR *, ENVELOPE *));
+ void (*e_puthdr)__P((MCI *, HDR *, ENVELOPE *, int));
/* function to put header of message */
void (*e_putbody)__P((MCI *, ENVELOPE *, char *));
/* function to put body of message */
@@ -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 */
@@ -534,7 +522,7 @@ extern ENVELOPE *newenvelope __P((ENVELOPE *, ENVELOPE *));
extern void dropenvelope __P((ENVELOPE *, bool));
extern void clearenvelope __P((ENVELOPE *, bool));
-extern void putheader __P((MCI *, HDR *, ENVELOPE *));
+extern void putheader __P((MCI *, HDR *, ENVELOPE *, int));
extern void putbody __P((MCI *, ENVELOPE *, char *));
/*
** Message priority classes.
@@ -692,9 +680,11 @@ 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 */
+ pid_t map_pid; /* PID of process which opened map */
int map_lockfd; /* auxiliary lock file descriptor */
short map_specificity; /* specificity of aliases */
MAP *map_stack[MAXMAPSTACK]; /* list for stacked maps */
@@ -720,6 +710,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 +745,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 +940,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 +983,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 +999,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 *));
/*
@@ -1016,6 +1009,7 @@ extern bool filechanged __P((char *, int, struct stat *, int));
#define M87F_OUTER 0 /* outer context */
#define M87F_NO8BIT 0x0001 /* can't have 8-bit in this section */
#define M87F_DIGEST 0x0002 /* processing multipart/digest */
+#define M87F_NO8TO7 0x0004 /* don't do 8->7 bit conversions */
/*
@@ -1060,7 +1054,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
@@ -1085,6 +1079,7 @@ extern bool validate_connection __P((SOCKADDR *, char *, ENVELOPE *));
#define VENDOR_SUN 2 /* Sun-native configuration file */
#define VENDOR_HP 3 /* Hewlett-Packard specific config syntax */
#define VENDOR_IBM 4 /* IBM specific config syntax */
+#define VENDOR_SENDMAIL 5 /* Sendmail, Inc. specific config syntax */
EXTERN int VendorCode; /* vendor-specific operation enhancements */
@@ -1092,6 +1087,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_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
+#define DBS_INCLUDEFILEINUNSAFEDIRPATH 0x20000000
+
+/* 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 +1186,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 TrustedUid; /* uid of trusted user for files and startup */
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) */
@@ -1183,6 +1224,7 @@ EXTERN char SpaceSub; /* substitution for <lwsp> */
EXTERN int PrivacyFlags; /* privacy flags */
EXTERN char *ConfFile; /* location of configuration file [conf.c] */
EXTERN char *PidFile; /* location of proc id file [conf.c] */
+EXTERN char *ControlSocketName; /* control socket filename [control.c] */
extern ADDRESS NullAddress; /* a null (template) address [main.c] */
EXTERN long WkClassFact; /* multiplier for message class -> priority */
EXTERN long WkRecipFact; /* multiplier for # of recipients -> priority */
@@ -1215,6 +1257,8 @@ 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) */
+EXTERN int MaxHeadersLength; /* max length of headers */
#if _FFR_DSN_RRT_OPTION
EXTERN bool RrtImpliesDsn; /* turn Return-Receipt-To: into DSN */
#endif
@@ -1223,7 +1267,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 +1285,30 @@ 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 MaxMimeHeaderLength; /* maximum MIME header length */
+EXTERN int MaxMimeFieldLength; /* maximum MIME field length */
+
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 +1390,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 +1406,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((bool, volatile int));
extern void setsender __P((char *, ENVELOPE *, char **, int, bool));
extern void xputs __P((const char *));
extern void logsender __P((ENVELOPE *, char *));
@@ -1380,9 +1436,12 @@ extern void xfclose __P((FILE *, char *, char *));
extern int switch_map_find __P((char *, char *[], short []));
extern void shorten_hostname __P((char []));
extern int waitfor __P((pid_t));
-extern void proc_list_add __P((pid_t));
+extern void proc_list_add __P((pid_t, char *));
+extern void proc_list_set __P((pid_t, char *));
extern void proc_list_drop __P((pid_t));
extern void proc_list_clear __P((void));
+extern void proc_list_display __P((FILE *));
+extern void proc_list_probe __P((void));
extern void buffer_errors __P((void));
extern void flush_errors __P((bool));
extern void putline __P((char *, MCI *));
@@ -1409,10 +1468,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));
@@ -1420,6 +1479,8 @@ extern bool path_is_dir __P((char *, bool));
extern pid_t dowork __P((char *, bool, bool, ENVELOPE *));
extern int drop_privileges __P((bool));
extern void fill_fd __P((int, char *));
+extern void closecontrolsocket __P((bool));
+extern void clrcontrol __P((void));
extern const char *errstring __P((int));
extern sigfunc_t setsignal __P((int, sigfunc_t));
@@ -1437,30 +1498,17 @@ 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_setproctitle __P((bool, 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/src/sendmail.hf b/src/sendmail.hf
index 7ab6d61..0952963 100644
--- a/src/sendmail.hf
+++ b/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.18 (Berkeley) 11/19/1998
cpyr
smtp Topics:
smtp HELO EHLO MAIL RCPT DATA
@@ -111,3 +117,8 @@ dsn ORCPT Original recipient.
-bt /map mapname key :look up `key' in the indicated `mapname'.
-bt rules addr :run the indicated address through the named rules.
-bt Rules can be a comma separated list of rules.
+control Help for smcontrol:
+control help This message.
+control restart Restart sendmail.
+control shutdown Shutdown sendmail.
+control status Show sendmail status.
diff --git a/src/snprintf.c b/src/snprintf.c
new file mode 100644
index 0000000..3e07e1b
--- /dev/null
+++ b/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.12 (Berkeley) 10/13/1998";
+#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/src/srvrsmtp.c b/src/srvrsmtp.c
index cd47d5d..f4ffe8c 100644
--- a/src/srvrsmtp.c
+++ b/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.187 (Berkeley) 10/23/1998 (with SMTP)";
#else
-static char sccsid[] = "@(#)srvrsmtp.c 8.159 (Berkeley) 10/19/97 (without SMTP)";
+static char sccsid[] = "@(#)srvrsmtp.c 8.187 (Berkeley) 10/23/1998 (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;
+ volatile 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,7 +160,10 @@ smtp(nullserver, e)
if (CurSmtpClient == NULL)
CurSmtpClient = CurHostName;
- setproctitle("server %s startup", CurSmtpClient);
+ /* check_relay may have set discard bit, save for later */
+ discard = bitset(EF_DISCARD, e->e_flags);
+
+ sm_setproctitle(TRUE, "server %s startup", CurSmtpClient);
#if DAEMON
if (LogLevel > 11)
{
@@ -237,7 +222,7 @@ smtp(nullserver, e)
/* read the input line */
SmtpPhase = "server cmd read";
- setproctitle("server %s cmd read", CurSmtpClient);
+ sm_setproctitle(TRUE, "server %s cmd read", CurSmtpClient);
p = sfgets(inp, sizeof inp, InChannel, TimeOuts.to_nextcommand,
SmtpPhase);
@@ -258,15 +243,15 @@ smtp(nullserver, e)
CurSmtpClient);
/*
- ** If have not accepted mail (DATA), do not bounce
- ** bad addresses back to sender.
+ ** If have not accepted mail (DATA), do not bounce
+ ** bad addresses back to sender.
*/
if (bitset(EF_CLRQUEUE, e->e_flags))
e->e_sendqueue = NULL;
if (InChild)
ExitStat = EX_QUIT;
- finis();
+ finis(TRUE, ExitStat);
}
/* clean up end of line */
@@ -282,9 +267,9 @@ smtp(nullserver, e)
inp);
if (e->e_id == NULL)
- setproctitle("%s: %.80s", CurSmtpClient, inp);
+ sm_setproctitle(TRUE, "%s: %.80s", CurSmtpClient, inp);
else
- setproctitle("%s %s: %.80s", e->e_id, CurSmtpClient, inp);
+ sm_setproctitle(TRUE, "%s %s: %.80s", e->e_id, CurSmtpClient, inp);
/* break off command */
for (p = inp; isascii(*p) && isspace(*p); p++)
@@ -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;
@@ -463,7 +457,7 @@ smtp(nullserver, e)
{
errno = 0;
syserr("503 Nested MAIL command: MAIL %s", p);
- finis();
+ finis(TRUE, ExitStat);
}
/* make sure we know who the sending host is */
@@ -504,7 +498,7 @@ smtp(nullserver, e)
goto undo_subproc_no_pm;
nrcpts = 0;
e->e_flags |= EF_LOGSENDER|EF_CLRQUEUE;
- setproctitle("%s %s: %.80s", e->e_id, CurSmtpClient, inp);
+ sm_setproctitle(TRUE, "%s %s: %.80s", e->e_id, CurSmtpClient, inp);
/* child -- go do the processing */
if (setjmp(TopFrame) > 0)
@@ -518,7 +512,7 @@ smtp(nullserver, e)
QuickAbort = FALSE;
SuprErrs = TRUE;
e->e_flags &= ~EF_FATALERRS;
- finis();
+ finis(TRUE, ExitStat);
}
break;
}
@@ -639,8 +633,14 @@ smtp(nullserver, e)
if (p == NULL)
break;
a = parseaddr(p, NULLADDR, RF_COPYALL, ' ', &delimptr, e);
- if (a == NULL || Errors > 0)
+ if (Errors > 0)
+ break;
+ if (a == NULL)
+ {
+ usrerr("501 Missing recipient");
break;
+ }
+
if (delimptr != NULL && *delimptr != '\0')
*delimptr++ = '\0';
@@ -727,12 +727,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,8 +814,6 @@ smtp(nullserver, e)
if (!shouldqueue(e->e_msgpriority, e->e_ctime))
{
- extern pid_t dowork();
-
unlockqueue(e);
(void) dowork(id, TRUE, TRUE, e);
}
@@ -819,7 +822,7 @@ smtp(nullserver, e)
abortmessage:
/* if in a child, pop back to our parent */
if (InChild)
- finis();
+ finis(TRUE, ExitStat);
/* clean up a bit */
gotmail = FALSE;
@@ -838,7 +841,7 @@ smtp(nullserver, e)
e->e_sendqueue = NULL;
e->e_flags |= EF_CLRQUEUE;
if (InChild)
- finis();
+ finis(TRUE, ExitStat);
/* clean up a bit */
gotmail = FALSE;
@@ -863,7 +866,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 +884,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;
@@ -917,10 +920,21 @@ smtp(nullserver, e)
vrfyqueue = vrfyqueue->q_next;
}
if (InChild)
- finis();
+ finis(TRUE, ExitStat);
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 +948,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);
@@ -973,10 +996,11 @@ doquit:
sm_syslog(LOG_INFO, NULL,
"Null connection from %.100s",
CurSmtpClient);
- finis();
+ finis(TRUE, ExitStat);
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 +1057,7 @@ doquit:
}
usrerr("500 Command unrecognized: \"%s\"",
- shortenstring(inp, 203));
+ shortenstring(inp, MAXSHORTSTR));
break;
default:
@@ -1095,7 +1119,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 +1139,7 @@ skipword(p, w)
{
syntax:
usrerr("501 Syntax error in parameters scanning \"%s\"",
- shortenstring(firstp, 203));
+ shortenstring(firstp, MAXSHORTSTR));
return (NULL);
}
*p++ = '\0';
@@ -1397,7 +1421,7 @@ runinchild(label, e)
auto int st;
/* parent -- wait for child to complete */
- setproctitle("server %s child wait", CurSmtpClient);
+ sm_setproctitle(TRUE, "server %s child wait", CurSmtpClient);
st = waitfor(childpid);
if (st == -1)
syserr("451 %s: lost child", label);
@@ -1409,7 +1433,7 @@ runinchild(label, e)
if (WEXITSTATUS(st) == EX_QUIT)
{
disconnect(1, e);
- finis();
+ finis(TRUE, ExitStat);
}
/* restore the child signal */
@@ -1427,10 +1451,6 @@ runinchild(label, e)
(void) releasesignal(SIGCHLD);
}
}
-
- /* open alias database */
- initmaps(FALSE, e);
-
return (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/src/stab.c b/src/stab.c
index 7d480b9..37b87a3 100644
--- a/src/stab.c
+++ b/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/1998";
#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/src/stats.c b/src/stats.c
index cb0f9dd..b1162ff 100644
--- a/src/stats.c
+++ b/src/stats.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[] = "@(#)stats.c 8.11 (Berkeley) 4/9/97";
+static char sccsid[] = "@(#)stats.c 8.22 (Berkeley) 5/19/1998";
#endif /* not lint */
# include "sendmail.h"
@@ -50,11 +28,22 @@ bool GotStats = FALSE; /* set when we have stats to merge */
*/
void
-markstats(e, to)
+markstats(e, to, reject)
register ENVELOPE *e;
register ADDRESS *to;
+ bool reject;
{
- if (to == NULL)
+ 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)
{
@@ -88,6 +77,7 @@ poststats(sfile)
char *sfile;
{
register int fd;
+ int sff = SFF_REGONLY|SFF_OPENASROOT;
struct statistics stat;
extern off_t lseek();
@@ -96,15 +86,27 @@ poststats(sfile)
(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_REGONLY|SFF_NOLINK|SFF_OPENASROOT);
+ 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_size == sizeof stat &&
+ stat.stat_magic == Stat.stat_magic &&
+ stat.stat_version == Stat.stat_version)
{
/* merge current statistics into statfile */
register int i;
@@ -115,6 +117,8 @@ poststats(sfile)
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
diff --git a/src/sysexits.c b/src/sysexits.c
index 3695536..c7934c7 100644
--- a/src/sysexits.c
+++ b/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/1998";
#endif /* not lint */
-#include <sendmail.h>
+#include "sendmail.h"
/*
** SYSEXITS.C -- error messages corresponding to sysexits.h
diff --git a/src/trace.c b/src/trace.c
index 49a1ae0..5ab6032 100644
--- a/src/trace.c
+++ b/src/trace.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[] = "@(#)trace.c 8.6 (Berkeley) 2/1/97";
+static char sccsid[] = "@(#)trace.c 8.12 (Berkeley) 5/19/1998";
#endif /* not lint */
# include "sendmail.h"
@@ -94,7 +72,7 @@ tTflag(s)
{
/* find first flag to set */
i = 0;
- while (isdigit(*s))
+ while (isascii(*s) && isdigit(*s))
i = i * 10 + (*s++ - '0');
first = i;
@@ -102,7 +80,7 @@ tTflag(s)
if (*s == '-')
{
i = 0;
- while (isdigit(*++s))
+ while (isascii(*++s) && isdigit(*s))
i = i * 10 + (*s - '0');
}
last = i;
@@ -112,7 +90,7 @@ tTflag(s)
if (*s == '.')
{
i = 0;
- while (isdigit(*++s))
+ while (isascii(*++s) && isdigit(*s))
i = i * 10 + (*s - '0');
}
diff --git a/src/udb.c b/src/udb.c
index cf77bdc..96c6513 100644
--- a/src/udb.c
+++ b/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.71 (Berkeley) 1/17/1999 (with USERDB)";
#else
-static char sccsid [] = "@(#)udb.c 8.51 (Berkeley) 5/29/97 (without USERDB)";
+static char sccsid [] = "@(#)udb.c 8.71 (Berkeley) 1/17/1999 (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.
**
@@ -72,6 +49,7 @@ struct udbent
{
char *udb_spec; /* string version of spec */
int udb_type; /* type of entry */
+ pid_t udb_pid; /* PID of process which opened db */
char *udb_default; /* default host for outgoing mail */
union
{
@@ -114,12 +92,15 @@ struct udbent
#define MAXUDBENT 10 /* maximum number of UDB entries */
-struct option
+struct udb_option
{
char *name;
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
@@ -160,8 +141,12 @@ udbexpand(a, sendq, aliaslevel, e)
register struct udbent *up;
int keylen;
int naddrs;
+ char *user;
char keybuf[MAXKEY];
+ bzero(&key, sizeof key);
+ bzero(&info, sizeof info);
+
if (tTd(28, 1))
printf("udbexpand(%s)\n", a->q_paddr);
@@ -181,20 +166,24 @@ udbexpand(a, sendq, aliaslevel, e)
if (UdbSpec == NULL || UdbSpec[0] == '\0')
return EX_OK;
+ /* extract user to do userdb matching on */
+ user = a->q_user;
+
/* short circuit name begins with '\\' since it can't possibly match */
- if (a->q_user[0] == '\\')
+ /* (might want to treat this as unquoted instead) */
+ if (user[0] == '\\')
return EX_OK;
/* if name is too long, assume it won't match */
- if (strlen(a->q_user) > (SIZE_T) sizeof keybuf - 12)
+ if (strlen(user) > (SIZE_T) sizeof keybuf - 12)
return EX_OK;
/* if name begins with a colon, it indicates our metadata */
- if (a->q_user[0] == ':')
+ if (user[0] == ':')
return EX_OK;
/* build actual database key */
- (void) strcpy(keybuf, a->q_user);
+ (void) strcpy(keybuf, user);
(void) strcat(keybuf, ":maildrop");
keylen = strlen(keybuf);
@@ -208,6 +197,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 +223,36 @@ 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 &&
+# if DB_VERSION_MAJOR > 2 || DB_VERSION_MINOR >=6
+ (errno = (*up->udb_dbp->cursor)(up->udb_dbp,
+ NULL, &dbc, 0)) != 0)
+# else
+ (errno = (*up->udb_dbp->cursor)(up->udb_dbp,
+ NULL, &dbc)) != 0)
+# endif
+ 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 +269,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,9 +307,24 @@ 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)
break;
@@ -296,7 +334,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 +348,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 +357,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 +401,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 +412,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 +451,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 +472,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 +566,7 @@ char *
udbsender(sender)
char *sender;
{
- extern char *udbmatch();
+ extern char *udbmatch __P((char *, char *));
return udbmatch(sender, "mailname");
}
@@ -581,9 +628,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 +652,6 @@ udbmatch(user, field)
if (tTd(28, 1))
printf("udbmatch ==> %s\n", p);
return p;
- break;
#endif
#ifdef HESIOD
@@ -647,9 +700,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 +728,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 +752,6 @@ udbmatch(user, field)
if (tTd(28, 1))
printf("udbmatch ==> %s\n", p);
return p;
- break;
#endif
#ifdef HESIOD
@@ -750,6 +818,7 @@ udbmatch(user, field)
** The rewritten name otherwise.
*/
+/* ARGSUSED3 */
char *
udb_map_lookup(map, name, av, statp)
MAP *map;
@@ -809,6 +878,7 @@ int
_udbx_init(e)
ENVELOPE *e;
{
+ int ents = 0;
register char *p;
register struct udbent *up;
@@ -825,7 +895,6 @@ _udbx_init(e)
while (p != NULL)
{
char *spec;
- int nopts;
int l;
# if 0
auto int rcode;
@@ -834,8 +903,8 @@ _udbx_init(e)
register struct hostent *h;
char *mxhosts[MAXMXHOSTS + 1];
# endif
- struct option opts[MAXUDBOPTS + 1];
- extern int _udb_parsespec __P((char *, struct option [], int));
+ struct udb_option opts[MAXUDBOPTS + 1];
+ extern int _udb_parsespec __P((char *, struct udb_option [], int));
while (*p == ' ' || *p == '\t' || *p == ',')
p++;
@@ -846,8 +915,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.
@@ -908,12 +983,14 @@ _udbx_init(e)
if (h == NULL)
continue;
up->udb_type = UDB_REMOTE;
+ up->udb_pid = getpid();
up->udb_addr.sin_family = h->h_addrtype;
bcopy(h->h_addr_list[0],
(char *) &up->udb_addr.sin_addr,
INADDRSZ);
up->udb_addr.sin_port = UdbPort;
up->udb_timeout = UdbTimeout;
+ ents++;
up++;
}
@@ -928,7 +1005,9 @@ _udbx_init(e)
case '@': /* forward to remote host */
up->udb_type = UDB_FORWARD;
+ up->udb_pid = getpid();
up->udb_fwdhost = spec + 1;
+ ents++;
up++;
break;
@@ -938,6 +1017,8 @@ _udbx_init(e)
if (strcasecmp(spec, "hesiod") != 0)
goto badspec;
up->udb_type = UDB_HESIOD;
+ up->udb_pid = getpid();
+ ents++;
up++;
break;
#endif /* HESIOD */
@@ -956,15 +1037,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 +1064,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;
@@ -985,7 +1080,18 @@ _udbx_init(e)
free(up->udb_dbname);
break;
}
+ if (tTd(28, 1))
+ {
+#if DB_VERSION_MAJOR < 2
+ printf("_udbx_init: dbopen(%s)\n",
+#else
+ printf("_udbx_init: db_open(%s)\n",
+#endif
+ up->udb_dbname);
+ }
up->udb_type = UDB_DBFETCH;
+ up->udb_pid = getpid();
+ ents++;
up++;
break;
#endif
@@ -1051,7 +1157,16 @@ 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
+ if (tTd(28, 1))
+ {
+ printf("_udbx_init: db->close(%s)\n",
+ up->udb_dbname);
+ }
}
}
#endif
@@ -1061,7 +1176,7 @@ badspec:
int
_udb_parsespec(udbspec, opt, maxopts)
char *udbspec;
- struct option opt[];
+ struct udb_option opt[];
int maxopts;
{
register char *spec;
@@ -1087,6 +1202,48 @@ _udb_parsespec(udbspec, opt, maxopts)
}
return optnum;
}
+ /*
+** _UDBX_CLOSE -- close all file based UDB entries.
+**
+** Parameters:
+** none
+**
+** Returns:
+** none
+*/
+void
+_udbx_close()
+{
+ pid_t pid;
+ struct udbent *up;
+
+ if (!UdbInitialized)
+ return;
+
+ pid = getpid();
+
+ for (up = UdbEnts; up->udb_type != UDB_EOLIST; up++)
+ {
+ if (up->udb_pid != pid)
+ continue;
+
+#ifdef NEWDB
+ 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
+ }
+ if (tTd(28, 1))
+ {
+ printf("_udbx_init: db->close(%s)\n",
+ up->udb_dbname);
+ }
+#endif
+ }
+}
#ifdef HESIOD
@@ -1096,7 +1253,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 +1271,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 +1298,7 @@ hes_udb_get(key, info)
return 1;
}
+#endif /* HESIOD_INIT */
else
{
/*
diff --git a/src/useful.h b/src/useful.h
index 59182fe..a19dd9e 100644
--- a/src/useful.h
+++ b/src/useful.h
@@ -1,37 +1,15 @@
/*
- * 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.
*
- * @(#)useful.h 8.7 (Berkeley) 5/29/97
+ * @(#)useful.h 8.12 (Berkeley) 5/19/1998
*/
# include <sys/types.h>
diff --git a/src/usersmtp.c b/src/usersmtp.c
index b088d60..c82942b 100644
--- a/src/usersmtp.c
+++ b/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.111 (Berkeley) 2/3/1999 (with SMTP)";
#else
-static char sccsid[] = "@(#)usersmtp.c 8.88 (Berkeley) 10/20/97 (without SMTP)";
+static char sccsid[] = "@(#)usersmtp.c 8.111 (Berkeley) 2/3/1999 (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))
{
@@ -140,7 +118,7 @@ smtpinit(m, mci, e)
*/
SmtpPhase = mci->mci_phase = "client greeting";
- setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
+ sm_setproctitle(TRUE, "%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
r = reply(m, mci, e, TimeOuts.to_initial, esmtp_check);
if (r < 0)
goto tempfail1;
@@ -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";
@@ -181,18 +151,14 @@ tryhelo:
smtpmessage("HELO %s", m, mci, MyHostName);
SmtpPhase = mci->mci_phase = "client HELO";
}
- setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
+ sm_setproctitle(TRUE, "%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
r = reply(m, mci, e, TimeOuts.to_helo, helo_options);
if (r < 0)
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);
@@ -363,7 +327,6 @@ smtpmailfrom(m, mci, e)
ENVELOPE *e;
{
int r;
- int l;
char *bufp;
char *bodytype;
char buf[MAXNAME + 1];
@@ -373,11 +336,12 @@ smtpmailfrom(m, mci, e)
printf("smtpmailfrom: CurHost=%s\n", CurHostName);
/* set up appropriate options to include */
+ bufp = optbuf;
if (bitset(MCIF_SIZE, mci->mci_flags) && e->e_msgsize > 0)
snprintf(optbuf, sizeof optbuf, " SIZE=%ld", e->e_msgsize);
else
strcpy(optbuf, "");
- l = sizeof optbuf - strlen(optbuf) - 1;
+ bufp = &optbuf[strlen(optbuf)];
bodytype = e->e_bodytype;
if (bitset(MCIF_8BITMIME, mci->mci_flags))
@@ -388,11 +352,12 @@ smtpmailfrom(m, mci, e)
!bitset(EF_DONT_MIME, e->e_flags) &&
!bitnset(M_8BITS, m->m_flags))
bodytype = "8BITMIME";
- if (bodytype != NULL && strlen(bodytype) + 7 < l)
+ if (bodytype != NULL &&
+ SPACELEFT(optbuf, bufp) > strlen(bodytype) + 7)
{
- strcat(optbuf, " BODY=");
- strcat(optbuf, bodytype);
- l -= strlen(optbuf);
+ snprintf(bufp, SPACELEFT(optbuf, bufp),
+ " BODY=%s", bodytype);
+ bufp += strlen(bufp);
}
}
else if (bitnset(M_8BITS, m->m_flags) ||
@@ -416,29 +381,30 @@ 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;
}
if (bitset(MCIF_DSN, mci->mci_flags))
{
- if (e->e_envid != NULL && strlen(e->e_envid) < (SIZE_T) (l - 7))
+ if (e->e_envid != NULL &&
+ SPACELEFT(optbuf, bufp) > strlen(e->e_envid) + 7)
{
- strcat(optbuf, " ENVID=");
- strcat(optbuf, e->e_envid);
- l -= strlen(optbuf);
+ snprintf(bufp, SPACELEFT(optbuf, bufp),
+ " ENVID=%s", e->e_envid);
+ bufp += strlen(bufp);
}
/* RET= parameter */
- if (bitset(EF_RET_PARAM, e->e_flags) && l >= 9)
+ if (bitset(EF_RET_PARAM, e->e_flags) &&
+ SPACELEFT(optbuf, bufp) > 9)
{
- strcat(optbuf, " RET=");
- if (bitset(EF_NO_BODY_RETN, e->e_flags))
- strcat(optbuf, "HDRS");
- else
- strcat(optbuf, "FULL");
- l -= 9;
+ snprintf(bufp, SPACELEFT(optbuf, bufp),
+ " RET=%s",
+ bitset(EF_NO_BODY_RETN, e->e_flags) ?
+ "HDRS" : "FULL");
+ bufp += strlen(bufp);
}
}
@@ -475,7 +441,7 @@ smtpmailfrom(m, mci, e)
*bufp == '@' ? ',' : ':', bufp, optbuf);
}
SmtpPhase = mci->mci_phase = "client MAIL";
- setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
+ sm_setproctitle(TRUE, "%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
r = reply(m, mci, e, TimeOuts.to_mail, NULL);
if (r < 0)
{
@@ -492,15 +458,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 +482,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 +498,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));
}
@@ -571,11 +531,11 @@ smtprcpt(to, m, mci, e)
ENVELOPE *e;
{
register int r;
- int l;
+ char *bufp;
char optbuf[MAXLINE];
strcpy(optbuf, "");
- l = sizeof optbuf - 1;
+ bufp = &optbuf[strlen(optbuf)];
if (bitset(MCIF_DSN, mci->mci_flags))
{
/* NOTIFY= parameter */
@@ -585,44 +545,45 @@ smtprcpt(to, m, mci, e)
{
bool firstone = TRUE;
- strcat(optbuf, " NOTIFY=");
+ strcat(bufp, " NOTIFY=");
if (bitset(QPINGONSUCCESS, to->q_flags))
{
- strcat(optbuf, "SUCCESS");
+ strcat(bufp, "SUCCESS");
firstone = FALSE;
}
if (bitset(QPINGONFAILURE, to->q_flags))
{
if (!firstone)
- strcat(optbuf, ",");
- strcat(optbuf, "FAILURE");
+ strcat(bufp, ",");
+ strcat(bufp, "FAILURE");
firstone = FALSE;
}
if (bitset(QPINGONDELAY, to->q_flags))
{
if (!firstone)
- strcat(optbuf, ",");
- strcat(optbuf, "DELAY");
+ strcat(bufp, ",");
+ strcat(bufp, "DELAY");
firstone = FALSE;
}
if (firstone)
- strcat(optbuf, "NEVER");
- l -= strlen(optbuf);
+ strcat(bufp, "NEVER");
+ bufp += strlen(bufp);
}
/* ORCPT= parameter */
- if (to->q_orcpt != NULL && strlen(to->q_orcpt) + 7 < l)
+ if (to->q_orcpt != NULL &&
+ SPACELEFT(optbuf, bufp) > strlen(to->q_orcpt) + 7)
{
- strcat(optbuf, " ORCPT=");
- strcat(optbuf, to->q_orcpt);
- l -= strlen(optbuf);
+ snprintf(bufp, SPACELEFT(optbuf, bufp),
+ " ORCPT=%s", to->q_orcpt);
+ bufp += strlen(bufp);
}
}
smtpmessage("RCPT To:<%s>%s", m, mci, to->q_user, optbuf);
SmtpPhase = mci->mci_phase = "client RCPT";
- setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
+ sm_setproctitle(TRUE, "%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
r = reply(m, mci, e, TimeOuts.to_rcpt, NULL);
to->q_rstatus = newstr(SmtpReplyBuffer);
to->q_status = smtptodsn(r);
@@ -655,7 +616,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 +639,7 @@ smtprcpt(to, m, mci, e)
*/
static jmp_buf CtxDataTimeout;
-static void datatimeout();
+static void datatimeout __P((void));
int
smtpdata(m, mci, e)
@@ -703,7 +664,7 @@ smtpdata(m, mci, e)
/* send the command and check ok to proceed */
smtpmessage("DATA", m, mci);
SmtpPhase = mci->mci_phase = "client DATA 354";
- setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
+ sm_setproctitle(TRUE, "%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
r = reply(m, mci, e, TimeOuts.to_datainit, NULL);
if (r < 0 || REPLYTYPE(r) == 4)
{
@@ -715,13 +676,13 @@ smtpdata(m, mci, e)
smtprset(m, mci, e);
return EX_UNAVAILABLE;
}
- else if (r != 354)
+ else if (REPLYTYPE(r) != 3)
{
if (LogLevel > 1)
{
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 +701,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;
}
@@ -755,7 +716,7 @@ smtpdata(m, mci, e)
** Output the actual message.
*/
- (*e->e_puthdr)(mci, e->e_header, e);
+ (*e->e_puthdr)(mci, e->e_header, e, M87F_OUTER);
(*e->e_putbody)(mci, e, NULL);
/*
@@ -783,11 +744,9 @@ 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
+ sm_setproctitle(TRUE, "%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
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 +777,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 +801,6 @@ datatimeout()
** The exit status corresponding to the reply code.
*/
-#if _FFR_LMTP
-
int
smtpgetstat(m, mci, e)
MAILER *m;
@@ -871,18 +828,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 +977,6 @@ reply(m, mci, e, timeout, pfunc)
for (;;)
{
register char *p;
- extern time_t curtime();
/* actually do the read */
if (e->e_xfp != NULL)
@@ -1053,8 +1009,11 @@ reply(m, mci, e, timeout, pfunc)
mci->mci_errno = errno;
oldholderrs = HoldErrs;
HoldErrs = TRUE;
- usrerr("451 reply: read error from %s", mci->mci_host);
- mci_setstat(mci, EX_TEMPFAIL, "4.4.2", MsgBuf);
+ usrerr("451 reply: read error from %s", CurHostName);
+
+ /* errors on QUIT should not be persistent */
+ if (strncmp(SmtpMsgBuffer, "QUIT", 4) != 0)
+ mci_setstat(mci, EX_TEMPFAIL, "4.4.2", MsgBuf);
/* if debugging, pause so we can see state */
if (tTd(18, 100))
@@ -1072,13 +1031,14 @@ 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 == NULL ? "NO_HOST" : CurHostName,
+ SmtpPhase);
checkfd012(wbuf);
}
#endif
@@ -1116,7 +1076,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 +1106,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/src/util.c b/src/util.c
index 2e5aebe..0cb8992 100644
--- a/src/util.c
+++ b/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.168 (Berkeley) 1/21/1999";
#endif /* not lint */
# include "sendmail.h"
@@ -80,6 +58,298 @@ 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;
+}
+ /*
+** SHORTEN_RFC822_STRING -- Truncate and rebalance an RFC822 string
+**
+** Arbitratily shorten (in place) an RFC822 string and rebalance
+** comments and quotes.
+**
+** Parameters:
+** string -- the string to shorten
+** length -- the maximum size, 0 if no maximum
+**
+** Returns:
+** TRUE if string is changed, FALSE otherwise
+**
+** Side Effects:
+** Changes string in place, possibly resulting
+** in a shorter string.
+*/
+
+bool
+shorten_rfc822_string(string, length)
+ char *string;
+ size_t length;
+{
+ bool backslash = FALSE;
+ bool modified = FALSE;
+ bool quoted = FALSE;
+ size_t slen;
+ int parencount = 0;
+ char *ptr = string;
+
+ /*
+ ** If have to rebalance an already short enough string,
+ ** need to do it within allocated space.
+ */
+ slen = strlen(string);
+ if (length == 0 || slen < length)
+ length = slen;
+
+ while (*ptr != '\0')
+ {
+ if (backslash)
+ {
+ backslash = FALSE;
+ goto increment;
+ }
+
+ if (*ptr == '\\')
+ backslash = TRUE;
+ else if (*ptr == '(')
+ {
+ if (!quoted)
+ parencount++;
+ }
+ else if (*ptr == ')')
+ {
+ if (--parencount < 0)
+ parencount = 0;
+ }
+
+ /* Inside a comment, quotes don't matter */
+ if (parencount <= 0 && *ptr == '"')
+ quoted = !quoted;
+
+increment:
+ /* Check for sufficient space for next character */
+ if (length - (ptr - string) <= ((backslash ? 1 : 0) +
+ parencount +
+ (quoted ? 1 : 0)))
+ {
+ /* Not enough, backtrack */
+ if (*ptr == '\\')
+ backslash = FALSE;
+ else if (*ptr == '(' && !quoted)
+ parencount--;
+ else if (*ptr == '"' && parencount == 0)
+ quoted = FALSE;
+ break;
+ }
+ ptr++;
+ }
+
+ /* Rebalance */
+ while (parencount-- > 0)
+ {
+ if (*ptr != ')')
+ {
+ modified = TRUE;
+ *ptr = ')';
+ }
+ ptr++;
+ }
+ if (quoted)
+ {
+ if (*ptr != '"')
+ {
+ modified = TRUE;
+ *ptr = '"';
+ }
+ ptr++;
+ }
+ if (*ptr != '\0')
+ {
+ modified = TRUE;
+ *ptr = '\0';
+ }
+ return modified;
+}
+ /*
+** FIND_CHARACTER -- find an unquoted character in an RFC822 string
+**
+** Find an unquoted, non-commented character in an RFC822
+** string and return a pointer to its location in the
+** string.
+**
+** Parameters:
+** string -- the string to search
+** character -- the character to find
+**
+** Returns:
+** pointer to the character, or
+** a pointer to the end of the line if character is not found
+*/
+
+char *
+find_character(string, character)
+ char *string;
+ char character;
+{
+ bool backslash = FALSE;
+ bool quoted = FALSE;
+ int parencount = 0;
+
+ while (string != NULL && *string != '\0')
+ {
+ if (backslash)
+ {
+ backslash = FALSE;
+ if (!quoted && character == '\\' && *string == '\\')
+ break;
+ string++;
+ continue;
+ }
+ switch (*string)
+ {
+ case '\\':
+ backslash = TRUE;
+ break;
+
+ case '(':
+ if (!quoted)
+ parencount++;
+ break;
+
+ case ')':
+ if (--parencount < 0)
+ parencount = 0;
+ break;
+ }
+
+ /* Inside a comment, nothing matters */
+ if (parencount > 0)
+ {
+ string++;
+ continue;
+ }
+
+ if (*string == '"')
+ quoted = !quoted;
+ else if (*string == character && !quoted)
+ break;
+ string++;
+ }
+
+ /* Return pointer to the character */
+ return string;
+}
+ /*
** XALLOC -- Allocate memory and bitch wildly on failure.
**
** THIS IS A CLUDGE. This should be made to give a proper
@@ -286,10 +556,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 +812,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 +847,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 +858,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 +893,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 +904,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 +914,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 +1014,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)
@@ -727,6 +1026,7 @@ sfgets(buf, siz, fp, timeout, during)
{
register EVENT *ev = NULL;
register char *p;
+ int save_errno;
if (fp == NULL)
{
@@ -744,7 +1044,6 @@ sfgets(buf, siz, fp, timeout, during)
"timeout waiting for input from %.100s during %s",
CurHostName ? CurHostName : "local",
during);
- errno = 0;
buf[0] = '\0';
#if XDEBUG
checkfd012(during);
@@ -752,6 +1051,7 @@ sfgets(buf, siz, fp, timeout, during)
if (TrafficLogFile != NULL)
fprintf(TrafficLogFile, "%05d <<< [TIMEOUT]\n",
(int) getpid());
+ errno = 0;
return (NULL);
}
ev = setevent(timeout, readtimeout, 0);
@@ -759,6 +1059,7 @@ sfgets(buf, siz, fp, timeout, during)
/* try to read */
p = NULL;
+ errno = 0;
while (!feof(fp) && !ferror(fp))
{
errno = 0;
@@ -767,6 +1068,7 @@ sfgets(buf, siz, fp, timeout, during)
break;
clearerr(fp);
}
+ save_errno = errno;
/* clear the event if it has not sprung */
clrevent(ev);
@@ -778,6 +1080,7 @@ sfgets(buf, siz, fp, timeout, during)
buf[0] = '\0';
if (TrafficLogFile != NULL)
fprintf(TrafficLogFile, "%05d <<< [EOF]\n", (int) getpid());
+ errno = save_errno;
return (NULL);
}
if (TrafficLogFile != NULL)
@@ -801,6 +1104,7 @@ sfgets(buf, siz, fp, timeout, during)
return (buf);
}
+/* ARGSUSED */
static void
readtimeout(timeout)
time_t timeout;
@@ -1192,20 +1496,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 +1612,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 +1641,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 +1756,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 +1961,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;
@@ -1751,7 +2026,13 @@ path_is_dir(pathname, createflag)
** none
*/
-static pid_t *ProcListVec = NULL;
+struct procs
+{
+ pid_t proc_pid;
+ char *proc_task;
+};
+
+static struct procs *ProcListVec = NULL;
static int ProcListSize = 0;
#define NO_PID ((pid_t) 0)
@@ -1760,15 +2041,15 @@ static int ProcListSize = 0;
#endif
void
-proc_list_add(pid)
+proc_list_add(pid, task)
pid_t pid;
+ char *task;
{
int i;
- extern void proc_list_probe __P((void));
for (i = 0; i < ProcListSize; i++)
{
- if (ProcListVec[i] == NO_PID)
+ if (ProcListVec[i].proc_pid == NO_PID)
break;
}
if (i >= ProcListSize)
@@ -1779,29 +2060,66 @@ proc_list_add(pid)
/* now scan again */
for (i = 0; i < ProcListSize; i++)
{
- if (ProcListVec[i] == NO_PID)
+ if (ProcListVec[i].proc_pid == NO_PID)
break;
}
}
if (i >= ProcListSize)
{
/* grow process list */
- pid_t *npv;
+ struct procs *npv;
- npv = (pid_t *) xalloc(sizeof (pid_t) * (ProcListSize + PROC_LIST_SEG));
+ npv = (struct procs *) xalloc(sizeof (struct procs) * (ProcListSize + PROC_LIST_SEG));
if (ProcListSize > 0)
{
- bcopy(ProcListVec, npv, ProcListSize * sizeof (pid_t));
+ bcopy(ProcListVec, npv, ProcListSize *
+ sizeof (struct procs));
free(ProcListVec);
}
for (i = ProcListSize; i < ProcListSize + PROC_LIST_SEG; i++)
- npv[i] = NO_PID;
+ {
+ npv[i].proc_pid = NO_PID;
+ npv[i].proc_task = NULL;
+ }
i = ProcListSize;
ProcListSize += PROC_LIST_SEG;
ProcListVec = npv;
}
- ProcListVec[i] = pid;
- CurChildren++;
+ ProcListVec[i].proc_pid = pid;
+ ProcListVec[i].proc_task = newstr(task);
+
+ /* if process adding itself, it's not a child */
+ if (pid != getpid())
+ CurChildren++;
+}
+ /*
+** PROC_LIST_SET -- set pid task in process list
+**
+** Parameters:
+** pid -- pid to set
+** task -- task of pid
+**
+** Returns:
+** none.
+*/
+
+void
+proc_list_set(pid, task)
+ pid_t pid;
+ char *task;
+{
+ int i;
+
+ for (i = 0; i < ProcListSize; i++)
+ {
+ if (ProcListVec[i].proc_pid == pid)
+ {
+ if (ProcListVec[i].proc_task != NULL)
+ free(ProcListVec[i].proc_task);
+ ProcListVec[i].proc_task = newstr(task);
+ break;
+ }
+ }
}
/*
** PROC_LIST_DROP -- drop pid from process list
@@ -1821,9 +2139,14 @@ proc_list_drop(pid)
for (i = 0; i < ProcListSize; i++)
{
- if (ProcListVec[i] == pid)
+ if (ProcListVec[i].proc_pid == pid)
{
- ProcListVec[i] = NO_PID;
+ ProcListVec[i].proc_pid = NO_PID;
+ if (ProcListVec[i].proc_task != NULL)
+ {
+ free(ProcListVec[i].proc_task);
+ ProcListVec[i].proc_task = NULL;
+ }
break;
}
}
@@ -1845,8 +2168,16 @@ proc_list_clear()
{
int i;
- for (i = 0; i < ProcListSize; i++)
- ProcListVec[i] = NO_PID;
+ /* start from 1 since 0 is the daemon itself */
+ for (i = 1; i < ProcListSize; i++)
+ {
+ ProcListVec[i].proc_pid = NO_PID;
+ if (ProcListVec[i].proc_task != NULL)
+ {
+ free(ProcListVec[i].proc_task);
+ ProcListVec[i].proc_task = NULL;
+ }
+ }
CurChildren = 0;
}
/*
@@ -1864,17 +2195,23 @@ proc_list_probe()
{
int i;
- for (i = 0; i < ProcListSize; i++)
+ /* start from 1 since 0 is the daemon itself */
+ for (i = 1; i < ProcListSize; i++)
{
- if (ProcListVec[i] == NO_PID)
+ if (ProcListVec[i].proc_pid == NO_PID)
continue;
- if (kill(ProcListVec[i], 0) < 0)
+ if (kill(ProcListVec[i].proc_pid, 0) < 0)
{
if (LogLevel > 3)
sm_syslog(LOG_DEBUG, CurEnv->e_id,
"proc_list_probe: lost pid %d",
- ProcListVec[i]);
- ProcListVec[i] = NO_PID;
+ (int) ProcListVec[i].proc_pid);
+ ProcListVec[i].proc_pid = NO_PID;
+ if (ProcListVec[i].proc_task != NULL)
+ {
+ free(ProcListVec[i].proc_task);
+ ProcListVec[i].proc_task = NULL;
+ }
CurChildren--;
}
}
@@ -1882,6 +2219,35 @@ proc_list_probe()
CurChildren = 0;
}
/*
+** PROC_LIST_DISPLAY -- display the process list
+**
+** Parameters:
+** out -- output file pointer
+**
+** Returns:
+** none.
+*/
+
+void
+proc_list_display(out)
+ FILE *out;
+{
+ int i;
+
+ for (i = 0; i < ProcListSize; i++)
+ {
+ if (ProcListVec[i].proc_pid == NO_PID)
+ continue;
+
+ fprintf(out, "%d %s%s\n", (int) ProcListVec[i].proc_pid,
+ ProcListVec[i].proc_task != NULL ?
+ ProcListVec[i].proc_task : "(unknown)",
+ (OpMode == MD_SMTP ||
+ OpMode == MD_DAEMON ||
+ OpMode == MD_ARPAFTP) ? "\r" : "");
+ }
+}
+ /*
** SM_STRCASECMP -- 8-bit clean version of strcasecmp
**
** Thank you, vendors, for making this all necessary.
diff --git a/src/version.c b/src/version.c
index dc041ba..6f9d05e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -1,39 +1,17 @@
/*
- * 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.
*/
#ifndef lint
-static char sccsid[] = "@(#)version.c 8.8.8.1 (Berkeley) 10/24/97";
+static char sccsid[] = "@(#)version.c 8.9.3.1 (Berkeley) 2/4/1999";
#endif /* not lint */
-char Version[] = "8.8.8";
+char Version[] = "8.9.3";
diff --git a/test/Results b/test/Results
index 3d930da..e31a68b 100644
--- a/test/Results
+++ b/test/Results
@@ -60,6 +60,7 @@ Linux 0.99p14 OK 93.11.30 Christian Kuhtz <chk@data-hh.Hanse.DE>
Linux 1.0 OK 94.03.19 Shayne Smith <snsmith@rastus.brisnet.org.au>
Linux 1.2.13 OK 95.11.02 Sven Neuhaus <sven@ping.de>
Linux 2.0.17 OK 96.09.03 Horst von Brand <vonbrand@sleipnir.valparaiso.cl>
+Linux 2.1.109 OK 98.07.21 John Kennedy <jk@csuchico.edu>
BSD/386 1.0 OK 93.11.13 Tony Sanders
@@ -81,6 +82,7 @@ Solaris 2.5.1 OK 96.11.29 Gregory Neil Shapiro <gshapiro@wpi.edu>
Linux 1.2.13 FAIL 95.11.02 Sven Neuhaus <sven@ping.de>
Linux 2.0.17 FAIL 96.09.03 Horst von Brand <vonbrand@sleipnir.valparaiso.cl>
+Linux 2.1.109 FAIL 98.07.21 John Kennedy <jk@csuchico.edu>
AIX 4.1 OK 96.10.21 Hakan Lindholm <hakan@af.lu.se>