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

Проблемные правила почтового сита

Мне нужно классифицировать мои входящие электронные письма, используя следующие три правила:

  1. если письмо было отправлено на любой @ somedomain.tld, затем скопируйте это письмо в "somedomain_tld"
  2. если письмо было отправлено на любой другой @ *. tld, затем скопируйте это письмо в "others_tlds". (любой другой = "не somedomain.tld")
  3. Остальные письма скопируйте в третью папку «остальные».

Для этого я использую правила сита голубятни.

Существует дополнительное условие: три приведенных выше правила должны применяться к каждому адресу «Кому:» в электронном письме ... Таким образом, в самом сложном случае электронное письмо следует скопировать в три папки.

например: следующее электронное письмо нужно скопировать в три папки:

From: user@someunrelateddomain.anytld
To: myaddress@mydomain.mytld, user@otherdomain.tld, user@somedomain.tld
Subject: Test Email

This is a test email
  1. Из-за "user@somedomain.tld" это электронное письмо следует скопировать в "somedomain_tld"
  2. Из-за "user@otherdomain.tld" это электронное письмо следует скопировать в "others_tlds"
  3. Из-за "myaddress@mydomain.mytld" это электронное письмо следует скопировать в "отдых"

Требовать и первое правило очень просто:

require ["fileinto","copy"];
if address :is :domain "to" "somedomain.tld" { fileinto :copy "somedomain_tld"; }

но второй не умеет это делать:

if address :matches :domain "to" "*.tld" { fileinto :copy "others_tlds"; }

также будет соответствовать somedomain.tld, что не предназначено ... (если у меня есть электронное письмо с "To: user@somedomain.tld", оно будет скопировано в somedomain_tld (OK) и others_tlds (BUG))

Для №3 я понятия не имею.

Я также думал о регулярных выражениях, но я не знаю, как выразить «каждый домен, кроме этого» в регулярном выражении решета (или любом другом стиле регулярного выражения)

Кто-нибудь знает как гнуть сито голубятни, чтобы сделать 1,2,3?

require ["fileinto"];
if header :contains "To" "domain.tld"
{
        fileinto "INBOX/domain_tld";
        stop;
}
if header :contains "To" ".tld"
{
        fileinto "INBOX/other_tld";
        stop;
}
if true
{
        fileinto "INBOX/rest";
        stop;
}