From: Юрий Козлов <off@tsinet.ru>
Newsgroups: http://spslug.sposad.ru
Date: Mon, 27 Aug 1999 13:01:37 +0000 (UTC)
Subject: Почтовая очередь с помощью qmail
Автор: D. L. Vander Woude <dougvw@i2k.com>
Перевод: Юрий Козлов <off@tsinet.ru>
Почтовая очередь с помощью qmail
ВНИМАНИЕ: Этот документ только для qmail версии 1.03.
В этом документе содержатся основные шаги, которые я сделал
чтобы настроить qmail на автономной linux машине с модемным выходом,
динамически выделяемым ip адресом, ppp соединением с internet через
ISP. Внимание: я не эксперт по unix или настройкам почты. Я не
гарантирую что у тебя это будет работать, но это может помочь. По
существу, информация, представленная здесь не является первоначальным
источником, это всего лишь попытка организовать то, что я нашел
полезным в документах qmail, usenet новостях, и в архиве списка
рассылки. Благодарности идут полностью этим авторам.
Содержание :
1. Преамбула
2. Поиск необходимого программного обеспечения.
3. Компиляция и установка qmail.
4. Компиляция и установка qmail serialmail и ucspi-tcp.
5. Настройки твоего сайта.
6. Отправка почты "наружу".
7. Автоматизация с помощью ip-up.
8. Выборочная трансляция и поддержка pop.
9. Эпилог
Преамбула:
Непостоянное соединение с internet широко распространено среди
пользователей linux, однако, документации по настройке почты для этой
ситуации не особенно просто следовать или закончить. Задача такая -
имеется почта, которая посылается по локальной сети (или на одной
машине) , или сохраняется на твоей машине пока не установлено ppp
соединение, затем почтовик (MTA - агент транспортировки почты)
соединяется с MTA твоего ISP и твоя почта отправляется дальше. Это
звучит достаточно просто, но пытаться убедить sendmail или smail
сделать это - одна нервотрепка. Я попробовал оба. Я обнаружил, что
sendmail трудно настроить правильно. Не желая тратить впустую много
часов, только для того чтобы только познакомиться с основными опциями
настройки, я бросил sendmail и попробовал smail. Я был способен
заставить smail как-то работать, но этого оказалось явно недостаточно.
Я могу сказать, что эти программы не разрабатывались для работы при
таких условиях. Если ты все еще хочешь попытаться, то смотри
Mail-Queue mini HOWTO (http://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/Mail-Queue).
Когда этот вопрос задается в usenet и где-нибудь еще, то
серьезные пользователи unix всегда отвечают "используйте UUCP". Это
может быть и правильный ответ, я не знаю. Кроме того, я не знаю,
поддерживает ли это MTA моего ISP, и я не знаю как выяснить это.
(Только попробуйте позвонить в службу поддержки и получите один ответ
- нет.)
Рассмотрим несколько других вещей. Во-первых, ты должен иметь
работающий ppp. Как это сделать смотри в PPP-HOWTO. Во-вторых, я
уверен, что многие из Вас имеют пару машин в локальной сети с
фиктивными адресами IP и фиктивными именами доменов. Это не проблема,
но будь уверен, что твои IP адреса предназначены для такого
использования - смотри Network-HOWTO. Сделав это, тем самым
гарантируется, что любой пакет, который каким-то образом нашел выход
из твоей сети в internet будет игнорироваться и не вызовет
каких-нибудь проблем. Также, много хорошей информации в
Mail-HOWTO. Dave Sill написал очень полезный и информативный
документ по qmail, называемый ]Life With Qmail (http://web.infoave.net/~dsill/lwq.html).
Теперь про qmail. Qmail, вместе с несколькими дополнениями
написал Dan Bernstein (ftp://koobera.math.uic.edu/www/qmail.html),
разобравшись с этой ситуацией очень хорошо.
Qmail можно относительно легко настроить так, чтобы почта,
адресованная за пределы локальной сети или машины, доставлялась в
специальный почтовый каталог. Для отправки почты "наружу" вызывается
программа maildirsmtp и все содержимое этого каталога отправляется MTA
твоего ISP для маршрутизации в конечный пункт назначения. Получение
почты не такая большая проблема с тех пор как большинство (все?) ISP
стали поддерживать POP протокол. Для этого я использую fetchmail, а он
гибкий и легко настраивается (доступен с любого зеркала Sunsite).
По умолчанию, Qmail использует уникальную систему "Mailbox".
Почта хранится не в обычном месте /var/spool/mail/username, а в файле
Mailbox в домашнем каталоге пользователя (если ты хочешь оставить
систему /var/spool/mail/username, то прочитай INSTALL.vsm из исходной
документации). Для этого есть несколько причин - пожалуйста, посмотри
документацию qmail. Одна из них, использование системы "maildir" для
большей безопасности; подробнее смотри в документации. В этом
документе будет использоваться система Mailbox.
Единожды правильно установленный и запущенный qmail,
обеспечивает бесперебойную доставку и отправку почты из любого
стандартного почтового клиента. Аналогично, fetchmail автоматически
принимает входящую почту для доставки в твой Mailbox и для этого не
требуется каких-то специальных настроек (смотри ниже).
Шаг 1. Поиск необходимого программного обеспечения:
Первичное расположение программного обеспечения поддерживается
автором (ftp://koobera.math.uic.edu/www/qmail.html).
qmail версии 1.03 свободно доступен, и есть коммерческая
поддержка (подробнее смотри на странице http://qmail.org).
Требуются такие архивы:
* qmail ftp://koobera.math.uic.edu/www/qmail.html
* serialmail ftp://koobera.math.uic.edu/www/serialmail.html
* ucspi-tcp ftp://koobera.math.uic.edu/www/ucspi-tcp.html
Шаг 2. Компиляция и установка qmail:
Компилируй и установи qmail согласно указаниям из файла INSTALL.
Ты должен строго придерживаться этих указаний. Это немного сложнее чем
установка среднего приложения, но в ней нет ничего трудного. Обрати
внимание на эти пункты:
* Заведи пользователей и группы для qmail точно как указано, перед
компиляцией (смотри INSTALL.ids).
* Выполни "минимум команд для жизни". Если ты не запустил DNS то
./config может не сработать. В этом случае, создай файл
/var/qmail/control/me с указанным в нем полным именем твоей машины
полностью на одной строке.
Это сработает даже если это не настоящее имя или имя твое домена
ISP.
например #echo 'mycomputer.mydomain.com' > /var/qmail/control/me
* Как указывалось выше, этот документ предполагает локальную
доставку в ~user/Mailbox, прочитай INSTALL.mbox. Если это твой
выбор - игнорируй INSTALL.maildir. Как root, создай ссылку, как
написано, в /var/spool/mail/user на ~user/Mailbox.
* Для шага 8 скопируй /var/qmail/boot/home в /var/qmail/rc. Версия
"proc", для procmail, которому необходимы изменения в исходном
коде procmail - сделай это позднее, если потребуется.
* Из TEST.deliver выполни Local-local тест и Local-error тест.
Local-remote, естественно, еще не работает.
Шаг 3. Компиляция и установка qmail serialmail и ucspi-tcp:
Если qmail запускается и локальные тесты проходят, то продолжай
установку. Компилируй и установи serialmail и ucspi-tcp. Для них не
нужны специальные настройки. Только следуй файлам INSTALL.
Шаг 4. Настройки твоего сайта:
Несколько определений для понятности команд ниже:
yourlocalname = твое имя на локальной машине.
yourdomain = твое имя локального домена(например mydomain как
в mydomain.com)
yourispname = твое имя у ISP (имя бюджета у поставщика
internet услуг)
isp = твой ISP (поставщик internet услуг, например earthlink,
att, mindspring...)
* Во-первых, создай maildir для исходящей почты в домашнем каталоге
"alias" ( /var/qmail/alias).
#maildirmake ~alias/pppdir
#chown -R alias ~alias/pppdir
(mkdir может не сработать)
* Запиши
./pppdir/
в ~alias/.qmail-ppp-default. Точно как написано. Не забудь ./ или
/
* Запиши
:alias-ppp
в /var/qmail/control/virtualdomains.
* Для замены твоего локального имени именем у ISP добавь
yourispname@isp.com:alias-isp
в файл /var/qmail/control/virtualdomains (в отдельной строке).
* Создай файл .qmail-isp-yourispname в домашнем каталоге alias
(/var/qmail/alias). В этом файле одну строку:
&yourlocalname@yourdomain.com
* Чтобы разрешить qmail изменять строку "From:" в исходящей почте на
соответствующие yourispname@isp.com, тебе нужно добавить три
переменных среды. Куда - это несколько зависит от системы, а для
моей стандартной установки RedHat я добавил их в файл
.bash_profile из моего домашнего каталога:
MAILHOST=isp.com
MAILUSER=yourispname
QMAILINJECT=f
export MAILHOST MAILUSER QMAILINJECT
* Чтобы qmail запускался во время загрузки добавь это в
/etc/rc.d/rc.local (или в эквивалент на твоей системе):
echo "Starting qmail ..."
csh -cf '/var/qmail/rc &'
* Прочитай раздел qmail файла INSTALL, озаглавленный "Переход с
sendmail на qmail":
Создай ссылку "sendmail" оболочки, как написано.
Измени inetd.conf как написано и перезапусти inetd.
Ссылка на оболочку sendmail должна быть сделана даже если ты не
переходишь с sendmail.
* Теперь ты способен полностью выполнить local-remote тест,
описываемый ранее. Если ты пошлешь почту по своему адресу у ISP
(yourispname@isp.com), то почта появится в твоем локальном
mailbox, потому что выше он был записан как виртуальный домен.
Если ты пошлешь что-нибудь еще за пределы локального домена, то
оно появится в /var/qmail/alias/pppdir/new. Оно останется там,
пока maildirsmtp не пошлет его дальше через MTA твоего ISP.
Шаг 5. Отправка почты "наружу":
* Если ppp соединение установлено, то можно определить IP адрес с
помощью ifconfig (доступна на большинстве систем). С помощью этой
информации, можно послать исходящую почту из командной строки как
написано в man странице maildirsmtp. Я использую команду типа
такой:
#/usr/local/bin/serialmail/maildirsmtp ~alias/pppdir alias-ppp-
mail.earthlink.net MyIP
(замени mail.earthlink.net именем почтовой машины твоего isp и
MyIP на твой текущий IP адрес.
* Если эта команда работает, то это должно быть видно по тому что
она выводит, например, message xxx accepted for delivery или
что-то типа этого. Аналогично, видно и отказ. Я могу принять эту
надежную работу из командной строки, однако, когда она выполняется
из ip-up, то я должен использовать настоящее имя моей машины
(зачем, я не понимаю).
* Если это у тебя заработало, то все что осталось - это
автоматизировать процесс.
Шаг 6. Автоматизация с помощью ip-up:
* ip-up это сценарий shell, который выполняется как только pppd
установит связь. В моей системе он находится в /etc/ppp/, но может
быть где угодно. В установке RedHat сценарий ip-up включает
комментарии, в которых говорится что он не должен редактироваться,
а вместо него должен использоваться ip-up.local. Создай этот файл
в /etc/ppp/ и
#chmod 755 /etc/ppp/ip-up.local
чтобы сделать его запускаемым
* Мой файл ip-up.local выглядит так:
#!/bin/sh
# dlv 4/19/98
#
# эти строки добавлены, чтобы собирать любые выдаваемые сообщения
в мой домашний каталог
exec >/home/dlv/ip-up-log
exec 2>&1
#
date
# файлы конфигурации qmail в
QCD='/var/qmail/control'
#
# определить имя нашей машины; назначается динамически!
# $4 - ip адрес, переданный pppd
ME=`host $4|head -1|cut -d" " -f2`
echo "$ME" > $QCD/HOSTNAME
#
# послать пачку писем на умную машину
/usr/local/bin/serialmail/maildirsmtp ~alias/pppdir alias-ppp-
mail.earthlink.net $ME
#
su dlv -c /usr/local/bin/fetchmail
* При выполнении в домашнем каталоге создается файл ip-up-log для
отладочных целей. Переменная ME используется чтобы знать
"реальное" динамически выделяемое имя машины. Оно сохраняется в
control/HOSTNAME. maildirsmtp запускается, используя ME в качестве
имени машины. $4 - это параметр, переданный pppd, содержит новый
динамически выделенный IP адрес. Подробнее смотри man страницу
pppd.
Этот сценарий адаптирован из сообщения списка рассылки qmail,
написанное Rupert Mazzucco maz@pap.univie.ac.at
* Последняя строка запускает fetchmail под моим бюджетом (а не root)
для получения любой входящей почты. Страница руководства fetchmail
очень понятно описывает как настроить fetchmail, но если тебе
интересно, то вот мой ~/.fetchmailrc :
poll mail.earthlink.net proto pop3
user yourispname with pass yourisppassword is yourlocalname here
forcecr
keep
Обратите внимание, что опция "forcecr" необходима при работе с
qmail. Замени mail.earthlink.net на имя почтовой машины твоего
ISP.
* Если ты хочешь чтобы машина проверяла почту автоматически, то
добавь запись для cron, чтобы он устанавливал ppp соединение, ждал
минуту и прерывал связь.
Шаг 7. Выборочная трансляция и поддержка pop:
В большинстве случаев в локальную сеть объединены более чем одна
машина, и для всех них требуются почтовые услуги. Чтобы это правильно
работало, тебе нужно так настроить qmail, чтобы позволить твоим
локальным клиентам "транслировать" почту через твой сервер. Другими
словами, если в сети есть компьютеры Macintosh или (Боже упаси) W95,
то их почтовые клиенты (например, eurdora, netscape, ...) должны быть
настроены так, чтобы они определяли твой qmail сервер как почтовый
сервер (например, mymachine.mydomain.com). Это особенно важно если ты
имеешь "звонок по требованию" связь с internet. Если клиенты будут
посылать всю почту через ISP (например, mail.earthlink.net) связь
будет устанавливаться для каждой исходящей почты - это не то что ты
хочешь. Лучший вариант настройки "выборочной трансляции" описан
Michael Samuel здесь (http://qmail-docs.surfdirect.com.au/docs/qmail-antirelay.html).
Клиентским машинам также нужно получать свою почту с твоего
сервера. Обычно, это выполняется с помощью POP сервера. Я использую
qpopper (http://www.eudora.com/freeware) и доволен им.
Еще можно использовать POP сервер встроенный в qmail - qmail-pop3d,
но его сложнее настроить.
Эпилог:
Я надеюсь, что этот документ сэкономил тебе немного времени и
нервов с почтой. Если ты находишь его полезным, напиши мне.
Аналогично, если у тебя есть предложения по усовершенствованию.
_________________________________________________________________
D. L. Vander Woude <dougvw@i2k.com>
Last modified: Fri Aug 20 00:15:58 EDT 1999
_________________________________________________________________
Перевод выполнил Юрий Козлов, очень рад замечаниям по адресу <off@tsinet.ru>.
Формат оригинального html сохранен (http://www.i2k.net/~dougvw/mailqueue.html).
27 Авг Пят 19:53:58 MSK 1999
Сергиев-Посадская LUG http://spslug.sposad.ru
677 Прочтений • [Почтовая очередь с помощью qmail (mail qmail queue)] [08.05.2012] [Комментариев: 0]