#!/bin/blog

November 12, 2009

IMAP on the iPhone with SSL client certificates

Filed under: iphone — Tags: , , , — martin @ 11:02 pm

The IMAP server in my office is configured to not simply accept username/password authenticated connections from the internet. As an additional security measure, it requires the client to present a valid SSL client certificate, issued by the internal CA, resulting in mutual SSL authentication.

The Mail client on the iPhone, on the other hand, does not support SSL client certificates. While it is possible to deploy a client certificate using the iPhone configuration utility, this cert will only be presented to web servers, but not to mail servers.

My workaround is to use stunnel, the universal SSL wrapper, on the iPhone. This, of course, requires the iPhone to be jailbroken. I’ll leave the jailbreak and installation of stunnel as an excercise to you. 🙂

I’m running stunnel as the “mobile” user, thus all the required files reside in /var/mobile. The files are:

– The stunnel configuration: /var/mobile/stunnel.conf
– The SSL certificate: /var/mobile/cert.pem
– The key matching the SSL certificate: /var/mobile/key.pem

Stunnel is configured as an SSL client. The commented-out lines may be useful for troubleshooting. I have added 10000 to the regular IMAP and SMTP ports so they are beyond the privileged port range that may only be used by root.

cert=/var/mobile/cert.pem
key=/var/mobile/key.pem
pid = /var/mobile/stunnel.pid
sslVersion = TLSv1
# Resolve server hostname at every reconnect,
# not only on startup (for dyndns!):
delay = yes
#foreground = yes
#debug = 7

[imap]
accept=127.0.0.1:10143
connect=example.dyndns.org:993
client=yes

[smtp]
accept=127.0.0.1:10025
connect=example.dyndns.org:465
client=yes

My key is password protected, thus I start stunnel from Mobile Terminal after bootup:

stunnel stunnel.conf

Having a method for starting stunnel automatically with passphrase-less keys would be nice, but has no priority for me. Using a LaunchDaemons entry for this shouldn’t be a problem anyway.

The mail settings on the iPhone are configured to access IMAP and SMTP on localhost, port 10143 and 10025, respectively. SSL encryption is turned off for both.

This setup is surprisingly robust. The current running stunnel daemon has been started 4 days ago and has already survived a few changes of the dynamic IP address of the mail server. I have not had a single hiccup since I figured out that I need the “delay=yes” option in the configuration file to keep up with DynDNS changes. If your mail server isn’t on a dynamic IP address, all the better.

November 8, 2009

IRC mobil, gibts ja garnicht

Filed under: Internet, iphone — Tags: — martin @ 10:51 am

Wenn ich die eine Anwendung nennen mĂŒĂŸte, die mich auf dem iPhone am meisten ĂŒberrascht hat, wĂ€re das ja Mobile Colloquy, ein IRC-Client mit Push-UnterstĂŒtzung.

Nichts erschien mir abwegiger, als IRC per iPhone zu machen, denn das IRC-Konzept mit den Channels vertrĂ€gt sich ja gefĂŒhlsmĂ€ĂŸig eher schlecht mit dem stĂ€ndigen on- und offlinegehen, das durch das fehlende Multitasking des iPhone bedingt wird. Mobile Colloquy hat dieses Problem aber sehr schön gelöst, denn die bevorzugte Betriebsart ist, sich ĂŒber einen sogenannten Bouncer am IRC anzumelden.

Bei einem Bouncer handelt es sich um einen IRC-Proxy, der die Verbindung zu IRC – stellvertretend fĂŒr den eigenen Client – aufrecht erhĂ€lt.

colloquy-push

FĂŒr Nutzer von Colloquy auf dem Mac bietet Mobile Colloquy dabei zum Beispiel auch die Möglichkeit, sich mit der auf dem Mac laufenden Colloquy-Instanz zu verbinden, diese damit quasi als Bouncer zu verwenden, und das iPhone damit zum verlĂ€ngerten Arm des dort laufenden Client zu machen.

FĂŒr diejenigen, die keinen Mac mit Colloquy haben, ihn nicht ununterbrochen laufen lassen wollen, oder etwas mehr Möglichkeiten bei der Auswahl alternativer IRC-Clients fĂŒr den Desktop möchten, bietet sich jedoch auch die Benutzung eines dedizierten Bouncers an. Die Colloquy-Entwickler empfehlen dazu ZNC, fĂŒr den ein entsprechendes Push-Modul zur VerfĂŒgung steht. Die Installation von ZNC und dem dazu gehörenden Push-Modul unter Linux ist dabei in der Colloquy-Dokumentation beschrieben. Ich hatte hier lediglich etwas Probleme mit der unter Debian paketierten Version von ZNC. Diese mußte ich durch eine selbst ĂŒbersetzte Version ersetzen, um das Modul nutzen zu können.

Ist der Bouncer einmal konfiguriert und das Push-Modul installiert und geladen, kann der Push-Mechanismus seine Vorteile voll ausspielen: Wird in einem Channel, in dem man angemeldet ist, der eigene Nickname erwĂ€hnt, erscheint eine Push-Nachricht. Nach dem Start von Mobile Colloquy bekommt man dann vom Bouncer die letzten Channel-Nachrichten zugespielt und kann direkt ins GesprĂ€ch einsteigen. Das gleiche gilt fĂŒr Queries (also Chats zwischen zwei Nutzern), die ebenfalls eine Push-Nachricht erzeugen.

colloquy-replay

Verliert man die Geduld mit der kleinen Bildschirmtastatur und will am iPhone nicht lĂ€nger weiterchatten, kann man dank des Bouncers auch auf den IRC-Client am stationĂ€ren Rechner umsteigen, ohne daß die anderen Channel-Teilnehmer etwas davon bemerken. Ich selbst benutze neben Mobile Colloquy im Wechsel auch noch Colloquy auf dem Mac, irssi in der SSH-Session, X-Chat unter Linux und den berĂŒchtigten Klassiker mIRC auf Windows.

Mein letzter Bouncer-Einsatz liegt einige Jahre zurĂŒck und ich bin wirklich verblĂŒfft, was heute ohne großen Konfigurationsaufwand möglich ist. Die Installation des Bouncers erfordert zugegebenermaßen nach wie vor etwas Erfahrung mit den Linux-Konzepten im allgemeinen. Das Ergebnis ist aber gerade im Zusammenspiel mit Push und Mobile Colloquy absolut bestechend. Mobile Colloquy ist keine KrĂŒcke, sondern bringt IRC ganz einfach an neue Orte, wo man einfach garnicht damit gerechnet hĂ€tte. Vor 5 Jahren habe ich IRC noch totgesagt, heute bin ich mir diesbezĂŒglich schon etwas weniger sicher.

Create a free website or blog at WordPress.com.