<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>33722</bug_id>
          
          <creation_ts>2017-08-02 17:53:51 +0300</creation_ts>
          <short_desc>SOGo: Ошибка в имени папки с третьей буквой &quot;п&quot;</short_desc>
          <delta_ts>2017-11-05 19:57:35 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>libsope</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://sogo.nu/bugs/view.php?id=4308</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32426</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Igor Golubkov">BcTpe4HbIu</reporter>
          <assigned_to name="Ivan Zakharyaschev">imz</assigned_to>
          <cc>aen</cc>
    
    <cc>cas</cc>
    
    <cc>dd</cc>
    
    <cc>imz</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>164997</commentid>
    <comment_count>0</comment_count>
    <who name="Igor Golubkov">BcTpe4HbIu</who>
    <bug_when>2017-08-02 17:53:51 +0300</bug_when>
    <thetext>При влюченной отладке imap в sogo:
S[0x5649de0f3640]: 4 OK Namespace completed (0.001 + 0.040 + 0.039 secs).
C[0x5649de0d5d30]: 5 LIST &quot;&quot; &quot;&quot;
S[0x5649de0f3640]: * LIST (\Noselect) &quot;/&quot; &quot;&quot;
S[0x5649de0f3640]: 5 OK List completed (0.001 + 0.040 + 0.039 secs).
C[0x5649de0d5d30]: 6 create &quot;INBOX/&amp;BD8EMAQ/BDA-&quot;
S[0x5649de0f3640]: 6 NO Mailbox name is not valid mUTF-7 (0.001 + 0.000 secs).

Другие папки на русском создаются нормально.
При этом созданные через imap папки с &quot;пап&quot; в названии так же не видны через activesync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164998</commentid>
    <comment_count>1</comment_count>
    <who name="Igor Golubkov">BcTpe4HbIu</who>
    <bug_when>2017-08-02 17:54:35 +0300</bug_when>
    <thetext>В общем проблема в том как sogo отдает название папки dovecot&apos;у.
Создал папку пап через imap, имя у нее в mUTF-7: INBOX/&amp;BD8EMAQ,-
А sogo как видно из первого сообщения пытается создать &quot;INBOX/&amp;BD8EMAQ/BDA-&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166200</commentid>
    <comment_count>2</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2017-10-06 18:36:05 +0300</bug_when>
    <thetext>Проблема внутри SOGo: папки показываются криво и не создаются, если третьей буквой идёт &quot;п&quot;. Например, не создаётся папка &quot;Репка&quot;.
Созданные в Thunderbird папки показываются в SOGo как &quot;Паӿка&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166204</commentid>
    <comment_count>3</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2017-10-06 21:47:15 +0300</bug_when>
    <thetext>More observations at: https://sogo.nu/bugs/view.php?id=4308</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166205</commentid>
    <comment_count>4</comment_count>
    <who name="Дмитрий Державин">dd</who>
    <bug_when>2017-10-06 21:50:20 +0300</bug_when>
    <thetext>Коллеги, просьба, если можно, не переключать язык комментариев — если начали по-русски — продолжать по-русски. И наоборот.

Спасибо!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166207</commentid>
    <comment_count>5</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2017-10-07 03:56:20 +0300</bug_when>
    <thetext>По-моему, понятно, что это и как это легко теперь исправить.

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

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

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

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

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

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

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

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

Из-за ошибки получается необычно (для нашего представления о позиционной записи): последний младший знак переписывает (своими единицами) то, что дал предыдущий старший знак.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166223</commentid>
    <comment_count>6</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2017-10-09 08:25:33 +0300</bug_when>
    <thetext>Похоже, проблема неправильной кодировки в libsope:
sope-mime/NGImap4/NSString+Imap4.m:- (NSString *)stringByEncodingImap4FolderName {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166224</commentid>
    <comment_count>7</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2017-10-09 08:26:49 +0300</bug_when>
    <thetext>Точнее, в функции _encodeToModifiedUTF7() в том же файле</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166248</commentid>
    <comment_count>8</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2017-10-09 16:04:38 +0300</bug_when>
    <thetext>Да, это место я исправляю. Жаль, что сразу патч не показал, чтоб было ясно сразу.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166264</commentid>
    <comment_count>9</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2017-10-10 18:07:26 +0300</bug_when>
    <thetext>sope-3.2.10-alt2 -&gt; sisyphus:

Mon Oct 09 2017 Ivan Zakharyaschev &lt;imz@altlinux.org&gt; 3.2.10-alt2
- mUTF7 corrections (RFC3501) for non-ASCII IMAP folder names
  (ALT: #33722, #32426)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166971</commentid>
    <comment_count>10</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2017-11-05 19:57:35 +0300</bug_when>
    <thetext>(In reply to comment #4)
&gt; Коллеги, просьба, если можно, не переключать язык комментариев — если начали
&gt; по-русски — продолжать по-русски. И наоборот.

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

    </bug>

</bugzilla>