Bug 33722 - SOGo: Ошибка в имени папки с третьей буквой "п"
Summary: SOGo: Ошибка в имени папки с третьей буквой "п"
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: libsope (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Ivan Zakharyaschev
QA Contact: qa-sisyphus
URL: https://sogo.nu/bugs/view.php?id=4308
Keywords:
Depends on:
Blocks: 32426
  Show dependency tree
 
Reported: 2017-08-02 17:53 MSK by Igor Golubkov
Modified: 2017-11-05 19:57 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Igor Golubkov 2017-08-02 17:53:51 MSK
При влюченной отладке imap в sogo:
S[0x5649de0f3640]: 4 OK Namespace completed (0.001 + 0.040 + 0.039 secs).
C[0x5649de0d5d30]: 5 LIST "" ""
S[0x5649de0f3640]: * LIST (\Noselect) "/" ""
S[0x5649de0f3640]: 5 OK List completed (0.001 + 0.040 + 0.039 secs).
C[0x5649de0d5d30]: 6 create "INBOX/&BD8EMAQ/BDA-"
S[0x5649de0f3640]: 6 NO Mailbox name is not valid mUTF-7 (0.001 + 0.000 secs).

Другие папки на русском создаются нормально.
При этом созданные через imap папки с "пап" в названии так же не видны через activesync.
Comment 1 Igor Golubkov 2017-08-02 17:54:35 MSK
В общем проблема в том как sogo отдает название папки dovecot'у.
Создал папку пап через imap, имя у нее в mUTF-7: INBOX/&BD8EMAQ,-
А sogo как видно из первого сообщения пытается создать "INBOX/&BD8EMAQ/BDA-"
Comment 2 Andrey Cherepanov 2017-10-06 18:36:05 MSK
Проблема внутри SOGo: папки показываются криво и не создаются, если третьей буквой идёт "п". Например, не создаётся папка "Репка".
Созданные в Thunderbird папки показываются в SOGo как "Паӿка".
Comment 3 Ivan Zakharyaschev 2017-10-06 21:47:15 MSK
More observations at: https://sogo.nu/bugs/view.php?id=4308
Comment 4 Дмитрий Державин 2017-10-06 21:50:20 MSK
Коллеги, просьба, если можно, не переключать язык комментариев — если начали по-русски — продолжать по-русски. И наоборот.

Спасибо!
Comment 5 Ivan Zakharyaschev 2017-10-07 03:56:20 MSK
По-моему, понятно, что это и как это легко теперь исправить.

В sope неправильная реализация mUTF-7 -- https://tools.ietf.org/html/rfc3501#section-5.1.3 !

Собственно, далеко ходить за демонстрацией не надо. В багрепорте:

C[0x5649de0d5d30]: 6 create "INBOX/&BD8EMAQ/BDA-"
S[0x5649de0f3640]: 6 NO Mailbox name is not valid mUTF-7 (0.001 + 0.000 secs).

а должно быть: "INBOX/&BD8EMAQ,BDA-"

(Если separator = . (по умолчанию бывает) , а не / как в этом примере (мне так больше нравится вообще), картина затуманивается ещё и преобразованием внутреннего / в SOGo в .)

А в обратную сторону: откуда берётся этот смешной знак вместо трёх кириллических букв?

В base64 (а следом и в UTF7 и mUTF7) по одному знаку на 6 бит. В UTF7 это 6 бит из строки кодов Unicode (не UTF8), если упростить. Три буквы, которые превращаются не в ту, имеют единицы в последних 6 бит своего кода Unicode. (Заполнить первые 2 бита -- 4 варианта, это эти три буквы, включая "п", и то, во что они превращаются.) 6 бит единиц -- самый большой знак в base64, как раз "/".

В правильном mUTF7 вместо него ",". А sope об этом не знает. Запятая -- недопустимый знак для него, и там в таблице в коде стоит -1. Вот и превращение во все единицы.

Из-за ошибки получается необычно (для нашего представления о позиционной записи): последний младший знак переписывает (своими единицами) то, что дал предыдущий старший знак.
Comment 6 Andrey Cherepanov 2017-10-09 08:25:33 MSK
Похоже, проблема неправильной кодировки в libsope:
sope-mime/NGImap4/NSString+Imap4.m:- (NSString *)stringByEncodingImap4FolderName {
Comment 7 Andrey Cherepanov 2017-10-09 08:26:49 MSK
Точнее, в функции _encodeToModifiedUTF7() в том же файле
Comment 8 Ivan Zakharyaschev 2017-10-09 16:04:38 MSK
Да, это место я исправляю. Жаль, что сразу патч не показал, чтоб было ясно сразу.
Comment 9 Repository Robot 2017-10-10 18:07:26 MSK
sope-3.2.10-alt2 -> sisyphus:

Mon Oct 09 2017 Ivan Zakharyaschev <imz@altlinux.org> 3.2.10-alt2
- mUTF7 corrections (RFC3501) for non-ASCII IMAP folder names
  (ALT: #33722, #32426)
Comment 10 Ivan Zakharyaschev 2017-11-05 19:57:35 MSK
(In reply to comment #4)
> Коллеги, просьба, если можно, не переключать язык комментариев — если начали
> по-русски — продолжать по-русски. И наоборот.

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