qmail-HOWTO


Это написано Adam McKenna (adam-qmail@flounder.net)
Последняя модификация: Понеденьник , 06-Sep-1999 01:43:33 EDT

Эта страница размещена на Virtual Estate Internet

Этот HOWTO был написан чтобы помочь людям использовать qmail, как превосходный MTA (Mail Transport Agent - агент доставки почты) написанный Dan Bernstein. Следование инструкциям, которые изложены здесь, упростит установку qmail и будет облегчать ее для новых пользователей.

Содержание:

i.  Введение
ii.  Требования для qmail
1.  Получение и распаковка исходников
2.  RTFM
3.  Создание папки qmail.
4.  Создание необходимых пользователей и групп, чтобы запустить qmail.
5.  Компилирование qmail и rblsmtpd.
6.  Конфигурирование qmail.
7.  Установка псевдонимов (aliases) qmail системы.
8.  Включение локальных доставок почты.
8a. Maildir
9.  Уничтожение sendmail!
10. Установка qmail сервисов (daemons).
10a. Установка daemontools and tcpserver.
10b. rblsmtpd
11. RTFM
12. Конфигурационные файлы.
13. dot-qmail.
14. Виртуальные домены.
15. Локальные псевдонимы системы.
16. Конец (и начало).
17. Подтверждения

Введение

Почему qmail?

Почему стоит перейти на qmail? Если вы когда нибудь настраивали sendmail и редактировали sendmail.cf, то вы догадаваетесь почему. Но это не единственная причина. Имеются несколько причин для этого:

Теперь, когда я говорю, что qmail проще чем sendmail, верьте мне, несмотря на то, что вы привыкнете к нему дольше, чем за пару часов. Документация qmail, несмотря на то, что хорошо написана и является очень полной, всетаки теория, и большинство написанного в ней не последовательно, в отличие от нашемго HOWTO. Документация в виде man страниц, виртуально бесполезна любому новому пользователю, который не набил руку в теории qmail. (для просмотра схем работы qmail, проверьте http://www.nrg4u.com/.)

Мой первый совет к вам: читайте все файлы INSTALL, и так много из man страниц, как только много вы сможете вынести. Изучение в теории как qmail отличается от sendmail это ключ к пониманию идей работы qmail. Пробуйте добраться до идеи работы qmail.

Основная идея qmail: вместо того, чтобы иметь один огромный, раздутый, монолитный исполняемый файл, которых заботится обо всех задачах доставки, разбивать все задачи, возникающие во время доставки почты по их специфике, и распределять их между различными программами. Каждая программа независима. Эта модель имеет отдельные преимущества, включая легкость использования, более быструю отладку, и простое интегрирование с заказными инструментальными средствами.

Требования для qmail

Перед тем, как вы даже может быть сделаете всего лишь попытку установить qmail, следующие условия должны быть выполнены:

1.Получение и распаковка исходников

Первые шаги в установке qmail это получение требуемых файлов с сервера.

Пакеты, которые вам понадобятся перечислены ниже:

qmail
ucspi-tcp
daemontools
rblsmtpd

Вы конечно начнете распаковывать все это в известном месте(например /usr/src/)

(Теперь мы должны стать пользователем root.)
# gzip -d qmail-1.03.tar.gz
# tar xf qmail-1.03.tar

Затем мы переходим в папку qmail-1.03.

# cd qmail-1.03

2. RTFM

Как только вы будете находится в папке qmail-1.03, вы будете хотеть начинать читать FAQ и INSTALL файлы.

# more INSTALL
# more INSTALL.alias
# more INSTALL.mbox
etc...

После того, как Вы закончите читать все эти файлы, Вы не будете нуждаться в остальной части этого HOWTO! Но так как вы все еще читаете, я буду предполагать что Вы пропустили их.

3.Создание папки qmail.

Первый шаг, который нужно сделать - это создать домашний каталог для qmail.

# mkdir /var/qmail

4. Создание необходимых пользователей и групп, чтобы запустить 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 НЕ БУДЕТ РАБОТАТЬ. ***

5.Компилирование qmail и rblsmtpd.

Следующий шаг - компилирование программ и созданий дерева каталогов 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.

6. Конфигурирование qmail.

После компиляции qmail вы должны сконфигурировать его:

# ./config

Если это не работает, вам нужно будет проделать небольшую грязную работу. Читайте INSTALL.ctl. Как только ваш IP адрес будет в DNS, вы не будете иметь никаких проблем. Иначе вам придется делать:

# ./config-fast your.full.host.name

Это создаст необходимые файлы, что бы запустить qmail.

7. Установка псевдонимов (aliases) 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 для более подробных объяснений.

8. Включение локальных доставок почты.

После того, как вы закончите, ваша 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, который открывает (хотя малую) но потенциальную угрозу защищенности.

8a. Maildir.

Maildir это альтернативный путь доставки почты. Maildir имеет следующие преимущества:

Имеются также некоторые неудобства в использовании Maildir.

Если вы решили использовать Maildirs, все , что вы должны сделать, это выполнить следующую команду в вашем домашнем каталоге:

$ /var/qmail/bin/maildirmake $HOME/Maildir
$ echo ./Maildir/ > ~/.qmail

Помните, что папка Maildir должна принадлежать пользователю, для которого она создается. Если вы создаете ее как root, вы должны будете воспользоваться командой chown, чтобы изменить монопольное использование. Но лучше всего включить папку Maildir в /etc/skel, это будет автоматически организовывать Maildir для каждого нового пользователя.

9. Уничтожение sendmail!

Если вы добрались до этого места, это означает, что вы готовы отказаться от хрупкого, старого 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 так, чтобы он не запускался снова, когда система будет перезагружена. Вы будете должны консультироваться с документацией вашей операционной системы, чтобы делать это.

10. Установка qmail сервисов (daemons).

Теперь, когда вы установили qmail, вы будете должны установить SMTP, POP3 и другие сервисы, которые должны работать на вашей системе. Наиболее важный из них - qmail-smtpd. Без qmail-smtpd, ваша машина будет способна только выдать почту локально и не будет получать почту извне.

10a. Установка daemontools and tcpserver.

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

10b. rblsmtpd

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

11. RTFM

В это время было бы хорошей идеей почитать официальную документацию. Но Вы, конечно не собираетесь этого делать. Вы будете продолжать читать мою бессмыслицу. Мне кажется, что я имею почти бесконечную власть над вами. Это как наркотик.

Во всяком случае, вернемся к qmail.

12. Конфигурационные файлы.

Как только вы имеете установленную и запущенную систему 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.)

13.dot-qmail.

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 может быть использован для создания такого количества псевдонимов, какое может понадобится, и может использоваться для списков рассылки.

14. Виртуальные домены.

Благодаря dot-qmail, виртуальные домены также просты в создании как и локальные псевдонимы. Файл virtualdomains использует следующий формат:

example.com:user

Где user это имя пользователя получающего почту, для этого домена. Это кажется вначале сложным, но фактически это очень интуитивно.

Если мой пользовательский счет adam определен в virtualdomains, чтобы получать почту для example.com, любой файл .qmail созданный мной в домашнем каталоге будет работать как псевдонимы для example.com, также как и для их нормального использования. Так .qmail-info становится info@example.com.

Но что, если я хочу управлять больше чем одним виртуальным доменом для моего пользовательского счета?


Файл virtualdomains делает это также очень интуитивным. Вместо того, чтобы помещать user как получателя, помещайте user-ext как получателя.
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.

15. Локальные псевдонимы системы.

Что если я хочу создавать локальные псевдонимы? Где они содержатся? В /etc/aliases?

Заметьте, что /etc/aliases это другая проблема, решенная qmail. Вместо того, чтобы создавать большую базу данных, которая должна создаваться каждый раз (newaliases) когда новый псевдоним был добавлен, qmail обрабатывает локальные псевдонимы совершенно другим способом.

Теперь, когда вы знаете все о файлах dot-qmail и виртуальных доменах, Вы не будете удивлены легкости создания простых псевдонимов системы. Псевдонимы в системе фактически только файлы dot-qmail в /var/qmail/alias.

16. Конец (и начало)

qmail чрезвычайно быстрый, гибкий и безопасный MTA. Имеется множество других приложений к qmail, и я даже не коснулся вершины того, что вы сможете делать с qmail используя их. Для более подробной информации, читайте qmail web страницы

17. Подтверждения

Я хотел бы поблагодарить следующие людей:

Если я кого-то забыл, то вам достаточно только напомнить мне об этом!

--Adam
adam@flounder.net
Авторские права на HOWTO принадлежат Adam D. McKenna
Наверх
Перейти к flounder.net

Перевод выполнил Алексей Корнеев, очень рад замечаниям по адресу alexei@niva.sposad.ru.
Во время перевода была многократно прослушана песня Scar Tissue группы Red Hot Chili Peppers, за которую им отдельная благодарность!
Формат оригинального html сохранен с небольшими изменениями.
11 Сен Суб 15:35:51 MSK 1999
Сергиев-Посадская LUG spslug.sposad.ru
Используются технологии uCoz