Рубрика:
Администрирование /
Продукты и решения
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
Сергей Яремчук
Citadel – Open Source-решение для коллективной работы
Вообще-то правильнее называть Citadel/UX (то есть UNIX), так как клонов оригинальной Citadel было создано много. Изначально проект ориентирован исключительно на UNIX-системы – Linux и *BSD, это и хотели подчеркнуть в имени проекта. Хотя сами разработчики для краткости используют также имя Citadel, аргументируя это еще и тем, что это пока единственный активный проект с таким именем.
Некоторое время проект развивался без лишнего шума, готовое решение было представлено общественности приблизительно в 2002 году.
Первое время в Citadel часто находили уязвимости разной степени серьезности, но теперь по прошествии стольких лет разработки ситуация изменилась в лучшую сторону.
Распространяется Citadel по лицензии GNU GPL. Кроме указанных систем, точно будет работать в Solaris и Mac OS X.
Возможности Citadel
В журнале уже шел разговор об одной из систем для групповой работы eGroupware [1], там же дано краткое описание некоторых имеющихся решений.
Citadel построен по клиент-серверной архитектуре и обеспечивает работу как пользователям, подключающимся по коммутируемым соединениям (вроде Fidonet), так и через Интернет. В его состав включено большое количество приложений, обеспечивающих самые разнообразные функции.
Системный администратор, установивший Citadel, обнаружит целый ряд сервисов:
- BBS (Bulletin Board System) со всеми типичными функциями;
- почтовый сервис, обеспечивающий работу по протоколам IMAP, POP3, ESMTP со встроенной поддержкой аутентификации пользователя, сортировки и фильтрации сообщений при помощи Realtime Blackhole Lists (RBL) и SpamAssassin, а также языка фильтрации Sieve и списков рассылки;
- чат, форум, открытые и приватные комнаты общения (room);
- календарь с поддержкой протоколов Webcal/GroupDAV, список задач.
А еще адресная книга с поддержкой vCard и LDAP, заметки, агрегатор RSS, простой консольный клиент для подключения к серверу, публичные каталоги и другие. Некоторые ненужные сервисы после установки можно отключить.
Для всех протоколов реализована поддержка SSL/TLS для безопасной аутентификации и передачи данных.
Списки рассылки могут быть двух видов: list и digest.
В первом случае сообщения получателям доставляются индивидуально, в поле «От» будет стоять адрес автора сообщения.
Во втором случае в поле «От» будет стоять адрес «room», что позволит пользователю ответить на адрес комнаты.
Практически все функции Citadel реализованы в контейнерах, также называемых room, поэтому при необходимости добавить любую функциональность очень просто.
Протокол GroupDAV в настоящее время поддерживается KDE Kontact, Evolution и частично Mozilla Sunbird.
В качестве почтового клиента можно использовать любой из доступных: Microsoft Outlook, The Bat!, Mozilla Thunderbird и так далее.
По умолчанию для обмена сообщениями используется UTF-8, поэтому проблем с кодировками нет.
Citadel различает типы MIME, поэтому, например, при добавлении нового контакта с использованием vCard он может быть добавлен в глобальную базу сервера.
Для быстрого поиска возможно индексирование информации на форумах, BBS, адресной книге и других открытых ресурсах.
Отдельно предлагается WebCit – простой, интуитивный и интерактивный веб-интерфейс, реализованный с использованием AJAX. С его помощью пользователь может получить доступ ко всем функциям, предоставляемым Citadel, а в распоряжении администратора и удобная система управления настройками сервера. Поддерживается любой браузер, умеющий работать с cookies и фреймами, для получения мгновенных сообщений нужно разрешить всплывающие окна.
К сожалению, в списке поддерживаемых языков отсутствует русский (см. врезку «Изменение внешнего вида WebCit»).
Компоненты citadel написаны на С, сервер поддерживает многопоточность и без проблем обеспечивает одновременную работу большого числа пользователей, без ограничений на количество и размер сообщений.
Данные и сообщения хранятся в Berkeley DB, если письмо адресовано нескольким пользователям, на жестком диске все равно хранится только одна его копия. Один сервер может обслуживать несколько виртуальных доменов.
Также возможна совместная работа нескольких серверов Citadel, обслуживающих в том числе и разные домены с репликацией данных между ними. Учетные записи любого домена при необходимости могут быть сохранены на любом из серверов Citadel.
Ознакомиться с работой Citadel и, в частности, WebCit как обычный пользователь, можно свободно, зарегистрировавшись по ссылке [3]. Это рабочая система, в которой разработчики обмениваются информацией с пользователями.
В Live CD дистрибутиве Myrinix [4] доступен модуль Citadel, который можно добавить при самостоятельной сборке.
Кроме того, на сайте проекта доступен образ для виртуальной машины VMware с полностью настроенной операционной системой и Citadel.
Установка Citadel
Перед установкой необходимо удалить все сервисы (groupware, почтовые и прочие), которые могут конфликтовать с Citadel по портам и файлам. Хотя не исключается возможность совместной работы Exim, Postfix и некоторыми другими серверами. WebCit может использовать встроенный или внешний веб-сервер, вроде Apache.
Для тех, кто не хочет самостоятельно компилировать приложение, разработчики предлагают свой репозитарий и скрипт «easy install». Второй вариант очень прост, чтобы он работал, требуется только наличие find, wget (или curl). Все остальное, включая зависимости, будет автоматически скачано и установлено.
Сначала устанавливаем компилятор и некоторые библиотеки в Debian/Ubuntu, команда проста:
$ sudo apt-get update
$ sudo apt-get install build-essential curl libssl-dev
Список пакетов для openSUSE, SUSE и RedHat/Fedora и клонов приведен на сайте проекта.
Для работы скрипта необходимо использовать права root:
$ sudo curl http://easyinstall.citadel.org/install | sh
или
$ sudo wget -q -O - http://easyinstall.citadel.org/install | sh
Скрипт создаст подкаталоги citadel и webcit в /usr/local, в которые и установит компоненты Citadel, сопутствующие библиотеки будут установлены в ctdlsupport.
В процессе установки будет задано несколько вопросов по настройкам будущей системы.
Таким же образом можно очень просто обновлять установленную Citadel.
Кроме этого, разработчики предоставляют репозитарий для Debian/Ubuntu, в котором пакеты собраны для архитектур i386 и amd64. Чтобы установить Citadel с его помощью, достаточно добавить в /etc/apt/sources.list:
deb http://[debian|ubuntu].citadel.org/[debian|ubuntu]/[sid|sarge|sarge_bdb44|etch|breezy|gutsy|feisty] main
Для установки в Ubuntu 7.10 Gutsy Gibbon я использовал команду:
deb http://ubuntu.citadel.org/ubuntu/gutsy main
и чтобы установить исходные тексты:
deb-src http://debian.citadel.org/source stable source
После этого стандартные:
$ sudo apt-get update
$ sudo apt-get install citadel-suite
В результате было скачано и установлено 10 пакетов. В процессе установки пакета citadel-webcit был выдан запрос об интеграции с Apache. Возможен выбор из: Apache, Apache-SSL, Apache2, All и Internal. Последний вариант предполагает использование внутреннего веб-сервера.
Если у вас есть сомнения, можно выбрать самый простой вариант – «All». В этом случае будут созданы все необходимые настройки, а что конкретно будет использовано для работы, регулируется запуском скрипта /etc/init.d/apache2 или webcit.
Дальше запрашиваются адреса интерфейсов, на которых Citadel будет принимать входящие соединения, по умолчанию установлено на всех, то есть 0.0.0.0.
Оставляем или изменяем название учетной записи администратора и указываем метод аутентификации пользователей.
По умолчанию предлагается встроенная база данных пользователей, которые при этом могут не иметь учетные записи в системе, но можно использовать /etc/passwd, NIS или LDAP.
Установка при помощи исходных текстов
Самостоятельная сборка не трудна, при наличии всего необходимого для удовлетворения зависимостей проблем обычно не возникает.
Кроме компилятора, понадобится Berkeley DB от 4.1, libical от 0.26 и libSieve от 2.2.3 и библиотеки SSL. Если будете их устанавливать из репозитария дистрибутива, не забудьте и devel-пакеты с исходными кодами.
Перед началом установки сервера необходимо создать учетную запись citadel, от имени которой будет работать сервер и пользователи Citadel.
В документации рекомендованная строка в /etc/passwd для этого пользователя выглядит как:
citadel::100:1:Citadel Login:/usr/local/citadel:/usr/local/citadel/citadel
По умолчанию Citadel устанавливается в раздел /usr/local, если при конфигурировании указано его другое размещение (./configure --prefix=), этот путь также следует изменить.
Последняя запись /usr/local/citadel/citadel показывает на оболочку, которая будет доступна пользователям при их регистрации при помощи telnet (см. рис. 1). По поводу группы, в которую должен входить пользователь Citadel, ничего не сказано. Но группа с GID 1 это обычно root.
Рисунок 1. Консоль Citadel
После установки пакета в Ubuntu эта запись выглядит по-иному:
citadel:x:110:1001:Citadel system user,,,:/var/lib/citadel:/bin/false
Пользователь входит в группу citadel (GID – 1001), использование shell будет недоступно данной учетной записи. Сама же оболочка для входа расположена в /usr/bin/citadel. Это необходимо помнить, и изменить запись в /etc/passwd, если такая функциональность понадобится.
То есть команды для добавления пользователя в общем случае могут выглядеть так:
$ sudo addgroup citadel
$ sudo adduser --system --no-create-home --home /usr/local/citadel --shell
Но это еще не все. Чтобы пользователь, входя в систему через telnet, попадал не в командную строку, что требует наличия учетной записи в системе, а сразу в оболочку Citadel, дополнительно следует создать файл /etc/xinetd.d/telnet, такого содержания:
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
server_args = -L /usr/local/citadel/citadel
# или в Ubuntu
# server_args = -L /usr/bin/citadel
log_on_failure += USERID
disable = no
}
Не забыв установить собственно xinetd (в Ubuntu: «sudo apt-get install xinetd»).
При конфигурировании следует обратить внимание на вывод скрипта. Например WebCit.
webcit-7.24 $ ./configure
…
zlib compression: yes
Calendar support: yes
Character set conversion support: yes
National language support: yes
|
Если хоть в одной из позиций не будет стоять yes, команда make закончит свое выполнение с ошибкой. Если все нормально:
$ make
$ sudo make install
Затем как в случае установки сервера Citadel, так и WebCit следует перейти в каталог, в который он установлен, и запустить скрипт setup.
Пример опять для WebCit.
$ cd /usr/local/webcit/
$ sudo ./setup
Скрипт задаст несколько вопросов по настройкам, основной из которых – необходимость в автоматическом запуске приложения при загрузке системы. После окончания работы приложение можно запускать.
Рисунок 2. Окно настройки сетевых сервисов
Если не планируется использовать Apache, вводим:
$ sudo /usr/local/webcit/webserver
…
Text domain Charset: UTF8
Changing directory to /usr/local/webcit/
Attempting to bind to port 2000...
…
|
Шаблона для запуска через Apache в поставке WebCit нет. В Ubuntu для этих целей используется файл /etc/citadel/webcit.conf, символическая ссылка на который расположена в /etc/apache2/sites-available:
<location /webcit>
Allow from all
</location>
<location /listsub>
Allow from all
</location>
<location /groupdav>
Allow from all
</location>
ProxyPass /webcit/ http://127.0.0.1:8504/webcit/
ProxyPassReverse /webcit/ http://127.0.0.1:8504/webcit/
ProxyPass /listsub/ http://127.0.0.1:8504/listsub/
ProxyPassReverse /listsub/ http://127.0.0.1:8504/listsub/
ProxyPass /groupdav/ http://127.0.0.1:8504/groupdav/
ProxyPassReverse /groupdav/http://127.0.0.1:8504/groupdav/
ProxyPass /who_inner_html http://127.0.0.1:8504/who_inner_html
ProxyPassReverse /who_inner_html http://127.0.0.1:8504/who_inner_html
alias /static /usr/share/citadel-webcit/static
alias /tiny_mce /usr/share/tinymce/www
Обратите внимание на используемый порт. При использовании встроенного веб-сервера подключаться следует к 2000 порту, в варианте, предложенном сборщиком пакета для Ubuntu – 8504. После установки сервера Citadel команда netstat покажет несколько открытых портов: 25 (SMTP), 110/995 (POP3/S), 143 (IMAP), 504 (Citadel), 587 (SMTP-MSA) и 2020 (Sieve).
В поставку WebCit входит встраиваемый редактор TinyMCE, но в пакетах Ubuntu его нет.
При установке создаются ключи и сертификаты для TLS, которые хранятся в подкаталоге keys в файлах citadel.key, citadel.cer и citadel.csr.
Вот и вся установка. Кроме исходных текстов сервера Citadel и WebCit, на сайте проекта можно найти ссылки на три программы. Это утилита RSS2CTDL, предназначенная для трансляции RSS потоков в комнаты Citadel, в новой версии в ее использовании уже нет необходимости. И два модуля, предназначенных для подключения программ на Perl и PHP к Citadel.
Администрирование Citadel
Для администрирования Citadel можно использовать командную строку или WebCit.
Список команд, вводимых в консоли, можно узнать из документа «CITADEL Admininistration Manual».
Например, чтобы создать новую четную запись, вводим:
Lobby> . Aide edit User
После чего отвечаем на ряд вполне стандартных вопросов.
Настройки сервера можно произвести, введя:
Lobby> . Aide System configuration General
По умолчанию разрешена регистрация всем пользователям. Первый зарегистрировавшийся пользователь получает доступ администратора уровня Aide (более подробно см. врезку «Уровни доступа пользователей Citadel»).
Рисунок 3. Создание учетной записи
Внешний вид окна WebCit у пользователя разных уровней не отличается, только у администратора появляется дополнительная вкладка «Administrator», в которой и производятся все настройки системы.
Настройки понятны любому опытному пользователю. Выбирая подпункты во вкладке «Administrator», можно отключить ненужные сервисы (например, оставив только защищенные аналоги), глобально запретить отсылать/получать почту из Интернета, настроить пересылку почты на другие серверы, фильтрацию, запретить самостоятельную регистрацию пользователей, подключиться к сети Citadel и многое другое.
В комплект входит и несколько вспомогательных утилит: aidepost, whobbs, msgform, userlist и sendcommand. Например, userlist позволяет получить список пользователей системы.
$ sudo userlist
User Name Num L LastCall Calls Posts
------------------------- ----- - ---------- ----- -----
grinder 1 6 11/23/2007 2 9
sergej 2 4 11/24/2007 3 3
vasja 3 4 11/23/2007 1 3
|
Заключение
Итак Citadel, весьма интересная система для организации групповой работы, имеющая ряд дополнительных функций вроде BBS. Простота в установке и удобство настройке позоляют начинающему администратору использовать его просто как почтовый сервер. Для небольшой и средней организации его будет вполне достаточно.
Рисунок 4. Календарь Citadel
Следует отметить и весьма неплохую документацию проекта, которая хотя и на английском, но при базовом знании языка вполне достаточно, чтобы разобраться с особенностями работы этого сервера.
Приложение
Изменение внешнего вида WebCit
Несмотря на то, что WebCit также написан на С, разработчики предусмотрели ряд механизмов, позволяющих изменить как внешний вид, так и выводимые сообщения. Так, за то, как будет выглядеть выводимая страница, отвечает CSS-файл static/webcit.css. Трогать его не нужно. Достаточно создать в другом каталоге static.local файл с таким же именем, он будет считываться после основного и аннулирует все его настройки. С его помощью можно изменить как вид окна входа в систему, так и рабочее пространство, появляющееся после регистрации.
Сообщения и помощь, выводимые при регистрации пользователей как в консоли, так и WebCit, записаны в нескольких файлах, находящихся в подкаталогах messages и help, каталога, в который установлен сервер Citadel. Их содержимое можно изменить, записав свои сообщения на выбранном языке, только не забывайте использовать редактор, поддерживающий UTF-8.
Для локализации интерфейса в Citadel используется GNU Gettext, в архиве WebCit находится файл шаблона для переводчиков webcit/po/webcit.pot (см. рис. 5).
Рисунок 5. Окно регистрации пользователя
Уровни доступа пользователей Citadel
Пользователь в Citadel может иметь один из 7 уровней доступа, администратор в настройках может указать, к какому уровню будет принадлежать новый пользователь.
- 0 – Deleted – учетная запись, у которой уровень установлен в 0, будет удалена;
- 1 – New User – новый не подтвержденный пользователь, получает доступ только на чтение сообщений, отправлять сообщение из комнаты «Mail>» может только администратору;
- 2 – Problem user – ограниченная учетная запись, используется например, для условного тестового доступа;
- 3 – Local User – может отправлять сообщения только внутри Citadel, без выхода наружу;
- 4 – Network User – может вводить сообщения в каждой доступной комнате;
- 5 – Preferred user – имеет доступ к привилегированным комнатам и к администрированию некоторых функций;
- 6 – Aide – администратор системы, отдельные пользователи могут получать права этого уровня в отдельных комнатах, также есть возможность автоматического задания таких прав для пользователей, создавших приватные комнаты.
- Яремчук С. Устанавливаем eGroupware. //«Системный администратор», № 3, 2007 г. – С. 36-41.
- Сайт проекта Citadel – http://www.citadel.org.
- Рабочая версия Citadel – https://uncensored.citadel.org.
- Сайт проекта Myrinix liveCD – http://www.myrinix.com.
- Сайт проекта Berkeley DB – http://www.sleepycat.com.
- Сайт проекта libical – http://www.aurore.net/projects/libical.
- Сайт проекта libSieve – http://libsieve.sourceforge.net.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|