Постановка задачи
Необходимо быстро и без лишних заморочек настроить не требовательный к ресурсам и простой в администрировании 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
строку:
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, можно прочитать в статье Почтовая система для среднего и малого офиса.
Установка и настройка 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троку:
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 в режиме демона, т.к. даже в описанной конфигурации не было каких-либо тормозов и заметных нагрузок на процессор слабенького сервера.