freebsd-skq/contrib/sendmail/mail.local
Brooks Davis f189761366 Fix various -Wpointer-compare warnings
This warning (comparing a pointer against a zero character literal
rather than NULL) has existed since GCC 7.1.0, and was recently added to
Clang trunk.

Almost all of these are harmless, except for fwcontrol's str2node, which
needs to both guard against dereferencing a NULL pointer (though in
practice it appears none of the callers will ever pass one in), as well
as ensure it doesn't parse the empty string as node 0 due to strtol's
awkward interface.

Submitted by:	James Clarke <jtrc27@jrtc27.com>
Obtained from:	CheriBSD
Sponsored by:	DARPA, AFRL
Differential Revision:	https://reviews.freebsd.org/D21914
2019-10-08 21:14:09 +00:00
..
mail.local.8
mail.local.c
Makefile
Makefile.m4
README

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 set-group-ID program rather than set-user-ID, 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!

For systems with maillock() support, compile with -DMAILLOCK and link with
-lmail to use the maillock() routines.  This can be accomplished in your
site.config.m4 file with:

	APPENDDEF(`conf_mail_local_ENVDEF', `-DMAILLOCK')
	APPENDDEF(`conf_mail_local_LIBS', `-lmail')

Defining CONTENTLENGTH (-DCONTENTLENGTH) will build a mail.local which
outputs a Content-Length: header.  Solaris 2.3 and later will automatically
include Content-Length: support.  This can be accomplished in your
site.config.m4 file with:

	APPENDDEF(`conf_mail_local_ENVDEF', `-DCONTENTLENGTH')

Defining MAILGID to a 'gid' (-DMAILGID=6) will cause mailboxes to be
written group writable and with group 'gid'.  This can be accomplished in
your site.config.m4 file with:

	APPENDDEF(`conf_mail_local_ENVDEF', `-DMAILGID=6')

mail.local will not be installed set-user-ID root. To use it as local
delivery agent without LMTP mode, use:

	 MODIFY_MAILER_FLAGS(`LOCAL', `+S')

in the .mc file.

Defining HASHSPOOL (-DHASHSPOOL) will build a mail.local which supports
delivering to subdirectories of the mail spool, based on a hash of the
username (i.e., a hash depth of 2 and a username of "user" will result in
/var/spool/mail/u/s/user).  If the hash depth is greater than the length
of the username, "_" will be used.  The necessary subdirectories must
exist; mail.local will not create them.  Use the "-H" option to set the
hash type and depth (like "-H u2" for a username hash two levels deep).

The HASHSPOOL option also adds two other options: "-p path" to specify
an alternate mail spool path (i.e., "-p /local/mail") and "-n" to specify
that mail.local should not strip the @domain part of recipient addresses
in LMTP mode.

In addition to HASHSPOOL, defining HASHSPOOLMD5 and linking against
libcrypto from OpenSSL like:

	APPENDDEF(`conf_mail_local_ENVDEF', `-DHASHSPOOL -DHASHSPOOLMD5')
	APPENDDEF(`conf_mail_local_LIBS', `-lcrypto')

will offer an alternate hash, using a base64 encoding (changing / to _)
of an MD5 hash of the username.  This results in a more balanced
subdirectory tree.  The subdirectories will be named with A-Z, a-z, 0-9,
+, and _.  The hash type is "m", so use "-H m3" to get a three level MD5
based hash.

$Revision: 8.11 $, Last updated $Date: 2003-10-20 20:19:13 $