I connect to my GNU/Linux office server PC (a sort of "black box" without monitor and keyboard) from 2 Windows® 2000 PC with Cygwin/X, using them as a X-Window server (in the near future I hope to replace both with 2 mini-itx thin clients using the LTSP). With this setup every user runs Kontact on the same machine where Cyrus is installed and running (localhost).
To have Kontact work with IMAP, there are these steps to complete:
Create an IMAP account on the
Cyrus for fake groupware
user (already previously
done!)
Create/configure an IMAP account in KMail for login as that user
Use kresources to make Kontact components work with data taken from IMAP source
Enable groupware functionality and make related subfolders of
that IMAP INBOX
(if not
already)
Enjoy Kontact and shared data through Cyrus IMAP
So login to KDE with the first “real user” account you want to provide groupware functionality to.
Let's create the IMAP account in KMail.
Run Kontact and select Mail (the KMail component). From the menu choose ->+Accounts+Receiving tab, press the button. You will then be prompted for the type of your email account, and select disconnected IMAP (not just IMAP). Then in the General tab enter the following data:
office_gwdata
A name that will be used for the “local” folder that points to this IMAP account.
groupware
The Cyrus user we have chosen as “owner” of all of the office data
The password of the groupware
user.
localhost
Remember for our example, the Kontact client runs on the same computer as the IMAP server
143
The default
Check store IMAP password so you will not be asked for it next time you run Kontact. Check the Enable interval mail checking and set a value in minutes.
Note that we have checked the disconnected IMAP type account. This has the effect that a copy of the groupware data is stored “locally” to the client (under the home folder), and it is synchronized every time the client connects. This seems very inefficient, since your data is duplicated many times (i.e. if you have 10 users that use Kontact, you have 10+1 times the data), but it is the only way to make things run fast, because at every connection Kontact has to fetch all data and have KOrganizer and KAddressBook interpret it. If you use “disconnected IMAP” data is cached locally, and only the “delta” (i.e. the data that has changed) is sent.
On the other end, if your users run KOrganizer on the same PC that runs the IMAP server, it seems reasonable to use IMAP (that is called “online IMAP”) to save space, since transfer speed should not be an issue. But unfortunately this does not work because Kontact does not update automatically the Calendar folder in “online IMAP”, so you are not updated when someone adds events (you must manually switch to KMail application and click on the Calendar folder). In addition, at start up when it does read Calendar folders, you may see a tremendous flicker and slow data updates.
Now we have to tell Kontact to use IMAP as the
data source for its various components. From the menu, choose
, run kcmshell4
kresources
. In the combo box select
Contacts, then press the
button, and choose Addressbook on IMAP Server via KMail. Then select that new line and
press button. Do the same for
Calendar and Notes.
Now we have to enable the KMail (and as a consequence, the whole Kontact) groupware functionality:
Choose from the menu ->+Misc+Groupware
Check Enable IMAP resource functionality
Choose English as Language of the groupware folders (this is in case you already have the folders in the IMAP server created by a different program in a different language).
Now move to Resource folder are in account and select the Inbox subfolder of the office_gwdata folder.
Leave Hide groupware folders unchecked for now, so we can see that happens. You can return here and check it once everything is clear.
When you press OK you are prompted with:
KMail will now create the required folders for the IMAP
resource as subfolders of Inbox
If you do not want this, press , and the IMAP resource will be disabled. Press (this happens only the first time with the first “real user”). You will immediately see that in the KMail folder tree, under office_gwdata+Inbox these subfolders are created:
Calendar |
Contacts |
Notes |
Tasks |
Journal |
if you now do a:
# 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
As you see, the office_gwdata Inbox is stored not
local to the Kontact current user home, but in the IMAP
groupware
user's folders.
Now Kontact is ready to work and store data there. In the calendar application, if KMail IMAP account was of type “disconnected”, the resource window should display the item Imap resource with 3 subitems, that are paths to local home files. Instead, the Contacts application does not show subitems below the Imap resource.
You can now login to KDE with a different username and set up his/her Kontact client in a very similar manner:
Open Kontact and in the Mail component add an
IMAP account specifying as host the
computer where Cyrus server runs (in my case:
192.168.1.3
).
Remember to check the Enable interval mail checking and set a value in minutes. When you confirm, you are not prompted for the subfolder creation (since they are found in the IMAP server), and you see them in the folder tree.
Activate the groupware functionality to be able to save data in the IMAP server.
Beware that in “disconnected IMAP”, data are transmitted from a client to IMAP server only when the clients connects to check for new mail. So if you have your Kontact clients with an interval mail checking of, for instance, 5 minutes, in the worst case you have a 10 minutes delay between the event being written and its appearance to the other users.