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.*.
(Прим. Будьте внимательны с синтаксисом: строки должна кончаться <CR>,
осторожнее с пробелами. - А.М.) Выполните
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, чтобы
временные адреса продолжали работать.
Страница 1 2 <<< Предыдущая
|