Procmail: найти письма, отправленные с одного и того же адреса и на один и тот же адрес?

Procmail: найти письма, отправленные с одного и того же адреса и на один и тот же адрес?

Есть ли способ с procmail(или что-то еще?) поиска электронной почты, где поля from:и to:содержат один и тот же адрес? И можно ли это сделать без необходимости жесткого кодирования каждого адреса электронной почты в рецепте?

В основном я пытаюсь найти письма, где отправитель отправляет письмо на свой адрес, а затем всем остальным делает скрытую копию. Обычно я использую notmuchи меня это устраивает, но это не может сделать то, чего я пытаюсь добиться здесь. notmuchможет работать вместе с procmail, поэтому я надеялся, что кто-то, кто procmailдействительно хорошо разбирается, сможет помочь и таким образом избавить меня от необходимости изучать совершенно новую систему фильтрации, чтобы сделать это одно дело.

решение1

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

:0
*   ^From:[     ]*\/[^  ].*
* $ ^To:[   ]*$\MATCH
{ ... actions ... }

Оператор \/захвата собирает соответствующую строку в специальную переменную MATCH. На следующей строке мы ищем ту же строку в To:заголовке. Где $MATCHсодержит захваченную строку, $\MATCHсодержит регулярное выражение, в котором все специальные символы регулярного выражения в строке были экранированы, чтобы соответствовать буквально. Модификатор $требуется в рецепте, чтобы разрешить интерполяцию переменных Procmail в регулярное выражение.

При этом используется обычный символ [ ]*(пробел или табуляция, ноль или более) для пропуска пробелов после двоеточия, а затем захватывается все, начиная с первого непробельного символа.

На практике это означает, что заголовки From:и To:должны иметь одинаковое содержимое. Если отправитель вставляет другое "настоящее имя" (которое технически является просто комментарием), этот рецепт не совпадет. Например,

From: Myself <[email protected]>
To: Everyone <[email protected]>

Здесь конечная точка электронной почты идентична, но все поле отличается. Если вам нужно справиться с этим сценарием, возможно, измените регулярное выражение, чтобы оно сопоставлялось через первую <перед \/но это, очевидно, будет зависеть от точных строк, которые вам нужно сопоставить; есть много возможных вариаций.

Связанный контент