Информация об особенностях qmail

| Особенности | Каталоги | Конфигурирование | Man-страницы | Схемы | Процесс отправки | Безопасность |
| Формат Maildir | Списки рассылки | Пользователи |

Особенности qmail

Установка
  • автоматическая адаптация к варианту ОС UNIX
  • автоматическая конфигурация хоста (config, config-fast)
  • быстрота и простота установки

    Безопасность

  • прозрачное различие между адресами, файлами и программами
  • минимум кода со сменой идентификатора пользователя (qmail-queue)
  • минимум кода с правами суперпользователя (qmail-start, qmail-lspawn)
  • внутренняя безопасность - недоверие программ результатам работы других

    Структура сообщения

  • соответствие RFC 822, RFC 1123
  • полная поддержка адресных групп
  • автоматическое преобразование адресов старого формата в формат RFC 822
  • совместимость с существующими MUA (sendmail wrapper)
  • длина строки заголовка ограничена только возможностями памяти
  • поддержка маскировки хоста (control/defaulthost)
  • поддержка маскировки пользователей ($MAILUSER, $MAILHOST)
  • автоматическая установка поля Mail-Followup-To ($QMAILMFTFILE)

    SMTP сервис

  • RFC 821, RFC 1123, RFC 1651, RFC 1652, RFC 1854
  • контроль пересылки - пресечение неавторизованной пересылки (control/rcpthosts)
  • RFC 931/1413/ident/TAP вызовы (tcp-env)
  • tcpd ловушка - пресечение SMTP-сеансов известных злоумышленников
  • автоматическое распознавание локальных IP-адресов
  • подсчет обращений

    Обработка возвратов (bounces)

  • QSBMF возвраты
  • поддержка HCMSSC - языконезависимые коды ошибок RFC 1893
  • повторные возвраты пересылаются пользователям определенным под алиасом postmaster

    Управление очередью сообщений

  • ограничение параллелизма - количества одновременно отправляемых сообщений (control/concurrencyremote, control/concurrencylocal)
  • разбиение каталога очереди - нет замедления отправки при значительном объеме очереди
  • квадратичная задержка при повторной попытке отправки сообщения - попытки отправки 'старых' сообщений осуществляются реже 'новых'
  • автоматическое сохранение очереди - нет потери почтовых сообщений при возможном крахе системы
  • автоматическая очистка очереди (qmail-clean)
  • возможность просмотра очереди (qmail-qread)
  • детальная статистика доставки (qmailanalog)

    Маршрутизация на уровне домена

  • любое число имен для локального хоста (control/locals)
  • любое число виртуальных доменов (control/virtualdomains)
  • конфигурируемая поддержка разделителей '%' в адресах
  • UUCP ловушка

    SMTP доставка

  • RFC 821, RFC 974, RFC 1123
  • искусственная маршрутизация (control/smtproutes)
  • пассивная SMTP-очередь - идеально для SLIP/PPP (serialmail)

    Перенаправление и списки рассылки

  • совместимость с механизмом .forward sendmail (dot-forward)
  • быстро обрабатываемые базы данных для перенаправления сообщений (fastforward)
  • совместимость с механизмом алиасов sendmail /etc/aliases (fastforward/newaliases)
  • автоматическое отклонение возвращенных и вакантных сообщений
  • автоматическое предотвращение петель при пересылке (Delivered-To)
  • автоматическое управление списками рассылки (ezmlm)

    Локальная доставка

  • контролируемая пользователем адресная иерархия
  • доставка в формате mbox
  • надежная NFS доставка (Maildir)
  • контролируемая пользователем доставка: procmail и т.п. (qmail-command)
  • необязательное оповещение при получении нового сообщения (qbiff)
  • условная фильтрация сообщений (condredirect, bouncesaying)

    POP3 сервис

  • RFC 1939
  • поддержка UIDL
  • поддержка TOP
  • APOP ловушка
  • модульная проверка паролей (checkpassword)



    Система каталогов qmail

     Чтобы не блуждать по "поддереву" qmail, приведу стандартный список подкаталогов корневого каталога qmail (/var/qmail и т.п.), выглядящего следующим образом:

    	alias   - файлы .qmail для системных синонимов ("алиасов") типа postmaster@...
    	bin     - набор программ и скриптов
    	boot    - стартовые скрипты
    	control - конфигурационные файлы
    	doc     - документация
    	man     - страницы руководства (man)
    	queue   - очередь сообщений
    	users   - база данных qmail-пользователей (ex. для виртуальных эккаунтов)
    	


    Конфигурационные файлы qmail

     Конфигурирование qmail можно признать вполне приятным занятием, особенно если до этого Вам приходилось общаться с файлами типа /etc/sendmail.cf (пусть даже Вы использовали широко разрекламированный препроцессор m4).

    Каталог, в котором располагаются конфигурационные файлы qmail - /var/qmail/control.
    Qmail, надо сказать, неприхотливая в смысле конфигурации система: для ее успешного функционирования в общем случае абсолютно необходим лишь один конфигурационный файл - me, состоящий к тому же из единственной строки, содержащей полное доменное имя Вашей машины (автоматически создается при установке скриптом config-fast).

    Замечу, что программа qmail-send прочитывает конфигурационные файлы только при старте, поэтому при их изменении необходимо перезапустить qmail-send. Если qmail-send получает сигнал HUP, она перечитывает лишь файлы locals и vurtualdomains.

    Далее приведен список конфигурационных файлов qmail, которые могут располагаться в каталоге /var/qmail/control, использующие их программы, значение по умолчанию и краткое описание. Более полное описание с синтаксисом можно найти в соответствующих программам страницах руководства. Все времена указываются в секундах.

    
    	   файл            программа     default             краткое описание
    
    	badmailfrom       qmail-smtpd      нет      неприемлемые адреса отправителей
    	badmailpatterns   qmail-smtpd      нет
    	bouncefrom        qmail-send  MAILER-DAEMON пользователь для отвергнутых сообщений
    	bouncehost        qmail-send       me       хост для отвергнутых сообщений
    	concurrencylocal  qmail-send       10       max число одновр. доставляемых сообщ.(лок)
    	concurrencyremote qmail-send       20       max число одновр. доставляемых сообщ.(внеш)
    	defaultdomain     qmail-inject     me       домен по умолчанию
    	defaulthost       qmail-inject     me       хост по умолчанию
    	databytes         qmail-smtpd       0       максимальный размер сообщения в байтах
    	doublebouncehost  qmail-send       me       хост для повторно отвергнутых сообщений
    	doublebounceto    qmail-send   postmaster   пользователь для повторно отвергнутых сообщ.
    	envnoathost       qmail-send       me       домен для адресов без знака @
    	helohost          qmail-remote     me       имя хоста для приветствия удал. SMTP сервера
    	idhost            qmail-inject     me
    	localiphost       qmail-smtpd      me       замена локальных IP-адресов на имя хоста
    	locals            qmail-send       me       список доменов для локальной доставки
    	morercpthosts     qmail-smtpd      нет      дополнительные разрешенные RCPT-домены
    	percenthack       qmail-send       нет      домены для кот. возможен в адресах знак %
    	plusdomain        qmail-inject     me       имя домена для имен хостов, оканчивающихся +
    	qmqpservers       qmail-qmqpc      нет
    	queuelifetime     qmail-send     604800     max время нахождения сообщения в очереди
    	rcpthosts         qmail-smtpd      нет      разрешенные RCPT-домены
    	smtpgreeting      qmail-smtpd      me       приглашение SMTP
    	smtproutes        qmail-remote     нет      искусственная SMTP маршрутизация
    	timeoutconnect    qmail-remote     60       таймаут ожидания связи с удал. SMTP сервером
    	timeoutremote     qmail-remote    1200      таймаут ожидания ответа от удал. SMTP сервера
    	timeoutsmtpd      qmail-smtpd     1200      таймаут в данных от удал. SMTP клиента
    	virtualdomains    qmail-send       нет      список виртуальных пользователей или доменов
    	


    Страницы руководства (на английском)

    Section 1
    bouncesaying
    condredirect
    except
    forward
    maildir2mbox
    maildirmake
    maildirwatch
    mailsubj
    preline
    qbiff
    qreceipt
    tcp-env
    Section 5
    addresses
    dot-qmail(5)
    envelopes
    maildir
    mbox
    qmail-control(5)
    qmail-header
    qmail-log
    qmail-users(5)
    tcp-environ
    Section 7
    forgeries
    qmail-limits(7)
    qmail
    Section 8
    qmail-clean
    qmail-command
    qmail-getpw(8)
    qmail-inject
    qmail-local
    qmail-lspawn
    qmail-newmrh(8)
    qmail-newu(8)
    qmail-pop3d
    qmail-popup
    qmail-pw2u(8)
    qmail-qmqpc
    qmail-qmqpd
    Section 8
    qmail-qmtpd
    qmail-qread
    qmail-qstat
    qmail-queue
    qmail-remote
    qmail-rspawn
    qmail-send(8)
    qmail-showctl
    qmail-smtpd
    qmail-start(8)
    qmail-tcpok
    qmail-tcpto
    splogger
    Section 9
    dotqmail(9)
    qmail-control(9)
    qmail-getpw(9)
    qmail-limits(9)
    qmail-newmrh(9)
    qmail-newu(9)
    qmail-pw2u(9)
    qmail-send(9)
    qmail-start(9)
    qmail-users(9)


    Requests For Comments (RFC)

    RFC821  RFC822  RFC931  RFC974  RFC1123  RFC1413  RFC1421  RFC1422  RFC1423  RFC1424  RFC1521  RFC1522  RFC1651  RFC1652  RFC1725  RFC1854  RFC1893  RFC1939



    Система qmail в схемах

    | qmail system (53K) |
    | qmtp & qmqp enabled qmail system (46K) |
    | dot-qmail & userland programs (45K) |
    | queue, user & system management (46K) |


    Процесс отправки сообщений

    Общие сведения

    Каждое сообщение добавляется в центральный каталог очереди сообщений с помощью qmail-queue. Qmail-queue вызывается по необходимости, обычно программой qmail-inject для локально составленных сообщений, qmail-smtpd - для сообщений, полученных по SMTP, qmail-local - для пересланных сообщений и qmail-send - для возвращенных сообщений
    Каждое сообщение затем отправляется программой qmail-send совместно с qmail-lspawn и qmail-rspawn и удаляется из очереди программой qmail-clean. Эти 4 программы - демоны.

    Структура очереди сообщений

    Каждое сообщение из очереди имеет свой уникальный номер (пусть 457). Центральная очередь организована в виде набора каталогов, каждый из которых может содержать файлы, связанные с сообщением 457:

    Mess/457: сообщение
    Todo/457: конверт: откуда сообщение пришло и куда отправляется
    Intd/457: конверт, создается qmail-queue
    Info/457: адрес отправителя конверта, после предварительной обработки
    Local/457: локальные адреса получателя конверта, после предварительной обработки
    Remote/457: удаленные адреса получателя конверта, после предварительной обработки
    Bounce/457: постоянные ошибки доставки


    Стадии, в которых может находиться сообщение. '+' означает, что файл существует; '-' не существует, '?' может как существовать, так и нет.

    S1. -mess -intd -todo -info -local -remote -bounce
    S2. +mess -intd -todo -info -local -remote -bounce
    S3. +mess +intd -todo -info -local -remote -bounce
    S4. +mess ?intd +todo ?info ?local ?remote -bounce (queued)
    S5. +mess -intd -todo +info ?local ?remote ?bounce (preprocessed)


    Как сообщение попадает в очередь

    Чтобы добавить сообщение в очередь, qmail-queue сначала создает файл в отдельном каталоге, pid/, с уникальным именем. Файловая система назначает этому файлу номер inode. Qmail-queue переименовывает pid/whatever как mess/457, перемещая сообщение в состояние S2, записывает сообщение в mess/457. Далее создает intd/457, перемещая сообщение в состояние S3, и записывает необходимую информацию в intd/457.

    Наконец, qmail-queue создает новую ссылку, todo/457, для intd/457, - это стадия S4. В этот момент сообщение успешно поставлено в очередь, и qmail-queue покидает его для дальнейшей обработки программой qmail-send.

    Qmail-queue включает 24-часовой таймер до доступа к любому файлу и "совершает самоубийство", если данное время истекает.

    Как сообщение из очереди проходит предварительную обработку

    Как только сообщение было поставлено в очередь, qmail-send должен решить, какие адресаты являются локальными и какие удаленными.
    Когда qmail-send замечает файл todo/457, он узнает, что сообщение 457 находится в состоянии S4. Qmail-send удаляет info/457, local/457 и remote/457, если они существуют. После чего, он прочитывает todo/457, создает info/457, возможно local/457 и возможно remote/457, после чего удаляет intd/457. Наконец, qmail-send удаляет todo/457, и сообщение попадает в состояние S5. К этому моменту сообщение удачно прошло предварительную обработку перед дальнейшей отправкой.

    Как сообщения доставляются

    Сообщения в состоянии S5 управляются следующим образом. Каждый адрес в local/457 и remote/457 помечается как NOT DONE или DONE.

    DONE: сообщение было успешно доставлено или последняя попытка доставки встречается с постоянным отказом, другими словами, qmail-send не будет больше совершать попыток доставки данного сообщения.

    NOT DONE: qmail-send будет пытаться доставить данное сообщение в будущем.

    Если попытка доставки сообщения сталкивается с постоянным отказом, qmail-send сперва добавляет заметку в bounce/457, создавая этот файл при необходимости, после чего помечает данный адрес как DONE.

    Qmail-send может обрабатывать bounce/457 в любое время следующим образом: добавляет новые заметки об отказах; удаляет bounce/457.
    Когда все адреса в local/457 помечены как DONE, qmail-send удаляет local/457 (аналогично для remote/457).

    После обработки всех адресов из local/457 и remote/457, qmail-send устраняет сообщение следующим образом. Сначала, если существует bounce/457, qmail-send управляет им как описано выше. Как только bounce/457 точно обработан, qmail-send удаляет info/457 и mess/457, помещая сообщение в состояние S1.

    Очистка очереди

    Если происходит крах системы в то время, как qmail-queue пытается поставить сообщение в очередь или qmail-send устраняет сообщение, оно может быть потеряно в состояниях S2 или S3.

    Когда qmail-send видит сообщение в состояниях S2 или S3, причем mess/457 'старше' 36 часов, qmail-send удаляет intd/457, если он существует.
    Аналогично, когда qmail-send, видит файл в каталоге pid/, который 'старше' 36 часов, также удаляет его.

    Чистки очереди не являются необходимыми, если крах системы происходит в то время, как qmail-send доставляет сообщение. Хуже ситуация, когда сообщение доставляется дважды (это может случиться, например, если SMTP-соединение рушится как раз перед моментом оповещения сервером об успешном получении сообщения).



    Принципы безопасности

      Sendmail, конечно, популярный транспортный агент системы электронной почты, но... Ни для кого не секрет, что практически каждые несколько месяцев CERT (Computer Emergency Response Team) публикует очередной список дыр в безопасности sendmail. Можно не без оснований предполагать, что этот процесс будет продолжаться еще достаточно долго...
    "Sendmail характерен тем, что практически любой незначительный баг в нескольких десятках тысяч строк кода несет в себе серьезный риск с точки зрения безопасности" (© Russell Nelson). Qmail разрабатывалась как серьезная альтернатива sendmail, лишенная подобного удовольствия.

      Автор qmail, Д.Бернстейн, в марте 1997 года установил премию в размере $500 тому, кто первым предоставит сведения о дырах в безопасности в последних версиях qmail. До сегодняшнего момента никому не удалось обнаружить ничего подобного.

      Группа пользователей qmail предложила приз в $1000 на 1 год со схожими условиями. Этот приз также не был востребован, и деньги были пожертвованы в Фонд Свободно Распространяемого Программного Обеспечения (Free Software Foundation).

    Простые правила при создании и применении qmail
    (вариант автора системы):

    1. Различать адреса, файлы и программы.

      Sendmail обращается к программам и файлам как к адресам. Это фактически дает возможность любому пользователю выполнять произвольные программы или производить запись в произвольные файлы.
      В qmail программы и файлы - не адреса. Локальный доставочный агент, qmail-local, может выполнять программы или писать в файлы, перечисленные в ~user/.qmail (по предназначению сродни .bashrc, .cshrc и т.п.), но это всегда происходит с правами данного пользователя. Понятие пользователя может быть определено конфигурацией, при этом root никогда не выступает в роли пользователя.

    2. Выполнять минимум в программах со сменой UID (setuid).

      Из двадцати самых весомых дыр в защите sendmail одиннадцать работали только потому что вся система sendmail - setuid.
      Лишь одна программа qmail - setuid: qmail-queue. Ее задача - добавить новое почтовое сообщение в очередь исходящих сообщений.

    3. Выполнять минимум действий от лица привилегированного пользователя.

      Sendmail выполняется с правами суперпользователя, что лишает возможности отслеживать возникающие ошибки встроенными системами защиты операционной системы.
      Напротив, только две программы qmail, qmail-start и qmail-lspawn, выполняются с правами root.

    4. Не доверять результатам работы программ.

      Пять из программ qmail -- qmail-smtpd, qmail-send, qmail-rspawn, qmail-remote, и tcp-env -- не критические с точки зрения безопасности. Даже при условии, что все они поставлены под угрозу, и кто-либо получил контроль над qmaild, qmails, qmailr и очередью сообщений, тем не менее он не сможет взломать Вашу систему. Ни одна из других программ не доверяет результатам работы этих пяти.
      Кроме этого эти пять программ не доверяют даже друг другу. Они принадлежат трем разным группам, и можно сказать, что каждая группа обладает иммунитетом по отношению к атакам программ из других групп.

    5. Простота - залог совершенства.

      Qmail - набор отдельных простых, но эффективных программ, в отличие от грузных монстров - большинства других почтовых транспортных агентов.

    6. Писать по возможности код без багов.

    Различные аспекты безопасности qmail рассматриваются в связи с другими вопросами, такими как структура очереди сообщений, процесс отправки сообщений, формат Maildir и т.п.



    Maildir - новый формат почтовых ящиков

     Д.Дж.Бернстейн вместе с новым MTA, предложил использовать и новый формат почтовых ящиков - Maildir. Попытаемся вкратце разобраться в преимуществах и недостатках использования нового формата.

     Как известно, все новое приживается обычно с трудом: необходимо, чтобы предлагаемое новшество наголову превосходило имеющиеся образцы, лишь тогда есть надежда, что на него хотя бы обратят внимание. Итак, большинство традиционных MUA не поддерживают формат Maildir, для дополнительных серверов (IMAP, POP3 и т.п.) нужны либо родные варианты программ qmail, либо заплатки. Для умеренного консерватора уже достаточно: лучше все оставить как есть...

     Ладно, представим ситуацию: происходит крах ситемы во время доставки сообщения. Для файлов в формате mbox это значит, что сообщение будет молчаливо обрезано и присоединено к следующему сообщению. Далее, mbox формат предполагает во время доставки почты конкретному пользователю обновление единого центрального файла программой доставки. Если программа не использует механизм запирания (lock), центральный файл может быть испорчен.

     Пользователь может пытаться удалить сообщения из почтового ящика в тот же самый момент, когда доставляется новое сообщение. В этом случае, при использовании формата mbox пользовательская программа чтения почты должна знать об использовании механизма запирания программой доставки.

     Известно, что NFS (Network File System) не использует надежного механизма запирания. Это, как уже говорилось, чревато тем (для формата mbox), что при возможной доставке почты двумя машинами некоторому пользователю или при чтении пользователем почты откуда-либо, кроме самой машины, осуществляющей доставку почты - существует риск потерять часть почтовых сообщений. Что неприятно. Да, формат mh обладает практически теми же недостатками, что и mbox.

     А что же Maildir? Maildir - структура каталогов для хранения входящей почты. Каталог в формате Maildir состоит из трех подкаталогов: tmp, new и cur.

     Каждый файл в каталоге new представляет собой новое доставленное сообщение. Время модификации файла соответствует времени доставки сообщения. Сообщение доставляется без дополнительной строки From_ (UUCP-style), без пустой строки в конце. Формат сообщения соответствует RFC 822. Файлы в каталоге cur такие же, как в new, но файлы в cur не являются уже 'новыми' почтовыми сообщениями: они были просмотрены пользовательской программой чтения почты.

     Каталог tmp используется для обеспечения гарантированной доставки сообщений. Программа доставки производит следующие операции: переходит в каталог Maildir; создает (с некими предварительными проверками уникальности и отсутствия ошибок) файл tmp/time.pid.host, где time - число секунд с 1970 года по времени GMT (Гринвичу), pid - ID процесса доставки (гарантия уникальности - создается для каждой доставки вызовом fork), host - имя машины; записывает сообщение в файл; перемещает сообщение в new/time.pid.host.

     Программа чтения почты просматривает каталог new на наличие новых сообщений. Она может вывести содержимое нового сообщения new/unique, удалить new/unique или переименовать сообщение в каталог cur/unique:info (info эквивалентно полю Status, используемому программами чтения почты в формате mbox). Программа чтения также ожидает просмотра каталога tmp и удаляет обнаруженные там 'старые' файлы с сообщениями. Файл из tmp может быть надежно удален, если к нему не было доступа в течение 36 часов.

     На этом закончу этот краткий обзор. Итак, выбор за Вами: некоторые аргументы представлены. Если Вы решились, то, во-первых, можете посмотреть FAQ о переключении на использование Maildir. Во-вторых, этот процесс можно некоторым образом автоматизировать на будущее, а именно модифицировать скрипт adduser, добавив туда создание каталога Maildir (maildirmake), дополнить дот-файлы (dot-files), копируемые системой в домашний каталог при добавлении нового пользователя, установив необходимые переменные окружения (см. FAQ о Maildir), создать там файл типа dot.qmail содержащий строку ./Maildir/
    Теперь, при добавлении нового пользователя будут производиться необходимые операции, обеспечивающие работу почтовой системы при использовании формата Maildir.

     О конфигурировании пользовательских почтовых программ для работы с qmail - см. соответствующий раздел FAQ.



    Управление списками рассылки

  • каждый пользователь может иметь личный список рассылки; инструкции по доставке сообщений пользователю user-whatever направляются в ~user/.qmail-whatever
  • обслуживание списков рассылки намного быстрее sendmail, что подтверждается соответствующими тестами
  • автоматическое предотвращение появления петель при пересылке
  • не существует какого-либо (кроме ресурсов машины) ограничения на списки рассылки
  • поддержка алиасов и перенаправлений с помощью простого механизма (например, алиас Postmaster определяется содержимым файла ~alias/.qmail-postmaster)
  • поддержка менеджера списков рассылки ezmlm


  • Информация для пользователей

     Итак, Вы, как достаточно любопытный и продвинутый пользователь, узнали о том, что Ваш системный администратор установил qmail. Возникает резонный вопрос: чем это Вам грозит? В принципе Вы имеете законное право на получение некоторой информации, связанной с особенностями конфигурации qmail. И если сисадмин немного разбирается в том, чем он, собственно, занимается, то он наверняка пошлет ... письмо с подобающими объяснениями (список необходимых вопросов можно обнаружить в последнем пункте). Ну, а пока Вы ждете ответа...

    Все, что Вы хотели знать о qmail, но боялись спросить

    Расположение почтового ящика Mailbox

     Попробуем выяснить, где же теперь расположен Ваш почтовый ящик. Сперва стоит написать себе письмо (по Вашему усмотрению -приличного или не очень содержания). Ждем 6 секунд - есть надежда, что письмо пришло. Теперь смотрим в свой домашний каталог: тут появляются варианты

    • появился новый файл Mailbox, помимо старого mbox-а
    • присутствует целый новый каталог Maildir
    • как был один mbox, так и остался

    В первом случае сисадмин сконфигурил qmail так, что для локальной доставки сообщений используется собственная программа qmail под названием qmail-local. Теперь попробуйте прочесть почту обычным образом (для примера, с помощью программы mail). Успех? Это означает, что Ваш почтовый ящик перекочевал в ~you/Mailbox и сделана символическая ссылка из /var/spool/mail/you на ~you/Mailbox для того, чтобы Ваш пользовательский агент (MUA) мог обнаружить почтовый ящик на новом месте. Правда, нужно отметить, что не со всеми пользовательскими агентами (pine, MH, elm и т.п.) удастся так запросто справиться - впрочем, это уже забота системного администратора.

    Во втором случае предполагается использовать, собственно, одно из преимуществ qmail - новый формат почтовых ящиков Maildir. Для чтения почты Вам придется использовать программы maildir2mbox, maildirwatch и установить некоторые переменные окружения (см. раздел FAQ - дополнительно).

    В последнем случае - все осталось по старому с точки зрения Вас - пользователя: не нужно совершать никаких лишних телодвижений (например, нажимать на разные клавиши).

    Контроль за появлением петель при пересылке почты

     Локальный доставочный агент qmail -- qmail-local автоматически добавляет поле Delivered-To в заголовок каждого сообщения. Это дает возможность предотвратить появление петель при перенаправлении сообщений.

    Контроль за исходящими сообщениями

     При использовании qmail Вы имеете возможность контролировать вид исходящих сообщений дополнительно к тому, что предлагается Вашим MUA. Например, программа qmail-inject может автоматически устанавливать поле Mail-Followup-To для списков рассылки определенных в файле, заданном переменной окружения $QMAILMFTFILE.

    Дополнительно можно организовать так называемую маскировку пользователя (в поле From будет добавляться нечто отличное от you@yourhost: см. раздел FAQ - управление видом исходящих сообщений).

    Перенаправление почты, списки рассылки

     Qmail имеет мощные инструменты для поддержки личных списков рассылки, причем это не предполагает обязательного общения с системным администратором.

    Вы можете контролировать доставку почты, приходящей на адреса you-anything (вместо anything, понятно может быть практически все что угодно, в зависимости от Вашей фантазии). Используйте для этого соответствующие файлы в Вашем домашнем каталоге ~you/.qmail-anything (см. раздел FAQ - маршрутизация входящих сообщений на уровне пользователя).

    К тому же можно управлять почтовыми сообщениями, приходящим на адреса you-unknown, т.е. для неопределенных Вами you-... адресов (используйте файл ~you/.qmail-default в Вашем домашнем каталоге).

    Более полную и конкретную информацию (естественно, не только касающуюся данного пункта) можно отыскать в разделе FAQ и руководстве по qmail (добавьте пути к man-страницам qmail - скорее всего - /var/qmail/man, если это не сделано на системном уровне, и вперед - man dot-qmail).

    Да, здесь, Вам придется все-таки дождаться ответа сисадмина о следующих особенностях конфигурации qmail:

    • используется ли 'dot-forward', если да, то, как раньше, файл .forward в Вашем домашнем каталоге служит для контроля за перенаправлением сообщений
    • установлена ли система ezmlm - мощная вещь для управления списками рассылки
    • установлена ли программа fastforward, если да, то все алиасы по-прежнему будут содержаться в базе данных /etc/aliases.db
    В заключении приведу список страниц руководства по qmail, которые, вероятно, могут Вам пригодиться (в скобках - номер раздела):
    • bouncesaying(1) - возможность отвергать все приходящие сообщения
    • condredirect(1) - перенаправление почты на другие адреса
    • forward(1) - пересылка почты на другие адреса (копии сообщений остаются в почтовом ящике пользователя)
    • maildir2mbox(1) - перемещение почты из каталога формата Maildir в файл формата mbox
    • maildirmake(1) - создание каталога в формате Maildir
    • maildirwatch(1) - просмотр новой почты в Maildir
    • preline(1) - возможность обработки приходящих сообщений (например, строка |preline procmail в файле ~user/.qmail позволяет использовать для обработки почты procmail)
    • dot-qmail(5) - контроль за доставкой почтовых сообщений (использование файлов ~user/.qmail и ~user/.qmail-anything)
    • qmail-users(5) - возможность задания соответствия адресов и пользователей (обработка замысловатых адресов входящей почты)
    • qmail-command(8) - возможность обработки входящей почты (задание программ обработки)
    Необходимо отметить на редкость удачную структуру и содержание страниц руководства по qmail. Скорее всего, не должно возникнуть проблем с претворением в жизнь выше приведенных возможностей данного MTA.

    Простейшие примеры содержимого файлов .qmail

    Предположим, что почтовый ящик пользователя располагается в его домашнем каталоге в файле Mailbox.

    • Перенаправление почты на другой адрес
      |forward levsha@sun.com levsha@spb.ru

    • Перенаправление почты на другой адрес с сохранением копии в локальном почтовом ящике
      ./Mailbox
      |forward levsha@sun.com levsha@spb.ru

    • Анонсирование прихода нового почтового сообщения (дополнительно необходимо при входе в систему выполнять команду biff y)
      ./Mailbox
      |qbiff

    • Ответ отправителю о благополучном получении сообщения
      ./Mailbox
      |qreceipt boss@famous.com