Простейший POP3/POP3S-сервер на базе popa3d и stunnel на FreeBSD


Постановка задачи

Необходимо быстро и без лишних заморочек настроить не требовательный к ресурсам и простой в администрировании POP3-сервер для обслуживания среднего офиса (до 50-100 клиентов) с возможностью безопасного использования из-за пределов корпоративной сети (другими словами, с поддержкой протокола POP3S). Описанный в данной статье POP3/POP3S-сервер более двух лет работал совместно с почтовой системой среднего офиса на базе Postfix, однако его можно использовать в составе любых других почтовых систем с небольшим количеством клиентов. При всей своей простоте сервер надежен и стабилен.
Исходные данные

Имеется сервер с FreeBSD, находящийся на входе подсети центрального офиса. Главным звеном описанной конфигурации является POP3-сервер popa3d, использующий базу данных паролей операционной системы и запускаемый суперсервером inetd. Шифрование трафика обеспечивает утилита stunnel, использующая средства OpenSSL и самоподписной доверенный сертификат X.509. Все перечисленное программное обеспечение будет устанавливаться из портов, поэтому я настоятельно рекомендую Вам обновить их перед выполнением действий, описанных ниже (я использовал FreeBSD 4.10 и последние версии портов для нее). Ссылки на источники информации будут приводиться применительно к конкретным разделам статьи.
Установка и настройка popa3d

Установку popa3d необходимо выполнить из портов:

cd /usr/ports/mail/popa3d
make install


Popa3d не требует наличие каких-либо файлов конфигурации. Для того, чтобы сервер запускался при обращении клиента, необходимо добавить в файл конфигурации суперсервера inetd /etc/inetd.conf строку:1 pop3 stream tcp nowait root /usr/local/libexec/popa3d popa3d


Popa3d поддерживает механизм TCP Wrappers, поэтому в файл /etc/hosts.allow перед правилом, запрещающим доступ ко всем службам со всех хостов, необходимо добавить правило, разрешающее доступ к POP3-серверу с любых хостов:

popa3d : ALL : allow
ALL : ALL : deny

Это не опечатка, именно с любых. Если разрешить доступ только с хостов, входящих в состав доверенных сетей, POP3S-сервер, реализованный на базе stunnel, не будет работать. Т.к. протокол POP3 не относится к числу защищенных, Ваш брандмауэр не должен разрешать установку входящих TCP-соединений c адресом интерфейса, подключенного к Интернет, портом 110, поэтому добавьте соответствующие правила, если они отсутствуют. На этом настройка popa3d заканчивается. Остается перезапустить суперсервер inetd командой killall -HUP inetd. О том, как проверить работоспособность POP3-сервера, подключившись к 110 порту локального хоста с помощью клиента telnet, можно прочитать в статье Создаем почтовую систему среднего и малого офиса на основе FreeBSD Postfix + dr.web + popa3d + pflogsumm.
Установка и настройка stunnel

Установку stunnel необходимо выполнить из портов:

cd /usr/ports/security/stunnel
make install

Далее необходимо сгенерировать самоподписной доверенный сертификат X.509. Данная процедура описана в статье Почтовая система среднего офиса на базе Postfix (в моем случае файл, содержащий сертификат, называется popa3d.pem). Далее необходимо создать в папке /usr/local/etc/stunnel файл конфигурации popa3d.conf:

cd /usr/local/etc/stunnel
touch popa3d.conf


Содержимое файла popa3d.conf имеет следующий вид:

cert = /usr/local/etc/stunnel/popa3d.pem
exec = /usr/local/libexec/popa3d
execargs = popa3d
pid = /var/run/popa3d-stunnel.pid

Указанные параметры имеют следующие значения: cert – местонахождение самоподписного доверенного сертификата, exec – местонахождение запускаемой программы, execargs – аргументы запускаемой программы, pid – местонахождение файла, содержащего идентификатор процесса stunnel. Для того, чтобы сервер запускался при обращении клиента, необходимо добавить в файл конфигурации суперсервера inetd /etc/inetd.conf cтроку:1 pop3s stream tcp nowait root /usr/local/sbin/stunnel stunnel /usr/local/etc/stunnel/popa3d.conf


Stunnel поддерживает механизм TCP Wrappers, поэтому в файл /etc/hosts.allow перед правилом, запрещающим доступ ко всем службам со всех хостов, необходимо добавить правило, разрешающее доступ к POP3S-серверу с любых хостов:

stunnel : ALL : allow
ALL : ALL : deny

Не забудьте, что Ваш брандмауэр должен разрешать прохождение TCP-трафика на адреса нужных интерфейсов сервера порт 995, поэтому добавьте соответствующие правила, если они отсутствуют. На этом настройка POP3S-сервера заканчивается. Остается перезапустить суперсервер inetd командой killall -HUP inetd.
Заключение

Выполнив действия, описанные в статье, Вы получите полнофункциональный POP3/POP3S-сервер, который, скорее всего, удовлетворит большую часть Ваших потребностей. Я не стал экспериментировать с запуском popa3d в режиме демона, т.к. даже в описанной конфигурации не было каких-либо тормозов и заметных нагрузок на процессор слабенького сервера.

http://www.sergeysl.ru/freebsd-popa3d-stunnel/

Обновлено: 12.03.2015