1 2 SENDMAIL RELEASE 8 3 4This directory has the latest sendmail(TM) software from Sendmail, Inc. 5 6Report any bugs to sendmail-bugs@sendmail.ORG 7 8There is a web site at http://WWW.Sendmail.ORG/ -- see that site for 9the latest updates. 10 11+--------------+ 12| INTRODUCTION | 13+--------------+ 14 150. The vast majority of queries to <sendmail-questions@sendmail.org> 16 are answered in the README files noted below. 17 181. Read this README file, especially this introduction, and the DIRECTORY 19 PERMISSIONS sections. 20 212. Read the INSTALL file in this directory. 22 233. Read sendmail/README, especially: 24 a. the introduction 25 b. the BUILDING SENDMAIL section 26 c. the relevant part(s) of the OPERATING SYSTEM AND COMPILE QUIRKS section 27 28 You may also find these useful: 29 30 d. sendmail/SECURITY 31 e. devtools/README 32 f. devtools/Site/README 33 g. libmilter/README 34 h. mail.local/README 35 i. smrsh/README 36 374. Read cf/README. 38 39Sendmail is a trademark of Sendmail, Inc. 40 41+-----------------------+ 42| DIRECTORY PERMISSIONS | 43+-----------------------+ 44 45Sendmail often gets blamed for many problems that are actually the 46result of other problems, such as overly permissive modes on directories. 47For this reason, sendmail checks the modes on system directories and 48files to determine if they can be trusted. For sendmail to run without 49complaining, you MUST execute the following command: 50 51 chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue 52 chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue 53 54You will probably have to tweak this for your environment (for example, 55some systems put the spool directory into /usr/spool instead of 56/var/spool). If you set the RunAsUser option in your sendmail.cf, the 57/var/spool/mqueue directory will have to be owned by the RunAsUser user. 58As a general rule, after you have compiled sendmail, run the command 59 60 sendmail -v -bi 61 62to initialize the alias database. If it gives messages such as 63 64 WARNING: writable directory /etc 65 WARNING: writable directory /var/spool/mqueue 66 67then the directories listed have inappropriate write permissions and 68should be secured to avoid various possible security attacks. 69 70Beginning with sendmail 8.9, these checks have become more strict to 71prevent users from being able to access files they would normally not 72be able to read. In particular, .forward and :include: files in unsafe 73directory paths (directory paths which are group or world writable) will 74no longer be allowed. This would mean that if user joe's home directory 75was writable by group staff, sendmail would not use his .forward file. 76This behavior can be altered, at the expense of system security, by 77setting the DontBlameSendmail option. For example, to allow .forward 78files in group writable directories: 79 80 O DontBlameSendmail=forwardfileingroupwritabledirpath 81 82Or to allow them in both group and world writable directories: 83 84 O DontBlameSendmail=forwardfileinunsafedirpath 85 86Items from these unsafe .forward and :include: files will be marked 87as unsafe addresses -- the items can not be deliveries to files or 88programs. This behavior can also be altered via DontBlameSendmail: 89 90 O DontBlameSendmail=forwardfileinunsafedirpath, 91 forwardfileinunsafedirpathsafe 92 93The first flag allows the .forward file to be read, the second allows 94the items in the file to be marked as safe for file and program 95delivery. 96 97Other files affected by this strengthened security include class 98files (i.e., Fw /etc/mail/local-host-names), persistent host status files, 99and the files specified by the ErrorHeader and HelpFile options. Similar 100DontBlameSendmail flags are available for the class, ErrorHeader, and 101HelpFile files. 102 103If you have an unsafe configuration of .forward and :include: 104files, you can make it safe by finding all such files, and doing 105a "chmod go-w $FILE" on each. Also, do a "chmod go-w $DIR" for 106each directory in the file's path. 107 108 109+--------------------------+ 110| FILE AND MAP PERMISSIONS | 111+--------------------------+ 112 113Any application which uses either flock() or fcntl() style locking or 114other APIs that use one of these locking methods (such as open() with 115O_EXLOCK and O_SHLOCK) on files readable by other local untrusted users 116may be susceptible to local denial of service attacks. 117 118File locking is used throughout sendmail for a variety of files 119including aliases, maps, statistics, and the pid file. Any user who 120can open one of these files can prevent sendmail or it's associated 121utilities, e.g., makemap or newaliases, from operating properly. This 122can also affect sendmail's ability to update status files such as 123statistics files. For system which use flock() for file locking, a 124user's ability to obtain an exclusive lock prevents other sendmail 125processes from reading certain files such as alias or map databases. 126 127A workaround for this problem is to protect all sendmail files such 128that they can't be opened by untrusted users. As long as users can 129not open a file, they can not lock it. Since queue files should 130already have restricted permissions, the only files that need 131adjustment are alias, map, statistics, and pid files. These files 132should be owned by root or the trusted user specified in the 133TrustedUser option. Changing the permissions to be only readable and 134writable by that user is sufficient to avoid the denial of service. 135For example, depending on the paths you use, these commands would be 136used: 137 138 chmod 0640 /etc/mail/aliases /etc/mail/aliases.{db,pag,dir} 139 chmod 0640 /etc/mail/*.{db,pag,dir} 140 chmod 0640 /etc/mail/statistics /var/log/sendmail.st 141 chmod 0600 /var/run/sendmail.pid /etc/mail/sendmail.pid 142 143If the permissions 0640 are used, be sure that only trusted users belong 144to the group assigned to those files. Otherwise, files should not even 145be group readable. As of sendmail 8.12.4, the permissions shown above 146are the default permissions for newly created files. 147 148Note that the denial of service on the plain text aliases file 149(/etc/mail/aliases) only prevents newaliases from rebuilding the 150aliases file. The same is true for the database files on systems which 151use fcntl() style locking. Since it does not interfere with normal 152operations, sites may chose to leave these files readable. Also, it is 153not necessary to protect the text files associated with map databases 154as makemap does not lock those files. 155 156 157+-----------------------+ 158| RELATED DOCUMENTATION | 159+-----------------------+ 160 161There are other files you should read. Rooted in this directory are: 162 163 FAQ 164 The FAQ (frequently answered questions) is no longer maintained 165 with the sendmail release. It is available at 166 http://www.sendmail.org/faq/ . The file FAQ is a reminder of 167 this and a pointer to the web page. 168 INSTALL 169 Installation instructions for building and installing sendmail. 170 KNOWNBUGS 171 Known bugs in the current release. 172 RELEASE_NOTES 173 A detailed description of the changes in each version. This 174 is quite long, but informative. 175 sendmail/README 176 Details on compiling and installing sendmail. 177 cf/README 178 Details on configuring sendmail. 179 doc/op/op.me 180 The sendmail Installation & Operations Guide. Be warned: if 181 you are running this off on SunOS or some other system with an 182 old version of -me, you need to add the following macro to the 183 macros: 184 185 .de sm 186 \s-1\\$1\\s0\\$2 187 .. 188 189 This sets a word in a smaller pointsize. 190 191 192+--------------+ 193| RELATED RFCS | 194+--------------+ 195 196There are several related RFCs that you may wish to read -- they are 197available via anonymous FTP to several sites. For a list of the 198primary repositories see: 199 200 http://www.isi.edu/in-notes/rfc-retrieval.txt 201 202They are also online at: 203 204 http://www.ietf.org/ 205 206They can also be retrieved via electronic mail by sending 207email to one of: 208 209 mail-server@nisc.sri.com 210 Put "send rfcNNN" in message body 211 nis-info@nis.nsf.net 212 Put "send RFCnnn.TXT-1" in message body 213 sendrfc@jvnc.net 214 Put "RFCnnn" as Subject: line 215 216For further instructions see: 217 218 http://www.isi.edu/in-notes/rfc-editor/rfc-info 219 220Important RFCs for electronic mail are: 221 222 RFC821 SMTP protocol 223 RFC822 Mail header format 224 RFC974 MX routing 225 RFC976 UUCP mail format 226 RFC1123 Host requirements (modifies 821, 822, and 974) 227 RFC1344 Implications of MIME for Internet Mail Gateways 228 RFC1413 Identification server 229 RFC1428 Transition of Internet Mail from Just-Send-8 to 230 8-bit SMTP/MIME 231 RFC1652 SMTP Service Extension for 8bit-MIMEtransport 232 RFC1869 SMTP Service Extensions (ESMTP spec) 233 RFC1870 SMTP Service Extension for Message Size Declaration 234 RFC1891 SMTP Service Extension for Delivery Status Notifications 235 RFC1892 Multipart/Report Content Type for the Reporting of 236 Mail System Administrative Messages 237 RFC1893 Enhanced Mail System Status Codes 238 RFC1894 An Extensible Message Format for Delivery Status 239 Notifications 240 RFC1985 SMTP Service Extension for Remote Message Queue Starting 241 RFC2033 Local Mail Transfer Protocol (LMTP) 242 RFC2034 SMTP Service Extension for Returning Enhanced Error Codes 243 RFC2045 Multipurpose Internet Mail Extensions (MIME) Part One: 244 Format of Internet Message Bodies 245 RFC2476 Message Submission 246 RFC2487 SMTP Service Extension for Secure SMTP over TLS 247 RFC2554 SMTP Service Extension for Authentication 248 RFC2821 Simple Mail Transfer Protocol 249 RFC2822 Internet Message Format 250 RFC2852 Deliver By SMTP Service Extension 251 RFC2920 SMTP Service Extension for Command Pipelining 252 253Other standards that may be of interest (but which are less directly 254relevant to sendmail) are: 255 256 RFC987 Mapping between RFC822 and X.400 257 RFC1049 Content-Type header field (extension to RFC822) 258 259Warning to AIX users: this version of sendmail does not implement 260MB, MR, or MG DNS resource records, as defined (as experiments) in 261RFC1035. 262 263 264+---------+ 265| WARNING | 266+---------+ 267 268Since sendmail 8.11 and later includes hooks to cryptography, the 269following information from OpenSSL applies to sendmail as well. 270 271PLEASE REMEMBER THAT EXPORT/IMPORT AND/OR USE OF STRONG CRYPTOGRAPHY 272SOFTWARE, PROVIDING CRYPTOGRAPHY HOOKS OR EVEN JUST COMMUNICATING 273TECHNICAL DETAILS ABOUT CRYPTOGRAPHY SOFTWARE IS ILLEGAL IN SOME 274PARTS OF THE WORLD. SO, WHEN YOU IMPORT THIS PACKAGE TO YOUR 275COUNTRY, RE-DISTRIBUTE IT FROM THERE OR EVEN JUST EMAIL TECHNICAL 276SUGGESTIONS OR EVEN SOURCE PATCHES TO THE AUTHOR OR OTHER PEOPLE 277YOU ARE STRONGLY ADVISED TO PAY CLOSE ATTENTION TO ANY EXPORT/IMPORT 278AND/OR USE LAWS WHICH APPLY TO YOU. THE AUTHORS ARE NOT LIABLE FOR 279ANY VIOLATIONS YOU MAKE HERE. SO BE CAREFUL, IT IS YOUR RESPONSIBILITY. 280 281If you use OpenSSL then make sure you read their README file which 282contains information about patents etc. 283 284 285+-------------------+ 286| DATABASE ROUTINES | 287+-------------------+ 288 289IF YOU WANT TO RUN THE NEW BERKELEY DB SOFTWARE: **** DO NOT **** 290use the version that was on the Net2 tape -- it has a number of 291nefarious bugs that were bad enough when I got them; you shouldn't have 292to go through the same thing. Instead, get a new version via the web at 293http://www.sleepycat.com/. This software is highly recommended; it gets 294rid of several stupid limits, it's much faster, and the interface is 295nicer to animals and plants. If the Berkeley DB include files 296are installed in a location other than those which your compiler searches, 297you will need to provide that directory when building: 298 299 Build -I/path/to/include/directory 300 301If you are using Berkeley DB versions 1.85 or 1.86, you are *strongly* 302urged to upgrade to DB version 2 or later, available from 303http://www.sleepycat.com/. Berkeley DB versions 1.85 and 1.86 are known to 304be broken in various nasty ways (see http://www.sleepycat.com/db.185.html), 305and can cause sendmail to dump core. In addition, the newest versions of 306gcc and the Solaris compilers perform optimizations in those versions that 307may cause fairly random core dumps. 308 309If you have no choice but to use Berkeley DB 1.85 or 1.86, and you are 310using both Berkeley DB and files in the UNIX ndbm format, remove ndbm.h 311and ndbm.o from the DB library after building it. You should also apply 312all of the patches for DB 1.85 and 1.86 found at the Sleepycat web site 313(see http://www.sleepycat.com/db.185.html), as they fix some of the known 314problems. 315 316If you are using a version of Berkeley DB 2 previous to 2.3.15, and you 317are using both Berkeley DB and files in the UNIX ndbm format, remove dbm.o 318from the DB library after building it. No other changes are necessary. 319 320If you are using Berkeley DB version 2.3.15 or greater, no changes are 321necessary. 322 323The underlying database file formats changed between Berkeley DB versions 3241.85 and 1.86, again between DB 1.86 and version 2.0, and finally between 325DB 2.X and 3.X. If you are upgrading from one of those versions, you must 326recreate your database file(s). Do this by rebuilding all maps with 327makemap and rebuilding the alias file with newaliases. 328 329 330+--------------------+ 331| HOST NAME SERVICES | 332+--------------------+ 333 334If you are using NIS or /etc/hosts, it is critical that you 335list the long (fully qualified) name somewhere (preferably first) in 336the /etc/hosts file used to build the NIS database. For example, the 337line should read 338 339 128.32.149.68 mastodon.CS.Berkeley.EDU mastodon 340 341**** NOT **** 342 343 128.32.149.68 mastodon 344 345If you do not include the long name, sendmail will complain loudly 346about ``unable to qualify my own domain name (mastodon) -- using 347short name'' and conclude that your canonical name is the short 348version and use that in messages. The name "mastodon" doesn't mean 349much outside of Berkeley, and so this creates incorrect and unreplyable 350messages. 351 352 353+-------------+ 354| USE WITH MH | 355+-------------+ 356 357This version of sendmail notices and reports certain kinds of SMTP 358protocol violations that were ignored by older versions. If you 359are running MH you may wish to install the patch in contrib/mh.patch 360that will prevent these warning reports. This patch also works 361with the old version of sendmail, so it's safe to go ahead and 362install it. 363 364 365+----------------+ 366| USE WITH IDENT | 367+----------------+ 368 369Sendmail 8 supports the IDENT protocol, as defined by RFC 1413. 370Note that the RFC states a client should wait at least 30 seconds 371for a response. As of 8.10.0, the default Timeout.ident is 5 seconds 372as many sites have adopted the practice of dropping IDENT queries. 373This has lead to delays processing mail. 374 375No ident server is included with this distribution. It is available 376from: 377 378 ftp://ftp.lysator.liu.se/pub/ident/servers/ 379 http://sf.www.lysator.liu.se/~pen/pidentd/ 380 381+-------------------------+ 382| INTEROPERATION PROBLEMS | 383+-------------------------+ 384 385Microsoft Exchange Server 5.0 386 We have had a report that ``about 7% of messages from Sendmail 387 to Exchange were not being delivered with status messages of 388 "connection reset" and "I/O error".'' Upgrading Exchange from 389 Version 5.0 to Version 5.5 Service Pack 2 solved this problem. 390 391CommuniGate Pro 392 CommuniGate Pro 3.2.4 does not accept the AUTH= -parameter on 393 the MAIL FROM command if the client is not authenticated. Use 394 395 define(`confAUTH_OPTIONS', `A') 396 397 in .mc file if you have compiled sendmail with Cyrus SASL 398 and you communicate with CommuniGate Pro servers. 399 400+---------------------+ 401| DIRECTORY STRUCTURE | 402+---------------------+ 403 404The structure of this directory tree is: 405 406cf Source for sendmail configuration files. These are 407 different than what you've seen before. They are a 408 fairly dramatic rewrite, requiring the new sendmail 409 (since they use new features). 410contrib Some contributed tools to help with sendmail. THESE 411 ARE NOT SUPPORTED by sendmail -- contact the original 412 authors if you have problems. (This directory is not 413 on the 4.4BSD tape.) 414devtools Build environment. See devtools/README. 415doc Documentation. If you are getting source, read 416 op.me -- it's long, but worth it. 417editmap A program to edit and query maps that have been created 418 with makemap, e.g., adding and deleting entries. 419include Include files used by multiple programs in the distribution. 420libsmdb sendmail database library with support for Berkeley DB 1.X, 421 Berkeley DB 2.X, Berkeley DB 3.X, and NDBM. 422libsmutil sendmail utility library with functions used by different 423 programs. 424mail.local The source for the local delivery agent used for 4.4BSD. 425 THIS IS NOT PART OF SENDMAIL! and may not compile 426 everywhere, since it depends on some 4.4-isms. Warning: 427 it does mailbox locking differently than other systems. 428mailstats Statistics printing program. 429makemap A program that creates the keyed maps used by the $( ... $) 430 construct in sendmail. It is primitive but effective. 431 It takes a very simple input format, so you will probably 432 expect to preprocess must human-convenient formats 433 using sed scripts before this program will like them. 434 But it should be functionally complete. 435praliases A program to print the DBM or NEWDB version of the 436 aliases file. 437rmail Source for rmail(8). This is used as a delivery 438 agent for for UUCP, and could presumably be used by 439 other non-socket oriented mailers. Older versions of 440 rmail are probably deficient. RMAIL IS NOT PART OF 441 SENDMAIL!!! The 4.4BSD source is included for you to 442 look at or try to port to your system. There is no 443 guarantee it will even compile on your operating system. 444smrsh The "sendmail restricted shell", which can be used as 445 a replacement for /bin/sh in the prog mailer to provide 446 increased security control. NOT PART OF SENDMAIL! 447sendmail Source for the sendmail program itself. 448test Some test scripts (currently only for compilation aids). 449vacation Source for the vacation program. NOT PART OF SENDMAIL! 450 451$Revision: 8.90 $, Last updated $Date: 2002/05/25 02:55:59 $ 452