Всё что связано с qmailУстановка и описание возможностей qmail |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Инструкция по установке CMS e107 & qmail Жизнь с qmail (статья) & Mail & |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 6 Благодарности 3 Конфигурация qmail 9 FAQ qmail 4 Использование qmai 7 Пакеты имеющие отн qmail полная статья 5 Расширенные темы q 8 Разное по qmail 2 Установка qmail 1 Введение |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
B. Пакеты имеющие отношение к qmailB.1. dot-forwardSendmail использует .forward файлы, произносится dot forward , позволять пользователям управлять доставкой сообщений, которые они получают. qmail использует подобный механизм: .qmail файлы. Пакет dot-forward дает qmail'у возможность использовать .forward файлы. Системные администраторы, использующие Sendmail или любой другой MTA, использующий .forward файлы, возможно захотели бы рассмотреть использование dot-forward, чтобы избежать необходимости преобразования существующих файлов .forward к их .qmail эквивалентам - или просто сделать переход к qmail менее видимым для пользователей. dot-forward небольшой пакeт: прост в установке и конфигурировании. Исходники здесь ftp://cr.yp.to/software/dot-forward-0.71.tar.gz. dot-forward написал Dan Bernstein, страничка здесь http://cr.yp.to/dot-forward.html. B.2. fastforwardfastforward другое Sendmail-совместимое дополнение. Sendmail использует централизованную базу данных псевдонимов в единственном файле, обычно /etc/aliases. qmail использует ряд dot-qmail файлов в /var/qmail/alias, один файл на псевдоним. Если вы мигрируете на qmail, и вы имеете файл псевдонимов Sendmail-формата, который вы не хотите конвертировать, fastforward дает qmail'у возможность использовать файл псевдонимов. Исходники здесь ftp://cr.yp.to/software/fastforward-0.51.tar.gz. fastforward написал Dan Bernstein, страничка здесь http://cr.yp.to/fastforward.html. B.3. ucspi-tcpSMTP сервер qmail'а не запускается как автономный демон. Программа помощник, типа inetd, xinetd, или tcpserver выполняется как демон. Когда она принимает TCP подключение к порту 25 (SMTP порт) она выполняет копию qmail-smtpd. inetd - стандартный сетевой "супер-сервер". Для выполнения qmail-smtpd конфигурируется /etc/inetd.conf, но рекомендуется это сделать через инструмент tcpserver, который является частью пакета ucspi-tcp. ucspi-tcp это акроним для UNIX Client-Server Program Interface for TCP, и произносится <укспи ти си пи>. tcpserver предпочтительнее inetd потому что:
Исходники доступны ftp://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz. ucspi-tcp написал Dan Bernstein, страничка здесь http://cr.yp.to/ucspi-tcp.html. B.4. daemontoolsПакет daemontools содержит ряд полезных утилит для управления и мониторинга служб. Он необязателен, но очень рекомендуемый, особенно для загруженных систем. Включает в себя:
Исходники доступны на: http://cr.yp.to/daemontools/daemontools-0.70.tar.gz. daemontools написал Dan Bernstein, который поддерживает страничку http://cr.yp.to/daemontools.html. B.5. qmailanalogqmailanalog обрабатывает лог-файл и выводит ряд сообщений, которые сообщают, сколько и чего система сделала. Если Вы нуждаетесь в статистике о том, сколько сообщений послано или получено, насколько они больши, и как быстро они обрабатываются, то qmailanalog это то, что вам нужно. Бонус: matchup программа объединяет многократные линии логов qmail в одну - мало чем отличающуюся от знакомых лог-файлов Sendmail. Исходные коды qmailanalog - http://cr.yp.to/software/qmailanalog-0.70.tar.gz. qmailanalog написал Dan Bernstein, страничка здесь http://cr.yp.to/qmailanalog.html. Примечание: qmailanalog опирается на отметки времени в логе в дробном секундном формате используемом accustamp. Для того чтобы использовать это с логами сгенерированными multilog, которые в формате TAI64N, вам понадобится перевести их в старый формат. Одна программа доступна на http://www.qmail.org/tai64nfrac.
B.6. rblsmtpdЕсли вы никогда не подвергались спаму, то можете считать себя очень счастливым. Большинство пользователей e-mail -- все же знакомы с Непредусмотренной Грудой Писем (Unsolicited Bulk E-mail - UBE), также известной под именем "spam". Большинство из них приходится на рекламу секс-сайтов, пирамид, и других афер. В давние времена, вплоть до 1998 или около того, большинство MTA в Internet были открытыми ретрансляторами, то есть, они принимали почту от любого для любого, даже если ни отправитель ни получатель не был локален. Спамеры используют открытые ретрансляторы, если смогли найти их, для доставки их спама. Они решают свои задачи, посылают свою <мертвечину> через благоверные ретрансляторы, и тратит их процессорное время и сетевой трафик. Такие открытые ретрансляторы в наши дни считаются дурной манерой, и несколько групп-линчевателей антиспама создали механизм, для установления открытых ретрансляторов и других обычных источников spam'а, так что они могут избежать SMTP-подключения от них. Сюда входят: <Черный список> (Realtime Blackhole List - RBL), <Система модификации поведения открытых ретрансляторов> (Open Relay Behavior-modification System -- ORBS) и <Список пользователей для соединения> (Dial-up User List -- DUL). rblsmtpd это демон. Он сидит между tcpserver и qmail-smtpd и отклоняет подключения от систем, описанных в одном из этих списков. Пример для запуска rblsmtpd из под tcpserver: #!/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/rblsmtpd\
/var/qmail/bin/qmail-smtpd 2>&1
rblsmtpd раньше был отдельной утилитой, но теперь входит в состав ucspi-tcp. rblsmtpd написал Dan Bernstein, страничка здесь http://cr.yp.to/ucspi-tcp/rblsmtpd.html. B.7. serialmailqmail был разработан для систем с постоянной высокоскоростной связью. Serialmail - набор инструментов, которые приспособят qmail для неустойчивой, низкоскоростной связи. С serialmail на такой системе, qmail конфигурируется так, чтобы отправлять всю нелокальную почту с единственного maildir. Команда maildir2smtp из пакета serialmail используется для отправки содержимого maildir на центральный почтовый узел провайдера, когда установится соединение. Если провайдер использует QMTP (см. QMTP) может быть использован maildir2qmtp. Serialmail может использоваться на стороне провайдера для осуществления AutoTURN: SMTP подключение клиентом заставляет сервер инициализировать подключение назад к клиенту, для посылки сообщений поставленных в очередь на сервере для клиента. Это подобно функции ETRN протокола SMTP. Исходные коды serialmail доступны здесь http://cr.yp.to/software/serialmail-0.75.tar.gz. serialmail написал Dan Bernstein, его страничка http://cr.yp.to/serialmail.html.
B.8. mess822mess822 - библиотека и несколько приложений для синтаксического анализа RFC 822 совместимых почтовых сообщений. Входят приложения:
Исходные коды mess822 доступны здесь http://cr.yp.to/software/mess822-0.58.tar.gz. mess822 написал Dan Bernstein, страничка здесь http://cr.yp.to/mess822.html.
B.9. ezmlmezmlm это высокопроизводительный, простой в использовании менеджер рассылок для qmail. Если вы знакомы с LISTSERV или Majordomo, то вы знаете, что делает менеджер рассылок. Для большей информации, относительно использования менеджеров рассылок для qmail, смотрите раздел Менеджеры рассылок. Исходные коды ezmlm доступны http://cr.yp.to/software/ezmlm-0.53.tar.gz. ezmlm написал Dan Bernstein, его страничка http://cr.yp.to/ezmlm.html.
B.10. safecatsafecat надежно пишет файл в maildir почтовый ящик. Это очень удобно для принятия сообщений без procmail. Например, получение всех сообщений в Maildir: :0w |safecat Maildir/tmp Maildir/new safecat написал Len Budney, его страничка http://www.pobox.com/~lbudney/linux/software/safecat.html.
B.11. maildropmaildrop почтовый фильтр, подобен procmail. maildrop написал Sam Varshavchik, его страничка http://www.flounder.net/~mrsam/maildrop.
C. Как работает интернет почтаC.1. Как сообщение посылается из точки А в точку ВКогда пользователь на одном хосте посылает сообщение пользователю на другом хосте, многие вещи остаются за сценой, о которых вы даже не подозреваете. Скажем Элис (alice@alpha.example.com) хочет послать сообщение для Боба (bob@beta.example.com). Что происходит:
C.2. Дополнительная информацияИнформацию о том, как работает интернет почта, можете получить по следующим ссылкам:
C.2.1. Серия документов содержащих описания набора протоколов Internet и связанную с ними информациюRFC (Requests for Comment) - официальная документация интернета. Большинство из них далеки от представления комментария, и определяет интернет протоколы, такие как TCP, FTP Telnet, и различные стандарты почты и протоколов.
D. АрхитектураD.1. Модульная системная архитектураMTA выполняет различные задачи. Ранее сконструированные MTA, типа Sendmail и smail, монолитны. Другими словами, они имели одну большую, сложную программу, которая "переодевала шляпы": надев одну шляпу становилась SMTP сервером, другую - SMTP клиентом, третью - работала с локальными сообщениями, четвертую - управляла очередью, и т.д. qmail - модульный. Каждая из этих функций выполняется отдельной программой. В результате программы получились намного меньше, проще, и менее вероятно, что они содержат функциональные ошибки или ошибки безопасности. Чтобы далее расширять защиту, модули qmail, выполняются с различными привилегиями, и они не "доверяют" друг другу: они не предполагают, что другие модули всегда делают только то, что они, как предполагается1, делают.
Есть также и обратная сторона модульного подхода. В отличие от монолитного MTA между модулями строго очерчено взаимодействие, и модули только обмениваются друг с другом минимально необходимой информацией. Это, как правило, Хорошо, но иногда это добавляет трудности. Например, флаг "-v" программы sendmail заставляет печать следы ее действий на стандартный выход для отладочных целей. Начиная с обработки закачки, организации очереди, обработки псевдонима, обработка файла .forward, и удаленное отправление через SMTP, все это дает возможность легко прослеживать полную доставку, пока сообщение не будет доставлено. Подобной возможности в qmail нет, и это потребовало бы существенных изменений кода и дополнительной сложности, чтобы осуществить флажок "отладка" от модуля к модулю.
D.2. Файловая структураКаталог /var/qmail является корневым для qmail'овской файловой структуры. Он может быть изменен при компиляции qmail, но вообще-то лучше оставить как есть, чтобы другие администраторы не занимались поисками. Если вы действительно хотите переместить некоторые каталоги или все qmail дерево, то лучше это сделать с использованием символических связей. Смотри подраздел Создание каталогов. Подкаталоги верхнего уровня:
D.3. Структура очередиФайл INTERNALS в каталоге исходников обсуждает детали организации очереди более подробно. Это более краткий обзор структуры очереди.
Примечание: Каталоги, отмеченные "*" содержат серию разделенных подкаталогов, имеющие имя "0", "1"..., до (conf-split-1), где conf-split - значение, использующееся в процессе компиляции, установлено в файле conf-split в каталоге исходников. Значения по умолчанию -- 23. Назначение разбиения этих каталогов состоит в том, чтобы уменьшить число файлов в отдельном каталоге на очень загруженных серверах. Файлы в подкаталоге mess названы по их номеру i-node. Что это означает? То, что Вы вручную не можете перемещать их, используя стандартные UNIX утилиты, такие как mv, dump/restore и tar. На есть пара утилит написанных пользователями, которые правильно переименует файлы очереди. См. http://www.qmail.org/ Примечание: опасно изменять файлы очереди, в то время как qmail выполняется. Если Вы хотите модифицировать очередь, сначала остановите qmail, осторожно поиграйте с ней, и затем перезагрузите qmail.
D.4. РисункиЭто серия файлов в каталоге /var/qmail/doc имена которых начинаются PIC. Это картинки в текстовом формате показывают, как qmail обрабатывает различные ситуации. Они показывают алгоритм прохождения сообщения через различные модули, и очень полезны для отладки и создания сложных конфигураций.
В он-лайне эти файлы доступны: http://www.qmail.org/man/index.htmlЕсли Вы хотите реальные изображения qmail, выберите "big qmail picture" на сайте Andre Opperman'a: http://www.nrg4u.com/.
E. Редко задаваемые вопросыЭто вопросы, которые не попадают в раздел часто спрашиваемых, но которые важны и не просты для ответа. E.1. Как часто qmail пытается послать отложенные сообщения?Каждое сообщение имеет свой график повтора. Чем дольше сообщение остается не отправленным, тем реже qmail старается его послать. Расписание повтора не конфигурируется. Следующая таблица показывает график повтора для сообщения, которое не может быть доставлено пока оно не вернется отправителю. Локальные сообщения используют аналогичный, но более частый график.
E.2. Почему я не могу послать почту большому узлу с большим количеством MX?Если вы получаете: deferral: CNAME_lookup_failed_temporarily._(#4.4.3) - Временная неудача при поиске канонического имени Проблема может заключаться в том, что qmail не может иметь дело с большими ответами на запрос к серверу имен. Для исправления этого установите заплатку. См. подраздел <заплатки> из раздела 5. Есть также вопрос, а именно, почему некоторые не имеют проблем при достижении таких систем. В основном, в зависимости от синхронизации и упорядочения запросов сделанных на ваш локальный nameserver, размер ответа на ЛЮБОЙ запрос для "aol.com" может быть большим чем 512 байтовый предел пакета UDP, а может и нет. "может и нет" вероятно случится, если время записей А и MX вышло, но записи NS еще нет. Так на .COM серверах устанавливают TTL 2 дня, но на AOL устанавливают TTL 1 час в их записях, это часто случается на менее занятых серверах имен. Более занятые серверы имен, более вероятно, будут иметь эти записи в их кэше в любое данное время, растроив попытки непропатченного qmail проверить CNAME. Лучший тест послать письмо nosuchuser@large-mx.ckdhr.com; Если это очищает вашу очередь и заканчивается рикошетированием от ckdhr.com, то ваш MTA может посылать почту хостам со списками MX превышающими 512 байт. (Используя единственную запись ресурса, с единственным TTL, которая превысит 512 байт; проблема может быть замечена без зависимости от синхронизации и упорядочения других запросов).
E.3. Что такое QUEUE_EXTRA?QUEUE_EXTRA - статическая переменная, которая определяет дополнительного получателя, который будет добавлен к каждой доставке. Это используется, прежде всего, для логов. Например, FAQ описывает, как использовать QUEUE_EXTRA, чтобы сохранить копии всех приходящих и уходящих сообщений. Для использования QUEUE_EXTRA, отредактируйте файл extra.h определив дополнительного получателя в формате "Trecipient\0", и длину строки QUEUE_EXTRA в QUEUE_EXTRALEN ( "\0" считается за один символ). Например: #define QUEUE_EXTRA "Tlog\0" #define QUEUE_EXTRALEN 5 Остановите qmail, если он запущен. Если вы установили скрипт qmail из раздела <Установка> то можете выполнить: /usr/local/sbin/qmail stop Если у вас нет скрипта qmail, Вы должны использовать свой скрипт включения/выключения или послать процессу qmail-send сигнал TERM Для компиляции qmail: make setup check Заполните ~alias/.qmail-log в зависимости от того, что хотите регистрировать. Например, для регистрации Message-ID: | awk '/^$/ { exit } /^[mM][eE][sS][sS][aA][gG][eE]-/ { print }'
И наконец, перезапустите qmail.
F. Сообщения об ошибкахqmail сообщения об ошибках и что они означают. См RFC 1893 для объяснения кодов в круглых скобках. Это неполный список. qmail-local
qmail-smtpd
qmail.c
spawn.c
G. Посвящается новичкамОни часто вызывают проблему для новичков qmail. G.1. qmail не доставляет почту superusers'ам.Для предотвращения возможности выполнения команд qmail-local'ом от лица привилегированного пользователя, qmail игнорирует всех пользователей, чей UID = 0. Это документировано в man-странице qmail-getpw. Это не означает, что qmail не будет доставлять почту root'у, это только означает, что такая доставка должна быть обработана непривилегированным пользователем. Как правило создается псевдоним для root, заполнив ~alias/.qmail-root.
G.2. qmail не доставляет почту пользователям, которые не обладают домашним каталогом.Еще одна защита, и вообще хорошая уловка. Это документировано в man-странице qmail-getpw.
G.3. qmail не доставляет почту пользователям, чьи имена содержат символы в верхнем регистреqmail преобразовывает взятую в целом "локальную часть" -- все что слева от "@" в адресе, в нижний регистр. Man-страница говорит что это не обнаружится, но код так делает. Фактически он игнорирует пользователей с символами верхнего регистра, это документировано в man-странице qmail-getpw.
G.4. qmail заменят точки (.) в расширенных адресах на двоеточие (:).Целью является защита расширенного адреса от продвижения файла вверх по дереву используя "..". Заменив их двоеточием qmail гарантирует что все .qmail файлы необходимые пользователю находятся в их домашнем каталоге. Документировано в qmail-local.
G.5. qmail конвертирует символы верхнего регистра в расширенных адресах на символы нижнего регистра.Это другой результат, фактически qmail переводит в нижний регистр целую локальную часть адресов. Документировано в qmail-local.
G.6. qmail не использует /etc/hosts.qmail никогда не использует /etc/hosts, чтобы определить адрес IP ассоциированный с именем хоста. Если вы используете имена в управляющих файлах, то qmail должен иметь доступ к серверу имен. Все же возможно запустить qmail без доступа к серверу имен. Хосты в управляющих файлах могут определяться IP адресом указанным в квадратных скобках ([]), например,: [10.1.2.219] В действительности, квадратные скобки не всегда необходимы -- но неплохо использовать их.
G.7. qmail не регистрирует деятельность SMTP.По ряду причин qmail не регистрирует подключения SMTP, отклонения, недопустимые или допустимые команды. Можно использовать tcpserver для регистрации подключений, и можно использовать recordio для полного ведения логов диалога SMTP. recordio часть пакета ucspi-tcp. Процедура описана в FAQ в http://cr.yp.to/qmail/faq/servers.html#recordio.
G.8. qmail не генерирует уведомления об отсрочках.Если Sendmail не в состоянии доставить сообщение в течение несколько часов (обычно четыре) он посылает уведомление об отсрочке отправителю. Эти уведомления выглядят похоже на сообщения, которые приходят при ошибке доставки, но не указывает, что доставка потерпела неудачу навсегда. qmail не посылает такие предупреждения. Не доставленное сообщение будет возвращено отправителю только тогда, когда истечет время queuelifetime в очереди.
G.9. qmail медлителен если /var/qmail/queue/lock/trigger ушел/имеет неправильные разрешения/регулярный файл.qmail-queue и qmail-send связываются через именованный канал именуемый /var/qmail/queue/lock/trigger. Если этот канал испортится, qmail-send не замечает новые сообщения в течение получаса или около этого. Лучший способ гарантировать, что все установлено правильно, запустить "make check" из каталога исходников. Если это не возможно, удостоверьтесь так: # ls -l /var/qmail/queue/lock/trigger prw--w--w- 1 qmails qmail 0 Jul 5 21:25 /var/qmail/queue/lock/triggerОбратите пристальное внимание на "p" в начале строки (говорит, что это именованный канал), режим (особенно запись - "writable"), и владелец/группа.
H. Часто задаваемые вопросы по этой статьеH.1. Последняя версия Life with qmail (LWQ)?От 23 сентября 2000 г.
H.2. Кто владелец LWQ?David E. Sill
H.3. Лицензирована ли эта статья?LWQ защищен OpenContent License, версией 1.0. Информацию о полной лицензии можно получить на http://www.opencontent.org/opl.shtml. Вкратце, вы можете копировать, перераспределять, модифицировать LWQ при условии, что модифицированные версии согласуется с OpenContent License.
H.4. Как мне получить извещение о новой версии LWQ?Присоединяйтесь к рассылке lwq-announce послав письмо на lwq-announce-subscribe@sws1.ctd.ornl.gov.
H.5. Где участники этого документа и как поболтать с ними?Присоединяйтесь к рассылке lwq послав письмо на lwq-subscribe@sws1.ctd.ornl.gov.
H.6. Есть ли переводы этого документа на другие языки?Да, на испанский: и корейский: Ведутся другие переводы. Если Вы заинтересованы в переводе этого документа, сообщите мне, я помогу скоординировать и предохранить вас от дублирования. Я могу также обеспечивать переводчиков копией SDF исходного документа, так что перевод также может быть сделан в SDF. (См. следующий вопрос по причине, почему это важно.) Я также рекомендую, чтобы люди, переводящие этот документ присоединились к рассылке lwq (смотри предыдущий вопрос), чтобы они смогли обсудить вопросы перевода и сделать анонсы.
H.7. Этот документ доступен в других форматах кроме HTML?Да, альтернативный формат на http://Web.InfoAve.net/~dsill/qmail.html.
H.8. Я использовал этот документ и моя система развалилась/стерся жесткий диск/выпали волосы/умерла собака/и т.д.Я сожалею. Действительно сожалею. Но документ не несет никаких гарантий. Смотри упомянутый выше OpenContent License. Мне не платили за его написание, я только хотел сделать что-то полезное для общества qmail. Вообще-то это не FAQ. Фактически, я надеюсь, что это NAQ (Never Asked Question).
H.9. Как мне внести вклад?Пожалуйста, присылайте коррекции, предложения, жалобы, и т.п. . Если вы хотите сделать что-то большее, типа нового подраздела или приложения, здорово! Только свяжитесь сначала со мной, чтобы удостовериться, что над темой (или что-то еще, что я хочу охватить в LWQ) не работает некто другой. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Другие разделы блога: Mail & qmail Жизнь с qmail (статья) & Инструкция по установке CMS e107 & ©GRoM |