E-Mails mit Autodiscover und Autoconfig für Plesk
Eine komfortable und automatische Konfiguration eines E-Mail-Postfachs in Outlook, Thunderbird & Co. ist eine feine Sache, die zumeist nur bei großen Providern verfügbar ist – lässt sich aber auch mit dem eigenen Plesk-Server einfach realisieren. Kein mühsames Eingeben der IMAP- und SMTP-Server mehr. Wir zeigen, wie es geht!
Diese Anleitung sieht vor, dass der Hostname als SSL-geschützter Servername verwendet wird, welcher in Outlook, Thunderbird & Co. als Posteingangsserver (IMAP/POP3) sowie als SMTP-Postausgangsserver genutzt wird.
Autoconfig und Autodiscover (Auto-Ermittlungsdienst)
Es gibt mehrere Verfahren, wie ein E-Mail-Programm versuchen kann, sich automatisch zu konfigurieren. Die beliebtesten sind Autoconfig (genutzt bei Thunderbird) und Autodiscover (Microsoft Outlook und einige Android-Geräte). Autodiscover ist meist schneller, da neben der E-Mail-Adresse nur noch das Kennwort eingegeben werden muss. Autoconfig erfordert neben dem Passwort auch einen Kontonamen.
Autoconfig
Thunderbird sucht bei der Neueinrichtung eines Mailkontos als erstes in der Mozilla-eigenen ISP-Datenbank, ob unter dem FQDN der einzurichtenden E-Mail-Adresse entsprechende Autokonfigurationen vorhanden sind. Ist dies nicht erfolgreich, wird als nächstes die URL
GET http://autoconfig.domain.de/mail/[email protected]
aufgerufen. Als Rückgabewert muss eine XML-Datei mit passendem Content-Type erfolgen.²
Ist auch unter dieser URL keine Konfiguration vorhanden, versucht Thunderbird anhand der MX-Einträge des Mailservers die Einstellungen herauszufinden. In den meisten Fällen wird smtp.deine-coole-domain.de für den Postausgangsserver und pop (oder) imap.deine-coole-domain.de als Servername probiert.
Autodiscover
Autodiscover stammt von Microsoft und wird für das wahrscheinlich beliebteste E-Mail-Programm Outlook genutzt, um die Einrichtung des Mailkontos zu automatisieren. Nachzulesen hier.
Zuerst versucht Outlook, die Einstellungen aus dem Active Directory (AD) zu beziehen. Danach versucht Outlook – ähnlich wie bei Autoconfig – verschiedene Aufrufe:
POST https://domain.de/autodiscover/autodiscover.xml
POST https://autodiscover.domain.de/autodiscover/autodiscover.xml
Beide Aufrufe erfolgen als POST über HTTPS. Falls dies nicht erfolgreich ist (z. B. weil kein HTTPS verfügbar ist), wird per GET weiter versucht:
GET http://autodiscover.domain.de/autodiscover/autodiscover.xml
Über einen SRV-Eintrag kann nun auf eine HTTPS-geschützte Adresse verwiesen werden:
_autodiscover._tcp.deine-domain.de IN SRV dein-server.de
Zu beachten ist, dass die URLs nicht case-sensitive sind. Einige Clients (gerade ältere Versionen) fragen nach Autodiscover, autodiscover oder AutoDiscover.
Schlägt auch diese Variante fehl, versucht Outlook es – wie Thunderbird – mit imap.deine-domain.de und smtp.deine-domain.de.
Doch genug der vielen Worte, kommen wir zur Anleitung!
Anforderungen
- Plesk muss der primäre Name Server sein (der Plesk DNS-Server fungiert als primärer Name Server der DNS-Zone
xyz). - Die gewünschte (Sub)-Domain für den Mailserver muss auf den Plesk-Server routen und erreichbar sein.
- Der Mailserver muss per
https://aufrufbar sein und über ein gültiges SSL-Zertifikat verfügen. - Geduld und viel Kaffee =)
In unserem Fallbeispiel verwenden wir als E-Mail-Server den Hostnamen: mytestmailserver.com. Später möchten wir ein Postfach [email protected] mit der automatischen Konfiguration in unser Mailprogramm einpflegen. Als Grundlage gehen wir davon aus, dass dieser Hostname über HTTPS erreichbar ist und ein gültiges Zertifikat installiert ist.
Schritt 1: DNS-Einstellungen
Navigiere als eingeloggter Administrator zu „Tools & Einstellungen“ und wähle unter dem Tab „Allgemeine Einstellungen“ das DNS-Template aus.
Hier müssen nun drei neue DNS-Einträge hinzugefügt werden. Zuerst erstellen wir zwei CNAME-Einträge, unter deren kanonischem Namen wir unsere Autoconfig- und Autodiscover-Konfigurationen hinterlegen möchten:
Autoconfig.<domain> CNAME mytestmailserver.com
Autodiscover.<domain> CNAME mytestmailserver.com
Ebenso benötigen wir den im Vorwort genannten SRV-Eintrag, um von der unsicheren HTTP-Version auf den HTTPS-Hostnamen zu zeigen:
SRV _autodiscover._tcp.<domain> 0 10 443 mytestmailserver.com
0.Schritt 2: Konfigurationsdateien
Erstellt einen Unterordner /mail unter der genutzten Domain, welcher als Mailserver fungiert: https://mytestmailserver.com/mail
In diesem Ordner erstellen wir folgende Dateien.
Erstellt die Datei:
autodiscover.xml
Diese enthält die Autodiscover-Einstellungen, welche vom Postfachbesitzer normalerweise händisch eingetragen werden müssten (z. B. Posteingangs- und Postausgangsserver, Verschlüsselungstyp und Ports).
<?php
$raw = file_get_contents('php://input');
$matches = array();
preg_match('/<EMailAddress>(.*)<\/EMailAddress>/', $raw, $matches);
header('Content-Type: application/xml');
?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
<Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
<User>
<DisplayName>inoWRX</DisplayName>
</User>
<Account>
<AccountType>email</AccountType>
<Action>settings</Action>
<Protocol>
<Type>IMAP</Type>
<Server>mytestmailserver.com</Server>
<Port>993</Port>
<DomainRequired>off</DomainRequired>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
<LoginName><?php echo $matches[1]; ?></LoginName>
</Protocol>
<Protocol>
<Type>POP3</Type>
<Server>mytestmailserver.com</Server>
<Port>995</Port>
<DomainRequired>off</DomainRequired>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
<LoginName><?php echo $matches[1]; ?></LoginName>
</Protocol>
<Protocol>
<Type>SMTP</Type>
<Server>mytestmailserver.com</Server>
<Port>465</Port>
<DomainRequired>off</DomainRequired>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
<LoginName><?php echo $matches[1]; ?></LoginName>
</Protocol>
</Account>
</Response>
</Autodiscover>
<Server>...</Server>) und Ports (SMTP kann z. B. 25, 465, 587, 2525 sein).
Damit ältere Versionen, die beispielsweise nach Autodiscover.xml, AutoDiscover.xml oder autodiscover.xml suchen, ebenfalls funktionieren, erzeugen wir zwei symbolische Links:
$ ln -s autodiscover.xml AutoDiscover.xml
$ ln -s autodiscover.xml Autodiscover.xml
Nun erstellen wir die Konfigurationsdatei für Thunderbird, Android & Co.
Erstellt eine Datei mit Namen:
config-v1.1.xml
mit folgendem Inhalt und passt die Einstellungen entsprechend an euer System an:
<?php header('Content-Type: application/xml'); ?>
<clientConfig version="1.1">
<emailProvider id="inowrx.de">
<domain>inowrx.de</domain>
<displayName>inoWRX</displayName>
<displayShortName>inoWRX</displayShortName>
<incomingServer type="imap">
<hostname>mytestmailserver.com</hostname>
<port>993</port>
<socketType>SSL</socketType>
<authentication>password-encrypted</authentication>
<username>%EMAILADDRESS%</username>
</incomingServer>
<incomingServer type="imap">
<hostname>mytestmailserver.com</hostname>
<port>143</port>
<socketType>STARTTLS</socketType>
<authentication>password-encrypted</authentication>
<username>%EMAILADDRESS%</username>
</incomingServer>
<incomingServer type="pop3">
<hostname>mytestmailserver.com</hostname>
<port>995</port>
<socketType>SSL</socketType>
<authentication>password-encrypted</authentication>
<username>%EMAILADDRESS%</username>
</incomingServer>
<incomingServer type="pop3">
<hostname></hostname>
<port>110</port>
<socketType>STARTTLS</socketType>
<authentication>password-encrypted</authentication>
<username>%EMAILADDRESS%</username>
</incomingServer>
<outgoingServer type="smtp">
<hostname>mytestmailserver.com</hostname>
<port>465</port>
<socketType>SSL</socketType>
<authentication>password-encrypted</authentication>
<username>%EMAILADDRESS%</username>
</outgoingServer>
<outgoingServer type="smtp">
<hostname>mytestmailserver.com</hostname>
<port>587</port>
<socketType>STARTTLS</socketType>
<authentication>password-encrypted</authentication>
<username>%EMAILADDRESS%</username>
</outgoingServer>
<outgoingServer type="smtp">
<hostname>mytestmailserver.com</hostname>
<port>25</port>
<socketType>STARTTLS</socketType>
<authentication>password-encrypted</authentication>
<username>%EMAILADDRESS%</username>
</outgoingServer>
<outgoingServer type="smtp">
<hostname>mytestmailserver.com</hostname>
<port>2525</port>
<socketType>STARTTLS</socketType>
<authentication>password-encrypted</authentication>
<username>%EMAILADDRESS%</username>
</outgoingServer>
<documentation url="https://www.serverkraut.de/support/">
<descr lang="de">Dokumentation</descr>
<descr lang="en">Documentation</descr>
</documentation>
</emailProvider>
</clientConfig>
Nun folgen noch zwei ungetestete Konfigurationen für Apple iPhone, um die Konfiguration dort zu erleichtern (dies ist von uns jedoch ungetestet, da wir keine Apple-Geräte verwenden). Erreichen kann man diese iPhone-Konfigurationsseite unter autoconfig.<domain>/ios bzw. unter autoconfig.<domain>/iphone.xml.
In unserem Beispiel sieht unsere Konfigurationsseite für Apple-Geräte folgendermaßen aus:
Erzeugt die Datei:
iphone.mobileconfig
mit diesem Inhalt:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>HasRemovalPasscode</key>
<false/>
<key>PayloadContent</key>
<array>
<dict>
<key>EmailAccountDescription</key>
<string>MAILADDR</string>
<key>EmailAccountName</key>
<string>NAME</string>
<key>EmailAccountType</key>
<string>EmailTypeIMAP</string>
<key>EmailAddress</key>
<string>MAILADDR</string>
<key>IncomingMailServerAuthentication</key>
<string>EmailAuthPassword</string>
<key>IncomingMailServerHostName</key>
<string>mytestmailserver.com</string>
<key>IncomingMailServerPortNumber</key>
<integer>993</integer>
<key>IncomingMailServerUseSSL</key>
<true/>
<key>IncomingMailServerUsername</key>
<string>MAILADDR</string>
<key>OutgoingMailServerAuthentication</key>
<string>EmailAuthPassword</string>
<key>OutgoingMailServerHostName</key>
<string>mytestmailserver.com</string>
<key>OutgoingMailServerPortNumber</key>
<integer>465</integer>
<key>OutgoingMailServerUseSSL</key>
<true/>
<key>OutgoingMailServerUsername</key>
<string>MAILADDR</string>
<key>OutgoingPasswordSameAsIncomingPassword</key>
<true/>
<key>PayloadDescription</key>
<string>Configuration automatique de votre compte de messagerie</string>
<key>PayloadDisplayName</key>
<string>MAILADDR</string>
<key>PayloadIdentifier</key>
<string>inowrx.autodiscover.com.apple.mail.managed.1234ABCD-ABCD-1234-87FE-ABCDEF123452</string>
<key>PayloadType</key>
<string>com.apple.mail.managed</string>
<key>PayloadUUID</key>
<string>1234ABCD-ABCD-1234-87FE-ABCDEF123452</string>
<key>PayloadVersion</key>
<real>1</real>
<key>SMIMEEnablePerMessageSwitch</key>
<false/>
<key>SMIMEEnabled</key>
<false/>
<key>disableMailRecentsSyncing</key>
<false/>
</dict>
</array>
<key>PayloadDescription</key>
<string>Configure Email Settings</string>
<key>PayloadDisplayName</key>
<string>MAILADDR</string>
<key>PayloadIdentifier</key>
<string>inowrx.autodiscover</string>
<key>PayloadOrganization</key>
<string>inoWRX</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>ABCD1234-AB12-CD43-D005-123456ABCDE5</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
Und eine Datei namens:
iphone.xml
mit Inhalt:
<?php if ($_REQUEST['email'] != "" && $_REQUEST['nom'] != "" && filter_var($_REQUEST['email'], FILTER_VALIDATE_EMAIL)): ?>
<?php
header('Content-Type: text/plain');
header("Content-Disposition: attachment; filename=\"".$_REQUEST['email'].".mobileconfig\"");
$conf = file_get_contents('iphone.mobileconfig');
$conf = str_replace('MAILADDR', $_REQUEST['email'], $conf);
$conf = str_replace('NAME', $_REQUEST['name'], $conf);
print $conf;
?>
<?php else: ?>
<html>
<head>
<title>Auto-Konfiguration fuer iPhone</title>
<meta name="viewport" content="width=device-width; initial-scale=1; user-scalable=no" />
</head>
<body style="font: 100% Verdana;">
<form method="post" action="iphone.xml">
<p style="text-align: center">
<br/><br/>
Geben Sie Ihren Vor- und Nachnamen ein (der als Absender von E-Mails angezeigt wird)<br/>
sowie Ihre E-Mail-Adresse an, um eine Konfiguration für Ihr iOS-Gerät zu erhalten<br/>
<br/><br/>
Vor- und Nachname: <input type="text" name="name" style="height: 30px; width: 250px;"/><br/>
<br/><br/>
E-Mail-Adresse: <input type="text" name="email" style="height: 30px; width: 250px;"/><br/>
<br/><br/>
<input type="submit" value="Download"/><br/><br/>
Geben Sie eine gültige E-Mail-Adresse an und klicken Sie auf Download, um die Konfiguration zu beenden!
</p>
</form>
</body>
</html>
<?php endif ?>
Zu guter Letzt noch die .htaccess-Datei:
AddHandler php-script .php .xml
RewriteEngine on
RewriteCond %{REQUEST_URI} !iphone.xml
RewriteCond %{REQUEST_URI} ios
RewriteRule .* /ios/iphone.xml [R]
Wenn die CNAME-Einträge, der SRV-Eintrag sowie die Konfigurationsdateien korrekt angelegt wurden, steht einem Test nichts mehr im Wege!
autodiscover.<domain> nicht per SSL geschützt ist (dies kann nach eigenem Ermessen und Nutzen selbst erledigt werden).
Schritt 3: Test & Einrichtung
Erstellt ein neues E-Mail-Konto in Outlook:
Nach einigen Sekunden sollte dieses Fenster erscheinen:
Klickt nun auf „Ja“. Nun kommt es ein wenig auf „Glück“ an, denn in 2 von 4 Fällen kam nach dieser Meldung die Information, dass die Kontoeinrichtung erfolgreich abgeschlossen wurde. Alternativ kommen folgende Meldungen:
Nun können wir es entweder wiederholen oder den Kontotyp manuell auswählen: Klickt auf „Kontotyp ändern“.
Nun teilen wir Outlook mit, welchen Kontotyp wir anlegen möchten. Wir wählen im Beispiel IMAP aus.
Nun geben wir das Kennwort ein und verbinden uns. Das Konto sollte nun erfolgreich eingerichtet sein!
Thunderbird verlangt nur die E-Mail-Adresse, einen Namen für das Konto sowie das Passwort. Standardmäßig wird immer ein IMAP-Konto angelegt.
Wir hoffen, dieses kleine Howto kann euch helfen, das Einrichten der E-Mail-Adressen eurer durch Plesk verwalteten Postfächer zu erleichtern! Gerne könnt ihr uns auch einen Kommentar hinterlassen und Feedback zu unserer Reihe der Anleitungen & HowTos geben. Auch können wir euch bei etwaigen Problemen sehr gerne via Kommentarfunktion helfen. Und wie immer freuen wir uns über neue Facebookfreunde und dem Teilen dieses Beitrages.