2015-06-06 73 views
1

我試圖設置過濾器規則爲sieve添加一個標誌和標題到正則表達式傳入消息,但sieve失敗,只要有主題內的德語元音變音。編碼主體篩失敗

這裏是我的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 

,但我沒有找到一種方法,到目前爲止,這個轉換。

在我的研究,我發現了一個擴展,篩稱爲MIME

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舉(突出是我):

比較是在八位位組執行。實現將所有字符集[012]中的 標題字段的文本轉換爲Unicode,編碼爲UTF-8,作爲 輸入到比較器(請參閱第2.7.3節)。實現必須是能夠轉換US-ASCII,ISO-8859-1, ISO-8859- *字符集,和UTF-8的US-ASCII子集的 。

一切都自動完成。所以,不要求明確的ASCII比較。下面的表達式會做你想要什麼:

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

BTW:如果你的篩濾拋出一個錯誤,這是因爲它並不需要實現所有可選的擴展。您沒有提及您使用的是哪種軟件,因此您只需從SIEVE實施中找出功能字符串,即可瞭解它支持哪些功能(請參閱http://tools.ietf.org/html/rfc5228#page-31)。

希望這會有所幫助,vieleGrüße:-)

+0

Danke!我想通過這種方式! – baao