Оцените этот текст:


---------------------------------------------------------------
 Авторы инструкции:
 Константин Белозеров (kbeloz@dol.ru), http://kbeloz.narod.ru
 http://www.livejournal.com/users/kbeloz/
 Александр Волобуев (alxvol@dol.ru)
 Date: 10 Mar 2000
---------------------------------------------------------------

     Аннотация

     Ниже   приводится  описание  "почти  честной"  русификации  OpenMail'а.
"Почти" -  потому что  при  данном способе OpenMail хранит  сообщения внутри
себя в win-1251, но остается  уверен, что это -- ISO8859-1. Если  кто-нибудь
из  читателей может объяснить,  как объявить OpenMail'у и его клиентам,  что
используемая внутренняя кодировка есть 1251, сообщите нам, пожалуйста.
     Признаться, мы до сих пор  не понимаем, как все  это должно работать  в
идеальном  случае. Данная методика  появилась  как она  есть  от  недостатка
времени и  желания  разбираться  досконально --  рассматриваемый продукт  не
вполне то, чему хотелось бы посвятить остаток жизни :).
     Текст  написан  как  тупая  инструкция.  Кто  хочет  разобраться,   как
составляются  таблицы перекодировки и почему  номера charset'ов начинаются с
1500 -- you are welcome, в man'ах и комментариях в файлах от Hewlett-Packard
все написано. Кто разбираться не хочет -- сия инструкция поможет.
     Описывается  следующая  ситуация  --  все  исходящие   во  внешний  мир
сообщения  преобразовываются в koi8-r, входящие  из внешнего мира в форматах
koi8r, iso8859-5, cp866, koi8-u преобразовываются в win-1251 для Outlook'а -
как  нам  кажется,  наиболее  типичная  на  сегодня конфигурация  (может, за
исключением koi8-u :-)).
     Везде далее ~ - это каталог /var/opt/openmail. Поехали.

     Зарегистрировать кодировки в ~/sys/CSInfo.cfg

     Зарегистрировать кодировки в ~/sys/CSInfo.cfg
     Изменить номер версии VERSION = 2
     Написать:
     CHARSET_NAME = WIN_1251
     CHARSET_NUMBER = 1500
     INTERCHANGE = yes

     CHARSET_NAME = KOI8_R
     CHARSET_NUMBER = 1501
     INTERCHANGE = yes

     CHARSET_NAME = ISO8859_5
     CHARSET_NUMBER = 1502
     INTERCHANGE = yes

     CHARSET_NAME = CP866
     CHARSET_NUMBER = 1503
     INTERCHANGE = yes

     CHARSET_NAME = KOI8_U
     CHARSET_NUMBER = 1504
     INTERCHANGE = yes

     Зарегистрировать кодировки в ~/sys/CharMap

     Зарегистрировать кодировки в ~/sys/CharMap
     OMCHAR=WIN_1251
     OMSTDID=1500

     OMCHAR=KOI8_R
     OMSTDID=1501

     OMCHAR=ISO8859_5
     OMSTDID=1502

     OMCHAR=CP866
     OMSTDID=1503

     OMCHAR=KOI8_U
     OMSTDID=1504


     Прописать соответствие между зарегистрированными кодировками OpenMail и
кодировками MIME в ~/sys/mime.cs

     Прописать соответствие между зарегистрированными кодировками OpenMail и
кодировками MIME в ~/sys/mime.cs
     Написать (подумав о  том, что в поле  charset пишут мэйлеры, с которыми
вам  приходится  работать  -- со  всеми сумасшедшими справиться  нельзя,  но
постараться стоит, не так ли?):
     KOI8_R koi8-r
     ISO8859_5 iso-8859-5
     CP866 cp866
     WIN_1251 windows-1251
     KOI8_U koi8-u
     И т.п.

     Указать перекодировку в ~/sys/mimeout.str

     Указать перекодировку в ~/sys/mimeout.str
     Закомментировать строку после слов # Preserve ISO 8859 text
     Написать
     1167.ISO8859_1 1167.KOI8_R R

     Создать ~/sys/mimein.str

     Создать ~/sys/mimein.str
     Скопировать  в  mimein.str  файл  mimeout.str,  изменить   заголовок  и
написать
     1167.WIN_1251 1167.ISO8859_1 R
     1167.KOI8_R 1167.ISO8859_1 R
     1167.CP866 1167.ISO8859_1 R
     1167.ISO8859_5 1167.ISO8859_1 R
     1167.KOI8_U 1167.ISO8859_1 R

     Подложить   файлы    из    omcyrenc.tar    (прилагается)    в   каталог
~/csetconvПодложить файлы из omcyrenc.tar (прилагается) в каталог ~/csetconv

     Удалить ~/sys/CSTables.ld, ~/sys/LCMap.bin
     Выполнить

     Удалить ~/sys/CSTables.ld, ~/sys/LCMap.bin
     Выполнить
     omconfsm -f CSInfo.cfg
     omconfsm --f CharMap
     omconfsm --f CSTables.ld
     omconfsm --f LCMap.bin
     omconfsm --f csetconv[AV1][KBB2]


     Перезапустить OpenMail,  не веря  утверждениям,  что после перестроения
shared memory (omconfsm) все заработает. Не заработает, перезапустите.

     Все.


     Примечания для тех, кому не спится.

     Примечания для тех, кому не спится.
     Еще  один  файл,  который  надо  бы  поправить,  находится  в  каталоге
~/upper[AV3]. Зачем его править, не вполне ясно, так как неизвестно, в каких
ситуациях  OpenMail   производит  преобразование  из  строчных   символов  в
прописные. Но, поскольку наша  8859-1 на самом деле 1251, правим  файл 500.s
(правки немного, кто захочет, тот разберется) и вытираем файл 500.b.
     Прилагаемые файлы перекодировок  получены совершенно  механически путем
перекрестного сопоставления соответствующих  кодовых  таблиц через  Unicode.
Символы, отсутствующие в целевой таблице, превращаются в вопросительный знак
0x3F.  Естественно,  при  этом  игнорируется  то,  что некоторые  идеограммы
исходной таблицы при творческом подходе могут быть преобразованы в хотя и не
идентичные, но сходные идеограммы  целевой (например, псевдографика из koi и
866 при перекодировании в 1251 --  в символы  '-', '|' и т.п.). Есть простор
для деятельности.
     Компиляцию  текстовых  таблиц  из  csetconv  и   upper[AV4]  производит
программа  omconfsm, которая очень плохо  относится  к  не приглянувшимся ей
исходным  данным.  В  частности,  выяснилось, что  шестнадцатиричные  цифры,
большие девяти, должны быть написаны исключительно маленькими буквами (0xab,
но не 0xAB). Файл,  в котором omconfsm померещилась  ошибка, игнорируется, а
по записям в логе  ничего понять нельзя. Такое впечатление, что все это дело
писали вчерашние школьники :(
     Вытяжка из  документа IANA по поводу допустимых названий  кириллических
charset'ов (то есть что при некотором фанатизме можно написать в mime.cs. Мы
не стали):

     Name: KOI8-R (preferred MIME name)
     Alias: csKOI8R

     Name: windows-1251

     Name: ISO_8859-5:1988
     Alias: iso-ir-144
     Alias: ISO_8859-5
     Alias: ISO-8859-5 (preferred MIME name)
     Alias: cyrillic
     Alias: csISOLatinCyrillic

     Name: IBM866
     Alias: cp866
     Alias: 866
     Alias: csIBM866

     Name: KOI8-U

     [AV1] Если перезапускать все полностью, то этот шаг лишний.
     [KBB2]Ты  где  это  проверял? По  моим  наблюдениям,  без  обоих  шагов
плоховато.
     [AV3] Или toupper? Вот этого не помню, и посмотреть возможности нет.
     [AV4] Еще одно упоминание upper.



Таблицы перекодировок для кирилизации OpenMail (omcyrenc.tar, 20Kb)

Last-modified: Mon, 12 Apr 2004 20:13:18 GMT
Оцените этот текст: