Написал Andrew Boothman. Информация получена из писем, написанных
Gregory Neil Shapiro.
Как уже упоминалось, FreeBSD поставляется с MTA (Mail Transfer Agent) sendmail. Следовательно, по умолчанию именно эта программа
отвечает за вашу исходящую и входящую почту.
Однако, по различным причинам некоторые системные администраторы заменяют системный
MTA. Эти причины варьируются от простого желания попробовать другой MTA до потребности в
определенных возможностях пакета, основанного на другой почтовой программе. К счастью,
вне зависимости от причины, в FreeBSD такая замена выполняется просто.
Вам предоставлен широкий выбор MTA. Начните с поиска в коллекции
портов FreeBSD, где их немало. Конечно, вы можете использовать любой MTA по желанию,
взятый откуда угодно, если только сможете запустить его под FreeBSD.
Начните с установки нового MTA. После установки у вас будет возможность решить,
действительно ли он подходит вашем нуждам, а также настроить новое программное
обеспечение перед тем, как заменить им sendmail. При установке
новой программы убедитесь, что она не пытается перезаписать системные файлы, такие как
/usr/bin/sendmail. Иначе ваша новая почтовая программа
фактически начнет работать до того, как вы ее настроите.
Обратитесь к документации на выбранный MTA за информацией по его настройке.
Процедура, используемая для запуска sendmail, значительно
изменилась между релизами 4.5-RELEASE и 4.6-RELEASE. Поэтому процедура, используемая для
его отключения, немного отличается.
Добавьте:
sendmail_enable="NO"
в /etc/rc.conf. Это отключит сервис входящей почты sendmail, но если /etc/mail/mailer.conf
(см. ниже) не изменен, sendmail все еще будет использоваться
для отправки почты.
Для полного отключения sendmail используйте
sendmail_enable="NONE"
в /etc/rc.conf.
Внимание: Если вы отключите сервис исходящей почты sendmail таким способом, необходимо заменить его полностью
работоспособной альтернативной системой доставки почты. Если вы не сделаете этого,
системные программы, такие как periodic(8), не смогут
отправлять сообщения по электронной почте как обычно. Многие программы в вашей системе
могут требовать наличия функционирующей sendmail-совместимой
системы. Если приложения будут продолжать использовать программу sendmail, пытаясь отправить почту после отключения почтовой
системы, почта может попасть в неактивную очередь sendmail и
никогда не будет доставлена.
Если вы хотите отключить только сервис входящей почты sendmail, установите
sendmail_enable="NO"
в /etc/rc.conf. Дополнительная информация о параметрах
запуска sendmail доступна на странице справочника rc.sendmail(8).
Вы можете выбрать один из двух методов для запуска нового MTA при загрузке, опять же в
зависимости от используемой версии FreeBSD.
Добавьте в каталог /usr/local/etc/rc.d/, скрипт с
расширением .sh и с правами выполнения пользователем root. Скрипт должен принимать параметры start и stop. Во время запуска системы
он будет запущен командой
/usr/local/etc/rc.d/supermailer.sh start
которая также может использоваться для запуска сервера вручную Во время завершения
работы системы, системные скрипты используют параметр stop,
выполнив команду
/usr/local/etc/rc.d/supermailer.sh stop
которая также может использоваться для остановки почтового сервера при работающей
системе.
С более поздними версиями FreeBSD, вы можете использовать метод, описанный выше, или
добавить строку
mta_start_script="filename"
в /etc/rc.conf, где filename
это имя скрипта, который вы хотите выполнить при загрузке для запуска MTA.
Программа sendmail настолько распространена в качестве
стандартной программы для систем UNIX®, что многие
программы считают, что она уже установлена и настроена. По этой причине многие
альтернативные MTA предоставляют собственные совместимые реализации интерфейса командной
строки sendmail; это облегчает их использование в качестве
``прозрачной'' замены sendmail.
Поэтому если вы используете альтернативную почтовую программу, потребуется убедиться,
что когда программное обеспечение пытается выполнить стандартные исполняемые файлы sendmail, такие как /usr/bin/sendmail,
на самом деле выполняются программы вновь установленной почтовой системы. К счастью,
FreeBSD предоставляет систему, называемую mailwrapper(8),
которая выполняет эту работу за вас.
Когда установлен sendmail, файл /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
Это означает, что когда выполняется какая-то из этих стандартных программ (например
сам sendmail), система на самом деле вызывает копию
mailwrapper, называемую sendmail, которая обращается к mailer.conf и выполняет вместо этого /usr/libexec/sendmail/sendmail. Такая схема делает простой замену
программ, которые на самом деле выполняются, когда вызываются стандартные функции sendmail.
Поэтому если вы хотите выполнять /usr/local/supermailer/bin/sendmail-compat вместо sendmail, отредактируйте /etc/mail/mailer.conf так:
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
Как только вы все настроили, потребуется или уничтожить процесс sendmail, который уже не нужен и запустить новую почтовую
программу, или просто перегрузить систему. Перезагрузка также даст вам возможность
проверить, правильно ли настроена система для автоматического запуска MTA при
загрузке.