Настройка nullmailer в NetBSD

nullmailer - это программа, с помощью которой можно организовать отправку писем с сервера по протоколу SMTP на удалённый почтовый сервер в почтовый ящик администратора. Программа предназначена только для выполнения этой задачи и, в отличие от многих аналогов, таких как ssmtp или msmtp, поддерживает очередь писем. То есть при недоступности удалённого SMTP-сервера письма не пропадают, а остаются в очереди и дожидаются восстановления доступности SMTP-сервера. Как следствие простоты, программа зависит от небольшого количества других пакетов.

Установим nullmailer из pkgsrc:

# cd /usr/pkgsrc/mail/nullmailer
# make install

Прописываем в файл конфигурации /usr/pkg/etc/nullmailer/me имя сетевого узла, которое будет подставляться в SMTP-команду HELO/EHLO:

git.vm.stupin.su

Прописываем в файл конфигурации /usr/pkg/etc/nullmailer/allmailfrom почтовый ящик отправителя, который будет подставляться в поле From конверта писем:

git@stupin.su

Прописываем в файл конфигурации /usr/pkg/etc/nullmailer/adminaddr почтовый ящик получателя, который будет получать письма с компьютера, где запущен nullmailer:

vladimir@stupin.su

И наконец, прописываем в файл конфигурации /usr/pkg/etc/nullmailer/remotes почтовый сервер, используемый им протокол и дополнительные настройки для отправки писем:

mail.stupin.su smtp port=587 starttls user='git@stupin.su' pass='$ecretP4$$w0rd'

Меняем права доступа к файлу /usr/pkg/etc/nullmailer/remotes, чтобы скрыть пароль от почтового ящика от остальных пользователей системы:

# chown root:nullmail /usr/pkg/etc/nullmailer/remotes
# chmod u=rw,g=r,o= /usr/pkg/etc/nullmailer/remotes

Заменяем Postfix на nullmailer:

# /etc/rc.d/postfix stop
# cat /usr/pkg/share/examples/nullmailer/mailer.conf > /etc/mailer.conf

В файле /etc/rc.conf отключаем автозапуск Postfix при загрузке системы, включаем вместо него автозапуск nullmailer:

postfix=NO
nullmailer=YES

Теперь можно запустить nullmailer:

# /etc/rc.d/nullmailer start

И т.к. настройки и файлы Postfix нам больше не понадобятся, их можно удалить:

# rm -R /usr/pkg/etc/postfix
# rm -R /var/spool/postfix
# rm -R /var/db/postfix

Проверить отправку писем можно, например, с помощью такой команды:

$ echo test | mail -s test root

Если в почтовом ящике не появилось письмо, то скорее всего оно застряло в очереди писем, просмотреть которую можно с помощью следующей команды:

$ mailq

Сама очередь писем находится в каталоге /var/spool/nullmailer и при необходимости застрявшие письма можно удалить оттуда вручную.