1. Контроль за ***видом*** исходящих сообщений 1.1. Как мне организовать маскировку хоста? 1.2. Как мне организовать маскировку пользователя? 1.3. Как мне автоматически установить поле Mail-Followup-To? 2. Маршрутизация исходящих сообщений 2.1. Как мне пересылать локальные сообщения на другой хост? 2.2. Как мне установить ноль-клиента? 2.3. Как мне организовать посылку исходящей почты через UUCP? 2.4. Как мне организовать отдельную очередь сообщений для SLIP/PPP канала? 2.5. Что мне делать с сообщениями "CNAME lookup failed temporarily"? ("Временная неудача при поиске канонического имени") 3. Маршрутизация входящих сообщений на уровне почтовой системы 3.1. Как мне получать почту для хоста с другим именем? 3.2. Как мне организовать виртуальный почтовый домен? 3.3. Как мне организовать несколько виртуальных доменов для одного пользователя? 4. Маршрутизация входящих сообщений на уровне пользователей 4.1. Как мне переправлять сообщения для неопознанных пользователей на другой хост? 4.2. Как мне организовать список рассылки? 4.3. Как мне использовать majordomo вместе с qmail? 4.4. Как мне использовать procmail вместе с qmail? 4.5. Как мне использовать фильтры пакета elm вместе с qmail? 4.6. Как мне создать ***синонимы*** (aliases) с точками? 4.7. Как мне использовать c qmail файлы .forward от sendmail? 4.8. Как мне использовать c qmail /etc/aliases от sendmail? 4.9. Как мне заставить qmail ***отложить*** доставку во время сбоев NFS или NIS? 4.10. Как мне установить, кто будет обрабатывать почту, пришедшую на некоторый адрес? 5. Установка серверов 5.1. Как мне запустить qmail-smtpd под управлением tcpserver'а? 5.2. Как мне установить qmail-qmtpd? 5.3. Как мне установить qmail-pop3d? 5.4. Как мне разрешить указанным клиентам использовать этот хост как "перевалочный пункт" (relay) для исходящих сообщений? 5.5. Как мне исправить сообщения от неправильных SMTP-клиентов? 5.6. Как мне установить qmail-qmqpd? 6. Конфигурирование пользовательских почтовых программ (MUA) для работы с qmail 6.1. Как мне заставить BSD mail генерировать дату, используя местное время? 6.2. Как мне заставить pine работать с qmail? 6.3. Как мне заставить MH работать c qmail? 6.4. Как мне прератить зависания Sun'овского dtcm? 7. Управление почтовой системой 7.1. Как мне безопасно остановить qmail-send? 7.2. Как мне вручную управлять очередью сообщений? 7.3. Как мне "обновить" сообщение? 7.4. Как мне организовать большую сеть? 7.5. Как мне сделать резервную копию и затем восстановить диск с очередью сообщений? 7.6. Как мне запустить qmail под управлением supervise (программы-"надсмотрщика")? 7.7. Как мне отказаться от использования syslog? 8. Разное 8.1. Как мне увеличить количество одновременно отправляемых сообщений? 8.2. Как мне сохранять копию ВСЕХ входящих и исходящих почтовых сообщений? 8.3. Как мне постепенно переключиться с sendmail на qmail? 1. Котроль за ***видом*** исходящих сообщений 1.1. Как мне организовать маскировку хоста? Все пользователи данного хоста, zippy.af.mil, являются также пользователями af.mil. Когда joe посылает сообщение fred'у, сообщение должно гласить: "От кого: joe@af.mil" и "Кому: fred@af.mil",- без упоминания zippy. Ответ: команды: echo af.mil >/var/qmail/control/defaulthost chmod 0644 /var/qmail/control/defaulthost 1.2. Как мне организовать маскировку пользователя? Я бы хотел, чтобы в поле From (От кого) в моих сообщениях было boss@af.mil, а не god@heaven.af.mil Ответ: Добавьте MAILHOST=af.mil и MAILUSER=boss в переменные окружения. Для изменения поля From, указанного Вашей почтовой программой, добавьте QMAILINJECT=f в переменные окружения. 1.3. Как мне автоматически устанавливать поле Mail-Followup-To? Когда я посылаю сообщения в список рассылки sos@heaven.af.mil, мне бы хотелось включать поле "Mail-Followup-To: sos@heaven.af.mil". Ответ: Добавьте QMAILMFTFILE=$HOME/.lists в переменные окружения и поместите sos@heaven.af.mil в ~/.lists 2. Маршрутизация входящих сообщений 2.1. Как мне пересылать локальные сообщения на другой хост? Всю почту для af.mil следует доставлять на наш файловый сервер pokey.af.mil. Я уже установил в DNS, что pokey.af.mil - MX (почтовый сервер) для af.mil, но когда пользователь хоста af.mil посылает сообщение для boss@af.mil, af.mil пытается доставить его локально, а не на pokey.af.mil. Как мне прекратить это? Ответ: Удалите af.mil из /var/qmail/control/locals. Если запущен qmail-send, пошлите ему сигнал HUP (или выполните `svc -h /var/run/qmail`, если qmail под контролем supervise), убедившись предварительно, что MX установлен верно. И удостоверьтесь, что pokey.af.mil сконфигурирован для получения почты для af.mil (См. вопрос 3.1) 2.2. Как мне установить ноль-клиента (null client)? Я бы хотел, чтобы zippy.af.mil посылал всю почту на bigband.af.mil Ответ: команды: echo :bigband.af.mil >/var/qmail/control/smtproutes; chmod 0644 /var/qmail/control/smtproutes Запретите локальную доставку как в вопросе 2.1. Отключите qmail-smtpd в inetd.conf. 2.3. Как мне посылать исходящую почту через UUCP? Мне нужно, чтобы qmail посылал всю исходящую почту через UUCP моему головному хосту, gonzo. Ответ: поместите :alias-uucp в /var/qmail/control/virtualdomains и |preline -df /usr/bin/uux - -r -gC -a"${SENDER:-MAILER-DAEMON}" gonzo!rmail "($DEFAULT@$HOST)" (все на одной строчке) в ~alias/.qmail-uucp-default. (Для некоторых пакетов UUCP Вам потребуется использовать -d вместо -df.) Если запущен qmail-send, оповестите его сигналом HUP (или выполните `svc -h /var/run/qmail`, если qmail под контролем supervise). 2.4. Как мне установить отдельную очередь сообщений для SLIP/PPP канала? Ответ: используйте serialmail (http://pobox.com/~djb/serialmail.html) 2.5. Что мне делать с сообщениями "CNAME lookup failed temporarily"? ("Временная неудача при поиске канонического имени"). Лог-файл показывет, что доставка почтового сообщения была отложена по это причине. И вообще, почему qmail делает поиск канонического имени? Ответ: Стандарт SMTP не разрешает использовать ***синонимы*** (aliases) в именах хостов, поэтому qmail производит поиск канонического имени для каждого принимающего почту хоста. Если соответствующий DNS сервер выключен, то qmail откладывает доставку. Он вскоре попытается снова. 3. Маршрутизация входящей почты на уровне почтовой системы 3.1. Как мне получать почту для хоста с другим именем? еобходимо, чтобы наш файл-сервер pokey.af.mil получал почту, адресованную af.mil. Я уже установил в DNS, что pokey.af.mil - MX (почтовый сервер) для af.mil, но как настроить pokey на прием сообщений для af.mil? Ответ: Добавьте af.mil в /var/qmail/control/locals и в /var/qmail/control/rcpthosts. Если qmail-send запущен, пошлите ему сигнал HUP (или выполните `svc -h /var/run/qmail`, если qmail под контролем supervise). 3.2. Как мне организовать виртуальный домен? еобходимо, чтобы почта для nowhere.mil, включая почту для root@nowhere.mil и postmaster@nowhere.mil, доставлялась Bob'у. Я уже установил MX. Ответ: Поместите nowhere.mil:bob в control/virtualdomains. Добавьте nowhere.mil в control/rcpthosts. Если qmail-send запущен, пошлите ему сигнал HUP (или выполните `svc -h /var/qmail/control`, если qmail под конролем supervise) Теперь почта для whatever@nowhere.mil ("что-угодно@nowhere.mil") будет доставляться локально на адрес bob-whatever. bob может установить ~bob/.qmail-default для обработки всех возможных адресов с nowhere.mil, ~bob/.qmail-info для обработки info@nowhere.mil итд. 3.3. Как мне установить несколько виртуальных доменов для одного пользователя? bob желает еще один виртуальный домен, everywhere.org, но он желает обрабатывать почту для пользователей nowhere.mil и everywhere.org раздельно. Как это может быть сделано без создания второго эккаунта? Ответ: поместите две строчки в control/virtualdomains: nowhere.mil:bob-nowhere everywhere.org:bob-everywhere Добавьте nowhere.mil и everywhere.org в control/rcpthosts. Если qmail-send запущен, пошлите ему сигнал HUP (или выполните `svc -h /var/run/qmail`, если qmail под контролем supervise) Теперь bob может установить различные .qmail-nowhere-* и .qmail-everywhere-*. Более того, он может установить .qmail-nowhere-default и .qmail-everywhere-default. 4. Маршрутизация входящих сообщений на уровне пользователей 4.1. Как мне перенаправлять сообщения для неопознанных пользователей на другой хост? Мне бы хотелось установить LUSER_RELAY, указывающих на bigband.af.mil. Ответ: поместите | forward "$LOCAL"@bigband.af.mil в ~alias/.qmail-default. 4.2. Как мне создать список рассылки? Мне бы хотелось, чтобы письмо на me-sos@my.host.name ("я-sos@имя.моей.машины") отправлялось группе людей. Ответ: Поместите список адресов в ~me/.qmail-sos, по одному на линию. Далее вся входящая почта для me-sos будет направляться каждому из этого адреса. Вам также следует выполнить `touch ~me/.qmail-sos-owner`, так, чтобы возвраты (bounces) приходили к вам, а не изначальному отправителю. Альтернативное решение: esmlm (http://pobox.com/~djb/ezmlm.html) - современный менеджер списков рассылок, поддерживающий автоматическую подписку, подтверждения, архивы, полностью автоматическую обработку возвратов (включая предупреждения подписчикам, какие сообщения они пропустили) и др. 4.3. Как мне использовать majordomo с qmail? Ответ: Смотрите ftp://ftp.eyrie.org/pub/software/majordomo/mjqmail и http://www.qmail.org, где описываются различные решения. Ожидается, что majordomo 2.0 будет самостоятельно поддерживать qmail. Знайте, что списки рассылки majordomo не устойчивы к сбоям. 4.4. Как мне использовать procmail с qmail? Ответ: поместите | preline procmail в ~/.qmail. Вы должны указать полный путь для procmail, если procmail нет в стартовом пути (PATH) системы. Знайте, что по умолчанию procmail попытается доставить Вашу почту в /var/spool/mail/$USER, для изменения этого поведения см. INSTALL.mbox в документации по qmail. 4.5. Как мне использовать с qmail фильтр elm? Ответ: поместите | preline filter в ~/.qmail. Вы должны указать полный путь для procmail, если procmail нет в стартовом пути (PATH) системы. 4.6. Как мне создать синонимы (aliases) с точками? Я попытался установить ~alias/.qmail-P.D.Q.Bach, но не достиг цели. Ответ: используйте .qmail-p:d:q:back. Точки преобразуются в двоеточия, а верхний регистр - в нижний. 4.7. Как мне использовать с qmail файлы .forward от sendmail? Ответ: установите пакет dot-forward (http://pobox.com/~djb/dot-forward.html). 4.8. Как мне использовать с qmail файл /etc/aliases от sendmail? Ответ: установите пакет fastforward (http://pobox.com/~djb/fastforward.html). 4.9. Как мне заставить qmail ***отложить***# доставку во время сбоев NFS или NIS? В случае внезапного исчезновения ~joe необходимо, чтобы доставка почты для joe откладывалась. Ответ: Постройте базу пользователей qmail, так, чтобы qmail не проверял домашние каталоги, и базу данных паролей. Это делается в три приема. Во-первых, поместите полный список пользователей (включая локальные и NIS пароли) в /var/qmail/users/passwd. Во-вторых, выполните # qmail-pw2u -h /var/qmail/users/assign Ключ -h означает, что каждый пользователь должен иметь домашний каталог; если qmail-pw2u будет запущена во время сбоя NFS, эта программа напечатает сообщение об ошибке и завершится. аконец, выполните # qmail-newu Обязательно перестраивайте полученную таким образом базу данных, если Вы меняете как-либо список пользователей. *********************************************************************** Честно говоря, логика DJB и qmail в этом случае мне непонятна. Поэтому будьте внимательны, я не совсем понимаю, о чем пишу *********************************************************************** 4.10. Как мне установить, кто будет обрабатывать почту, пришедшую на некоторый адрес. Я установил ~alias/.qmail-www, но qmail по-прежнему обращается к файлу ~www/.qmail. Ответ: если Вы выполните # chown root ~www qmail более не будет рассматривать www, как пользователя; man qmail-getpw. Для более аккуратного контроля за выделением адресов, выполните man qmail-users. 5. Установка серверов 5.1. Как мне запустить qmail-smtpd под управлением tcpserver? inetd ненадежен при высоких нагрузках, отключает службы на 10 минут. Также мне хотелось бы иметь лучшее, чем сейчас, ведение логов соединений. Ответ: во-первых, установите программу tcpserver, являющуюся частью пакета ucspi-tcp (http://pobox.com/~djb/ucspi-tcp.html). Во-вторых, удалите строчку с smtp из /etc/inetd.conf и поместите строку tcpserver -u 7770 -g 2108 0 smtp /var/qmail/bin/qmail-smtpd & в стартовые файлы Вашей системы. Замените 7770 на пользовательский идентификатор (UID) qmaild в Вашей системе и 2108 - на идентификатор группы (GID) nofiles. е забудьте про '&' в конце. Изменения вступят в силу с момента Вашей следующей загрузки. По умолчанию, tcpserver позволяет до 40 одновременных процессов qmail-smtpd. Для увеличения этого предела до, скажем, 400 используйте tcpserver -c 400. Для записи, кто соединялся и на какой период запустите (на двух строчках) tcpserver -v -u 7770 -g 2108 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | \ /var/qmail/bin/splogger smtpd 3 & 5.2. Как мне установить qmail-qmtpd? Ответ: в два этапа. Во-первых, добавьте строку qmtp 209/tcp в /etc/services. Второй этап - поместите (на одной строке) qmtp stream tcp nowait qmaild /var/qmail/bin/tcp-env /var/qmail/bin/qmtpd в /etc/inetd.conf, пошлите inetd сигнал HUP Если у Вас инсталлирован tcpserver, вместо конфигурирования inetd внесите строчку tcpserver -u 7770 -g 2108 0 qmtp /var/qmail/bin/qmail-qmtpd & в стартовые скрипты Вашей системы, заменяя 7770 и 2108 на UID qmaild и GID nofiles. См. вопрос 5.1 для получения дополнительной информации о tcpserver. 5.3. Как мне установить qmail-pop3d? Мой прежний POP3 сервер работает с почтой в формате mbox; мне хотелось бы переключиться на Maildir. Ответ: четыре этапа. Во-первых, инсталлируйте программу checkpassword (http://pobox.com/~djb/checkpwd.html) (или ее аналоги (http://www.qmail.org/top.html#checkpassword - прим. А.М.). Затем убедитесь, что в /etc/services присутствует строка pop3 110/tcp После этого добавьте (все на одной строке, включая два qmail-popup) pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup YOURHOST /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir в /etc/inetd.conf, заменив YOURHOST на полное имя Вашей машины; пошлите inetd сигнал HUP. аконец, установите доставку в Maildir для всех пользователей, желающих получать почту через POP3. Если у Вас инсталлирован tcpserver, пропустите конфигурирование inetd и внесите (в две строки, заменяя YOURHOST как для inetd и /bin/checkpassword на тот, что реально используется в Вашей системе) tcpserver 0 pop3 /var/qmail/bin/qmail-popup YOURHOST \ /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir & См. вопрос 5.1 для получения доп. информации о tcpserver. Замечание по безопасности: протокол pop3 должен использоваться только в безопасной сети, в противном случае злоумышленник может "подслушать" пароли. 5.4. Как мне разрешить указанным клиентам использовать мой сервер в качестве пересыльщика почты (mail relay)? Я вижу, что qmail-smtpd отбрасывает сообщения для любых хостов, не перечисленных в control/rcpthosts. Ответ: в три этапа. а первом инсталлируйте пакет tcp-wrappers (вместе с hosts_options), распространяющийся отдельно. Во-вторых, измените в /etc/inetd.conf строчку с qmail-smtpd на smtpd stream tcp nowait qmaild /usr/local/bin/tcpd /var/qmail/bin/tcp-env /var/qmail/bin/qmail-smtpd (все на одной строке) и пошлите inetd HUP. аконец, в файл hosts.allow для tcpd добавьте строку, делающую для указанных клиентов пустую строку значением переменной среды RELAYCLIENT: tcp-env: 1.2.3.4, 1.2.3.5: setenv = RELAYCLIENT где 1.2.3.4 и 1.2.3.5 - IP-адреса клиентов. qmail-smtpd игнорирует control/rcpthosts, если установлена эта переменная (Он также добавляет RELAYCLIENT ко каждому служебному адресу получателя (envelope recipient address) (***Я не знаю как адекватно перевести это на русский*** - А.М.) В вопросе 5.5. приведены примеры использования такого поведения) Если Вы используете tcpserver версии 0.80 или выше, то вместо этого Вам следует создать файл /etc/tcp.smtp, содержащий 1.2.3.6:allow,RELAYCLIENT="" 127.:allow,RELAYCLIENT="" Эти строчки разрешат соединение клиентам с IP адресами 1.2.3.6 и 127.*. (Прим. Будьте внимательны с синтаксисом: строки должна кончаться , осторожнее с пробелами. - А.М.) Выполните tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp И наконец внесите -x /etc/tcp.smtp.cdb сразу после tcpserver в файле запуска qmail-smtpd 5.5. Как мне исправлять сообщения от неверных клиентов SMTP? Ответ: три этапа. Во-первых, впишите в ~alias/.qmail-fixup-default строчки | bouncesaying 'Permission denied' [ "@$HOST" != "@fixme" ] | qmail-inject -f "$SENDER" -- "$DEFAULT" Во-вторых, добавьте fixme: fixup в /var/qmail/control/virtualdomains и пошлите qmail-send сигнал HUP. В-третьих, следуйте процедуре, описанной в вопросе 5.4, но установите RELAYCLIENT равной "@fixme": tcp-env: 1.2.3.6, 1.2.3.7: setenv = RELAYCLIENT @fixme где 1.2.3.6 и 1.2.3.7 - IP адреса клиентов. Если Вы используете tcpserver вместо inetd и tcpd, добавьте в /etc/tcp.smtp 1.2.3.6:allow,RELAYCLIENT="@fixme" 1.2.3.7:allow,RELAYCLINET="@fixme" и запустите tcprules как в вопросе 5.4. 5.5. Как мне установить qmail-qmqpd? Мне хотелось бы разрешить быструю постановку в очередь исходящей почты от авторизованных клиентов. Ответ: убедитесь, что у Вас инсталлирован tcpserver 0.80 или выше. Создайте /etc/qmqp.tcp в формате tcprules для разрешения соединений с авторизованных хостов. апример, если постановка в очередь разрешена с 1.2.3.*, то в /etc/qmqp.tcp внесите 1.2.3.:allow :deny Преобразуйте /etc/qmqp.tcp в /etc/qmqp.cdb: tcprules /etc/qmqp.cdb /etc/qmqp.tmp < /etc/qmqp.tcp аконец, установите tcpserver -x /etc/qmqp.cdb -u 7770 -g 2108 0 628 /var/qmail/bin/qmail-qmqpd & заменив 7770 и 2108 на UID qmaild и GID nofiles. В вопросе 5.1. описаны детали исталляции tcpserver. (Прим. Кроме этого, Вам, возможно, захочется использовать мнемоническое имя сервиса (qmqp), а не его порт (628/tcp). Внесите строчку qmqp 628/tcp в /etc/services, как в вопросе 5.2. Если же вы хотите использовать inetd и tcpd вместо tcpserver действуйте как в вопросе 5.4.- А.М.) 6. Конфигурирование пользовательских почтовых программ (MUA) для работы с qmail 6.1. Как мне заставить BSD mail генерировать дату, используя местное время? Когда я посылаю почту, я бы хотел использовать местное время, а не GMT, т.к. некоторые MUA не знают как показывать время в часовом поясе получателя. Ответ: поместите set sendmail=/var/qmail/bin/datemail в ваш .mailrc или системный Mail.rc. Помните, однако, что BSD mail небесопасна и ненадежна. 6.2. Как мне заставить pine работать с qmail? Ответ: поместите sendmail-path=/usr/lib/sendmail -oem -oi -t в /usr/local/lib/pine.conf. (Это будет работать и для sendmail) (Прим. в зависимости от особенностей Вашей системы данные файлы могут находиться в других местах, будьте внимательны. - А.М.) Помните, однако, что pine небезопасен и ненадежен. 6.3. Как мне заставить MH работать с qmail? Ответ: поместите строчку postproc: /usr/mh/lib/spost в .mh_profile каждого пользователя. (Это будет работать и для sendmail) Помните, однако, что MH небезопасен и ненадежен. 6.4. Как мне прекратить зависания Sun'овского dtcm? Ответ: в dtcm появилась новая программистская ошибка, известная как "ошибка закрытия ***выходной части программного канала в дочернем процессе***" ("failure to close the output side of the pipe in the child"). а момент написания Sun еще не исправил эту ошибку. Мне очень жаль. 7. Управление почтовой системой. 7.1. Как мне остановить qmail-send? Раньше, когда мы имели sendmail, было очень нетривиально остановить sendmail без риска потерять почту, находящуюся в доставке. Что я должен делать с qmail-send? Ответ: просто возьмите и убейте процесс qmail-send. Он остановится правильно. Дождитесь появления в логах сообщения "exiting" ("завершение"). Для перезапуска qmail запустите /var/qmail/rc также, как он запускается из стартовых скриптов Вашей системы с правильными PATH, лимитами ресурсов итп. Вариант: Если qmail под контролем supervise, выполните svc -t /var/run/qmail. Процесс supervise убьет qmail, дождется его остановки и перезапустит его. Используйте -d вместо -t, если Вы не хотите, чтобы qmail перезапустился автоматически. 7.2. Как мне вручную управлять очередью сообщений? Мне бы хотелось, чтобы qmail попытался доставить все сообщения для удаленных получателей прямо сейчас Ответ: Пошлите qmail-send сигнал ALRM (или выполните svc -a /var/run/qmail, если qmail под управлением supervise) Возможно, вам имеет смысл запустить перед этим qmail-tcpok, чтобы убедиться, что qmail-remote попробует связаться со всеми получателями. Обычно, если несколько раз происходит сбой передачи какого-либо сообщения, qmail-remote откладывает его доставку на час. 7.3. Как мне "омолодить" сообщение? Кто-то снова сломал компьютер Эрика, он будет выключен еще как минимум два дня. Я знаю, что Эрик ожидает получения важного сообщения, а я уже вижу его в очереди в /var/qmail/queue/mess/15/26902 Оно здесь уже шесть дней, как мне убедиться, что завтра оно не будет отослано обратно? Ответ: Просто выполните touch /var/qmail/queue/info/15/26902 (Это единственный безопасный способ модификации очереди при запущенном qmail'е) 7.4. Как мне организовать большую сеть? У меня много машин, и я не знаю, с чего начать. Ответ: Сначала выберите имя домена, в котором Ваши пользователи будут получать почту. Обычно это кратчайшее имя из доступных Вашему контролю. Если Вы управляете именами *.movie.edu, то сможете использовать адреса вроде joe@movie.edu. Затем выберите компьютер, который будет знать, как поступать с почтой для пользователей в movie.edu. Задайте для него имя в DNS: mailhost.movie.edu. IN A 1.2.3.4 4.3.2.1.in-addr.arpa. IN PTR mailhost.movie.edu. (1.2.3.4 - IP адрес для данной машины) Далее создайте список машин, где должны быть расположены почтовые ящики пользователей. апример, если почта для Боба должна доставляться на его рабочую машину, внесите эту машину в список. Каждой из таких машин присвойте имя в DNS: bobhost.movie.edu. IN A 1.2.3.7 7.3.2.1.in-addr.arpa IN PTR bobhost.movie.edu. После этого установите qmail на bobhost.movie.edu. При установке по умолчанию qmail автоматически будет сконфигурирован для приема сообщений для bob@bobhost.movie.edu и доставки их в ~bob/Mailbox. Проделайте это для всех машин из списка. Установите qmail на mailhost.movie.edu. Добавьте movie.edu:alias-movie в control/virtualdomains на mailhost. Затем установите пересылку bob@movie.edu на bob@bobhost.movie.edu, поместив в ~alias/.qmail-movie-bob (на mailhost) bob@bobhost.movie.edu Проделайте аналогичную операцию для других пользователей. Затем добавьте movie.edu в control/rcpthosts на mailhost.movie.edu, теперь qmail будет принимать почту для пользователей домена movie.edu. Установите в DNS запись MX для доставки сообщений для movie.edu на mailhost: movie.edu. IN MX 10 mailhost.movie.edu. И наконец, поместите movie.edu в control/defaulthost на всех Ваших машинах. 7.5. Как мне сделать резервную копию и затем восстановить диск с очередью сообщений? Ответ: Вы не можете сделать этого. Первая трудность заключается в том, что во время работы qmail-send вы не можете получить целостной, непротиворечивой копии очереди, т.к. она постоянно изменяется. Другой проблемой является то, что имена файлов в очереди зависят от их номеров inode. Однако, значительно важнее то, что резервное копирование - даже дважды в день, - слишком ненадежно для почты. Если жесткие диски "умрут", то очень мало потерянных сообщений отыщутся в последней резервной копии. Существуют несколько способов увеличения надежности почтовых серверов. Источники бесперебойного питания дают Вам в случае необходимости время на штатную остановку сервера, предохраняя тем самым жесткие диски от поломки. Диски с устойчивым состоянием (solid-state disks) имеют встроенные аккумуляторы для таких ситуаций. RAID-системы позволяют Вам заменять "умершие" диски без потери данных. (Примечание А.М. - Механизм, описанный в вопросе 8.2, позволяет Вам создать запасной почтовый сервер, который будет получать всю почту, проходящую через основной сервер, и откуда ее при необходимости можно будет восстановить. Важно лишь подобрать разумное время хранения почты на таком запасном сервере.) 7.6. Как мне запустить qmail под управлением supervise? svc выглядит полезным. Ответ: Установите daemontools (http://pobox.com/~djb/daemontools.html). Создайте каталог /var/run/qmail. Измените строчку /var/qmail/rc на supervise /var/run/qmail /var/qmail/rc в стартовых скриптах Вашей системы. Убедитесь, что supervise находится в каталогах, указанных в PATH. Теперь Вы можете использовать svc для управления qmail и svstat для проверки, запущен ли qmail. 7.7. Как мне отказаться от использования syslog? Он съедает много процессорного времени и ненадежен. Ответ: Установите daemontools (http://pobox.com/~djb/daemontools.html). Создайте каталог /var/log/qmail, принадлежащий qmaill, c режимом доступа 2700. Измените способ запуска qmail в /var/qmail/rc на qmail-start ./Mailbox /usr/local/bin/accustamp \ | setuser qmaill /usr/local/bin/cyclog /var/log/qmail & Если Вы ведете лог соединений tcpserver'а, создайте отдельный каталог /var/log/smtpd и запускайте /var/log/smtpd для tcpserver. Вам не следует запускать несколько копий cyclog в одном каталоге. По умолчанию cyclog сохраняет 10 автоматически заменяемых (rotated) лог-файлов максимум по 100Kb каждый. Для сохранения 20 файлов по 1Mb запускайте cyclog -s 1000000 -n 20. 8. Разное. 8.1. Как мне увеличить количество одновременно отправляемых сообщений? По умолаанию он запускает не более 20 одновременных qmail-remote. Ответ: Подумайте, сколько одновременных доставок вам требуется. Поместите это число в control/concurrencyremote. Перезапустите qmail как в вопросе 7.1. Если Ваша система имеет ограничение на используемые процессами ресурсы (что очень рекомендуется, - прим. А.М.), убедитесь, что максимально допустимое количество дескрипторов по крайней мере равно удвоенному кол-ву одновременных доставок плюс 5. В противном случае Ваша почта будет без необходимости откладываться в моменты, когда почтовая система будет нагружена. Помните, что у qmail существует ограничение времени компиляции на кол-во одновременных доставок (120 по умолчанию, устанавливается в conf-spawn) 8.2. Как мне сохранять копии всех входящих и исходящих сообщений? Ответ: Установите в extra.h QUEUE_EXTRA равным "Tlog\0" и QUEUE_EXTRALEN равным 5. Пересоберите qmail. Поместите в ~alias/.qmail-log строку ../msg_log Вы можете использовать QUEUE_EXTRA, например, для сохранения идентификационных номеров MESSAGE-ID сообщений: поместите | awk '/^$/ { exit } /^[mM][eE][sS][sS][aA][gG][eE]-/ { print }' в ~alias/.qmail-log. 8.3. Как мне постепенно переключиться с sendmail на qmail? Я подумываю о переключении всей сети heaven.af.mil на qmail, но, для начала, мне хотелось бы дать пользователям шанс попробовать qmail без нарушения работы sendmail. Мы используем NFS. Ответ: айдите хост в Вашей сети, скажем, pc.heaven.af.mil, на котором не запущен SMTP сервер. (Если адрес pc.heaven.af.mil уже использовался, то для него в DNS уже должен установлен MX, указывающий на Ваш почтовый сервер) Создайте в DNS новую запись MX, направляющую почту для lists.heaven.af.mil на pc.heaven.af.mil. Установите qmail на pc.heaven.af.mil. Замените в конфигурационных файлах qmail'а pc на lists. Убедитесь, что документация для qmail и его man pages доступны на всех Ваших машинах. Теперь скажите Вашим пользователям о qmail. Пользователь может перенаправлять почту для joe@heaven.af.mil на joe@lists.heaven.af.mil для доставки в ~/Mailbox; он может устанавливать файлы .qmail; он может открывать свои списки рассылки на @lists.heaven.af.mil Когда Вы будете готовы отказаться от sendmail, вы можете установить pc.heaven.af.mil как новый почтовый сервер. Добавьте heaven.af.mil в control/locals и измените MX для heaven.af.mil на pc.heaven.af.mil. е забудьте оставить lists.heaven.af.mil в control/locals, чтобы временные адреса продолжали работать.