Ссылка на оригинал: http://www.gentoo.org/doc/ru/qmail-howto.xml
C версии: 1.0
Не важно для чего вы хотите организовать систему электронной почты, только лишь для сервисов, как самостоятельный сервер, или для нескольких виртуальных доменов, 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.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
(Теперь в вашем ящике должно быть 3 письма)
Вот и все! Теперь у вас стоит почтовая система способная удовлетворить, потребности локальной машины и системных демонов/пользователей.
Предупреждение: Если вы не получили никаких писем или видите странные ошибки в лог-файлах (проверьте /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.1: Emerge vpopmail
# emerge vpopmail
Важно: Эта часть построена вокруг vpopmail-5.4.6 или старше. Будет ли нижеизложенное работать с ранними версиями? Может быть. Должны ли вы обновиться? Да, если вы хотите быть уверены что это сработает.
vpopmail требует немного больше старания при установке, чем предыдущие пакеты. Мы должны убедиться что он запущен и работает (до mysql). Далее мы можем установить базу данных vpopmail. До того как приступить к следующему шагу, необходимо проверить что mysql корректно установлен. Учтите, пароль для базы данных vpopmail будет 'vpoppw', конечно вы можете выбрать другой.
Листинг 3.2: Установка vpopmail в mysql
# rc-update add mysql default
Если вы установили mysql в первый раз, убедитесь что была запущена команда
ebuild <mysql.ebuild> config до запуска mysql сервера.
# /etc/init.d/mysql start
# nano /etc/vpopmail.conf
(Изменим пароль с 'secret' на 'vpoppw')
# 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: Добавление домена
(это нужно сделать только в том случае если vadddomain выдает "command not found" (см. далее))
# source /etc/profile
(при отладке vpopmail, вам может понадобиться просмотр журналов)
# 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.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
(Оставьте в переменной authmodulelist только "authvchkpw")
# cd /etc/courier-imap
# nano pop3d.cnf
(Отредактируйте секцию [ req_dn ] )
# 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
(Отредактируйте секцию [ req_dn ] )
# mkimapdcert
# rc-update add courier-imapd-ssl default
# /etc/init.d/courier-imapd-ssl start
Ваш почтовый клиент теперь может соединиться с сервером (с запущенным на нем courier) и получать почту предназначенную для виртуального хоста. В моем случае, я могу соединиться с именем 'vapier@wh0rd.org' и паролем 'vappw'.
Давайте заставим SMTP работать, не причинив ущерба людям, открыв очередную спам-дыру.
Листинг 5.1: Запуск qmail SMTP service
# cd /var/qmail/control/
# nano conf-smtpd
(Раскомментируйте SMTP-AUTH переменную и установите QMAIL_SMTP_CHECKPASSWORD
в /var/vpopmail/bin/vchkpw)
# nano servercert.cnf
(Отредактируйте секцию [ req_dn ] )
# 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 не позволит вам пройти аутентификацию если сессия не зашифрована.
Несмотря на то что существует множество веб-клиентов электронной почты (и вы свободны выбрать любой из них), я предпочитаю 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
(Ниже 'Horde Authentication':)
$conf['auth']['driver'] = 'imap';
$conf['auth']['params']['dsn'] = '{localhost:993/imap/ssl/novalidate-cert}';
(Ниже 'Horde Logging':)
$conf['log']['name'] = '/var/log/apache2/horde.log';
(Ниже 'Problem Reporting':)
$conf['problems']['enabled'] = true;
$conf['problems']['email'] = 'webmaster@wh0rd.org';
# nano registry.php
(Ниже 'Handlers':)
$this->registry['auth']['login'] = 'imp';
$this->registry['auth']['logout'] = 'imp';
(Ниже 'Application registry':) Установите элемент 'status', раздел
applications['imp'], из 'inactive' в 'active'
# 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']
$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
(Раскоменнтируйте APACHE2_OPTS="-D SSL -D PHP4")
# rc-update add apache2 default
# /etc/init.d/apache2 start
Предупреждение: Вы должны подумать о том, чтобы заставить работать Horde через https. Это не простая задача, но приглядитесь к ней ради безопасности.
Чтобы проверить установку IMP, запустите браузер и зайдите http://localhost/horde/ (измените localhost на ваш сервер) Вы должны увидеть страницу приглашения Horde где вы можете войти. Опять же, в моей установке я вхожу с помощью 'vapier@wh0rd.org' и 'vappw' соответственно как логин и пароль.
На данный момент, Horde и IMP установлены. Однако, вы можете пройти заново через все дерево конфигурационных директорий и настроить все что вашей душе угодно.
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
(добавьте QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue" в правило catchall)
# 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
(Убедитесь что $spamc_binary variable выставлена в '/usr/bin/spamc'.)
(Если она выставлена в '', тогда смотрите далее.)
Важно: Если у вас не был установлен 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
(Установите START_CLAMD=yes)
# nano /etc/clamav.conf
(Настройте все как хотите)
# rc-update add clamd default
# /etc/init.d/clamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
(Убедитесь что $clamscan_binary переменная установлена
в '/usr/bin/clamscan'. Если нет, смотрите ниже.)
# nano /var/qmail/control/conf-common
(Если ClamAV сообщает о проблемах с памятью попробуйте увеличить
программный лимит (softlimit))
Важно: Если у вас не был установлен Clam AntiVirus до установки qmail-scanner'а, Вы должны будете переустановить qmail-scanner. Процесс его сборки очень ужасен, включены будут только те функции, пакеты для которых уже были установлены.
На этом этапе входящая почта будет проходить через qmail-scanner который в свою очередь пропустит ее через Clam AntiVirus.
У меня нет особых примечаний, но если у вас проблемы с этим руководством, пожалуйста, свяжитесь со мной или разместите сообщение в системе распределения запросов Gentoo. Если у вас есть интересная информация которая вы считаете, может расширить это руководство, то шлите ее мне для включения. Я люблю qmail и с удовольствием добавлю веши, которые могут расширить опыт работы пользователя с mta