Nun soll es ja auch noch Anwender geben, die die als VSE1) berühmt und berüchtigt verschrieene Software Namens Outlook verwenden. Auch diesem Publikum können wir hilfeich zur Seite stehen.
Ähnlich wie Thunderbird & Co. kann sich Outlook die notwendigen Parameter zur Konfiguration selbst besorgen. Hierzu schickt Outlook über einen HTTP POST request eine Anfrage den zuständigen Webserver, der die Konfiguration ausliefert.
Auch hier richten wir uns nun als erstes einen vHOST auf unserem Web-Server ein, der die Konfigurationsdatei ausliefern wird. Dazu benötigen wir neben der Konfigurationsdatei ein entsprechendes Verzeichnis, in dem wir diese ablegen. Dieses Verzeichnis legen wir uns nun als erstes an.
# mkdir -p /var/www/autodiscover/autodiscover
Wie auch schon bei der Konfiguration der Autoconfig bei den OpenSource eMail-Clients, definieren wir nun die notwendige Konfigurationsdatei für unseren vHost im Apache Konfigurationspfad /etc/httpd/conf.d/.
Wichtig ist hier nun, dass hier zwingend eine SSL-verschlüsselung angeboten wird!
# vim /etc/httpd/conf.d/autodiscover.conf
# # host für autodiscover unseres Dovecot für Outlookuser # <VirtualHost *:443> ServerAdmin webmaster@it-ignorant.de ServerName autodiscover.nausch.org # Django # Required, because there is a host with same ServerName and # ServerAlias LISTENING ON PORT 80, - and if these lines are # not present, and .htaccess-Files or LDAP-Access is enabled # for one or more Directory the host on PORT 443 and PORT 80 # will ASK for .htaccess ord LDAP-Access, so please remember # ---------------------------------------------------------- # -- DO NOT DELETE THE FOLLOWING LINES, STARTING WITH SSL -- # -- WHEN USING .htaccess or LDAP-Access! -- # ---------------------------------------------------------- SSLEngine on SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM SSLCertificateFile /etc/pki/tls/private/CAcert-class3-wildcard.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key SSLCertificateChainFile /etc/pki/tls/private/CAcert_chain.crt ServerPath / DocumentRoot "/var/www/autodiscover/" <Directory "/var/www/autodiscover/"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> AddType application/x-httpd-php .php .php3 .php4 .php5 .xml DirectoryIndex index.html ErrorLog logs/autodiscover_error.log CustomLog logs/autodiscover_access.log combined </VirtualHost>
Bevor wir nun noch unsere Konfigurations scharf schalten, überprüfen wir noch unsere gerade angelegte Konfiguration unseres vHost einer syntaktischen Prüfung.
# service httpd configtest
Syntax OK
Da die Prüfung positiv ausfällt, starten wir unseren Webserver einmal durch.
# service httpd condrestart
Stopping httpd: [ OK ] Starting httpd: [ OK ]
Damit der Mailclient über eine DNS-Abfrage unseren neuen vHOST finden kann, sind natürlich ein paar Einträge notwendig.
Outlook macht nun zwei DNS-Anfragen um zu ermitteln, bei welcher Adresse es die Konfigurationsdaten abrufen kann.
$ dig -t SRV _autodiscover._tcp.it-ignorant.org
Als Antwort erhalten wir hierzu:
;; QUESTION SECTION: ;_autodiscover._tcp.it-ignorant.de. IN SRV ;; ANSWER SECTION: _autodiscover._tcp.it-ignorant.de. 2635 IN SRV 10 0 443 autodiscover.nausch.org.
Mit 10 0 443 autodiscover.nausch.org hat Outlook nun folgende Informationen:
$ dig autodiscover.nausch.org
;; QUESTION SECTION: ;autodiscover.nausch.org. IN A ;; ANSWER SECTION: autodiscover.nausch.org. 2973 IN A 217.91.103.190
Wir benötigen also für die beiden Fälle jeweils einen entsprechenden Eintrag im DNS.
Für den SRV (Service) Resource Records tragen wir beim zuständigen Nameserver der Maildomäne folgende Daten ein:
_autodiscover._tcp.it-ignorant.org. IN SRV 10 0 443 autodiscover.nausch.org.
Für den ServerName aus unserer vHost-Konfiguration definieren wir dann beim zuständigen Nameserver einen A-Record:
autodiscover.nausch.org. IN A 217.91.103.190
Unsere Konfiguration aktivieren wir dann noch, nachdem wir die serial-Nummer im Configfile entsprechend angepasst haben.
# rndc reload
server reload successful
Outlook ist nun bekannt, dass die die Konfiguration für die Maildomäne it-ignorant.org beim Webserver autodiscover.nausch.org via Port 443 (also verschlüsselt) abgeholt werden kann. Mit nachfolgendem HTTP POST Request erfolgt nun die eigentliche Abfrage der Konfigurationsdaten:
<?xml version="1.0" encoding="utf-8"?> <Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006"> <Request> <AcceptableResponseSchema>http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a</AcceptableResponseSchema> <EMailAddress>django@nausch.org</EMailAddress> </Request> </Autodiscover>
Als Antwort daraus erhält dann Outlook die betreffenden Konfigurationsdaten.
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006"> <Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a"> <User> <DisplayName>nausch.org</DisplayName> </User> <Account> <AccountType>email</AccountType> <Action>settings</Action> <Protocol> <Type>IMAP</Type> <Server>imap.nausch.org</Server> <Port>993</Port> <DomainRequired>off</DomainRequired> <SPA>off</SPA> <SSL>on</SSL> <AuthRequired>on</AuthRequired> <LoginName>django@nausch.org</LoginName> </Protocol> <Protocol> <Type>SMTP</Type> <Server>mx01.nausch.org</Server> <Port>465</Port> <DomainRequired>off</DomainRequired> <SPA>off</SPA> <SSL>on</SSL> <AuthRequired>on</AuthRequired> <LoginName>django@nausch.org</LoginName> </Protocol> </Account> </Response> </Autodiscover>
Da in der ausgelieferten XML-Datei die angefragte eMailadresse enthalten ist, greifen wir ein wenig in die PHP-Trickkiste um diese automatisiert ausliefern zu können. Hierzu legen wir folgende XML-Datei im Webserverpfad an.
# vim /var/www/autodiscover/autodiscover/autodiscover.xml
<?php $score = array(); $rawdata = file_get_contents('php://input'); preg_match('/<EMailAddress>(.*)<\/EMailAddress>/', $rawdata, $score); 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>nausch.org</DisplayName> </User> <Account> <AccountType>email</AccountType> <Action>settings</Action> <Protocol> <Type>IMAP</Type> <Server>imap.nausch.org</Server> <Port>993</Port> <DomainRequired>off</DomainRequired> <SPA>off</SPA> <SSL>on</SSL> <AuthRequired>on</AuthRequired> <LoginName><?php echo $score[1]; ?></LoginName> </Protocol> <Protocol> <Type>SMTP</Type> <Server>mx01.nausch.org</Server> <Port>465</Port> <DomainRequired>off</DomainRequired> <SPA>off</SPA> <SSL>on</SSL> <AuthRequired>on</AuthRequired> <LoginName><?php echo $score[1]; ?></LoginName> </Protocol> </Account> </Response> </Autodiscover>
Nun ist es an der Zeit unsere Konfiguration zu Testen.
Bevor wir zum Testen unserer Konfiguration mit dem Mailclient Outlook schreiten, überprüfen wir noch selbt kurz auf der Konsole mit openssl ob die XML-Datai mit den richtigen Daten ausgeliefert wird. Wir gehen hierbei wir folt vor:
POST /autodiscover/autodiscover.xml HTTP/1.1 Host: autodiscover.nausch.org Content-Length: 351 Content-Type: application/x-www-form-urlencoded <?xml version="1.0" encoding="utf-8"?><Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006"><Request><AcceptableResponseSchema>http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a</AcceptableResponseSchema><EMailAddress>django@nausch.org</EMailAddress></Request></Autodiscover>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006"> <Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a"> <User> <DisplayName>nausch.org</DisplayName> </User> <Account> <AccountType>email</AccountType> <Action>settings</Action> <Protocol> <Type>IMAP</Type> <Server>imap.nausch.org</Server> <Port>993</Port> <DomainRequired>off</DomainRequired> <SPA>off</SPA> <SSL>on</SSL> <AuthRequired>on</AuthRequired> <LoginName>django@nausch.org</LoginName> </Protocol> <Protocol> <Type>SMTP</Type> <Server>mx01.nausch.org</Server> <Port>465</Port> <DomainRequired>off</DomainRequired> <SPA>off</SPA> <SSL>on</SSL> <AuthRequired>on</AuthRequired> <LoginName>django@nausch.org</LoginName> </Protocol> </Account> </Response> </Autodiscover>
Somit ergibt sich folgende Kommunikation mit unserem Webserver:
$ openssl s_client -connect autodiscover.nausch.org:443
CONNECTED(00000003) depth=2 O = Root CA, OU = http://www.cacert.org, CN = CA Cert Signing Authority, emailAddress = support@cacert.org verify return:1 depth=1 O = CAcert Inc., OU = http://www.CAcert.org, CN = CAcert Class 3 Root verify return:1 depth=0 CN = *.nausch.org verify return:1 --- Certificate chain 0 s:/CN=*.nausch.org i:/O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root 1 s:/O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root i:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org --- Server certificate -----BEGIN CERTIFICATE----- MIIEKzCCAhOgAwIBAgIDAR/LMA0GCSqGSIb3DQEBBQUAMFQxFDASBgNVBAoTC0NB Y2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5vcmcxHDAaBgNV BAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwHhcNMTMwNDE1MjAwNTIyWhcNMTUwNDE1 MjAwNTIyWjAXMRUwEwYDVQQDFAwqLm5hdXNjaC5vcmcwgZ8wDQYJKoZIhvcNAQEB BQADgY0AMIGJAoGBALinLX8PKoHVCKoRJCv5a+ENFhqjcZFRshB1WpqkBcCpyuxo lOFW8ba01yrT/w5rrsQiebf3MSHpTTeCVfTgNSCt7obAxczkShaaB5WYd2k42z4Z yLYVWP46h7RBDphd5/2roQVs19lH9R3voqqH7QnCGR66xBMoKgV3GHtbbd6ZAgMB AAGjgcYwgcMwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCA6gwNAYDVR0lBC0w KwYIKwYBBQUHAwIGCCsGAQUFBwMBBglghkgBhvhCBAEGCisGAQQBgjcKAwMwMwYI KwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5jYWNlcnQub3Jn LzA4BgNVHR8EMTAvMC2gK6AphidodHRwOi8vY3JsLmNhY2VydC5vcmcvY2xhc3Mz LXJldm9rZS5jcmwwDQYJKoZIhvcNAQEFBQADggIBADhw4BVdR6cjPMpg15iZ3CBY Esr5IEy7NsnbS3qLHkc63o4p9abANDgNgio9JWe6qqq+NlSaxOvAPr0nrW6tlYVr yyfZUqM91xt5dM5VHd+IhAjdiXhGQrpM4WFLNZ2dpw18VwpIFFpHtD16G+U8sEPT qhWekJFOiLCffaBXmNloNsipzoXUfhyEmmZh0ge4c/ZEqJq0+KwnAON5fNp9REgj jgqBZoZc3jOWA6nrgNC8BbjZJx1ayPXKJXYhEdYSv3BsTdJ5wa8/GYVmkkoT7jPo brFIhf+vOc3w8HuFYUmIUMIno8JYhdr6WHgSH7NfD63tXeG1ioPqYnwh+PeUKvWv ESx8vW3U2kcKqKIKtp3I3kC4uI4clOvPGW3gkdQz7GZNLsbX13U44j8j7PLgJmxH gFLuy4WUE0OcIgYkMhyPCgg6/wYSMEGiR9QLfDrXhBZqwsX1dB4G23KqfF0b60uv fKsw3FDMVQQZpRd8cYphVH/Bd0ytkPqi/xXma7tfVJg/NZvx9YgRB2zX5UsAh0dZ Cp01cT81Lg8yrD3XkJjMCQt6JLXF7LpkbLfa4rKkl1hIduzU3yrGI4z36HFf3zq/ /vJEIHGOedCJ+IUch+OdmwNczbVn7s8DTtwkQ1OKauWKTEfi8cTUj2VCRDKNJCJZ c9V9h53jk8abBGZg/u+5 -----END CERTIFICATE----- subject=/CN=*.nausch.org issuer=/O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root --- No client certificate CA names sent --- SSL handshake has read 3709 bytes and written 310 bytes --- New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA Server public key is 1024 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : DHE-RSA-AES256-SHA Session-ID: 72A57264FB923756AE8B21045DAA3FFCABDD422BAC8986CFB8B1062B720739EF Session-ID-ctx: Master-Key: 512E8C4B3F3785D4FE33051B95586CB8D5F2B79D5B52965FE9FCCDB6616AEF14A73CFE3C0FAD0F4D5CA50FF91247D42F Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None TLS session ticket: 0000 - 55 77 25 b4 f7 49 95 18-61 37 c1 51 29 61 69 75 Uw%..I..a7.Q)aiu 0010 - ce 02 f0 a3 91 4e 93 ea-fa f4 70 60 88 fd c1 8c .....N....p`.... 0020 - 86 c2 9a 2e d1 36 e3 28-4c ab 26 04 6c db 67 eb .....6.(L.&.l.g. 0030 - 75 49 3a d3 b1 f3 9b a5-b9 41 d4 2a 3c 79 f1 3f uI:......A.*<y.? 0040 - f3 47 b1 a9 cc a4 0c ac-5b 7e 56 b0 0b fc ed f7 .G......[~V..... 0050 - a3 90 41 a0 6c 4b 37 89-ab d2 46 ee 90 79 68 9c ..A.lK7...F..yh. 0060 - f8 fa 0b ef 6d e1 7c 86-b2 c8 83 4c d2 47 9d 35 ....m.|....L.G.5 0070 - f7 3c 98 a3 06 77 c8 5d-6a 09 a2 4c 16 9f fc 7f .<...w.]j..L.... 0080 - 91 96 60 2c a1 1d 07 50-7f 3f 75 6e ba 4d 09 c6 ..`,...P.?un.M.. 0090 - db b8 4a 0a 0d 7e 5c c9-a5 a3 81 d8 c8 4b 2e fd ..J..~\......K.. 00a0 - de 85 be 20 8b c6 d6 64-7a 62 ad 51 2c 4a 87 94 ... ...dzb.Q,J.. 00b0 - 9d 18 48 8c 16 f3 5c c1-b7 d0 2e 76 c8 b7 f4 82 ..H...\....v.... Start Time: 1368520350 Timeout : 300 (sec) Verify return code: 0 (ok) ---
POST /autodiscover/autodiscover.xml HTTP/1.1 Host: autodiscover.nausch.org Content-Length: 351 Content-Type: application/x-www-form-urlencoded <?xml version="1.0" encoding="utf-8"?><Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006"><Request><AcceptableResponseSchema>http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a</AcceptableResponseSchema><EMailAddress>django@nausch.org</EMailAddress></Request></Autodiscover>
HTTP/1.1 200 OK Date: Tue, 14 May 2013 08:32:37 GMT Server: Apache X-Powered-By: PHP/5.3.3 Content-Length: 1004 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>nausch.org</DisplayName> </User> <Account> <AccountType>email</AccountType> <Action>settings</Action> <Protocol> <Type>IMAP</Type> <Server>imap.nausch.org</Server> <Port>993</Port> <DomainRequired>off</DomainRequired> <SPA>off</SPA> <SSL>on</SSL> <AuthRequired>on</AuthRequired> <LoginName>django@nausch.org</LoginName> </Protocol> <Protocol> <Type>SMTP</Type> <Server>mx01.nausch.org</Server> <Port>465</Port> <DomainRequired>off</DomainRequired> <SPA>off</SPA> <SSL>on</SSL> <AuthRequired>on</AuthRequired> <LoginName>django@nausch.org</LoginName> </Protocol> </Account> </Response> </Autodiscover>
exit
closed
Nun ist es an der Zeit unsere Konfiguration mit M$-Outlook zu Testen. Über den Menüpunkt Neues E-Mail-Konto hinzufügen… legen wir uns nun einen Test-Account an.
Hier wählen wir die Option Microsoft Exchange, POP3, IMAP oder HTTP aus und klicken dann auf die Schaltfläche [ Weiter > ].
Dort Tragen wir nun wie gewohnt ein:
und klicken auf die Schaltfläche [Weiter].
Der Mailclient findet nun in der für die Konfiguration zuständigen XML-Datei allen notwendigen Parameter.
Mit einem abschließendem Klick auf die Schaltfläche [Fertig stellen] ist dann die Einrichtung bereits abgeschlossen.