SliTaz Man Pages

Community Doc Forum Pro Shop Bugs Hg Cook

PROCMAIL

Section: ALT Lnux Team (1)
Updated: 1.91
Index Return to Main Contents

НАЗВАНИЕ

procmail - автономный обработчик почты

СИНТАКСИС

procmail [-ptoY] [-f от_кого]
        [параметр=значение | файл_настроек] ...
procmail [-toY] [-f от_кого] [-a аргумент] ...
        -d получатель ...
procmail [-ptY] -m [параметр=значение] ... файл_настроек
        [аргумент] ...
procmail [-toY] [-a  аргумент] -z
procmail -v

ОПИСАНИЕ

Для быстрого запуска смотри ПРИМЕЧАНИЯ в конце этого документа.
Вызов procmail происходит автоматически, посредством механизма файла .forward сразу по прибытию почты. Альтернативным способом является, если установлено системным администратором, вызов непосредственно из MTA. Сначала, при вызове, он устанавливает значения по умолчанию для некоторых переменных окружения, считывает почтовое сообщение из стандартного ввода до EOF, отделяет тело сообщения от заголовка и затем, если не имеется аргументов командной строки, он ищет файл $HOME/.procmailrc. Согласно способам обработки в этом файле, только-что прибывшее почтовое сообщение определяется в необходимую папку (и не только). Если конфигурационный файл не найден или обработка файла закончилась неудачей, в этом случае procmail сохраняет почту в системном почтовом ящике по умолчанию.
Если не имеется файлов конфигурации и в командной строке не указано -p, procmail, прежде чем прочитать $HOME/.procmailrc, интерпретирует команды из /etc/procmailrc (если имеется таковой). При создании /etc/procmailrc должны соблюдаться предосторожности, так как если того допустят обстоятельства, программа будет выполняться с правами суперпользователя (вопреки, разумеется, $HOME/.procmailrc).
При выполнении suid root или привилегиями суперпользователя, procmail будет в состоянии выполняться с функциональными расширениями для обратной совместимости с агентом доставки почты.
Procmail также может быть использован как основное средство фильтрации почты. То есть, если существуют условия, предоставляющие возможность вызова procmail из специального правила sendmail.
Формат файла конфигурации детально описан в страницах руководства пользователя procmailrc(5).
Сбалансированная техника оценки детально описана в страницах руководства пользователя procmailsc(5).
Примеры настроек для файлов конфигурации можно найти в страницах руководства пользователя procmailex(5).

Сигналы

TERMINATE
Преждевременно завершить работу и повторно постановить почту в очередь.
HANGUP
Преждевременно завершить работу и отвергнуть почту.
INTERRUPT
Преждевременно завершить работу и отвергнуть почту.
QIUT
Преждевременно завершить работу и молча потерять почту.
ALARM
Форсировать время ожидания (см. TIMEOUT)
USR1
Аналогично VERBOSE=off
USR2
Аналогично VERBOSE=on

ОПЦИИ

-v Procmail отобразит свою версию, конфигурационные параметры, с которыми он был собран, и завершит работу.
-p
Не сбрасывать старые значения переменных окружения. Обычно procmail при старте очищает все значения переменных окружения, за исключением значения временной зоны (TZ). Однако в любом случае, любые значения по умолчанию переназначат предустановленные значения переменных окружения, т.е. procmail не обратит внимания на предопределённые значения переменных, а лишь перепишет их своими собственными. Для получения списка определяемых procmail переменных обратитесь к страницам руководства пользователя procmailrc(5). Если одновременно используются -p и -m, то список переопределяемых переменных сужается до LOGNAME, HOME, SHELL, ORGMAIL и MAILDIR.
-t
Смягчает последствия ошибок при доставке почты. То есть, если procmail не в состоянии доставить посту по назначению, почта не отбрасывается, а возвращается в очередь отправки. Через некоторое время будет предпринята другая попытка доставить почту.
-f от_кого
Заставляет procmail подменять в поле "From" значение от_кого как отправителя (вместо -f может быть использовано устаревшее -p). Если от_кого содержит только -, как единственное значение, в этом случае procmail лишь обновит временной штамп поля "From" (если таковой имеется, если нет, то он будет создан).
-o
Вместо предоставления возможности создания строк "From" любому, кто пожелает, просто переписывает подделки.
-Y
Подразумевает традиционный почтовый ящик в формате Berkeley, игнорируя любые поля Content-Length:.
-a аргумент
Это устанавливает $1 равным аргумент. Каждое сочетание -a аргумент установит следующий номер переменной ($2, $3, и т.д.). Это может быть использовано для передачи procmail мета информации. Обычно это делается передачей $@х-информации из правил почтовой программы sendmail.
-d получатель ...
Это включает режим непосредственной доставки. Доставка будет произведена локальному пользователю получатель. Это разумеется возможно только в том случае, если procmail имеет привилегии супер-пользователя (или procmail выполняется с euid и egid получателя). Procmail сменит идентификатор пользователя на uid подразумеваемого получателя и доставит почту, как если бы был вызван получателем без параметров (т.е., если не найдено файла конфигурации, доставляется как обычная почта). Эта опция несовместима с -p.
-m
Переводит procmail в режим работы почтового фильтра общего назначения. В этом режиме в командной строке должен быть указан один файл_конфигурации. После него может быть указано неограниченное количество аргументов. Если файл_конфигурации является абсолютным путём, начинающимся с /etc/procmailrcs/ без ссылок на вышестоящие каталоги (то есть, не может быть упомянут каталог уровнем выше), в этом случае procmail, при отсутствии нарушений безопасности, принимает тождество владельца файла_конфигурации (или символической ссылки). Варианты расширенного использования этой опции вы должны искать ниже, в разделе ПРИМЕРЫ.
-z
Включает режим LMTP, когда procmail действует как RFC2033 LMTP-сервер. Доставка осуществляется в той же манере и с теми же ограничениями, как доставка с использованием -d. Эта опция несовместима с -p и -f.

АРГУМЕНТЫ

Любые аргументы, содержащие '=', рассматриваются как назначение переменных окружения, они все будут рассмотрены после того, как назначены значения по умолчанию и до того, как открыт файл конфигурации. Подразумевается, что любые другие параметры, являются путями файлов_конфигурации (как абсолютные, так и начинающиеся с `. / ' относительно текущего каталога; любой другой относительный путь рассматривается относительно $HOME, если не указана опция -m, в этом случае все относительные пути рассматриваются относительно текущего каталога); procmail начнет с первого встреченного в командной строке. Все последующие будут рассматриваться лишь в том случае, если предшествующие имеют не подходящую HOST-директиву или в случае, если они не должны существовать.

Если не задано файлов_конфигурации, то проверяется $HOME/.procmailrc. Если и он не может быть найден, обработка продолжается в соответствии с установками переменных окружения по умолчанию и указанными в командной строке.

ПРИМЕРЫ

Примеры для составления файла конфигурации можно найти на страницах руководства пользователя procmailex(5). Образец небольшого файла конфигурации можно найти ниже, в секции ПРИМЕЧАНИЯ.

Если вы недостаточно хорошо знакомы с синтаксисом sendmail.cf, то остальную часть этой секции можно пропустить.

Типичным является использование опции -m при вызове procmail из правила в файле sendmail.cf. Для этого самым подходящим способом является создание дополнительного вызова почтовой программы procmail в вашем файле sendmail.cf (в дополнение к возможно уже имеющемуся там вызову "локальной" почтовой программы, запускающему procmail). Для создания такого правила с procmail я бы предложил что-нибудь наподобие:

Mprocmail, P=/usr/bin/procmail, F=mSDFMhun, S=11, R=21, A=procmail -m $h $g $u
Это позволит вам использовать правила подобные следующим (наиболее вероятно правило 0) для фильтрации почты при помощи procmail (обратите пожалуйста внимание на наличие табуляции в начале строки для обозначения продолжения правила, и табуляцию, используемую для отделения комментариев):
R$*<@some.where>$*
        $#procmail $@/etc/procmailrcs/some.rc $:$1@some.where.procmail$2
R$*<@$*.procmail>$*
        $1<@$2>$3       Already filtered, map back

/etc/procmailrc/файл.rc при этом, должен иметь следующее содержание:

SENDER = "<$1>"                 # поправка для пустых адресов отправителей
SHIFT = 1                       # удалить это из $@

:0                              # выбросить всю ненужную почту
* ^Subject:.*junk
/dev/null

:0 w                            # передать всю оставшуюся почту
! -oi -f "$SENDER" "$@"
Следите за тем, чтобы при пересылке внутренней почты при отправке почты, если адрес подпадает под первое правило из /etc/procmailrc/файл.rc, не возник бесконечный почтовый цикл.

ФАЙЛЫ

/etc/passwd используется для назначения получателю переменных окружения LOGNAME, HOME и SHELL
/var/spool/mail/$LOGNAME
системный почтовый ящик; и системный почтовый ящик, и непосредственно каталог, в котором он находится, будут созданы заново при каждом запуске procmail, даже если один из них отсутствует
/etc/procmailrc
начальный глобальный файл конфигурации
/etc/procmailrcs/
специальный привилегированный путь для файлов конфигурации
$HOME/.procmailrc
файл настроек по умолчанию
/var/spool/mail/$LOGNAME.lock
файл блокировки для системного почтового ящика (не используется автоматически если $DEFAULT не соответствует
 /var/spool/mail/$LOGNAME и procmail доставляет в $DEFAULT)
/usr/sbin/sendmail
программа пересылки почты по умолчанию
_????`hostname`
временные "уникальные" файлы нулевой длины создаваемые procmail

СМОТРИ ТАКЖЕ

procmailrc(5), procmailsc(5), procmailex(5), sh(1), csh(1), mail(1), mailx(1), binmail(1), uucp(1), aliases(5), sendmail(8), egrep(1), grep(1), biff(1), comsat(8), lockfile(1), formail(1), cron(1)

ДИАГНОСТИКА

Autoforwarding mailbox found
Системный почтовый ящик имеет установленный suid или sgid бит. Procmail завершит работу с кодом возврата EX_NOUSER, подразумевая, что в этот почтовый ящик почта доставляться не должна.
Bad substitution of "x"
Задано неверное имя переменной окружения.
Closing brace unexpected
Отсутствует соответствующая открывающая скобка (вложенный блок).
Conflicting options
Конфликтующие комбинации опций.
Conflicting "x" suppressed
Флаг "х" не совместим с некоторыми другими флагами в данных правилах.
Couldn't create "x"
Системный почтовый ящик отсутствует и не может быть создан.
Couldn't create maildir part "x"
В почтовом каталоге "х" отсутствуют один или более необходимых подкаталогов и procmail не в состоянии создать их.
Couldn't create or rename temp file "x"
Произошла ошибка при доставке в каталог "х".
Couldn't determine implicit lockfile from "x"
Не обнаружено редиректоров типа `>>', используется обычный `$LOCKEXT', как файл локальной блокировки.
Couldn't read "x"
Procmail не в состоянии открыть файл конфигурации, либо это не постоянный файл или procmail не в состоянии открыть MH-каталог для поиска файла с наивысшей нумерацией.
Couldn't unlock "x"
Файл блокировки уже существует или недостаточно прав доступа на запись в каталог с этим файлом.
Deadlock attempted on "x"
Файл блокировки, указанный в настройках, аналогичен ещё активному $LOCKFILE.
Denying special privileges for "x"
Procmail не принимает идентификатор файла конфигурации, так как обнаружено нарушение защиты (например, -p или переназначение переменной в командной строке) или у procmail недостаточно привилегий для выполнения этого.
Descriptor "x" was not open
Procmail запущен, но нет подключения в stdin, stdout или stderr (возможно попытка нарушить защиту).
Enforcing stricter permissions on "x"
Системный почтовый ящик получателя имел нарушения в защите, procmail восстановил защиту.
Error while writing to "x"
Несуществующий каталог, нет прав на запись, конвейер разрушен или переполнение диска.
Exceeded LINEBUF
Обнаружено переполнение буфера, слишком маленький LINEBUF, установлен PROCMAIL_OVERFLOW.
MAILDIR is not an absolute path
MAILDIR не является абсолютным путём.
MAILDIR path too long
Слишком длинный путь MAILDIR.
ORGMAIL is not an absolute path
ORGMAIL не является абсолютным путём.
ORGMAIL path too long
Слишком длинный путь ORGMAIL.
default rcfile is not an absolute path
Файл конфигурации по умолчанию не является абсолютным путём.
default rcfile path too long
Указанный путь к файлу конфигурации в развёрнутом виде длиннее, чем LINEBUF или не запущен с разделителем файла.
Excessive output quenched from "x"
Программа или фильтр "х" пытается воспроизвести слишком много исходящей информации для текущего LINEBUF, остальное будет отвергнуто и будет установлен PROCMAIL_OVERFLOW.
Extraneous x ignored
Строка действия или другой флаг в правиле делают флаг "х" бесполезным.
Failed forking "x"
Таблица процессов заполнена (и исчерпан NORESRETRY).
Failed to execute "x"
Программа отсутствует в пути или не может быть выполнена.
Forced unlock denied on "x"
Отсутствуют права доступа на запись в каталог в котором находится файл_блокировки "х" или более чем один procmail пытается в настоящий момент установить блокировку.
Forcing lock on "x"
файл_блокировки "x" должен быть принудительно удалён из-за превышения времени ожидания (смотри также LOCKTIMEOUT).
Incomplete recipe
Начало правила найдено, но непонятен EOF.
Insufficient privileges
Либо для procmail необходимы привилегии супер-пользователя, либо должен быть правильный (e)uid и (e)gid для запуска в режиме доставки. Почта будет отброшена.
Invalid regexp "x"
Регулярное выражение "х" содержит ошибки (скорее всего что-то отсутствует или что-то лишнее).
Kernel-lock failed
При попытке использования вызовов блокировки ядра один из них закончился неудачно (обычно обозначает ошибку ОС), procmail игнорирует эту ошибку и продолжит обработку.
Kernel-unlock failed
Смотри выше.
Lock failure on "x"
Может возникать только если вы указали какое-то по настоящему нереальное (и недопустимое) имя файла блокировки или если файл_блокировки не может быть создан из-за недостаточных прав или не существующих подкаталогов.
Lost "x"
Procmail попытался клонировать себя, н не обнаружил файла конфигурации "х" (который был либо удалён, либо это был относительный путь и вы изменили каталог, с момента последнего открытия его procmail.
Missing action
Текущее правило оказалось неполным.
Missing closing brace
Вложенный блок начат, но не закончен (отсутствует соответствующая завершающая скобка).
Missing name
Опции -f необходим дополнительный аргумент.
Missing argument
Вы указали опцию , но забыли указать аргумент.
Missing rcfile
Вы указали опцию -m, procmail ожидает имя файла конфигурации как аргумент.
Missing recipient
Ву указали опцию -d или вызвали procmail под другим именем и он ожидает одного или более получателей как аргумент.
No space left to finish writing "x"
Файловая система содержащая "х" не имеет достаточно свободного места, допускающего доставку сообщения в файл.
Out of memory
Недостаток свободного места в свопе (и исчерпан NORESRETRY).
Processing continued
Непонятные опции в командной строке игнорированы, обработка производится как обычно.
Program failure (nnn) of "x"
Программа, запущенная procmail, возвратила nnn вместо EXIT_SUCCESS (=0); если nnn отрицательное, то это сигнализирует, что программа прекратила выполнение.
Quota exceeded while writing "x"
Квота на размер файла, для получателя на файловой системе "х", не позволяет осуществить доставку сообщения в файл.
Renaming bogus "x" into "x"
Обнаружен поддельный системный почтовый ящик получателя, procmail выполнил уклоняющий маневр.
Rescue of unfiltered data succeeded/failed
Фильтрация не удалась, procmail попытался вернуть оригинальный текст.
Skipped: "x"
Нечего делать с "х" в файле конфигурации (синтаксическая ошибка), игнорируется.
Suspicious rcfile "x"
Владелец файла конфигурации не является получателем или супер-пользователем, файл или каталог, содержащий этот файл, был доступен на запись всем, или это был файл конфигурации по умолчанию($HOME/.procmailrc) и он, либо каталог содержащий его, был доступен для записи всей группе (файл конфигурации не был использован).
Terminating prematurely whilst waiting for ...
Procmail получил сигнал во время ожидания ...
Timeout, terminating "x"
Превышено время ожидания программы или фильтра "х".
Timeout, was waiting for "x"
Превышено время ожидания программы, фильтра или файла "х". Если это была программа или фильтр, то он больше не будет выполнен.
Truncated file to former size
Файл не мог быть успешно доставлен, поэтому он был усечен до его прежнего размера.
Truncating "x" and retrying lock
"х" не выглядит подходящим именем файла или файл не пуст.
Unable to treat as directory "x"
Либо префикс к "х" должен обозначать, что это должен быть MH или maildir каталог, либо он приводился как второстепенный каталог для обращения, но уже существует и не является каталогом.
Unexpected EOL
Отсутствует завершающая кавычка или попытка выхода EOF.
Unknown user "x"
Указанный получатель не имеет соответствующего идентификатора пользователя (uin).

РАСШИРЕННАЯ ДИАГНОСТИКА

Расширенная диагностика может быть задействована установкой переменной VORBOSE.
[pid] time & date
Идентификатор процесса и временная метка procmail. Создаётся каждый раз, когда procmail регистрирует диагностику, если с момента создания последней временной метки прошла хотя бы секунда.
Acquiring kernel-lock
Procmail попытается использовать блокировку ядра для наиболее часто открываемого (дескриптора) файла.
Assigning "x"
Назначение переменной окружения.
Assuming identity of the recipient, VERBOSE=off
Сбрасывает все привилегии (если таковые имеются), полностью отключает расширенную диагностику.
Bypassed locking "x"
Каталог почтового спула оказался недоступен для procmail, это возлагается исключительно на блокировки ядра.
Executing "x"
Запускается программа "х". Если она запускается напрямую из procmail (без оболочки-посредника), procmail покажет аргументы, разделённые запятыми.
HOST mismatched "x"
Эта машина называется "х", HOST содержит что-то ещё.
Locking "x"
Создаётся файл блокировки "х".
Linking to "x"
Создаётся жёсткая ссылка между папками каталогов.
Match on "x"
Условие соответствует.
Matched "x"
Назначаем "х" равным MATCH.
No match on "x"
Условие не соответствует, настройки пропущены.
Non-zero exitcode (nnn) by "x"
Программа запущенная procmail как условие или как действие в конфигурации с флагом "W", вместо EXIT_SUCCESS (=0) возвратило nnn; использование указывает на то, что это не абсолютно неожиданное состояние.
Notified comsat: "$LOGNAME@offset:file"
Отправлено comsat/biff уведомление, что почта для пользователя $LOGNAME поступила со 'смещением' (offset) в 'файле'.
Opening "x"
"х" открыт для дополнения.
Rcfile: "x"
Файл конфигурации изменён в "х".
Reiterating kernel-lock
При переборе нескольких методов блокировки файлов, один из них завершился неудачей. Procmail будет повторять попытки до достижения положительного результата наиболее быстрым способом.
Score: added newtotal "x"
Это условие оценивает "добавленные" баллы, которые затем результатируются в балл "newtotal".
Unlocking "x"
Удаление файла блокировки "х".

ПРЕДОСТЕРЕЖЕНИЯ

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

В случае возникновения ситуации, когда вам крайне необходимо уничтожить процесс procmail прежде, чем он закончит своё выполнение самостоятельно, сначала попробуйте воспользоваться обычной командой уничтожения (например, НЕ командой kill -9, для справки смотри подсекцию Сигналы), иначе некоторые файлы блокировок могут остаться неудалёнными.

Остерегайтесь при использовании опции -t возникновения ситуации, когда procmail не в состоянии повторить доставку почты (например, по причине некорректно составленного файла конфигурации), что может привести к переполнению очереди почтовых сообщений подлежащих отправке. Это одинаково плохо, как для администратора, так и для пользователей.

Файл /etc/procmailrc должен выполняться с привилегиями суперпользователя, поэтому будьте крайне осторожны с тем, что вы в нём указываете. Значение SHELL должно быть эквивалентно значению для получателя, поэтому, если procmail использует вызов командного интерпретатора, желательно побеспокоиться об установке безопасных значений заранее. Смотри также: DROPPRIVS.

Имейте ввиду, если разрешено выполнение chown(1) над файлами в /etc/procmailrc/, то права владения на них могут быть изменены их владельцами на суперпользователя (root) (или ещё кого-либо). Для большей безопасности убедитесь, что права на выполнение в этом каталоге принадлежат суперпользователю.

Procmail не является подходящим средством предоставления совместного доступа к одному почтовому ящику для нескольких пользователей, например, когда у вас единая учётная запись POP для почты всего вашего домена. Вы можете сконфигурировать свой MTA так, чтобы он добавлял определённые заголовки в конверт письма, по которым Procmail будет определять для кого поступило данное сообщение, но в целом, это не лучший способ. Возможно, вы захотите исследовать таблицы виртуальных пользователей, предоставляемых вашим MTA, или проверить производительность функции "multidrop" у Fetchmail.

ОШИБКИ

После принудительного удаления файла блокировки, procmail ожидает $SUSPEND секунд перед созданием нового файла блокировки, таким образом другой процесс не сможет по ошибке удалить заново созданный файл блокировки.

Porcmail использует постоянный сигнал TERMINATE для прерывания любого выполняемого фильтра, но он не проверяет, отреагировал фильтр на этот сигнал или нет. Вдобавок, сигнал посылается непосредственно фильтру, но не его потомкам.

Продолженное поле Content-Length: обрабатывается некорректно.

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

ПРОЧЕЕ

Если в заголовке сообщения имеется поле Content-Length, но не указана опция -Y, procmail обрежет поле для соответствия правильному размеру. Procmail не изменяет размер поля.

Если в заголовке сообщения не имеется поля Content-Length или указана опция -Y и procmail добавит сообщение к почтовому ящику, то любые строки в теле сообщения похожие на заголовки, будут предварены символом ">" (обезопасив, тем самым, поддельные заголовки). Для поиска таких заголовков подходит следущее регулярное выражение:

`rom '
Если в /etc/passwd отсутствует имя получателя, используемое в режиме непосредственной доставки, procmail производит обработку так, как будто режим непосредственной доставки не задействован. Если не используется непосредственной режим доставки и procmail выполняется с uid не имеющим соответствующей записи в /etc/passwd, то HOME по умолчанию устанавливается равным /, LOGNAME по умолчанию #uid, SHELL по умолчанию /bin/sh и ORGMAIL по умолчанию /var/run/dead.letter.

Если при работе в режиме непосредственной доставки отсутствует строка заголовка "From", то procmail создаст её сам. Если имеется хотя бы один, то procmail оставит его в неприкосновенности. Если procmail вызван пользователем, не принадлежащим к группе root или mail, но должен создать или обработать новую строку "From", то он создаёт дополнительную строку "From" для того, чтобы было легче отличить поддельное сообщение.

В целях безопасности procmail использует абсолютный $HOME-зависящий файл конфигурации, принадлежащий получателю или супер-пользователю (root), недоступный для записи никому, кроме владельца, с домашним каталогом, также недоступным для записи никому, кроме владельца. $HOME/.procmailrc также имеет дополнительные ограничения по доступу на запись для группы и не должен находиться в каталоге, доступном на запись для группы.

Если /var/spool/mail/$LOGNAME является поддельным почтовым ящиком (например, не принадлежит получателю, недоступен для записи, является символической или жесткой ссылкой), procmail ещё до начала работы переименует его в "BOGUS.$LOGNAME.", оканчивающийся в inode-sequence-code. Если это отключить невозможно, ORGMAIL не будет иметь начального значения и следовательно запретит доставку без правильного файла конфигурации.

Если /var/spool/mail/$LOGNAME является допустимым почтовым ящиком, но при этом имеет слишком слабые ограничения для доступа к нему, то procmail попытается исправить эту ситуацию. Чтобы этого избежать убедитесь, что имеете установленные биты u+x.

Если производится доставка в каталоги, MH-каталоги или каталоги maildir, ву вас нет необходимости в использовании файлов блокировки, для предотвращения запуска нескольких копий procmail одновременно.

Доставка в MH-каталоги отнимает несколько большее время, чем доставка в обычные каталоги или почтовые ящики, так как procmail вынужден отыскивать следующий доступный номер (вместо использования первого же доступного имени файла).

В общих случаях, если не указана опция -t, procmail при ошибке возвращает EX_CANTCREAT, в противном случае - EX_TEMPFAIL.

Для того, чтобы сделать "просеивание" заголовков более непротиворечивым, procmail связывает все длинные поля заголовков, но только для внутреннего использования. При дальнейшей доставке почты поля разбиваются также, как и ранее.

Если procmail вызывается с именем не начинающемся с "procmail" (например, если он слинкован с другим именем и вызван также), то он переходит в режим непосредственной доставки и ожидает имена получателей как аргументы командной строки (как будто было указано -d).

Comsat/biff уведомления выполнены с использованием udp. Они отсылаются единожды, когда procmail создаёт правильную запись в файле журнала. Уведомление имеет следующий развёрнутый формат (насколько это вообще возможно, когда доставка производится не в файл):

$LOGNAME@смещение_сообщения_в_почтовом_ящике:абсолютный_путь_к_почтовому_ящику
Каждый раз, когда сам procmail открывает файл для доставки, то он использует ядерные блокировки fcntl(2).

Procmail является NFS-устойчивым и не имеет проблем с 8-ым битом.

ПРИМЕЧАНИЯ

Вызов procmail с -h или -? опциями приведёт к отображению справки командной строки и короткой справки конфигурационных флагов.

Имеется превосходный FAQ для новичков о почтовых фильтрах (и procmail в частности); его ведёт Nancy McGough <nancym@ii.com> и его можно получить отправив сообщение по адресу mail-server@rtfm.mit.edu со следующим содержимым:

send usenet/news.answers/mail/filtering-faq

Вместо использования системного вызова procmail, в момент прибытия почты, вы можете управлять вызовом procmail самостоятельно. В этом случае, ваш $HOME/.forward (убедитесь, чтобы он был доступен всем для чтения) должен содержать строку, указанную ниже. Убедитесь, что вы включили двойные и одинарные кавычки, и если на вашем сайте используется smrsh (the SendMail Restricted SHell), это должен быть абсолютный путь.

"|exec /usr/bin/procmail"

Procmail также может быть вызван для последующей обработки заполненного системного почтового ящика. Это может быть полезно не хотите или не можете использовать файл $HOME/.forward (в этом случае периодически вызывается нижеследующий сценарий из cron(1), или когда вы приступаете к чтению почты):

#!/bin/sh

ORGMAIL=/var/spool/mail/$LOGNAME

if cd $HOME &&
  test -s $ORGMAIL &&
  lockfile -r0 -l1024 .newmail.lock 2>/dev/null
  then
  trap "rm -f .newmail.lock" 1 2 3 13 15
  umask 077
  lockfile -l1024 -ml
  cat $ORGMAIL >>.newmail &&
  cat /dev/null >$ORGMAIL
  lockfile -mu
  formail -s procmail <.newmail &&
  rm -f .newmail
  rm -f .newmail.lock
fi
exit 0
Пример маленького $HOME/.procmailrc
PATH=/bin:/usr/bin:/usr/bin
MAILDIR=$HOME/Mail      #you'd better make sure it exists
DEFAULT=$MAILDIR/mbox   #completely optional
LOGFILE=$MAILDIR/from   #recommended

:0:
* ^From.*berg
from_me

:0
* ^Subject:.*Flame
/dev/null

Другие примеры содержимого файла конфигурации можно найти на страницах руководства пользователя procmailex(5).

ИСХОДНЫЕ ТЕКСТЫ

Эта программа является частью procmail mail-processing-package (v3.22) доступного по адресу http://www.procmail.org/ или ftp.procmail.org in pub/procmail/.

СПИСОК РАССЫЛКИ

Для вопросов относящихся к любой программе, входящей в пакет procmail существуют следующие списки рассылки:
<procmail-users@procmail.org>
для вопросов/ответов.
<procmail-users-request@procmail.org>
для запросов подписки.

Если вы желаете быть в курсе относительно новых версий и официальных патчей, отправьте запрос о подписке по адресу .RS procmail-announce-request@procmail.org (этот лист рассылки работает в режиме "только для чтения").

АВТОРЫ

Stephen R. van den Berg
<srb@cuci.nl>
Philip A. Guenther
<guenther@sendmail.com>
Перевод: Aleksandr Blokhin <sass@altlinux.ru>

Index

НАЗВАНИЕ
СИНТАКСИС
ОПИСАНИЕ
Сигналы
ОПЦИИ
АРГУМЕНТЫ
ПРИМЕРЫ
ФАЙЛЫ
СМОТРИ ТАКЖЕ
ДИАГНОСТИКА
РАСШИРЕННАЯ ДИАГНОСТИКА
ПРЕДОСТЕРЕЖЕНИЯ
ОШИБКИ
ПРОЧЕЕ
ПРИМЕЧАНИЯ
ИСХОДНЫЕ ТЕКСТЫ
СПИСОК РАССЫЛКИ
АВТОРЫ