Неприступный почтовик Антон Карпов, 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 в соответствующем каталоге. Здесь мы эти скрипты создадим руками и поправим под наши нужды. |