Marco
Menardi
gnu@kde.org
Юрій
Чорноіван

    yurchor@ukr.net

Переклад українською

# Спільне використання даних за допомогою &kontact; через IMAP

## Вступ

Я довго шукав для мого маленького офісу PIM-рішення, яке надавало мені можливість спільного користування даними так, щоб мій секретар і я могли спільно використовувати записи контактів, відомості про зустрічі тощо. Будучи користувачем &kde;, я чув про проект Kroupware і чекав на завершення його розробки. Але, коли я побачив наскільки складною є архітектура і налаштування сервера Kolab 1.0 (серверної частини проекту), я здався, і почав чекати на простішу реалізацію у Kolab 2.0. У будь-якому разі можливостей Kolab було забагато для моїх потреб. На щастя, у вікі &kde; мені вдалося знайти місце на каналі IRC, де обговорювалося спільне використання даних без використання інфраструктури Kolab... м-м-м, це вже цікаво!

Для невеликих офісів і невеликих потреб ви можете зробити так, щоб &kontact; використовував спільні дані без потреби у встановленні сервера Kolab або іншого сервера для групової роботи. &kontact; може працювати з простим сервером IMAP, який можна досить просто налаштувати.

Описані у цьому підручнику дії я виконував за допомогою сервера, на якому було встановлено дистрибутив Debian unstable і &kde; 3.4. Доступ до &kontact; та інших відомих програм GNU/Linux я здійснював за допомогою &Windows; і Cygwin/X, очікуючи, доки проект Wine зможе запускати останні програми під &Windows;, які були мені потрібні (версій яких під GNU/Linux немає). Отже, мені було потрібно спільно використовувати контакти, події, завдання і нотатки з моїм секретарем.

## Що таке IMAP?

Це визначення було взято з Словника високих технологій ComputerUser.com:

> Протокол доступу до повідомлень інтернету (Internet Message Access Protocol). Протокол, за допомогою якого користувач може виконувати певні функції з роботи з електронною поштою на віддаленому сервері, а не на локальному комп’ютері. За допомогою IMAP користувач може створювати, вилучати або перейменовувати поштові скриньки, отримувати нові повідомлення, вилучати повідомлення і виконувати функції з пошуку у поштових повідомленнях. Для надсилання пошти потрібен окремий протокол. Іншою назвою протоколу є протокол доступу до інтернет-пошти (Internet Mail Access Protocol).

Отже IMAP можна розглядати як сховище даних. Для того, щоб скористатися ним, вам потрібен сервер IMAP, наприклад, Cyrus, Courier або UW.

## Kolab чи IMAP?

Kolab надає змогу різним клієнтам спільно використовувати дані. Наприклад, ваш секретар може використовувати Outlook, коли ви використовуєте &kontact;.

У вас буде інтерфейс налаштування, який виконує дії з керування параметрами інтерфейсу, налаштування облікового запису, центрального сервера даних налаштувань LDAP і адресної книги, фільтрування небажаної кореспонденції і вірусів, керування скриптами відпусток, режимом праці і відпочинку, ресурсами (приміщеннями, автомобілями), групами, списками розповсюдження, автоматичного запрошення тощо.

Але для того, щоб мати все вам треба для початку все налаштувати. Для недосвідченого користувача, на зразок мене, це довжелезний жах, величезні проблеми, які слід перебороти, щоб все це запрацювало. Отже, ні, дякую, краще вже IMAP, він простіший.

## Як налаштувати сервер IMAP Cyrus?

Моїм вибором є Cyrus, який є частиною набору інструментів Kolab, отже, якщо згодом я звернуся до Kolab, принаймні, я знатиму все про його частину.

Отже, почнімо встановлення і налаштування!

Увійдіть до облікового запису root.

    # apt-get install cyrus21-imapd cyrus21-common cyrus21-admin cyrus21-client sasl-bin sasl2-bin
    Встановлення cyrus21-imapd...Інструмент встановлення запитав мене про щось про пошук адреси, чого я не зрозумів... Я просто натиснув Enter.

Крім того, інструмент встановлення створив користувача cyrus, який належав до (автоматично створеної) групи sasl, і який був власником всіх файлів cyrus. Після завершення процедури у виводі команди `ps `-A`` ви зможете знайти нові процеси: `cyrmaster` і `notifyd`.

Єдина проблема у налаштуванні Cyrus є налаштування розпізнавання, лише через те, що таке налаштування не є тривіальним, а я не був досвідченим користувачем з обмеженим знанням питання.

Cyrus може використовувати різні механізми SASL (Simple Authentication and Security Layer), типовим є sasldb (за його використання імена користувачів і паролі зберігатимуться у файлі паролів SASL `sasldb`), але крім цього механізму підтримуються ще getpwent, kerberos4, kerberos5, PAM, rimap, shadow і LDAP.

Оскільки я не бажав визначати пари користувач-пароль, які відрізняються від ти, які використовуються на моєму комп’ютері з &Linux;. Після цього я обрав механізм shadow, щоб Cyrus використовував паролі &Linux; для розпізнавання.

Для цього я наказав sasl використовувати `saslauthd` як метод розпізнавання за паролем, а потім налаштувати `saslauthd` на використання механізму розпізнавання shadow (або getpwent).

Гаразд, почнімо!

Від імені користувача root, змініть пароль Linux для користувача cyrus:

    # passwd cyrus

Введіть бажаний пароль (вам слід його запам’ятати) у цьому прикладі ми скористаємося паролем адміністратора cyrus для програми cyrus.

    # vi /etc/imapd.conf

    sasl_pwcheck_method: saslauthd замість типового auxprop

вилучіть позначку коментаря `#` з рядка:

    #admins: cyrus

ось так ви можете адмініструвати cyrus увійшовши як користувач cyrus (у мене чудова фантазія!)

    # vi /etc/default/saslauthd

Зніміть позначку коментаря з рядка:

    # START=yes

(у іншому випадку saslauthd не буде запущено під час завантаження, навіть якщо пункт програм існує у одному з файлів `/etc/rcx.d`!)

і замість `MECHANISMS="pam"` впишіть `MECHANISMS="shadow"`, таким чином під час завантаження буде виконано команду `saslauthd` `-a `shadow``.

Після виходу з вашого редактора перезапустіть sasl і cyrus.

Щоб перевірити IMAP, виконайте такі команди:

    su cyrus
    $ imtest -m login -p imap localhost

Система запитає у вас пароль (користувача) cyrus, отже вам потрібно буде його ввести.

Якщо користувач cyrus зможе зареєструватися у системі, з’являться такі рядки:

    S: L01 OK User logged in
    Authenticated.

Щоб вийти, наберіть `. logout` (тобто, крапка пробіл logout)

Після цього додайте користувача з іменем groupware і встановіть пароль для нього за допомогою ваших звичайних системних інструментів. Цей користувач має належати до непривілейованої групи, такої як nobody, якому не потрібно входу до командної оболонки або домашнього каталогу.

Тепер вам слід створити користувача і IMAP у cyrus, крім того:

    # cyradm --user cyrus localhost
    після введення пароля адміністративного користувача cyrus, ви побачите запрошення localhost>
    localhost> cm user.groupware
    localhost> lm показує список поштових скриньок, які тільки-но створено
    user.groupware (\HasNoChildren))
    localhost> quit

Ви можете ввести команду ``help``, щоб переглянути список всіх можливих команд.

Ви можете перевірити, що сталося:

    # ls -l /var/spool/cyrus/mail/g/user/groupware
    total 12
    -rw------- 1 cyrus mail          4 Oct 29 20:55 cyrus.cache
    -rw------- 1 cyrus mail 155 Oct 29 20:55 cyrus.header
    -rw------- 1 cyrus mail 76 Oct 29 20:55 cyrus.index

Тепер ви отримаєте змогу з’єднатися з клієнтом IMAP від імені користувача groupware і побачите `INBOX`.

У протоколі IMAP назва поштової скриньки, `INBOX`, є ключовим словом, чимось на зразок псевдоніма для наведеної нижче структури каталогу. Клієнт бачить `INBOX`, а сервер IMAP спрямовує запит у теку `/var/spool/cyrus/mail/...` і її підструктуру.

## Як налаштувати клієнти &kontact;

Я з’єднуюсь з моїм офісним сервером GNU/Linux (він виглядає як «чорна скринька» без дисплея і клавіатури) з двох комп’ютерів з &Windows; 2000 і Cygwin/X, використовуючи його як сервер X-Window (у найближчому майбутньому я планую замінити обидва ці комп’ютери на 2 тонких клієнти mini-itx, які використовуватимуть LTSP). За цих налаштувань кожен з користувачів запускає &kontact; на тому ж комп’ютері, де встановлено і запущено Cyrus (localhost).

Щоб змусити &kontact; працювати з IMAP, слід виконати такі кроки:

1. Створіть обліковий запис IMAP у Cyrus для фіктивного користувача groupware (ми вже це зробили!)

2. Створіть або налаштуйте обліковий запис IMAP у &kmail; для входу від імені користувача

3. Скористайтеся програмою kresources для того, щоб налаштувати компоненти &kontact; за допомогою даних, взятих з IMAP

4. Увімкніть функціональні можливості групової роботи і відповідні підтеки цього IMAP `INBOX` (якщо ви ще цього не зробили)

5. Насолоджуйтеся роботою у &kontact; і спільним використанням даних за допомогою Cyrus IMAP

Отже, увійдіть до середовища &kde; за допомогою першого з облікових записів звичайного користувача, якому ви маєте намір надати функціональні можливості групової роботи.

Тепер створіть обліковий запис IMAP у &kmail;.

Запустіть &kontact; і оберіть пункт Пошта (компонент &kmail;). У меню оберіть пункт Параметри Налаштування KMail Облікові записи Вхідна пошта, натисніть кнопку Додати.... Програма запитає вам про тип вашого облікового запису, вам слід обрати від’єднаний IMAP (а не просто IMAP). А потім на вкладці Загальне введіть такі дані:

Назва облікового запису: `office_gwdata`

  Назва, яку буде використано для локальної теки, яка вказує на цей обліковий запис IMAP.

Користувач: `groupware`

  Користувач Cyrus, якого ми обрали як власника всіх офісних даних

Пароль:

  Пароль для користувача groupware.

Вузол: `localhost`

  Пам’ятайте, що у нашому прикладі клієнт &kontact; запущено на тому ж комп’ютері, що і сервер IMAP

Порт: `143`

  Типовий

Позначте пункт Зберігати пароль для IMAP, щоб програма не запитувала вас про пароль наступного разу, коли ви запустите &kontact;. Позначте пункт Ввімкнути періодичну перевірку пошти і вкажіть значення у хвилинах.

Зауважте, що ми обрали для типу облікового запису Від’єднаний IMAP. За такого налаштування копія даних для групової роботи зберігатиметься локально на стороні клієнта (у домашньому каталозі) і синхронізуватиметься під час кожного з’єднання з сервером. Здається, що за такого зберігання даних дані дублюються багато разів (тобто, якщо у вас є 10 користувачів, які використовують &kontact;, дані буде скопійовано 10+1 разів), але це єдиний спосіб забезпечити швидкість роботи, оскільки за кожного з’єднання &kontact; має отримувати всі дані і обробити їх за допомогою &korganizer; і &kaddressbook;. Якщо ви використовуватимете Від’єднаний IMAP дані зберігаються у кеші локально, а надсилається лише різниця (тобто змінені дані).

З іншого боку, якщо ваші користувачі працюють з &korganizer; на тому ж комп’ютері, на якому запущено сервер IMAP, ймовірно, слід скористатися IMAP (так званим інтерактивним IMAP) для заощадження місця на диску, оскільки у такому випадку швидкість передавання даних не є критичною. Але на жаль, така конфігурація не працюватиме, оскільки &kontact; не оновлює автоматично теку Календар на інтерактивному IMAP, отже не відбуватиметься оновлення під час додавання кимось подій (вам доведеться вручну перемикатися на програму &kmail; і натискати позначку теки Календар). Крім того, під час запуску і читання тек Календар ви можете зіткнутися з блиманням перегляду і повільним оновленням даних.

Тепер нам слід наказати &kontact; використовувати IMAP як джерело даних для різноманітних компонентів програми. Оберіть у K-меню пункт Виконати команду і виконайте команду ``kcmshell4 kresources``. У спадному списку оберіть пункт Контакти, а потім натисніть кнопку Додати... і оберіть варіант Адресна книга на сервері IMAP через KMail. Потім позначте створений рядок і натисніть кнопку Зробити типовим. Повторіть ці дії для Календаря і Нотаток.

Тепер ми увімкнули у &kmail; (і, як наслідок, у всьому &kontact;) функціональні можливості групової роботи:

1. Скористайтеся пунктом меню Параметри Налаштувати KMail Різне Групова робота

2. Позначте пункт Ввімкнути використання ресурсів IMAP

3. Оберіть Англійська у полі Мова для тек групової роботи (це у випадку, якщо у вас вже були теки на сервері IMAP, створені іншою програмою іншою мовою).

4. Тепер зверніться до пункту Тека ресурсів на обліковому записі і оберіть підтеку Inbox у теці office_gwdata.

   Залиште пункт Ховати теки для групової роботи поки що не позначеним, щоб мати змогу бачити, що відбувається. Ви зможете повернутися сюди і позначити пункт після того, як переконаєтеся у належній роботі системи.

5. Після натискання кнопки «Гаразд» програма надішле вам повідомлення: `Зараз &kmail; створить потрібні для ресурсу IMAP теки як підтеки теки Inbox`

   Якщо ви не бажаєте такого створення, натисніть кнопку Ні, — ресурс IMAP буде вимкнено. Натисніть кнопку Так (це слід зробити лише першого разу для першого справжнього користувача). Ви негайно побачите, що у дереві тек &kmail;, у теці office_gwdata Inbox буде створено такі підтеки:

   - Календар
   - Контакти
   - Нотатки
   - Завдання
   - Журнал

   якщо ви зараз виконаєте команду:

       # ls -l /var/spool/cyrus/mail/g/user/groupware/
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Calendar
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Contacts
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Journal
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Notes
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Tasks
       -rw------- 1 cyrus mail      4 Oct 31 15:28 cyrus.cache
       -rw------- 1 cyrus mail 155 Oct 29 20:55 cyrus.header
       -rw------- 1 cyrus mail 76 Oct 31 15:28 cyrus.index

   Якщо ви можете бачити, у теці office_gwdata Inbox зберігається не локально відносно поточної домашньої теки користувача &kontact;, а у теках користувачів IMAP groupware.

Тепер &kontact; готовий до роботи і зберігання даних у цій теці. У програмі роботи з календарем, якщо ви обрали для типу облікового запису IMAP у &kmail; від’єднаний, у вікні ресурсів має бути показано пункт Ресурс IMAP з 3 підпунктами, які є шляхами до локальних файлів. А ось у програмі Контакти у пункту Ресурс IMAP не буде підпунктів.

Тепер ви можете увійти до &kde; за допомогою іншого облікового запису користувача і налаштувати його або її клієнт &kontact; у подібний спосіб:

1. Відкрийте вікно &kontact; і додайте у компоненті Пошта обліковий запис IMAP, вказавши як вузол комп’ютер, на якому запущено сервер Cyrus (у моєму випадку: `192.168.1.3`).

   Не забудьте позначити пункт Ввімкнути періодичну перевірку пошти і вказати інтервал у хвилинах. Після натискання кнопки «Гаразд» програма запитає вас про створення підтек (оскільки вони знаходяться на сервері IMAP), а потім ви побачите створені теки у дереві тек.

2. Активуйте функціональні можливості групової роботи, щоб мати змогу зберегти дані на сервері IMAP.

Пам’ятайте, що за використання від’єднаного IMAP, дані передаються від клієнта до сервера IMAP, лише коли клієнт з’єднується з сервером для перевірки надходження пошти. Отже, якщо ви налаштували ваші клієнти &kontact; на періодичну перевірку пошти з інтервалом, наприклад, у 5 хвилин, у найгіршому випадку, між створенням запису про подію і його появою на клієнтах користувачів може пройти не більше 10 хвилин.

## Як встановити доступ лише для читання

Хочу вас попередити, що реалізація Нотаток IMAP у версіях &kontact;, що передували версії 1.01 працювала некоректно, отже описані тут дії не будуть працювати з застарілими версіями програми. Якщо вам потрібні нотатки, скористайтеся наведеними раніше настановами.

За описаного вище способу налаштування ми створювали одного фіктивного користувача з іменем groupware, якого використовували для роботи всіх справжніх користувачів &kontact; (тобто tony, rohn, amanda тощо) через обліковий запис IMAP за допомогою його імені і пароля. Але у такому випадку кожен зі справжніх користувачів має однакові права доступу на читання і запис до тек інших користувачів, оскільки всі користувачі з’єднуються з сервером IMAP від імені користувача groupware.

Щоб обмежити деяким з користувачів (зазвичай, доступом лише для читання) доступ, ми можемо скористатися ACL (списками контролю доступу).

Оберіть у &kmail; підтеку теки вхідних повідомлень office_gwdata, наприклад, Календар, наведіть на неї вказівник миші і клацніть правою кнопкою миші. Оберіть у контекстному меню пункт Властивості і відкрийте вкладку Керування доступом. На цій вкладці ви можете визначити перелік користувачів, яким ви надасте доступ до цієї теки, і вказати права цих користувачів.

Просто заради експерименту, надамо права Всі користувачеві mary

На рівні cyrus (тобто на рівні комп’ютера, на якому запущено сервер IMAP cyrus з інструментами cyrus) нам слід додати користувача mary, щоб IMAP міг розпізнавати цього користувача, і створити теку IMAP для цього користувача.

Після цього нам слід увійти до GNU/Linux від імені користувача mary і запустити програму &kontact;. Нам слід створити обліковий запис IMAP у &kmail; описаним вище способом, коли ми створювали обліковий запис з тими ж даними але одним користувачем (замість фіктивного користувача groupware і його пароля ми скористаємося користувачем mary та його паролем).

Цього разу у дереві тек &kmail; ви побачите таку ієрархію: office_gwdata user groupware Календар і задачі. Перевірте наявність нової пошти (Файл Перевірити пошту), — у результаті у теці office_gwdata буде створено підтеку Вхідні.

Тепер увімкнемо функціональні можливості групової роботи у &kmail;, а у пункті Теки ресурсів є підтеками вкажемо, що вхідні є підтекою теки office_gwdata.

Тепер у вас буде дві гілки теки office_gwdata:

1. вхідні з підтеками «Календар», «Нотатки», «Задачі» і «Журнал», які зберігаються у теках IMAP користувача mary на сервері IMAP

2. user з підтекою groupware і підпідтеками, до яких має доступ користувач mary (у нашому прикладі, «Календар» і «Задачі»)

Наведемо вказівник миші на позначку теки user -> Календар і клацнемо правою кнопкою миші, а потім перевіримо, чи належить вона до типу «Календар» (якщо це не так, вкажемо її належність до нього). Виконаємо таку ж перевірку належності теки user -> Задачі до типу «Задачі».

Тепер у програмі-календарі у вас буде два ресурси IMAP з можливістю запису, отже під час створення нового запису про подію програма запитуватиме вас, який з них ви бажаєте використати (якщо ви залишили доступним і локальні ресурси, ресурсів буде 3!).

Вам слід перейти до нижнього лівого невеличкого вікна у Календарі, того самого, де показано доступні ресурси, і зняти позначки з тих ресурсів, які не вказують на шлях .groupware.directory (для цього скористайтеся кінцевою частиною записів шляхів для кожного з ресурсів).

## Подяки

Я не є досвідченим користувачем, тому для створення цих настанов зі свого боку я використовував лише власний час і добру волю. Ви маєте дякувати знавцям з каналів freenode за їх компетентність, терпіння і бажання допомогти.

### Особливі подяки:

- За частину щодо Cyrus IMAP учасникам каналу #cyrus:

  - [protagonist] Andy Morgan morgan@orst.edu

  - [plixed] Okke Timm okke.timm@web.de

- За частину, яка стосується &kontact;, учасникам каналу #kontact:

  - [till] Till Adam adam@kde.org

  - [dfaure] David Faure faure@kde.org

  - [mdouhan] Matt Douhan matt@fruitsalad.org

Дуже дякую вам, хлопці!

А, ну і щоб не забути, автор цього тексту, [markit] Marco Menardi mmenaz@mail.com

## Інформація для подальшого ознайомлення

### Посилання

- KDE: http://www.kde.org

- Веб-сайт &kontact;: http://www.kontact.org

- Проект Kroupware: http://www.kroupware.org

- Вікі спільноти &kde;: http://wiki.kde.org

- Проект wine: http://www.winehq.org

- Проект Cygwin/X http://x.cygwin.com

- Проект LTSP: http://www.ltsp.org