Need to discard emails to and from ending in a specific TLD but having an issue, example of a filter:
if first_delivery
and ("$h_to:, $h_cc:" contains ".win$")
or ("$h_from:" contains ".win$")
then
seen finish
endif
The problem with this is, it not only matches
user@domain.win
but also
something.wintest@domain.com
How can we write it so it only affects the TLD itself?
Прежде всего, содержит
не поддерживает регулярные выражения.
Кроме того, вам нужно правильно экранировать любые символы, которые имеют особое значение на этапе раскрытия переменной exim ( такие как $
и \
), которые должны оставаться на фактическом этапе сравнения.
(Вероятно, причина, по которой ваш фильтр вообще что-либо соответствует, заключается в том, что $
интерпретируется как несуществующая переменная и просто исчезает на этапе раскрытия переменных, который происходит перед сравнением строк.)
Параметры, которые выглядят так, как будто они должны работать, - это концы
(сравнение строк для конец строки) и соответствует
(соответствие регулярному выражению).
Например,
if $h_from: ends ".win"
или
if $h_from: matches \\.win\$
или (если вы хотите использовать кавычки, например, если в выражении будут пробелы)
if $h_from: matches "\\\\.win\\$"
См. Раздел 22. Подробности см. В разделе «Условия тестирования строки» в руководстве по фильтру exim.