Today, I came across the strangest problem I’d ever seen in years of administering sendmail
. Normally, sendmail
is very much set-and-forget, taking care of emails without any problems. Obviously, today wasn’t normal.
No, not at all. The server had sendmail
installed, and properly configured, but wouldn’t send any emails. It’s as if it wasn’t even running.
ps -fea | grep sendmail
Nope, no sendmail
. So, let’s start sendmail
and check again.
/sbin/service sendmail start
Uh oh. The usual start up messages didn’t appear. Checking if sendmail
was running again showed 0 sendmail
instances.
After looking through /var/log/message
and finding nothing about sendmail
anywhere, as well as a stubbornly empty /var/log/maillog
, I decided the sendmail
binary must be corrupt so issued
yum reinstall sendmail
After yum
downloaded and installed the new RPM, I was sure that sendmail
would start right up without any problems. I start the service and… nothing happens.
Out of frustration, I decided to run sendmail
on the terminal and see where it was failing.
[root@server ~]$ /usr/sbin/sendmail bash: /usr/sbin/sendmail: No such file or directory
Well, that couldn’t be right. bash
had even auto-completed that for me. sendmail
had to be installed, as all the other files where there. Wait a minute….
[root@server ~]$ ls -l /usr/sbin/sendmail lrwxrwxrwx 1 root root 21 May 30 11:51 /usr/sbin/sendmail -> /etc/alternatives/mta
Most modern servers include alternatives
to help manage different programs that provide the same feature. This is accomplished through the /etc/alternatives
directory that has symlinks to the actual binaries, as well as /var/lib/alternatives
to configure the entire system, which is managed by /usr/sbin/alternatives
.
The only problem on the server turned out to be a broken link, /etc/alternatives/mta
, which was pointing to a nonexistant qmail
installation. The entire problem was fixed by issuing
/usr/sbin/alternatives --set mta /usr/sbin/sendmail.sendmail
I wasn’t happy with this, as it wasn’t “autoconfigured” by alternatives
automatically, so I copied /var/lib/alternatives/mta
from an identical server that only has sendmail running and ran
/usr/sbin/alternatives --auto mta
alternatives
properly detected sendmail
, fixed the symlinks in /etc/alternatives
and sendmail
successfully launched.