xref: /freebsd/contrib/sendmail/KNOWNBUGS (revision 2e43090e08ca86a65c21563aa81aeaacf20e5e37)
1c2aa98e2SPeter Wemm
2c2aa98e2SPeter Wemm
3c2aa98e2SPeter Wemm	     K N O W N   B U G S   I N   S E N D M A I L
4c2aa98e2SPeter Wemm			     (for 8.9.0)
5c2aa98e2SPeter Wemm
6c2aa98e2SPeter Wemm
7c2aa98e2SPeter WemmThe following are bugs or deficiencies in sendmail that I am aware of
8c2aa98e2SPeter Wemmbut which have not been fixed in the current release.  You probably
9c2aa98e2SPeter Wemmwant to get the most up to date version of this from ftp.sendmail.org
10c2aa98e2SPeter Wemmin /pub/sendmail/KNOWNBUGS.  For descriptions of bugs that have been
11c2aa98e2SPeter Wemmfixed, see the file RELEASE_NOTES (in the root directory of the sendmail
12c2aa98e2SPeter Wemmdistribution).
13c2aa98e2SPeter Wemm
14c2aa98e2SPeter WemmThis list is not guaranteed to be complete.
15c2aa98e2SPeter Wemm
16c2aa98e2SPeter Wemm
17c2aa98e2SPeter Wemm* Null bytes are not handled properly in headers.
18c2aa98e2SPeter Wemm
19c2aa98e2SPeter Wemm  Sendmail should handle full binary data.  As it stands, it handles
20c2aa98e2SPeter Wemm  all values in the body, but only 0x01-0x80 and 0xA0-0xFF in
21c2aa98e2SPeter Wemm  the header.  Notably missing is 0x00, which would require a major
22c2aa98e2SPeter Wemm  restructuring of the code -- for example, almost no C library support
23c2aa98e2SPeter Wemm  could be used to handle strings.
24c2aa98e2SPeter Wemm
25c2aa98e2SPeter Wemm* Duplicate error messages.
26c2aa98e2SPeter Wemm
27c2aa98e2SPeter Wemm  Sometimes identical, duplicate error messages can be generated.  As
28c2aa98e2SPeter Wemm  near as I can tell, this is rare and relatively innocuous.
29c2aa98e2SPeter Wemm
30c2aa98e2SPeter Wemm* $c (hop count) macro improperly set.
31c2aa98e2SPeter Wemm
32c2aa98e2SPeter Wemm  The $c macro is supposed to contain the current hop count, for use
33c2aa98e2SPeter Wemm  when calling a mailer.  This macro is initialized too early, and
34c2aa98e2SPeter Wemm  is always zero (or the value of the -c command line flag, if any).
35c2aa98e2SPeter Wemm  This macro will probably be removed entirely in a future release;
36c2aa98e2SPeter Wemm  I don't believe there are any mailers left that require it.
37c2aa98e2SPeter Wemm
38c2aa98e2SPeter Wemm* If you EXPN a list or user that has a program mailer, the output of
39c2aa98e2SPeter Wemm  EXPN will include ``@local.host.name''.  You can't actually mail to
40c2aa98e2SPeter Wemm  this address.  It's not clear what the right behavior is in this
41c2aa98e2SPeter Wemm  circumstance.
42c2aa98e2SPeter Wemm
43c2aa98e2SPeter Wemm* \231 considered harmful.
44c2aa98e2SPeter Wemm
45c2aa98e2SPeter Wemm  Header addresses that have the \231 character (and possibly others
46c2aa98e2SPeter Wemm  in the range \201 - \237) behave in odd and usually unexpected ways.
47c2aa98e2SPeter Wemm
48c2aa98e2SPeter Wemm* accept() problem on SVR4.
49c2aa98e2SPeter Wemm
50c2aa98e2SPeter Wemm  Apparently, the sendmail daemon loop (doing accept()s on the network)
51c2aa98e2SPeter Wemm  can get into a weird state on SVR4; it starts logging ``SYSERR:
52c2aa98e2SPeter Wemm  getrequests: accept: Protocol Error''.  The workaround is to kill
53c2aa98e2SPeter Wemm  and restart the sendmail daemon.  We don't have an SVR4 system at
54c2aa98e2SPeter Wemm  Berkeley that carries more than token mail load, so I can't validate
55c2aa98e2SPeter Wemm  this.  It is likely to be a glitch in the sockets emulation, since
56c2aa98e2SPeter Wemm  "Protocol Error" is not possible error code with Berkeley TCP/IP.
57c2aa98e2SPeter Wemm
58c2aa98e2SPeter Wemm  I've also had someone report the message ``sendmail: accept:
59c2aa98e2SPeter Wemm  SIOCGPGRP failed errno 22'' on an SVR4 system.  This message is
60c2aa98e2SPeter Wemm  not in the sendmail source code, so I assume it is also a bug
61c2aa98e2SPeter Wemm  in the sockets emulation.  (Errno 22 is EINVAL "Invalid Argument"
62c2aa98e2SPeter Wemm  on all the systems I have available, including Solaris 2.x.)
63c2aa98e2SPeter Wemm  Apparently, this problem is due to linking -lc before -lsocket;
64c2aa98e2SPeter Wemm  if you are having this problem, check your Makefile.
65c2aa98e2SPeter Wemm
66c2aa98e2SPeter Wemm* accept() problem on Linux.
67c2aa98e2SPeter Wemm
68065a643dSPeter Wemm  The accept() in sendmail daemon loop can return ETIMEDOUT.  An
69065a643dSPeter Wemm  error is reported to syslog:
70c2aa98e2SPeter Wemm
71c2aa98e2SPeter Wemm  Jun  9 17:14:12 hostname sendmail[207]: NOQUEUE: SYSERR(root):
72c2aa98e2SPeter Wemm			getrequests: accept: Connection timed out
73c2aa98e2SPeter Wemm
74c2aa98e2SPeter Wemm  "Connection timed out" is not documented as a valid return from
75c2aa98e2SPeter Wemm  accept(2) and this was believed to be a bug in the Linux kernel.
76c2aa98e2SPeter Wemm  Later information from the Linux kernel group states that Linux
77c2aa98e2SPeter Wemm  2.0 kernels follow RFC1122 while sendmail follows the original BSD
78c2aa98e2SPeter Wemm  (now POSIX 1003.1g draft) specification.  The 2.1.X and later kernels
79c2aa98e2SPeter Wemm  will follow the POSIX draft.
80c2aa98e2SPeter Wemm
81c2aa98e2SPeter Wemm* Excessive mailing list nesting can run out of file descriptors.
82c2aa98e2SPeter Wemm
83c2aa98e2SPeter Wemm  If you have a mailing list that includes lots of other mailing
84c2aa98e2SPeter Wemm  lists, each of which has a separate owner, you can run out of
85c2aa98e2SPeter Wemm  file descriptors.  Each mailing list with a separate owner uses
86c2aa98e2SPeter Wemm  one open file descriptor (prior to 8.6.6 it was three open
87c2aa98e2SPeter Wemm  file descriptors per list).  This is particularly egregious if
88c2aa98e2SPeter Wemm  you have your connection cache set to be large.
89c2aa98e2SPeter Wemm
90c2aa98e2SPeter Wemm* Connection caching breaks if you pass the port number as an argument.
91c2aa98e2SPeter Wemm
92c2aa98e2SPeter Wemm  If you have a definition such as:
93c2aa98e2SPeter Wemm
94c2aa98e2SPeter Wemm	  Mport,          P=[IPC], F=kmDFMuX, S=11/31, R=21,
95c2aa98e2SPeter Wemm			  M=2100000, T=DNS/RFC822/SMTP,
96c2aa98e2SPeter Wemm			  A=IPC [127.0.0.1] $h
97c2aa98e2SPeter Wemm
98c2aa98e2SPeter Wemm  (i.e., where $h is the port number instead of the host name) the
99c2aa98e2SPeter Wemm  connection caching code will break because it won't notice that
100c2aa98e2SPeter Wemm  two messages addressed to different ports should use different
101c2aa98e2SPeter Wemm  connections.
102c2aa98e2SPeter Wemm
103c2aa98e2SPeter Wemm* ESMTP SIZE underestimates the size of a message
104c2aa98e2SPeter Wemm
105c2aa98e2SPeter Wemm  Sendmail makes no allowance for headers that it adds, nor does it
106c2aa98e2SPeter Wemm  account for the SMTP on-the-wire \r\n expansion.  It probably doesn't
107c2aa98e2SPeter Wemm  allow for 8->7 bit MIME conversions either.
108c2aa98e2SPeter Wemm
109c2aa98e2SPeter Wemm* Paths to programs being executed and the mode of program files are
110c2aa98e2SPeter Wemm  not checked.  Essentially, the RunProgramInUnsafeDirPath and
111c2aa98e2SPeter Wemm  RunWritableProgram bits in the DontBlameSendmail option are always
112c2aa98e2SPeter Wemm  set.  This is not a problem if your system is well managed (that is,
113c2aa98e2SPeter Wemm  if binaries and system directories are mode 755 instead of something
114c2aa98e2SPeter Wemm  foolish like 777).
115c2aa98e2SPeter Wemm
116c2aa98e2SPeter Wemm* 8-bit data in GECOS field
117c2aa98e2SPeter Wemm
118c2aa98e2SPeter Wemm  If the GECOS (personal name) information in the passwd file contains
119c2aa98e2SPeter Wemm  8-bit characters, those characters can be included in the message
120c2aa98e2SPeter Wemm  header, which can cause problems when sending SMTP to hosts that
121c2aa98e2SPeter Wemm  only accept 7-bit characters.
122c2aa98e2SPeter Wemm
123c2aa98e2SPeter Wemm* 8->7 bit MIME conversion
124c2aa98e2SPeter Wemm
125c2aa98e2SPeter Wemm  When sendmail is doing 8->7 bit MIME conversions, and the message
126c2aa98e2SPeter Wemm  contains certain MIME body types that cannot be converted to 7-bit,
127c2aa98e2SPeter Wemm  sendmail will strip the message to 7-bit.
128c2aa98e2SPeter Wemm
129c2aa98e2SPeter Wemm* 7->8 bit MIME conversion
130c2aa98e2SPeter Wemm
131c2aa98e2SPeter Wemm  If a message that is encoded as 7-bit MIME is converted to 8-bit and
132c2aa98e2SPeter Wemm  that message when decoded is illegal (e.g., because of long lines or
133c2aa98e2SPeter Wemm  illegal characters), sendmail can produce an illegal message.
134c2aa98e2SPeter Wemm
135c2aa98e2SPeter Wemm* MIME encoded full name phrases in the From: header
136c2aa98e2SPeter Wemm
137c2aa98e2SPeter Wemm  If a full name phrase includes characters from MustQuoteChars, sendmail
138c2aa98e2SPeter Wemm  will quote the entire full name phrase. If MustQuoteChars includes
139c2aa98e2SPeter Wemm  characters which are not special characters according to STD 11 (RFC
140c2aa98e2SPeter Wemm  822), this quotation can interfere with MIME encoded full name phrases.
141c2aa98e2SPeter Wemm  By default, sendmail includes the single quote character (') in
142c2aa98e2SPeter Wemm  MustQuoteChars even though it is not listed as a special character in
143c2aa98e2SPeter Wemm  STD 11.
144c2aa98e2SPeter Wemm
145065a643dSPeter Wemm* bestmx map with -z flag truncates the list of MX hosts
146c2aa98e2SPeter Wemm
147065a643dSPeter Wemm  A bestmx map configured with the -z flag will truncate the list
148065a643dSPeter Wemm  of MX hosts.  This prevents creation of strings which are too
149065a643dSPeter Wemm  long for ruleset parsing.  This can have an adverse effect on the
150065a643dSPeter Wemm  relay_based_on_MX feature.
151065a643dSPeter Wemm
1522e43090eSPeter Wemm* Saving to ~sender/dead.letter fails if su'ed to root
153065a643dSPeter Wemm
1542e43090eSPeter Wemm  If ErrorMode is set to print and an error in sending mail occurs,
1552e43090eSPeter Wemm  the normal action is to print a message to the screen and append
1562e43090eSPeter Wemm  the message to a dead.letter file in the sender's home directory.
1572e43090eSPeter Wemm  In the case where the sender is using su to act as root, the file
1582e43090eSPeter Wemm  safety checks prevent sendmail from saving the dead.letter file
1592e43090eSPeter Wemm  because the sender's uid and the current real uid do not match.
1602e43090eSPeter Wemm
1612e43090eSPeter Wemm* Berkeley DB 2.X race condition with fcntl() locking
1622e43090eSPeter Wemm
1632e43090eSPeter Wemm  There is a race condition for Berkeley DB 2.X databases on
1642e43090eSPeter Wemm  operating systems which use fcntl() style locking, such as
1652e43090eSPeter Wemm  Solaris.  Sendmail locks the map before calling db_open() to
1662e43090eSPeter Wemm  prevent others from modifying the map while it is being opened.
1672e43090eSPeter Wemm  Unfortunately, Berkeley DB opens the map, closes it, and then
1682e43090eSPeter Wemm  reopens it.  fcntl() locking drops the lock when any file
1692e43090eSPeter Wemm  descriptor pointing to the file is closed, even if it is a
1702e43090eSPeter Wemm  different file descriptor than the one used to initially lock
1712e43090eSPeter Wemm  the file.  As a result there is a possibility that entries in a
1722e43090eSPeter Wemm  map might not be found during a map rebuild.  As a workaround,
1732e43090eSPeter Wemm  you can use makemap to build a map with a new name and then
1742e43090eSPeter Wemm  "mv" the new db file to replace the old one.
1752e43090eSPeter Wemm
1762e43090eSPeter Wemm* File open timeouts not available on hard mounted NFS file systems
1772e43090eSPeter Wemm
1782e43090eSPeter Wemm  Since SIGALRM does not interrupt an RPC call for hard mounted
1792e43090eSPeter Wemm  NFS file systems, it is impossible to implement a timeout on a file
1802e43090eSPeter Wemm  open operation.  Therefore, while the NFS server is not responding,
1812e43090eSPeter Wemm  attempts to open a file on that server will hang.  Systems with
1822e43090eSPeter Wemm  local mail delivery and NFS hard mounted home directories should be
1832e43090eSPeter Wemm  avoided, as attempts to open the forward files could hang.
1842e43090eSPeter Wemm
1852e43090eSPeter Wemm(Version 8.36, last updated 2/4/1999)
186