FAQ: Vendor / OS Specific Sendmail Issues
- Sun Microsystems SunOS/Solaris 1.x/2.x
- How can I solve "line 273: replacement $3 out of bounds" errors?
- How can I solve "line 445: bad ruleset 96 (50 max)" errors?
- Why does version 8 sendmail (< 8.7.5) sometimes hang under Solaris 2.5?
- Why can't I use SunOS/Solaris to get email to certain large sites?
- Why do I have trouble compiling on Solaris?
- How does 8.X compare to 8.X+Sun?
- IBM AIX
- Linux
Sun Microsystems SunOS/Solaris 1.x/2.x
How can I solve "line 273: replacement $3 out of bounds" errors?
When I use sendmail V8 with a Sun config file I get lines like:
/etc/sendmail.cf: line 273: replacement $3 out of bounds
the line in question reads:
R$*<@$%y>$* $1<@$2.LOCAL>$3 user@ether
what does this mean? How do I fix it?
V8 doesn't recognize the Sun "$%y" syntax, so as far as it is concerned, there is only a $1 and a $2 (but no $3) in this line. Read Rick McCarty's paper on "Converting Standard Sun Config Files to Sendmail Version 8", in the contrib directory (file "converting.sun.configs") in the latest version 8 sendmail distribution for a full discussion of how to do this.
How can I solve "line 445: bad ruleset 96 (50 max)" errors?
When I use sendmail V8 on a Sun, I sometimes get lines like:
/etc/sendmail.cf: line 445: bad ruleset 96 (50 max)
what does this mean? How do I fix it?
You're somehow trying to start up the old Sun sendmail (or sendmail.mx) with a version 8 sendmail config file, which Sun's sendmail doesn't like. Check your /etc/rc.local, any procedures that have been created to stop and re-start the sendmail processes, etc.... Make sure that you've switched everything over to using the new sendmail. To keep this problem from ever happening again, try the following (make sure you're logged in as root):
mv /usr/lib/sendmail /usr/lib/sendmail.old
ln -s /usr/local/lib/sendmail.v8 /usr/lib/sendmail
mv /usr/lib/sendmail.mx /usr/lib/sendmail.mx.old
ln -s /usr/local/lib/sendmail.v8 /usr/lib/sendmail.mx
chmod 0000 /usr/lib/sendmail.old
chmod 0000 /usr/lib/sendmail.mx.old
Assuming, of course, that you have installed sendmail V8 in /usr/local/lib/sendmail.v8.
Why does version 8 sendmail (< 8.7.5) sometimes hang under Solaris 2.5?
In moving from Solaris 2.4 to Solaris 2.5, the kernel changed its name and is now in /kernel/genunix instead of /kernel/unix, so _PATH_UNIX in conf.h is pointing to the wrong place.
If you can't upgrade to the latest release of sendmail 8.8.z, the next best thing to do is change _PATH_UNIX in conf.h (in the solaris2 part) to point to the generic interface /dev/ksyms, like so:
# define _PATH_UNIX "/dev/ksyms"
Why can't I use SunOS/Solaris to get email to certain large sites?
This is most likely a problem in your resolver libraries (DNS, /etc/hosts, NIS, etc...). Older Sun (and Solaris?) resolver libraries allocated enough room for only five IP addresses for each host name, and if any program ever ran across a name with more than five IP addresses for it, the program would crash.
For example, this would keep you from getting mail to CompuServe, since (at the time of this writing) they list eleven IP addresses for mx1.compuserve.com (one of the named MXes for compuserve.com).
This will affect you even if you use version 8 sendmail, since it's a problem in the resolver libraries, and not in sendmail itself.
You should either get patches to the resolver libraries from Sun, or the latest version of BIND (see Q2.12) and install their resolver library routines. Between the two, installing BIND is a bit more work, but it typically gives you much more up-to-date code to help you resist attacks to your systems, more capable programs to be used for serving the DNS (including support for IPv6 and several other features), and some very useful utility programs.
Why do I have trouble compiling on Solaris?
Many people have experienced compilation problems on Solaris,
with the compiler typically complaining about tm_zone
or TopFrame. The Solaris section of our
Compiling Sendmail page
explains these.
How does 8.X compare to 8.X+Sun?
With a Vn/Berkeley config file, they're
identical. There are a few minor differences between 8.X
with a Vn/Berkeley config file and
8.X+Sun with the same config file, but the V
line changed to Vn/Sun. But most differences
are the backwards compatibility hacks needed for 8.X+Sun
to support old V1/Sun config files.
There are three web pages which discuss these in detail: Berkeley migration (from SMI-8.6 to 8.X), Sun migration (from SMI-8.6 to 8.X+Sun), and Differences (5 sections comparing and contrasting config files and binaries).
IBM AIX
The system resource controller always reports sendmail as "inoperative". What's wrong?
When I use version 8 sendmail on an IBM RS/6000 running AIX, the system resource controller always reports sendmail as "inoperative", even though it's actually running. What's wrong?
When running as a daemon, sendmail detaches from its parent process, fooling the SRC into thinking that sendmail has exited. To fix this, issue the commands:
kill `head -1 /etc/sendmail.pid`
chssys -s sendmail -f 9 -n 15 -S -a "-bD"
startsrc -s sendmail -a "-bd -q30m"
# your sendmail args may vary
Now the SRC should report the correct status of sendmail.
For more information, read up on the System Resource Controller, the lssrc command and the chssys command in the online AIX documentation.
Why can't I use AIX to get email to some sites?
When I use IBM's sendmail on an IBM RS/6000 running AIX trying to get to certain sites, it seems that I can get to some of them and not others. What's wrong?
There are two possible problems here:
1) Your version of sendmail is not configured to recognize MX records in the DNS. Search through your sendmail.cf looking for "OK MX" or "OK ALL". Older configurations had this line commented out, and this will cause mail from you to some sites to fail (because those sites have MX records, but no A records in their DNS for the specific Fully Qualified Domain Name you're trying to mail to).
For more information, see the comp.unix.aix FAQ ftp://rtfm.mit.edu/pub/usenet/news.answers/aix-faq/.
2) There is a negative caching bug in AIX 3.2.5 with /usr/sbin/named executables that are less than 103000 bytes long. Ask your IBM representative to give you PMP 3251, or the most recent patch that fixes this problem for your particular configuration and version of the OS.
Why can't I get sendmail 8.7.1 to use MX records with AIX 3.2.5?
IBM, in their infinite wisdom, provided a header file that would easily mis-compile. This resulted in the struct{} for the DNS query to be mis-allocated, and MX processing would barf.
Fix 1) upgrade to 8.7.5 - this has a code fix for this problem.
Fix 2) Install the BIND 4.9.4 libraries and include files and tweak the Makefile.AIX to use them - I *think* these Get It Right (if not, at least it'll die during compile rather than failing weirdly at runtime).
Fix 3) Hack Makefile.AIX to pass a -DBIT_ZERO_ON_LEFT to cause the headers to use the right #ifdefs.
Linux
Red Hat
Why do I have so many sendmail problems configuring sendmail with linuxconf?
Do not edit sendmail.cf with linuxconf. This tool and its module "mailconf" are broken and based on very old rulesets from 8.8.7 . You will have many troubles if you do this. First make sure that the sendmail-cf RPM is installed. Then create your own myhost.mc file in /usr/lib/sendmail-cf/cf:
% cd /usr/lib/sendmail-cf/cf
% cp redhat.mc myhost.mc
(Edit myhost.mc)
% m4 ../m4/cf.m4 myhost.mc > myhost.cf
(Test this new myhost.cf; once it's known good, install it:)
(If 8.9.x or earlier:)
% cp myhost.cf /etc/sendmail.cf
% chown root /etc/sendmail.cf
(If 8.10.x or later:)
% cp myhost.cf /etc/mail/sendmail.cf
% chown root /etc/mail/sendmail.cf
See /usr/doc/sendmail/README.cf (or just README) for features and detailed instructions how to do this.
I built sendmail.cf from sendmail.mc and it works until the next reboot of the machine. What is going on?
If you have used linuxconf's module "mailconf" just once, it will rewrite your sendmail.cf on every reboot if it sees that sendmail.cf is changed from linuxconf. The solution is to remove the mailconf module from linuxconf. Turn on linuxconf and go to item
Control files and systems > Configure Linuxconf modules
Scroll down to "Module path -> mailconf" and turn off the button "this module is active", then click "Accept" and "quit" to quit linuxconf.
This will disable linuxconf's control of sendmail. Build sendmail.cf again from sendmail.mc (see 5.3.1), and restart sendmail.
Why can't I receive mail with Red Hat 7.1 and later?
Red Hat, like some other vendors, changed the way that sendmail is run. (See 4.22 for a more general discussion of this problem.) They decided that most people need a client-only version of sendmail. So it is listening only on the localhost interface. Check the RH documentation on how to change that:
Make sure that you have installed the "sendmail-cf" package on your system -- it should be on your install media.
Then check the file "sendmail.mc" (probably in "/etc/mail").
Look for the string "DAEMON_OPTIONS" and for the
comment lines near that string.
Also note that Red Hat 7.1 and later build sendmail with
tcpwrapper support, and provide a hosts.deny file that
rejects all external mail. The sendmail:ALL addition
to hosts.allow fixes this.
SusE
Where is the sendmail.mc file on SuSE Linux?
On SuSE Linux systems there is no real sendmail.mc file. This file is generated 'on the fly' by SuSEconfig using several variables in /etc/rc.config and /etc/rc.config.d/sendmail.rc.config (SuSE <= 7.3) or /etc/sysconfig/sendmail (SuSE >= 8.0).
SuSEconfig executes the script /sbin/conf.d/SuSEconfig.sendmail to a) build a temorary .mc file b) execute m4 to generate /etc/sendmail.cf and c) delete the temporary .mc file afterwards.
To make customisations you cannot achieve by modifying the variables in the configuration files mentioned above (using YaST or YaST2), you have two options:
- Use /etc/mail/linux.mc (or /etc/mail/linux.nullclient.mc) as a starting point. Both files contain several helpful comments.
- To get a .mc file based on your current configuration, modify /sbin/conf.d/SuSEconfig.sendmail to keep the temporary .mc file and execute SuSEconfig afterwards. Then use that copy as starting point.
In both cases you have to build your /etc/sendmail.cf (note: SuSE still uses /etc not /etc/mail as suggested in the manual) using the m4 macroprocessor:
m4 your.mc.file > /etc/sendmail.cf
Then reload sendmail with "rcsendmail reload".
To prevent SuSEconfig from overiding your new sendmail.cf in
future runs, set the variable "SENDMAIL_TYPE" in
/etc/rc.config.d/sendmail.rc.config to "no" (SuSE Linux <= 7.3).
On systems >= 8.0 you probably will have to set an "exit"
command atop of the file /sbin/conf.d/SuSEconfig.sendmail to do the
same. SuSE 8.0 does not know the SENDMAIL_TYPE
variable.
| « General Sendmail Issues | Sendmail FAQ | Additional Information Sources (RFC 1807 bibliography format) » |