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

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

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

Я использую сито dovecot, чтобы сделать это.

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

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

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" это письмо должно быть скопировано в "rest"

Требовать и первое правило легко:

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 я понятия не имею.

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

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

1 ответ

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;
}
Другие вопросы по тегам