mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Merge vendor sendmail 8.18.1 into HEAD (cherry picked from commit d39bd2c1388b520fcba9abed1932acacead60fba) Add new source file for sendmail 8.18.1 (cherry picked from commit 19d4fb85bf17579780e8f0c3cbae8a5e92a6922e) New sendmail 8.18.1 cf file (cherry picked from commit 1b6a5580c1f999fb1ba5f9860cf63a8aefc55b3c) Minor change to update these files so new freebsd*.cf files are generated (cherry picked from commit 2c191ba6b0b5d1b3729a5ac428d51cfc5d5f3d2e) Belatedly update version and date for sendmail 8.18.1 upgrade (cherry picked from commit 31fbc98c949bfca30ab55afef04b4396a61b7e92) Add a note about sendmail 8.18.1's stricter SMTP protocol enforcement (akin to commit 21c1f1deb6a3ac6a60e4516261e5264a28e0b7a6 in main) Update import date for stable/14 Relnotes: Yes Security: CVE-2023-51765
449 lines
17 KiB
Text
449 lines
17 KiB
Text
|
|
SENDMAIL RELEASE 8
|
|
|
|
This directory has the latest sendmail(TM) software from Proofpoint, Inc.
|
|
|
|
Report any bugs to sendmail-bugs-YYYY@support.sendmail.org
|
|
where YYYY is the current year, e.g., 2023.
|
|
|
|
There is a web site at https://www.sendmail.org/ -- see that site for
|
|
the latest updates.
|
|
|
|
|
|
+--------------+
|
|
| INTRODUCTION |
|
|
+--------------+
|
|
|
|
0. The vast majority of queries about sendmail are answered in the
|
|
README files noted below.
|
|
|
|
1. Read this README file, especially this introduction, and the DIRECTORY
|
|
PERMISSIONS sections.
|
|
|
|
2. Read the INSTALL file in this directory.
|
|
|
|
3. Read sendmail/README, especially:
|
|
a. the introduction
|
|
b. the BUILDING SENDMAIL section
|
|
c. the relevant part(s) of the OPERATING SYSTEM AND COMPILE QUIRKS section
|
|
|
|
You may also find these useful:
|
|
|
|
d. sendmail/SECURITY
|
|
e. devtools/README
|
|
f. devtools/Site/README
|
|
g. libmilter/README
|
|
h. mail.local/README
|
|
i. smrsh/README
|
|
|
|
4. Read cf/README.
|
|
|
|
Sendmail is a trademark of Proofpoint, Inc.
|
|
US Patent Numbers 6865671, 6986037.
|
|
|
|
|
|
+-----------------------+
|
|
| 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 can be 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). 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 /var/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/mail/local-host-names), 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.
|
|
|
|
|
|
+--------------------------+
|
|
| FILE AND MAP PERMISSIONS |
|
|
+--------------------------+
|
|
|
|
Any application which uses either flock() or fcntl() style locking or
|
|
other APIs that use one of these locking methods (such as open() with
|
|
O_EXLOCK and O_SHLOCK) on files readable by other local untrusted users
|
|
may be susceptible to local denial of service attacks.
|
|
|
|
File locking is used throughout sendmail for a variety of files
|
|
including aliases, maps, statistics, and the pid file. Any user who
|
|
can open one of these files can prevent sendmail or it's associated
|
|
utilities, e.g., makemap or newaliases, from operating properly. This
|
|
can also affect sendmail's ability to update status files such as
|
|
statistics files. For system which use flock() for file locking, a
|
|
user's ability to obtain an exclusive lock prevents other sendmail
|
|
processes from reading certain files such as alias or map databases.
|
|
|
|
A workaround for this problem is to protect all sendmail files such
|
|
that they can't be opened by untrusted users. As long as users can
|
|
not open a file, they can not lock it. Since queue files should
|
|
already have restricted permissions, the only files that need
|
|
adjustment are alias, map, statistics, and pid files. These files
|
|
should be owned by root or the trusted user specified in the
|
|
TrustedUser option. Changing the permissions to be only readable and
|
|
writable by that user is sufficient to avoid the denial of service.
|
|
For example, depending on the paths you use, these commands would be
|
|
used:
|
|
|
|
chmod 0640 /etc/mail/aliases /etc/mail/aliases.{db,pag,dir}
|
|
chmod 0640 /etc/mail/*.{db,pag,dir}
|
|
chmod 0640 /etc/mail/statistics /var/log/sendmail.st
|
|
chmod 0600 /var/run/sendmail.pid /etc/mail/sendmail.pid
|
|
|
|
If the permissions 0640 are used, be sure that only trusted users belong
|
|
to the group assigned to those files. Otherwise, files should not even
|
|
be group readable. As of sendmail 8.12.4, the permissions shown above
|
|
are the default permissions for newly created files.
|
|
|
|
Note that the denial of service on the plain text aliases file
|
|
(/etc/mail/aliases) only prevents newaliases from rebuilding the
|
|
aliases file. The same is true for the database files on systems which
|
|
use fcntl() style locking. Since it does not interfere with normal
|
|
operations, sites may chose to leave these files readable. Also, it is
|
|
not necessary to protect the text files associated with map databases
|
|
as makemap does not lock those files.
|
|
|
|
|
|
+-----------------------+
|
|
| RELATED DOCUMENTATION |
|
|
+-----------------------+
|
|
|
|
There are other files you should read. Rooted in this directory are:
|
|
|
|
FAQ
|
|
The FAQ (frequently answered questions) is no longer maintained
|
|
with the sendmail release. It is available at
|
|
http://www.sendmail.org/faq/ . The file FAQ is a reminder of
|
|
this and a pointer to the web page.
|
|
INSTALL
|
|
Installation instructions for building and installing sendmail.
|
|
KNOWNBUGS
|
|
Known bugs in the current release.
|
|
RELEASE_NOTES
|
|
A detailed description of the changes in each version. This
|
|
is quite long, but informative.
|
|
sendmail/README
|
|
Details on compiling and installing sendmail.
|
|
cf/README
|
|
Details on configuring sendmail.
|
|
doc/op/op.me
|
|
The sendmail Installation & Operations Guide. In addition
|
|
to the shipped PostScript version, plain text and PDF versions
|
|
can be generating using (assuming the required conversion software
|
|
is installed on your system, see doc/op/Makefile):
|
|
|
|
cd doc/op && make op.txt op.pdf
|
|
|
|
Be warned: on some systems calling make in doc/op/ will cause
|
|
errors due to nroff/groff problems. Known problems are:
|
|
- running this off on systems with an old version of -me, you
|
|
need to add the following macro to the macros:
|
|
|
|
.de sm
|
|
\s-1\\$1\\s0\\$2
|
|
..
|
|
|
|
This sets a word in a smaller pointsize.
|
|
|
|
|
|
+--------------+
|
|
| RELATED RFCS |
|
|
+--------------+
|
|
|
|
There are several related RFCs that you may wish to read -- they are
|
|
available from several sites, see
|
|
|
|
http://www.rfc-editor.org/
|
|
http://www.ietf.org/
|
|
|
|
Important RFCs for electronic mail are:
|
|
|
|
RFC821 SMTP protocol
|
|
RFC822 Mail header format
|
|
RFC974 MX routing
|
|
RFC976 UUCP mail format
|
|
RFC1123 Host requirements (modifies 821, 822, and 974)
|
|
RFC1344 Implications of MIME for Internet Mail Gateways
|
|
RFC1413 Identification server
|
|
RFC1428 Transition of Internet Mail from Just-Send-8 to
|
|
8-bit SMTP/MIME
|
|
RFC1652 SMTP Service Extension for 8bit-MIMEtransport
|
|
RFC1869 SMTP Service Extensions (ESMTP spec)
|
|
RFC1870 SMTP Service Extension for Message Size Declaration
|
|
RFC1891 SMTP Service Extension for Delivery Status Notifications
|
|
RFC1892 Multipart/Report Content Type for the Reporting of
|
|
Mail System Administrative Messages
|
|
RFC1893 Enhanced Mail System Status Codes
|
|
RFC1894 An Extensible Message Format for Delivery Status
|
|
Notifications
|
|
RFC1985 SMTP Service Extension for Remote Message Queue Starting
|
|
RFC2033 Local Mail Transfer Protocol (LMTP)
|
|
RFC2034 SMTP Service Extension for Returning Enhanced Error Codes
|
|
RFC2045 Multipurpose Internet Mail Extensions (MIME) Part One:
|
|
Format of Internet Message Bodies
|
|
RFC2476 Message Submission
|
|
RFC2487 SMTP Service Extension for Secure SMTP over TLS
|
|
RFC2554 SMTP Service Extension for Authentication
|
|
RFC2821 Simple Mail Transfer Protocol
|
|
RFC2822 Internet Message Format
|
|
RFC2852 Deliver By SMTP Service Extension
|
|
RFC2920 SMTP Service Extension for Command Pipelining
|
|
RFC5321 Simple Mail Transfer Protocol
|
|
RFC5322 Internet Message Format
|
|
RFC6530 Overview and Framework for Internationalized Email
|
|
RFC6531 SMTP Extension for Internationalized Email
|
|
RFC6532 Internationalized Email Headers
|
|
RFC6533 Internationalized Delivery Status and Disposition Notifications
|
|
RFC8461 SMTP MTA Strict Transport Security (MTA-STS)
|
|
|
|
Other standards that may be of interest (but which are less directly
|
|
relevant to sendmail) are:
|
|
|
|
RFC987 Mapping between RFC822 and X.400
|
|
RFC1049 Content-Type header field (extension to RFC822)
|
|
|
|
Warning to AIX users: this version of sendmail does not implement
|
|
MB, MR, or MG DNS resource records, as defined (as experiments) in
|
|
RFC1035.
|
|
|
|
|
|
+---------+
|
|
| WARNING |
|
|
+---------+
|
|
|
|
Since sendmail 8.11 and later includes hooks to cryptography, the
|
|
following information from OpenSSL applies to sendmail as well.
|
|
|
|
PLEASE REMEMBER THAT EXPORT/IMPORT AND/OR USE OF STRONG CRYPTOGRAPHY
|
|
SOFTWARE, PROVIDING CRYPTOGRAPHY HOOKS OR EVEN JUST COMMUNICATING
|
|
TECHNICAL DETAILS ABOUT CRYPTOGRAPHY SOFTWARE IS ILLEGAL IN SOME
|
|
PARTS OF THE WORLD. SO, WHEN YOU IMPORT THIS PACKAGE TO YOUR
|
|
COUNTRY, RE-DISTRIBUTE IT FROM THERE OR EVEN JUST EMAIL TECHNICAL
|
|
SUGGESTIONS OR EVEN SOURCE PATCHES TO THE AUTHOR OR OTHER PEOPLE
|
|
YOU ARE STRONGLY ADVISED TO PAY CLOSE ATTENTION TO ANY EXPORT/IMPORT
|
|
AND/OR USE LAWS WHICH APPLY TO YOU. THE AUTHORS ARE NOT LIABLE FOR
|
|
ANY VIOLATIONS YOU MAKE HERE. SO BE CAREFUL, IT IS YOUR RESPONSIBILITY.
|
|
|
|
If you use OpenSSL then make sure you read their README file which
|
|
contains information about patents etc.
|
|
|
|
|
|
+-------------------+
|
|
| DATABASE ROUTINES |
|
|
+-------------------+
|
|
|
|
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/. 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 or later, 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, again between DB 1.86 and version 2.0, and finally between
|
|
DB 2.X and 3.X. 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.
|
|
|
|
File locking using fcntl() does not interoperate with Berkeley DB
|
|
5.x (and probably later). Use CDB, flock() (-DHASFLOCK), or an
|
|
earlier Berkeley DB version.
|
|
|
|
|
|
+--------------------+
|
|
| HOST NAME SERVICES |
|
|
+--------------------+
|
|
|
|
If you are using NIS or /etc/hosts, it is critical that you
|
|
list the long (fully qualified) name somewhere (preferably first) in
|
|
the /etc/hosts file used to build the NIS database. For example, the
|
|
line should read
|
|
|
|
128.32.149.68 mastodon.CS.Berkeley.EDU mastodon
|
|
|
|
**** NOT ****
|
|
|
|
128.32.149.68 mastodon
|
|
|
|
If you do not include the long name, sendmail will complain loudly
|
|
about ``unable to qualify my own domain name (mastodon) -- using
|
|
short name'' and conclude that your canonical name is the short
|
|
version and use that in messages. The name "mastodon" doesn't mean
|
|
much outside of Berkeley, and so this creates incorrect and unreplyable
|
|
messages.
|
|
|
|
|
|
+-------------+
|
|
| USE WITH MH |
|
|
+-------------+
|
|
|
|
This version of sendmail notices and reports certain kinds of SMTP
|
|
protocol violations that were ignored by older versions. If you
|
|
are running MH you may wish to install the patch in contrib/mh.patch
|
|
that will prevent these warning reports. This patch also works
|
|
with the old version of sendmail, so it's safe to go ahead and
|
|
install it.
|
|
|
|
|
|
+----------------+
|
|
| USE WITH IDENT |
|
|
+----------------+
|
|
|
|
Sendmail 8 supports the IDENT protocol, as defined by RFC 1413.
|
|
Note that the RFC states a client should wait at least 30 seconds
|
|
for a response. As of 8.10.0, the default Timeout.ident is 5 seconds
|
|
as many sites have adopted the practice of dropping IDENT queries.
|
|
This has lead to delays processing mail.
|
|
|
|
|
|
+-------------------------+
|
|
| INTEROPERATION PROBLEMS |
|
|
+-------------------------+
|
|
|
|
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.
|
|
|
|
CommuniGate Pro
|
|
CommuniGate Pro 3.2.4 does not accept the AUTH= -parameter on
|
|
the MAIL FROM command if the client is not authenticated. Use
|
|
|
|
define(`confAUTH_OPTIONS', `A')
|
|
|
|
in .mc file if you have compiled sendmail with Cyrus SASL
|
|
and you communicate with CommuniGate Pro servers.
|
|
|
|
|
|
+---------------------+
|
|
| DIRECTORY STRUCTURE |
|
|
+---------------------+
|
|
|
|
The structure of this directory tree is:
|
|
|
|
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 sendmail -- contact the original
|
|
authors if you have problems. (This directory is not
|
|
on the 4.4BSD tape.)
|
|
devtools Build environment. See devtools/README.
|
|
doc Documentation. If you are getting source, read
|
|
op.me -- it's long, but worth it.
|
|
editmap A program to edit and query maps that have been created
|
|
with makemap, e.g., adding and deleting entries.
|
|
include Include files used by multiple programs in the distribution.
|
|
libsmdb sendmail database library with support for Berkeley DB 1.X,
|
|
Berkeley DB 2.X, Berkeley DB 3.X, and NDBM.
|
|
libsmutil sendmail utility library with functions used by different
|
|
programs.
|
|
mail.local The source for the local delivery agent used for 4.4BSD.
|
|
THIS IS NOT PART OF SENDMAIL! and may not compile
|
|
everywhere, since it depends on some 4.4-isms. Warning:
|
|
it does mailbox locking differently than other systems.
|
|
mailstats Statistics printing program.
|
|
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
|
|
expect to preprocess must human-convenient formats
|
|
using sed scripts before this program will like them.
|
|
But it should be functionally complete.
|
|
praliases A program to print the map version of the aliases file.
|
|
rmail Source for rmail(8). This is used as a delivery
|
|
agent for for UUCP, and could presumably be used by
|
|
other non-socket oriented mailers. Older versions of
|
|
rmail are probably deficient. RMAIL IS NOT PART OF
|
|
SENDMAIL!!! The 4.4BSD source is included for you to
|
|
look at or try to port to your system. There is no
|
|
guarantee it will even compile on your operating system.
|
|
smrsh The "sendmail restricted shell", which can be used as
|
|
a replacement for /bin/sh in the prog mailer to provide
|
|
increased security control. NOT PART OF SENDMAIL!
|
|
sendmail Source for the sendmail program itself.
|
|
test Some test scripts (currently only for compilation aids).
|
|
vacation Source for the vacation program. NOT PART OF SENDMAIL!
|
|
|