У меня есть электронное письмо, созданное сценарием, которое приходит ежечасно. Мне не нужно его видеть, за исключением определенных условий, поэтому я просто хочу, чтобы он был отфильтрован в собственный почтовый ящик. Сообщение приходит от 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 это вряд ли будет проблемой, но я упоминаю об этом на всякий случай.