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, welche zumeist nur bei großen Providern verfügbar ist, ist nun auch mit dem eigenen Plesk Server einfach zu 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 und POP3 sowie als SMTP Postausgangsserver verwendet wird.
Autoconfig und Autodiscover (AutoErmittlungsdienst)

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). Die Autodiscover Methode ist die schnellere, da neben der E-Mail-Adresse nur noch das Kennwort eingegeben werden muss. Die 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 nun 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 Servernamen 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 ActiveDirectory (AD) zu beziehen. Danach versucht es Outlook ähnlich wie bei Autoconfig mit einigen Aufrufen.

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 (weil bspw. kein https verfügbar ist) wird weiter versucht durch einen GET Aufruf an folgende Adresse:

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 gar nach „AutoDiscover“.
Schlägt auch diese Variante fehl, versucht Outlook es wie Thunderbird mit der imap.deine-domain.de und smtp.deine-domain.de.
Doch genug der vielen Worte, kommen wir endlich zur Anleitung!


Anforderungen:

  1. Plesk muss der primäre Name Server sein (Der Plesk DNS-Server fungiert als primärer Name Server der DNS-Zone xyz).
  2. Die gewünschte (Sub)-Domain für den Mailserver muss auf den Pleskserver routen und erreichbar sein
  3. Der Mailserver muss per https:// aufrufbar sein und über ein gültiges SSL-Zertifikat verfügen
  4. Geduld und viel Kaffee =)

In unserem Fallbeispiel verwenden wir als E-Mail-Server den Hostnamen: mytestmailserver.com. Im Weiteren möchten wir später ein Postfach [email protected] mit der automatischen Konfiguration in unser Mailprogramm einpflegen. Als Grundlage gehen wir davon aus das 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 dessen 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

Das Bild zeigt bei der Priorität einen falschen Wert! Dieser kann aber individuell geändert werden wir nutzen als Priorität „0“.

Schritt 2 – Konfigurationsdateien

Erstellt einen Unterordner /mail unter der genutzten Domain welcher als Mailserver fungiert. https://mytestmailservercom/mail

In diesem Ordner erstellen wir folgende Dateien:

Erstellt die Datei:

autodiscover.xml

Diese wird unsere Autodiscover-Einstellungen beinhalten, welche vom Postfachbesitzer normalerweise händisch eingetragen werden müssten. (Beispielsweise: Posteingang- und Postausgangsserver, Verschlüsselungstyp und den Port).

<?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>mtytestmailserver.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>mtytestmailserver.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>mtytestmailserver.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>

Passt diese Vorlage nach belieben an! Insbesondere den Hostnamen (<server>…) sowie die betreffenen Ports, welche durchaus variieren können (SMTP 25, 465….)

Damit ältere Versionen, welche beispielsweise nach Autodiscover.xml, AutoDiscover.xml oder eben autodiscover.xml suchen, erzeugen wir noch zwei symbolische Links um auch diese Fälle abzudecken.

$ 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 Applegerä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:

Der Nutzer muss diese Seite nun auf seinem iPhone / Mac im Safari öffnen und das obige Formular ausfüllen. Danach erhält er eine Konfigurationsdatei, welche die Einstellungen im Apple Mail automatisiert durchführt.

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!

Vorwort: Unter Outlook wird es zu einem Zertifikatsfehler kommen, da die autodiscover.<domain> nicht per SSL geschützt ist (Dies kann allerdings nach eigenem Ermessen & 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, dann in 2 von 4 Fällen kam nach dieser Meldung dass die Kontoeinrichtung erfolgreich abgeschlossen wurde. Alternativ kommen folgende Meldungen:

Nun können wir es entweder Wiederholen, oder einfach selbst den Kontotyp 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.

9 Kommentare
  1. Andreas
    Andreas sagte:

    Ich habe einen VServer bei Strato mit installiertem Plesk Onyx Version 17.5.3 Update #35.

    Autodiscover und Autoconfig wurden eingerichtet und funktionieren unter Outlook, Windows Mail (Win10) und Thunderbird ohne Probleme. Auch der Test mit dem [Microsoft Remote Connectivity Analyser] unter https://testconnectivity.microsoft.com läuft problemlos durch.

    ABER… auf meinem Samsung Galaxy S7 findet die App „Samsung Mail“ keine automatischen Einstellungen und die App „MyMail“ lässt sich gar nicht einrichten, selbst wenn ich die Daten manuell eingebe.

    WICHTIG:
    Auf dem VServer sind zwei (2) verschiedene Domänen eingerichtet.
    Die die eine Domäne (domain1.de) dient als Mailserver (mail.domain1.de).
    Die andere Domäne (domain2.de) hat im MX Record den Server mail.domain1.de stehen.

    KOMISCH:
    Bei der Adresse [email protected] funktioniert das Autodiscover auch auf Android;
    bei der Adresse [email protected] funktioniert es nicht. :-(

    Irgendeine Idee, was daran Schuld sein kann?

    Gruß, Andreas.

    Antworten
  2. olaf kapinski
    olaf kapinski sagte:

    Moin Moin
    Danke für die Anleitung, Klasse! Wird Zeit, dass plesk einen eigenen autodiscover Dienst bekommt, diese manuelle Dateien erstellen ist ja kaum wem zuzumuten.
    Mir fehlt der Zertifikat-Teil. Ich werde meine Kunden niemals ermuntert, ein falsches Zertifikat zu akzeptieren und kriege es nicht hin , nur dem Mailserver ein eigenes Zertifikat zu geben.
    Danke nochmals für den Beitrag

    Antworten
    • Jan
      Jan sagte:

      Ich habe eine Sub-Domain angelegt und für diese per LetsEncrypt ein Zertifikat erstellt. Dieses Zertifikat dann unter Plesk:
      Plesk -> Einstellungen ->SSL/TLS-Zertifikate -> Zertifikat zum Schutz von E-Mails festgelegt.
      ——
      Jan

      Antworten
  3. christian
    christian sagte:

    Fabulous guide, congratulations.
    For apple configuration, in the iphone.xml file $ _REQUEST [’nom‘] would be replaced with $ _REQUEST [’name‘] and header (‚Content-Type: text / plain‘); create a txt file, it should be replaced with: header (‚Content-Type: application / x-apple-aspen-config‘);
    Thks and bye

    Antworten
  4. Jan Holler
    Jan Holler sagte:

    Hier klemmt es bei mir schon:
    > Erstellt einen Unterordner /mail unter der genutzten Domain …
    >In diesem Ordner erstellen wir folgende Dateien: autodiscover.xml

    Vorher steht, dass die ‚autodiscover.xml‘ u.a. hier gesucht wird:
    //autodiscover.domain.de/autodiscover/autodiscover.xml

    Unter /mail/ müsste ja die ‚autoconfig.xml‘ stehen ??????

    Ich habe nach dieser Anleitung die automatische Konfiguration unter Linux -> KMail hinbekommen. Geht perfekt.
    Aber unter Outlook mit der ‚autodiscover.xml‘ keine Chance.

    Vielen Dank für die schöne Anleitung. Da ich einen Teil hinbekommen habe …
    Irgendwie ist es eine winzige Kleinigkeit, die mich verwirrt …. :-)

    Jan

    Antworten
  5. Valentin
    Valentin sagte:

    Anleitung ist gut, danke. Jedoch verstehe ich nicht ganz, wieso ich trotzdem „Da hat etwas nicht geklappt.“ erhalte, obwohl im Connectivitycheck und im Outlook Auto-Discover Test die richtigen Einstellungen gefunden werden..

    Antworten
  6. Andreas
    Andreas sagte:

    Wunderschönen guten Abend,

    leider klappt nach einem 8 stündigen Tag leider gar nichts … Wir haben einen VServer mit mehreren Domains auf dem wir einen Mailserver verwenden (SSL Problematik). Daher soll für jede Domain domain1.de, domain3.de der feste Mailserver mail.domain.de verwendet werden.

    Auf keinem einzigen Client oder Gerät konnten wir erfolgreich konfigurieren, die Vermutung liegt nahe das bereits bei den ersten Schritten etwas falsch läuft. Wie müsste in unserem Falle die DNS Konfiguration genau aussehen?

    Gruß aus Wiesbaden

    Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.