Эта страница размещена на Virtual Estate Internet
Этот HOWTO был написан чтобы помочь людям использовать qmail, как превосходный MTA (Mail Transport Agent - агент доставки почты) написанный Dan Bernstein. Следование инструкциям, которые изложены здесь, упростит установку qmail и будет облегчать ее для новых пользователей.
Содержание:
i. ВведениеПочему стоит перейти на qmail? Если вы когда нибудь настраивали sendmail и редактировали sendmail.cf, то вы догадаваетесь почему. Но это не единственная причина. Имеются несколько причин для этого:
Теперь, когда я говорю, что qmail проще чем sendmail, верьте мне, несмотря на то, что вы привыкнете к нему дольше, чем за пару часов. Документация qmail, несмотря на то, что хорошо написана и является очень полной, всетаки теория, и большинство написанного в ней не последовательно, в отличие от нашемго HOWTO. Документация в виде man страниц, виртуально бесполезна любому новому пользователю, который не набил руку в теории qmail. (для просмотра схем работы qmail, проверьте http://www.nrg4u.com/.)
Мой первый совет к вам: читайте все файлы INSTALL, и так много из man страниц, как только много вы сможете вынести. Изучение в теории как qmail отличается от sendmail это ключ к пониманию идей работы qmail. Пробуйте добраться до идеи работы qmail.
Основная идея qmail: вместо того, чтобы иметь один огромный, раздутый, монолитный исполняемый файл, которых заботится обо всех задачах доставки, разбивать все задачи, возникающие во время доставки почты по их специфике, и распределять их между различными программами. Каждая программа независима. Эта модель имеет отдельные преимущества, включая легкость использования, более быструю отладку, и простое интегрирование с заказными инструментальными средствами.
Перед тем, как вы даже может быть сделаете всего лишь попытку установить qmail, следующие условия должны быть выполнены:
Первые шаги в установке qmail это получение требуемых файлов с сервера.
Пакеты, которые вам понадобятся перечислены ниже:
qmailВы конечно начнете распаковывать все это в известном месте(например /usr/src/)
(Теперь мы должны стать пользователем root.)# gzip -d qmail-1.03.tar.gz # tar xf qmail-1.03.tar
Затем мы переходим в папку qmail-1.03.
# cd qmail-1.03
Как только вы будете находится в папке qmail-1.03, вы будете хотеть начинать читать FAQ и INSTALL файлы.
# more INSTALL # more INSTALL.alias # more INSTALL.mbox etc...
После того, как Вы закончите читать все эти файлы, Вы не будете нуждаться в остальной части этого HOWTO! Но так как вы все еще читаете, я буду предполагать что Вы пропустили их.
Первый шаг, который нужно сделать - это создать домашний каталог для qmail.
# mkdir /var/qmail
Теперь мы должны создать пользователей и группы, от имени которых работают различные qmail процессы. См. INSTALL.IDS для этих групп. Если Вы используете Debian Linux v2. 0, то там пользователи и группы уже созданы для Вас (какой хороший Debian!). Следующие команды - для Linux и Solaris:
# groupadd nofiles # useradd -g nofiles -d /var/qmail/alias -s /bin/false alias # useradd -g nofiles -d /var/qmail -s /bin/false qmaild # useradd -g nofiles -d /var/qmail -s /bin/false qmaill # useradd -g nofiles -d /var/qmail -s /bin/false qmailp # groupadd qmail # useradd -g qmail -d /var/qmail -s /bin/false qmailq # useradd -g qmail -d /var/qmail -s /bin/false qmailr # useradd -g qmail -d /var/qmail -s /bin/false qmails
Для получения полных инструкций по созданию qmail пользователей в других операционных системах читайте INSTALL.ids.
*** НАПОМИНАНИЕ: ЕСЛИ ВЫ НЕ СОЗДАДИТЕ ЭТИХ ПОЛЬЗОВАТЕЛЕЙ И ГРУППЫ, QMAIL НЕ БУДЕТ РАБОТАТЬ. ***
Следующий шаг - компилирование программ и созданий дерева каталогов qmail.
введите:# make setup check
Компиляция qmail начнется. Если компиляция закончится успешно, то вы будете иметь новые директории в /var/qmail содержашие полную систему qmail.
Компиляция rblsmtpd тривиальна на многих системах:
# tar zxvf rblsmtpd-0.70.tar.gz # cd rblsmtpd-0.70 # make # make setup check
Эта процедура поместит исполняемые файлы rblsmtpd в /usr/local/bin.
После компиляции qmail вы должны сконфигурировать его:
# ./config
Если это не работает, вам нужно будет проделать небольшую грязную работу. Читайте INSTALL.ctl. Как только ваш IP адрес будет в DNS, вы не будете иметь никаких проблем. Иначе вам придется делать:
# ./config-fast your.full.host.name
Это создаст необходимые файлы, что бы запустить qmail.
# cd ~alias # echo adam > .qmail-root # echo bob > .qmail-postmaster # echo bob > .qmail-mailer-daemon
Qmail использует файлы для каждого псевдонима. Это одно из основных отличий qmail и sendmail Это объясняется более подробно ниже. Заметьте, что имеется псевдоним для root. Это потому, что root не получает почту в qmail. По сути, qmail откажется доставлять почту принадлежащую root. Читайте INSTALL.alias для более подробных объяснений.
После того, как вы закончите, ваша qmail система будет готова для испытания. Для того, чтобы включить локальную доставку почты, делайте следующие команды от имени root:
# cp /var/qmail/boot/home /var/qmail/rc # csh -cf '/var/qmail/rc &'
Эта процедура не будет конфликтовать с sendmail. Используйте это, чтобы проверить локальную доставку почты. (читайте TEST.deliver) Заметьте, что выполнение этого выдаст почту в файл называемый Mailbox в домашнем каталоге пользователя. Для информации относительно создания /var/spool/mail совместимой qmail установки, читайте INSTALL.MBOX. С тех пор, как qmail читает ваш Почтовый ящик непосредственно из вашего основного каталога, программы почты типа PINE не должны больше иметь id, который открывает (хотя малую) но потенциальную угрозу защищенности.
Maildir это альтернативный путь доставки почты. Maildir имеет следующие преимущества:
Если вы решили использовать Maildirs, все , что вы должны сделать, это выполнить следующую команду в вашем домашнем каталоге:
$ /var/qmail/bin/maildirmake $HOME/Maildir $ echo ./Maildir/ > ~/.qmail
Помните, что папка Maildir должна принадлежать пользователю, для которого она создается. Если вы создаете ее как root, вы должны будете воспользоваться командой chown, чтобы изменить монопольное использование. Но лучше всего включить папку Maildir в /etc/skel, это будет автоматически организовывать Maildir для каждого нового пользователя.
Если вы добрались до этого места, это означает, что вы готовы отказаться от хрупкого, старого sendmail навсегда. Сначала наидите pid вашего sendmail процесса и убейте его. В Linux это делается так:
# killall -TERM sendmail
Если вы не получили достаточного удовлетворения от этого, то перезапустите sendmail и уничтожте его снова. После это делайте следующее.
# mv /usr/lib/sendmail /usr/lib/sendmail.old # mv /usr/sbin/sendmail /usr/sbin/sendmail.old # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
(/usr/sbin может не существовать в вашей системе)
*** ВАЖНО:
Имейте в виду, что sendmail наиболее вероятно запускается в ваших сценариях init.
Вы будете должны удалить sendmail из ваших сценариев init так, чтобы он не запускался снова,
когда система будет перезагружена. Вы будете должны консультироваться с документацией вашей
операционной системы, чтобы делать это.
Теперь, когда вы установили qmail, вы будете должны установить SMTP, POP3 и другие сервисы, которые должны работать на вашей системе. Наиболее важный из них - qmail-smtpd. Без qmail-smtpd, ваша машина будет способна только выдать почту локально и не будет получать почту извне.
daemontools и ucspi-tcp пакеты, которые вы уже получили, являются универсальными утилитами, которые расширяют возможности qmail.
Для qmail, вы будете использовать supervise, accustamp, setuser, и cyclog из пакетов daemontools и tcpserver для пакета ucspi-tcp.Использование следующих команд установит uspci-tcp в /usr/local/bin:
# tar zxvf ucspi-tcp-0.84.tar.gz # cd ucspi-tcp-0.84 # make # make setup check
Установка daemontools также проста.
# tar zxvf daemontools-0.53.tar.gz # cd daemontools-0.53 # make # make man # make setup $ make check # (может быть запущена от имени простого пользователя)
Теперь, все что осталось - это создать каталоги, где cyclog будет вести журналы.
# mkdir /var/log/qmail # chown qmaill /var/log/qmail # mkdir /var/log/qmail/qmail-smtpd # mkdir /var/log/qmail/qmail-pop3d # if you are also using qmail-pop3d # chown qmaill /var/log/qmail/*
После того, как вы установите daemontools, вы должны бужете протестировать программы следуя инструкциям в INSTALL.
Прежде чем запускать наш qmail smtpd, мы должны делать некоторый доступ. Самый простой способ сделать это используя файлы в /etc. Я использцю /etc/tcp.smtp как мои файлы доступа. Если вы не нуждаетесь в управлении доступом, /etc/tcp.smtp может содержать одну строчку:
:allow
Заметьте, что заданная конфигурация по умолчанию не учитывает НИКАКУЮ передачу почты, даже из localhost. Чтобы разрешать передавать почту из localhost и вашей локальной сети, вы будете должны использовать что-то, подобное этому:
127.0.0.1:allow,RELAYCLIENT="" 192.168.1.:allow,RELAYCLIENT="" :allow
Для большего понимания читайте man tcprules.
После того, как вы создали ваши правила, вы должны активизировать их. tcpserver работает читая cdb (база данных) файл. Вы используете tcprules для создания файла базы данных вашего /etc/tcp.smtp файла. Это выполняется командой:
# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
rblsmtpd это основная программа которая работает с любым SMTP сервером который запускается через tcpserver (для примера, qmail и sendmail.) Если вы только хотите блокировать места перечисленные в MAPS RBL, вы не должны давать rblsmtpd любые аргументы кроме SMTP сервиса, что бы это работало. Однако если вы хотите использовать блокировку основанную на других системах блокирования, типа ORBS, вы будете должны запустить множественные копии rblsmtpd, используя флаг -b с именем сервера, каждое обращение к которому будет вызывать поиск в таблицах.
Теперь вы готовы запустить ваш qmail сервис через tcpserver (и помещать записи в ваши init файлы, так чтобы запуск происходил при старте системы.) Выполняют следующие команды как root:
# PATH=/var/qmail/bin:/usr/local/bin:$PATH # mkdir /var/lock/qmail-smtpd # mkdir /var/log/qmail/ # mkdir /var/log/qmail/qmail-smtpd # supervise /var/lock/qmail-smtpd \ tcpserver -v -x/etc/tcp.smtp.cdb -u71 -g1001 0 25 \ rblsmtpd qmail-smtpd 2>&1 | \ setuser qmaill accustamp | \ setuser qmaill cyclog -s5000000 -n5 \ /var/log/qmail/qmail-smtpd & или, чтобы использовать блокировки ORBS и RBL, # supervise /var/lock/qmail-smtpd \ tcpserver -v -x/etc/tcp.smtp.cdb -u71 -g1001 0 25 \ rblsmtpd rblsmtpd -rrelays.orbs.org \ qmail-smtpd 2>&1 | \ setuser qmaill accustamp | \ setuser qmaill cyclog -s5000000 -n5 \ /var/log/qmail/qmail-smtpd &
Если вы хотите знать, что делают предыдущие команды, вы должны много читать страницы man для всех комманд перечисленных выше. Журналы tcpserver можно будет найти в /var/log/qmail/qmail-smtpd
Пример rc файла для sysvinit может быть найден здесь
После того, как вы запустили qmail-smtpd under tcpserver, вы можете перескакивать к части 11.
Если вы читаете дальше,это означает что вы решили быть ламером и запускаете qmail-smtpd из inetd.conf. (Не рекомендуется на системах с высокой загрузкой.) Ниже приведена строчка, которую вы должны добавить:
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env \ tcp-env /usr/local/bin/rblsmtpd \ /var/qmail/bin/qmail-smtpd
А это запись которая использовалась бы для xinetd:
service smtp { socket_type = stream protocol = tcp wait = no user = qmaild server = /var/qmail/bin/tcp-env server_args = /usr/local/bin/rblsmtpd /var/qmail/bin/qmail-smtpd only_from = 0.0.0.0 }
В этот момент вы готовы для перезагрузки или перезапуска вашего inetd. На Linux это делается так:
# killall -HUP inetd or # killall -USR1 xinetd
В это время было бы хорошей идеей почитать официальную документацию. Но Вы, конечно не собираетесь этого делать. Вы будете продолжать читать мою бессмыслицу. Мне кажется, что я имею почти бесконечную власть над вами. Это как наркотик.
Во всяком случае, вернемся к qmail.
Как только вы имеете установленную и запущенную систему qmail, появится несколько предметов, перед необходимостью знать которые вы окажетесь. Прежде всего вы будете безмерно счастливы узнать, что многие пути что-то делать в qmail гораздо проще, чем в sendmail.
Посмотрите в вашу папку /var/qmail/control. Большинство увидит чтото похожее на это:
nose:/var/qmail/control$ ls -la total 8 drwxr-xr-x 2 root qmail 1024 Sep 29 10:08 . drwxr-xr-x 10 root root 1024 Sep 18 02:48 .. -rw-r--r-- 1 root root 22 Sep 18 02:40 defaultdomain -rw-r--r-- 1 root root 27 Sep 18 02:40 locals -rw-r--r-- 1 root root 27 Sep 18 02:40 me -rw-r--r-- 1 root root 17 Sep 18 02:40 plusdomain -rw-r--r-- 1 root root 27 Sep 18 02:40 rcpthosts -rw------- 1 root root 147 Sep 29 10:08 virtualdomains
Три наиболее важных файла здесь (в порядке убывания) это:
me --
(фактически qmail сможет выжить даже только с одним этим файлом. Он содержит имя локальной машины.
Включая домен)
rcpthosts -- (Все области машин для которых qmail будет принимать почту.
Все ваши локальные домены должны быть в этом файле.)
ВНИМАНИЕ: qmail откажет в приеме почты
доменам не перечисленным в rcpthosts.
Все ваши домены, включая виртуальные домены, должны быть перечислены в этом файле.
locals -- (Все имена машин, которые являются локальными. То есть почта, посланная ими,
будет доставлена пользователям присутствующим в /etc/passwd.)
dot-qmail это важная концепция, и я думаю, что требуется собственный раздел, даже несмотря на то, что это документ HOWTO. Это потому, что вы будете использовать dot-qmail для 95% того, что вы будете использовать с qmail, после того как установите его.
dot-qmail это то, что будет сообщать qmail-local, что делать с почтовым сообщением, когда оно получено. С dot-qmail пользователь может делать пересылку своей почты, создавать ezmlm списки рассылки (типа the qmail mailing list), создавать псевдонимы своего имени, и вызывать внешние программы типа autoresponders.
dot-qmail существует в форме файла .qmail в домашнем каталоге пользователя. qmail-local читает эти файлы, чтобы решить, что делать с почтовым сообщением.
Когда qmail не находит файла .qmail, он доставляет почту в файл Mailbox в домашнем каталоге пользователя. Пожалуйста смотрите man страницу для dot-qmail, чтобы получить список доступных команд.
Большой плюс у dot-mail это то, что пользователям разрешено устанавливать их собственные псевдонимы. Если мой счет называется "adam", то я могу создавать файл .qmail-info, который будет обрабатывать сообщения адресованные adam-info. dot-qmail может быть использован для создания такого количества псевдонимов, какое может понадобится, и может использоваться для списков рассылки.
Благодаря dot-qmail, виртуальные домены также просты в создании как и локальные псевдонимы. Файл virtualdomains использует следующий формат:
example.com:user
Где user это имя пользователя получающего почту, для этого домена. Это кажется вначале сложным, но фактически это очень интуитивно.
Если мой пользовательский счет adam определен в virtualdomains, чтобы получать почту для example.com, любой файл .qmail созданный мной в домашнем каталоге будет работать как псевдонимы для example.com, также как и для их нормального использования. Так .qmail-info становится info@example.com.
Но что, если я хочу управлять больше чем одним виртуальным доменом для моего пользовательского счета?
example.com:adam-example example2.com:adam-example2
С этой конфигурацией, организация псевдонимов виртуальных машин также легка, единственное отличие, то что мы прибавляем расширение к dot-qmail имени файла. Так, info@example.com становится .qmail-example-info, и info@example2.com становится .qmail-example2-info, и так далее...
Если .qmail-ext не существует, qmail-local будет пробовать файл .qmail по умолчанию. К примеру,если существует foo-bar, qmail-local будет пробовать сначала .qmail-foo-bar, затем .qmail-foo- по умолчанию, и наконец .qmail-default. Если не один из не существует, qmail-local отвергнет сообщение. (Исключение: для основных пользовательских адресов, qmail-local трактует несуществующий файл .qmail как пустой файл .qmail. Этот параграф брался непосредственно из man страниц для dot-qmail.
Что если я хочу создавать локальные псевдонимы? Где они содержатся? В /etc/aliases?
Заметьте, что /etc/aliases это другая проблема, решенная qmail. Вместо того, чтобы создавать большую базу данных, которая должна создаваться каждый раз (newaliases) когда новый псевдоним был добавлен, qmail обрабатывает локальные псевдонимы совершенно другим способом.
Теперь, когда вы знаете все о файлах dot-qmail и виртуальных доменах, Вы не будете удивлены легкости создания простых псевдонимов системы. Псевдонимы в системе фактически только файлы dot-qmail в /var/qmail/alias.
qmail чрезвычайно быстрый, гибкий и безопасный MTA. Имеется множество других приложений к qmail, и я даже не коснулся вершины того, что вы сможете делать с qmail используя их. Для более подробной информации, читайте qmail web страницы
Я хотел бы поблагодарить следующие людей:
Если я кого-то забыл, то вам достаточно только напомнить мне об этом!
--Adam