хочу сюди!
 

Ірина

48 років, телець, познайомиться з хлопцем у віці 48-56 років

Замітки з міткою «freebsd»

Робочі моменти системного адміністратора.. FreeBSD

Робочі моменти: коли через сервер FreeBSD перестала відправлятися пошта... 
blind  Звичайна робота системного адміністратора: з ранку помітив, що через старий, але нормально працюючий (основний принцип роботи системного адміністоратора - "працює - не чіпай") сервер на віртуальній машині  під управлінням FreeBSD 6.2 перестала відправлятися пошта. Причина була знайдена відразу: після перевірки вільного місця на диску за допомгою команди df -h - її кожний системний адміністор UNIX-систем повинен знати, як "отче наш" - показала, що весь розділ (точніше, файл, але для зрозумілості напишемо, що "розділ") /var/ зайнятий. Що ж, трапляється й таке, оскільки в цей розділ системні та прикладні програми записують журнали, які не завжди автоматично видаляються, може переповнити. 

Проте перевірка за допомогою команти du -h показала, що зайнято (повинно бути) там не так вже й багато - приблизно 20% .  У кого ж "негаразди" з арифметкою? З таким питання вирішив звернутися до штучного інтелекту - GhatGPT та Gemini Google  -  і обидва вони дали майже однакові відповіді - пишу дещо "вільний" переклад українською мовою, оскільки оригінал був англійською:
"зазвичай, хоч не завжди, це виникає через те, що файли, які були видалені, проте в момент видалення були "захоплені" якимось процесом.." - і далі я просто вже через пошук знайшов більше детально, що потрібно було робити, бо причина стала очевидною: журнали - в моєму випадку сервера Apache - обов'язково могли бути "захопленими", посилання тут - https://rtfm.co.ua/ru/unix-df-i-du-raznye-znacheniya/  
За цим посиланням була також інструкція, що робити в такому випадку, але я вирішив, що простіше зробити звичайний reboot сервера. 
smile Після цього все запрацювало нормально -- різниця між командами " df -h " та " du -h " практично зникла. 

poka Додатково: 

Создание виртуальной машины FreeBSD 6

Создание виртуальной машины freebsd6 из работающей на физическом сервере.

1) подключаем к материнcкой плате по SATA жесткий диск на который будет происходить первичный перенос данных

2) загружаем FreeBSD в однопользовательском режиме, он же single user mode; 

3) даем команду dd if=/dev/aacd0 of=/dev/ad8 bs=1024k (скопировать с диска /dev/aacd0, в нашем случае это ADAPTEC RAID на диск /dev/ad8, в нашем случае это serwerworks sata контроллер с буфером 1 мегабайт.  Размер буфера влияет на скорость, крайне малый размер очень сильно замедляет процесс. Мегабайт – вполне нормальная величина, увеличивали до 4 – даже немного замедлилось. На экране ничего не происходит всё время пока идет копирование, в нашем случае копирование длилось 2300 секунд, это порядка 40 минут. объем диска 140 гигабайт. 

4) подключаем диск уже через USB-адаптер к серверу с proxmox

5) редактируем файл конфигурации виртуальной машины. 
Стоит отметить что FreeBSD 6 туповато и умеет грузится с ide и не умеет грузится например с virtio. Поэтому добавляем в файл конфигурации строку ide1: /dev/sde ( /dev/sde – название нашего внешнего USB-диска. Название можно узнать в Web-интерфейсе  Proxmox – датацентр – ns1 - диски

6) выбираем загрузку с ide1. Если все более менее нормально, FreeBSD начнет загружаться с USB-диска, при загрузке выбираем однопользовательский режим, он же single mode. Поскольку fstab на нем неправильный, нас спрашивают, что же монтировать в качестве директории root. Указываем ufs:/dev/ad1s1  -- первый слайс IDE-диска 1.

7) даем команду geom  и видим список дисков – в нашем случае ad0 – это 140 гигабайтный диск виртуальной машины, ad1 это 750-гигабайтный USB-диск с ранее сделанной копией на нем. 

8) даем команду dd if=/dev/ad1 of=dev/ad0 bs=1048576 count=139749Сделать копию с 750 гб диска на 140 гб диск.
Поскольку 750 гб явно больше чем 140, надо явно указать сколько же байт нам надо переместить с одного диска на другой.  Указываем размер блока 1048576 (мегабайт) и количество перемещаемых блоков, равное объему изначального диска в двоичных мегабайтах.). в нашем случае копировалось около 45 минут. 

9) отключаем виртуальную машину и правим её конфигурацию удаляя ide1. выбираем загрузку с ide0.

10) нас спрашивают что монтировать в качестве root. Указываем ufs:/dev/ad0s1

11) даем команду mount –w /dev/ad0s1 / - теперь мы можем вносить изменения на диск, а именно редактировать fstab

12) даем команду ee /etc/fstab  и правим fstab меняя в нем названия слайсов на ad0s1,ad0s2 и так далее

13) все рaботает.

14) остается лишь откорректировать, при необходимости, конфигурационные файлы /etc/rc.conf и файлы сценариев брандмауера, чтобы заменить названия сетевых интерфейсов.

Криптографія в FreeBSD


FreeBSD є однією з моїх улюблених Linux-систем. Вона звісно не була першою в списку ОС сімейства Linux які я використовував, однак стала тою системою, робота з якою у мене є найтривалішою. Це і настільна версія FreeBSD, а також звичайна серверна версія (стоїть у мого хостинг-провайдера) з якою мені часто доводиться мати справу. Люблю я цього червоного демона :) Отож васшій увазі представляється переклад статті про криптографію у чудовій FreeBSD.

Asterisk на FreeBSD. Установка и минимальная настройка.

Asterisk – это программная АТС.
Основные возможности:

    Звонки абонентов друг другу бесплатно, используя как программный телефон, так и хардварный ИП-телефон.
    Бесплатные звонки клиентам Skype
    Голосовая почта
    Конференции
    Музыка ожидания
    Звонки на городские
    Звонки на сотовые
    Очередь вызовов

Установка Asterisk производилась на FreeBSD версии 7.1 . Она не находится за шлюзом, имеет свой белый IP.
Не устанавливаю из /usr/ports/net/asterisk , так как проинсталилась версия 1.8 и подружить её с веб-интерфейсом не удалось.

Ставлю asterisk 1.4 из портов:
cd /usr/ports/net/asterisk14/
make config

Options for asterisk14 1.4.37_1
[X] OGGVORBIS Enable Ogg Vorbis support
[X] ODBC Enable ODBC support
[ ] POSTGRES Enable PostgreSQL support
[ ] RADIUS Enable RADIUS accounting support
[X] SNMP Enable SNMP support
[ ] H323 Enable H.323 support
[X] FREETDS Enable FreeTDS support
[X] JABBER Enable Jabber and Gtalk support
[X] SQLITE Enable SQLITE support
[ ] CODEC_PATCH Apply codec negotiation patch
[ ] ILBC Enable iLBC codec
[ ] MISC_PATCHES Apply additional patches
[ ] DAHDI Enable DAHDI support

выполняю:
make install clean

установилось:
+---- Asterisk Installation Complete -------+
+ +
+ YOU MUST READ THE SECURITY DOCUMENT +
+ +
+ Asterisk has successfully been installed. +
+ If you would like to install the sample +
+ configuration files (overwriting any +
+ existing config files), run: +
+ +
+ gmake samples +
+ +
+----------------- or ---------------------+
+ +
+ You can go ahead and install the asterisk +
+ program documentation now or later run: +
+ +
+ gmake progdocs +
+ +
+ **Note** This requires that you have +
+ doxygen installed on your local system +
+-------------------------------------------+
WARNING WARNING WARNING

Your Asterisk modules directory, located at
/usr/local/lib/asterisk/modules
contains modules that were not installed by this
version of Asterisk. Please ensure that these
modules are compatible with this version before
attempting to run Asterisk.

res_config_ldap.so

WARNING WARNING WARNING
===; Installing rc.d startup script(s)
===; Compressing manual pages for asterisk14-1.4.37_1
===; Registering installation for asterisk14-1.4.37_1
===; SECURITY REPORT:
This port has installed the following files which may act as network
servers and may therefore pose a remote security risk to the system.
/usr/local/lib/asterisk/modules/chan_skinny.so
/usr/local/lib/asterisk/modules/chan_iax2.so
/usr/local/lib/asterisk/modules/pbx_dundi.so
/usr/local/lib/asterisk/modules/chan_sip.so
/usr/local/sbin/asterisk
/usr/local/lib/asterisk/modules/chan_mgcp.so

This port has installed the following startup scripts which may cause
these network services to be started at boot time.
/usr/local/etc/rc.d/asterisk

If there are vulnerabilities in these programs there may be a security
risk to the system. FreeBSD makes no guarantee about the security of
ports included in the Ports Collection. Please type ‘make deinstall’
to deinstall the port if this is a concern.

For more information, and contact details about the security
status of this software, see the following webpage:

http://www.asteriskpbx.com

===; Cleaning for net-snmp-5.5_4
===; Cleaning for asterisk14-1.4.37_1

делаем:
rehash

в /etc/rc.conf добавлям строку для автоматического старта asterisk после перезагрузки ОС:
asterisk_enable="YES"

Устанавливаем веб-интерфейс:
cd /usr/ports/www/asterisk-gui/
make install clean

встало:
+---- Asterisk GUI Installation Complete ---+
+ +
+ YOU MUST READ THE SECURITY DOCUMENT +
+ +
+ Asterisk-GUI has successfully been +
+ installed. +
+ +
+-------------------------------------------+
+ +
+ BEFORE THE GUI WILL WORK +
+ +
+ Before the GUI will run, you must perform +
+ some modifications to the Asterisk +
+ configuration files in accordance with +
+ the README file. When done, you can +
+ check your changes by doing: +
+ +
+ gmake checkconfig +
+ +
+-------------------------------------------+

=============== Asterisk GUI FreeBSD Instalation =============

You just installed asterisk-gui into /usr/local.

Make sure to check out the following items:
* Configure you PBX enrivonment
* Check the configs: make checkconfig
* Asterisk is running
* manager.conf has ‘write’ uncommented

You should be able to access the web gui in:

http://localhost:8088/asterisk/static/config/index.html

Good luck!

=============================================================
===; Registering installation for asterisk-gui-2.0.4_6
===; Cleaning for asterisk-gui-2.0.4_6

делаем:
rehash

правим:
ee /usr/local/etc/asterisk/http.conf

до след состояния:

[general]
enabled = yes
bindaddr = 0.0.0.0
bindport = 8088
prefix = asterisk
enablestatic = yes

а теперь правим:
ee /usr/local/etc/asterisk/manager.conf

до состояния:
[general]
enabled = yes
webenabled = yes

port = 5038
bindaddr = 0.0.0.0

debug = on ; enable some debugging info in AMI messages (default off).
; Also accessible through the «manager debug» CLI command.

[admin]
secret = pass
write = system,call,log,verbose,command,agent,user,config

; здесь
; admin – логин для веб-интерфейса
; pass – пароль для administrator
; write = system,call,log,verbose,command,agent,user,config – права на запись пользователю administrator

стартуем asterisk:
# /usr/local/etc/rc.d/asterisk start

пере стартовать его можно asterisk можно следующим образом:
запускаем консоль asterisk:
asterisk -r

Видим приветствие консоли:
Asterisk 1.4.37, Copyright (C) 1999 — 2010 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type ‘core show license’ for details.
=========================================================================
Connected to Asterisk 1.4.37 currently running on bsd (pid = 999)

Далее выполняем поочерёдно:
reload
exit

после того как стартанули, заходим на веб-интерфейс:

http://ip_сервера:8088/asterisk/static/config/index.html

вписываем логин и пасс, которые указывали в /usr/local/etc/asterisk/manager.conf . В примере это:
admin
pass

что то там произошло в момент первого входа. Попадаем на первую страницу.
Перешёл на страницу с Outgoing Calling Rules, она была пуста, нажал «Restore Default Calling Rules», после чего появились:
Longdistance _91XXXXXXXXXX! None Assigned None Selected EditDelete
IAXTEL _91700XXXXXXX! None Assigned None Selected EditDelete
Local_AreaCode _9256XXXXXXX! None Assigned None Selected EditDelete
International _9011XXXXX. None Assigned None Selected EditDelete
Local_7_digits _9XXXXXXX! None Assigned None Selected EditDelete
Emergency _911! None Assigned None Selected EditDelete

Далее идём Options — во вкладку Advanced Options — жмём кнопку «Show Advanced Options»

В столбце слева появится пункт «File Editor», который позволяет редактировать конфигурационные файлы, как если бы вы правили из консольки. В File Editor’e в раскрывающемся списке выбираем файл users.conf и нажав на «+» напротив [general] , раскрываем его содержимое.

Здесь видим стандартного пользователя, созданного при инсталяции автоматически:
fullname=New User
userbase=6000
hasvoicemail=yes
vmsecret=1234
hassip=yes
hasiax=yes
hasmanager=no
callwaiting=yes
threewaycalling=yes
callwaitingcallerid=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
callgroup=1
pickupgroup=1

Я исправил эти строки до состояния:
fullname=root
userbase=6000
hasvoicemail=yes
vmsecret=0000
hassip=yes
hasiax=yes
hasmanager=no
callwaiting=yes
threewaycalling=yes
callwaitingcallerid=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
callgroup=1
pickupgroup=1
host=dynamic
context=
cid_number=6000
email=адрес_электронной_почты
hasdirectory=no
hasagent=no
secret=пароль_для_пользователя_с_номером_6000
nat=yes
canreinvite=no
dtmfmode=rfc2833
insecure=no
call-limit=100
autoprov=no
label=
macaddress=
linenumber=
LINEKEYS=1
disallow=all
allow=gsm,speex,alaw,ulaw

здесь вам надо исправить:
fullname – на имя вашего пользователя
cid_number и userbase – его номер (дабы избавиться от путаницы, тоже советую сделать одинаковыми)
email – электронная почта этого пользователя

Без строки host=dynamic при попытке позвонить через свой сип-сервер из другой подсети, в CLI вывалится:
[Apr 13 10:15:40] ERROR[999]: chan_sip.c:9661 register_verify: Peer '6000' is trying to register, but not configured as host=dynamic
[Apr 13 10:15:40] NOTICE[999]: chan_sip.c:16721 handle_request_register: Registration from '' failed for 'ip_servera' - Peer is not supposed to register

Эти данные (логин и пароль) уже можно использовать, вписав в софтварном телефоне, например в Express Talk (в m$ w!nd0w$) где при установке можно выбрать:

ExpressTalk sip setup

вписать данные для авторизации:

ExpressTalk options

и позвонив на номер 500, мы услышим голос робота-девушки, впечатляющей нас на англ. языке, а позвонив на номер 600, можно услышать себя (микрофон не забудьте включить).
Если всё так и происходит, значит всё пока в порядке. Если нет, то запускаем консоль asterisk’а:

 

#asterisk –r
 

и смотрим, что туда вываливается (варнинги, эрроры…предупреждения были у меня, но ошибок не было)

Примечание 1:
Дабы сразу не наводить путаницу и неудобства, содержимое раздела [general] я стёр, перенёс все строки оттуда в созданный мною подпункт, нажав «Add context», вписав название подраздела (я назвал его «6000») и вставив вырезанные из [general] строки.
Таким образом, создаём кучу пользователей, выделив каждого из низ в отдельный подпункт, однако они по-прежнему хранятся в одном файле /usr/local/etc/asterisk/users.conf

Примечание 2:
не забываем про правила для фаервола (я использую ipfw):
#asterisk
/sbin/ipfw -q add 00830 allow all from any to any 8088
/sbin/ipfw -q add 00831 allow all from any 8088 to any
/sbin/ipfw -q add 00832 allow all from any to any 5038
/sbin/ipfw -q add 00833 allow all from any 5038 to any
/sbin/ipfw -q add 00834 allow all from any to any 5060
/sbin/ipfw -q add 00835 allow all from any 5060 to any

Примечание 3:
Для того, чтобы на почту приходили голосовые сообщения, вероятно вам надо будет поставить и настроить ssmtp на freebsd.

В принципе, пользователи, созданные аналогично примеру выше в файле /usr/local/etc/asterisk/users.conf уже могут звонить друг другу,
а, не дозвонившись до абонента, можно оставить ему голосовое сообщение, которое придёт ему на электронный ящик.
Как всегда, буду рад видеть людей, желающих поделиться знаниями в области FreeBSD+Asterisk ибо опИсанное выше — это лишь «вершина айсберга».
FreeBSD

И еще о борьбе со спамом в sendmail

На прошлой неделе вызвал нас - меня и моих напарников - начальник и сказал, что опять его “заел” спам. Что же, это неудивительно: адрес, который он проверяет, открытым текстом (то есть ссылкой) указан на корпоративном сайте http://www.ism.kiev.ua - неудивительно, что спам-роботам не представляет трудностей его обнаружить. Мы обсудили различные способы, но они либо были слишком сложны для быстрой реализации, либо малоэффективны, либо наоборот - эффективны черезмерно - например, были случаи попадания в DNSBL серверов Академии Наук Беларуси. При этом мы заметили характерную особенность поступающего спама: он был направлен не на конкретный адрес, которых хотелось защитить, а на большие списки рассылки, причем многие адреса из этого списка либо давно не используются, либо вообще никогда не существовали. То есть спам-роботы использовали технологию поиска имени пользователя по словарю. И анализируя документацию по почтовому серверу sendmail, используемом на нашем корпоративном сервере, обнаружилась интересная фича: если в файле access  указать следующее правило типа:

To:vasili_pupkin    DISCARD

то если в адресатах встретится имя ящика vasili_pupkin , письмо будет удалено, без уведомления отправителя. То есть письмо не будет доставлено ни одному из списка рассылки, даже если все остальные адреса “живые”. Тем правило DISCARD отличается от правил типе REJECT - знающие формат файла access почтового агента (MTA) sendmail поймут, о чём идёт речь.  И родилась мысль использовать для борьбы со спамом технологию адресов-ловушек. Для этого потребовалось проанализировать файлы журналов sendmail, чтобы определить, какие адреса наиболее часто используют (точнее, имеют в своих словарях) спам-роботы и ввести соответствующие правила в файл access. При этом именя оказались довольно неожиданными, например, sara.774 (почему именно такие цифры, сказать сложно, но раз спамеры держат в своих словарях, пришлось их “уважить”) или dgamilya.isimbaeva. Со слов начальника, число спамовых писем уменьшилась раз 5, то есть такой способ весьма эффективен. Следует также отметить, что при применении средства DISCARD спамовое письмо уничтожается без уведомления получателя. В этом есть определённый минус: если добропорядочный корреспондент случайно отправит письмо на этот адрес, например, не расслышав диктуемый E-mail по телефону, то письмо ему не вернётся, и он будет думать, что его проигнорировали. Но на мой взгляд, такое достаточно маловероятно, ибо настолько похожих, чтобы можно было перепутать, адресов у нас нет. Зато есть и плюс: как правило, спамеры подставляют в качестве адресов отправителя совершенно “левые” адреса, то есть в “отлупы” получат либо совершенно посторонние люди, либо - особенно если поток этих “отлупов” будет достаточно велик, - сервер получателя это воспримет как атаку и может заблокировать по IP. Сам я с таким не сталкивался, но коллеги рассказывали, что такое возможно.

Предлагаемый способ не претендует на панацею. Но как один из многих, показал эффективность.

Долго искал решение проблемы.

Мир всем!Долго искал решение одной проблемы. В своё время - это было где-то в 2007 -начале 2008 года, для борьбы со спамом подключил на сервере DNSBL. До недавнего времени всё было приемлемо - отвергалось примерно 80% спама, оставшийся можно было удалять вручную. Однако относительно недавно обнаружилось, что в этим DNSBL - возможно заслуженно, возможно случайно - стали попадать и "нормальные" почтовые серверы, в частности, НАН Украины. Кстати, в своё время НАН Украины даже прислала циркуляр, согласного к-рому переписка с Академией должна вестись только через собственный сервер Академии через Web-интерфейс, они для этого сделали нашему Институту там учетные записи. Впрочем, руководство, ведущее переписку, благополучно этот циркуляр проигнорировало. В общем, после анализа ситуации начальник дал мне категорической указание отключить на сервере фильтрацию спама с помощью DNSBL. Я и мои коллеги предлагали альтернативные решения- серые списки, белые списки, байесовские фильтры, однако все они были категорически отвергнуты. Со спамом решили бороться на уровне пользователя. Но у меня, как у системного администратора возникла новая проблема: появилось большое количество так называемых "двойных отлупов". То есть спамер шлёт спамовое письмо через какой-нибудь "левый" сервер, подставляя существующий обратный адрес, как правило на Mail.RU или Yandex.RU - если бы он подставлял явно несуществующий адрес, то мой сервер бы это письмо просто отвег бы: на нём стоит встречная проверка адреса отправителя. Но целевой адрес оказывается заблокирован. Возникает ситуация, описанная хотя бы здесь - http://forum.lissyara.su/viewtopic.php?f=20&t=35702&p=330623#p330623 . Такая ситуация называется двойной отлуп: письмо не может быть ни доставлено, ни возвращено отправителю - сервер адреса, подставленного спамером, отвергает это письмо с диагнозом service unavaible . По умолчанию sendmail - у меня используется этот МТА - такое письмо отправляет на ящик postmaster. Долго я искал по специализированным форумам решение этой проблемы, но к моему удивлению не нашел. А вот здесь - http://sysadmins.ru/topic55314.html - к сожалению, этот форум (пока) не работает, вообще утверждалось, что явного решения этой проблемы не существует, и предлагалось блокировать домены. Но как оказалось (нашел в старом руководстве по UNIX - читать старые книги новыми глазами иногда полезно), что решение есть и до смешного простое. Как впрочем, всё гениальное просто и очевидно.В файл mc добавить следующее:  define(`confDOUBLE_BOUNCE_ADDRESS', `double_bounce_p')dnl А в файл /etc/aliases   double_bounce_p: /dev/null пересобираем конфиги   make all  make install  newaliases  make restart --- эти двойные отлупы будут отправляться в "черную дыру". Понятно, что если есть желание в них колупаться, можно например, отправить их в другой ящик (файл), специально предназначенный для этого, Procmail задействовать. Например, некоторые почтовые сервера, нормальное уведомление о прочтении за спам принимают. Но то уже простор для творчества админа.Удивительно, почему об этом не было сказано ни в одном из найденных форумов. Может быть кому пригодится.

Господа админы: обновляем FreeBSD! ( FreeBSD-SA-10:07.mbuf )

Если в двух словах:

20100713:       p2      FreeBSD-SA-10:07.mbuf
        Correctly copy the M_RDONLY flag when duplicating a reference
        to an mbuf external buffer.

Если по русски, то любой юзверь в системе (локальный) используя функцию sendfile может изменить любой файл в системе.

И несмотря на то, что эксплоита вроде как нету, наверняка уже кто-то чешит руки по поводу его создания...

Редактирование интерфейса horde (руссификация)

1. находите файлы *.po
find /var/www/horde -name "*.po" -print

например, редактируем русский язык (может кто на албанский переводит)
...
/var/www/horde/po/ru_RU.po
/var/www/horde/imp/po/ru_RU.po
/var/www/horde/turba/po/ru_RU.po
/var/www/horde/nag/po/ru_RU.po
....
каждый из них, редактирует свой участок веб интерфейса, по смыслу увидите какой
/var/www/horde/po/ru_RU.po например - вход
/var/www/horde/imp/po/ru_RU.po панель с "New Message", "Folders", "Search" и т.д.

2. редактируем
vi /var/www/horde/imp/po/ru_RU.po
(если вместо русского китайский, правильно выставте кодировку в консоли и не забудте прокрутить или открыть заново у меня она charset=CP1251\n см. ее в начале файла)

находим, например
#: templates/contacts/contacts.inc:199 templates/mailbox/header.inc:11
#: lib/Block/tree_folders.php:54
msgid "Search"
msgstr "Поиск"

меняем
#: templates/contacts/contacts.inc:199 templates/mailbox/header.inc:11
#: lib/Block/tree_folders.php:54
msgid "Search"
msgstr "Дафай ищо!"
:x

3. Переводим (перекомпилируем) *.po в понятный для ... бинарник *.mo
преждевремено находим эти *.mo

find /var/www/horde -name "*.mo" -print
...
/var/www/horde/locale/ru_RU/LC_MESSAGES/horde.mo
/var/www/horde/imp/locale/ru_RU/LC_MESSAGES/imp.mo
...
перекомпилируем
msgfmt -o imp.mo ru_RU.po
копируем
cp /var/www/horde/imp/locale/ru_RU/LC_MESSAGES/

4. Обновляем страницу браузерчика и смотрим на изменения