Проблемные правила почтового сита
Мне нужно классифицировать мои входящие письма, используя эти три правила:
- если электронное письмо было отправлено на любой @ somedomain.tld, то скопируйте это электронное письмо в "somedomain_tld"
- если электронное письмо было отправлено на любой другой @*.tld, скопируйте его в "others_tlds". (any other = "not somedomain.tld")
- Остальные письма скопируйте в третью папку "Отдых".
Я использую сито dovecot, чтобы сделать это.
Существует дополнительное условие: три вышеуказанных правила должны применяться к каждому адресу "To:" в электронном письме... Так что в наиболее сложном случае электронное письмо должно быть скопировано в три папки
например: следующее письмо должно быть скопировано в три папки:
From: user@someunrelateddomain.anytld
To: myaddress@mydomain.mytld, user@otherdomain.tld, user@somedomain.tld
Subject: Test Email
This is a test email
- Из-за "user@somedomain.tld" это письмо должно быть скопировано в "somedomain_tld"
- Из-за "user@otherdomain.tld" это письмо должно быть скопировано в "others_tlds"
- Из-за "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;
}