<othercredit role="translator"><firstname>Алексей</firstname><surname>Опарин</surname><affiliation><address><email>opaleksej@yandex.ru</email></address></affiliation><contrib>Перевод на русский</contrib></othercredit>
<para>Я долго не мог найти приемлемое для моего маленького офиса <acronym>PIM</acronym>-решение, которое позволяло бы нам с моим секретарём иметь общий доступ к данным о наших контактах, намеченных встречах и т.п. Будучи пользователем &kde;, я знал о проекте Kroupware и ожидал его завершения. Но, увидев, насколько сложна архитектура и настройка <application>Kolab</application> сервера 1.0 (серверной части проекта), решил воздержаться и дождаться выхода <application>Kolab</application> 2.0 с более простым развёртыванием. И всё-таки, возможности <application>Kolab</application> для моих скромных потребностей были явно избыточны. Но вот однажды на форуме &kde; я встретил обсуждение, в котором упоминалось о возможности общего доступа к данным без использования <application>Kolab</application>... ого, это интересно!</para>
<para>Оказывается, в маленьких офисах можно обойтись без установки <application>Kolab</application> сервера или других groupware-решений, воспользовавшись одним &kontact;. Он может работать с обычным, простым в настройке <acronym>IMAP</acronym>-сервером.</para>
<para>Описываемые действия я проводил на платформе Debian unstable и &kde; 3.4. К &kontact; и другим легендарным GNU/Linux приложениям я обращался из Window$ с помощью Cygwin/X, в ожидании того момента, когда проект Wine сделает возможным запуск всех необходимых мне Windows-программ (не имеющих подходящих аналогов под GNU/Linux таких не было). Итак, мне нужно было обеспечить общий с моим секретарём доступ к данным о контактах, событиях, намеченных мероприятиях.</para>
<para>Вот определение из словаря <ulink url="http://computeruser.com">ComputerUser.com High-Tech Dictionary:</ulink> <blockquote><para>Internet Message Access Protocol. Протокол, позволяющий пользователю производить некоторые почтовые операции на удалённом сервере. С помощью IMAP пользователь может создавать, удалять и переименовывать почтовые ящики; получать и удалять сообщения; выполнять поиск по почте. Для отправки почты требуется отдельный протокол. Другой вариант расшифровки -- Internet Mail Access Protocol.</para></blockquote> </para>
<para>Значит, этот протокол можно рассматривать как интерфейс к накопителю со специфическими функциями доступа. Чтобы использовать его, нужен сервер <acronym>IMAP</acronym>, такой как <application>Cyrus</application>, <application>Courier </application> или <application>UW</application>.</para>
<para><application>Kolab</application> даёт возможность общего доступа к данным для разных клиентов. Например, ваш секретарь может пользоваться <application>Outlook</application>, а вы -- &kontact;.</para>
<para>Вы получаете интерфейс настройки, позволяющий управлять учётными записями пользователей, настраивать почтовые учётные записи, общий сервер конфигурации <acronym>LDAP</acronym> и адресной книги, фильтры спама и вирусов, управление графиком отпусков, режимом труда и отдыха, ресурсами (номера в гостиницах, автомобили), список адресатов и групп, автоматическое напоминание и т.д.</para>
<para>Однако, всё это очень сложно в установке и настройке. Для новичка вроде меня это означает нескончаемые ночные бдения и массу проблем, прежде чем все заработает. Нет уж, спасибо, лучше я попробую <acronym>IMAP</acronym>, он попроще.</para>
<para>Я выбрал <application>Cyrus</application>, это часть пакета программ <application>Kolab</application>, поэтому, если будет суждено перейти на <application>Kolab</application> в будущем, по крайней мере я буду с ним знаком.</para> <para>Итак, приступим к установке и настройке!</para>
<computeroutput>Installing cyrus21-imapd...</computeroutput><lineannotation>Программа установки спрашивала что-то о search address... Я просто нажал <keycap>Enter</keycap> и всё заработало</lineannotation>.</screen>
<para>Программа установки создаёт пользователя <systemitem class="username">cyrus</systemitem>, принадлежащего к автоматически созданной группе <systemitem class="groupname">sasl</systemitem>, которая является <quote>владельцем</quote> всех файлов cyrus. После завершения установки с помощью <command>ps <option>-A</option></command> можно увидеть новые процессы: <command>cyrmaster</command> и <command>notifyd</command>.</para>
<para>Трудности встретились в настройке идентификации <application>Cyrus</application>, просто потому что я новичок с ограниченным знанием предмета.</para>
<para><application>Cyrus</application> может использовать различные механизмы <acronym>SASL</acronym> (Simple Authentication and Security Layer). По умолчанию установлен sasldb (он сохраняет имена пользователей и пароли в файле <filename>sasldb</filename>), но поддерживаются также getpwent, kerberos4, kerberos5, PAM, rimap, shadow и LDAP.</para>
<para>Не желая менять уже имеющиеся имена и пароли, я выбрал механизм <quote>shadow</quote>, позволяющий использовать для идентификации в <application>Cyrus</application> пароли &Linux;.</para>
<para>Чтобы сделать это, необходимо сообщить sasl об использовании <command>saslauthd</command> в качестве метода авторизации, затем настроить <command>saslauthd</command> на использование <quote>shadow</quote> (или <quote>getpwent</quote>) как механизма идентификации.</para>
<para>Введите пароль, который вам понравится (и который сможете запомнить), в моём примере использован <quote>cyrus</quote> как пароль администратора приложения <application>cyrus</application>.</para>
<programlisting>sasl_pwcheck_method: <userinput>saslauthd</userinput> <lineannotation> вместо стоящего по умолчанию <literal>auxprop</literal></lineannotation></programlisting>
<para>удалите знак <literal>#</literal> в начале строки:</para>
<programlisting>#admins: cyrus</programlisting>
<para>таким образом пользователь <systemitem class="username">cyrus</systemitem> может распоряжаться учётной записью <application>cyrus</application>.</para>
<para>(иначе <application>saslauthd</application> не будет запускаться при загрузке, даже будучи указанным где-нибудь в <filename class="directory">/etc/rcx.d</filename>!)</para>
<para>и вместо <literal>MECHANISMS="pam" </literal> введите <userinput>MECHANISMS="shadow"</userinput>, таким образом при загрузке будет выполняться команда <command>saslauthd</command><option>-a<parameter>shadow </parameter></option>.</para>
<para>Выйдя из редактора, перезапустите <application>sasl</application> и <application>cyrus</application>.</para>
<para>Предлагается ввести пароль для <systemitem class="username">cyrus</systemitem>, так введём его.</para>
<para>Если пользователь <systemitem class="username">cyrus</systemitem> правильно идентифицирован, появятся следующие строки:</para>
<screen><computeroutput>S: L01 OK User logged in
Authenticated.</computeroutput></screen>
<para>Для выхода наберите <userinput>. logout</userinput> (точка, пробел, <quote>logout</quote>)</para>
<para>Теперь с помощью обычных системных средств создадим пользователя <systemitem class="username">groupware</systemitem> и установим для него пароль. Он должен принадлежать к какой-нибудь непривилегированной группе, например <systemitem class="groupname"> nobody</systemitem>, ему не нужны системная оболочка и домашняя папка.</para>
<para>Создадим пользователя и <acronym>IMAP</acronym> также и в <application>cyrus</application>:</para>
<screen># <userinput><command>cyradm</command> <option>--user cyrus localhost</option></userinput>
после ввода пароля администратора <systemitem class="username">cyrus</systemitem>, получим приглашение <prompt>localhost></prompt>
<prompt>localhost></prompt> <userinput><command>lm</command></userinput> <lineannotation>выводит только что созданный почтовый ящик</lineannotation>
-rw------- 1 cyrus mail 76 Oct 29 20:55 cyrus.index</computeroutput></screen>
<para>Теперь можно попробовать подключиться <acronym>IMAP</acronym>-клиентом как пользователь <systemitem class="username">groupware</systemitem> и заглянуть в папку <literal>INBOX</literal>.</para>
<note><para>В протоколе <acronym>IMAP</acronym> название почтового ящика <literal>INBOX</literal> служит ключевым словом, это в некотором роде <quote>псевдоним</quote> структуры каталога выше. Клиент заходит во <literal>INBOX</literal>, а сервер <acronym>IMAP</acronym> перенаправляет его в папку <filename class="directory">/var/spool/cyrus/mail/...</filename> с её файлами-сообщениями.</para></note>
<para>Я подключаюсь к моему офисному серверу с GNU/Linux (это "black box", без клавиатуры и монитора) с двух компьютеров с &Windows; 2000 с помощью <application>Cygwin/X</application>, используя их как X-Window сервер (в ближайшем будущем надеюсь заменить их на два тонких клиента mini-itx под управлением). В этой конфигурации каждый пользователь запускает &kontact; на той машине, на которой установлен и запущен <application>Cyrus</application> (localhost).</para>
<step><para>Создадим учётную запись <acronym>IMAP</acronym> в <application>Cyrus</application> для мнимого пользователя <systemitem class="username">groupware</systemitem> (это мы уже сделали)</para></step>
<step><para>Создадим и настроим учётную запись <acronym>IMAP</acronym> в &kmail; для входа этого пользователя</para></step> <step><para>Используйте tderesources для того чтобы заставить компоненты &kontact; работать с данными, взятыми из источника <acronym>IMAP</acronym></para></step>
<step><para>Включим функции groupware и создадим соответствующие подпапки в <literal>INBOX</literal> (если их там ещё нет)</para></step>
<step><para>Приятной работы с новыми друзьями &kontact;, <application>Cyrus</application> и IMAP!</para></step>
<para>Итак, войдём в &kde; с учётной записью первого <quote>реального пользователя</quote>, которому мы хотим предоставить функциональность groupware.</para>
<para>Создаём учётную запись IMAP в &kmail;.</para>
<para>Запустим &kontact; и найдём <guilabel>Почта</guilabel> (компонент &kmail;). В меню выбираем: <menuchoice><guimenu>Настройка</guimenu><guimenuitem>Настроить KMail </guimenuitem><guilabel>Учётные записи</guilabel></menuchoice>, переходим на вкладку <guilabel>Получение</guilabel>. Нажмём кнопку <guibutton>Добавить...</guibutton>. Будет задан вопрос о типе почтовой учётной записи, выберите <guilabel>Отсоединённый IMAP</guilabel> (а не просто <guilabel>IMAP</guilabel>). Затем на вкладке <guilabel>Общие</guilabel> введём следующие данные:</para>
<para>Отметьте галочкой <guilabel>Хранить пароль IMAP в файле настроек</guilabel>, чтобы не вводить его снова и снова. Отметьте также <guilabel>Периодическая проверка почты</guilabel> и задайте значение в минутах.</para>
<para>Заметьте, что выбран тип учётной записи <guilabel>Отсоединённый IMAP</guilabel>. В этом случае копии данных groupware хранятся <quote>локально</quote> по отношению к клиенту (в его домашней папке) и синхронизируются при каждом его подключении. На первый взгляд, это очень неэффективно, так как данные многократно дублируются (например, на 10 пользователей &kontact; будет 10+1 копий данных). Но это единственная возможность добиться высокой скорости, ведь &kontact; при каждом подключении доставляет все данные и заставляет &korganizer; и &kaddressbook; обрабатывать их. Если же при <quote>Отсоединённом IMAP</quote> данные хранятся в одном месте, пересылаются только <quote>delta</quote> (изменённые) данные.</para>
<para>С другой стороны, если пользователи работают с &korganizer; на той же машине, что <acronym>IMAP</acronym> сервер, может показаться более разумным выбрать режим <acronym>IMAP</acronym> (так называемый <quote>онлайн IMAP</quote>) для экономии места, если скорость передачи не очень важна. К несчастью, этот способ не действует, потому что &kontact; в режиме <quote>IMAP</quote> не может автоматически обновлять папку <guilabel>Календарь</guilabel>. Поэтому, когда кто-нибудь добавляет в эту папку данные, общего обновления не происходит (необходимо вручную включать приложение &kmail; и щёлкать на папке <guilabel>Календарь</guilabel>). Кроме того, когда при пуске начинается чтение папок <guilabel>Календарь</guilabel>, происходит ужасное мигание и замедление обновления данных.</para>
<para>Теперь можно сообщить &kontact; об использовании <acronym>IMAP</acronym> как источника данных для своих компонентов. Из &kmenu;, выберите <guimenuitem>Выполнить программу</guimenuitem>, введите <userinput><command>tdecmshell tderesources</command></userinput>. В выпадающем списке выберите <guilabel>Контакты</guilabel>, затем нажмите кнопку <guibutton>Добавить...</guibutton> и выберите <guilabel>Адресная книга на сервере IMAP через KMail</guilabel>. Затем выберите эту новую запись и нажмите кнопку <guibutton>Использовать как стандартный</guibutton>. Сделайте то же самое для типов <guilabel>Календарь</guilabel> и <guilabel>Заметки</guilabel>.</para>
<para>Выберите <guilabel>Английский</guilabel> как <guilabel>Язык папок совместной работы</guilabel> (на тот случай, если на сервере <acronym>IMAP</acronym> уже есть папки, созданные другой программой на другом языке).</para>
<para>Теперь перейдём к <guilabel>Корневая папка ресурсов</guilabel> и выберем подпапку <guilabel>Inbox</guilabel> в папке <guilabel>office_gwdata</guilabel>.</para>
<para>Пункт <guilabel>Скрыть папки совместной работы</guilabel> оставим пока неотмеченным и посмотрим, что из этого получится. В дальнейшем, когда окончательно во всём разберёмся, можно будет вернуться и отметить его.</para>
<para>Нажав OK, получаем предложение: <computeroutput>&kmail; создаст требуемые папки для ресурса IMAP как подпапки Inbox</computeroutput> </para>
<para>Если нам этого не нужно, нажмём <guibutton>Нет</guibutton>, и ресурсы <acronym>IMAP</acronym> будут удалены. Нажмём <guibutton>Да</guibutton> (эта возможность появляется только раз, для первого <quote>реального пользователя</quote>). Тут же можно заметить, как в дереве папок &kmail; в папках <menuchoice><guilabel>office_gwdata</guilabel><guilabel>Inbox</guilabel></menuchoice> создаются эти подпапки.</para>
-rw------- 1 cyrus mail 76 Oct 31 15:28 cyrus.index</computeroutput></screen>
<para>Как можно заметить, <guilabel>office_gwdata Inbox</guilabel> находится не в домашней директории пользователя &kontact;, а в папках пользователей <acronym>IMAP</acronym> <systemitem class="username">groupware</systemitem>.</para>
<para>Теперь &kontact; готов к работе и хранению данных в этих папках. В календаре, если учётная запись &kmail; <acronym>IMAP</acronym> имела тип <quote>Отсоединённый</quote>, в окне <guilabel>Ресурс</guilabel> должен быть виден пункт <guilabel>Imap-ресурс</guilabel> с тремя подпунктами, которые являются путями к локальным домашним файлам. А вот в пункте <guilabel>Контакты</guilabel> подпунктов в <guilabel>Imap-ресурс</guilabel> нет.</para>
<para>Теперь можно войти в &kde; под именем другого пользователя, и подобным же образом настроить его/её клиент &kontact;.</para>
<para>Откройте &kontact;, и в компоненте <guilabel>Письмо</guilabel> добавьте учётную запись <acronym>IMAP</acronym>, указав в качестве <guilabel>Сервер</guilabel> компьютер, на котором установлен <application>Cyrus</application> сервер (в моём случае: <literal>192.168.1.3</literal>).</para>
<para>Не забудьте поставить флажок <guilabel>Периодическая проверка почты</guilabel> и установить значение в минутах. Когда вы подтвердите свои действия, вопрос о создании подпапок задан не будет (ведь они уже созданы на сервере <acronym>IMAP</acronym>), их можно увидеть в дереве папок.</para>
<para>Помните, что в режиме <quote>Отсоединённый <acronym>IMAP</acronym></quote> данные передаются от клиента на сервер <acronym>IMAP</acronym> только тогда, когда клиент подключается для проверки почты. Поэтому, если у ваших клиентов &kontact; <guilabel>Интервал между проверками</guilabel> установлен, например, 5 минут, то в худшем случае задержка между записью события и его появлением перед другими пользователями составит 10 минут.</para>
<title>Как установить доступ только для чтения</title>
<note><para>Хочу предупредить, что реализация Заметок <acronym>IMAP</acronym> в &kontact; вплоть до версии 1.01 была неустойчивой, поэтому описанные настройки с прежними версиями могут не работать. Если вы хотите пользоваться этими версиями, понадобятся настройки, существовавшие ранее.</para></note>
<para>В этих прежних настройках существует тот же <quote>мнимый</quote> пользователь под именем <systemitem class="username">groupware</systemitem>, имя и пароль которого применяют все <quote>реальные</quote> пользователи &kontact; (т.е. <systemitem class="username">tony</systemitem>, <systemitem class="username">rohn</systemitem>, <systemitem class="username">amanda</systemitem> и т.д.) через учётную запись <acronym>IMAP</acronym>. Но таким образом все реальные пользователи имеют одинаковые права чтения/записи, так как каждый подключается к <acronym>IMAP</acronym> серверу как пользователь <systemitem class="username">groupware</systemitem>.</para>
<para>Для ограничения доступа некоторым пользователям (обычно, предоставляется доступ только для чтения), можно воспользоваться <acronym>ACL</acronym> (Access Control Lists).</para>
<para>В &kmail; выберите подпапку <guilabel>office_gwdata</guilabel>, например, <guilabel>Календарь</guilabel>, и, щёлкнув на ней правой кнопкой мыши, выберите пункт <guilabel>Параметры</guilabel>, вкладку <guilabel>Контроль доступа</guilabel>. Здесь можно указать, каким пользователям и какие права доступа к этой папке вы хотите предоставить.</para>
<para>Ради эксперимента, дадим права <quote>All</quote> пользователю <systemitem class="username">mary</systemitem></para>
<para>Сначала на уровне приложения <application>cyrus</application> (на той машине, на которой размещён <acronym>IMAP</acronym> сервер cyrus, средствами приложения <application>cyrus</application>) добавим пользователя <systemitem class="username">mary</systemitem>, чтобы этого пользователя мог опознать <acronym>IMAP</acronym>, и создадим для неё <acronym>IMAP</acronym> папку.</para>
<para>Затем входим в GNU/Linux как <systemitem class="username">mary</systemitem> и переходим в &kontact;. Как мы видели прежде, учётную запись <acronym>IMAP</acronym> в &kmail; вы можете настроить как один из пользователей (вместо мнимого пользователя <systemitem class="username">groupware</systemitem> и его пароля, мы можем использовать имя <systemitem class="username">mary</systemitem> и её пароль).</para>
<para>На этот раз в дереве папок &kmail; вы увидите следующую структуру: <menuchoice><guimenu>office_gwdata</guimenu><guisubmenu>user</guisubmenu> <guisubmenu>groupware</guisubmenu><guimenuitem>Календарь и Задачи</guimenuitem></menuchoice>. Проверьте почту (<menuchoice><guimenu>Файл</guimenu><guimenuitem>Проверить почту</guimenuitem></menuchoice>), и вы также увидите папку <quote>входящие</quote> под папкой <quote>office_gwdata</quote>.</para>
<para>Теперь включим функциональность groupware &kmail;, и в <guilabel>Папки IMAP есть подпапки:</guilabel> укажем <guimenuitem>Входящие</guimenuitem>, которая является подпапкой <quote>office_gwdata</quote>.</para>
<para>Теперь включим возможности groupware &kmail;, и в <guilabel>Папки IMAP есть подпапки:</guilabel> укажем <guimenuitem>Входящие</guimenuitem>, которая является подпапкой <guisubmenu>office_gwdata</guisubmenu>.</para>
<para><quote>Входящие</quote> с папками Календарь, Контакты, Заметки, Задачи и Журнал, которые хранятся в папках <systemitem class="username">mary</systemitem> <acronym>IMAP</acronym> на <acronym>IMAP</acronym> сервере</para>
<para><quote>user</quote>, с подпапкой <quote>groupware</quote> и подпапками, к которым имеет доступ <systemitem class="username">mary</systemitem> (в нашем примере, Календарь и Задачи)</para>
<para>Правой кнопкой мыши щёлкнем <quote>user</quote> <quote>Календарь</quote> и проверим, имеет ли он тип Календарь (если нет, то установим его как надо). Так же поступим с папкой <quote>user</quote> <quote>Задачи</quote>.</para>
<para>Теперь в Календаре у вас есть два возможных <acronym>IMAP</acronym>-ресурса для записи, поэтому, когда вы создадите новое событие, вам будет задан вопрос, какой из них использовать (а если оставлены доступными локальные ресурсы, придётся выбирать из трёх!).</para>
<para>Нужно переместить курсор в нижнее левое маленькое окошко Календаря, которое показывает доступные ресурсы, и снять отметку с тех, что не указывают на <guilabel>.groupware.directory</guilabel> (см. хвостовую часть пути к ресурсу).</para>
<para>Я новичок, и смог вложить в это руководство только свои время и желание. Реальными же знаниями я обязан некоторым наставникам из мира свободного ПО, которых хочу поблагодарить за компетенцию, терпение и готовность прийти на помощь.</para>