📄 readme
字号:
vprintf(3). Note that the resulting fake implementation
is not very elegant and may not even work on some
architectures.
NEEDFSYNC Define this if your standard C library does not define
fsync(2). This will try to simulate the operation using
fcntl(2); if that is not available it does nothing, which
isn't great, but at least it compiles and runs.
HASGETUSERSHELL Define this to 1 if you have getusershell(3) in your
standard C library. If this is not defined, or is defined
to be 0, sendmail will scan the /etc/shells file (no
NIS-style support, defaults to /bin/sh and /bin/csh if
that file does not exist) to get a list of unrestricted
user shells. This is used to determine whether users
are allowed to forward their mail to a program or a file.
NEEDPUTENV Define this if your system needs am emulation of the
putenv(3) call. Define to 1 to implement it in terms
of setenv(3) or to 2 to do it in terms of primitives.
NOFTRUNCATE Define this if you don't have the ftruncate(2) syscall.
If you don't have this system call, there is an unavoidable
race condition that occurs when creating alias databases.
GIDSET_T The type of entries in a gidset passed as the second
argument to getgroups(2). Historically this has been an
int, so this is the default, but some systems (such as
IRIX) pass it as a gid_t, which is an unsigned short.
This will make a difference, so it is important to get
this right! However, it is only an issue if you have
group sets.
SLEEP_T The type returned by the system sleep() function.
Defaults to "unsigned int". Don't worry about this
if you don't have compilation problems.
ARBPTR_T The type of an arbitrary pointer -- defaults to "void *".
If you are an very old compiler you may need to define
this to be "char *".
SOCKADDR_LEN_T The type used for the third parameter to accept(2),
getsockname(2), and getpeername(2), representing the
length of a struct sockaddr. Defaults to int.
SOCKOPT_LEN_T The type used for the fifth parameter to getsockopt(2)
and setsockopt(2), representing the length of the option
buffer. Defaults to int.
LA_TYPE The type of load average your kernel supports. These
can be one of:
LA_ZERO (1) -- it always returns the load average as
"zero" (and does so on all architectures).
LA_INT (2) to read /dev/kmem for the symbol avenrun and
interpret as a long integer.
LA_FLOAT (3) same, but interpret the result as a floating
point number.
LA_SHORT (6) to interpret as a short integer.
LA_SUBR (4) if you have the getloadavg(3) routine in your
system library.
LA_MACH (5) to use MACH-style load averages (calls
processor_set_info()),
LA_PROCSTR (7) to read /proc/loadavg and interpret it
as a string representing a floating-point
number (Linux-style).
LA_READKSYM (8) is an implementation suitable for some
versions of SVr4 that uses the MIOC_READKSYM ioctl
call to read /dev/kmem.
LA_DGUX (9) is a special implementation for DG/UX that uses
the dg_sys_info system call.
LA_HPUX (10) is an HP-UX specific version that uses the
pstat_getdynamic system call.
LA_IRIX6 (11) is an IRIX 6.x specific version that adapts
to 32 or 64 bit kernels; it is otherwise very similar
to LA_INT.
LA_KSTAT (12) uses the (Solaris-specific) kstat(3k)
implementation.
LA_DEVSHORT (13) reads a short from a system file (default:
/dev/table/avenrun) and scales it in the same manner
as LA_SHORT.
LA_INT, LA_SHORT, LA_FLOAT, and LA_READKSYM have several
other parameters that they try to divine: the name of your
kernel, the name of the variable in the kernel to examine,
the number of bits of precision in a fixed point load average,
and so forth. LA_DEVSHORT uses _PATH_AVENRUN to find the
device to be read to find the load average.
In desperation, use LA_ZERO. The actual code is in
conf.c -- it can be tweaked if you are brave.
FSHIFT For LA_INT, LA_SHORT, and LA_READKSYM, this is the number
of bits of load average after the binary point -- i.e.,
the number of bits to shift right in order to scale the
integer to get the true integer load average. Defaults to 8.
_PATH_UNIX The path to your kernel. Needed only for LA_INT, LA_SHORT,
and LA_FLOAT. Defaults to "/unix" on System V, "/vmunix"
everywhere else.
LA_AVENRUN For LA_INT, LA_SHORT, and LA_FLOAT, the name of the kernel
variable that holds the load average. Defaults to "avenrun"
on System V, "_avenrun" everywhere else.
SFS_TYPE Encodes how your kernel can locate the amount of free
space on a disk partition. This can be set to SFS_NONE
(0) if you have no way of getting this information,
SFS_USTAT (1) if you have the ustat(2) system call,
SFS_4ARGS (2) if you have a four-argument statfs(2)
system call (and the include file is <sys/statfs.h>),
SFS_VFS (3), SFS_MOUNT (4), SFS_STATFS (5) if you have
the two-argument statfs(2) system call with includes in
<sys/vfs.h>, <sys/mount.h>, or <sys/statfs.h> respectively,
or SFS_STATVFS (6) if you have the two-argument statvfs(2)
call. The default if nothing is defined is SFS_NONE.
SFS_BAVAIL with SFS_4ARGS you can also set SFS_BAVAIL to the field name
in the statfs structure that holds the useful information;
this defaults to f_bavail.
SPT_TYPE Encodes how your system can display what a process is doing
on a ps(1) command (SPT stands for Set Process Title). Can
be set to:
SPT_NONE (0) -- Don't try to set the process title at all.
SPT_REUSEARGV (1) -- Pad out your argv with the information;
this is the default if none specified.
SPT_BUILTIN (2) -- The system library has setproctitle.
SPT_PSTAT (3) -- Use the PSTAT_SETCMD option to pstat(2)
to set the process title; this is used by HP-UX.
SPT_PSSTRINGS (4) -- Use the magic PS_STRINGS pointer (4.4BSD).
SPT_SYSMIPS (5) -- Use sysmips() supported by NEWS-OS 6.
SPT_SCO (6) -- Write kernel u. area.
SPT_CHANGEARGV (7) -- Write pointers to our own strings into
the existing argv vector.
SPT_PADCHAR Character used to pad the process title; if undefined,
the space character (0x20) is used. This is ignored if
SPT_TYPE != SPT_REUSEARGV
ERRLIST_PREDEFINED
If set, assumes that some header file defines sys_errlist.
This may be needed if you get type conflicts on this
variable -- otherwise don't worry about it.
WAITUNION The wait(2) routine takes a "union wait" argument instead
of an integer argument. This is for compatibility with
old versions of BSD.
SCANF You can set this to extend the F command to accept a
scanf string -- this gives you a primitive parser for
class definitions -- BUT it can make you vulnerable to
core dumps if the target file is poorly formed.
SYSLOG_BUFSIZE You can define this to be the size of the buffer that
syslog accepts. If it is not defined, it assumes a
1024-byte buffer. If the buffer is very small (under
256 bytes) the log message format changes -- each
e-mail message will log many more messages, since it
will log each piece of information as a separate line
in syslog.
BROKEN_RES_SEARCH
On Ultrix (and maybe other systems?) if you use the
res_search routine with an unknown host name, it returns
-1 but sets h_errno to 0 instead of HOST_NOT_FOUND. If
you set this, sendmail considers 0 to be the same as
HOST_NOT_FOUND.
NAMELISTMASK If defined, values returned by nlist(3) are masked
against this value before use -- a common value is
0x7fffffff to strip off the top bit.
BSD4_4_SOCKADDR If defined, socket addresses have an sa_len field that
defines the length of this address.
SAFENFSPATHCONF Set this to 1 if and only if you have verified that a
pathconf(2) call with _PC_CHOWN_RESTRICTED argument on an
NFS filesystem where the underlying system allows users to
give away files to other users returns <= 0. Be sure you
try both on NFS V2 and V3. Some systems assume that their
local policy apply to NFS servers -- this is a bad
assumption! The test/t_pathconf.c program will try this
for you -- you have to run it in a directory that is
mounted from a server that allows file giveaway.
SIOCGIFCONF_IS_BROKEN
Set this if your system has an SIOCGIFCONF ioctl defined,
but it doesn't behave the same way as "most" systems (BSD,
Solaris, SunOS, HP-UX, etc.)
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.
FAST_PID_RECYCLE
Set this if your system can reuse the same PID in the same
second.
SO_REUSEADDR_IS_BROKEN
Set this if your system has a setsockopt() SO_REUSEADDR
flag but doesn't pay attention to it when trying to bind a
socket to a recently closed port.
SNPRINTF_IS_BROKEN
Set this if your system has an snprintf() implementation
which does not NUL terminate the string being filled in.
Use test/t_snprintf.c to test your system.
+-----------------------+
| COMPILE-TIME FEATURES |
+-----------------------+
There are a bunch of features that you can decide to compile in, such
as selecting various database packages and special protocol support.
Several are assumed based on other compilation flags -- if you want to
"un-assume" something, you probably need to edit conf.h. Compilation
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)
for aliases and maps. Normally defined in the Makefile.
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.
Normally defined in the Makefile.
HESIOD Define this to get Hesiod support for aliases and maps.
Normally defined in the Makefile.
NETINFO Define this to get NeXT NetInfo support for aliases and maps.
Normally defined in the Makefile.
LDAPMAP Define this to get LDAP support for maps.
PH_MAP Define this to get PH support for maps.
MAP_NSD Define this to get nsd support for maps.
USERDB Define this to 1 to include support for the User Information
Database. Implied by NEWDB or HESIOD. You can use
-DUSERDB=0 to explicitly turn it off.
IDENTPROTO Define this as 1 to get IDENT (RFC 1413) protocol support.
This is assumed unless you are running on Ultrix or
HP-UX, both of which have a problem in the UDP
implementation. You can define it to be 0 to explicitly
turn off IDENT protocol support. If defined off, the code
is actually still compiled in, but it defaults off; you
can turn it on by setting the IDENT timeout in the
configuration file.
IP_SRCROUTE Define this to 1 to get IP source routing information
displayed in the Received: header. This is assumed on
most systems, but some (e.g., Ultrix) apparently have a
broken version of getsockopt that doesn't properly
support the IP_OPTIONS call. You probably want this if
your OS can cope with it. Symptoms of failure will be that
it won't compile properly (that is, no support for fetching
IP_OPTIONs), or it compiles but source-routed TCP connections
either refuse to open or open and hang for no apparent reason.
Ultrix and AIX3 are known to fail this way.
LOG Set this to get syslog(3) support. Defined by default
in conf.h. You want this if at all possible.
NETINET Set this to get TCP/IP support. Defined by default
in conf.h. You probably want this.
NETINET6 Set this to get IPv6 support. Other configuration may
be needed in conf.h for your particular operating system.
Also, DaemonPortOptions must be set appropriately for
sendmail to accept IPv6 connections.
NETISO Define this to get ISO networking support.
NETUNIX Define this to get Unix domain networking support. Defined
by default. A few bizarre systems (SCO, ISC, Altos) don't
support this networking domain.
NETNS Define this to get NS networking support.
NETX25 Define this to get X.25 networking support.
SMTP Define this to get the SMTP code. Implied by NETINET
or NETISO.
NAMED_BIND If non-zero, include DNS (name daemon) support, including
MX support. The specs say you must use this if you run
SMTP. You don't have to be running a name server daemon
on your machine to need this -- any use of the DNS resolver,
including remote access to another machine, requires this
option. Defined by default in conf.h. Define it to zero
ONLY on machines that do not use DNS in any way.
QUEUE Define this to get queueing code. Implied by NETINET
or NETISO; required by SMTP. This gives you other good
stuff -- it should be on.
DAEMON Define this to get general network support. Implied by
NETINET or NETISO. Defined by default in conf.h. You
almost certainly want it on.
MATCHGECOS Permit fuzzy matching of user names against the full
name (GECOS) field in the /etc/passwd file. This should
probably be on, since you can disable it from the config
file if you want to. Defined by default in conf.h.
MIME8TO7 If non-zero, include 8 to 7 bit MIME conversions. This
also controls advertisement of 8BITMIME in the ESMTP
startup dialogue.
MIME7TO8 If non-zero, include 7 to 8 bit MIME conversions.
HES_GETMAILHOST Define this to 1 if you are using Hesiod with the
hes_getmailhost() routine. This is included with the MIT
Hesiod distribution, but not with the DEC Hesiod distribution.
XDEBUG Do additional internal checking. These don't cost too
much; you might as well leave this on.
TCPWRAPPERS Turns on support for the TCP wrappers library (-lwrap).
See below for further information.
SECUREWARE Enable calls to the SecureWare luid enabling/changing routines.
SecureWare is a C2 security package added to several UNIX's
(notably ConvexOS) to get a C2 Secure system. This
option causes mail delivery to be done with the luid of the
recipient.
SHARE_V1 Support for the fair share scheduler, version 1. Setting to
1 causes final delivery to be done using the recipients
resource limitations. So far as I know, this is only
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -