Предупреждение :
Этот документ находится в разработке, и его пока не следует считать официальным.
|
Виртуальная почтовая система на основе qmail/vpopmail.
1.
Введение
Не важно для чего вы хотите организовать систему электронной почты, только лишь
для сервисов, как самостоятельный сервер, или для нескольких виртуальных
доменов, qmail может быть легко настроен для любых ваших нужд. Это руководство
поможет вам установить и настроить qmail, для любого из этих вариантов с
уклоном на удаленный доступ, в том числе через зашифрованные каналы данных.
Это руководство поможет вам освоить qmail, courier-imap, vpopmail, и horde/imp.
Но вместе с ними так же вступят в "игру" daemontools, ucspi-tcp, mysql, apache,
и mod_php. qmail предоставляет функции MTA (Mail Transfer Agent), courier-imap
- предоставляет удаленный сбор почты, (pop3/imap сервер. прим.пер.) vpopmail
предоставляет функции управления виртуальными доменами, и horde/imp - это
почтовый веб-клиент.
До установки (emerging) чего-либо, вы должны корректно установить переменную
USE. Если у вас уже были установлены какие-нибудь из этих пакетов, то,
возможно, вам придется их переустановить. USE="maildir ssl imap mysql".
Также, если вы хотите использовать horde/imp как web-клиент, то так же надо
добавить USE="nls" до установки mod_php.
Примечание:
Это руководство написано "по-шагам" Если в какой-то момент вы чувствуете что
все то, что нужно готово, то можете не продолжать.
|
Cуществует достаточно пакетов, с помошью которых можно построить систему
электронной почты. Сейчас самое время осмыслить и решить для вас ли qmail. У
нас так же есть прекрасное руководство
основанное на Postfix, или вы можете
взглянуть на exim. Выбирайте решение
для себя, а мы покажем вам, как использовать qmail.
2.
qmail ("Разговаривая с собой")
Листинг 2.1: Emerge qmail |
# emerge qmail
|
Важно:
Эта часть построена вокруг qmail-1.03-r13 или старше. Будет ли нижеизложенное
работать с ранними версиями? Может быть. Должны ли вы обновиться? Да, если вы
хотите быть уверены, что это сработает.
|
Предупреждение:
Если вы получили сообщение the virtual/mta package conflicts with another
package тогда вам необходимо удалить из системы любой другой MTA. Чтобы
узнать что это за пакет, просто запустите emerge qmail -p.
|
Установка qmail так же "потянет" за собой установку ucspi-tcp и daemontools. О
них, если хотите, вы можете прочитать на ucspi-tcp и на daemontools. Обычно, daemontools
отвечает за управление qmail'ом как сервисом, тогда как ucspi-tcp отвечает за
управление входящими TCP соединениями для сервиса qmail.
Для начала проведем несколько пост-инсталяционных мероприятий. :)
Листинг 2.2: Конфигурирование qmail |
# nano /var/qmail/control/servercert.cnf
# ebuild /var/db/pkg/mail-mta/qmail-1.03-r*/qmail-1.03-r*.ebuild config
|
Qmail проектировался так, чтобы полностью соответствовать требованиям
безопасности. Почта никогда не посылается пользователю 'root'. Поэтому вам надо
выбрать пользователя на машине, который будет получать почту предназначенную
'root'. С этого момента я предполагаю, что этот пользователь 'vapier'.
Листинг 2.3: Установка не-root акаунта для e-mail. |
# cd /var/qmail/alias
# echo vapier > .qmail-root
# echo vapier > .qmail-postmaster
# echo vapier > .qmail-mailer-daemon
|
Теперь, поднимем сервис доставки qmail.
Листинг 2.4: Запуск qmail delivery service |
# rc-update add svscan default
# /etc/init.d/svscan start
# cd /service
# ln -s /var/qmail/supervise/qmail-send qmail-send
|
Надо убедиться, что qmail работает корректно, вот небольшой тест.
Листинг 2.5: Test delivery service |
# ssh vapier@localhost
# maildirmake .maildir
# qmail-inject root << EOF
test root e-mail!
EOF
# qmail-inject postmaster << EOF
test postmaster e-mail!
EOF
# qmail-inject vapier << EOF
test vapier e-mail!
EOF
# mutt
|
Вот и все! Теперь у вас стоит почтовая система способная удовлетворить,
потребности локальной машины и системных демонов/пользователей.
Предупреждение:
Если вы не получили никаких писем или видите странные ошибки в лог-файлах
(проверьте /var/log/qmail/) включающие 'localhost.localhost', это
означает что ваша domain/dns информация не корректна. По умолчанию, qmail
использует информацию от hostname --fqdn. Если на вашей машине, эта
команда выводит 'localhost', тогда проверьте ваши файлы
/etc/hostname, /etc/hosts, и настройки dns чтобы
убедиться что все правильно. Отредактируйте конфигурационные файлы в каталоге
/var/qmail/control/. Используйте их примеры, (там же) если вам
нужна помощь.
|
Листинг 2.6: Пример /var/qmail/control/ файлов для домена второго уровня |
# hostname --fqdn
wh0rd.org
# cat me
wh0rd.org
# cat defaultdomain
wh0rd.org
# cat plusdomain
wh0rd.org
# cat locals
wh0rd.org
# cat rcpthosts
wh0rd.org
|
Листинг 2.7: Пример /var/qmail/control/ файлов для домена третьего уровня |
# hostname --fqdn
mail.wh0rd.org
# cat me
mail.wh0rd.org
# cat defaultdomain
wh0rd.org
# cat plusdomain
wh0rd.org
# cat locals
mail.wh0rd.org
# cat rcpthosts
mail.wh0rd.org
|
3.
vpopmail
Листинг 3.1: Emerge vpopmail |
# emerge vpopmail
|
Важно:
Эта часть построена вокруг vpopmail-5.4.6 или старше. Будет ли нижеизложенное
работать с ранними версиями? Может быть. Должны ли вы обновиться? Да, если вы
хотите быть уверены что это сработает.
|
vpopmail требует немного больше старания при установке, чем предыдущие пакеты.
Мы должны убедиться что он запущен и работает (до mysql). Далее мы можем
установить базу данных vpopmail. До того как приступить к следующему шагу,
необходимо проверить что mysql корректно установлен. Учтите, пароль для базы
данных vpopmail будет 'vpoppw', конечно вы можете выбрать другой.
Листинг 3.2: Установка vpopmail в mysql |
# rc-update add mysql default
# /etc/init.d/mysql start
# nano /etc/vpopmail.conf
# mysql -p << EOF
create database vpopmail;
use mysql;
grant select, insert, update, delete, create, drop on vpopmail.* to vpopmail@localhost identified by 'vpoppw';
flush privileges;
EOF
# chown root:vpopmail /etc/vpopmail.conf
# chmod 640 /etc/vpopmail.conf
# chown root:vpopmail /var/vpopmail/bin/vchkpw
# chmod 4711 /var/vpopmail/bin/vchkpw
|
Предупреждение:
Если вы испытываете трудности с доступом в mysql/vpopmail, перезапустите mysql.
Выполните /etc/init.d/mysql restart.
|
Теперь, vpopmail готов к использованию. В этой части, мы предоставим
виртуальный хостинг для домена 'wh0rd.org'. Это означает что мы должны
"сообщить" vpopmail об этом домене. Кстати, давайте добавим пользователя
'vapier'.
Листинг 3.3: Добавление домена |
# source /etc/profile
# mysql -u vpopmail -p
mysql> select * from vpopmail.vlog;
# vadddomain wh0rd.org postpass
# printf "postmaster@wh0rd.org\0postpass\0blah\0" | vchkpw `which id` 3<&0
uid=89(vpopmail) gid=89(vpopmail) groups=0(root)
# vadduser vapier@wh0rd.org vappw
|
В каждом домене созданном vpopmail существует аккаунт 'postmaster'. Мы задаем
пароль postmaster'а в 'postpass'. Чтобы vpopmail был действительно полезен нам,
мы должны получать почту через courier и посылать с помощью qmail и SMTP.
4.
Courier POP/IMAP
Листинг 4.1: Emerge courier-imap |
# emerge net-mail/courier-imap
|
Важно:
Сразу после vpopmail вы должны установить courier-imap Модуль authvchkpw будет
встроен.(?)
|
Важно:
Эта часть построена вокруг net-mail/courier-imap-3.0.7 или старше. Будет ли
нижеизложенное работать с ранними версиями? Может быть. Должны ли вы
обновиться? Да, если вы хотите быть уверены что это сработает.
|
И еще несколько пост-инсталляционных шагов:). Они необходимы только в том
случае если вы будете использовать SSL зашифрованные коммуникации
(Рекомендуется!). Иначе вы можете пропустить последние 2 шага, в следующих
листингах, удаляя '-ssl' из имени инициализационного скрипта.
Листинг 4.2: Конфигурирование POP3/SSL |
# nano /etc/courier/authlib/authdaemonrc
# cd /etc/courier-imap
# nano pop3d.cnf
# mkpop3dcert
# rc-update add courier-pop3d-ssl default
# /etc/init.d/courier-pop3d-ssl start
|
Листинг 4.3: Конфигурирование IMAP/SSL |
# cd /etc/courier-imap
# nano imapd.cnf
# mkimapdcert
# rc-update add courier-imapd-ssl default
# /etc/init.d/courier-imapd-ssl start
|
Ваш почтовый клиент теперь может соединиться с сервером (с запущенным на нем
courier) и получать почту предназначенную для виртуального хоста. В моем
случае, я могу соединиться с именем 'vapier@wh0rd.org' и паролем 'vappw'.
5.
qmail (разговаривая с миром)
Давайте заставим SMTP работать, не причинив ущерба людям, открыв очередную
спам-дыру.
Листинг 5.1: Запуск qmail SMTP service |
# cd /var/qmail/control/
# nano conf-smtpd
# nano servercert.cnf
# mkservercert
# cd /service
# ln -s /var/qmail/supervise/qmail-smtpd qmail-smtpd
# /etc/init.d/svscan restart
|
Предположим вы не меняли файлов qmail, тогда он теперь принимает почту для
виртуального домена wh0rd.org и для пользователей локальной машины. Более того,
qmail доверяет любому кто посылает письма через 127.0.0.1 и для любого кто
может пройти аутентификацию через vpopmail. При настройке своего почтового
клиента для отправки почты, убедитесь что вы включили опцию вроде 'Server
requires authentication'. В моем случае, я поставил имя пользователя в
'vapier@wh0rd.org' и пароль - 'vappw'. И последняя деталь - убедитесь что
настроили использование SSL/TLS для SMTP в своем клиенте. Qmail не позволит вам
пройти аутентификацию если сессия не зашифрована.
6.
Веб клиент Horde / IMP
Несмотря на то что существует множество веб-клиентов электронной почты (и вы
свободны выбрать любой из них), я предпочитаю IMP Webmail Client который является
частью "окружения Horde". Основная причина заключается в том что Horde
предоставляет достаточно прозрачный web доступ к почте, и вы можете очень
просто добавить другие компоненты, такие как Адресные Книги, Календари, Задачи,
и др. И если он до сих пор вас не устраивает, тогда вам следует прочитать Horde.
On to the good stuff! Теперь установим IMP.
Листинг 6.1: Emerge IMP |
# emerge horde-imp
|
Важно:
Эта часть построена вокруг horde-2.2.x and horde-imp-3.2.x. CVS версии (и
следующие релизы) скорее всего, будут очень различаться в настройках. Так же
имейте ввиду php-5.x, скорее всего, нарушит работу horde-2.x.
|
Horde не просто настроить если вы точно не знаете что делать. К счастью для
вас, я точно знаю что делать, значит и вы будете. :)
Листинг 6.2: Конфигурирование Horde |
# cd /var/www/localhost/htdocs/horde/config/
# for f in *.dist ; do mv ${f} ${f/.dist} ; done
# nano horde.php
$conf['auth']['driver'] = 'imap';
$conf['auth']['params']['dsn'] = '{localhost:993/imap/ssl/novalidate-cert}';
$conf['log']['name'] = '/var/log/apache2/horde.log';
$conf['problems']['enabled'] = true;
$conf['problems']['email'] = 'webmaster@wh0rd.org';
# nano registry.php
$this->registry['auth']['login'] = 'imp';
$this->registry['auth']['logout'] = 'imp';
# touch /var/log/apache2/horde.log
# chown apache:apache /var/log/apache2/horde.log
|
Примечание:
Вы можете поменять аккаунт 'webmaster' на что-нибудь другое. Если вы хотите
использовать этот e-mail адрес, тогда вы должны добавить такого пользователя в
vpopmail. (или смотрите ниже о qmailadmin).
|
Теперь действительно быстро установим IMP.
Листинг 6.3: Конфигурирование IMP |
# cd /var/www/localhost/htdocs/horde/imp/config/
# for f in *.dist ; do mv ${f} ${f/.dist} ; done
# nano servers.php
$servers['imap'] = array(
'name' => 'wh0rd.org',
'server' => 'localhost',
'protocol' => 'imap/ssl/novalidate-cert',
'port' => 993,
'folders' => '',
'namespace' => 'INBOX.',
'maildomain' => 'wh0rd.org',
'smtphost' => 'localhost',
'realm' => '',
'preferred' => ''
);
|
Наконец, поднимем apache, чтобы начать использовать webmail.
Листинг 6.4: Запуск apache |
# nano /etc/conf.d/apache2
# rc-update add apache2 default
# /etc/init.d/apache2 start
|
Предупреждение:
Вы должны подумать о том, чтобы заставить работать Horde через https. Это не
простая задача, но приглядитесь к ней ради безопасности.
|
Чтобы проверить установку IMP, запустите браузер и зайдите
http://localhost/horde/ (измените localhost на ваш сервер) Вы должны
увидеть страницу приглашения Horde где вы можете войти. Опять же, в моей
установке я вхожу с помощью 'vapier@wh0rd.org' и 'vappw' соответственно как
логин и пароль.
На данный момент, Horde и IMP установлены. Однако, вы можете пройти заново
через все дерево конфигурационных директорий и настроить все что вашей душе
угодно.
7.
Дополнительные пакеты
qmailadmin
Первый пакет на который я обращу ваше внимание это qmailadmin. Это веб
интерфейс для управления виртуальными доменами. Просто emerge
net-mail/qmailadmin а затем укажите вашему браузеру на
http://localhost/cgi-bin/qmailadmin чтобы начать использовать его.
qmailadmin делает жизнь намного проще.
qmHandle
Если вы вляпались в проблемы с очередями qmail и провели много времени над
отладкой, то, возможно захотите взглянуть на qmHandle. Это простая перл
программа которая позволяет вам видеть и редактировать очередь сообщений qmail.
Опять таки все что нужно сделать это emerge net-mail/qmhandle.
Дополнения к horde
Я очень рекомендую посмотреть на множество приложений Horde. Turba, Kronolith, и Nag эти приложения очень хорошо
дополняют IMP для разных случаев. Их настройка схожа с настройкой IMP, так что
у вас не будет проблем с ними. Просто не забудьте отредактировать registry.php
в директории конфигурации horde, и новые приложения появятся внизу странички
Horde.
ucspi-tcp
qmail использует ucspi-tcp для фильтрации входящих соединений. Если вы хотите
настроить правила фильтрации, тогда смотрите файлы в
/etc/tcprules.d/ (в старых версиях qmail эти файлы находятся в
/etc). Здесь вы найдете по два файла на каждый сервис, конфигурационный файл
(tcp.qmail-smtp) и его откомпилированную версию, ту которую и использует
ucspi-tcp (tcp.qmail-smtp.cdb). Каждый раз после обновления конфигурационного
файла, надо пересобрать бинарную его версию. Запустите tcprules
tcp.qmail-smtp.cdb tcp.qmail-smtp.tmp < tcp.qmail-smtp. Каждый раз при
соединении с qmail, откомпилированные правила перечитываются с диска, то есть,
нет нужды перезапускать сервис.
qmail-scanner
Если вы хотите обеспечить фильтрацию контента на своем mail сервере (спам,
вирусы), тогда вам необходимо использовать другую программу для организации
очередей. Одна из хороших программ это qmail-scanner. Наберите
emerge qmail-scanner и отредактируйте
/etc/tcprules.d/tcp.qmail-smtp.
Важно:
Процесс сборки qmail-scanner очень уродлив. Чтобы поддерживать пакеты, они уже
должны быть установлены в системе. Это означает что вы должны установить
SpamAssassin и/или Clam AntiVirus до qmail-scanner'а. Смотрите подходящие
секции ниже.
|
Листинг 7.1: Смена программы организации очередей. |
# cd /etc/tcprules.d/
# nano tcp.qmail-smtp
# tcprules tcp.qmail-smtp.cdb tcp.qmail-smtp.tmp < tcp.qmail-smtp
|
Смотрите секции об установке спам и вирус фильтров. Вы можете отредактировать
несколько опций в /var/qmail/bin/qmail-scanner-queue.pl.
SpamAssassin
Один из лучших спам фильтров это SpamAssassin. Чтобы установить
emerge mail-filter/spamassassin. Пакет поставляется двояко, как версия
для командной строки и как клиент/серверная. Для серверов через которые
проходит небольшое количество почты, использование версии для командной строки
себя оправдывает. Но любой у кого большая загрузка серверов должен использовать
клиент/серверную версию.
Листинг 7.2: Конфигурирование SpamAssassin |
# nano /etc/mail/spamassassin/local.cf
required_hits 6
skip_rbl_checks 1
# rc-update add spamd default
# /etc/init.d/spamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
|
Важно:
Если у вас не был установлен SpamAssassin до установки qmail-scanner'а, Вы
должны будете переустановить qmail-scanner. Процесс его сборки очень ужасен,
включены будут только те функции, пакеты для которых уже были установлены.
|
На этом этапе входящая почта будет проходить через qmail-scanner который в свою
очередь пропустит ее через SpamAssassin.
Clam AntiVirus
Как и SpamAssassin, Clam AntiVirus
поставляется в двойном исполнении. Я расскажу как быстро поставить
клиент/серверную версию. Во-первых, emerge app-antivirus/clamav.
Листинг 7.3: Конфигурирование Clam AntiVirus |
# nano /etc/conf.d/clamd
# nano /etc/clamav.conf
# rc-update add clamd default
# /etc/init.d/clamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
# nano /var/qmail/control/conf-common
|
Важно:
Если у вас не был установлен Clam AntiVirus до установки qmail-scanner'а, Вы
должны будете переустановить qmail-scanner. Процесс его сборки очень ужасен,
включены будут только те функции, пакеты для которых уже были установлены.
|
На этом этапе входящая почта будет проходить через qmail-scanner который в свою
очередь пропустит ее через Clam AntiVirus.
8.
Заключительные примечания
У меня нет особых примечаний, но если у вас проблемы с этим руководством,
пожалуйста, свяжитесь со мной или
разместите сообщение в системе
распределения запросов Gentoo. Если у вас есть интересная информация
которая вы считаете, может расширить это руководство, то шлите ее мне для
включения. Я люблю qmail и с удовольствием добавлю веши, которые могут
расширить опыт работы пользователя с mta.
Текст этого документа распространяется на условиях лицензии
Creative Commons
- Attribution / Share Alike.
|