Нещодавно я почав вдосконалювати свої правила сит і став трохи не впевнений у тому, як :contains
насправді це працює. Я перевірив http://sieve.mozdev.org/reference.html, але все ще не з'ясував питання, яке було у мене.
Скажіть, у мене є таке правило:
if
header :contains ["List-Id", "X-Mailinglist", "X-Mailing-List"] [
"ros-dev.reactos.org",
"ros-general.reactos.org"
]
{
fileinto "Lists/ReactOS";
stop;
}
чи означає це (і це було б моє уявлення про те, як я хочу, щоб воно працювало) автоматично, що будь-яке з перерахованих полів заголовка ["List-Id", "X-Mailinglist", "X-Mailing-List"]
повинно містити будь-яке із заданих значень ["ros-dev.reactos.org", "ros-general.reactos.org"]
або потрібно сказати прямо if anyof (...)
так:
if anyof (
header :contains ["List-Id", "X-Mailinglist", "X-Mailing-List"] [
"ros-dev.reactos.org",
"ros-general.reactos.org"
]
)
{
fileinto "Lists/ReactOS";
stop;
}
... для цього бажаного результату? Або ж ці два списки не відповідають кожному елементу першого по кожному елементу другого списку в будь-якому випадку ?
NB: Я знаю, що на умови, розділені комами, впливають anyof
і allof
відповідно. Так if anyof (condition1, condition2)
означає (псевдокод) if (condition1 or condition2)
і if allof (condition1, condition2)
означає if (condition1 and condition2)
. Розуміння цього аспекту - не моя проблема.
Однак я не розумію, чи впливає anyof
і, allof
відповідно, один чи обидва списки у :contains
пункті . У наведеному вище прикладі є список для заголовкових полів та список значень, які мають відповідати.
По суті питання зводиться до того, існує чи ні семантична різниця між двома наведеними вище фрагментами. А якщо ні, то чи означає це перший :
if anyof (
header :contains ["List-Id", "X-Mailinglist", "X-Mailing-List"] "ros-dev.reactos.org",
header :contains ["List-Id", "X-Mailinglist", "X-Mailing-List"] "ros-general.reactos.org"
)
{
fileinto "Lists/ReactOS";
stop;
}
... або це:
if allof (
header :contains ["List-Id", "X-Mailinglist", "X-Mailing-List"] "ros-dev.reactos.org",
header :contains ["List-Id", "X-Mailinglist", "X-Mailing-List"] "ros-general.reactos.org"
)
{
fileinto "Lists/ReactOS";
stop;
}
... або щось інше взагалі.