{"id":65,"date":"2011-11-11T16:21:57","date_gmt":"2011-11-11T16:21:57","guid":{"rendered":"http:\/\/blogs.oucs.ox.ac.uk\/nexus\/?p=65"},"modified":"2011-11-21T10:14:01","modified_gmt":"2011-11-21T10:14:01","slug":"autodiscover-oddities","status":"publish","type":"post","link":"https:\/\/blogs.it.ox.ac.uk\/nexus\/2011\/11\/11\/autodiscover-oddities\/","title":{"rendered":"Autodiscover oddities"},"content":{"rendered":"<p>Here&#8217;s what is <em>supposed<\/em> to happen when Outlook wants to connect, during coexistence of Exchange 2007 and 2010:<\/p>\n<div>\n<div>\n<ol>\n<li>On a domain-joined workstation Outlook (2007 or later) sends a query to Active Directory for the Autodiscover information. The directory returns a list of Service Connection Point (&#8216;SCP&#8217;) objects. If you have lots of CASs then you&#8217;ll have lots of SCPs but Outlook will just select the first one in the list. The SCP should have all of the information needed to configure the Outlook client.<br \/>\nNow we don&#8217;t have any domain-joined clients so an AD query can&#8217;t happen: our clients must get the information another way. Autodiscovery for these clients relies upon finding a fully qualified domain name based on the user-supplied SMTP address. In our case it&#8217;s therefore a variation on the theme of <strong>https:\/\/autodiscover.<em>&lt;unit&gt;<\/em>.ox.ac.uk<\/strong>.<br \/>\nIncidentally, the same internet-facing CAS must host the normal OWA URL as well as the Autodiscover one so a Unified Communications or Subject Alternate Name certificate is needed for a secure connection. Microsoft&#8217;s <a href=\"http:\/\/support.microsoft.com\/kb\/929395\" target=\"_blank\">KB 929395<\/a> has a limited list of officially supported suppliers&#8230;\u00a0<a href=\"http:\/\/blogs.it.ox.ac.uk\/nexus\/files\/2011\/11\/san.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-medium wp-image-66\" src=\"http:\/\/blogs.it.ox.ac.uk\/nexus\/files\/2011\/11\/san-241x300.jpg\" alt=\"\" width=\"241\" height=\"300\" srcset=\"https:\/\/blogs.it.ox.ac.uk\/nexus\/files\/2011\/11\/san-241x300.jpg 241w, https:\/\/blogs.it.ox.ac.uk\/nexus\/files\/2011\/11\/san.jpg 419w\" sizes=\"auto, (max-width: 241px) 100vw, 241px\" \/><\/a><br \/>\nBehind the scenes autodiscover also takes care of Out-Of-Facility (&#8216;OOF&#8217;) messages, availability, offline address book downloads and a few more besides.<br \/>\nWhere were we? Oh yes, how it&#8217;s supposed to work.<\/li>\n<li>We only have one site as far as AD is concerned (yes, in reality it&#8217;s not, \u00a0but our 10GB inter-site link means we don&#8217;t need to tell the servers) \u00a0but if we did SCP would also deliver appropriate site information back to the client. For &#8216;in site&#8217; users there would be <strong>autodiscoversitescope<\/strong> data (an attribute set via the <strong>set-clientaccessserver<\/strong> cmdlet) which identifies the site for which it&#8217;s authoritative. For &#8216;out of site&#8217; clients they&#8217;ll just get a list of the oldest SCP objects. That&#8217;s us, so our users <em>ought<\/em> to see the oldest Exchange 2007 CAS first.<\/li>\n<li>Outlook will use the first SCP in its list to contact Autodiscover. Even someone logging into their Exchange 2010 mailbox or a brand-new user will begin with the Exchange 2007 SCP as it is <em>usually<\/em> the first record in the list.<\/li>\n<li>At this stage all of our users are still on Exchange 2007 so it&#8217;ll be a 2007 CAS that receives the Autodiscover request. Later on, once we&#8217;re migrating users, there&#8217;ll be a time when the the user\u2019s mailbox is on Exchange 2010. At that point the 2007 CAS must redirect the request to an Exchange 2010 CAS.<\/li>\n<li>The client will receive an HTTPS response from the autodiscover service containing an XML file. This file includes the connection settings but also the URLs for all of the configured Exchange services.<\/li>\n<li>Outlook can use this information to configure (new users) or connect (existing users) to our Exchange servers.<\/li>\n<\/ol>\n<p>Now to get a better indication of what&#8217;s going on there are useful tools, such as\u00a0<a href=\"http:\/\/www.testexchangeconnectivity.com\/\" target=\"_blank\">TestExchangeConnectivity.com<\/a>, and for <span style=\"color: #ff0000\">test purposes <\/span><span style=\"color: #ff0000\">only<\/span> it&#8217;s very useful. But as it requires you to provide your password of course it should <strong><span style=\"color: #ff0000\">NEVER<\/span><\/strong> be used for production account testing. In our case, the multi-domain element of our service, with different email domains for different colleges and units, makes for an added challenge. Microsoft&#8217;s <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/bb332063(EXCHG.80).aspx\" target=\"_blank\">White Paper<\/a> on this subject suggests options including allowing Outlook to give up on a secure session and drop back to HTTP or, as we&#8217;ve done, rely on redirection. With this method users do get prompted to ask if they&#8217;re happy for our server to configure their connection but that&#8217;s a small price to pay to ensure a secure session. To minimise certificate errors one option is to configure both the internalURL and externalURL to point to the CAS&#8217; external name on its&#8217; certificate (this will need split DNS to make it work).<\/p>\n<p>So, that&#8217;s the theory.<\/p>\n<p>In practice what we seemed to see today is clients apparently being directed to &#8211; and searching for &#8211; configuration data via our &#8216;legacy&#8217; certificate freshly installed on our not-yet-in-production Exchange 2010 CASs. Of course the conventional approach is to use the &#8216;legacy&#8217; certificate for the Exchange 2007 CASs during the coexistence phase, with the normal certificate on the Exchange 2010 CASs. Our approach at this stage differed from this because we had been hoping that, prior to transferring our clients to the Exchange 2010 CASs, we&#8217;d be able to use that certificate for client testing. This testing requirement was largely borne out of our experience that, for example, different implementations of Android behave in <em>very<\/em> different ways when CAS redirection takes place.<\/p>\n<p>Now the behaviour that we actually saw was a few desktop Outlook clients picking up the legacy certificate data from the Exchange 2010 CASs, without being prompted to look there. This wouldn&#8217;t have been so much of an issue if we&#8217;d had external DNS entries, certificates also installed on the ISA servers and CAS\/ISA rules in place. But we&#8217;d deliberately avoided that: only the clients we were specifically testing at that time were supposed to see that address, via manual configuration. So the address that Outlook was finding was an unresolvable one &#8211; in the short term this necessitated a quick bit of fixing work and in the longer term it&#8217;s prompted a re-think on our approach to testing.<\/p>\n<p>Further diagnostics are under way.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s what is supposed to happen when Outlook wants to connect, during coexistence of Exchange 2007 and 2010: On a domain-joined workstation Outlook (2007 or later) sends a query to Active Directory for the Autodiscover information. The directory returns a &hellip; <a href=\"https:\/\/blogs.it.ox.ac.uk\/nexus\/2011\/11\/11\/autodiscover-oddities\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":107,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-65","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.it.ox.ac.uk\/nexus\/wp-json\/wp\/v2\/posts\/65","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.it.ox.ac.uk\/nexus\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.it.ox.ac.uk\/nexus\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.it.ox.ac.uk\/nexus\/wp-json\/wp\/v2\/users\/107"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.it.ox.ac.uk\/nexus\/wp-json\/wp\/v2\/comments?post=65"}],"version-history":[{"count":3,"href":"https:\/\/blogs.it.ox.ac.uk\/nexus\/wp-json\/wp\/v2\/posts\/65\/revisions"}],"predecessor-version":[{"id":81,"href":"https:\/\/blogs.it.ox.ac.uk\/nexus\/wp-json\/wp\/v2\/posts\/65\/revisions\/81"}],"wp:attachment":[{"href":"https:\/\/blogs.it.ox.ac.uk\/nexus\/wp-json\/wp\/v2\/media?parent=65"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.it.ox.ac.uk\/nexus\/wp-json\/wp\/v2\/categories?post=65"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.it.ox.ac.uk\/nexus\/wp-json\/wp\/v2\/tags?post=65"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}