February 24, 2006

[Installations] Cyrus, Perdition, LDAP

I got Cyrus working again on Solaris, as per entries last spring. Not terribly difficult. The harder part was getting Perdition, the IMAP/POP3 proxy, working. There are some source code errors that made the build on Solaris tricky.

  • Don’t build Perdition with the daemon map option. It requires the mkdtemp(3) library call, which isn’t available on Solaris.
  • Don’t build Perdition static like the documentation tells you to for Solaris. It will always try to load a dynamic library, but static builds don’t provide dynamic libs.
  • There is an error in the LDAP initialization routines. #if 0 the code that calls ldap_initialize and just let it call ldap_init. The author said the fix would be in the next release sometime last fall, but no such release seems to be forthcoming.
  • Installation: Perdition is set to listen on the third network interface, which is set to mailproxy.earlham.edu, a different IP address from the first interface. That way the LDAP attribute can be the hostname of the local box without having to mess around with alternate ports for Cyrus. Cyrus listens on the bge0 interface, while Perdition listens on bge2 and then contacts bge0 if LDAP tells it to.

Once installed, there have to be individual Perdition processes for each protocol: IMAP, POP3, IMAPS, and POP3S. They each use different config files and PID files. Once up and running, it does work flawlessly, and changing the mailHost attribute in LDAP points Perdition to the right place.

Posted by Rowan Littell at February 24, 2006 01:47 PM