Я недавно начал дорабатывать свои ситовые правила и стал немного неуверенным в том, как :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)
условие1 или условие2) и if allof (condition1, condition2)
условие1, условие2) означает if (условие1 и условие2 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;
}
... или что-то совсем другое.