Life with qmail Dave Sill 23 September 2000 |
Жизнь с qmail Мельников А.В. 21 мая 2001 |
Содержание
1. Введение
1.1. Для кого предназначен документ
1.2. Что такое qmail?
1.3. Зачем использовать qmail?
1.4. История
1.5. Возможности
1.6. qmail ориентированные пакеты
1.7. Архитектура
1.8. Лицензия
1.9. Сравнение с другими MTA
1.10. Документация
1.11. Поддержка
2. Установка
2.1. Установка исходников
2.2. Подготовка
2.3. Системные требования
2.4. Получение исходников
2.5. Компиляция
2.6. Установка ucspi-tcp
2.7. Установка daemontools
2.8. Запуск qmail
2.9. Тестирование установки
3. Конфигурация
3.1. Файлы конфигурации
3.2. Ретрансляция
3.3. Множественные имена хоста
3.4. Виртуальные домены
3.5. Псевдонимы
3.6. qmail-users
3.7. Контроль спама
4. Использование
4.1. .qmail файлы
4.2. Посылка сообщений
4.3. Переменные среды
5. Расширенные темы
5.1. procmail
5.2. POP и IMAP сервера
5.4. Мульти-RCPT против единственной RCPT доставки
5.5. VERP
5.6. Выявление неисправностей
5.7. Большие сервера
5.8. Переход от Sendmail к qmail
5.9. Менеджеры рассылок
5.10. Заплатки
5.11. QMTP
A. Благодарности
B. Пакеты имеющие отношение к qmail
B.1. dot-forward
B.2. fastforward
B.3. ucspi-tcp
B.4. daemontools
B.5. qmailanalog
B.6. rblsmtpd
B.7. serialmail
B.8. mess822
B.9. ezmlm
B.10. safecat
B.11. maildrop
C. Как работает интернет почта
C.1. Как сообщение посылается из точки А в точку В
C.2. Дополнительная информация
D. Архитектура
D.1. Модульная системная архитектура
D.2. Файловая структура
D.3. Структура очереди
D.4. Рисунки
E. Редко задаваемые вопросы
E.1. Как часто qmail пытается послать отложенные сообщения?
E.2. Почему я не могу послать почту большому узлу с большим количеством MX?
E.3. Что такое QUEUE_EXTRA?
F. Сообщения об ошибках
G. Посвящается новичкам
G.1. qmail не доставляет почту superusers'ам
G.2. qmail не доставляет почту пользователям, которые не обладают домашним каталогом
G.3. qmail не доставляет почту пользователям, чьи имена содержат символы в верхнем регистре
G.4. qmail заменят точки (.) в расширенных адресах на двоеточие (:)
G.5. qmail конвертирует символы верхнего регистра в расширенных адресах на символы нижнего регистра
G.6. qmail не использует /etc/hosts
G.7. qmail не регистрирует деятельность SMTP
G.8. qmail не генерирует уведомления об отсрочках
G.9. qmail медлителен если /var/qmail/queue/lock/trigger ушел/имеет неправильные разрешения/регулярный файл
H. Часто задаваемые вопросы по этой статье
H.1. Последняя версия Life with qmail (LWQ)?
H.2. Кто владелец LWQ?
H.3. Лицензирована ли эта статья?
H.4. Как мне получить извещение о новой версии LWQ?
H.5. Где участники этого документа и как поболтать с ними?
H.6. Есть ли переводы этого документа на другие языки?
H.7. Этот документ доступен в других форматах кроме HTML?
H.8. Я использовал этот документ и моя система развалилась/стерся жесткий диск/выпали волосы/умерла собака/и т.д.
H.9. Как мне внести вклад?
1. Введение
1.1. Для кого предназначен документ
Документ нацелен на всех, кто заинтересован управлением qmail, от новичка, кто только что инсталлировал Linux на отдельной машине, до опытного администратора системы или почтового администратора. Если что-то неясно или недостает, сообщите мне. Присылайте комментарии на lwq@sill.org.
Из различных источников можно получить массу информации по qmail. Некоторая нацелена на новичков, другая предполагает, что читатель более опытен. Этот документ пытается <склеить> эту информацию в единственный источник, заполняя некоторые пробелы и предполагает, что читатель имеет базовые знания, такие как:
- манипуляция с файлами/директориям под UNIX
- работа в браузере или FTP клиенте
- следование руководствам.
1.2. Что такое qmail?
qmail это Агент Передачи Почты (Mail Transfer Agent -- MTA) для unix-подобных операционных систем. Это замена системы Sendmail поставляемая с UNIX операционными системами. qmail использует Простой Протокол Передачи Почты (Simple Mail Transfer Protocol -- SMTP) для обмена сообщениями с MTA на других системах.
Обратите внимание: имя "qmail", а не "Qmail".
1.3. Зачем использовать qmail?
Ваша операционная система включила MTA, вероятно Sendmail, так что если Вы читаете этот документ, то Вы вероятно ищете что-то лучшее. Некоторые из преимуществ qmail над поставляемыми MTA:
1.3.1. Безопасность
qmail был сделан для обеспечения высшей безопасности. Sendmail имеет длинную историю связанную с серьезными проблемами безопасности. Когда Sendmail был написан, Сеть была намного дружелюбнее. Каждый знал каждого, и не было такой потребности в проектировании и программировании высокой безопасности.љ Сегодняшний интернет - более враждебная среда для сетевых серверов. Автор Sendmail Эрик Аллман проделал хорошую работу для усиления программы, но небольшое перепрограммирование не позволит достичь истинной безопасности.
1.3.2. Производительность
Параллельная доставка почты, выполняющая (по умолчанию) до 20 доставок одновременно.
1.3.3. Надежность
Как только qmail примет сообщение, он гарантирует, что оно не будет потеряно. qmail также поддерживает новый формат почтового ящика, который работает надежно даже без запирания NFS.
1.3.4. Простота
qmail меньше, чем любые другие эквивалентные MTA.
Примечание: официальная веб-страничка на http://cr.yp.to/qmail.html более полно описывает преимущества qmail.
1.4. История
qmail написал Дэн Бернстеин (Dan Bernstein), http://cr.yp.to/DJB.html, профессор математики в Университете Штата Иллинойс в Чикаго. Dan Bernstein также известен за его работу в области криптографии и его судебный процесс против американского правительства относительно публикации исходников шифрования. Информация по судебному процессу доступна наљhttp://www.news.com/News/Item/0,4,36217,00.html?owv
Первая доступная редакция qmail 0.70beta 24 января 1996 года.љ Первая редакция qmail 0.70gamma 1 августа 1996 года.
Версия 1.0 - первая распространенная редакция была анонсирована 20 февраля 1997 года. Текущая версия 1.03 была выпущена 15 июня 1998 года.
Следующий выпуск, как ожидается, будет версией 2.0. Некоторые из возможностей, которые могли бы появиться в версии 2, охвачены в http://cr.yp.to/qmail/future.html.
1.5. Возможности
Веб-страница на http://cr.yp.to/qmail.html имеет исчерпывающий список. Этот подраздел рассмотрен здесь более серьезно.
1.5.1. Установка
- Автоматическая адаптация к вашему unix варианту
- Автоматическая конфигурация хоста
- Быстрая установка - нет большого списка решений
1.5.2. Безопасность
- Ясное разделение между адресами, файлами, и программами
- Минимизация кода setuid
- Минимизация кода root
- Пятистороннее разделение доверия -- полная безопасность
- Дополнительная регистрация некоторых сообщений, всех сообщений и т.д. (См. <Что такое QUEUE_EXTRA?> в приложении E.)
1.5.3. Конструкция сообщения
- Совместимость с RFC 822 и RFC 1123
- Полная поддержка адресных групп
- Автоматическое преобразование адресов старого стиля в формат RFC 822
- Команда sendmail для совместимости с текущими агентами пользователя
- Длина строки Header ограничена только памятью
- Маскировка хоста (См. defaulthost)
- Маскировка пользователя (См. MAILUSER и MAILHOST)
- Автоматическая установка љMail-Followup-To (См. QMAILMFTFILE)
1.5.4. SMTP
- Совместимость с RFC 821, RFC 1123, RFC 1651, RFC 1652 и RFC 1854
- Очистка 8-го бита
- RFC 931/1413/ident/TAP вызовы -- помощь в отслеживании спамеров и нарушителей
- Контроль ретрансляции -- остановит неавторизованную передачу посторонними
- Невмешательство между контролем ретрансляции и псевдонимами
- Автоматическое распознавание локальных IP адресов
- Тайм-ауты на буфер
- Подсчет обращений
- Предел параллелизма (посредством ucspi-tcp)
- Отказ подключений от известных злоумышленников (посредством ucspi-tcp)
- Ретрансляция и перезапись сообщения для авторизованных клиентов
- Дополнительная поддержкаљ RBL/ORBS (посредством rblsmtpd)
1.5.5. Управление очередью
- Мгновенная обработка сообщений добавляемых в очередь
- Предел параллелизма
- Разделенный каталог очереди -- никакого снижения, когда очередь становится большой
- Квадратичная задержка при повторной попытке отправки сообщения - попытки отправки 'старых' сообщений осуществляются реже 'новых' (См. Приложение E)
- Независимые графики повторения сообщения
- Автоматическая безопасная организация очереди -- нет потери почтовых сообщений при возможном крахе системы
- Автоматические проверки на каждого получателя
- Автоматические очистки очереди
- Просмотр очереди (См. qmail-qread)
- Подробная статистика доставки (посредством qmailanalog)
1.5.6. Отвергнутые сообщения (рикошет)
- QSBMF рикошетные сообщения - как машиночитаемые, так и удобочитаемые человеком
- Поддержка HCMSSC - языконезависимые коды ошибок RFC 1893
- Повторно отвергнутые сообщения посылаются postmaster'у
1.5.7. Маршрутизация на уровне домена
- Любое количество имен для локального хоста (См. locals)
- Любое количество виртуальных доменов (См. virtualdomains)
- Доменные шаблоны (См. virtualdomains)
- Конфигурирование поддержки "взламывающий процент" (См. percenthack)
- UUCP ловушка
1.5.8. SMTP доставка
- Совместимость с RFC 821, RFC 974 и RFC 1123
- Очистка 8-го бита
- Автоматическое повторениељ в случае обнаружения ошибки при неработающем хосте
- Искусственная маршрутизация--smarthost, localnet, mailertable (См. smtproutes)
- Тайм-ауты на буфер
- Пассивная SMTP очередь -- идеальна для SLIP/PPP (посредством serialmail)
- Поддержка AutoTURN (посредством serialmail)
1.5.9. Пересылка и списки рассылки
- Совместимость с файлом .forward от Sendmailљ (посредством dot-forward)
- Быстро обрабатываемые базы данных для перенаправления сообщений (посредством fastforward)
- Совместимость с файлом /etc/aliases от Sendmail (посредством fastforward)
- Объединение адресов по шаблону (См. .qmail-default)
- Хозяин рассылки -- автоматическое отклонение возвращенных и вакантных сообщений
- VERP -- автоматическая идентификация получателя из рикошетов рассылки
- Delivered-To-- автоматическое предотвращение цикла, даже через хосты
1.5.10.љ Локальная доставка
- Контролируемая пользователем адресная иерархия -- Фред контролирует Фред-что-нибудь mbox доставку
- Надежная NFS доставка (См. maildir)
- Контролируемая пользователем доставка: procmail и т.п. (См. qmail-command)
- Необязательное оповещение при получении нового сообщения (См. qbiff)
- Дополнительные NRUDT обратные приемы (См. qreceipt)
- Условная фильтрация сообщений (См. condredirect и bouncesaying)
1.5.11. POP3
- Придерживание RFC 1939
- Поддержка UIDL
- Поддержка TOP
- APOP ловушка
- Модульная проверка пароля (посредством checkpassword)
1.6. qmail ориентированные пакеты
qmail следует за классической UNIX философией, в которой каждый инструмент должен выполнять единственную, четкую функцию, и сложные функции должны быть построены, объединяя ряд простых инструментов в "конвейер".љ Альтернативно строятся все более сложные инструменты, которые <переизобретают> многое из функциональных возможностей более простых инструментов.
Не стоит удивляться, ч то qmail сам не делает всего того, чего можно захотеть. Здесь некоторые самые популярные расширения написанные дляљ qmail. Конечно, многие стандартные UNIX утилиты также могут подключаться в qmail.
dot-forward
-- Дополнение для совместимости с файлом .forward из Sendmail
fastforward
-- Дополнение для совместимости с базой псевдонимов из Sendmail
ucspi-tcp --
Замена inetdљ
daemontools
-- Набор инструментальных средств для управления демонами и их логами
qmailanalog
-- Набор инструментальных средств для анализа работы qmail
rblsmtpd --
Антиспамовый инструмент
serialmail --
Инструменты для отправки почты по медленным сетям
mess822 --
Инструменты для анализа почтовых сообщений
ezmlm -- Менеджер
рассылки писем для qmail
1.7. Архитектура
Приложение D охватывает функциональную и физическую структуру qmail. В двух словах, qmail состоит из ряда программ, которые выполняют различные задачи.
1.8. Лицензия
На qmail распространяется авторское право Дэна Бернстеина, и не распространяется положение о правах потребителя. На http://cr.yp.to/softwarelaw.html он описывает, что права программы находятся под Американским законом об авторском праве. На http://cr.yp.to/qmail/dist.html он предоставляет право распространять qmail исходники. Двоичные дистрибутивы позволяются согласно рамкам, описанных наљ http://cr.yp.to/qmail/var-qmail.html хотя фактически никто не пытается это делать.
В общем, вы можете использовать qmail в любых целях, можете распространять неизмененные qmail љисходники и подготовить var-qmail откомпилированный дистрибутив, можете раздавать патчи для qmail. Вы не можете распространять измененные исходники qmail и не-var-qmail откомпилированный дистрибутив.
1.9. Сравнение с другими MTA
По этой теме можно на писать книгу, но это будет утомительное чтиво. Здесь краткое сравнение основных UNIX MTA.
MTA |
Завершенность |
Безопасность |
Характеристики |
Производи-тельность |
Sendmail-ность |
Модульность |
qmail |
Средняя |
Высокая |
Высокая |
Высокая |
Добавлениями |
Да |
Sendmail |
Высокая |
Низкая |
Высокая |
Низкая |
x |
Нет |
Postfix |
Низкая |
Высокая |
Средняя |
Высокая |
Да |
Да |
exim |
Средняя |
Низкая |
Высокая |
Средняя |
Да |
Нет |
Sendmail-ность означает чтољ MTA ведет себя подобно Sendmail'у, вљ некоторых случаях можно сделать переключение от Sendmail до альтернативного MTA более прозрачнымљ для пользователей, типа использования .forward файлов, /etc/aliases, и доставки в /var/spool/mail.
Камерон Лаирд имеет страницу в сети, сравнивающую эти и другие свободные и коммерческие MTA - http://starbase.neosoft.com/~claird/comp.mail.misc/MTA_comparison.html.
1.10. Документация
1.10.1. man-страницы
Дистрибутив qmail идет с полным комплектом man-страниц. После инсталляции они в каталогељ /var/qmail/man. Вероятно, вам нужно будет добавить эту директорию в вашу переменную MANPATH.
Оболочка |
Команда |
Bourne (/bin/sh) |
MANPATH=$MANPATH:/var/qmail/man; export MANPATH |
Bash, Korn |
export MANPATH=$MANPATH:/var/qmail/man |
C Shell |
setenv MANPATH $MANPATH:/var/qmail/man |
После этого, команды в стиле "man имя-man-странички-от-qmail" должны показать соответствующую страницу
man-страницы также доступны по адресу: http://www.qmail.org/man/index.html
Обратите внимание: qmail man-страницы загружены информацией, но они требуют осторожного чтения, потому что они написаны в очень плотном, техническом стиле. Вы можете распечатать их и читать их позже, когда понадобится. Некоторая информация охватывается в разных страницах и если вы не знаете где что описано, то можете и не найти ее.
1.10.2. Документы
Дистрибутив qmail включает в себя серию документов устанавливаемых в /var/qmail/doc. Включает:
- FAQ: Часто задаваемы вопросы, с ответами
- INSTALL*: Документация по установке
- PIC.*: Описывает как qmail выполняет ключевые задачи. Смотри приложение "Архитектура"для большей информации.
- Различная документация связанная с установкой
Эти документы также доступны: http://www.qmail.org/man/index.html
1.10.3. Часто задаваемые вопросы (Frequently Asked Questions - FAQ)
Два официальных документа FAQ:
- /var/qmail/doc/FAQ, текстовая версия, и
- в интернете http://cr.yp.to/qmail/faq.html.
FAQ в Интернет более полон.
1.10.4. Книги
1.10.4.1. qmail
Джон Левин и Расселл Нельсон пишут книгу по qmail для O'Reilly & Associates (http://www.oreilly.com/) который должен быть доступен позже в этом году. Расселл и Джон - частые участники почтовой рассылки по qmail продемонстрировали отличное знание qmail и способны сообщить это эффективно и вежливо. O'Reilly имеет превосходную репутацию связанную с компьютерными публикациями. Эта книга несомненно станет "библией" по qmail.
Для получения дополнительной информации или заказа книги, когда она появится, смотри http://www.amazon.com/exec/obidos/ASIN/1565926285/davesill.
1.10.4.2. Running qmail
Ричард Блум написал
Для получения дополнительной информации или заказа книги, смотри
http://www.amazon.com/exec/obidos/ASIN/0672319454/davesill.
1.10.5. Архив рассылок
Электронная почтовая рассылка посвященная qmail, поддерживаемая Дэном Бернстеином, является ценным источником информации. В сети сохраняется по адресу:
http://www.ornl.gov/its/archives/mailing-lists/qmail/.
Посковик по архиву:
http://www-archive.ornl.gov:8000/.
Другие веб-архивы:
http://www.egroups.com/list/djb-qmail/?refstop=1љ
и
http://msgs.securepoint.com/qmail/.
Большинство ответов на вопросы о љqmail могут быть найдены в архиве.
1.10.6. Другие Web-сайты
- http://cr.yp.to/qmail.html: официальная домашняя страница qmail.
- http://www.qmail.org/: неофициальная домашняя страница qmail.љ Содержит множество инофрмации о добавлениях и плагинах, и ссылки на другие web-сайты.
- http://www.flounder.net/qmail/qmail-howto.html: Adam McKenna's HOWTO.
1.11. Поддержка
1.11.1. Списки рассылки
Следующие списки проживают на list.cr.yp.to. Чтобы предотвратить <урожай> от спаммеров, я избегу использования полных правильных адресов и ссылок mailto.
Списки управляются љezmlm, который использует различные адреса, для исполнения различных функций:
- listname@list.cr.yp.to: адрес передачи на рассмотрение. Сообщение посланное сюда дойдет всем членам рассылки. Не посылайте сюда запросы типа подписка/отписка: они не будут выполнены и только раздражают подписчиков.
- listname-help@list.cr.yp.to: "help" - адрес. Возвращает список команд и общую информацию об использовании.
- listname-subscribe: пошлите пустое письмо сюда для подписки.
- listname-unsubscribe: пошлите пустое письмо сюда для отписки.
- Чтобы определить подписной/отписной адрес, скажем joe@example.com, пошлите сообщение:
- listname-subscribe-joe=example.com@list.cr.yp.to.
1.11.1.1. qmail
Основная рассылка по qmail. Обсуждения и вопросы/ответы по всему связанному с qmail, кроме serialmail. Читайте FAQ и ищите в архиве прежде чем послать вопрос. Когда задаете вопрос постарайтесь дать некоторые детали чтобы вам смогли ответить:
Что вы делали? Ваша конфигурация? Включите qmail-showctl выход, если вы не уверены, что является важным. Какие действия вы принимали?
Что ожидали? Что получилось? Не думайте, что читатели догадаются.
Что случилось? Опишите фактический результат. Включите вырезки из лог файла с заголовками.
1.11.1.2. qmailannounce
Рассылка посвященная анонсамљ qmail.љ Новые выпуски объявляются здесь. Только для чтения.
1.11.1.3. serialmail
Для обсуждения пакета serialmail.
1.11.1.4. ezmlm
Для обсуждения менеджера рассылок ezmlm.
1.11.2. Консультанты
Смотри http://www.qmail.org/top.html#paidsup - список служб обеспечивающих коммерческую поддержку.
1.11.3. База знаний FAQTS
База qmail-связанных вопросов и ответов доступна по адресу http://qmail.faqts.com/. Если вы имеете вопрос, не рассматриваемый в FAQ, попытайтесь поискать в этой базе. Обычно хорошо отвечает на вопросы: <как сделать>.
2. Установка
Этот раздел описывает установку qmail. Если Вы опытный системный администратор, Вы можете установить qmail следуя инструкциям из файлов INSTALL прилагаемыми в дистрибутиве. Инструкции INSTALL кратки.љ Они более сложны, чем инструкции из этого документа, и они предполагают, что читатель опытный системный и почтовый администратор.
Примечание: Если вы решились использовать следующие инструкции, вы должны прочесть весь раздел, чтобы ознакомиться с общим процессом.
2.1. Установка исходников
2.1.1. Откомпилированный код против исходных кодов
Из-за ограничения лицензии qmail относительно предварительно откомпилированных пакетов, qmail обычно устанавливается из исходников. Если Вы не знакомы с различием между исходными кодами и откомпилированными, то представьте что заказываете пиццу с доставкой на дом. Прибывшая <откомпилированная> пицца готова к еде. Пицца в виде "исходный код" приходит как комплект, содержащий муку, дрожжи, сыр, соус, все что кладут сверху и инструкции для выпечки пиццы самим. Установка из исходных кодов требует немного большей работы, но если осторожно следовать инструкциям, то результат такой же, или даже лучше. Самодельная пицца будет свежее, вы можете положить все по вашему вкусу, и вы будете знать больше о ней и как она <работает>.
2.1.2. Архив Tar против ОС-специфичных пакетов
Некоторые операционные системы обеспечивают механизм для автоматизации инсталляций исходного кода. Возвращаясь к аналогии с пиццой - они делают возможным упаковать ингредиенты и руководства таким способом, что Вы можете только нажать на кнопку и испечь пиццу сами.
Звучит заманчиво, не правда ли?
На практике, это не такая хорошая идея. Сборка этих пакетов довольно трудна, и они не смогут все продумать. Эта программа, как и любые другие, может иметь ошибки. Но даже если она и не имеет ошибок, то за счет удобства, которое она обеспечивает, вы потеряете преимущества самоиспеченной пиццы: способность корректировать верхнюю начинку по вашему вкусу и знания того, какљ пицца была сделана и как она <работает>.
Если qmail был бы пиццой, то подход компиляции мог бы умереть. Но этого не будет: это довольно сложная система, так что установщик нуждается в хорошем понимании для поддержания ее в рабочем состоянии.
Самоустановка qmail более легка, чем версия установленная пользователем, но установленная пользователем версия более легка для конфигурирования и поиска неисправностей. Вы установите љqmail один раз, но вероятно будет несколько удобных случаев для его реконфигурации, или выяснения, почему почта идет не по тому пути, как вы ожидали.
По этой причине, я советую устанавливать qmail с нуля, используя исходные коды tarball, а не "RPM" или другой "самоустанавливающийся" пакет.
2.2. Подготовка
Перед инсталляцией qmail в систему, особенно если это ваша первая установка qmail, есть несколько вещей, о которых стоит подумать.
- Если возможно, установите qmail на другой, практикуемой машине. Это даст Вам шанс, что при ошибке вы не потеряете важную почту или прервете почтовую услугу вашим пользователям.
- Если у вас нет запасной машины, и ваша система уже манипулирует почтой используя sendmail, smail, или другой MTA, вы можете установить и протестировать большинство частей qmail без вмешательства в существующую службу.
- Когда мигрируете с другого МТА на qmail -- даже если вы имеете некоторый опыт -- было бы неплохо разработать план.
2.3. Системные требования
qmail устанавливается и работает на большинстве UNIX и UNIX-подобных системах, но есть несколько требований:
- Около 10 мегабайтов свободного пространства вљ той области, в которой будет вестись компиляция. После компиляции вы можете освободить почти 4 мегабайта, удалив объектные файлы.
- Законченную, функционирующую систему разработки C, включая компилятор, файлы описаний системных функций и библиотеки. Во время компиляции вам покажут, имеете ли вы все необходимые части.
- Несколько мегабайт для исполняемых файлов, документации и конфигурационных файлов.
- Достаточное количество дискового пространства для очереди. Маленькие однопользовательские системы нуждаются в паре мегабайт, большим серверам могут потребоваться пара гигабайт.
- Совместимая операционная система. Большинство распространенных UNIX подходят. О совместимых версиях смотри README в каталоге исходников.
- Крайне рекомендуется иметь доступ к DNS серверу. Без оного, qmail сможет посылать сообщения только на те удаленные системы, которые указаны в конфигурационном файле smtproutes.
- Связность узлов сети. qmail был разработан для систем с быстрым соединением, так что вы вероятно не захотите пробовать использовать его для сервера рассылок на модемной связи 28.8kб/с. Пакет serialmail разработан для совместимости с системами с медленным соединением. Для большей информации смотри разделљ в приложении.
2.4. Получение исходников
итак, у вас есть система удовлетворяющая требованиям для установкиљ qmail. Первый шаг - загрузить исходники qmail и некоторых других дополнений, вероятно ucspi-tcp и daemontools:
qmail, ftp://cr.yp.to/software/qmail-1.03.tar.gz
ucspi-tcp, ftp://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
daemontools, ftp://cr.yp.to/daemontools/daemontools-0.70.tar.gz
Получите эти файлы используя ваш веб-браузер или ftp клиент.
Примечание:Если эти линки не срабатывают, то вероятно пакет был обновлен. В этом случае, Вы должны зайти на http://cr.yp.to/software.html и следуя за ссылками загрузить текущую версию. Возможно, что модернизированные версии не совместимы со следующими инструкциями, так что не забудьте прочесть примечания в разделе "Upgrading fromљ previous versions...".
2.5. Компиляция
2.5.1. Проверка компилятора
Сперва вы должны удостовериться, что имеете необходимые инструментальные средства, для компиляции программы. Как вы это определите зависит от вашего UNIX.
Самый легкий способ, хотя не гарантированный, попытайтесь:
Примечание:если любой из этих тестов проходит,љ то можно перейти в следующий подраздел.
- В командной линии введите cc и нажмите Enter:
$ cc cc: No input files specified $
- Если Вы получите подобный ответ, то у вас имеется C компилятор. Если нет,
то это не означает, что у вас он не установлен. Возможно не указаны пути
поиска, а может его действительно нет. Попробуйте так:
/usr/bin/cc /usr/bin/gcc /usr/local/bin/cc /usr/local/bin/gcc /usr/ccs/bin/cc
- Если и это не работает попробуйте что-нибудь платформо-зависимое. На
консоли попробуйте ввести что-нибудь из этого, зависит от используемой ОС:
Red Hat Linux: rpm -qa | grep gccљ илиљ rpm -qa | grep egcs
FreeBSD: включает GCCљ по умолчанию - Если вы не нашли компилятор, то установите его. Свяжитесь с вашим поставщиком ОС или с другим поддерживающим ОС каналом.
В этом разделе мы пройдем фактические шаги компилирования qmail. Путь вырезал-и-вставил будет удобен, но не обязателен.
2.5.2. Распаковка дистрибутива
Если вы здесь, то у вас уже есть работающий компилятор C и вышеуказанные архивы. Скопируйте или переместите архив в ту директорию, где вы собираетесь работать. /usr/local/srcљ - хороший выбор, и в этом случае можете использовать /usr/local/src/qmail для всех трех пакетов.
љљљ mkdir -p /usr/local/src/qmail љљљ mv *.tar.gz /usr/local/src/qmail
У вас есть все три пакета в /usr/local/src/qmail, так что теперь Вы можете распаковать их. Наверняка вы захотите стать суперпользователем (root), если не уже. На консоли наберите:
љљљ su љљљ cd /usr/local/src/qmail љљљ gunzip qmail-1.03.tar.gz љљљ tar xvf qmail-1.03.tar љљљ gunzip ucspi-tcp-0.88.tar.gz љљљ tar xvf ucspi-tcp-0.88.tar љљљ gunzip daemontools-0.70.tar.gz љљљ tar xvf daemontools-0.70.tar љљљ rm *.tarљљљ # необязательно, если достаточно дискового пространства
Должны появиться подкаталоги -- qmail-1.03, ucspi-tcp-0.88, и daemontools-0.70. Переходим в каталог qmail-1.03 и приступим:
љљљ cd qmail-1.03
2.5.3. Создание каталогов
Поскольку программа установки qmail создаст подкаталоги как нужно, вам нужно создать только "домашний" каталог qmail.
љљљ mkdir /var/qmail
Идем в следующий подраздел.
Примечание:Если Вы хотите чтобы некоторые или все файлы qmail, постоянно находились в другом месте отличном от /var,љ то можно это сделать, создав символические ссылки в каталоге /var/qmail, указывающие на другие местоположения.
Например, более распределенное размещение может быть достигнуто выполняя:
љљљ mkdir /var/qmail љљљ ln -s /usr/man /var/qmail/man љљљ mkdir /etc/qmail љљљ ln -s /etc/qmail /var/qmail/control љљљ ln -s /usr/sbin /var/qmail/bin
2.5.4. Создание пользователей и групп
Легчайший путь создания необходимых пользователей и групп - создание небольшого файла сценария (Прим. пер.: далее по тексту скрипт), чтобы он сделал это за вас. В директории с исходниками найдите файл INSTALL.ids. Он содержит командные строки для многих платформ, так что копируем файл в файл с другим именем и редактируем его.
љљљ cp INSTALL.idsљ IDS
Затем, используя ваш любимый редактор удаляем всё за исключением того, что нужно. Например, вот как должен выглядеть IDS для FreeBSD после редактирования:
љљљ pw groupadd nofiles љљљ pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent љљљ pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent> љљљ pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent љљљ pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent љљљ pw groupadd qmail љљљ pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent љљљ pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent љљљ pw useradd qmails -g qmail -d /var/qmail -s /nonexistent
Затем для того, чтобы запустить его, или используйте chmod, чтобы сделать его исполняемым, или запустите его с помощью sh:
Первый метод:
љљљ chmod 700 IDS љљљ ./IDS
Второй метод:
љљљ /bin/sh IDS
Когда скрипт выполнит свою работу, все ваши пользователи и группы будут созданы, и вы можете идти в следующий подраздел.
Но что делать если ваша система не указана в INSTALL.ids? Вы должны создать их вручную. Запустите ваш любимый редактор и отредактируйте /etc/group. Вам необходимо добавить следующие две строки в конец файла:
љљљ qmail:*:2107: љљљ nofiles:*:2108:
Примечание: Убедитесь что 2107 и 2108 еще не использованы.
Затем, используя vipw (большинство систем имеют его, можете использовать ваш редактор снова, но на этот раз на /etc/passwd) добавьте эти строки в конец файла:
љљљ alias:*:7790:2108::/var/qmail/alias:/bin/true љљљ qmaild:*:7791:2108::/var/qmail:/bin/true љљљ qmaill:*:7792:2108::/var/qmail:/bin/true љљљ qmailp:*:7793:2108::/var/qmail:/bin/true љљљ qmailq:*:7794:2107::/var/qmail:/bin/true љљљ qmailr:*:7795:2107::/var/qmail:/bin/true љљљ qmails:*:7796:2107::/var/qmail:/bin/true
Примечание: Убедитесь, что 7790-7796 уже не использованы и что 2107 и 2108 соответствуют идентификаторам групп указанных выше.
Вам в принципе не обязательно добавлять эти строки именно в конец файла, просто так легче объяснить.
Теперь вы готовы к переходу в следующий подраздел.
2.5.5. Построение
Теперь вы готовы к построению qmail.
В разделе 2.5.1, вы определили положение С компилятора. Если он называется не cc, или каталог, где он находится не указан в вашей переменной PATH, вы будете должны подредактировать љconf-cc и conf-ld. Укажите, что ваш компилятор gсс и путь до него. Просто отредактируйте љconf-cc и conf-ld и замените "cc" на "gcc".
Теперь наберите следующее:
љљљ make setup check
После завершения компиляции, вам необходимо конфигурировать вашу инсталляцию почты. Пара обеспечиваемых скрипта сделают эту работу намного более легкой.
Если ваш DNS сконфигурирован правильно, то этот скрипт сделает все что нужно:
љљљ ./config
Если, по некоторой причине, config не может найти ваше имя машины в DNS,љ то вы должны запустить скрипт config-fast:
љљљ ./config-fast полное.имя.машины
Например,љ если ваш домен example.com и имя вашего хоста dolphin, то ваша строка config-fast должна выглядеть так:
љљљ ./config-fast dolphin.example.com
qmail теперь установлен на вашей системе и готов к запуску! Следующий раздел проведет вас через шаги запуска и испытания qmail.
2.6. Установка ucspi-tcp
Ранее вы распаковали qmail, ucpsi-tcp и daemontools архивы. В нашем примере мы распаковали их в каталоге /usr/local/src/qmail. Перейдем в каталог ucpsi-tcp:
љљљ cd /usr/local/src/qmail/ucspi-tcp-0.88
Если вы модифицировали conf-ccљи conf-ld как указано в разделе 2.5.5, то вам придется сделать изменения и в этом каталоге.
Затем:
љљљ make љљљ make setup check
Теперьљ ucpsi-tcp установлен.
2.7. Установка daemontools
Перейдем в каталог daemontools:
љљљ cd /usr/local/src/qmail/daemontools-0.70
Опять же, если нужно модифицируем conf-ccљ и conf-ld как и ранее.
Затем:
љљљ make љљљ make setup check
Проверить компиляцию можно следуя инструкциям http://cr.yp.to/daemontools/install.html.
2.8. Запуск qmail
2.8.1. /var/qmail/rc
Каталог /var/qmail/boot содержит примеры скриптов для запуска qmail для различных конфигураций: /var/spool/mail для $HOME/Mailbox, использование procmail или dot-forward и их различные комбинации. Не стесняйтесь исследовать их, но для нашей установки, мы будем использовать следующий:
#!/bin/sh # Using stdout for logging # Using control/defaultdelivery from qmail-local to deliver messages by default exec env - PATH="/var/qmail/bin:$PATH" \ qmail-start "`cat /var/qmail/control/defaultdelivery`"
Используйте ваш редактор, чтобы создать вышеуказанный /var/qmail/rc, затем выполните эти команды:
љљљ chmod 755 /var/qmail/rc љљљ mkdir /var/log/qmail
Здесь вы должны решить заданный по умолчанию режим доставки для сообщений, которые не доставлены .qmail файлом. Следующая таблица показывает некоторые обычные выборы.
Формат почтового ящика |
Имя |
Расположение |
defaultdelivery |
Комментарии |
mbox |
Mailbox |
$HOME |
./Mailbox |
обычный, работает с большинством клиентских программ |
maildir |
Maildir |
$HOME |
./Maildir/ |
более надежен, меньшими клиентскими программами поддерживаются |
mbox |
username |
/var/spool/mail |
См. INSTALL.vsm |
традиционный формат почтового ящика под UNIX |
Подробнее смотри в INSTALL.mbox, INSTALL.maildir љи INSTALL.vsm.
Для того, чтобы выбрать тип почтового ящика по умолчанию просто введите значение defaultdelivery из таблицы в /var/qmail/control/defaultdelivery. Например, выбрав стандартный ящик, сделайте:
љљљ echo ./Mailbox >/var/qmail/control/defaultdelivery
Примечание: defaultdelivery не стандартный файл управления qmail. Он используется вышеуказанным файлом /var/qmail/rc.љљљ
2.8.2. Системные файлы запуска
2.8.2.1. Скрипт qmail
Если Вы должны вручную выполнить сценарий /var/qmail/rc, qmail должен быть частично запущен. Но мы хотим, чтобы qmail автоматически запускался при каждой загрузке системы и мы хотим, чтобы при остановке системы он аккуратно отключался.
Это выполняется скриптом запуска/выключения:
#!/bin/sh PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin export PATH case "$1" in start) echo -n "Starting qmail: svscan" cd /var/qmail/supervise env - PATH="$PATH" svscan & echo $! > /var/run/svscan.pid echo "." ;; stop) echo -n "Stopping qmail: svscan" kill `cat /var/run/svscan.pid` echo -n " qmail" svc -dx /var/qmail/supervise/* echo -n " logging" svc -dx /var/qmail/supervise/*/log echo "." ;; stat) cd /var/qmail/supervise svstat * */log ;; doqueue|alrm) echo "Sending ALRM signal to qmail-send." svc -a /var/qmail/supervise/qmail-send ;; queue) qmail-qstat qmail-qread ;; reload|hup) echo "Sending HUP signal to qmail-send." svc -h /var/qmail/supervise/qmail-send ;; pause) echo "Pausing qmail-send" svc -p /var/qmail/supervise/qmail-send echo "Pausing qmail-smtpd" svc -p /var/qmail/supervise/qmail-smtpd ;; cont) echo "Continuing qmail-send" svc -c /var/qmail/supervise/qmail-send echo "Continuing qmail-smtpd" svc -c /var/qmail/supervise/qmail-smtpd ;; restart) echo "Restarting qmail:" echo "* Stopping qmail-smtpd." svc -d /var/qmail/supervise/qmail-smtpd echo "* Sending qmail-send SIGTERM and restarting." svc -t /var/qmail/supervise/qmail-send echo "* Restarting qmail-smtpd." svc -u /var/qmail/supervise/qmail-smtpd ;; cdb) tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp chmod 644 /etc/tcp.smtp* echo "Reloaded /etc/tcp.smtp." ;; help) cat <<HELP stop -- stops mail service (smtp connections refused, nothing goes out) start -- starts mail service (smtp connection accepted, mail can go out) pause -- temporarily stops mail service (connections accepted, nothing leaves) cont -- continues paused mail service stat -- displays status of mail service cdb -- rebuild the tcpserver cdb file for smtp restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it doqueue -- sends qmail-send ALRM, scheduling queued messages for delivery reload -- sends qmail-send HUP, rereading locals and virtualdomains queue -- shows status of queue alrm -- same as doqueue hup -- same as reload HELP ;; *) echo "Usage: $0 {start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue|help}" exit 1 ;; esac exit 0
Этот скрипт можно получить здесь http://Web.InfoAve.net/~dsill/qmail-script-dt61.exe. Трюк ".exe" заставляет веб-сервер думать, что скрипт исполняемый, и защитит его от преобразования в DOS формат.
Примечание: Если Вы находите, что qmail вылетает вскоре после перезагрузки системы, то Вы можете поставить перед командой env в секции "start" скрипта команду nohup
љљљ nohup env - PATH="$PATH" svscan &
Создайте скрипт используя редактор или загрузите его вашим браузером, затем установите его в ваш системный init.d директорий, который должен размещаться где-то в одном из следующих каталогов:
/etc/init.d /sbin/init.d /etc/rc.d/init.d
Назовите скрипт qmail. Вы должны связать этот скрипт с парой "rc" каталогов. Эти директории называются rcN.d, где N - runlevel, к которому они обращаются. Сложность дерева каталогов запуска не рассматривается в этом документе, и если эти упрощенные команды вам не подходят, обратитесь к вашей системной документации. Ваши rc каталоги будут вероятно в одном из:
/etc /sbin /etc/rc.d
Чтобы создать ссылки, выполните следующие команды, заменив RCDIR на местоположение rc каталогов вашей системы:
љљљ ln -s ../init.d/qmail RCDIR/rc0.d/K30qmail љљљ ln -s ../init.d/qmail RCDIR/rc1.d/K30qmail љљљ ln -s ../init.d/qmail RCDIR/rc2.d/S80qmail љљљ ln -s ../init.d/qmail RCDIR/rc3.d/S80qmail љљљ ln -s ../init.d/qmail RCDIR/rc4.d/S80qmail љљљ ln -s ../init.d/qmail RCDIR/rc5.d/S80qmail љљљ ln -s ../init.d/qmail RCDIR/rc6.d/K30qmail
Примечание: числа на предыдущем шаге сильно зависят от системы, но отчасти гибкие. Если Sendmail установлен выполните команду "find RCDIR -name "*sendmail" -print" -- вам перечислят числа, которые должны работать на вашей системе.
Сделайте ваш скрипт запуска исполняемым и создайте ссылку в каталог описанный в ваших путях:
љљљ #укажите правильную позицию вашего rc каталога в следующих двух строках
љљљ chmod 755 /etc/init.d/qmail љљљ ln -s /etc/init.d/qmail /usr/local/sbin
2.8.2.2. Скрипт supervise
Сейчас создайте supervise каталоги для служб qmail:
љљљ mkdir -p /var/qmail/supervise/qmail-send/log љљљ mkdir -p /var/qmail/supervise/qmail-smtpd/log љљљ chmod +t /var/qmail/supervise/qmail-send љљљ chmod +t /var/qmail/supervise/qmail-smtpd
Создадим файл /var/qmail/supervise/qmail-send/run:
љљљ #!/bin/sh љљљ exec /var/qmail/rc
Создадим файл /var/qmail/supervise/qmail-send/log/run:
#!/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/qmail-smtpd 2>&1
Примечание:Файл concurrencyincoming не стандартный файл управления qmail'ом. Он из скрипта ниже.
Примечание:Под Solaris, обычная id программа не будет правильно работать в этом сценарии. Вместо id, используйте /usr/xpg4/bin/id, например:
љљљ QMAILDUID=`/usr/xpg4/bin/id -u qmaild` љљљ NOFILESGID=`/usr/xpg4/bin/id -g qmaild`
Примечание:предел памяти указанный в команде softlimit может придется поднять в зависимости от вашей операционной системы и аппаратной платформы. Если при попытке соединиться с портом 25 возникает ошибка, или удаленные системы не в состоянии послать вам почту, попробуйте увеличить предел памяти до 3000000 или 4000000.
Создадим управляющий файл concurrencyincoming:
љљљ echo 20 > /var/qmail/control/concurrencyincoming љљљ chmod 644 /var/qmail/control/concurrencyincoming
Создадим файл /var/qmail/supervise/qmail-smtpd/log/run:
љљљ #!/bin/sh љљљ exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd
Сделаем run файлы исполняемыми:
љљљ chmod 755 /var/qmail/supervise/qmail-send/run љљљ chmod 755 /var/qmail/supervise/qmail-send/log/run љљљ chmod 755 / var/qmail/supervise/qmail-smtpd/run љљљ chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
Затем создадим log директории:
љљљ mkdir -p /var/log/qmail/smtpd љљљ chown qmaill /var/log/qmail /var/log/qmail/smtpd
2.8.2.3. Контроль доступа для SMTP
Позволим локальному хосту класть почту посредством SMTP:
љљљ echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp љљљ /usr/local/sbin/qmail cdb
2.8.3. Остановка и вывод из строя инсталлированного MTA
Хотя возможно управлять и qmail и вашим существующим MTA (вероятно Sendmail) одновременно, я не рекомендую это, если не знаете, что вы делаете. И, откровенно, если Вы читаете это, то вероятно не знаете. :-)
Если ваш существующий MTA - Sendmail, то вы должны остановить его, запустив init.d скрипт с аргументом "stop". Например, один из них должен сработать:
љљљ /etc/init.d/sendmail stop љљљ /sbin/init.d/sendmail stop љљљ /etc/rc.d/init.d/sendmail stop
Если Вы не можете найти init.d/sendmail скрипт,љ то вы можете определить идентификатор процесса (PID) sendmail'а выполнив команду "ps-ef|grep sendmail" или "ps waux|grep sendmail" и остановить его, используя:
љљљ kill PID-sendmail'а
Если ваш МТА не Sendmail, проверьте вашу документацию для правильной процедуры отключения.
Вы должны также рассмотреть полное удаление старого MTA из системы. По крайней мере, отключите init.d скрипт, чтобы он не запускался снова, когда система перезагрузится.
Для Red Hat Linux, можно так удалить Sendmail:
љљљ rpm -e --nodeps sendmail
Наконец, замените любой имеющийся /usr/lib/sendmail версией qmail:
љљљ mv /usr/lib/sendmail /usr/lib/sendmail.oldљљљљљљљљљљљљљљљљљ # Игнорируйте ошибки љљљ mv /usr/sbin/sendmail /usr/sbin/sendmail.old # Игнорируйте ошибки љљљ chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.oldљ # Игнорируйте ошибки љљљ ln -s /var/qmail/bin/sendmail /usr/lib љљљ ln -s /var/qmail/bin/sendmail /usr/sbin
Мы близки к запуску qmail. Последний шаг - создание пары системных псевдонимов.
2.8.4. Создание системных псевдонимов
Есть три системных псевдонима, которые должны создаваться во всех инсталляциях qmail:
Alias |
Назначение |
postmaster |
Требуется документом RFC 821, указывает на почтового администратораљ (на вас) |
mailer-daemon |
Де-факто стандартный получатель для некоторых рикошетов |
root |
Переадресация почты от привилегированной учетной записи до системного администратора |
Для созданияљ этих псевдонимов определитесь, куда вы хотите направлять для каждого из них (локальный пользователь или удаленный адрес), создайте и заполните соответствующие .qmail файлы. Пример: скажем пользователь dave является и системным, и почтовым администратором:
љљљ echo dave > /var/qmail/alias/.qmail-root љљљ echo dave > /var/qmail/alias/.qmail-postmaster љљљ ln -s .qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon љљљ chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster
Для большей информации см. документ INSTALL.alias.
2.8.5. Запуск qmail
Под конец, вы можете запустить qmail:
љљљ /usr/local/sbin/qmail start
2.9. Тестирование установки
qmail должен быть запущен. Следуйте инструкциям из TEST.deliver и TEST.receive, для проверки правильности работы. Обратите внимание, что при использовании этих инструкций логи будут выполняться multilog'ом, а не splogger'ом.
3. Конфигурация
Вы установили qmail одним из двух способов: или из исходников, или из самоустанавливающихся пакетов. Этот раздел содержит информацию для почтового администратора или системного администратора о конфигурировании qmail, чтобы заставить его работать так, как они хотят.
3.1. Файлы конфигурации
Все конфигурационные файлы qmail за исключением .qmail файлов в ~alias расположены в каталоге /var/qmail/control. Man-страница qmail-control содержит подобную таблицу:
Файл |
Значение по умолчанию |
Используется |
Назначение |
none |
qmail-smtpd |
Черный список адресов From | |
MAILER-DAEMON |
qmail-send |
пользователь для отвергнутых сообщений | |
me |
qmail-send |
хост для отвергнутых сообщений | |
10 |
qmail-send |
max число одновременно локально доставляемых сообщений | |
20 |
qmail-send |
Максимальное число одновременно удаленно доставляемых сообщений | |
me |
qmail-inject |
Имя домена по умолчанию | |
me |
qmail-inject |
Имя хоста по умолчанию | |
0 |
qmail-smtpd |
Максимальное кол-во символов в сообщении (0=no limit) | |
me |
qmail-send |
Хост для получения повторных рикошетов | |
postmaster |
qmail-send |
Пользователь для получения повторных рикошетов | |
me |
qmail-send |
Подразумеваемый домен для адресов без "@" | |
me |
qmail-remote |
Имя хоста используемое в SMTP команде HELO | |
me |
qmail-inject |
Имя хоста для Message-ID | |
me |
qmail-smtpd |
Подставляемое имя для локальных IP адресов | |
me |
qmail-send |
список доменов для локальной доставки | |
FQDN of system |
various |
Значение по умолчанию для многих управляющих файлов | |
none |
qmail-smtpd |
дополнительная база rcpthosts | |
none |
qmail-send |
домены для которых возможен в адресах знак % | |
me |
qmail-inject |
имя домена для имен хостов, оканчивающихся + | |
none |
qmail-qmqpc |
IPљ адреса QMQP серверов | |
604800 |
qmail-send |
время в секундах в течении которого сообщение может оставаться в очереди | |
none |
qmail-smtpd |
Домены для которых почта разрешена | |
me |
qmail-smtpd |
Приветственное сообщениељ SMTP | |
none |
qmail-remote |
Искусственные SMTP маршрутизации | |
љ60 |
qmail-remote |
Как долго (в секундах) ожидать SMTP соединение | |
1200 |
qmail-remote |
Как долго (в секундах) ожидать удаленный сервер | |
1200 |
qmail-smtpd |
Как долго (в секундах) ожидать SMTP клиента | |
virtualdomains |
none |
qmail-send |
список виртуальных пользователей или доменов |
Более подробно о конкретном управляющем файле, смотри man-страницу для модуля указанного в колонке "Используется".
3.2. Ретрансляция
3.2.1. Введение
Что такое ретрансляция? Это когда МТА принимает сообщение посредством SMTP, которое, похоже, либо имеет адрес, не совпадающий с локальным, либо был послан не локальным отправителем.
В дни предшествующие спаму, большинство MTA были сконфигурированы как открытые ретрансляторы: разнородные сервера принимали почту от любого, для любого.
Большинство MTA теперь конфигурируются либо с полностью отключенной ретрансляцией, либо для использования их (MTA) как транслятор только надежным пользователям или системам.
Chris Johnson написал отличный документ по этой теме для пользователей qmail. Рекомендую посетить http://www.palomine.net/qmail/relaying.html.
3.2.2. Блокирование ретрансляции
Если вы следовали официальным инструкциям по установке qmail, ретрансляция по умолчанию будет выключена. Это достигается заполнением файла /var/qmail/control/rcpthosts соответствующими доменными именами, перечисленными в locals и virtualdomains (местные хосты). Название файла rcpthosts произошло от команды RCPT (recipient) протокола SMTP. В SMTP сеансе RCPT используется, чтобы определить адреса получателей сообщения. rcpthosts - перечисляет допустимые имена хостов, которые могут появляться в адресе RCPT.
3.2.3. Разрешение выборочной ретрансляции
Большинство однопользовательских и маленьких серверов для рабочих групп могут отключать ретрансляцию полностью, но если вы должны поддерживать распределенный коллектив пользователей, то вы нуждаетесь в способе позволяющим вашим пользователям, и только вашим пользователям, использовать вашу систему как ретранслятор. Это достигается использованием tcpserver с установленной переменной RELAYCLIENT, которая говорит qmail-smtpd не принимать во внимание файл rcpthosts.
Если вы следовали за установочными инструкциями из этого документа, выборочная ретрансляция будет включена по умолчанию. Для того чтобы дать клиенту ретрансляционный доступ, добавьте подобную строчку в /etc/tcp.smtp:
љљљ IP адрес клиента:allow,RELAYCLIENT=""
Затем перестроим базу данных доступа SMTP:
љљљ tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp љљљ chmod 644 /etc/tcp.smtp*
Если вы следовали официальным инструкциям, то отличный документ, написанный
Chris Johnson'ом, поможет вам сконфигурировать qmail для выборочной
ретрансляции. Смотри
http://www.palomine.net/qmail/selectiverelay.html.
3.3. Множественные имена хоста
Если ваша система известна более чем одним именем, например, все адреса формы user@host1.example.com могут также быть написаны как user@example.com или как user@mail.example.com, то тогда вам нужно сообщить qmail по каким адресам он должен доставлять сообщения локально, и какие сообщения он должен принимать от удаленных систем.
Для того чтобы сделать это, просто добавьте все имена в два управляющих файла:
- rcpthosts, который сообщит qmail-smtpd принимать почту для этих хостов, и
- locals, который сообщит qmail-send чтобы на эти адреса была локальная доставка.
3.4. Виртуальные домены
Виртуальные области подобны многочисленным именам, обсужденных в предыдущем разделе, но есть некоторые важные различия. Для начала, если example.net хозяин виртуального домена virtual.example.com; как правило не верно, чтобы сообщения посланные на joe@example.net попадут в том же почтовый ящик как и сообщения посланные на joe@virtual.example.com. Пространство имен для каждого виртуального доме на отлично.
В qmail виртуальные домены конфигурируются в файле virtualdomains, который состоит из одной или более отдельных записей формы:
љљљ user@domain:prepend
qmail конвертирует user@domain в prepend-user@domain и обработает результат так, как если бы domain был локальным. Часть user@ необязательная. Если она опущена, то запись обработает все @domain адреса.
Возвращаясь к сценарию из примера выше, если почтовый администратор example.net захотел создать виртуальный домен, virtual.example.com, при административном управлении пользователем john, следующая строчка в virtualdomains должна выглядеть так:
љљљ virtual.example.com:john
Входящее сообщение на joe@virtual.example.com перезапишется как john-joe@virtual.example.com и доставится локально. Смотри раздел .qmailљ и подраздел расширенные адреса для получения дополнительной информации о том как Джон может управлять принадлежащий ему виртуальной областью.
Как и многочисленных именах, все виртуальные области должны указываться в rcpthosts, так qmail-smtpd узнает, что нужно принять сообщения адресованные им. Тем не менее, в отличие от многочисленных имен, виртуальные области не должны добавляться в файл locals.
Примечание: записиљ mail exchanger (MX) в DNS должны быть установлены так, чтобы направлять сообщения для виртуальных доменов в соответствующийљ почтовый сервер. Это работа для DNS-администратора и выходит за пределы этого руководства.
3.5. Псевдонимы
qmail имеет стандартный механизм использования псевдонимов (Aliases) - естественное развитие qmail'ом локального механизма доставки.
qmail-local старается доставить сообщение адресованное localpart@host локальному пользователю localpart. Если никакого сопоставления пользователю не найдено, сообщение доставляется пользователю alias - псевдопользователь на всех qmail-системах, чей домашний каталог /var/qmail/alias.
Например: вы хотите создать псевдоним info@example.com, который пересылает сообщения пользователю tom. На example .comљ сделайте с правами root:
љљљ echo tom > /var/qmail/alias/.qmail-info
Секция .qmail и подраздел расширенные адреса описывают, как создать .qmail файлы, которые определяют, какие псевдонимы существуют, и что делать с сообщениями, посланными им.
Обратите внимание: псевдоним никогда не отменяет доставку к имеющему силу пользователю. Например, если существует пользователь rachel, ~alias/.qmail-rachel не будет использоваться.
Пакет fastforward обеспечивает альтернативный механизм псевдонимов, который размещает многочисленные псевдонимы в единственном файле, совместимый с базой псевдонимов Sendmail'а.
Следующий подраздел секция, qmail-users, описывает другой механизм, который может использоваться для осуществления псевдонимов.
3.6. qmail-users
qmail-users - система для назначения адресов пользователям. Ряд конфигурационных файлов постоянно находится в каталоге /var/qmail/users. Файл assign - таблица назначений. Имеются два вида назначений: простой и шаблонный.
Примечание: assign содержит ряд назначений, одно на строчку, и заканчивается строкой содержащей одну точку (.). Если создаете файл assign вручную, не забудьте про последнюю строку.
3.6.1. Простое присвоение
Простое присвоение выглядит так:
=address:user:uid:gid:directory:dash:extension:
Что это значит? Что сообщения, полученные для љaddress пройдут для пользователя љuser, с указаннымљ uid и gid, и файл directory/.qmaildashextension определит, как сообщения должны быть доставлены.
Пример от переводчика:
=joe.shmoe:joe:503:78:/home/joe:::
скажет, что почта для joe.shmoe
должна быть направлена пользователю joe, с uid 503 и gid 78 как
определено в /home/joe/.qmail
3.6.2. Шаблонное присвоение
Шаблонное присвоение выглядит так:
+prefix:user:uid:gid:directory:dash:prepend:
Что это значит? Что сообщения, полученные для адресов формы prefixrest пройдут для поль зователя user,љ с указанным uid и gid, и файл directory/.qmaildashprependrest определит, как сообщения должны быть доставлены.
Пример от переводчика:
+joe-:joe:507:100:/home/joe:-::
скажет,
что почта для joe-shmoe должна быть направлена пользователю joe, с uid 507
и gid 100 как определено в /home/joe/.qmail-shmoe
3.6.3. qmail-user программы
qmail-user имеет две программы помощницы: qmail-newu иљ qmail-pw2u.
qmail-newu обрабатывает файл assign и генерирует файл постоянной базы данных (constant databaseљ - CDB), называемый cdb в /var/qmail/users. CDB имеет двоичный формат, к которому qmail-lspawn может обращаться быстро, дажељ когда имеются тысячи назначений.
qmail-pw2u преобразовывает системную базу данных пользователей -- /etc/passwd, в ряд назначений, подходящих для assign. qmail-pw2u использует наборљ файлов, чтобы изменить правила трансляции.
- include: позволенные пользователи
- exclude: исключенные пользователи
- mailnames: альтернативные "почтовые имена" для пользователей
- subusers: дополнительные адреса,љ обрабатываемые пользователем, с необязательным .qmail расширением
- append: разные назначения
Примечание: Если вы используете qmail-pw2u, не забудьте перезапускать qmail-pw2u и qmail-newu всякий раз, когда Вы добавляете пользователей, удаляете пользователей, или заменяете UID или GID.
3.7. Контроль спама
Chris Hardie написал хороший антиспамовский HOWTO для qmail. Доступен на http://www.summersault.com/chris/techno/qmail/qmail-antispam.html.
4. Использование
Эта секция описывает, как использовать qmail обычным пользователям. Если Вы читаете или посылаете почту через систему построенную на qmail, то здесь вы найдете информацию о том что можно сделать с qmail.
4.1. .qmail файлы
Доставка почты пользователя обычно управляется одним или более ".qmail" (произносится дот ку майл) файлами -- файлы в основном каталоге пользователя с именами, начинающимися с .qmail. Man-страница dot-qmail описывает использование файла .qmail.
.qmail файлы содержат список команд доставки, одна команда на строку. Первый символ строки определяет, какая доставка вовлечена:
Символ |
Тип доставки |
Значение |
# |
none (комментарий) |
Игнорируетсяљ |
| |
программный |
Команда, которая должна быть выполнена оболочкой (shell) |
/ илиљ . |
mbox (если последний символ не /) |
путь кљ mbox (включая / или .) |
/ илиљ . |
maildir (если последний символ /) |
путь к maildir (включая / или .) |
& |
перенаправление |
Адрес для пересылки сообщения |
символ или число |
перенаправление |
Адрес для пересылки сообщения (включая первый символ) |
4.1.1. программная доставка
Когда встречается команда программной доставки, qmail запускает оболочку (/bin/sh), чтобы выполнить команду и подает команду копирования входящего сообщения на стандартный ввод. Man-страница qmail-command описывает детали этого процесса.
Программная доставки очень мощна и может использоваться для осуществления широких диапазонов функциональных возможностей: фильтрация сообщения, автоматический ответ на сообщения, и доставку через сторонние агенты доставки, типа procmail.
Например:
љљљ |preline /usr/ucb/vacation djb
Это заставит qmail запустить preline, передать ему параметры /usr/ucb/vacation и djb, и обеспечить копирование сообщения на стандартный ввод.
4.1.2. mbox delivery
"Mbox" -- заставляет qmail работать со стандартным UNIX-форматом почтового ящика, в котором сообщения сохраняются в единственном файле, и сообщения возглавляются строкой "From". Эта строка напоминает поле заголовка, но это не совсем так:љ это просто кое-что, что агент доставки добавляет, чтобы сообщить считывающим почтовым программам, где каждое сообщение начинается.
Пример:
љљљ ./Mailbox
Это заставит сообщения добавляться в конец почтового ящикаљ $HOME/Mailbox, с добавленной строкойљ "From ". Простой mbox почтовый ящик с единственным сообщением выглядит так:
љљљ From user1@example.net Thu May 13 18:34:50 1999 љљљ Received: (qmail 1287205 invoked from network); 13 May 1999 18:34:49 -0000 љљљ From: user1@example.net љљљ To: user2@example.com љљљ Subject: hey љљљ What's up?
Первая строка была добавлена при доставке qmail'ом.
4.1.3. maildir доставка
"Maildir" - формат почтового ящика созданный Дэном Берстейном, чтобы исправить недостатки формата mbox. Почтовый ящик maildir является директорием, содержащим три подкаталога - new, cur, и tmp. Каждое сообщение в почтовом ящике maildir находится в отдельном файле в одном из подкаталогов, в зависимости от состояния: new - для непрочитанных сообщений, cur - для сообщений, которые были просмотрены, и tmp - для сообщений в процессе доставки. Man-страница Maildir описывает подробно формат maildir.
Один из выигрышей формата maildir -- несмотря на то, что он не использует блокировку, (предотвращение одновременной модификации от различных агентов доставки) это надежность. Это означает, что maildir почтовые ящики могут безопасно постоянно находиться на NFS-смонтированной файловой системе.
Пример:
љљљ ./Maildir/
Это заставляет сообщения быть сохраненным в $HOME/Maildir, в почтовом ящике maildir-формата.
Примечание: qmail-local может доставлять почту по maildir почтовым ящикам, но не может создавать их. Почтовые ящики Maildir-формата должны быть созданы программой maildirmake, которая устанавливается с qmail. Например: "maildirmake ~/Maildir".
4.1.4. перенаправление
Перенаправление заставляет сообщение пересылаться на указанный адрес. Адреса, указанные в .qmail файлах не могут содержать поля комментариев или дополнительные пробелы.
Это не правильно:
љљљ &<user@example.com> љљљ & user@example.com љљљ &Joe User <user@example.com>
Правильно:
љљљ &user@example.com љљљ user@example.com љљљ &user
Первые две строки заставляют user@example.com получить копию сообщения. Последняя строка посылает копию локальному пользователю user.
4.1.5. расширенные адреса
qmail поддерживает контролируемые пользователем расширенные адреса. Дополнительно к базовому адресу - username@hostname.domain пользователи могут получать почту на username-extension@hostname.domain. Для оставшейся части этого подраздела, я опущу часть "@hostname.domain" так как мы рассматриваем действия, которые имеют место на локальной системе.
Команды доставки username-extension указываются в ~username/.qmail-extension.
Например, dave-lwq@sparge.example.com контролируется файлом ~dave/.qmail-lwq на хосте sparge.
Расширения могут иметь многочисленные поля, например, dave-list-qmail, контролируемый файлом ~dave/.qmail-list-qmail. В этом примере, dave-list-qmail подписывается на рассылку qmail, и файл ~dave/.qmail-list-qmail относит сообщения в отдельный почтовый ящик.
Файлы .qmail могут быть объединены шаблоном используя -default. Так что dave-list-qmail мог также быть обработан файлом ~dave/.qmail-list-default. Это позволило бы одним отлавливающим .qmail файлом обработать все адреса dave-list-что-то. Обратите внимание, что dave-list не был бы обработан файлом ~dave/.qmail-list-default, потому что нет "-" после "list".
qmail использует самое близкое соответствие, которое он находит. Например, когда приходящее сообщение адресовано dave-list-qmail, он будет использовать первое соответствие, которое он найдет:
љљљ .qmail-list-qmail љљљ .qmail-list-default љљљ .qmail-default
Если никакого сопоставляющего .qmail файла не обнаруживается, доставка терпит неудачу и сообщение отправляется обратно отправителю.
4.2. Посылка сообщений
Пользователи почты обычно не используют MTA непосредственно для посылки сообщений. Типично, сообщения набираются и посылаются, используя почтовую программу (MUA) типа pine или mutt, которая вызывает MTA для доставки сообщения. Процесс передачи сообщения к MTA называется инжекцией.
Имеются два способа инжекции сообщений в большинство агентов передачи сообщений (MTA): посредством протокола SMTP, или используемую для этих целей программу, обеспечиваемую агентом передачи сообщений
4.2.1. SMTP
Почтовая программа может открыть TCP связь с портом 25 (стандартный порт SMTP) на локальном хосте или обозначенном почтовом сервере. После этого почтовая программа и агент передачи сообщений участвуют в диалоге, результат которого:
- сообщение передается MTA, или
- состояние ошибки,љ возвращаемое почтовой программе
SMTP не имеет никакого механизма для аутентификации, так что никакое имя пользователя или пароль не требуется, чтобы послать сообщение. Однако многие MTA отказывается принимать сообщения, которые оказываются ни от, ни для локального пользователя. Если правильно форматированное сообщение отвергнуто, то наиболее вероятная причина - ограниченная ретрансляция. См. раздел ретрансляция для получения дополнительной информации относительно конфигурации ретранслятора.
4.2.2. /var/qmail/bin/sendmail
В течении многих лет Sendmail был юниксовским агентом передачи сообщений. Он был настолько вездесущ, что многие программисты предполагали, что только он был MTA. В результате, механизм локальной инжекции Sendmail'а стал стандартом для локальной инжекции почты. qmail и другие не-Sendmail MTA обеспечивают программу sendmail, которая работает тем же самым путем, как и реальная программа sendmail для локальной инжекции.
Программа sendmail из пакета qmail, которая обычно располагается в каталоге /var/qmail/bin, в большинстве случаев заменяет настоящий sendmail из одноименного пакета на qmail системах. Типичное расположение программы sendmail:
- /usr/lib/sendmail
- /usr/sbin/sendmail
На qmail системах, "ls -l путь-до-sendmail" должен показать, что sendmail имеет символическую ссылку на /var/qmail/bin/sendmail:
љ $ ls -l /usr/lib/sendmail љ lrwxrwxrwxљљ 1 rootљљљљ rootљљљљљљљљљљ 29 Feb 19 11:04 /usr/lib/sendmail -> /var/qmail/bin/sendmail
Man-страница sendmail поставляемая с qmail, описывает как использовать программу.
4.2.3. qmail-inject
В дополнение к эмуляции sendmail, qmail имеет свою программу инжекции: qmail-inject. Фактически sendmail просто оболочка для qmail-inject.
Как стандартный интерфейс, sendmail вероятно лучше, поскольку он намного широкодоступен. Интерфейс qmail обеспечиваемый qmail-inject будет работать только на системах с qmail, но sendmail интерфейс почти универсален.
Например, послать пустое письмо joe@example.com:
љecho To: joe@example.com | /var/qmail/bin/qmail-inject
4.3. Переменные среды
Некоторые qmail программы устанавливают и используют переменные среды. Следующая таблица показывает список этих переменных и описывает их использование
Имя |
Man-страница |
устанавливается или используется |
Назначение |
qmail-smtpd |
используется |
Подменяет значение из control/databytes | |
qmail-command |
устанавливается |
Часть адреса, соответствующего "-default" в имени файла .qmail | |
qmail-command |
устанавливается |
Поле Delivered-Toљ в заголовке | |
qmail-command |
устанавливается |
Расширение адреса | |
qmail-command |
устанавливается |
Часть EXT после первого дефиса | |
qmail-command |
устанавливается |
Часть EXT после второго дефиса | |
qmail-command |
устанавливается |
Часть EXT после третьего дефиса | |
qmail-command |
устанавливается |
Домашний каталог пользователя | |
qmail-command |
устанавливается |
Доменная часть адреса получателя | |
qmail-command |
устанавливается |
Часть HOST предшествующей первой с конца точки | |
qmail-command |
устанавливается |
Часть HOST предшествующей второй с конца точки | |
qmail-command |
устанавливается |
Часть HOST предшествующей третьей с конца точки | |
qmail-command |
устанавливается |
Локальная часть адреса получателя | |
qmail-inject |
используется |
Имя пользователя в заголовке в поле From (4) | |
qmail-inject |
используется |
Имя хоста в заголовке в поле From (2) | |
qmail-inject |
используется |
Персональное имя в заголовке в поле From (2) | |
qmail-inject |
используется |
Имя пользователя в заголовке в поле From (2) | |
qmail-inject |
используется |
Персональное имя в заголовке в поле From (3) | |
qmail-command |
устанавливается |
Адрес перенаправителя (см. "man dot-qmail") | |
qmail-inject |
используется |
Подменяет значение из control/defaultdomain | |
qmail-inject |
используется |
Подменяет значение из control/defaulthost | |
qmail-inject |
используется |
Имя хоста в поле From заголовке письма (1) | |
qmail-inject |
используется |
Подменяет значение из control/idhost | |
qmail-inject |
используется |
Определяет различные опции (смотри следующую таблицу) | |
qmail-inject |
используется |
Файл содержащий список адресов рассылки для генерации Mail-Followup-To | |
qmail-inject |
используется |
Персональное имя в заголовке в поле From (1) | |
qmail-inject |
используется |
Подменяет значение из control/plusdomain | |
qmail-inject |
используется |
Имя хоста в адресе отправителя конверта | |
qmail-inject |
используется |
Имя пользователя в адресе отправителя конверта | |
qmail-inject |
используется |
Имя пользователя в заголовке в поле From (1) | |
qmail-command |
устанавливается |
Адрес получателя конверта | |
qmail-smtpd |
используется |
Игнорирует control/rcpthosts и добавит значениељ RELAYCLIENT в каждый входящий адрес получателя. | |
qmail-command |
устанавливается |
Поле Return-Path | |
qmail-command |
устанавливается |
Адрес отправителя конверта | |
qmail-command |
устанавливается |
UUCP-стиль строки "From " | |
qmail-command |
устанавливается |
Текущий пользователь | |
qmail-inject |
используется |
Имя пользователя в заголовке From (3) |
QMAILINJECT флаги | |
Буква |
Назначение |
c |
Использовать стиль адрес-комментарий в поле Fromљ |
s |
Не смотреть на любое поступающее поле Return-Path |
f |
Удаляет любое входящее поле From |
i |
Удаляет любое входящее поле Message-ID |
r |
Использовать на каждого получателя переменный путь возвращения конверта (VERP) |
m |
Использовать на каждое сообщение переменный путь возвращения конверта |
Примечание переводчика: по поводу почтовых адресов, конвертов и VERP хорошо описано в man-странице addresses(5).
5. Расширенные темы
5.1. procmail
procmail - популярный агент доставки сообщений (Message Delivery Agent -- MDA). Функция MDA принятие сообщения от MTA для определенного пользователя или почтового ящика, и доставить сообщение согласно желаниям пользователя. procmail может использоваться для "фильтрации" сообщений в зависимости от содержания различных полей заголовка или тела сообщения. Например, сообщения от специфического человека могут быть направлены на почтовый ящик, созданный для принятия сообщений только от этого человека.
Есть пара хитростей для совместного выполнения procmail с qmail. Для начала: procmail обычно строится, чтобы доставлять сообщения в почтовый ящик формата mbox в каталоге /var/spool/mail.
Вы можете перекомпилировать procmail, чтобы не выполнялась доставка к $HOME, или Вы можете инструктировать пользователей не полагаться на procmail, чтобы не выполнять обязательств по расположению mbox.
Если Вы не исправите его для $HOME доставки, procmail будет по-прежнему использовать /var/spool/mail для временных файлов.
Другая проблема это то, что qmail-command, и procmail не имеютљ общего понимания кодов завершения и что они означают. procmail использует стандартные юниксоидные коды завершения: нулевое значение означает успешное завершение, ненулевое значение означает неудачное завершение, и причина неудачи указана файлом /usr/include/sys/errno.h. qmail-command использует некоторые коды отличный от нуля, для указания постоянных ошибок, и остальные коды рассматриваются как временные ошибки.
Маленький скрипт может использоваться для транслирования кодов завершения для qmail-command. Такой скрипт была отправлен в рассылку qmail, и доступен из архива http://www.ornl.gov/its/archives/mailing-lists/qmail/1998/04/msg00487.html.
Также, более старые версии procmail (до 3.14) не доставляют непосредственно в почтовые ящики maildir-формата. Ваша лучшая ставка -- модернизировать до текущей версии procmail. Другой подход -- safecat. Это программа пишет сообщение со стандартного ввода в указанный maildir. Пользователи могут написать procmail рецепты (инструкции доставки), которые используют safecat для регистрации сообщения. Вы можете вместо procmail использовать maildrop.
Наконец, procmail ожидает, что сообщения, которые он получает, были в формате mbox. Обычная qmail доставка включает только фактическое почтовое сообщение, не включая строку " From ". Команда preline может использоваться для форматирования сообщения, поскольку procmail ожидает этого.
Пример: пусть, скажем Дэйв, хочет, чтобы его почта обрабатывалась procmail. Его системный администратор скомпилировал procmail для доставки к љ$HOME по умолчанию, и обеспечил его переобработчикомљ выходных кодов /usr/local/bin/qmail-procmail. Его .qmail файл будет выглядеть так:
|/var/qmail/bin/preline /usr/local/bin/qmail-procmail dave
5.2. POP и IMAP сервера
qmail включает POP сервер -- qmail-pop3d , но он не конфигурируется и устанавливается как часть в процессе установки qmail. Вы можете также использовать другие доступные POP и IMAP сервера, хотя большинство из них было написано для Sendmail и потребуют некоторой доработки для использования с qmail.
5.2.1. qmail-pop3d
qmail-pop3d -- POP сервер идущий с qmail. Это превосходный POP сервер, и многие qmail сайты используют его. Он состоит из модулей и поддерживает многочисленные схемы аутентификации через альтернативный модуль аутентификации.
Примечание: qmail-pop3d поддерживает почтовые ящики только maildir-формата, таким образом, если Вы имеете пользователей регистрирующихся на сервере POP и выполняющих почтовые программы локально, они все должны поддерживать maildir. Если все ваши пользователи читают почту через POP, формат почтового ящика на сервере не принципиален.
5.2.1.1. Архитектура qmail-pop3d
Сервер qmail-pop3d состоит из трех модулей:
- qmail-popup -- получает имя/пароль
- checkpassword -- устанавливает подлинность имени/пароля
- qmail-pop3d -- демон POP
Обычно qmail-popup запускается посредством inetd или tcpserver, прослушивающих 110 порт (POP3). Когда соединение установлено он запрашивает имя и пароль. Затем вызывает checkpassword, который сверяет имя/пароль и вызывает qmail-pop3d если они верны.
5.2.1.2. Установка qmail-pop3d
- Полностью установите и протестируйте qmail. Если вы хотите чтобы все пользователи имели POP совместимые почтовые ящики убедитесь, что defaultdelivery содержит ./Maildir/. Если вы инсталлировали qmail скрипт из раздела <Установка>, то он расположен в control/defaultdelivery. Если нет, то он возможно в скрипте /var/qmail/rc в строке команды qmail-start.
-
Скачайте программу checkpassword отсюда http://www.qmail.org/top.html#checkpassword. Стандартный checkpassword (http://cr.yp.to/checkpwd.html) это хороший выбор, если вы не нуждаетесь в чем-то экзотичном.
- Скомпилируйте и устанавливайте checkpassword согласно инструкциям. Убедитесь, что инсталлировали его в каталог /bin.
- Для простого использования POP сервера, добавьте в файл
/etc/inetd.conf нижеследующее, все в одной строке:
pop3љљ streamљ tcpљљљљ nowaitљ rootљљљ /var/qmail/bin/qmail-popup qmail-popup hostname.domain /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir
Примечание: Некоторые системы, в особенности Red Hat Linux, не называют POP3 порт "pop3". Проверьте в файле /etc/services соответствие имени порту 110. Также, проверьте man-страницу inetd чтобы удостовериться что строка сформирована правильно. Одна из мудреностей это то, что некоторые inetd требуют первым аргументом программыљ (qmail-popup в этом примере) было имя программы. Другие inetd хотят только <реальные> аргументы.
Скажите "kill -HUP номер-процесса-inetd", чтобы перечитать /etc/inetd.conf.
Для перегруженных систем лучше использовать tcpserver.
Для использования tcpserver, добавьте следующее в ваш скрипт запуска qmail (не љinetd.conf):
љљљ tcpserver -v -R 0 pop3 /var/qmail/bin/qmail-popup FQDN \ љљљљљљљ /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1 | \ љљљљљљљ /var/qmail/bin/splogger pop3d &
где pop3 имя POP3 службы указанное в /etc/services и FQDN - полное имя домена, на котором устанавливаете POP сервер, например pop.example.net.
5.2.2. qpopper
Если нуждаетесь в POP демоне, который работает с почтовыми ящиками формата mbox, можете использовать qpopper. Vince Vielhaber написал патч доступный здесь http://www.qmail.org/qpopper2.53.patch.tar.gz, который заставит qpopper работать с почтовыми ящиками находящимися в домашнем каталоге пользователя. qpopper доступен на http://www.eudora.com/freeware/qpop.html.
5.2.3. Solid
POP3 сервер Solid поддерживает оба почтовых ящика и maildir, и mbox. Доступен здесь http://solidpop3d.pld.org.pl/.
5.2.4. imap-maildir
David R. Harris имеет патч, который добавляет maildir поддержку к IMAP серверу и дкументировал инсталляционный процесс. См. http://www.davideous.com/imap-maildir/.
5.2.5. Courier-IMAP
Sam Varshavchik написал IMAP сервер, который поддерживает почтовые ящики только формата maildir. Доступен здесь http://www.inter7.com/courierimap/.
5.3. POP и IMAP љклиенты
5.3.1. fetchmail
fetchmail -- программа, которая выкачивает почту с POP или IMAP сервера и снова инжектирует ее локально. fetchmail не имеет проблем с извлечением почты от qmail серверов, но имеются пара уловок чтобы он работал хорошо на qmail клиенте.
Здесь пример .fetchmailrc для пользователя на qmail системе:
poll mail.example.net proto pop3 nodns љљљ user dsill with password flubgart is dave here љљљ fetchall forcecr to * here
Это заставляет fetchmail соединиться с mail.example.net через POP3, зайти на него как пользователь dsill, с паролем flubgart, получить все сообщения и доставить из на dave@localhost. Параметр forcecr заставляет fetchmail в конец каждой строки возврат каретки когда сообщение инжектирует на локальной системе посредством SMTP.
qmail требует этого.
Примечание: fetchmail не очень надежен. Если повторное инжектирование неудачно по любой причине (например, ошибка форматирования, которое вызывает рикошет или нет запущенного SMTP сервера), сообщение будет потеряно.
5.3.2. getmail
getmail -- программа, которая выкачивает почту с POP сервера и доставляет ее в почтовые ящики формата maildir. Это скрипт написанный на Python'е, так что возможно придется устанавливать интерпретатор Python'а перед тем, как вы сможете использовать getmail.
getmail написал Charles Cazabon, страничка http://www.qcc.sk.ca/~charlesc/software/getmail/.
5.4. Мульти-RCPT против единственной RCPT доставки
Скажем вы MTA, и один из ваших пользователей посылает сообщение трем пользователям на hostx.example.com. Есть несколько путей, которыми Вы могли бы сделать это.
- Вы могли бы открыть SMTP подключение к hostx, послать копию сообщения первому пользователю, послать копию второму пользователю, послать копию третьему пользователю, затем закрыть соединение.
- Вы могли бы запустить три процесса, каждый из которых открывает SMTP подключение к hostx, посылает копию сообщения одному из пользователей, затем закрывает соединение.
- Вы могли бы открыть SMTP подключение к главному компьютеру, послать копию сообщения, адресованного всем трем пользователям, затем закрыть соединение.
Первый метод несомненно худший из трех. Даже если бы сообщение небольшое, оно воспримется по меньшей мере как длинное. И если сообщение большое, оно воспримется значительно длиннее и потребует большей сетевой пропускной способности. So scratch that one.
Вторые и третьи методы немного более интересны.
Третий метод открывает только одно подключение к hostx, и посылает только одну копию сообщения. Это эффективное использование пропускной способности.
Второй метод использует многочисленные связи и посылает многочисленные копии сообщения. Это "растрачивание" пропускной способности, но из-за природы протокола SMTP требует меньшие задержки подтверждения, и быстрее чем третий метод. Это также проще чем третий метод, так что MTA может быть запрограммирован в более простой манере. И наконец, поскольку каждый получатель получает свою собственную копию сообщения, возможно для MTA осуществить VERP (смотрите следующую секцию)
qmail всегда использует второй метод (единственный RCPT). Нет патчей осуществить третий метод (множественные RCPT)--это потребует значительной доработки. Хотя есть патологические случаи, где это может быть медленнее чем множественный RCPT; простота и преимущества VERP перевешивают.
Единственная поставка RCPT использует большую пропускную способность, чем множественная RCPT поставка, но различие часто преувеличено. Большинство сообщений имеет, самое большее, имеет пару получателей, и они обычно на разных хостах, так что мульти-RCPR доставка ничего не выигрывает. Даже на сервере рассылок, где мульти-RCPT поставка могла бы помочь, потенциальные прибыли небольшие, поскольку SMTP использует только долю полосы пропускания из большинства связей -- HTTP обычно получает львиную долю.
Например, если 10% пропускной способности вашей спутниковой связи приходится на SMTP, и ваша пропускная способность SMTP могла бы быть уменьшена, скажем на 25%, использованием мульти-RCPT доставки, что только снизит вашу пропускную способность SMTP до 7.5%.
5.5. VERP
Когда сообщение не может быть доставлено, MTA решает возвратить рикошетное сообщение на обратный путь конверта (envelope return path -- ERP). Рикошетное сообщение должно включать адрес получателя, причину из-за которой сообщение не доставлено и какая проблема, временная или постоянная. Все же некоторые MTA делают это неправильно. Они могут послать рикошет по адресу из поля From заголовка, либо рикошет не может идентифицировать получателя.
Для большинства сообщений "пользователь пользователю", эти проблемы не слишком ужасны. Можно обычно разобраться по содержанию и времени рикошета. Для рассылки, проблема плохих рикошетов более серьезна. Подписчики перемещаются, пересылают почту на их новый адрес. Если новый адрес начинает иметь проблемы доставки, то становится невозможнымљ сообщить, какая почта подписчика рикошетирует, если рикошетное сообщение включает только новый адрес.
Dan Bernstein представил на суд то, что он назвал VERP (Variable Envelope Return Path - переменный обратный путь конверта). Используя VERP, каждое сообщение, посланное каждому подписчику из списку имеет уникальный обратный путь. Это позволяет обрабатывать рикошеты для идентификации проблемы подписчика.
Напрмер:љ типичная не-VERP основанная рассылка имеет обратный адрес формы listname-owner@domain. Для VERP рассылки обратный адрес выглядит так listname-owner-subscriber=sdomain@ldomain, где адрес подписчика -- subscriber@sdomain, вставлен между "owner" и "@". (Символ "@" в адресе подписчика заменяется символом "=".)
Менеджер рассылки ezmlm использует VERP для автоматической обработки рикошетов. Он даже обеспечивает подписчиков, с временными проблемами доставки, списком сообщений, которые они пропустили, так что они могут извлечь их из архива.
Russell Nelson написал менеджер рикошетов для Majordomo под qmail, но он давно его не поддерживает. Доступно здесь http://www.qmail.org/bounceman-0.4.shar.
5.6. Выявление неисправностей
5.6.1. Процессы
Должным образом работающая, полная, но минимальная qmail установка должна всегда иметь следующие четыре процесса:
- qmail-send выполняется под пользователем qmails
- qmail-clean выполняется под пользователем qmailq
- qmail-rspawn выполняется под пользователем qmailr
- qmail-lspawn выполняется под пользователем root
В зависимости от вашего любимогољ UNIX, одна из следующих двух команд должна вывести список эти процессов, и возможно чуть больше:
љљљ ps -ef | grep qmail љљљ ps waux | grep qmail
Например:
[dave@sparge dave]$ ps waux|grep qmail dave 2222 0.0 0.8 836 348 p4 S 10:25 0:00 grep qmail qmaild 351 0.0 1.0 840 400 ? S N 12:43 0:00 /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb -u 49491 -g 31314 0 smtp /var/qmail/bin/qmail-smtpd- qmaild 2220 0.0 1.0 844 420 ? S N 10:25 0:00 /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb -u 49491 -g 31314 0 smtp /var/qmail/bin/qmail-smtpd- qmaill 365 0.0 0.8 748 344 ? S N 12:43 0:00 splogger qmail qmailq 368 0.0 0.7 736 292 ? S N 12:43 0:00 qmail-clean qmailr 367 0.0 0.6 732 272 ? S N 12:43 0:00 qmail-rspawn qmails 350 0.0 0.8 776 336 ? S N 12:43 0:00 qmail-send root 340 0.0 0.6 724 252 ? S N 12:43 0:00 /usr/local/sbin/supervise /var/supervise/qmail-send /var/qmail/rc root 341 0.0 0.6 724 252 ? S N 12:43 0:00 /usr/local/sbin/supervise /var/supervise/tcpserver-qmail /usr/local/bin/tcpserver -v -x /etc/tcp.smtp root 366 0.0 0.7 736 276 ? S N 12:43 0:00 qmail-lspawn ./Mailbox [dave@sparge dave]$
Если вы запустили qmail или qmail-smtpd под supervise, как в примере выше вы увидите эти процессы также. И если qmail-smtpd запущен под tcpserver, вы увидите родительский tcpserver процесс плюс дополнительный процесс tcpserver для каждого активного входящего SMTP соединения.
Если Вы используете splogger (или multilog или cyclog) для регистрации, у вас будет splogger (или multilog или cyclog) процесс или два запущенных под пользователем qmaill.
Также, если qmail занят доставкой сообщений локально или удаленно, вы увидите до concurrencylocal qmail-local процессов и до concurrencyremote qmail-remote процессов.
5.6.2. Регистрация
5.6.2.1. splogger
splogger использует систему регистрации syslog для отметки времени сообщений и посылает их в демон syslog. syslog конфигурируется посредством /etc/syslog.conf. Сообщения посылаемые в syslog имеют принадлежность и приоритет. Данные в /etc/syslog.conf отфильтровывают сообщения по принадлежности и приоритету, для направления сообщений в желаемый регистрационный файл, удаленный регистрационный хост или на консоль. splogger регистрирует принадлежность почты, по умолчанию, так, что применив команду grep с параметром mail на syslog.conf файл вы должны получить расположение qmail'овского лог файла.
Обычное месторасположение:
- /var/log/syslog
- /var/adm/SYSLOG
- /var/log/maillog
Типичная syslog запись выглядят так:
Junљ 3 11:35:23 sparge qmail: 928424123.963558 delivery 153: success: did_1+0+0/
"Jun 3 11:35:23" - временная отметка в syslog.
"sparge" имя системы, которая послала сообщение
"qmail:" метка, которую splogger помещает на все qmail записи.
"928424123.963558" дополнительная отметка времени в TAI формате (см. следующий раздел).
"delivery 153: success: did_1+0+0/" само регистрационное сообщение.
5.6.2.2. multilog
multilog является частью пакета daemontools, регистрирует сообщения в ряде файлов в указанном каталоге.
Каталог регистрации определяется в командной строке multilog, который вы можете найти исследовав запускающий скрипт qmail.
Количество файлов в регистрационном директории, и максимальный размер каждого файла, определяются multilog опциями. Имена лог-файлов являютсяљ TAI (Temps Atomique International) отметками времени когда файл был начат. Команда tai64nlocal из пакета daemontools конвертирует TAI время в нормальный, удобочитаемый вид.
Типичная multilog запись выглядят так:
@4000000038c3eeb104a6ecf4 delivery 153: success: did_1+0+0/
"@4000000038c3eeb104a6ecf4" необязательная, но ремондуемая, TAI отметка времени. "delivery 153: success: did_1+0+0/" само регистрационное сообщение.
5.6.2.3. Сообщения в регистрационных файлах
Вот типичная последовательность в логе для сообщения, посланного с локальной системы на удаленную систему:
1 @4000000038c3eeb027f41c7c new msg 93869 2 @4000000038c3eeb027f6b0a4 info msg 93869: bytes 2343 from <dave@sill.org> qp 18695 uid 49491 3 @4000000038c3eeb02877ee94 starting delivery 2392: msg 93869 to remote lwq@w3.to 4 @4000000038c3eeb0287b55ac status: local 0/10 remote 1/20 5 @4000000038c3eeb104a13804 delivery 2392: success: 209.85.127.177_accepted_message. љљ /Remote_host_said:_250_CAA01516_Message_accepted_for_delivery/ 6 @4000000038c3eeb104a4492c status: local 0/10 remote 0/20 7 @4000000038c3eeb104a6ecf4 end msg 93869
Строка 1:љ qmail получил новое сообщение и его идентификатор в очереди 93869. Идентификатор является номером i-node файла /var/qmail/queue/mess/NN/ - файл в очереди, который содержит сообщение. Идентификатор гарантированно будет уникальным, пока сообщение находится в очереди
Строка 2: сообщение от dave@sill.org и его длина 2343 байта.
Строка 3: qmail-remote запустил доставку сообщения к lwq@w3.to, и его присвоенный идентификатор для отправки 2392.
Строка 4:љ на рассмотрении 0 локальных доставок и 1 удаленная.
Строка 5: доставка 2392 завершена и успешна, возвращается ответ от удаленного сервера, часто содержащий информацию, которую удаленный почтовый администратор находит полезной при трассировке доставки. В этом случае, "CAA01516" идентификатор доставки с удаленной системы.
Строка 6:љ на рассмотрении 0 локальных доставок и 0 удаленных, т.е. доставка закончена.
Строка 7: сообщение полностью доставлено и удалено из очереди. Теперь идентификатор очереди равный 93869 может быть повторно использован для других доставок.
5.7. Большие сервера
Также смотри qmail-ldap.
5.7.1. Масштабируемый параллелизм
Используйте быстрый NFS сетевой файловый сервер для хранения каталогов пользователя. Установите множество равно-привилегированных SMTP серверов доставляющих почту в maildir почтовые ящики на файловом сервере.
5.8. Переход от Sendmail к qmail
Сначала прочтите страничку (автор Dan Bernstein) Sendmail->qmail - http://cr.yp.to/qmail/sendmail.html.
5.9. Менеджеры рассылок
Менеджеры рассылок это системы помогающие производить рассылку писем. У них два главных режимы работы: управление списком подписчиков, и контролирование посылки сообщений подписчикам.
Большинство (все?) менеджеры рассылок могут быть приспособлены для работы с qmail
5.9.1. ezmlm
ezmlm написал Dan Bernstein, автор qmail. Он был написан для использования с qmail и полагается на некоторые особенности qmail. В особенности он использует VERP для надежной доставки рикошетных сообщений.
Ezmlm несколько уникален среди менеджеров рассылок, он не обрабатывает команды посланные на центральный адрес менеджера: он добавляет команду в имя рассылки. Например, подписавшись на рассылку foo@list.example.net пошлется сообщение к "foo-subscribe@list.example.net".
Для большей информации о ezmlm, смотри http://www.ezmlm.org/ -- неофициальный web-сайт, и официальный ezmlm-idx -- включает много хороших дополнений.
5.9.2. Majordomo
Majordomo другой популярный менеджер рассылок под UNIX. Он превосходно работает с qmail после проделанных небольших изменений. Russ Allbery написал FAQ о совместной работе qmai и Majordomo, доступно здесь http://www.eyrie.org/~eagle/faqs/mjqmail.html.
5.10. Заплатки
Различные заплатки исходных кодов доступны для qmail. Чтобы инсталлировать их, скачайте их, перейдите в каталог с исходниками qmail и примените их используя команду patch:
љљљ cd /usr/local/src/qmail/qmail-1.03 љљљ patch -p0 </tmp/patchfile
Остановите qmail,љ убив процесс qmail-send или если вы инсталлировали скрипт qmail из секции "Установка" выполните:
љљљ /usr/local/sbin/qmail stop
Затем перекомпилируйте и установите новые бинарники:
љљљ make setup check
5.10.1. DNS
Исторически, ответы DNS были ограничены 512 байтами. Некоторые большие сайты возвращают MX ответы длиннее чем 512 байт. qmail и многие другие программы имеют проблему с DNS запросами, которые возвращают очень большие результаты. Есть два пути исправить это в qmail:
5.10.1.1. Сдвинуть размер буфера пакета до 65536.
BIND работает с библиотекой resolver, которая автоматически сделает TCP запрос в рамках библиотечного кода, если возвращается ответ с установленным битом truncate (прим. перев.: более подробно можно прочесть здесь - http://ed.rk.tusur.ru/doc/TcpIp/tcp14.html. Это легко исправить, хотя это потенциально растрачивает память, в зависимости от того как ваша система ей оперирует. Чтобы сделать это, просто замените значение PACKETSZ на 65536 в dns.c и перекомпилируйте qmail.
5.10.1.2. Патч Christopher K. Davis'а
Доступен здесь http://www.ckdhr.com/ckd/qmail-103.patch. Это адаптация патча Чаком Фостером, которая должна работать с любой resolver библиотекой, независимо от того насколько она стара, и использует байт защиты для избежания библиотечной ошибки "число байт помещенных в буфер". Он перераспределяет только раз, к 65536, а не просто в нужный размер, из-за чего он может быть менее память-эффективным, чем патч Чака (хотя, подобно его патчу, он только перераспределяет, если ответ больший чем PACKETSZ, который по умолчанию равен 512 байт).
После перераспределения, он вынуждает TCP запрос, скорее чем это сделает библиотека resolver (избежав дополнительных "полетов" туда-обратно между qmail и сервером имен, хотя если они находятся на одной и той же машине или локальной сети, то это не большая проблема).
5.10.2. qmail-ldap
Патч Andre Oppermann'а, выполняет вљ qmail поддержку облегченного протокола службы каталогов (Lightweight Directory Access Protocol - LDAP). LDAP подобен сетевой телефонной книге. Использовав qmail-ldap POP сервер сможет оперироватьљ тысячами пользователей. Смотри http://www.nrg4u.com/.
5.11. Quick Mail Transfer Protocol
QMTP -- быстрыйљ протокол электронной почты, замена протокола SMTP разработанная Дэном Бернстейном. Протокол описан http://cr.yp.to/proto/qmtp.txt. QMTP - подобен SMTP, но проще, быстрее и несовместим с SMTP. qmail включает QMTP сервер, qmail-qmtp, который запускается подобно qmail-smtp. QMTP обычно использует порт 209.
qmail не включает QMTP клиента, но пакет serialmail его содержит. maildir2qmtp берет почтовый ящик maildir формата и доставляет сообщения, которые он содержит на определенный QMTP сервер, посредством протокола QMTP.
A. Благодарности
Сперва скажу спасибо Dan Bernstein'у, за разработку и написание такой мощной и элегантной системы. После четырех лет использования, qmail все еще производит впечатление на меня.
Я также хотел бы THANKS ME участников рассылки qmail. Russell Nelson заслуживает специального упоминания как одного наиболее полезного, терпеливого, опытного, и забавного из участников.
Благодарю также всех, кто рецензировал или вносил вклад в этот документ, включая:
Vince Vielhaber
Chris Green
Christopher K. Davis
Scott Schwartz
Fred Lindberg
Russell P. Sutherland
Alex Miller
Tim
Hunter
Frank D. Cringle
Mahlon Smith
Rogerio Brito
Tony Hansmann
Matthias Andree
Tillman Hodgson
Stefan Witzel
B. Пакеты имеющие отношение к qmail
B.1. dot-forward
Sendmail использует .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. fastforward
fastforward другое 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-tcp
SMTP сервер 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 потому что:
- tcpserver позволяет ограничивать число одновременных подключений к службе. Inetd имеет механизм ограничивающий скорость соединения - временно отключает службы, которые являются слишком занятыми.
- tcpserver может быть cконфигурирован так, чтобы запретить доступ к некоторым хостам или различать "локальные" хосты и помечать их так, чтобы qmail-smtpd обрабатывал их по-другому.
- tcpserver единственный сервер поддерживающийся автором qmail.
Исходники доступны 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 содержит ряд полезных утилит для управления и мониторинга служб. Онљ необязателен, но очень рекомендуемый, особенно для загруженных систем. Включает в себя:
- supervise - контролирует сервис (службу) и перезапускает его, если он умер.
- svc - общается с supervise и позволяет его остановить, временно остановить (пауза), и перезапустить сервис.
- multilog - обслуживает лог-файл для сервиса, автоматически сдвигает его, чтобы сохранить у него конфигурированный размер.
- setuidgid - выполняет программы для суперпользователя с нормальными пользовательскими UID и GID
Исходники доступны на: http://cr.yp.to/daemontools/daemontools-0.70.tar.gz.
daemontools написал Dan Bernstein, который поддерживает страничку http://cr.yp.to/daemontools.html.
B.5. qmailanalog
qmailanalog обрабатывает лог-файл и выводит ряд сообщений, которые сообщают, сколько и чего система сделала. Если Вы нуждаетесь в статистике о том, сколько сообщений послано или получено, насколько они больши, и как быстро они обрабатываются, то 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. serialmail
qmail был разработан для систем с постоянной высокоскоростной связью. 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. mess822
mess822 - библиотека и несколько приложений для синтаксического анализа RFC 822 совместимых почтовых сообщений.љ Входят приложения:
- ofmipd: демон, который принимает сообщения от клиентов и переписывает поля From, основанные на базе данных.
- new-inject: замена qmail-inject, которая поддерживает управляемую пользователем перезапись имени хоста.
- iftocc: может использоваться в .qmail файлах. Проверяет, перечислен ли известный адрес в To или Сс.
- 822header, 822field, 822date, и 822received: извлечение информации из сообщения.
- 822print: преобразует сообщение в удобочитаемый формат.
Исходные коды mess822 доступны здесь http://cr.yp.to/software/mess822-0.58.tar.gz.
mess822 написал Dan Bernstein, страничка здесь http://cr.yp.to/mess822.html.
B.9. ezmlm
ezmlm это высокопроизводительный, простой в использовании менеджер рассылок для 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. safecat
safecat надежно пишет файл в maildir почтовый ящик. Это очень удобно для принятия сообщений без procmail. Например, получение всех сообщений в Maildir:
:0w |safecat Maildir/tmp Maildir/new
safecat написал Len Budney, его страничка http://www.pobox.com/~lbudney/linux/software/safecat.html.
B.11. maildrop
maildrop почтовый фильтр, подобен procmail.
maildrop написал Sam Varshavchik, его страничка http://www.flounder.net/~mrsam/maildrop.
C. Как работает интернет почта
C.1. Как сообщение посылается из точки А в точку В
Когда пользователь на одном хосте посылает сообщение пользователю на другом хосте, многие вещи остаются за сценой, о которых вы даже не подозреваете.
Скажем Элис (alice@alpha.example.com) хочет послать сообщение для Боба (bob@beta.example.com). Что происходит:
- Элис формирует сообщение почтовым клиентом (mail user agent - MUA), таким
как muttљ или pine. Она определяет получателя в поле To,
тему письма в поле Subject и сам текст сообщения. Приблизительно это
выглядит так:
љљљ To: bob@beta љљљ Subject: lunch љљљ How about pizza?
- Когда она закончит сообщение, то скажет почтовому клиенту его отправить.
- В этой точке почтовый клиентљ может добавить в заголовок поля типа Date и Message-Id и модифицировать значения введенные Элис (например заменить bob@beta на "Bob <bob@beta.example.com>"). Затем почтовый клиент инжектирует сообщение на почтовый сервер. Для этого есть два пути: он запустит программу, предусмотренную почтовой системой для закачивания сообщений, или может установить связь через SMTP порт либо на локальной системе, либо на удаленном почтовом сервере. Для этого примера мы предположим, что почтовый клиент применит локальную программу инжекции, чтобы передать сообщениељ MTA. Детали процесса инжекции зависят от MTA, но на UNIX системах, метод sendmail стандартљ де-факто. Это метод, в котором почтовый клиент может положить заголовок и тело в файл, разделив их пустой строкой и передать файл программе sendmail.
- Если инжекция прошла успешно - сообщение было синтаксически правильно, и sendmail был вызван должным образом - теперь за сообщение ответственен MTA. Детали сильно варьируется в зависимости от MTA. В общих чертах,љ MTA в точке А исследует заголовок, чтобы определить, куда послать сообщение, открывает связь SMTP к точке В, и пересылает сообщение на MTA системы В. SMTP общение требует, чтобы сообщения посылались двумя частями: конверт, который определяет адрес получателя (bob@beta.example.com) и обратный адрес (alice@alpha.example.com), и непосредственно сообщение, которое состоит из заголовка и тела.
- Если MTA в точке B отклоняет сообщение, то это возможно из-за того, что никакого пользователя Bob нет, на MTA в точку A посылается bounce -сообщение по адресу возврата - alice@точки_A, чтобы уведомить ее о проблеме.
- Если MTA в точке B принимает сообщение, то он смотрит на адрес получателя, определяет, является ли он местным или принадлежит удаленной системе. В случае если адрес местный, то тогда MTA либо доставляет сообщение сам, либо пропускает его через агента доставки почты (MDA), такие как /bin/mail или procmail.
- Если доставка терпит неудачу, возможно потому что Боб превысил свою почтовую квоту,љ MTA точки B посылает bounce-сообщение по адресу возврата - alice@точки_А .
- Если доставка успешна, то сообщение лежит в почтовом ящике Боба, пока его почтовый клиент не прочтет его.
C.2. Дополнительная информация
Информацию о том, как работает интернет почта, можете получить по следующим ссылкам:
- Интернет почта, написано автором qmail:http://cr.yp.to/im.html
- SMTP, написано автором qmail:http://cr.yp.to/smtp.html
- Формат заголовка сообщения, написано автором qmail:http://cr.yp.to/immhf.html
C.2.1. Серия документов содержащих описания набора протоколов Internet и связанную с ними информацию
RFC (Requests for Comment) - официальная документация интернета. Большинство из них далеки от представления комментария, и определяет интернет протоколы, такие как TCP, FTP Telnet, и различные стандарты почты и протоколов.
- RFC 821, Simple Mail Transfer Protocol. http://www.ietf.org/rfc/rfc0821.txt
- RFC 822, Standard for the Format of ARPA Internet Text Messages. http://www.ietf.org/rfc/rfc0822.txt
- RFC 931, Authentication Server. http://www.ietf.org/rfc/rfc0931.txt
- RFC 974, Mail Routing and the Domain System. http://www.ietf.org/rfc/rfc0974.txt
- RFC 1123, Requirements for Internet Hosts -- Application and Support. http://www.ietf.org/rfc/rfc1123.txt
- RFC 1413, Identification Protocol. http://www.ietf.org/rfc/rfc1413.txt
- RFC 1423, Privacy Enhancement for Internet Electronic Mail: Part III: Algorithms, Modes, and Identifiers. http://www.ietf.org/rfc/rfc1423.txt
- RFC 1651, SMTP Service Extensions. http://www.ietf.org/rfc/rfc1651.txt
- RFC 1652, SMTP Service Extension for 8bit-MIMEtransport. http://www.ietf.org/rfc/rfc1652.txt
- RFC 1806, Content disposition. header. http://www.ietf.org/rfc/rfc1806.txt
- RFC 1854, SMTP Service Extension for Command Pipelining. http://www.ietf.org/rfc/rfc1854.txt
- RFC 1891, SMTP Service Extension for Delivery Status Notifications. http://www.ietf.org/rfc/rfc1891.txt
- RFC 1892, The Multipart/Report Content Type for the Reporting of Mail System Administrative Messages. http://www.ietf.org/rfc/rfc1892.txt
- RFC 1893, Enhanced mail system status codes. http://www.ietf.org/rfc/rfc1893.txt
- RFC 1894, An Extensible Message Format for Delivery Status Notifications. http://www.ietf.org/rfc/rfc1894.txt
- RFC 1939, Post Office Protocol - Version 3. http://www.ietf.org/rfc/rfc1939.txt
- RFC 1985, SMTP Service Extension for Remote Message Queue Starting (ETRN). http://www.ietf.org/rfc/rfc1985.txt
- RFC 1991, PGP Message Exchange Formats. http://www.ietf.org/rfc/rfc1991.txt
- RFC 2015, MIME Security with Pretty Good Privacy. (PGP). http://www.ietf.org/rfc/rfc2015.txt
- RFC 2045, MIME Internet message bodies. http://www.ietf.org/rfc/rfc2045.txt
- RFC 2046, MIME Media Types. http://www.ietf.org/rfc/rfc2046.txt
- RFC 2047, MIME Headers. http://www.ietf.org/rfc/rfc2047.txt
- RFC 2048, MIME Registration Procedures. http://www.ietf.org/rfc/rfc2048.txt
- RFC 2049, MIME Conformance Criteria. http://www.ietf.org/rfc/rfc2049.txt
- RFC 2142, Mailbox names for common services. http://www.ietf.org/rfc/rfc2142.txt
- RFC 2183, Content Disposition header. http://www.ietf.org/rfc/rfc2183.txt
D. Архитектура
D.1. Модульная системная архитектура
MTA выполняет различные задачи. Ранее сконструированные MTA, типа Sendmail и smail, монолитны. Другими словами, они имели одну большую, сложную программу, которая "переодевала шляпы": надев одну шляпу становилась SMTP сервером, другую - SMTP клиентом, третью - работала с локальными сообщениями, четвертую - управляла очередью, и т.д.
qmail - модульный. Каждая из этих функций выполняется отдельной программой. В результате программы получились намного меньше, проще, и менее вероятно, что они содержатљ функциональные ошибки или ошибки безопасности.љ Чтобы далее расширять защиту, модули qmail, выполняются с различными привилегиями, и они не "доверяют" друг другу: они не предполагают, что другие модули всегда делают только то, что они, как предполагается1, делают.
Модуль | Функция |
qmail-smtpd |
принятие/отклонение сообщений через SMTP |
qmail-inject |
Закачка сообщений локально |
qmail-rspawn/qmail-remote |
Управление удаленными доставками |
qmail-lspawn/qmail-local |
Управление локальными доставками |
qmail-send |
Обработка очереди |
qmail-clean |
Очищение очереди |
Есть также и обратная сторона модульного подхода. В отличие от монолитного MTAљ между модулями строго очерчено взаимодействие, и модули только обмениваются друг с другом минимально необходимой информацией. Это, как правило, Хорошо, но иногда это добавляет трудности. Например, флаг "-v" программы sendmail заставляет печать следы ее действий на стандартный выход для отладочных целей. Начиная с обработки закачки, организации очереди, обработки псевдонима, обработка файла .forward, и удаленное отправление через SMTP, все это дает возможность легко прослеживать полную доставку, пока сообщение не будет доставлено. Подобной возможности в qmail нет, и это потребовало бы существенных изменений кода и дополнительной сложности, чтобы осуществить флажок "отладка" от модуля к модулю.
D.2. Файловая структура
Каталог /var/qmail является корневым для qmail'овской файловой структуры. Он может быть изменен при компиляции qmail, но вообще-то лучше оставить как есть, чтобы другие администраторы не занимались поисками. Если вы действительно хотите переместить некоторые каталоги или все qmail дерево, то лучше это сделать с использованием символических связей. Смотри подраздел Создание каталогов.
Подкаталоги верхнего уровня:
Каталог | Содержимое |
alias |
.qmailљ файлы для псевдонимов в масштабе всей системы |
bin |
Исполняемые файлы и скрипты |
boot |
Скрипты запуска |
control |
Файлы конфигурации |
doc |
Документация (кроме man-страниц) |
man |
man-страницы |
queue |
Очередь непосланных сообщений |
users |
Файлы базы данных qmail-пользователей |
D.3. Структура очереди
Файл INTERNALS в каталоге исходников обсуждает детали организации очереди более подробно. Это более краткий обзор структуры очереди.
Подкаталог | Содержимое |
bounce |
постоянные ошибки доставки |
info* |
Адрес отправителя конверта после предварительной обработки |
intd |
конверт, создается qmail-queue |
local* |
Локальные адреса получателя конверта после предварительной обработки |
Lock |
файлы блокировки |
mess* |
файлы сообщений |
pid |
используется qmail-queue для запроса i-node номера |
remote* |
Удаленные адреса получателя конверта после предварительной обработки |
Todo |
Полный конверт: откуда сообщение прибыло, куда идет |
Примечание: Каталоги, отмеченные "*" содержат серию разделенных подкаталогов, имеющие имя "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 обрабатывает различные ситуации. Они показывают алгоритм прохождения сообщения через различные модули, и очень полезны для отладки и создания сложных конфигураций.
Файл | Сценарий |
PIC.local2alias |
Локально-закачанное сообщение доставляется через локальный псевдоним |
PIC.local2ext |
Локально-закачанное сообщение доставляется на расширенный адрес |
PIC.local2local |
Локально-закачанное сообщение доставляется локальному пользователю |
PIC.local2rem |
Локально-закачанное сообщение доставляется удаленному пользователю |
PIC.local2virt |
Локально-закачанное сообщение доставляется на адрес в виртальном домене |
PIC.nullclient |
сообщение закачано на нуль-клиента |
PIC.relaybad |
Неудачная попытка использование локального хоста в качестве ретранслятора |
PIC.relaygood |
Удачная попытка использование локального хоста в качестве ретранслятора |
PIC.rem2local |
Сообщение полученное посредством SMTP для локального пользователя |
В он-лайне эти файлы доступны:
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
- "Unable to fork: reason. (#4.3.0)" - Не могу ветвится
- "Unable to read message: reason. (#4.3.0)" -- Не могу прочесть сообщение
- "Unable to open filename: reason. (#4.3.0)" - Не могу открыть filename
- "Temporary error on maildir delivery. (#4.3.0)" -- Нерегулярная ошибка при доставке в maildir
- "Unable to open filename: reason. (#4.2.1)" -- Не могу открыть filename
- "Unable to write filename: reason. (#4.3.0)" -- Не могу записать filename
- "Unable to run /bin/sh: reason. (#4.3.0)" - Не могу выполнить /bin/sh
- "Unable to stat home directory: reason. (#4.3.0)" - Не могу установить домашний каталог
- "Unable to switch to directory: reason. (#4.3.0)" -- Не могу переключиться на directory
qmail-smtpd
- "555 syntax error (#5.5.4)" - синтаксическая ошибка
qmail.c
- "Zqq write error or disk full (#4.3.0)" - ошибка записи или диск полон
- "Zqq read error (#4.3.0)" - ошибка чтения
spawn.c
- "Internal error: delnum negative. (#4.3.5)"љ -љ <Внутренняя ошибка: delnum отрицателен.
- "Internal error: delnum too big. (#4.3.5)" - delnum слишком большой
- "Internal error: delnum in use. (#4.3.5)" -- delnum вљ использовании
- "Internal error: messid has nonnumerics. (#5.3.5)" - messid не числовой
- "Internal error: messid too long. (#5.3.5)"љ -- messid слишком длинен
- "Internal error: messid too short. (#5.3.5)" - messid слишком короток
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
http://Web.InfoAve.Net/~dsill/dave.html
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. Есть ли переводы этого документа на другие языки?
Да, на испанский:
http://www.es.qmail.org/documentacion/usuarios/lwq
и корейский:
http://kldp.org/Translations/html/Life_With_Qmail-KLDP/Life_With_Qmail-KLDP.html
Ведутся другие переводы.
Если Выљ заинтересованы в переводе этого документа, сообщите мне, я помогу скоординировать и предохранить вас от дублирования. Я могу также обеспечивать переводчиков копией 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) не работает некто другой.
|