Назад | Перейти на главную страницу

Procmail фильтрация от и тела

У меня есть электронное письмо, созданное сценарием, которое приходит ежечасно. Мне не нужно его видеть, за исключением определенных условий, поэтому я просто хочу, чтобы он был отфильтрован в собственный почтовый ящик. Сообщение приходит от cron, и я хочу быть осторожным, чтобы не отфильтровать другие сообщения cron, только это, основанное на источнике и содержании.

Строка тела (с нее начинается первая строка сообщения), которую я пытаюсь сопоставить:

/etc/cron.hourly/scriptrun:

Вот то, что я придумал, но НЕ работает. Я не уверен, где я ошибся.

:0 HB
* ^From:.*root@ns1.domain.net
* ^Subject: {Cron
* \/etc\/cron.hourly\/scriptrun
.Save/

Любые идеи очень приветствуются.

Непонятно, чему вы хотите сопоставить одну левую фигурную скобку; как сейчас, это синтаксическая ошибка. Я предполагаю, что вы просто хотите, чтобы это совпадало буквально.

:0
* ^From:.*root@ns1\.domain\.net
* ^Subject: \{Cron
* B ?? ^^/etc/cron\.hourly/scriptrun
.Save/

Вы заметите обратную косую черту для буквального соответствия метасимволам регулярного выражения (но косые черты не являются метасимволами, поэтому мы не используем их; и на самом деле, \/ имеет особое значение в Procmail, и не косой чертой!), а B ?? чтобы соответствовать только одному условию против тела. Двойной якорь ^^ это конструкция Procmail, которая соответствует перед первым символом в первой строке (а также после последнего символа в последней строке).

Я также отмечу, что то, что вы видите в своем почтовом клиенте, может сильно отличаться от необработанного сообщения, которое обрабатывает Procmail; например, в составном сообщении MIME первой строке первой части тела будет предшествовать преамбула MIME и граница MIME. Для простого сообщения Cron это вряд ли будет проблемой, но я упоминаю об этом на всякий случай.