2015-06-06 2 views
1

Я пытаюсь настроить правила фильтрации для сита, чтобы добавить флаг и заголовок к входящим сообщениям с регулярным выражением, но решает сито, как только в этом вопросе есть немецкий умляут.Сито не работает по закодированным темам

Вот мой sieverule

require ["fileinto","editheader","variables","regex","imap4flags","encoded-character"]; 
if anyof (header :regex :comparator "i;ascii-casemap" "Subject" "([0-9]{3}-[0-9]{7}-[0-9]{7})") 
{ 
     addheader :last "X-OrderID" "${0}"; 
addflag "\\Flagged"; 
     addflag "${0}"; 
} 

Субъект что-то вроде этого:

Rückfrage zur Lieferung einer Bestellung von xxx (Bestellung: 304-1962494-2978192) 

и второе письмо, ü, вызывает тревогу.

Когда я пытаюсь отправить сообщение без него, все работает так, как предполагалось.

Эти сообщения такого типа:

MIME-Version: 1.0 
Content-Type: multipart/mixed; 

Когда есть умляуты в пределах субъекта, он изменяется на

=?UTF-8?Q?R=C3=BCckfrage_zur_Lieferung_einer_Bestellung_von 

, но я не нашел способ преобразовать это до сих пор ,

На моем исследовании я нашел расширение просеивать под названием мим

https://tools.ietf.org/html/rfc5703

Однако, если я пытаюсь требовать его в требуют части моего сценария я получаю сообщение об ошибке, и если я пытаюсь установить его в качестве дополнительного расширения для сита он не перезагружает конфигурацию, заявив, что расширение неизвестно.

Может кто-нибудь помочь мне в исправлении этого?

ответ

3

Невозможно работать таким образом. Прежде всего, вам не нужен require "encoded-character", он уже в базовом наборе (http://tools.ietf.org/html/rfc5228#page-10). Затем вам не нужно anyof. :comparator "i;ascii-casemap" ограничивает класс символов 7-разрядным US-ASCII. Версия MIME для почтового органа не имеет ничего общего с заголовками почты, поэтому RFC5703 не применяется вообще.

Ссылаться из RFC5228 (подсветка будет меня):

Сравнения выполняются на октетов. Реализации преобразуют текст из полей заголовка в все кодировки [MIME3] в Юникод, закодированные как UTF-8, как ввод в компаратор (см. Раздел 2.7.3). Реализации ДОЛЖНЫ быть , способные конвертировать US-ASCII, ISO-8859-1, подмножество US-ASCII в Наборы символов ISO-8859- *, и UTF-8.

Все делается автоматически. Поэтому просто не запрашивайте явное сравнение ASCII. Следующее выражение будет делать то, что вы хотите:

require ["fileinto","editheader","regex","imap4flags"]; 
if header :regex :comparator "i;octet" "Subject" "[[:graph:]]* ([0-9]{3}-[0-9]{7}-[0-9]{7})$" { 
    ... 
} 

КСТАТИ: Если ваш SIEVE фильтр выдает ошибку, это потому, что не нужно выполнять все дополнительные расширения.Вы не указали, какое программное обеспечение вы используете, поэтому для вас вы можете узнать строку возможностей из вашей реализации SIEVE, которая сообщает вам, какие возможности она поддерживает (см. http://tools.ietf.org/html/rfc5228#page-31).

Надеюсь, что это поможет, viele Grüße :-)

+0

Danke! Я понял это так! – baao

 Смежные вопросы

  • Нет связанных вопросов^_^