Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #51, ФЕВРАЛЬ 2005 г.

Неприступный почтовик

Антон Карпов, toxa@cterra.ru

Спецвыпуск: Хакер, номер #051, стр. 051-036-3


purgestat /var/qmail/bin/qmail-tcpok

# echo 'sendmail_enable="NONE"' %26gt;%26gt; /etc/rc.conf

Добавляем необходимых пользователей. Почти каждый процесс в qmail работает под отдельной учетной записью.

# pw groupadd nofiles

# pw groupadd qmail

# pw useradd alias -g nofiles -d /var/qmail/alias -s /usr/sbin/nologin

# pw useradd qmaild -g nofiles -d /var/qmail -s /usr/sbin/nologin

# pw useradd qmaill -g nofiles -d /var/qmail -s /usr/sbin/nologin

# pw useradd qmailp -g nofiles -d /var/qmail -s /usr/sbin/nologin

# pw useradd qmailq -g qmail -d /var/qmail -s /usr/sbin/nologin

# pw useradd qmailr -g qmail -d /var/qmail -s /usr/sbin/nologin

# pw useradd qmails -g qmail -d /var/qmail -s /usr/sbin/nologin

Настало время настроить qmail. Делается это, как водится, командой echo ;).

# cd /var/qmail/control

# echo mail.mydomain.ru %26gt; me

# echo mydomain.ru %26gt; defaultdomain

# echo mydomain.ru %26gt; rcpthosts

# echo mail.mydomain.ru %26gt;%26gt; rcpthosts

# echo mydomain.ru %26gt; locals

# echo mail.mydomain.ru %26gt;%26gt; locals

Мы указали qmail его имя, то, на какие домены принимать почту и какие домены считать локальными. Затем создадим alias’ы на root'а и прочих пользователей, которым могут написать, но которые не смогут ее получить. Вся направляемая им почта будет скидываться пользователю toxa.

# cd /var/qmail/alias

# echo toxa %26gt; .qmail-root

# echo toxa %26gt; .qmail-postmaster

По умолчанию qmail использует формат почтового ящик Maildir, разработанный все тем же djb. В отличие от традиционного mbox, в котором вся почта складывается в один файл, Maildir хранит каждое письмо в отдельном файле.

По-моему, это вполне удобно, и нет нужды менять принятое по умолчанию поведение qmail. Создадим себе Maildir с помощью утилиты maildirmake:

# maildirmake /home/toxa/Maildir

В появившемся каталоге Maildir увидишь три папки, cur new tmp. Новая почта сваливается в new. Так как сервер у нас будет доступен и по защищенному SSL-протоколу, сгенерируем себе самоподписанный сертификат для почты. Заметь, файл должен содержать как открытый ключ, так и секретный, так что с точки зрения x509 это не совсем сертификат (строго говоря, сертификат = открытый ключ + дополнительная информация):

# cd /tmp

# openssl genrsa -out mail.key 2048

# openssl req -new -key mail.key -out mail.csr

# openssl x509 -req -days 365 -in mail.csr -signkey mail.key -out mail.crt

# cat mail.key %26gt;%26gt; mail.crt

# rm mail.key mail.csr

# mv mail.crt /etc/ssl/certs/

# chmod 600 /etc/ssl/certs/mail.crt

Запуск qmail будет осуществлять tcpserver из установленного нами набора ucspi-tcp. Мы запустим по два экземпляра pop3- и smtp-сервера, без SSL (на 110 и 25 портах соответственно) и с SSL (на 995 и 465 портах).

На первый взгляд, это выглядит громоздко, зато сразу видно четкое отделение мух от котлет, а защищенных соединений - от незащищенных. При этом не забудем, что smtp должен поддерживать авторизацию. Создаем каталог /var/qmail/runscripts, а в нем - подкаталоги qmail-pop3d, qmail-pop3ds, qmail-send, qmail-smtpd, qmail-smtpds. Если ты заметил, при запуске сервиса supervise'ом выполняется скрипт run в соответствующем каталоге. Здесь мы эти скрипты создадим руками и поправим под наши нужды.

Назад на стр. 051-036-2  Содержание  Вперед на стр. 051-036-4