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

Правила Procmail с регулярным выражением

вот мои рецепты procmail:

:0
* ^Subject: [JIRA] (EDRV-*) *$
.JIRA.edrive/new

:0
* ^Subject: [SPAM] *$
.SPAM/new

:0
* ^X-Spam-Status: Yes
.SPAM/new

:0
* .*
new

Я хочу поместить свои сообщения с [JIRA] (EDRV-XXX) в теме в папку JIRA / edrive почтового ящика, а сообщения с пометкой [SPAM] в теме - в папку SPAM.

Но что я получаю сейчас:

procmail: [8652] Sat Aug 27 19:08:19 2016
procmail: Assigning "SHELL=/bin/bash"
procmail: No match on "^Subject: [JIRA] (EDRV-*) *$"
procmail: No match on "^Subject: [SPAM] *$"
procmail: No match on "^X-Spam-Status: Yes"
procmail: Match on ".*"
procmail: Assigning "LASTFOLDER=new/msg.qVktB"
procmail: Opening "new/msg.qVktB"
procmail: Acquiring kernel-lock
 Subject: [JIRA] (EDRV-100) xxxxxxx
  Folder: new/msg.qVktB><------><------><------><------><------><------>   2795

Где ошибка?

Это очень простая ошибка регулярного выражения. Чтобы соответствовать [ или ( буквально, вы должны экранировать их с помощью обратной косой черты.

То же самое относится к любому метасимволу регулярного выражения - ., *, |, и т.д.

Кроме того, чтобы соответствовать безоговорочно, просто не ставьте никаких условий.

Я предполагаю, что вы на самом деле не хотели разрешать пробелы только после матчей, поэтому я их тоже убрал. Если вы хотите сказать "что-нибудь", это .* в регулярном выражении, но нет смысла иметь условие, которое соответствует чему-либо.

:0
* ^Subject: \[JIRA] \(EDRV-.*\)
.JIRA.edrive/new

:0
* ^Subject: \[SPAM]
.SPAM/new

:0
* ^X-Spam-Status: Yes
.SPAM/new

:0
new

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

Похоже, вы используете вашу почту, хранящуюся в формате Maildir. Не знаю, исключили ли вы заголовок или его нет. Это доставит файлы в соответствующие подкаталоги почты. Он включает файл журнала, чтобы вы могли убедиться, что сообщения были правильно обработаны.

# .procmailrc - procmail configuration file

# Variable definitions
MAILDIR=$HOME/Maildir/
LOGFILE=$MAILDIR/procmail.log
DEFAULT=$MAILDIR

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

:0
* ^Subject: \[JIRA\] \(EDRV-.*\)
.JIRA.edrive/

:0
* ^Subject: \[SPAM\]
.SPAM/

:0
* ^X-Spam-Status: Yes
.SPAM/

# Anything left goes to inbox