procmail — это программный компонент сервера электронной почты , в частности, агент доставки сообщений (MDA). Это была одна из первых программ фильтрации почты . Обычно он используется в Unix-подобных почтовых системах с использованием форматов хранения mbox и Maildir .
procmail был впервые разработан в 1990 году Стивеном Р. ван ден Бергом. [1] Филип Гюнтер взял на себя обязанности по сопровождению в течение нескольких лет, но отказался от этой роли в 2014 году . [2] Программное обеспечение оставалось необслуживаемым в течение нескольких лет и считалось несуществующим. [3] В мае 2020 года Стивен ван ден Берг снова возобновил техническое обслуживание. [4] С тех пор программа выходила в нескольких выпусках и исправляла ошибки.
Наиболее распространенным вариантом использования procmail является фильтрация почты по различным почтовым ящикам на основе таких критериев, как адрес отправителя , ключевые слова темы и/или адрес списка рассылки . [5] [6]
Другое использование — позволить procmail вызывать внешнюю программу спам-фильтра , такую как SpamAssassin . Этот метод позволяет фильтровать или удалять спам.
Разработчики procmail создали менеджер списков рассылки SmartList поверх procmail.
Procmail — ранний пример инструмента и языка фильтрации почты. Это язык программирования, управляемый данными , похожий на более ранние строчно-ориентированные языки, такие как sed и AWK .
procmail читает почтовые сообщения, переданные ему на стандартный ввод , доставляя или иным образом уничтожая каждое из них. procmail обычно не вызывается пользователем напрямую. Скорее, какая-нибудь другая почтовая программа обратится к procmail для доставки сообщения в соответствии с пожеланиями пользователя. Агенты передачи сообщений (MTA), такие как Sendmail или Postfix , можно настроить на использование procmail для доставки всей почты. Агент получения почты , такой как fetchmail, может при необходимости вызывать procmail. Сопутствующий инструмент formail позволяет применять procmail к почте, уже находящейся в почтовом ящике.
Поведение procmail контролируется файлом конфигурации (по умолчанию .procmailrc в домашнем каталоге пользователя ), содержащим один или несколько рецептов , читаемых по порядку. Каждый рецепт состоит из режима , нуля или более условий и действия .
Условия обычно представляют собой расширенные регулярные выражения , хотя существуют и другие формы. Действие рецепта выполняется только в том случае, если все условия совпадают (логическое И). Если условия не заданы, рецепт является безусловным и действие выполняется всегда.
Действие определяет, что следует сделать с сообщением, например доставить его в определенный почтовый ящик или удалить. Рецепт и его действие могут быть доставляющими или не доставляющими . Обработка данного сообщения прекращается с первым рецептом доставки (если флаг режима рецепта не указывает иное).
Простой файл конфигурации .procmailrc может выглядеть так:
MAILDIR=$HOME/почта DEFAULT=$MAILDIR/входящие :0: * ^List-Id: .*<[email protected]> Фу-анонс
Приведенный выше пример маршрутизирует почту из гипотетического списка рассылки в отдельный почтовый ящик с именем foo-announce , а всю остальную почту доставляет в почтовый ящик «Входящие» , оба из которых расположены в каталоге $HOME/mail/ .
По умолчанию procmail «отправляет» недоставленную почту обратно отправителю или полностью отбрасывает ее. Ошибка в файле конфигурации может привести к тому, что вся почта будет отклонена или удалена.
Формат файла конфигурации иногда считается загадочным.
procmail не очень хорошо подходит для обработки почты с использованием многоцелевых расширений почты Интернета (MIME). Он не может декодировать или распознавать заголовки MIME или международные символы .
В течение примерно десяти лет procmail не поддерживался, и за это время было обнаружено множество серьезных уязвимостей безопасности [7] [3] (с тех пор как они были исправлены).
Авторские права (c) 1990–2022, С.Р. ван ден Берг, Нидерланды. Авторские права (c) 1997–2005 гг., Филип Гюнтер, Соединенные Штаты Америки.
По состоянию на май 2020 года состояние бездействия восходящего обслуживания procmail было снова изменено на активное.
Как может подтвердить Сантьяго Вила, последние два года я снова занялся активной поддержкой procmail...