1

正規表現を使用して着信メッセージにフラグとヘッダーを追加するように sieve のフィルター ルールを設定しようとしていますが、件名にドイツ語のウムラウトがあるとすぐに sieve が失敗します。

これが私のふるいです

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)

2 番目の文字 ,üが問題を引き起こしています。

それなしでメッセージを送信しようとすると、すべてが想定どおりに機能します。

メッセージのタイプは次のとおりです。

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

件名にウムラウトがある場合は、

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

しかし、これまでのところこれを変換する方法が見つかりませんでした。

私の調査で、mime と呼ばれる sieve の拡張機能を見つけました。

https://www.rfc-editor.org/rfc/rfc5703

ただし、スクリプトの必須部分でそれを要求しようとすると、エラーが発生し、ふるいに追加の拡張機能として設定しようとすると、拡張機能が不明であると言って構成がリロードされません。

誰かがこれを修正するのを手伝ってくれますか?

4

1 に答える 1

3

このようには機能しません。まず第一に、あなたは必要ありませんrequire "encoded-character"、それはすでに基本セットにあります ( https://www.rfc-editor.org/rfc/rfc5228#page-10 )。次に、ここは必要ありませんanyof。は:comparator "i;ascii-casemap"、文字クラスを 7 ビット US-ASCII に制限します。メール本文の MIME バージョンはメール ヘッダーとは関係がないため、RFC5703 はまったく適用されません。

RFC5228 から引用するには (強調表示は私です):

比較はオクテットで実行されます。実装は、コンパレータへの入力として、すべての文字セット [MIME3] のヘッダー フィールドからテキストを UTF-8 としてエンコードされた Unicode に変換します (セクション 2.7.3 を参照)。実装は、US-ASCII、ISO-8859-1、ISO-8859-* 文字セットの US-ASCII サブセット、および 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 実装から機能文字列を見つける練習として残しておきます。これにより、サポートされている機能が示されます ( https://www.rfc-editor.orgを参照)。 /rfc/rfc5228#page-31 )。

これがお役に立てば幸いです、viele Grüße :-)

于 2015-09-25T07:10:14.627 に答える