Citadel – OpenSource решение для групповой работы

25 Фев
2008

В 80-90х годах одной из популярных платформ для организации BBS был Citadel, в 1998 году разработчики начали расширять его функциональность, и постепенно Citadel превратился в удобную систему для организации коллективной работы.

Вообще то правильней называть Citadel/UX (то есть Unix), так как клонов оригинальной Citadel было создано много. Изначально проект ориентирован исключительно на Unix системы – Linux и *BSD, это и хотели подчеркнуть в имени проекта. Хотя сами разработчики для краткости используют также имя Citadel, аргументируя это еще и тем, что это пока единственный активный проект с таким именем. Некоторое время проект развивался без лишнего шума, готовое решение было представлено общественности приблизительно в 2002 году. Первое время в Citadel часто находили уязвимости разной степени серьезности, но теперь по прошествии почти 10 лет ситуация изменилась в лучшую сторону. Распространяется Citadel по лицензии GNU GPL. Кроме указанных систем точно будет работать в Solaris и Mac OS X.

Возможности Citadel

Об одной из систем для групповой работы eGroupware уже говорилось, там же дано краткое описание некоторых имеющихся решений. Citadel построен по клиент-серверной архитектуре, и обеспечивает работу как пользователям подключающимся по коммутируемым соединениям (вроде Fidonet), так и через Интернет. В его состав включено большое количество приложений, обеспечивающих самые разнообразные функции. Администратор установивший Citadel обнаружит целый ряд сервисов:

- BBS (Bulletin Board System) со всеми типичными функциями;

- почтовый сервис, обеспечивающий работу по протоколам IMAP, POP3, ESMTP со встроенной поддержкой аутентификации пользователя, сортировки и фильтрации сообщений при помощи Realtime Blackhole Lists (RBL) и SpamAssassin, а также языка фильтрации Sieve и списков рассылки;

- чат, форум, открытые и приватные комнаты общения;

- календарь с поддержкой протоколов Webcal/GroupDAV, список задач.

А еще адресная книга с поддержкой vCard и LDAP, заметки, агрегатор RSS, простой консольный клиент для подключения к серверу, публичные каталоги и другие. Некоторые не нужные сервисы после установки можно отключить. Для всех протоколов реализована поддержка SSL/TLS для безопасной аутентификации и передачи данных. Списки рассылки могут быть двух видов: list и digest. В первом случае сообщения получателям доставляются индивидуально, в поле От будет стоять адрес автора сообщения. Во втором случае в поле От будет стоять адрес «комнаты» в данном случае, что позволит пользователю ответить на адрес комнаты.

Практически все функции 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

Не смотря на то, что WebCit также написан на С, разработчики предусмотрели ряд механизмов позволяющий изменить как внешний вид и выводимые сообщения. Так за то как будет выглядеть выводимая страница отвечает CSS файл static/webcit.css. Трогать его не нужно. Достаточно создать в другом каталоге static.local файл с таким же именем, он будет считываться после основного и аннулирует все его настройки. С его помощью можно изменить как вид окна входа в систему, так и рабочее пространство появляющееся после регистрации.

Сообщения и помощь, выводимые при регистрации пользователей, как в консоли, так и WebCit записаны в нескольких файлах находящихся в подкаталогах messages и help, каталога в который установлен сервер Citadel. Их содержимое можно изменить, записав свои сообщения на выбранном языке, только не забывайте использовать редактор поддерживающий UTF-8.

Для локализации интерфейса в Citadel используется GNU Gettext, в архиве WebCit находится файл шаблона для переводчиков webcit/po/webcit.pot (см.второй рисунок).

Компоненты citadel написаны на С, сервер поддерживает многопоточность, и без проблем обеспечивает одновременную работу большого числа пользователей, без ограничений на количество и размер сообщений. Данные и сообщения хранятся в Berkeley DB, если письмо адресовано нескольким пользователям, на жестком диске все равно хранится только одна его копия. Один сервер может обслуживать несколько виртуальных доменов. Также возможна совместная работа нескольких серверов Citadel, обслуживающих в том числе и разные домены с репликацией данных между ними. Учетные записи любого домена, при необходимости могут быть сохранены на любом из серверов Citadel.Ознакомиться с работой Citadel и в частности WebCit как обычный пользователь, можно свободно зарегистрировавшись по ссылке. Это рабочая система, в которой разработчики обмениваются информацией с пользователями. В Live CD дистрибутиве Myrinix доступен модуль 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.

Консоль Citadel

По поводу группы в которую должен входить пользователь Citadel ничего не сказано. Но группа с GID 1 это обычно root.

После установки пакета в 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 /usr/local/citadel/citadel citadel

Но это еще не все. Чтобы пользователь, входя в систему через 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

Скрипт задаст несколько вопросов по настройкам, основной из которых, необходимость в автоматическом запуске приложения при загрузке системы. После окончания работы, приложение можно запускать. Если не планируется использовать 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

Пользователь в Citadel может иметь один из 7 уровней доступа, администратор в настройках может указать, к какому уровню будет принадлежать новый пользователь.

  • 0 – Deleted – учетная запись, у которой уровень установлен в 0, будет удалена;
  • 1 – New User – новый не подтвержденный пользователь, получает доступ только на чтение сообщение, отправлять сообщение из комнаты «Mail>» почту может только администратору;
  • 2 – Problem user – ограниченная учетная запись, используется например для условного тестового доступа;
  • 3 – Local User – может отправлять сообщения только внутри Citadel, без выхода наружу;
  • 4 – Network User – может вводить сообщения в каждой доступной комнате;
  • 5 – Preferred user – имеет доступ, то привилегированных комнат, и к администрированию некоторых функций;
  • 6 – Aide – администратор системы, отдельные пользователи могут получать права этого уровня в отдельных комнатах, есть возможность автоматического задания таких прав для пользователей создавших приватные комнаты.

Внешний вид окна 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. Простота в установке и удобство настройке, позоляет начинающему администратору его использовать просто как почтовый сервер. Для небольшой и средней организации его будет вполне достаточно.

Календарь Citadel

Ссылки:

1. Сайт проекта Citadel – http://www.citadel.org/

2. Рабочая версия Citadel – https://uncensored.citadel.org/

3. Сайт проекта Myrinix liveCD – http://www.myrinix.com/

4. Сайт проекта Berkeley DB – http://www.sleepycat.com/

5. Сайт проекта libical – http://www.aurore.net/projects/libical/

6. Сайт проекта libSieve – http://libsieve.sourceforge.net/

Комментировать

Наверх