Exchange Alternative Zarafa wird Open Source

September 19th, 2008

Ich betreue seit längerem eine Exchange Alternative ™ mit Namen Zarafa. Diese Giraffe ist soweit das beste was ich finden konnte, wenn es um nativen Outlook-Support geht. Die Jungs aus den Niederlanden haben das Message-API (MAPI) komplett implementiert und können so einen 100% MAPI-Provider anbieten. Outlook verhält sich exakt wie bei einer MS Exhange Anbindung.

Seit heute sind Teile der Software als Open Source freigegeben worden. Dazu zählt der AJAX-Webaccess (PC+mobile), IMAP/POP3 Gateway, iCal Gateway und z-push / ActiveSync. Um mit den anderen Open Source Lösungen wie Zimbra, Open- oder PHP-Groupware, Scalix und Kolab mitzuhalten reicht die Community-Edition allemal. Teilweise bieten sie auch schon bezahlten Outlook-Support, jedoch ist das meißt Outlook-MAPI in ein eigenes Datenformat übersetzt.

Schon einige Tage zuvor hat zarafa bei der Gründung des openMAPI Projekt mitgewirkt. Hier sollen MAPI-Bindings für verschiedene Sprachen entwickelt werden. Zarafa wird da denke ich den PHP-Teil beisteuern.

Wer eine wikliche Exchange-Alternative sucht ist mit zarafa gut beraten. Die Daten werden in mysql Datenbank (eMails) bzw. Filesystem (Attachments) abgelegt. Zum Zustellen und Versenden von eMails kann der bevorzugte MTA (exim, postfix, sendmail) verwendet werden. Es muss ledglich die eMail an den zarafa-dagent (direkt oder über procmail) übergeben werden. Den Zugriff für Thunderbird und Co. stellt ein Gateway als POP3(s) bzw. IMAP(s) zur Verfügung. Kalender gibts im ics Format vom iCal Gateway. Für die Nutzung von unterwegs bzw. Plattformunabhängig gibts den Webaccess als AJAX und mobile Lösung. Und die Windows PDA (ActiveSync) bzw. Nokia Symbian Benutzer (z.b. Roadsync oder MailForExchange über IPSEC VPN) gibts z-push zur BlackBerry ™ ähnlichen Syncronisation. Und die Benutzer werden natürlich im LDAP verwaltet ;)

Blog Update auf 2.6.2

September 16th, 2008

Auch das Wordpress-Update auf Version 2.6.2 ist erfolgreich per SVN verlaufen. Jetzt wird es nur noch wieder Zeit für ein paar nette Artikel.

Blog Spam

July 12th, 2008

Ich bin nun bei > 20.000 Spamkommentaren angelangt. Ist sowas zu fassen.

Akismet has caught 20,525 spam for you since you first installed it.

Porno zensiert - aber schön gemacht

June 25th, 2008

Mal wieder was im Sex-Blog gefunden. Zensur mal auf die kreative Art gemacht.

Buffalo AirStation Accesspoints öffnen

June 16th, 2008

Wer schon immer mal wissen wollte wie ein Buffalo Airstation WHR-HP-AG108 oder WHR-G54S geöffnet wird, der sollte sich die Anleitung im DD-WRT Wiki und / oder bei K9Spud ansehen. Nach diesen Anleitungen bekommt man das Ding auf ohne irgendwelche Plastiknasen abzubrechen. Und zusammen gehts dann auch wieder - einfach rückwärts ;)

DNS Server bind mit Zonen in LDAP via bind-dlz

June 13th, 2008

Das Thema beschäftigt mich schon länger. Wie kann ich meine DNS-Verwaltung im LDAP abbilden? Dazu gibt es grundsätzlich mehrere Möglichkeiten, wie ich herausfand.

Eine Lösung ist einen anderen DNS-Server als bind zu benutzen, welcher ein LDAP-Backend hat. Hier seien powerDNS und ldapdns genannt. Ersterer hat mir einen zu komerziellen Hauch, Letzterer macht einen zu schmalen Eindruck.

Ich bleibe also bei bind9. Es gibt ein LDAP-sdb-Backend für bind9, welches allerdings das patchen von bind9 verlangt. Die Beispiele des alten Maintainers und das LDAP-Schema sind recht nett. Auf eine weitere Möglichkeit wies mich Jan-Piet Mens hin. Bind DLZ (dynamic loadable zones) ist eine API, die verschiedenste Datenquellen für bind9 ermöglicht. Neben der orginalen Berkley DB kann der Treiber auch Mysql, PostgreSQL und LDAP. Das DLZ-Schema ist eine wenig gewöhnungsbedürftig, funktioniert aber.

Nach der Installation von bind9 auf ubuntu hardy per apt-get stellte ich fest, dass dort keine dlz-zones einkompiliert sind. Also eben apt-get source gemacht und in debian/rules die ./configure optionen eingetragen. Das sah dann so aus:

apt-get source bind9
cd bind9-9.4.2
vi debian/rules
–enable-ipv6 \
–with-dlz-ldap=yes

Später stellte sich noch heraus, dass die ldap 2.4.7 API sich verändert hat. Der sogenannte %-Bug kann dann gleich mit erledigt werden. Dafür in die Datei contrib/dlz/drivers/sdlz_helper.c um Zeile 168 das % ind ein $ verändern. Dank an Jen-Piet Mens für die schnelle Hilfe. In den nächsten Ubuntu-Versionen sollte das nicht mehr vorkommen - der Bug 227344 wurde beseitigt.

Nun das neue .deb Paket zusammenbauen und installieren.

dpkg-buildpackage
dpkg -i ../bind9_9.4.2-10_i386.deb

Nun kann bind in seiner Konfiguration LDAP-Zonen verarbeiten. Dazu hab ich lediglich das Beispiel für meine Zwecke angepasst. Auf Zeilenumbrüche reagiert der dlz-Treiber recht eigensinnig. Deshalb immer prüfen, ob die Anzahl der Parameter aka Zeilen wirklich stimmt. Man beachte den Unterschied von % und $ im Vergleich zum dlz-LDAP-Beispiel. Die leeren Zeilen und die Einrückungen müssen natürlich entfernt werden.

dlz “ldap zone” {

database “ldap 1

v3 simple {cn=admin,<ldap-bind-dn>} {<secret>} {}

ldap:///dlzZoneName=$zone$,ou=dns,<ldap-bind-dn>???objectclass=dlzZone

ldap:///dlzHostName=$record$,dlzZoneName=$zone$,ou=dns,<ldap-bind-dn>?
dlzTTL,dlzType,dlzPreference,dlzData,dlzIPAddr,
dlzPrimaryNS,dlzAdminEmail,dlzSerial,dlzRefresh,dlzRetry,dlzExpire,
dlzMinimum?sub?(&(objectclass=dlzAbstractRecord)(!(dlzType=soa)))

ldap:///dlzHostName=@,dlzZoneName=$zone$,ou=dns,<ldap-bind-dn>?
dlzTTL,dlzType,dlzData,dlzPrimaryNS,
dlzAdminEmail,dlzSerial,dlzRefresh,dlzRetry,dlzExpire,
dlzMinimum?sub?(&(objectclass=dlzAbstractRecord)(dlzType=soa))

ldap:///dlzZoneName=$zone$,ou=dns,<ldap-bind-dn>?
dlzTTL,dlzType,dlzHostName,dlzPreference,dlzData,
dlzIPAddr,dlzPrimaryNS,dlzAdminEmail,dlzSerial,dlzRefresh,dlzRetry,
dlzExpire,dlzMinimum?sub?(&(objectclass=dlzAbstractRecord)(!(dlzType=soa)))

ldap:///dlzZoneName=$zone$,ou=dns,<ldap-bind-dn>??sub?
(&(objectclass=dlzXFR)(dlzIPAddr=$client$))”;
};

Nach dem Neustart von bind sollte im Log das erfolgreiche Laden der Zone vermerkt sein

named[14557]: Loading ‘ldap zone’ using driver ldap

Sollte das nicht der Fall sein, dann sind mit 99,9% die Leerzeichen, Zeilenumbrüche oder Verbindungsdaten falsch.

Nun braucht der LDAP-Server noch das DLZ-Schema ein ein paar Einträge. Als minimal gilt folgendes LDIF:

dn: ou=dns,<ldap-bind-dn>
objectClass: organizationalUnit
objectClass: top
ou: dns

dn: dlzZoneName=zone.intern,ou=dns,<ldap-bind-dn>
objectClass: dlzZone
objectClass: top
dlzZoneName: zone.intern

dn: dlzHostName=@,dlzZoneName=zone.intern,ou=dns,<ldap-bind-dn>
objectClass: dlzHost
objectClass: top
dlzHostName: @

dn: dlzRecordID=1,dlzHostName=@,dlzZoneName=zone.intern,ou=dns,<ldap-bind-dn>
dlzTTL: 10
dlzExpire: 604800
dlzRefresh: 2800
dlzMinimum: 86400
dlzAdminEmail: it.zone.de.
objectClass: dlzSOARecord
objectClass: dlzAbstractRecord
objectClass: top
dlzRecordID: 1
dlzSerial: 2008022801
dlzType: soa
dlzHostName: @
dlzRetry: 7200

dn: dlzRecordID=2,dlzHostName=@,dlzZoneName=zone.intern,ou=dns,<ldap-bind-dn>
dlzRecordID: 2
objectClass: dlzNSRecord
objectClass: dlzGenericRecord
objectClass: dlzAbstractRecord
objectClass: top
dlzTTL: 10
dlzType: ns
dlzHostName: @
dlzData: pridns.zone.intern.

dn: dlzHostName=pridns,dlzZoneName=zone.intern,ou=dns,<ldap-bind-dn>
objectClass: dlzHost
objectClass: top
dlzHostName: pridns

dn: dlzRecordID=1,dlzHostName=pridns,dlzZoneName=zone.intern,ou=dns,<ldap-bind-dn>
dlzIPAddr: 192.168.1.1
dlzRecordID: 1
objectClass: dlzARecord
objectClass: dlzAbstractRecord
objectClass: top
dlzTTL: 3600
dlzType: A
dlzHostName: pridns

Wenn alles gut geht, dann sollte der Nameserver nun funktionieren. Beim testen mit host sollte die IP 192.168.1.1 zurückkommen.

host pridns.zone.intern localhost

Et Voilà - der bind am LDAP ist fertig.

Blog Update per SVN

June 12th, 2008

Seit ich das Blog als SVN checkout laufen lasse, ist ein Update kinderleicht. Einfach ein svn sw im Verzeichnis und alles ist schick. Diesmal wars mit

svn sw http://svn.automattic.com/wordpress/tags/2.5.1/

getan. Vielen Dank für diesen Update-Mechanismus.

Weiterhin folgten ein paar Updates verschiedener Plugins. Auch die Permalinks hab ich nun aktiviert.

Nette Videos

June 11th, 2008

Gerade bei Sanne gefunden. 3 Videos mit 3 verschiedenen Themen. Ich mag meinen Arbeitsplatz nicht, ich mache mobiles Popcorn und Traue nicht den Bildern. Have Fun.

WCW2008 Interview mit ninux.org

May 23rd, 2008

Auf dem WCW2008 hat Mario und ich mit den Jungs von ninux.org ein kleines Interview gemacht. Es ging um OLSR, um die Vernetzung mit tincVPN und BGP und wie die Jungs von ninux.org ihr Netz und den Inhalt organisieren.

Auch direkt zu sehen auf vimeo. Mehr Dazu in Italienisch im ninux.org Blog, auf Englisch im Freifunk Blog.

Bandbreite im Internet

May 21st, 2008

Durch das Lesen des ZEIT Sonderhefts zum Thema Internet auf eine interessante Grafik gestoßen. Sie zeigt die vorhandene Internetbandbreite der Welt.

Chris Harrison, welcher die Grafik erstellt hat, hat auch noch andere lustige und interessante Visualisierungen. Zu beachten ist, dass die Grafik die Dichte der Verbindungen darstellt nicht die Menge der Daten bzw. Benutzung. Große Bilder gibts auf der Internet Map Seite von Chris.