Evaluating Groupware

The quest has been given, to determine a good groupware package for where I work. The main component needed is a shared calendar interface. We currently use sendmail on a linux box as an MTA, uw-imap as an imap server, and mailboxes are stored in “mbx” format. For mail clients, we allow any imap client and provide a webmail client from the fine folks at horde.org.

The current version of horde we use has a calendar that is private only. The new version provides many groupware features including shared calendars, however, we are going to look at other groupware products as well.

It’s been basically narrowed down to either Microsoft Exchange or the latest set of Horde apps. One of my techs has set up a test exchange environment and to say it’s bloated is an understatement. Now granted it does a lot, but everything I hear is that most organizations hardly use all of Exchange features. There’s also a huge hardware cost. We do 40,000 email accounts on one dual-xeon 3 ghz box runnign Linux. Apparently we need a farm of several exchange servers to handle that kind of a load. Even only giving 10% of our users exchange would require at least four servers (two front-end and two back-end). Ouch.

Regardless, I have no religion about either platform, as long as the resources are provided to adequately support the chosen platform.

So this blog entry is mainly a place holder to jot down notes and experiences and is not going to be complete. So don’t consider this a formal case study or implementation guide. It will also focus primarily on horde since another tech has done Exchange. Hence it may seem biased towards that product.

NOTE: This is all done on Redhat Enterprise Linux (RHEL) 4

9 thoughts on “Evaluating Groupware”

  1. One decision wrestling with is what imap server should be used. The choices are basically uw-imap or cyrus.

    Cyrus is looking pretty good based on that it supports mailbox quotas (and not some kludge using file system quotas) and shared folders. It’s also far more complicated and at first glance it’s not clear how a mail message is sent from sendmail into a cyrus mail inbox (it says use lmtp but can we still use procmail, dspam, etc?)

    Horde can use either imap backend but does have some support for cyrus that would be helpful, like quota reporting.

  2. vmware hell

    Well, I wasted half a day trying to get RHEL 4 working right in vmware 4.5 workstation. The damn clock was running way too fast. I’m talking like gaining 5 seconds every minute. Which meant kerberos auth would fail within a few minutes.

    After doing some google searches it lead me mistakingly to a kb article that blamed speed step technology. Beings this is a fairly new desktop, I didn’t know if they added some of those features to this unit for power reasons. So I fiddled with the config.ini file as suggested and made it worse.

    I finally found a kb article 1420 at vmware’s site that suggested using the kernel option clock=pit which seems to have done the trick. You do have to run the vmware tools daemon and set it to sync the clock.

    Oh, that’s another thing. The vmware clock sync thing only helps if the guest clock is running slow. If it runs fast, it doesn’t slow it down. And if it’s gaining 5 seconds a minute, it’s too much for ntp to handle as well.

  3. Horde

    Horde is a bit of a mess to install. It’s gotten better over the years, but is still intimidating when you first look at it. First, the component names are not at all mnemonic, but the projects page helps out there a lot.

    The gist is you have to first install horde, then the additional packages. Each package must obtain authentication credentials, but that can be set to be passed from horde. The packages we are concerned with are:

    • horde
    • imp (email)
    • turba (address book)
    • nag (task manager, todo list)
    • mnemo (notes manager)
    • kronolith (calendar)
    • gollem (maybe, file manager, useful for uploading web pages)
    • ingo (maybe, filter management)

    Horde also requires a mysql server. That’s a bit intimidating at first, but is nothing compared to other DBs!

  4. mysql

    To start this puppy, log on as root and run

    service mysqld start
    chkconfig mysqld on

    The latter makes sure it’s runs on system startup.

    Then run mysql and set passwords for the root user…

    mysql -u root

    then at the mysql shell run

    mysql> use mysql;
    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
    mysql> SET PASSWORD FOR 'root'@'fqdn.example.com' = PASSWORD('newpwd');

    reference documentation for above

  5. pear

    pear is a bunch of php extensions basically. It needs to be updated and additional packages installed. As root…


    pear upgrade-all
    pear install Log Mail_Mime File Date Net_URL HTTP_Request
    pear install fileinfo
    pear config-set preferred_state beta
    pear install Cache SOAP XML_Util XML_Serializer
    pear install Services_Weather

  6. php

    After installing horde, run the test.php script and look for missing modules. Many can be loaded by ensuring the proper rpm package is loaded. For example, php-imap, php-gd, php-domxml.

    The memory limit in /etc/php.ini needs to be raised to, as per the report in the test.php page.

    The fileinfo.so module has to be added to load in the /etc/php.ini file

  7. cyrus

    This one is confusing. No really good docs from Redhat for its use on RHEL.

    I was able to get cyrus running enough to authenticate via a connection to imap on 143 using just…


    service cyrus-imapd start
    service saslauthd start

    To use cyrus, cyradm needs to be invoked to create a mailbox for each user. quotas can also be applied this way.


    cyradm -u cyrus localhost
    localhost> cm user.whatever
    localhost> sq user.whatever 50000

    That doesn’t address delivery of mail to the box, so the following lines were added to the bottom of /etc/mail/sendmail.mc


    define(`confLOCAL_MAILER', `cyrusv2')dnl
    define(`CYRUSV2_MAILER_ARGS', `FILE /var/lib/imap/socket/lmtp')dnl
    MAILER(cyrusv2)dnl

    Now what is needed is somehow support for procmail and dspam in all of this mess. Regardless, for purposes of this test, it’s fine as is.

  8. horde

    Well, Horde has been a bit of a pita. Not as bad to set up as it used to be, but the docs are pretty bad. There are a few issues I’m wrestling with.

    Free/busy calendar info is not working. It appears to want to generate a URL to check this via a URL like http://horde.example.com/horde/kronolith/fb.php?c=weave but when you add a user to a an appt it tries to query http://horde.example.com/horde/kronolith/fb.php?c=weave@localhost which returns an empty string. Need to play with realms I guess.

    The other bit is the admin interface for listing users, which appears to want to use an sql backend. I tried sql with cyrus but it won’t logon. I’m thinking the password has to somehow be added to that too.

  9. horde / kronolith

    Found out a bit more about the free/busy crap. There’s an entry in the personal addressbook for free busy URL so that either needs to be put in there manually, or if you have a sitewide one, change the ldap schema to include the freebusy URL and populate it with everyone’s freebusy url.

    Still doesn’t work, but I’m getting closer. I posted a message to the kronolith mailing list…

    Having some troubles with free/busy. I read all the archives, which helped
    a lot, but I’m still not getting it to work. (using latest release
    versions)

    1) User I am adding as an attended has a freebusy url defined in my
    addressbook of http://example.com/horde/kronolith/fb.php?c=x1

    2) The user has a public calendar, and I can browse it

    3) If I do a manual GET to that URL, I get the freebusy info…

    $ GET http://example.com/horde/kronolith/fb.php?c=x1
    BEGIN:VCALENDAR
    VERSION:2.0
    PRODID:-//The Horde Project//Kronolith H3 (2.0.2)//EN
    METHOD:PUBLISH
    BEGIN:VFREEBUSY
    ORGANIZER;CN=user x1:MAILTO:x1@example.com
    DTSTAMP:20050402T173945Z
    DTSTART:20050402T050000Z
    DTEND:20050502T050000Z
    URL:http://example.com/horde/kronolith/fb.php?c=x1
    FREEBUSY:20050402T140000Z/20050402T160000Z
    FREEBUSY:20050407T150000Z/20050407T160000Z
    END:VFREEBUSY
    END:VCALENDAR

    4) When I add the attendee, I do it by browsing the addressbook entry I
    create where the freebusy url is listed, click add, they are added and
    listed in the attendees list with no freebusy error on the top, which is
    what most people saw from the archives I’ve read.

    5) I see many hits to that URL in my webserver log when I do this

    6) The free busy information is not shown in the free busy window. All
    times are listed as green.

Leave a Reply

Your email address will not be published. Required fields are marked *