Menü Schließen

PHP – IMAP Postfach was mit eigenem Zertifikat erstellt wurde abrufen

PHP Logo

In diesem Fall geht es um einen Small Business Server 2011 der den Exchange 2010 integriert hat. Konfiguriert wurde der Mailserver so, dass er IMAP auf 143 bzw. mittels Verschlüsselung und eigenem Zertifikat auf Port 993 erlaubt. Das Problem ist nun, dass mittels Webseite und PHP ein IMAP Postfach abgerufen und ausgelesen werden soll. Im normalfall funktioniert dies ganz unproblematisch mittels Befehl “imap_open”. Hier ein Beispiel:

$imap = imap_open("{Mailserver:993/imap}", "Benutzername", "Passwort");

 

Wurde nun jedoch, wie in diesem Fall, ein eigenes Zertifikat verwendet, dann scheitert die Prüfung und es entstehen Fehler wie: “Could not open Stream…” und “Maximum Execution Time…” usw. Damit dies aber euch mit dem eigenen Zertifikat funktioniert muss der Befehl imap_open um folgendes ergänzt werden: “/ssl/novalidate-cert”. Dies sagt dem Script, dass er beim Aufbau der Verbindung keine Überprüfung des Cert. durchführen soll und die Abfrage gegen den IMAP-Mailserver funktioniert. Hier der gesamte Befehl:

$imap = imap_open("{Mailserver:993/imap/ssl/novalidate-cert}", "Benutzername", "Passwort");

Und hier noch der vollständigkeithalber ein Beispiel um alle Ordner im IMAP anzuzeigen:

<?php
$imap = imap_open("{Mailserver:993/imap/ssl/novalidate-cert}", "Benutzer", "Passwort");

$folders = imap_listmailbox($imap, "{Mailserver:993/imap/ssl/novalidate-cert}", "*");
foreach ($folders as $val) {
echo $val . "<br />\n";
}
imap_close($imap);
?>

Damit die IMAP Funktion unter PHP genutzt werden kann muss evtl. noch die entsprechende Extension aktiviert werden. Hierfür in der php.ini die Zeile: “extension=php_imap.dll” aktivieren, also das Semikolon (;) entfernen. Danach den Apache neustarten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert