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