Autodiscover information for mail clients to setup pop/imap/smtp settings automatically.
Last Modified: Jan 13, 2017, 11:34 pm
Some mail clients will use a system called "Autodiscover" to figure out which settings to use for the pop/imap/smtp settings.
You can set this up if you'd like, it basically requires a subdomain and a SRV record.
You can add the SRV record into any domain you want to use these settings for.
If you've got a global SSL certificate in exim/dovecot for your hostname, this would be a good way to ensure clients use the correct value, so they don't get SSL certificate errors.
Let's assume you're going to have your clients with connect to for both IMAP and SMTP.
We'll create a subdomain called to store the XML.
Setup a SRV record in the clientdomain.com DNS zone:
_autodiscover._tcp.clientdomain.com. 3600 IN SRV 10 10 443 autodiscover.hostname.com.
Next, create the subdomain autodiscover.hostname.com in DA, and add the following code into a file called autodiscover.php:
//get raw POST data so we can extract the email address
$data = file_get_contents("php://input");
preg_match("/\<EMailAddress\>(.*?)\<\/EMailAddress\>/", $data, $matches);
Note that the SRV record is using port 443 for autodiscover.hostname.com, so make sure you've got a valid certificate setup for this subdomain.
You can test by going to a https://autodiscover.hostname.com to ensure you get a green lock. The script is looking for XML input in the <EMailAddress> tag to insert into the <LoginName> result field.
If needed, you can set SMTP to use port 465, but you'd have to change the <Encryption> from TLS to SSL, as the protocol is different on 465.
Port 587 requires smtp-auth but skips some spam checks and uses STARTTLS to enable SSL. Port 465 is full SSL but clients might have issues sending if their IP/range is in an RBL.
Lastly, we'll need to setup an .htaccess file so that any request to the autodiscover.hostname.com subdomain results in the autodiscover.php being called. In the subdomain's DocumentRoot, add this code: