Мы — долго запрягаем, быстро ездим, и сильно тормозим.

RFC
Программирование
FreeBSD
man
EXIM
  4.62
  4.70
  часть 1
  часть 2
  часть 3
  часть 4
  часть 5
  часть 6
  часть 7
  часть 8
  часть 9
  часть 10
  часть 11
  часть 12
  часть 13
  часть 14
  часть 15
  часть 16
  часть 17
  часть 18
  часть 19
  часть 20
  часть 21
  часть 22
  часть 23
  часть 24
  часть 25
  часть 26
  часть 27
  часть 28
  часть 29
  часть 30
  часть 31
  часть 32
  часть 33
  часть 34
  часть 35
  часть 36
  часть 37
  часть 38
  часть 39
  часть 40
  часть 41
  часть 42
  часть 43
  часть 44
  часть 45
  часть 46
  часть 47
  часть 48
  часть 49
  часть 50
  часть 51
  часть 52
  часть 53
  часть 54
  часть 55
  filter facility


www.lissyara.su —> документация —> EXIM —> 4.70 —> часть 53

52. Формат файлов спула


    Сообщение в очереди exim'a состоит из двух файлов, чьи имена - идентификатор сообщения, сопровождаемый -D и -H, соответственно. Часть данных сообщения сохранется отдельно в файле -D. Конверт сообщения, статус и заголовки сохраняются в файле -H, чей формат описан в этой части. Каждый из этих двух файлов содержит финальный компонент его собственного имени, как его первая строка. Это страховка от дисковых ошибок, когда директория потеряна, но сами файлы - восстановимы.
   Некоторые люди соблазняются редактированием файлов
-D с целью модифицировать сообщения. Вы должны быть черезвычайно осторожными, если делаете это; это не рекомендуется, и вы делаете это на свой страх и риск. Вот, некоторые из ловушек:

  • Вы должны гарантировать, что exim не попытается доставить сообщение в тот момент когда вы играетесь с ним. Самый безопасный способ - заблокировать -D файл, также как это делает exim - используя fcntl(). Если вы обновите файл на месте, блокировка останется. Если вы запишете новый файл и переименуете его, блокировка будет потеряна в момент переименования.
  • Если вы измените число строк в файле, значение $body_linecount, которое сохранено в файле -H, будет некорректным. В настоящее время, это значение не используется exim'ом, но нет никаких гарантий, что так будет и дальше.
  • Если сообщение в формате MIME, вы должны позаботиться, чтобы не повредить его.
  • Если сообщение криптографически подписано, любое изменение делает подпись недействительной.
       В общем, модификация файлов
    -D - опасна.
       Файлы, чьи имена заканчиваются на
    -J, также могут быть замечены в директории input (или в её субдиректориях, когда установлена split_spool_directory). Это файлы журналов, используемые для записи адресов на которые сообщение было доставлено во время попытки доставки. Если в конце доставки присутствуют недоставленные получатели, файл -H обновляется, и файл -J - удаляется. Однако, если происходит сбой (например, отключение питания) до того как это произойдёт, файлы -J остаются существтовать. При следующей обработке сообщения, exim, найдя файл -J, использует его для обновления файла -H до начала следующей попытки доставки.

    53.1 Формат файла -H

       Вторая строка файла -H содержит имя логина для uid процесса который вызвал exim для чтения сообщения, сопровождаемое цифровым uid и gid. Для локально сгенерённых сообщений, обычно это - пользователь пославший сообщение. Для сообщения полученного демоном через TCP/IP - обычно, это пользователь exim'a.
       Третья строка файла содержит адрес отправителя сообщения как передано в конверте, содержащийся в угловых скобках. Для рикошетов - адрес отправителя пустой. Для входящей SMTP почты, отправитель даётся в команде MAIL. Для локально сгенерированных сообщений, адрес отправителя создаётся exim'ом из имени логина текущего пользователя и сконфигурированного
    qualify_domain. Однако, это может быть перезадано путём опции -f или начальной строки From , если вызывающий - доверенный, или если предоставленный адрес - <>, или адрес совпадает с untrusted_set_senders.
       Четвёртая строка содержит два числа. Первое - время когда сообщение было получено, в обычном формате UNIX - число секунд от начала эпохи. Второе число - счётчик посланных отправителю предупреждений о задержанной доставке получателю.
       Далее следует множество строк, начинающихся с дефиса. Они могут появляться в любом порядке, и пропущены, если неуместны:

  • -acl <number> <length> - Этот элемент является устаревшим, и не генерится начиная с релиза exim'a 4.61; вместо него используются -aclc и -aclm. Однако, -acl всё ещё распознаётся, для обеспечения обратной совместимости. В старом формате, строки этой формы пристутствуют для каждой переменной ACL которая непуста. Число идентифицирует переменную; переменные acl_cx нумеруются 0-9 и переменные acl_mx нумеруются от 10 до 19. Длинна - длинна строки данных для переменной. Сама строка начинается со следующей строки, и сопровождается символом новой строки. Она может содержать внутренние новые строки.
  • -aclc <rest-of-name> <length> - Строка этой формы представлена для каждой заданной переменной ACL соединения. Отметтьте, что между -aclc и началом имени - пустое пространство. Длинна - длинна строки данных для переменной. Сама строка начинается со следующей строки, и сопровождается символом новой строки. Она может содержать внутренние новые строки.
  • -aclm <rest-of-name> <length> - Строка этой формы представлена для каждой переменной ACL сообщения, которая не пуста. тметтьте, что между -aclm и началом имени - пустое пространство. Длинна - длинна строки данных для переменной. Сама строка начинается со следующей строки, и сопровождается символом новой строки. Она может содержать внутренние новые строки.
  • -active_hostname <hostname> - Она присутствует, если сообщение было передано через SMTP, и значение $smtp_active_hostname отличается от значения $primary_hostname.
  • -allow_unqualified_recipient - Она представлена если в строках заголовков разрешён неквалифицированный адрес получателя (для предотвращения таких адресов от квалификации, если перезапись происходит в транспортное время). Локальные сообщения, которые были введены используя -bnq и удалённые сообщеняи от хостов, которые совпадают с recipient_unqualified_hosts устанавливают этот флаг.
  • -allow_unqualified_sender - Она представлена если в строках заголовков разрешён неквалифицированный адрес отправителя (для предотвращения таких адресов от квалификации, если перезапись происходит в транспортное время). Локальные сообщения, которые были введены используя -bnq и удалённые сообщеняи от хостов, которые совпадают с sender_unqualified_hosts устанавливают этот флаг.
  • -auth_id <text> - Идентификационная информация для сообщения, полученного в аутентифицированной сессии - значение переменной $authenticated_id.
  • -auth_sender <address> - Адрес аутентифицированного отправителя - значение переменной $authenticated_sender.
  • -body_linecount <number> - Тут записано число строк сообщения, и присутстсвует всегда.
  • -body_zerocount <number> - Тут зписано число бинарных нулей в теле сообщения, и она представлена если число больше нуля.
  • -deliver_firsttime - Она записывается когда новое сообщение первый раз добавляется в спул. Когда файл спула обновлятся после задержки, она опускается.
  • -frozen <time> - Сообщение заморожено, и заморозка произошла в <time>.
  • -helo_name <text> - Она записывает имя хоста заданное удалённым хостом в команде HELO или EHLO.
  • -host_address <address>.<port> - Она записывает IP-адрес хоста с которого передано сообщение и номер использованного удалённого порта. Она опускается для локально сгенерённых сообщений.
  • -host_auth <text> - Если сообщение передано через аутентифицированное SMTP соединение, она записывает имя аутентификатора - значение переменной $sender_host_authenticated.
  • -host_lookup_failed - Она представлена если попытка поиска имени хоста отправителя по его IP-адресу была неудачной. Она соответствует переменной $host_lookup_failed.
  • -host_name <text> - Она записывает имя удалённого хоста с которого было передано сообщение, если имя хоста найдено из IP-адреса, когда сообщение было получено. Она отстутствует, если обратный поиск не был завершён.
  • -ident <text> - Для локально переданных сообщений, эта запись - логин исходного пользователя, кроме случая когда пользователь доверенный и для задания значения ident использовалась опция -oMt. Для сообщений переданных через TCP/IP, эта запись - строка ident, предоставленная удалённым хостом, если она была.
  • -interface_address <address>.<port> - Это - запись IP-адреса локального интерфейса и имя порта через который сообщение было принято с удалённого хоста. Она опущена для локально сгенерированных сообщений.
  • -local - Сообщение от локального отправителя.
  • -localerror - Сообщение - локально сгенерированный рикошет.
  • -local_scan <string> - Она записывает строку данных которую вернула функция local_scan(), когда сообщение было получено - значение переменной $local_scan_data. Она опущена, если данных возвращено не было.
  • -manual_thaw - Сообщение было заморожено, но было оттаяно вручную, т.е. явной командой exim'a, а не процессом автооттаивания.
  • -N - Процесс тестирования был начат используя опцию -N для подавления любых актуальных доставок, но доставка задержана. Для любых последующих попыток доставки, -N - присутствует.
  • -received_protocol - Она записывает значение переменной $received_protocol, которая содержит имя протокола, по которому было получено сообщение.
  • -sender_set_untrusted - Отправитель конверта этого сообщения был установлен недоверенным локальным вызовом (используется для гарантии, что вызывающий показан в списках очереди).
  • -spam_score_int <number> - Если сообщение было просканировано SpamAssassin, она присутствует Она записывает значение $spam_score_int.
  • -tls_certificate_verified - TLS сертификат был получен от клиента, который послал это сообщение, и сертификат был проверен сервером.
  • -tls_cipher <cipher name> - Когад сообщение получено через шифрованное соединение, она записывает имя использовавшегося алгоритма шифрования.
  • -tls_peerdn <peer DN> - Когда сообщение было получено по шифрованному соединению, и сертификат был передан с клиента, она записывает Distinguished Name (DN) этого сертификата.
       После опций присутствует список тех адресов на которые сообщение не было доставлено. Этот набор адресов инициализируется из командной строки когда используется опция
    -t и установлена extract_addresses_remove_arguments; иначе она выпускается пустой. Каждый раз, когда произведена успешная доставка, адрес добавляется к этому набору. Адреса сохраняются внутренне, как балансированное бинарное дерево, и это - представление того деревакоторое пишется в файл спула. Если адрес раскрывается через файл альясов или форвардов, оригинальный адрес добавляется к дереву, когда завершается доставка всех дочерних адресов.
       Если дерево пусто, присутствует единственная строка в файле спула, содержащая лишь текст
    XX. Иначе, каждая строка содержит две буквы, являющиеся Y или N, сопровождаемые адресом. Адрес - значение для узла дерева, и буквы индицируют, имеет ли узел присоединенннёю левую ветвь и/или правую ветвь, соответственно. Если ветви существуют, они следуют немедленно. Вот пример дерева с тремя узлами:
    YY darcy@austen.fict.example
    NN alice@wonderland.fict.example
    NN editor@thesaurus.ref.example
    

       После дерева неполучателей,есть список получателей сообщения. Это простой список, с предществующим счётчиком. Он включает оригинальных получателей сообщения, включая те, кому сообщение уже доставлено. В простом случае, список содержит один адрес на строку. Например:
    4
    editor@thesaurus.ref.example
    darcy@austen.fict.example
    rdo@foundation
    alice@wonderland.fict.example
    

       Однако, когда дочерний адрес добавляется к списку вышестоящих адресов как результат использования опции one_time в роутере redirect, каждая строка имеет следующую форму:
    <top-level address> <errors_to address> <length>,<parent number>#<flag bits>
    

       Флаг 01 указывает присутствие трёх других полей, которые сопровождают адрес высшего уровня. Иные биты могут использоваться в будущем, для поддержки дополнительных полей. Смещение <parent number> в списке получателей оригинального родителя адресов one time (нифига не понzл чё написал - прим. lissyara). Первые два поля - отправитель конверта, который ассоциирован с этим адресом и его длиной. если длинна - ноль, специальный отправитель конверта отстутствует (тогда в строке два символа пробела). Непустое поле может являться результатом роутера redirect у котором установлена errors_to.
       Пустая строка отделяет конверт и статутсную информацию от следующих заголовков. Заголовок может занять несколько строк файла, и с целью экономии усилий при его чтении, каждому заголовку предшествует число и идентификационный символ. Число - чисто символов в заголовке, включая любые встроенные новые строки и завершающую новую строку. Символ - один из следующиж:
    символ
    значение
    <blank> заголовок который не интересует exim
    B заголовок Bcc:
    C заголовок Cc:
    F заголовок From:
    I заголовок Message-id:
    P заголовок Received: (P - означает почтовый штемпель)
    R заголовок Reply-To:
    S заголовок Sender:
    T заголовок To:
    * заменённый или удалённый заголовок

       Удалённые или заменённые (перезаписанные) заголовки остаются в файле спула для отладки. Они не передаются при доставке сообщения. Вот - типичный набор заголовков:
    111P Received: by hobbit.fict.example with local (Exim 4.00)
    id 14y9EI-00026G-00; Fri, 11 May 2001 10:28:59 +0100
    049  Message-Id: <E14y9EI-00026G-00@hobbit.fict.example>
    038* X-rewrote-sender: bb@hobbit.fict.example
    042* From: Bilbo Baggins <bb@hobbit.fict.example>
    049F From: Bilbo Baggins <B.Baggins@hobbit.fict.example>
    099* To: alice@wonderland.fict.example, rdo@foundation,
    darcy@austen.fict.example, editor@thesaurus.ref.example
    104T To: alice@wonderland.fict.example, rdo@foundation.example,
    darcy@austen.fict.example, editor@thesaurus.ref.example
    038  Date: Fri, 11 May 2001 10:28:59 +0100
    

       Заголовки помеченные звёздочкой индицируют, что отправитель конверта, заголовок From:, и заголовок To: были перезаписаны, последний потому что роутинг привёл к неквалифицированному домену foundation.


    =============
    translated by lissyara
    verifying by Gerk



    Ссылка на обсуждение: http://forum.lissyara.su/viewforum.php?f=20.



  • Хостинг HOST-FOOD

    2014-07-27, lissyara
    gmirror

    Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
    2013-08-20, zentarim
    Scan+Print server FreeBSD 9

    Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
    2011-11-20, BlackCat
    Разъём на WiFi-карту

    Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
    2011-09-14, manefesto
    Настройка git+gitosis

    Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
    2011-08-14, zentarim
    Wi-FI роутер + DHCP + DNS

    Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
    2011-06-15, -ZG-
    Охранная система на FreeBSD+LPT

    В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
    2011-03-13, terminus
    ng_nat

    Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
    2011-02-20, Капитан
    Nagios+Digitemp

    Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
    2011-02-17, Le1
    Zyxel Configuration

    Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
    2011-02-16, fox
    hast carp zfs ucarp cluster

    HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
    2011-02-04, BlackCat
    Восстановление ZFS

    История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
    2011-02-03, Капитан
    1-Wire

    Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
    2011-01-28, Капитан
    Температура в серверной

    Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
    2011-01-21, m4rkell
    Syslog server

    Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
    2011-01-07, lissyara
    Canon/gphotofs

    Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
    2010-12-13, Al
    IPSec

    Описание принципов работы IPSEC и способов аутентификации.
    2010-12-07, manefesto
    FreeBSD on flash

    Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
    подписка

        вверх      
    Статистика сайта
    Сейчас на сайте находится: 14 чел.
    За последние 30 мин было: 43 человек
    За сегодня было
    3668 показов,
    767 уникальных IP
     

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.0459 секунд
    Из них PHP: 32%; SQL: 68%; Число SQL-запросов: 56 шт.
    Исходный размер: 127618; Сжатая: 22137