[Dovecot] Bug report: "doveadm rename" encodes special characters wrongly in mUTF-7 (in fs)
megodin at inboxalias.com
megodin at inboxalias.com
Tue Sep 24 17:07:38 EEST 2013
> If doveadm says it's invalid UTF-8, it's invalid UTF-8. I guess your
> terminal isn't actually using UTF-8 then, but something else. ("locale"
> output should say something about UTF-8.) I guess doveadm could also
> automatically translate parameters to UTF-8, but that's a bit annoying
> to implement.
You were absolutely right. After thorough testing I could make up the
problem to the SSH-Client PuTTY I was using on a Windows machine while
testing. The default "remote character setting" is
"ISO-8859-1:1998 (Latin-1, West Europe)", when re-setting to "UTF-8",
opening a new shell and testing the "doveadm mailbox rename ..." with
german umlauts just works fine then.
(Just for the sake of completeness, the "locale" settings were set to
(LANG=de_DE.utf-8) globally in /etc/sysconfig/i18n per default.)
> The problem here is that * is expanded by your shell, not doveadm.
> And it expands into Tr&-AOQ-sh as it's in the filesystem, but that's
> only the mUTF-7 encoding of it. The UTF-8 version of the name is
> Tr&AOQ-sh. So doveadm only sees that you attempted to resync a
> nonexistent mailbox. Using '*' with quotes would work, since doveadm
> would do the expansion then.
Thanks for pointing that * / '*' issue out.
I now unterstand that the "doevadm mailbox rename" converts the input
to UTF _before_ applying it in the filesystem.
Now it makes sense that
doveadm mailbox rename -u user 'Trash' 'Tr&AOQ-sh'
must be expanded to Tr&-AOQ-sh. The "-" character directly after the
"&"in Tr&-AOQ-sh comes from a special mUTF-Specification (as stated in
RFC 3501, section 5.1.3):
"In modified UTF-7, printable US-ASCII characters, except for "&",
represent themselves; that is, characters with octet values 0x20-0x25
and 0x27-0x7e. The character "&" (0x26) is represented by the
two-octet sequence "&-"."
So e.g. if I wanted a german umlaut to be encoded in the filesystem,
I must enter it directly into dovedm instead of the UTF encoded value.
One small point left...
> The UTF-8 version of the name is Tr&AOQ-sh
Just for understanding - "Tr&AOQ-sh" is IMHO UTF-7, not UTF-8.
Accordingly to what stated before, "Tr&-AOQ-sh" and "Tr&AOQ-sh" are
encoded both the same (UTF-7), the first seen in clients as
"Tr&AOQ-sh" and the second as "TrÃ¤sh".
Thanks for all your help!
Alle PostfÃ¤cher an einem Ort. Jetzt wechseln und E-Mail-Adresse mitnehmen! http://email.freenet.de/basic/Informationen
Send and receive anonymous emails to your inbox with InboxAlias.
More information about the dovecot