ejabberd
Содержание
В качестве jabber-сервера мы будем использовать ejabberd, к достоинствам которого относятся: простота настройки, нетребовательность к системным ресурсам и возможность LDAP авторизации (в том числе интеграция в AD), что весьма актуально в корпоративной среде.
Установка
Установка сервера проста, достаточно одной комманды:
Настройка
Все настройки хранятся в /etc/ejabberd/ejabberd.cfg, откроем его и раскомментируем следующую строку:
Ниже укажем логин администратора (у jabber-сервера свой администратор, не путать с системным) и имя сервера:
Где ADMIN – имя учетной записи администратора, а SERVER_NAME имя сервера, в нашем случае ubuntu-jabber. После чего опускаемся вниз до секции ACCESS RULES в которой находим и приводим к следующему виду опцию:
Данная опция позволяет регистрировать учетные записи пользователям самостоятельно, при помощи клиента. Последняя интересующая нас опция — язык по умолчанию:
Теперь зарегистрируем учетную запись администратора:
И перезапустим сервер:
Теперь можно приступить к настройке клиентских ПК. В первую очередь добавим строку следующего вида:
в файл C:\Windows\System32\drivers\etc\hosts для Windows и в /etc/hosts для Linux. Данная строка позволяет клиентам обращаться к jabber-серверу по имени хоста. Если в вашей организации большое количество ПК и вносить настройки на каждом из них затруднительно, то самое время задуматься о внедрении Службы каталогов, в этом случае было бы достаточно одной записи на DNS сервере.
В качестве jabber-клиента мы используем Psi, кроссплатформенный клиент с богатыми возможностями, хотя вы можете выбрать то, что вам больше понравиться, благо есть из чего — список клиентов достаточно велик.
Установка и регистрация учетной записи просты и не занимают много времени, структура и принципы работы с программой ничем не отличаются от других IM клиентов и не должны вызвать каких-либо затруднений у пользователя. Добавляем контакт собеседника и уже можно общаться.
Для администрирования сервера можно использовать веб-админку, которая доступна по адресу: http://SERVER_NAME:5280/admin и позволяет решать ежедневные задачи администрирования без обращения к файлам конфигурации.
В общем на этом можно было бы и остановиться, если бы не одно но. По умолчанию список контактов (ростер на терминологии jabber) нового пользователя пуст. Это вполне нормально для личного использования или для работы с публичными серверами — пользователь сам выбирает с кем общаться, но абсолютно неприемлемо для корпоративной среды, где список контактов заранее определен. Было бы неплохо, чтобы новый пользователь автоматически попадал в этот список и автоматически получал его в свой клиент. К счастью сделать это совсем несложно. В /etc/ejabberd/ejabberd.cfg найдем и раскомментируем следующую строку:
Сохраняем файл, перезапускаем сервис. Теперь в веб-админке в разделе Virtual Hosts — Имя вашего сервера появился пункт Группы общих контактов. Создаем такую группу и настраиваем как показано ниже:
Для того, чтобы в группу автоматически попадали все пользователи в поле Члены укажите @all@, а в поле Видимые группы укажите название вашей группы, которое вы ввели при ее создании.
Проверим как это работает. Зарегистрируем нового пользователя, как видим — все хорошо, он автоматически получил все контакты общей группы.
Вот теперь можно и закончить нашу статью. В результате несложных действий мы получили в свое распоряжение мощное корпоративное средство обмена сообщениями, в тоже время простое и понятное пользователю. Однако на этом возможности ejabberd не исчерпываются, он позволяет осуществлять коммуникации с другими сетями обмена сообщениями, для этого нужно настроить соответствующий транспорт, так что если ваши партнеры используют ICQ вы не потеряете контакта с ними, но это тема для отдельной статьи.
Источник
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
- Главная
- Ubuntu Server. Настраиваем Jabber-сервер.
Ubuntu Server. Настраиваем Jabber-сервер.
Выбор корпоративного средства обмена сообщениями задача не из легких. Публичные сервисы, такие как ICQ, Skype и т.п., кроме известных всем достоинств имеют ряд недостатков, таких как необходимость наличия интернета на каждом рабочем месте и невозможность контролировать круг общения сотрудников, в той же ICQ свободно можно в рабочее время общаться с друзьями на отвлеченные темы. Что же делать? Здесь нам на помощь приходит Jabber, позволяющий создать корпоративный сервер обмена сообщениями, как это сделать мы расскажем в данной статье.
Мы будем рассматривать установку Jabber-сервера на выделенный ПК под управлением Ubuntu Server 10.04.1 LTS. Имя сервера, выбранное при установке ubuntu-jabber, которое будет являться именем jabber-сервера, если вы хотите использовать иное имя, то вы будете должны внести соответствующую запись в /etc/hosts.
В качестве jabber-сервера мы будем использовать ejabberd, к достоинствам которого относятся: простота настройки, нетребовательность к системным ресурсам и возможность LDAP авторизации (в том числе интеграция в AD), что весьма актуально в корпоративной среде.
Установка сервера проста, достаточно одной комманды:
Все настройки хранятся в /etc/ejabberd/ejabberd.cfg, откроем его и раскомментируем следующую строку:
Ниже укажем логин администратора (у jabber-сервера свой администратор, не путать с системным) и имя сервера:
Где ADMIN — имя учетной записи администратора, а SERVER_NAME имя сервера, в нашем случае ubuntu-jabber. После чего опускаемся вниз до секции ACCESS RULES в которой находим и приводим к следующему виду опцию:
Данная опция позволяет регистрировать учетные записи пользователям самостоятельно, при помощи клиента. Последняя интересующая нас опция — язык по умолчанию:
Теперь зарегистрируем учетную запись администратора:
И перезапустим сервер:
Теперь можно приступить к настройке клиентских ПК. В первую очередь добавим в C:\Windows\System32\drivers\etc\hostsстроку следующего вида:
Данная строка позволяет клиентам обращаться к jabber-серверу по имени хоста. Если в вашей организации большое количество ПК и вносить настройки на каждом из них затруднительно, то самое время задуматься о внедрении Службы каталогов, в этом случае было бы достаточно одной записи на DNS сервере.
В качестве jabber-клиента мы используем Psi, кроссплатформенный клиент с богатыми возможностями, хотя вы можете выбрать то, что вам больше понравиться, благо есть из чего — список клиентов достаточно велик.
Установка и регистрация учетной записи просты и не занимают много времени, структура и принципы работы с программой ничем не отличаются от других IM клиентов и не должны вызвать каких-либо затруднений у пользователя. Добавляем контакт собеседника и уже можно общаться.
Для администрирования сервера можно использовать веб-админку, которая доступна по адресу: http://SERVER_NAME:5280/admin и позволяет решать ежедневные задачи администрирования без обращения к файлам конфигурации.
В общем на этом можно было бы и остановиться, если бы не одно но. По умолчанию список контактов (ростер на терминологии jabber) нового пользователя пуст. Это вполне нормально для личного использования или для работы с публичными серверами — пользователь сам выбирает с кем общаться, но абсолютно неприемлемо для корпоративной среды, где список контактов заранее определен. Было бы неплохо, чтобы новый пользователь автоматически попадал в этот список и автоматически получал его в свой клиент. К счастью сделать это совсем несложно. В /etc/ejabberd/ejabberd.cfg найдем и раскомментируем следующую строку:
Сохраняем файл, перезапускаем сервис. Теперь в веб-админке в разделе Virtual Hosts — Имя вашего сервера появился пункт Группы общих контактов. Создаем такую группу и настраиваем как показано ниже:
Для того, чтобы в группу автоматически попадали все пользователи в поле Члены укажите @all@, а в поле Видимые группы укажите название вашей группы, которое вы ввели при ее создании.
Проверим как это работает. Зарегистрируем нового пользователя, как видим — все хорошо, он автоматически получил все контакты общей группы.
Вот теперь можно и закончить нашу статью. В результате несложных действий мы получили в свое распоряжение мощное корпоративное средство обмена сообщениями, в тоже время простое и понятное пользователю. Однако на этом возможности ejabberd не исчерпываются, он позволяет осуществлять коммуникации с другими сетями обмена сообщениями, для этого нужно настроить соответствующий транспорт, так что если ваши партнеры используют ICQ вы не потеряете контакта с ними, но это тема для отдельной статьи.
Источник
Инструкция по настройке Ejabberd с транспортом J2J/ICQ(с корректной кодировкой) на Ubuntu Server
Сегодня мы будем настраивать свой собственный jabber-сервер для example.org на Ubuntu Server Edition.
На этом сервере будет транспорт в аську и jabber. Логи будут писаться в директорию example.org/logs. Логи можно будет удобно смотреть с мобильного устройства(fancyindex+htpasswd+fail2ban).
Подразумевается, что минимум в Linux вы уже знаете. Также стоит отметить: инструкция является путеводной звездой, дает общее направление и не призывает выполнять ее на 100% так, как в ней написано. Также она не охватывает 100% настроек, нужно уметь настраивать web-сервер и работать с mysql.
Далее для примера я буду использовать Clodo.ru в качестве хостера. Естественно различные куски инструкций можно применять на любом другом дистрибутиве/хостере.
Этап 1. Подготовка серверного окружения.
Регистрируемся у хостера, создаем scale-сервер с ubuntu lucid 10.04 LTS 32-bit, 512MB памяти, 5GB SAS.
После получения root-доступа и других реквизитов заходим на сервер.
Ждем, пока dpkg не обновит систему до актуального состояния:
ps uxa | egrep ‘(firstrun|local|apt|dpkg)’
Заменяем /etc/apt/sources.list на:
deb ru.archive.ubuntu.com/ubuntu lucid main restricted
deb ru.archive.ubuntu.com/ubuntu lucid-updates main restricted
deb ru.archive.ubuntu.com/ubuntu lucid universe
deb ru.archive.ubuntu.com/ubuntu lucid-updates universe
deb ru.archive.ubuntu.com/ubuntu lucid multiverse
deb ru.archive.ubuntu.com/ubuntu lucid-updates multiverse
deb ru.archive.ubuntu.com/ubuntu lucid-backports main restricted universe multiverse
deb archive.canonical.com/ubuntu lucid partner
deb security.ubuntu.com/ubuntu lucid-security main restricted
deb security.ubuntu.com/ubuntu lucid-security universe
deb security.ubuntu.com/ubuntu lucid-security multiverse
deb packages.spectrum.im lucid spectrum
Создаем файл /etc/apt/apt.conf.d/03test с содержимым:
APT::Install-Recommends «false»;
APT::Install-Suggests «false»;
Добавляем ключ Spectrum (наш будущий Jabber-транспорт):
sudo apt-key adv —recv-keys —keyserver keyserver.ubuntu.com 47A944AF1905866A
Заменяем hostname для удобства:
fgrep -r $(uname -n) /etc
Редактируем файлы в выводе, заменяя строчки на нужный нам example.org, после чего меняем hostname:
Настраиваем sudo для нашего пользователя:
В конец файла вписываем:
user ALL=(ALL) ALL
Настраиваем доступ по ключу(гуглим как это делается, ключевые слова ssh-agent, ssh-keygen -t rsa, ssh-copy-id) для пользователя user, созданного по-умолчанию.
Пробуем зайти под user, а также проверяем работу sudo su. После этого, редактируем /etc/ssh/sshd_config.
PermitRootLogin no
PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
После этого, перезапускаем SSH(тут осторожнее, мы запретили доступ по паролю, а также под логином root. Исправить возникшие тут косяки можно будет через VNC в случае с Clodo, либо через KVM, в общем с помощью физического доступа к консоли сервера):
service ssh restart
Русифицируем систему с поддержкой UTF-8:
Редактируем файл /var/lib/locales/supported.d/locale.gen
ru_RU.UTF-8 UTF-8
en_US.UTF-8 UTF-8
и файл /etc/environment
На этом этапе можно перезайти на сервер, в SSH-клиенте указав UTF-8. Появится русский язык.
В /etc/rc.local добавляем:
sysctl -w vm.swappiness=100
su -c ‘echo 0 > /sys/devices/system/xenmgm/xenmgm0/memmin_bytes’
su -c ‘echo 60000000 > /sys/devices/system/xenmgm/xenmgm0/reserve_free_bytes’
это позволит сэкономить денег на сервере(актуально для clodo).
Устанавливаем нужные пакеты:
apt-get install libpurple0-minimal htop strace apache2 mysql-server spectrum python python-twisted python-imaging postfix iptables fail2ban mailutils mpack subversion
В ходе установки система попросит рутовый пароль от MySQL, как будет функционировать почтовый сервер(выбираем Интернет-Сайт, имя домена example.org).
В зоне для example.org указываем:
example.org. A 1.2.3.4 (ваш IP-адрес)
example.org MX 10 example.org.
_xmpp-server._tcp.example.org. SRV 0 0 5269 example.org.
_xmpp-client._tcp.example.org. SRV 0 0 5222 example.org.
_jabber._tcp.example.org. SRV 0 0 5269 example.org.
example.org. TXT «v=spf1 a mx
Настраиваем алиасы, редактируя файл /etc/aliases:
root: myemail@gmail.com
user:: myemail@gmail.com
Генерируем алиасы для postfix:
Отправляем тестовое письмо:
mail -s test user [нажимаем enter]
CC: [нажимаем enter]
[нажимаем ctrl+d]
Смотрим логи /var/log/mail.info, а также наличие письма в ящике myemail@gmail.com.
Если всё ок, поехали дальше!
Настраиваем уведомления о перезагрузке на email.
Под пользователем user выполняем:
Записываем строку:
@reboot echo «server rebooted at `date`» | mail -s «Server `uname -n` Rebooted!» user@example.org
Внимание, если в date указывать модификатор +%, перед процентом ставим экранирование, например: $(date +\%m.\%d), или `date +\%m.\%d`, иначе крон будет бухтеть с непонятными ошибками.
Этап 2. Настройка нашего Jabber.
Скачиваем дистрибутив ejabberd.
cd /usr/src
wget www.process-one.net/downloads/ejabberd/2.1.6/ejabberd-2.1.6-linux-x86-installer.bin.gz
gunzip ejabberd-2.1.6-linux-x86-installer.bin.gz
chmod +x ejabberd-2.1.6-linux-x86-installer.bin
./ejabberd-2.1.6-linux-x86-installer.bin
Установка проста.
Выбираем язык, внимательно читаем все лицензионное соглашение, выбираем “y” в ответ на вопрос: “Вы принимаете условия лицензионного соглашения? [y/n]:”, выбираем каталог установки (оставим по умолчанию /opt/ejabberd-2.1.6), имя домена example.org, имя пользователя-администратора admin, пароль администратора. Отказываемся от кластерных настроек:
Кластер [y/N]: N
Вы хотите продолжить? [Y/n]: Y
Управление сервером происходит из каталога /opt/ejabberd-2.1.6/bin
Подробнее — в документации по ejabberd.
Теперь нас интересует /opt/ejabberd-2.1.6/conf/ejabberd.cfg, редактируем его, добавляя нужные строки:
Проверяем, чтобы директория /opt/ejabberd-2.1.6/www была создана и имела права 0755.
Теперь нужно скомпилировать модуль mod_log_chat и установить его:
cd /usr/src
svn co svn.process-one.net/ejabberd-modules
cp ejabberd-modules/mod_log_chat/trunk/src/mod_log_chat.erl /opt/ejabberd-2.1.6/
cd /opt/ejabberd-2.1.6
bin/erlc -I includes/ejabberd/include mod_log_chat.erl
mv mod_log_chat.beam lib/ejabberd-2.1.6/ebin/
rm mod_log_chat.erl
Теперь запускаем и тестируем ejabberd, пишем кому-нибудь сообщение, смотрим логи. Все должно работать. Останавливаем ejabberd.
cd /opt/ejabberd-2.1.6/bin
./start
./stop
Добавляем в /etc/rc.local перед exit 0:
sleep 10
su -c ‘/opt/ejabberd-2.1.6/bin/start’
Этап 3. Настраиваем транспорт на аську.
Пользоваться будем pyicq-t.
Добавляем юзера jabber:
useradd -m -s /bin/bash jabber
passwd jabber
su jabber
cd
Скачиваем pyicqt с pyicqt.googlecode.com в домашку к jabber и распаковываем транспорт.
wget pyicqt.googlecode.com/files/pyicqt-0.8.1.5.tar.gz
tar zvxf pyicqt-0.8.1.5.tar.gz
mv pyicqt-0.8.1.5 pyicqt
cd pyicqt
cp config_example.xml config.xml
Редактируем config.xml, выставляем все как в конфиге выше, сервер 127.0.0.1, порт 8888, secret token — пароль, encoding cp1251, login.icq.com, 5190, language ru — конфиг говорит сам за себя.
дописываем в /etc/rc.local перед exit 0:
su -c ‘python /home/jabber/pyicqt/PyICQt.py > /home/jabber/pyicqt/log 2>&1 &’ — jabber
Этап 4. Настраиваем j2j-транспорт:
cd /etc/spectrum/
wget spectrum.im/attachments/download/14/mysql_schema.sql
Командами mysql создаем пользователя j2j с паролем pass и базой данных j2j.
mysql -u j2j -p’pass’ j2j
jid=j2j.example.org
password=как_выше
port=8883
filetransfer_cache=/var/lib/spectrum/filetransfer_cache
name=j2j
language=en
enable_public_registration=1
[logging]
log_file=/var/log/spectrum/$jid.log
log_areas=
[database]
type=mysql
host=localhost
user=j2j
password=pass
database=j2j
prefix=j2j_
Обратите внимание на log_areas, поле лучше оставлять пустым, иначе в логе /var/log/spectrum будет очень много мусора.
Добавляем в /etc/rc.local перед exit 0:
Этап 5. Настраиваем просмотр логов:
Допустим, apache2 для работы с example.org настроен в /home/user/www/example.org.
Создаем симлинк:
lrwxrwxrwx 1 root root 24 2011-03-04 13:24 chat -> /opt/ejabberd-2.1.6/www/
Создаем /opt/ejabberd-2.1.6/www/.htaccess с содержимым:
Options +Indexes
IndexOptions FancyIndexing
IndexOptions +SuppressSize
IndexOrderDefault Descending Date
AuthType Basic
AuthName «wat»
AuthUserFile /opt/ejabberd-2.1.6/www/.htpasswd
Require valid-user
Сгенерировать файл /opt/ejabberd-2.1.6/www/.htpasswd можно, например, этим:
www.htaccesstools.com/htpasswd-generator
От перебора пароля нас будет защищать fail2ban. Не забудьте добавить нужные сервисы в автозагрузку:
update-rc.d SERVICENAME defaults
Вот и всё. После перезагрузки, если все было сделано правильно, сервер заработает.
Для использования рекомендую клиент PSI+ с опциями автоматической авторизации пользователей и автоматического получения ников пользователей. Это скрытая опция, добавляется в options/contactlist:
bool options.contactlist.resolve-nicks-on-contact-add true
Для Android рекомендую Xabber.
Для тестирования и настройки в процессе чтения инструкции нужно смотреть и использовать:
Логи ejabberd: /opt/ejabberd-2.1.6/logs
Эти логи скажут, почему сервер не запустился, что вообще происходит, где проблема в синтаксисе и т.д.
Логи Spectrum: /var/log/spectrum
Аналогично при проблемах Спектрум будет флудить в лог
Ejabberctl: /opt/ejabberd-2.1.6/bin/ejabberdctl
Используется для создания, удаления, задания пароля пользователя. Ультраполезная утилита, пока не разобрались с ростером, автоматической авторизацией пользователей и автоматическим получением ников.
На связи с вами, пишите про опечатки и ошибки в хабрапочту или комменты, буду исправлять.
Источник