KNOWNBUGS revision 182352
1101099Srwatson
2166905Srwatson
3145412Strhodes	     K N O W N   B U G S   I N   S E N D M A I L
4171253Srwatson
5172930Srwatson
6101099SrwatsonThe following are bugs or deficiencies in sendmail that we are aware of
7101099Srwatsonbut which have not been fixed in the current release.  You probably
8101099Srwatsonwant to get the most up to date version of this from ftp.sendmail.org
9145412Strhodesin /pub/sendmail/KNOWNBUGS.  For descriptions of bugs that have been
10101099Srwatsonfixed, see the file RELEASE_NOTES (in the root directory of the sendmail
11106393Srwatsondistribution).
12106393Srwatson
13106393SrwatsonThis list is not guaranteed to be complete.
14106393Srwatson
15101099Srwatson* Delivery to programs that generate too much output may cause problems
16172930Srwatson
17172930Srwatson  If e-mail is delivered to a program which generates too much
18172930Srwatson  output, then sendmail may issue an error:
19101099Srwatson
20101099Srwatson  timeout waiting for input from local during Draining Input
21101099Srwatson
22101099Srwatson  Make sure that the program does not generate output beyond a
23101099Srwatson  status message (corresponding to the exit status).  This may
24101099Srwatson  require a wrapper around the actual program to redirect output
25101099Srwatson  to /dev/null.
26101099Srwatson
27101099Srwatson  Such a problem has been reported for bulk_mailer.
28101099Srwatson
29101099Srwatson* Null bytes are not handled properly in headers.
30101099Srwatson
31101099Srwatson  Sendmail should handle full binary data.  As it stands, it handles
32101099Srwatson  all values in the body, but not 0x00 in the header.  Changing
33101099Srwatson  this would require a major restructuring of the code -- for
34101099Srwatson  example, almost no C library support could be used to handle
35101099Srwatson  strings.
36101099Srwatson
37101099Srwatson* Header checks are not called if header value is too long or empty.
38101099Srwatson
39101099Srwatson  If the value of a header is longer than 1250 (MAXNAME + MAXATOM - 6)
40101099Srwatson  characters or it contains a single word longer than 256 (MAXNAME)
41101099Srwatson  characters then no header check is done even if one is configured for
42136774Srwatson  the header.
43101099Srwatson
44101099Srwatson* Header lines which are too long will be split incorrectly.
45171253Srwatson
46171253Srwatson  Header lines which are longer than 2045 characters will be split
47171253Srwatson  but some characters might be lost.  Fix: obey RFC (2)822 and do not
48101099Srwatson  send lines that are longer than 1000 characters.
49101099Srwatson
50101099Srwatson* milter communication fails if a single header is larger than 64K.
51101099Srwatson
52101099Srwatson  If a single header is larger than 64KB (which is not possible in the
53157986Sdwmalone  default configuration) then it cannot be transferred in one block to
54145412Strhodes  libmilter and hence the communication fails.  This can be avoided by
55101099Srwatson  increasing the constant MILTER_CHUNK_SIZE in
56166905Srwatson  include/libmilter/mfdef.h and recompiling sendmail, libmilter, and
57101099Srwatson  all (statically linked) milters (or by using an undocumented compile
58145412Strhodes  time option:  _FFR_MAXDATASIZE; you have to read the source code in
59170689Srwatson  order to use this properly).
60101099Srwatson
61101099Srwatson* Sender addresses whose domain part cause a temporary A record lookup
62101099Srwatson  failure but have a valid MX record will be temporarily rejected in
63134132Strhodes  the default configuration.  Solution: fix the DNS at the sender side.
64101099Srwatson  If that's not easy to achieve, possible workarounds are:
65165469Srwatson  - add an entry to the access map:
66101099Srwatson	dom.ain	OK
67101099Srwatson  - (only for advanced users) replace
68145412Strhodes
69145412Strhodes# Resolve map (to check if a host exists in check_mail)
70101099SrwatsonKresolve host -a<OKR> -T<TEMP>
71101099Srwatson
72101099Srwatson   with
73101099Srwatson
74101099Srwatson# Resolve map (to check if a host exists in check_mail)
75101099SrwatsonKcanon host -a<OKR> -T<TEMP>
76101099SrwatsonKdnsmx dns -R MX -a<OKR> -T<TEMP>
77101099SrwatsonKresolve sequence dnsmx canon
78101099Srwatson
79101099Srwatson
80101099Srwatson* Duplicate error messages.
81101099Srwatson
82101099Srwatson  Sometimes identical, duplicate error messages can be generated.  As
83101099Srwatson  near as I can tell, this is rare and relatively innocuous.
84101099Srwatson
85101099Srwatson* Misleading error messages.
86157986Sdwmalone
87101099Srwatson  If an illegal address is specified on the command line together
88101099Srwatson  with at least one valid address and PostmasterCopy is set, the
89101099Srwatson  DSN does not contain the illegal address, but only the valid
90101099Srwatson  address(es).
91101099Srwatson
92157986Sdwmalone* \231 considered harmful.
93157986Sdwmalone
94101099Srwatson  Header addresses that have the \231 character (and possibly others
95134132Strhodes  in the range \201 - \237) behave in odd and usually unexpected ways.
96171253Srwatson
97171253Srwatson* accept() problem on SVR4.
98134132Strhodes
99134132Strhodes  Apparently, the sendmail daemon loop (doing accept()s on the network)
100134132Strhodes  can get into a weird state on SVR4; it starts logging ``SYSERR:
101134132Strhodes  getrequests: accept: Protocol Error''.  The workaround is to kill
102134132Strhodes  and restart the sendmail daemon.  We don't have an SVR4 system at
103134132Strhodes  Berkeley that carries more than token mail load, so I can't validate
104171253Srwatson  this.  It is likely to be a glitch in the sockets emulation, since
105171253Srwatson  "Protocol Error" is not possible error code with Berkeley TCP/IP.
106171253Srwatson
107134131Strhodes  I've also had someone report the message ``sendmail: accept:
108101099Srwatson  SIOCGPGRP failed errno 22'' on an SVR4 system.  This message is
109134131Strhodes  not in the sendmail source code, so I assume it is also a bug
110134131Strhodes  in the sockets emulation.  (Errno 22 is EINVAL "Invalid Argument"
111171253Srwatson  on all the systems I have available, including Solaris 2.x.)
112171253Srwatson  Apparently, this problem is due to linking -lc before -lsocket;
113134131Strhodes  if you are having this problem, check your Makefile.
114134131Strhodes
115101099Srwatson* accept() problem on Linux.
116101099Srwatson
117101099Srwatson  The accept() in sendmail daemon loop can return ETIMEDOUT.  An
118157986Sdwmalone  error is reported to syslog:
119101099Srwatson
120157986Sdwmalone  Jun  9 17:14:12 hostname sendmail[207]: NOQUEUE: SYSERR(root):
121101099Srwatson			getrequests: accept: Connection timed out
122157986Sdwmalone
123157986Sdwmalone  "Connection timed out" is not documented as a valid return from
124157986Sdwmalone  accept(2) and this was believed to be a bug in the Linux kernel.
125157986Sdwmalone  Later information from the Linux kernel group states that Linux
126157986Sdwmalone  2.0 kernels follow RFC1122 while sendmail follows the original BSD
127157986Sdwmalone  (now POSIX 1003.1g draft) specification.  The 2.1.X and later kernels
128157986Sdwmalone  will follow the POSIX draft.
129136739Srwatson
130101099Srwatson* Excessive mailing list nesting can run out of file descriptors.
131101099Srwatson
132101099Srwatson  If you have a mailing list that includes lots of other mailing
133101099Srwatson  lists, each of which has a separate owner, you can run out of
134101099Srwatson  file descriptors.  Each mailing list with a separate owner uses
135101099Srwatson  one open file descriptor (prior to 8.6.6 it was three open
136101099Srwatson  file descriptors per list).  This is particularly egregious if
137101099Srwatson  you have your connection cache set to be large.
138101099Srwatson
139101099Srwatson* Connection caching breaks if you pass the port number as an argument.
140101099Srwatson
141145412Strhodes  If you have a definition such as:
142101099Srwatson
143101099Srwatson	  Mport,          P=[IPC], F=kmDFMuX, S=11/31, R=21,
144101099Srwatson			  M=2100000, T=DNS/RFC822/SMTP,
145101099Srwatson			  A=IPC [127.0.0.1] $h
146101099Srwatson
147154386Scsjp  (i.e., where $h is the port number instead of the host name) the
148101099Srwatson  connection caching code will break because it won't notice that
149101099Srwatson  two messages addressed to different ports should use different
150145412Strhodes  connections.
151145412Strhodes
152145412Strhodes* ESMTP SIZE underestimates the size of a message
153101099Srwatson
154101099Srwatson  Sendmail makes no allowance for headers that it adds, nor does it
155145412Strhodes  account for the SMTP on-the-wire \r\n expansion.  It probably doesn't
156145412Strhodes  allow for 8->7 bit MIME conversions either.
157101099Srwatson
158101099Srwatson* Client ignores SIZE parameter.
159145412Strhodes
160145412Strhodes  When sendmail acts as client and the server specifies a limit
161145412Strhodes  for the mail size, sendmail will ignore this and try to send the
162145412Strhodes  mail anyway.  The server will usually reject the MAIL command
163145412Strhodes  which specifies the size of the message and hence this problem
164101099Srwatson  is not significant.
165145412Strhodes
166145412Strhodes* Paths to programs being executed and the mode of program files are
167145412Strhodes  not checked.  Essentially, the RunProgramInUnsafeDirPath and
168145412Strhodes  RunWritableProgram bits in the DontBlameSendmail option are always
169145412Strhodes  set.  This is not a problem if your system is well managed (that is,
170145412Strhodes  if binaries and system directories are mode 755 instead of something
171145412Strhodes  foolish like 777).
172145412Strhodes
173145412Strhodes* 8-bit data in GECOS field
174145412Strhodes
175145412Strhodes  If the GECOS (personal name) information in the passwd file contains
176145412Strhodes  8-bit characters, those characters can be included in the message
177145412Strhodes  header, which can cause problems when sending SMTP to hosts that
178145412Strhodes  only accept 7-bit characters.
179145412Strhodes
180145412Strhodes* 8->7 bit MIME conversion
181101099Srwatson
182101099Srwatson  When sendmail is doing 8->7 bit MIME conversions, and the message
183145412Strhodes  contains certain MIME body types that cannot be converted to 7-bit,
184101099Srwatson  sendmail will pass the message as 8-bit.
185101099Srwatson
186101099Srwatson* 7->8 bit MIME conversion
187145412Strhodes
188145412Strhodes  If a message that is encoded as 7-bit MIME is converted to 8-bit and
189145412Strhodes  that message when decoded is illegal (e.g., because of long lines or
190101099Srwatson  illegal characters), sendmail can produce an illegal message.
191171253Srwatson
192101099Srwatson* MIME encoded full name phrases in the From: header
193101099Srwatson
194145412Strhodes  If a full name phrase includes characters from MustQuoteChars, sendmail
195145412Strhodes  will quote the entire full name phrase.  If MustQuoteChars includes
196145412Strhodes  characters which are not special characters according to STD 11 (RFC
197145412Strhodes  822), this quotation can interfere with MIME encoded full name phrases.
198148482Strhodes  By default, sendmail includes the single quote character (') in
199145412Strhodes  MustQuoteChars even though it is not listed as a special character in
200148482Strhodes  STD 11.
201101099Srwatson
202101099Srwatson* bestmx map with -z flag truncates the list of MX hosts
203171253Srwatson
204171253Srwatson  A bestmx map configured with the -z flag will truncate the list
205101099Srwatson  of MX hosts.  This prevents creation of strings which are too
206101099Srwatson  long for ruleset parsing.  This can have an adverse effect on the
207101099Srwatson  relay_based_on_MX feature.
208101099Srwatson
209101099Srwatson* Saving to ~sender/dead.letter fails if su'ed to root
210145412Strhodes
211101099Srwatson  If ErrorMode is set to print and an error in sending mail occurs,
212101099Srwatson  the normal action is to print a message to the screen and append
213101099Srwatson  the message to a dead.letter file in the sender's home directory.
214101099Srwatson  In the case where the sender is using su to act as root, the file
215101099Srwatson  safety checks prevent sendmail from saving the dead.letter file
216101099Srwatson  because the sender's uid and the current real uid do not match.
217145412Strhodes
218101099Srwatson* Berkeley DB 2.X race condition with fcntl() locking
219101099Srwatson
220101099Srwatson  There is a race condition for Berkeley DB 2.X databases on
221101099Srwatson  operating systems which use fcntl() style locking, such as
222157986Sdwmalone  Solaris.  Sendmail locks the map before calling db_open() to
223101099Srwatson  prevent others from modifying the map while it is being opened.
224101099Srwatson  Unfortunately, Berkeley DB opens the map, closes it, and then
225157986Sdwmalone  reopens it.  fcntl() locking drops the lock when any file
226101099Srwatson  descriptor pointing to the file is closed, even if it is a
227101099Srwatson  different file descriptor than the one used to initially lock
228101099Srwatson  the file.  As a result there is a possibility that entries in a
229101099Srwatson  map might not be found during a map rebuild.  As a workaround,
230145412Strhodes  you can use makemap to build a map with a new name and then
231157986Sdwmalone  "mv" the new db file to replace the old one.
232157986Sdwmalone
233157986Sdwmalone  Sleepycat Software has added code to avoid this race condition to
234157986Sdwmalone  Berkeley DB versions after 2.7.5.
235157986Sdwmalone
236157986Sdwmalone* File open timeouts not available on hard mounted NFS file systems
237157986Sdwmalone
238157986Sdwmalone  Since SIGALRM does not interrupt an RPC call for hard mounted
239101099Srwatson  NFS file systems, it is impossible to implement a timeout on a file
240101099Srwatson  open operation.  Therefore, while the NFS server is not responding,
241101099Srwatson  attempts to open a file on that server will hang.  Systems with
242101099Srwatson  local mail delivery and NFS hard mounted home directories should be
243101099Srwatson  avoided, as attempts to open the forward files could hang.
244157986Sdwmalone
245157986Sdwmalone* Race condition for delivery to set-user-ID files
246157986Sdwmalone
247157986Sdwmalone  Sendmail will deliver to a fail if the file is owned by the DefaultUser
248157986Sdwmalone  or has the set-user-ID bit set.  Unfortunately, some systems clear that bit
249157986Sdwmalone  when a file is modified.  Sendmail compensates by resetting the file mode
250171253Srwatson  back to it's original settings.  Unfortunately, there's still a
251157986Sdwmalone  permission failure race as sendmail checks the permissions before locking
252157986Sdwmalone  the file.  This is unavoidable as sendmail must verify the file is safe
253157986Sdwmalone  to open before opening it.  A file can not be locked until it is open.
254157986Sdwmalone
255157986Sdwmalone* MAIL_HUB always takes precedence over LOCAL_RELAY
256157986Sdwmalone
257157986Sdwmalone  Despite the information in the documentation, MAIL_HUB ($H) will always
258171253Srwatson  be used if set instead of LOCAL_RELAY ($R).  This will be fixed in a
259157986Sdwmalone  future version.
260157986Sdwmalone
261101099Srwatson$Revision: 8.60 $, Last updated $Date: 2007/12/04 01:16:50 $
262101099Srwatson