E-Mail Empfang von eigenem Mail-Server auf Android Handys
Geschrieben von cartmen in Android, tags: adb, Android, certificate, imap, k9, Linux, mail, selbst, self-signed, server, signiert, smtp, Ubuntu, zertifikatAchtung: Diese Anleitung ist inzwischen veraltet, da sowohl das Android-Standard-Mail-Programm, als auch K9 selbst signierte Zertifikate zulassen. Sollte es wider Erwarten nicht von Haus aus funktionieren, dann wird diese Anleitung wahrscheinlich Abhilfe schaffen.
Auf Android Handys ist der E-Mail nicht ganz so einfach, da selbstsignierte Server-Zertifikate nicht gestattet sind. Sowohl im hauseigenen Mail-Programm, als auch in K9-Mail erhält man eine Fehlermeldung, dass dem Zertifikat des Servers nicht vertraut wird und somit ist kein Empfang von E-Mails eines eigenen Mail-Servers möglich.
Die Fehlermeldung sollte so, oder so ähnlich aussehen:
E/CertificateChainValidator( 5284): java.security.cert.CertificateException:
java.security.cert.CertPathValidatorException: TrustAnchor for CertPath not found.
Abhilfe schafft ein Hinzufügen der Server-Zertifikate in die Liste der vertrauenswürdigen Zertifikate. Hierzu benötigt man allerdings ein gerootetes Android-Handy.
Im ersten Schritt lädt man die öffentliche Zertifikate des IMAP und SMTP-Servers auf den eigenen Rechner.
Des weiteren benötigt man das Android-SDK und die letzte Version des bcprov-jdk16-NNN.jar.
Das Android-SDK kann man einfach in ein beliebiges Verzeichnis entpacken und sofort nutzen. Die bcprov-jdk16-NNN.jar muss noch installiert werden. In meiner Ubuntu Linux Umgebung musste ich die Datei dazu in das Verzeichnis /usr/lib/jvm/java-6-openjdk/jre/lib/ext/ verschieben.
Dann kann man die beiden Zertifikate in die Liste der vertrauenswürdigen Zertifikate hinzufügen, indem man folgenden Befehl auf dem PC ausführt:
keytool -importcert -keystore cacerts.bks -storetype BKS -provider\ org.bouncycastle.jce.provider.BouncyCastleProvider -storepass changeit -trustcacerts\ -alias YOURSERVER_imap -file imap_certificate.pem
und danach dann selbiges noch einmal für das SMTP Zertifikat:
keytool -importcert -keystore cacerts.bks -storetype BKS -provider\ org.bouncycastle.jce.provider.BouncyCastleProvider -storepass changeit -trustcacerts\ -alias YOURSERVER_smtp -file smtp_certificate.pem
Somit erhält man eine Datei cacerts.bks, die man in das System des Handys einfügen muss.
Im tools Ordner des Android-SDK findet sich eine Datei adb. Diese muss man ausführbar machen und dann probieren, ob das Handy mittels ./adb devices aufgelistet wird. Sollte dies nicht der Fall sein, so ist das Handy entweder nicht gerootet oder das Betriebssystem kann das Handy nicht als USB-Gerät erkennen. In beiden Fällen sollte man sich im Internet belesen, wie man adb für sein Betriebssystem und Handy zum laufen bringt.
Sollte das Handy erkannt werden so kann man die Datei auf das Handy verschieben, nachdem man das Dateisystem schreibbar eingebunden hat. Dazu diesen Befehl verwenden:
./adb shell mount -o remount,rw /dev/block/mtdblock3 /system
, dann die Datei kopieren
./adb push cacerts.bks /system/etc/security/
und das Dateisystem wieder nur lesbar einhängen mit
./adb shell mount -o remount,ro /dev/block/mtdblock3 /system
.
Jetzt kann man das Handy vom PC trennen und die E-Mail-Prozesse töten oder, wenn man nicht weiß, wie man Prozesse beendet, das Handy neustarten. Im Anschluss kann man sowohl im Android-Mail-Programm, als auch in K9-Mail E-Mails von diesem Server empfangen und erhält keine Fehlermeldung mehr.
Zusammenfassung der Befehle
- Herunterladen von Android-SDK und der letzten Version des bcprov-jdk16-NNN.jar
- Entpacken des Android-SDK
- Installation der bcprov-jdk16-NNN.jar Datei mit:
sudo mv bcprov-jdk16-145.jar /usr/lib/jvm/java-6-openjdk/jre/lib/ext/
- Herunterladen der öffentlichen Server-Zertifikate (in meinem Fall mit
scp mailserver:/etc/ssl/certs/imap_certificate.pem .
und
scp mailserver:/etc/ssl/certs/smtp_certificate.pem .
)
-
keytool -importcert -keystore cacerts.bks -storetype BKS -provider\ org.bouncycastle.jce.provider.BouncyCastleProvider -storepass changeit -trustcacerts\ -alias YOURSERVER_imap -file imap_certificate.pem
für das IMAP Zertifikat
-
keytool -importcert -keystore cacerts.bks -storetype BKS -provider\ org.bouncycastle.jce.provider.BouncyCastleProvider -storepass changeit -trustcacerts\ -alias YOURSERVER_smtp -file smtp_certificate.pem
für das SMTP Zertifikat
-
./adb shell mount -o remount,rw /dev/block/mtdblock3 /system
-
./adb push cacerts.bks /system/etc/security/
-
./adb shell mount -o remount,ro /dev/block/mtdblock3 /system
- Handy von PC trennen und E-Mail-Prozesse beenden oder Handy neu starten
Einträge (RSS)