Почтовая очередь с помощью qmail
ВНИМАНИЕ: Этот документ только для qmail версии
1.03. Вот ссылка для версии
1.01.
В этом документе содержатся основные
шаги, которые я сделал чтобы настроить qmail на автономной linux машине с
модемным выходом, динамически выделяемым ip адресом, ppp соединением с
internet через ISP. Внимание: я не эксперт по unix или настройкам почты. Я
не гарантирую что у тебя это будет работать, но это может помочь. По
существу, информация, представленная здесь не является первоначальным
источником, это всего лишь попытка организовать то, что я нашел полезным в
документах qmail, usenet новостях, и в архиве списка рассылки.
Благодарности идут полностью этим авторам.
Содержание :
Преамбула:
Непостоянное соединение с internet
широко распространено среди пользователей linux, однако, документации по
настройке почты для этой ситуации не особенно просто следовать или
закончить. Задача такая - имеется почта, которая посылается по локальной
сети (или на одной машине) , или сохраняется на твоей машине пока не
установлено ppp соединение, затем почтовик (MTA - агент транспортировки
почты) соединяется с MTA твоего ISP и твоя почта отправляется дальше. Это
звучит достаточно просто, но пытаться убедить sendmail или smail сделать
это - одна нервотрепка. Я попробовал оба. Я обнаружил, что sendmail трудно
настроить правильно. Не желая тратить впустую много часов, только для того
чтобы только познакомиться с основными опциями настройки, я бросил
sendmail и попробовал smail. Я был способен заставить smail как-то
работать, но этого оказалось явно недостаточно. Я могу сказать, что эти
программы не разрабатывались для работы при таких условиях. Если ты все
еще хочешь попытаться, то смотри Mail-Queue
mini HOWTO.
Когда этот вопрос задается в usenet
и где-нибудь еще, то серьезные пользователи unix всегда отвечают
"используйте UUCP". Это может быть и правильный ответ, я не знаю. Кроме
того, я не знаю, поддерживает ли это MTA моего ISP, и я не знаю как
выяснить это. (Только попробуйте позвонить в службу поддержки и получите
один ответ - нет.)
Рассмотрим несколько
других вещей. Во-первых, ты должен иметь работающий ppp. Как это сделать
смотри в PPP-HOWTO.
Во-вторых, я уверен, что многие из Вас имеют пару машин в локальной сети с
фиктивными адресами IP и фиктивными именами доменов. Это не проблема, но
будь уверен, что твои IP адреса предназначены для такого использования -
смотри Network-HOWTO.
Сделав это, тем самым гарантируется, что любой пакет, который каким-то
образом нашел выход из твоей сети в internet будет игнорироваться и не
вызовет каких-нибудь проблем. Также, много хорошей информации в Mail-HOWTO.
Dave Sill написал очень полезный и информативный документ по qmail,
называемый Life With
Qmail.
Теперь про qmail. Qmail, вместе с
несколькими дополнениями написал Dan Bernstein,
разобравшись с этой ситуацией очень хорошо. 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. Поиск необходимого программного обеспечения:
Первичное расположение программного
обеспечения поддерживается автором. qmail версии
1.03 свободно доступен, и есть коммерческая поддержка (подробнее смотри на
странице qmail.org).
Требуются
такие архивы:
Шаг 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 добавь
[email protected]:alias-isp в файл
/var/qmail/control/virtualdomains (в отдельной строке).
- Создай файл .qmail-isp-yourispname в домашнем каталоге
alias (/var/qmail/alias). В этом файле одну
строку:
&[email protected]
- Чтобы разрешить qmail изменять строку "From:" в исходящей почте на
соответствующие [email protected], тебе нужно добавить три переменных
среды. Куда - это несколько зависит от системы, а для моей стандартной
установки 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
([email protected]), то почта появится в твоем локальном 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 [email protected]
- Последняя строка запускает 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 здесь.
Клиентским машинам также нужно
получать свою почту с твоего сервера. Обычно, это выполняется с помощью
POP сервера. Я использую qpopper и доволен им. Еще можно
использовать POP сервер встроенный в qmail - qmail-pop3d, но его сложнее
настроить.
Эпилог:
Я надеюсь, что этот документ
сэкономил тебе немного времени и нервов с почтой. Если ты находишь его
полезным, напиши мне. Аналогично, если у тебя есть предложения по
усовершенствованию.
D. L. Vander WoudeLast
modified: Fri Aug 20 00:15:58 EDT 1999
Перевод выполнил Юрий Козлов, очень рад замечаниям по адресу [email protected]. Формат оригинального html
сохранен . 27 Авг Пят 19:53:58 MSK 1999 Сергиев-Посадская LUG spslug.sposad.ru
|