Всё что связано с qmailУстановка и описание возможностей qmail |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Инструкция по установке CMS e107 & qmail Жизнь с qmail (статья) & Mail & |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 6 Благодарности 3 Конфигурация qmail 9 FAQ qmail 4 Использование qmai 7 Пакеты имеющие отн qmail полная статья 5 Расширенные темы q 8 Разное по qmail 2 Установка qmail 1 Введение |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Содержание
1. Введение1.1. Для кого предназначен документДокумент нацелен на всех, кто заинтересован управлением qmail, от новичка, кто только что инсталлировал Linux на отдельной машине, до опытного администратора системы или почтового администратора. Если что-то неясно или недостает, сообщите мне. Присылайте комментарии на lwq@sill.org. Из различных источников можно получить массу информации по qmail. Некоторая нацелена на новичков, другая предполагает, что читатель более опытен. Этот документ пытается <склеить> эту информацию в единственный источник, заполняя некоторые пробелы и предполагает, что читатель имеет базовые знания, такие как:
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. Установка
1.5.2. Безопасность
1.5.3. Конструкция сообщения
1.5.4. SMTP
1.5.5. Управление очередью
1.5.6. Отвергнутые сообщения (рикошет)
1.5.7. Маршрутизация на уровне домена
1.5.8. SMTP доставка
1.5.9. Пересылка и списки рассылки
1.5.10. Локальная доставка
1.5.11. POP3
1.6. qmail ориентированные пакетыqmail следует за классической UNIX философией, в которой каждый инструмент должен выполнять единственную, четкую функцию, и сложные функции должны быть построены, объединяя ряд простых инструментов в "конвейер". Альтернативно строятся все более сложные инструменты, которые <переизобретают> многое из функциональных возможностей более простых инструментов. Не стоит удивляться, ч то qmail сам не делает всего того, чего можно захотеть. Здесь некоторые самые популярные расширения написанные для qmail. Конечно, многие стандартные UNIX утилиты также могут подключаться в qmail. dot-forward -- Дополнение для совместимости с файлом
.forward из Sendmail
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.
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.
После этого, команды в стиле "man имя-man-странички-от-qmail" должны показать соответствующую страницу man-страницы также доступны по адресу: http://www.qmail.org/man/index.html Обратите внимание: qmail man-страницы загружены информацией, но они требуют осторожного чтения, потому что они написаны в очень плотном, техническом стиле. Вы можете распечатать их и читать их позже, когда понадобится. Некоторая информация охватывается в разных страницах и если вы не знаете где что описано, то можете и не найти ее. 1.10.2. ДокументыДистрибутив qmail включает в себя серию документов устанавливаемых в /var/qmail/doc. Включает:
Эти документы также доступны: http://www.qmail.org/man/index.html 1.10.3. Часто задаваемые вопросы (Frequently Asked Questions - FAQ)Два официальных документа FAQ:
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
и Большинство ответов на вопросы о qmail могут быть найдены в архиве. 1.10.6. Другие Web-сайты
1.11. Поддержка1.11.1. Списки рассылкиСледующие списки проживают на list.cr.yp.to. Чтобы предотвратить <урожай> от спаммеров, я избегу использования полных правильных адресов и ссылок mailto. Списки управляются ezmlm, который использует различные адреса, для исполнения различных функций:
1.11.1.1. qmailОсновная рассылка по qmail. Обсуждения и вопросы/ответы по всему связанному с qmail, кроме serialmail. Читайте FAQ и ищите в архиве прежде чем послать вопрос. Когда задаете вопрос постарайтесь дать некоторые детали чтобы вам смогли ответить:
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, есть несколько вещей, о которых стоит подумать.
2.3. Системные требованияqmail устанавливается и работает на большинстве UNIX и UNIX-подобных системах, но есть несколько требований:
2.4. Получение исходниковитак, у вас есть система удовлетворяющая требованиям для установки qmail. Первый шаг - загрузить исходники qmail и некоторых других дополнений, вероятно ucspi-tcp и daemontools:
Получите эти файлы используя ваш веб-браузер или ftp клиент. Примечание:Если эти линки не срабатывают, то вероятно пакет был обновлен. В этом случае, Вы должны зайти на http://cr.yp.to/software.html и следуя за ссылками загрузить текущую версию. Возможно, что модернизированные версии не совместимы со следующими инструкциями, так что не забудьте прочесть примечания в разделе "Upgrading from previous versions...".
2.5. Компиляция2.5.1. Проверка компилятораСперва вы должны удостовериться, что имеете необходимые инструментальные средства, для компиляции программы. Как вы это определите зависит от вашего UNIX. Самый легкий способ, хотя не гарантированный, попытайтесь: Примечание:если любой из этих тестов проходит, то можно перейти в следующий подраздел.
В этом разделе мы пройдем фактические шаги компилирования 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. Запуск qmail2.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 файлом. Следующая таблица показывает некоторые обычные выборы.
Подробнее смотри в 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:
Для создания этих псевдонимов определитесь, куда вы хотите направлять для каждого из них (локальный пользователь или удаленный адрес), создайте и заполните соответствующие .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 содержит подобную таблицу:
Более подробно о конкретном управляющем файле, смотри 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 для выборочной ретрансляции.
Смотри
3.3. Множественные имена хостаЕсли ваша система известна более чем одним именем, например, все адреса формы user@host1.example.com могут также быть написаны как user@example.com или как user@mail.example.com, то тогда вам нужно сообщить qmail по каким адресам он должен доставлять сообщения локально, и какие сообщения он должен принимать от удаленных систем. Для того чтобы сделать это, просто добавьте все имена в два управляющих файла:
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-usersqmail-users - система для назначения адресов пользователям. Ряд конфигурационных файлов постоянно находится в каталоге /var/qmail/users. Файл assign - таблица назначений. Имеются два вида назначений: простой и шаблонный. Примечание: assign содержит ряд назначений, одно на строчку, и заканчивается строкой содержащей одну точку (.). Если создаете файл assign вручную, не забудьте про последнюю строку. 3.6.1. Простое присвоениеПростое присвоение выглядит так: =address:user:uid:gid:directory:dash:extension: Что это значит? Что сообщения, полученные для address пройдут для пользователя user, с указанным uid и gid, и файл directory/.qmaildashextension определит, как сообщения должны быть доставлены. Пример от переводчика: 3.6.2. Шаблонное присвоениеШаблонное присвоение выглядит так: +prefix:user:uid:gid:directory:dash:prepend: Что это значит? Что сообщения, полученные для адресов формы prefixrest пройдут для поль зователя user, с указанным uid и gid, и файл directory/.qmaildashprependrest определит, как сообщения должны быть доставлены. Пример от переводчика: 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 использует набор файлов, чтобы изменить правила трансляции.
Примечание: Если вы используете 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 файлы содержат список команд доставки, одна команда на строку. Первый символ строки определяет, какая доставка вовлечена:
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) на локальном хосте или обозначенном почтовом сервере. После этого почтовая программа и агент передачи сообщений участвуют в диалоге, результат которого:
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:
На 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 программы устанавливают и используют переменные среды. Следующая таблица показывает список этих переменных и описывает их использование
Примечание переводчика: по поводу почтовых адресов, конвертов и VERP хорошо описано в man-странице addresses(5).
5. Расширенные темы5.1. procmailprocmail - популярный агент доставки сообщений (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-pop3dqmail-pop3d -- POP сервер идущий с qmail. Это превосходный POP сервер, и многие qmail сайты используют его. Он состоит из модулей и поддерживает многочисленные схемы аутентификации через альтернативный модуль аутентификации. Примечание: qmail-pop3d поддерживает почтовые ящики только maildir-формата, таким образом, если Вы имеете пользователей регистрирующихся на сервере POP и выполняющих почтовые программы локально, они все должны поддерживать maildir. Если все ваши пользователи читают почту через POP, формат почтового ящика на сервере не принципиален. 5.2.1.1. Архитектура qmail-pop3dСервер qmail-pop3d состоит из трех модулей:
Обычно qmail-popup запускается посредством inetd или tcpserver, прослушивающих 110 порт (POP3). Когда соединение установлено он запрашивает имя и пароль. Затем вызывает checkpassword, который сверяет имя/пароль и вызывает qmail-pop3d если они верны. 5.2.1.2. Установка qmail-pop3d
Примечание: Некоторые системы, в особенности 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. SolidPOP3 сервер Solid поддерживает оба почтовых ящика и maildir, и mbox. Доступен здесь http://solidpop3d.pld.org.pl/. 5.2.4. imap-maildirDavid R. Harris имеет патч, который добавляет maildir поддержку к IMAP серверу и дкументировал инсталляционный процесс. См. http://www.davideous.com/imap-maildir/. 5.2.5. Courier-IMAPSam Varshavchik написал IMAP сервер, который поддерживает почтовые ящики только формата maildir. Доступен здесь http://www.inter7.com/courierimap/. 5.3. POP и IMAP клиенты5.3.1. fetchmailfetchmail -- программа, которая выкачивает почту с 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. getmailgetmail -- программа, которая выкачивает почту с POP сервера и доставляет ее в почтовые ящики формата maildir. Это скрипт написанный на Python'е, так что возможно придется устанавливать интерпретатор Python'а перед тем, как вы сможете использовать getmail. getmail написал Charles Cazabon, страничка http://www.qcc.sk.ca/~charlesc/software/getmail/. 5.4. Мульти-RCPT против единственной RCPT доставкиСкажем вы MTA, и один из ваших пользователей посылает сообщение трем пользователям на hostx.example.com. Есть несколько путей, которыми Вы могли бы сделать это.
Первый метод несомненно худший из трех. Даже если бы сообщение небольшое, оно воспримется по меньшей мере как длинное. И если сообщение большое, оно воспримется значительно длиннее и потребует большей сетевой пропускной способности. 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.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||