Всё что связано с qmailУстановка и описание возможностей qmail |
||||||||||||||||||||||||||||
| Mail & qmail Жизнь с qmail (статья) & Инструкция по установке CMS e107 & |
||||||||||||||||||||||||||||
| 6 Благодарности 3 Конфигурация qmail 9 FAQ qmail 4 Использование qmai 7 Пакеты имеющие отн qmail полная статья 5 Расширенные темы q 8 Разное по qmail 2 Установка qmail 1 Введение |
|
|||||||||||||||||||||||||||
2. Установка 2. УстановкаЭтот раздел описывает установку qmail. Если Вы опытный системный администратор, Вы можете установить qmail следуя инструкциям из файлов INSTALL прилагаемыми в дистрибутиве. Инструкции INSTALL кратки. Они более сложны, чем инструкции из этого документа, и они предполагают, что читатель опытный системный и почтовый администратор. Примечание: Если вы решились использовать следующие инструкции, вы должны прочесть весь раздел, чтобы ознакомиться с общим процессом. 2.1. Установка исходников2.1.1. Откомпилированный код против исходных кодовИз-за ограничения лицензии qmail относительно предварительно откомпилированных пакетов, qmail обычно устанавливается из исходников. Если Вы не знакомы с различием между исходными кодами и откомпилированными, то представьте что заказываете пиццу с доставкой на дом. Прибывшая <откомпилированная> пицца готова к еде. Пицца в виде "исходный код" приходит как комплект, содержащий муку, дрожжи, сыр, соус, все что кладут сверху и инструкции для выпечки пиццы самим. Установка из исходных кодов требует немного большей работы, но если осторожно следовать инструкциям, то результат такой же, или даже лучше. Самодельная пицца будет свежее, вы можете положить все по вашему вкусу, и вы будете знать больше о ней и как она <работает>. 2.1.2. Архив Tar против ОС-специфичных пакетовНекоторые операционные системы обеспечивают механизм для автоматизации инсталляций исходного кода. Возвращаясь к аналогии с пиццой - они делают возможным упаковать ингредиенты и руководства таким способом, что Вы можете только нажать на кнопку и испечь пиццу сами. Звучит заманчиво, не правда ли? На практике, это не такая хорошая идея. Сборка этих пакетов довольно трудна, и они не смогут все продумать. Эта программа, как и любые другие, может иметь ошибки. Но даже если она и не имеет ошибок, то за счет удобства, которое она обеспечивает, вы потеряете преимущества самоиспеченной пиццы: способность корректировать верхнюю начинку по вашему вкусу и знания того, как пицца была сделана и как она <работает>. Если qmail был бы пиццой, то подход компиляции мог бы умереть. Но этого не будет: это довольно сложная система, так что установщик нуждается в хорошем понимании для поддержания ее в рабочем состоянии. Самоустановка qmail более легка, чем версия установленная пользователем, но установленная пользователем версия более легка для конфигурирования и поиска неисправностей. Вы установите qmail один раз, но вероятно будет несколько удобных случаев для его реконфигурации, или выяснения, почему почта идет не по тому пути, как вы ожидали. По этой причине, я советую устанавливать qmail с нуля, используя исходные коды tarball, а не "RPM" или другой "самоустанавливающийся" пакет.
2.2. ПодготовкаПеред инсталляцией qmail в систему, особенно если это ваша первая установка qmail, есть несколько вещей, о которых стоит подумать.
2.3. Системные требованияqmail устанавливается и работает на большинстве UNIX и UNIX-подобных системах, но есть несколько требований:
2.4. Получение исходниковитак, у вас есть система удовлетворяющая требованиям для установки qmail. Первый шаг - загрузить исходники qmail и некоторых других дополнений, вероятно ucspi-tcp и daemontools:
Получите эти файлы используя ваш веб-браузер или ftp клиент. Примечание:Если эти линки не срабатывают, то вероятно пакет был обновлен. В этом случае, Вы должны зайти на http://cr.yp.to/software.html и следуя за ссылками загрузить текущую версию. Возможно, что модернизированные версии не совместимы со следующими инструкциями, так что не забудьте прочесть примечания в разделе "Upgrading from previous versions...".
2.5. Компиляция2.5.1. Проверка компилятораСперва вы должны удостовериться, что имеете необходимые инструментальные средства, для компиляции программы. Как вы это определите зависит от вашего UNIX. Самый легкий способ, хотя не гарантированный, попытайтесь: Примечание:если любой из этих тестов проходит, то можно перейти в следующий подраздел.
В этом разделе мы пройдем фактические шаги компилирования qmail. Путь вырезал-и-вставил будет удобен, но не обязателен. 2.5.2. Распаковка дистрибутиваЕсли вы здесь, то у вас уже есть работающий компилятор C и вышеуказанные архивы. Скопируйте или переместите архив в ту директорию, где вы собираетесь работать. /usr/local/src - хороший выбор, и в этом случае можете использовать /usr/local/src/qmail для всех трех пакетов. mkdir -p /usr/local/src/qmail mv *.tar.gz /usr/local/src/qmail У вас есть все три пакета в /usr/local/src/qmail, так что теперь Вы можете распаковать их. Наверняка вы захотите стать суперпользователем (root), если не уже. На консоли наберите: su cd /usr/local/src/qmail gunzip qmail-1.03.tar.gz tar xvf qmail-1.03.tar gunzip ucspi-tcp-0.88.tar.gz tar xvf ucspi-tcp-0.88.tar gunzip daemontools-0.70.tar.gz tar xvf daemontools-0.70.tar rm *.tar # необязательно, если достаточно дискового пространства Должны появиться подкаталоги -- qmail-1.03, ucspi-tcp-0.88, и daemontools-0.70. Переходим в каталог qmail-1.03 и приступим: cd qmail-1.03 2.5.3. Создание каталоговПоскольку программа установки qmail создаст подкаталоги как нужно, вам нужно создать только "домашний" каталог qmail. mkdir /var/qmail Идем в следующий подраздел. Примечание:Если Вы хотите чтобы некоторые или все файлы qmail, постоянно находились в другом месте отличном от /var, то можно это сделать, создав символические ссылки в каталоге /var/qmail, указывающие на другие местоположения. Например, более распределенное размещение может быть достигнуто выполняя: mkdir /var/qmail ln -s /usr/man /var/qmail/man mkdir /etc/qmail ln -s /etc/qmail /var/qmail/control ln -s /usr/sbin /var/qmail/bin 2.5.4. Создание пользователей и группЛегчайший путь создания необходимых пользователей и групп - создание небольшого файла сценария (Прим. пер.: далее по тексту скрипт), чтобы он сделал это за вас. В директории с исходниками найдите файл INSTALL.ids. Он содержит командные строки для многих платформ, так что копируем файл в файл с другим именем и редактируем его. cp INSTALL.ids IDS Затем, используя ваш любимый редактор удаляем всё за исключением того, что нужно. Например, вот как должен выглядеть IDS для FreeBSD после редактирования: pw groupadd nofiles pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent> pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent pw groupadd qmail pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent pw useradd qmails -g qmail -d /var/qmail -s /nonexistent Затем для того, чтобы запустить его, или используйте chmod, чтобы сделать его исполняемым, или запустите его с помощью sh: Первый метод: chmod 700 IDS ./IDS Второй метод: /bin/sh IDS Когда скрипт выполнит свою работу, все ваши пользователи и группы будут созданы, и вы можете идти в следующий подраздел. Но что делать если ваша система не указана в INSTALL.ids? Вы должны создать их вручную. Запустите ваш любимый редактор и отредактируйте /etc/group. Вам необходимо добавить следующие две строки в конец файла: qmail:*:2107: nofiles:*:2108: Примечание: Убедитесь что 2107 и 2108 еще не использованы. Затем, используя vipw (большинство систем имеют его, можете использовать ваш редактор снова, но на этот раз на /etc/passwd) добавьте эти строки в конец файла: alias:*:7790:2108::/var/qmail/alias:/bin/true qmaild:*:7791:2108::/var/qmail:/bin/true qmaill:*:7792:2108::/var/qmail:/bin/true qmailp:*:7793:2108::/var/qmail:/bin/true qmailq:*:7794:2107::/var/qmail:/bin/true qmailr:*:7795:2107::/var/qmail:/bin/true qmails:*:7796:2107::/var/qmail:/bin/true Примечание: Убедитесь, что 7790-7796 уже не использованы и что 2107 и 2108 соответствуют идентификаторам групп указанных выше. Вам в принципе не обязательно добавлять эти строки именно в конец файла, просто так легче объяснить. Теперь вы готовы к переходу в следующий подраздел. 2.5.5. ПостроениеТеперь вы готовы к построению qmail. В разделе 2.5.1, вы определили положение С компилятора. Если он называется не cc, или каталог, где он находится не указан в вашей переменной PATH, вы будете должны подредактировать conf-cc и conf-ld. Укажите, что ваш компилятор gсс и путь до него. Просто отредактируйте conf-cc и conf-ld и замените "cc" на "gcc". Теперь наберите следующее: make setup check После завершения компиляции, вам необходимо конфигурировать вашу инсталляцию почты. Пара обеспечиваемых скрипта сделают эту работу намного более легкой. Если ваш DNS сконфигурирован правильно, то этот скрипт сделает все что нужно: ./config Если, по некоторой причине, config не может найти ваше имя машины в DNS, то вы должны запустить скрипт config-fast: ./config-fast полное.имя.машины Например, если ваш домен example.com и имя вашего хоста dolphin, то ваша строка config-fast должна выглядеть так: ./config-fast dolphin.example.com qmail теперь установлен на вашей системе и готов к запуску! Следующий раздел проведет вас через шаги запуска и испытания qmail.
2.6. Установка ucspi-tcpРанее вы распаковали qmail, ucpsi-tcp и daemontools архивы. В нашем примере мы распаковали их в каталоге /usr/local/src/qmail. Перейдем в каталог ucpsi-tcp: cd /usr/local/src/qmail/ucspi-tcp-0.88 Если вы модифицировали conf-cc и conf-ld как указано в разделе 2.5.5, то вам придется сделать изменения и в этом каталоге. Затем: make make setup check Теперь ucpsi-tcp установлен.
2.7. Установка daemontoolsПерейдем в каталог daemontools: cd /usr/local/src/qmail/daemontools-0.70 Опять же, если нужно модифицируем conf-cc и conf-ld как и ранее. Затем: make make setup check Проверить компиляцию можно следуя инструкциям http://cr.yp.to/daemontools/install.html.
2.8. Запуск qmail2.8.1. /var/qmail/rcКаталог /var/qmail/boot содержит примеры скриптов для запуска qmail для различных конфигураций: /var/spool/mail для $HOME/Mailbox, использование procmail или dot-forward и их различные комбинации. Не стесняйтесь исследовать их, но для нашей установки, мы будем использовать следующий: #!/bin/sh # Using stdout for logging # Using control/defaultdelivery from qmail-local to deliver messages by default exec env - PATH="/var/qmail/bin:$PATH" \ qmail-start "`cat /var/qmail/control/defaultdelivery`" Используйте ваш редактор, чтобы создать вышеуказанный /var/qmail/rc, затем выполните эти команды: chmod 755 /var/qmail/rc mkdir /var/log/qmail Здесь вы должны решить заданный по умолчанию режим доставки для сообщений, которые не доставлены .qmail файлом. Следующая таблица показывает некоторые обычные выборы.
Подробнее смотри в INSTALL.mbox, INSTALL.maildir и INSTALL.vsm. Для того, чтобы выбрать тип почтового ящика по умолчанию просто введите значение defaultdelivery из таблицы в /var/qmail/control/defaultdelivery. Например, выбрав стандартный ящик, сделайте: echo ./Mailbox >/var/qmail/control/defaultdelivery Примечание: defaultdelivery не стандартный файл управления qmail. Он используется вышеуказанным файлом /var/qmail/rc. 2.8.2. Системные файлы запуска2.8.2.1. Скрипт qmailЕсли Вы должны вручную выполнить сценарий /var/qmail/rc, qmail должен быть частично запущен. Но мы хотим, чтобы qmail автоматически запускался при каждой загрузке системы и мы хотим, чтобы при остановке системы он аккуратно отключался. Это выполняется скриптом запуска/выключения: #!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
case "$1" in
start)
echo -n "Starting qmail: svscan"
cd /var/qmail/supervise
env - PATH="$PATH" svscan &
echo $! > /var/run/svscan.pid
echo "."
;;
stop)
echo -n "Stopping qmail: svscan"
kill `cat /var/run/svscan.pid`
echo -n " qmail"
svc -dx /var/qmail/supervise/*
echo -n " logging"
svc -dx /var/qmail/supervise/*/log
echo "."
;;
stat)
cd /var/qmail/supervise
svstat * */log
;;
doqueue|alrm)
echo "Sending ALRM signal to qmail-send."
svc -a /var/qmail/supervise/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."
svc -h /var/qmail/supervise/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /var/qmail/supervise/qmail-send
echo "Pausing qmail-smtpd"
svc -p /var/qmail/supervise/qmail-smtpd
;;
cont)
echo "Continuing qmail-send"
svc -c /var/qmail/supervise/qmail-send
echo "Continuing qmail-smtpd"
svc -c /var/qmail/supervise/qmail-smtpd
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /var/qmail/supervise/qmail-smtpd
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /var/qmail/supervise/qmail-send
echo "* Restarting qmail-smtpd."
svc -u /var/qmail/supervise/qmail-smtpd
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp*
echo "Reloaded /etc/tcp.smtp."
;;
help)
cat <<HELP
stop -- stops mail service (smtp connections refused, nothing goes out)
start -- starts mail service (smtp connection accepted, mail can go out)
pause -- temporarily stops mail service (connections accepted, nothing leaves)
cont -- continues paused mail service
stat -- displays status of mail service
cdb -- rebuild the tcpserver cdb file for smtp
restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it
doqueue -- sends qmail-send ALRM, scheduling queued messages for delivery
reload -- sends qmail-send HUP, rereading locals and virtualdomains
queue -- shows status of queue
alrm -- same as doqueue
hup -- same as reload
HELP
;;
*)
echo "Usage: $0 {start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue|help}"
exit 1
;;
esac
exit 0
Этот скрипт можно получить здесь http://Web.InfoAve.net/~dsill/qmail-script-dt61.exe. Трюк ".exe" заставляет веб-сервер думать, что скрипт исполняемый, и защитит его от преобразования в DOS формат. Примечание: Если Вы находите, что qmail вылетает вскоре после перезагрузки системы, то Вы можете поставить перед командой env в секции "start" скрипта команду nohup nohup env - PATH="$PATH" svscan & Создайте скрипт используя редактор или загрузите его вашим браузером, затем установите его в ваш системный init.d директорий, который должен размещаться где-то в одном из следующих каталогов: /etc/init.d /sbin/init.d /etc/rc.d/init.d Назовите скрипт qmail. Вы должны связать этот скрипт с парой "rc" каталогов. Эти директории называются rcN.d, где N - runlevel, к которому они обращаются. Сложность дерева каталогов запуска не рассматривается в этом документе, и если эти упрощенные команды вам не подходят, обратитесь к вашей системной документации. Ваши rc каталоги будут вероятно в одном из: /etc /sbin /etc/rc.d Чтобы создать ссылки, выполните следующие команды, заменив RCDIR на местоположение rc каталогов вашей системы: ln -s ../init.d/qmail RCDIR/rc0.d/K30qmail ln -s ../init.d/qmail RCDIR/rc1.d/K30qmail ln -s ../init.d/qmail RCDIR/rc2.d/S80qmail ln -s ../init.d/qmail RCDIR/rc3.d/S80qmail ln -s ../init.d/qmail RCDIR/rc4.d/S80qmail ln -s ../init.d/qmail RCDIR/rc5.d/S80qmail ln -s ../init.d/qmail RCDIR/rc6.d/K30qmail Примечание: числа на предыдущем шаге сильно зависят от системы, но отчасти гибкие. Если Sendmail установлен выполните команду "find RCDIR -name "*sendmail" -print" -- вам перечислят числа, которые должны работать на вашей системе. Сделайте ваш скрипт запуска исполняемым и создайте ссылку в каталог описанный в ваших путях: #укажите правильную позицию вашего rc каталога в следующих двух строках chmod 755 /etc/init.d/qmail ln -s /etc/init.d/qmail /usr/local/sbin 2.8.2.2. Скрипт superviseСейчас создайте supervise каталоги для служб qmail: mkdir -p /var/qmail/supervise/qmail-send/log mkdir -p /var/qmail/supervise/qmail-smtpd/log chmod +t /var/qmail/supervise/qmail-send chmod +t /var/qmail/supervise/qmail-smtpd Создадим файл /var/qmail/supervise/qmail-send/run: #!/bin/sh exec /var/qmail/rc Создадим файл /var/qmail/supervise/qmail-send/log/run: #!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
Примечание:Файл concurrencyincoming не стандартный файл управления qmail'ом. Он из скрипта ниже. Примечание:Под Solaris, обычная id программа не будет правильно работать в этом сценарии. Вместо id, используйте /usr/xpg4/bin/id, например: QMAILDUID=`/usr/xpg4/bin/id -u qmaild` NOFILESGID=`/usr/xpg4/bin/id -g qmaild` Примечание:предел памяти указанный в команде softlimit может придется поднять в зависимости от вашей операционной системы и аппаратной платформы. Если при попытке соединиться с портом 25 возникает ошибка, или удаленные системы не в состоянии послать вам почту, попробуйте увеличить предел памяти до 3000000 или 4000000. Создадим управляющий файл concurrencyincoming: echo 20 > /var/qmail/control/concurrencyincoming chmod 644 /var/qmail/control/concurrencyincoming Создадим файл /var/qmail/supervise/qmail-smtpd/log/run: #!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd Сделаем run файлы исполняемыми: chmod 755 /var/qmail/supervise/qmail-send/run chmod 755 /var/qmail/supervise/qmail-send/log/run chmod 755 / var/qmail/supervise/qmail-smtpd/run chmod 755 /var/qmail/supervise/qmail-smtpd/log/run Затем создадим log директории: mkdir -p /var/log/qmail/smtpd chown qmaill /var/log/qmail /var/log/qmail/smtpd 2.8.2.3. Контроль доступа для SMTPПозволим локальному хосту класть почту посредством SMTP: echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp /usr/local/sbin/qmail cdb 2.8.3. Остановка и вывод из строя инсталлированного MTAХотя возможно управлять и qmail и вашим существующим MTA (вероятно Sendmail) одновременно, я не рекомендую это, если не знаете, что вы делаете. И, откровенно, если Вы читаете это, то вероятно не знаете. :-) Если ваш существующий MTA - Sendmail, то вы должны остановить его, запустив init.d скрипт с аргументом "stop". Например, один из них должен сработать: /etc/init.d/sendmail stop /sbin/init.d/sendmail stop /etc/rc.d/init.d/sendmail stop Если Вы не можете найти init.d/sendmail скрипт, то вы можете определить идентификатор процесса (PID) sendmail'а выполнив команду "ps-ef|grep sendmail" или "ps waux|grep sendmail" и остановить его, используя: kill PID-sendmail'а Если ваш МТА не Sendmail, проверьте вашу документацию для правильной процедуры отключения. Вы должны также рассмотреть полное удаление старого MTA из системы. По крайней мере, отключите init.d скрипт, чтобы он не запускался снова, когда система перезагрузится. Для Red Hat Linux, можно так удалить Sendmail: rpm -e --nodeps sendmail Наконец, замените любой имеющийся /usr/lib/sendmail версией qmail: mv /usr/lib/sendmail /usr/lib/sendmail.old # Игнорируйте ошибки mv /usr/sbin/sendmail /usr/sbin/sendmail.old # Игнорируйте ошибки chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old # Игнорируйте ошибки ln -s /var/qmail/bin/sendmail /usr/lib ln -s /var/qmail/bin/sendmail /usr/sbin Мы близки к запуску qmail. Последний шаг - создание пары системных псевдонимов. 2.8.4. Создание системных псевдонимовЕсть три системных псевдонима, которые должны создаваться во всех инсталляциях qmail:
Для создания этих псевдонимов определитесь, куда вы хотите направлять для каждого из них (локальный пользователь или удаленный адрес), создайте и заполните соответствующие .qmail файлы. Пример: скажем пользователь dave является и системным, и почтовым администратором: echo dave > /var/qmail/alias/.qmail-root echo dave > /var/qmail/alias/.qmail-postmaster ln -s .qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster Для большей информации см. документ INSTALL.alias. 2.8.5. Запуск qmailПод конец, вы можете запустить qmail: /usr/local/sbin/qmail start
2.9. Тестирование установкиqmail должен быть запущен. Следуйте инструкциям из TEST.deliver и TEST.receive, для проверки правильности работы. Обратите внимание, что при использовании этих инструкций логи будут выполняться multilog'ом, а не splogger'ом.
|
||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
|
Другие разделы блога: Инструкция по установке CMS e107 & qmail Жизнь с qmail (статья) & Mail & ©GRoM |