Mainos / Advertisement:

Autoconfig + Autodiscover

Kohteesta Taisto
Siirry navigaatioon Siirry hakuun

Autoconfig ja Autodiscoveryn ideana helpottaa sähköpostiasetusten määrittämisen sähköpostiohjelmille kuten Outlook tai Thunderbird.

Tässä pieni ohje miten saat toimimaan nämä palvelimellasi.

Vaatimukset:

  • Webserver, Nginx tai Apache2. Tämä ohje tehty Nginx:lle.
  • PHP, PHP-XML
  • autodiscover käytetään HTTPS:ää, joten SSL-sertifikaatti vaadittu, kuten Let's Encrypt.

Konfiguroi nimipalvelintietueet verkkotunnuksellesi. Korvaa example.org omalla verkkotunnuksellasi.

  • autoconfig.example.org osoittamaan webpalvelimellesi (esimerkiksi A-tietue)
  • autodiscover.example.org osoittamaan webpalvelimellesi (esimerkiksi A-tietue)

Konfiguroi Nginx:ään esimerkiksi:

Tee myös HTTPS-puolelle vastaava konfiguraatio

server {
        listen *:80;
        server_name autoconfig.* autodiscovery.*;

        root /var/www/autodiscover/;

        location /mail/config-v1.1.xml {
                try_files $uri /autoconfig.php?$args;
                rewrite ^(.+)$ /autoconfig.php?$1 last;
        }

        location /autodiscover/autodiscover.xml {
                try_files $uri /autodiscover.php?$args;
                rewrite ^(.+)$ /autodiscover.php?$1 last;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

        access_log /var/log/nginx/access_log;
        error_log /var/log/nginx/error_log;
}

Luo autoconfig.php tiedosto ja tallenna se webroottiin.

<?php
header ("Content-Type:text/xml");
$domain = $_SERVER["HTTP_HOST"];
$mail = htmlspecialchars($_GET['emailaddress']);
$host = substr(strrchr($mail, "@"), 1);
echo <<<EOP
<?xml version="1.0"?>
<clientConfig version="1.1">
    <emailProvider id="{$domain}">
        <domain>{$domain}</domain>
        <displayName>{$mail}</displayName>
        <displayShortName>{$mail}</displayShortName>
        <incomingServer type="imap">
            <hostname>{$host}</hostname>
            <port>143</port>
            <socketType>STARTTLS</socketType>
            <username>{$mail}</username>
            <authentication>password-cleartext</authentication>
        </incomingServer>
        <outgoingServer type="smtp">
            <hostname>{$host}</hostname>
            <port>587</port>
            <socketType>STARTTLS</socketType>
            <authentication>password-cleartext</authentication>
            <username>{$mail}</username>
        </outgoingServer>
    </emailProvider>
</clientConfig>
EOP;

Ja tämä autodiscover.php tiedostoon

<?php
//get raw POST data so we can extract the email address
$data = file_get_contents("php://input");
preg_match("/\<EMailAddress\>(.*?)\<\/EMailAddress\>/", $data, $matches);
//set Content-Type
header("Content-Type: application/xml");
$host = substr(strrchr($matches[1], "@"), 1);
echo '<?xml version="1.0" encoding="utf-8" ?>'; ?>

<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
    <Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
        <Account>
            <AccountType>email</AccountType>
            <Action>settings</Action>
            <Protocol>
                <Type>IMAP</Type>
                <Server><?php echo $host; ?></Server>
                <Port>993</Port>
                <DomainRequired>off</DomainRequired>
                <LoginName><?php echo $matches[1]; ?></LoginName>
                <SPA>off</SPA>
                <SSL>on</SSL>
                <AuthRequired>on</AuthRequired>
            </Protocol>
            <Protocol>
                <Type>SMTP</Type>
                <Server><?php echo $host; ?></Server>
                <Port>587</Port>
                <DomainRequired>off</DomainRequired>
                <LoginName><?php echo $matches[1]; ?></LoginName>
                <SPA>off</SPA>
                <AuthRequired>on</AuthRequired>
                <UsePOPAuth>off</UsePOPAuth>
                <SMTPLast>off</SMTPLast>
                <Encryption>TLS</Encryption>
                <TLS>on</TLS>
            </Protocol>
        </Account>
    </Response>
</Autodiscover>


Lähde: https://gitlab.truong.fi/minh/AutoconfigPHP

Mainos / Advertisement: