dovecot2.4.4にアップグレードしたらSieveのheader :regexで日本語Subjectが文字化けした

Rocky Linux 9 (Dovecot 2.3系) から AlmaLinux 10 (Dovecot 2.4.4) へメールサーバを移行したところ、WordPress(Postie)へメール投稿する際に件名が文字化けするようになった。

例えば、“ランドセル” という件名が、 “ランドセル” のように文字化けする。 最初はPostie や WordPress、phpなどを疑ったが、原因はその前に件名を修正していた Sieve の header :regex にありました。

状況

もともと使用していた Sieve ルールは件名の先頭に日付(YYYY/MM/DD)を挿入する以下のようなもの。

require ["editheader","fileinto","regex","variables","date"];

if header :regex "Subject" "(.*)" {
    set "subj" "${1}";
    deleteheader :regex "Subject" ".*";
    addheader "Subject" "2026/07/14 ${subj}";
}

Rocky Linux 9 (Dovecot 2.3系) では想定通りに動作していました。

対応

Pigeonhole 2.4 系では regex が Unicode comparator をサポートしたことに気付きました。(Chatgptが) 比較器を明示すると想定通り動作します。

require [
    "editheader",
    "fileinto",
    "regex",
    "variables",
    "date",
    "comparator-i;unicode-casemap"
];

if header :comparator "i;unicode-casemap"
          :regex "Subject" "(.*)"
{
    set "subj" "${1}";
    deleteheader :regex "Subject" ".*";
    addheader "Subject" "2026/07/14 ${subj}";
}