1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
|
SENDMAIL RELEASE 8
This directory has the latest sendmail(TM) software from Sendmail, Inc.
Report any bugs to sendmail-bugs-YYYY@support.sendmail.org
where YYYY is the current year, e.g., 2005.
There is a web site at http://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 Sendmail, 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.
- with new groff versions (1.18 seems affected)
GROFF_NO_SGR=1
needs to be set, e.g., in doc/op/Makefile:
ROFF_CMD= GROFF_NO_SGR=1 groff
+--------------+
| RELATED RFCS |
+--------------+
There are several related RFCs that you may wish to read -- they are
available via anonymous FTP to several sites. 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
Put "send rfcNNN" in message body
nis-info@nis.nsf.net
Put "send RFCnnn.TXT-1" in message body
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
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
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.
+--------------------+
| 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.
No ident server is included with this distribution. It is available
from:
ftp://ftp.lysator.liu.se/pub/ident/servers/
http://sf.www.lysator.liu.se/~pen/pidentd/
+-------------------------+
| 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 DBM or NEWDB 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!
$Revision: 8.95 $, Last updated $Date: 2009/04/10 17:49:18 $
|