As already mentioned, FreeBSD comes with sendmail already installed as your MTA (Mail Transfer Agent). Therefore by default it is in charge of your outgoing and incoming mail.
However, for a variety of reasons, some system administrators want to change their system's MTA. These reasons range from simply wanting to try out another MTA to needing a specific feature or package which relies on another mailer. Fortunately, whatever the reason, FreeBSD makes it easy to make the change.
You have a wide choice of MTAs available. A good starting point is the FreeBSD Ports Collection where you will be able to find many. Of course you are free to use any MTA you want from any location, as long as you can make it run under FreeBSD.
Start by installing your new MTA. Once it is installed
it gives you a chance to decide if it really fulfills your
needs, and also gives you the opportunity to configure your
new software before getting it to take over from
sendmail. When doing this, you
should be sure that installing the new software will not attempt
to overwrite system binaries such as
/usr/bin/sendmail
. Otherwise, your new
mail software has essentially been put into service before
you have configured it.
Please refer to your chosen MTA's documentation for information on how to configure the software you have chosen.
The procedure used to start sendmail changed significantly between 4.5-RELEASE, 4.6-RELEASE, and later releases. Therefore, the procedure used to disable it is subtly different.
If you disable sendmail's outgoing mail service, it is important that you replace it with an alternative mail delivery system. If you choose not to, system functions such as periodic(8) will be unable to deliver their results by e-mail as they would normally expect to. Many parts of your system may expect to have a functional sendmail-compatible system. If applications continue to use sendmail's binaries to try to send e-mail after you have disabled them, mail could go into an inactive sendmail queue, and never be delivered.
Enter:
sendmail_enable="NO"
into /etc/rc.conf
. This will disable
sendmail's incoming mail service,
but if /etc/mail/mailer.conf
(see below)
is not changed, sendmail will
still be used to send e-mail.
In order to completely disable sendmail, including the outgoing mail service, you must use
sendmail_enable="NONE"
in /etc/rc.conf.
If you only want to disable sendmail's incoming mail service, you should set
sendmail_enable="NO"
in /etc/rc.conf
. However, if
incoming mail is disabled, local delivery will still
function. More information on
sendmail's startup options is
available from the rc.sendmail(8) manual page.
In order to completely disable sendmail, including the outgoing mail service, you must use
sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO"
in /etc/rc.conf.
If you only want to disable sendmail's incoming mail service, you should set
sendmail_enable="NO"
in /etc/rc.conf
. More information on
sendmail's startup options is
available from the rc.sendmail(8) manual page.
You may have a choice of two methods for running your new MTA on boot, again depending on what version of FreeBSD you are running.
Add a script to
/usr/local/etc/rc.d/
that
ends in .sh
and is executable by
root
. The script should accept start
and
stop
parameters. At startup time the
system scripts will execute the command
/usr/local/etc/rc.d/supermailer.sh start
which you can also use to manually start the server. At
shutdown time, the system scripts will use the
stop
option, running the command
/usr/local/etc/rc.d/supermailer.sh stop
which you can also use to manually stop the server while the system is running.
The program sendmail is so ubiquitous as standard software on UNIX(R) systems that some software just assumes it is already installed and configured. For this reason, many alternative MTA's provide their own compatible implementations of the sendmail command-line interface; this facilitates using them as "drop-in" replacements for sendmail.
Therefore, if you are using an alternative mailer,
you will need to make sure that software trying to execute
standard sendmail binaries such as
/usr/bin/sendmail
actually executes
your chosen mailer instead. Fortunately, FreeBSD provides
a system called mailwrapper(8) that does this job for
you.
When sendmail is operating as installed, you will
find something like the following
in /etc/mail/mailer.conf
:
sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail
This means that when any of these common commands
(such as sendmail
itself) are run,
the system actually invokes a copy of mailwrapper named sendmail
, which
checks mailer.conf
and
executes /usr/libexec/sendmail/sendmail
instead. This system makes it easy to change what binaries
are actually executed when these default sendmail
functions
are invoked.
Therefore if you wanted
/usr/local/supermailer/bin/sendmail-compat
to be run instead of sendmail, you could change
/etc/mail/mailer.conf
to read:
sendmail /usr/local/supermailer/bin/sendmail-compat send-mail /usr/local/supermailer/bin/sendmail-compat mailq /usr/local/supermailer/bin/mailq-compat newaliases /usr/local/supermailer/bin/newaliases-compat hoststat /usr/local/supermailer/bin/hoststat-compat purgestat /usr/local/supermailer/bin/purgestat-compat
Once you have everything configured the way you want it, you should either kill the sendmail processes that you no longer need and start the processes belonging to your new software, or simply reboot. Rebooting will also give you the opportunity to ensure that you have correctly configured your system to start your new MTA automatically on boot.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.