---------------------------------------------------------------
Авторы инструкции:
Константин Белозеров (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)