Manuel Roccon

ICT & Cyber Security Specialist

Exchange – Configurazione accesso Interno ed Esterno

Questa guida spiega come configurare Exchange per poter poter ricevere la posta sia all’interno della propria infrastruttura sia all’esterno.

In questo caso utilizzeremo un URL pubblico per entrambe le configurazioni.

Innanzi tutto è necessario avere un’istanza di Exchange installata, in questa guida è stato usato Exchange 2019.

Creiamo un puntatore (es. remote.domain.com) presso il vostro provider che risolva l’IP statico della vostra connessione. E’ necessario inoltre configurare il vostro Firewall per inoltrare le richieste provenienti dalla porta SSL 443 al vostro IP privato del server Exchange.

Qui potete trovare tutte le porte usate da Exchange, ne sono presenti altre per utilizzare altri servizi come IMAP e POP3:

https://docs.microsoft.com/it-it/exchange/plan-and-deploy/deployment-ref/network-ports?view=exchserver-2019

Se non avete un IP statico, è possibile utilizzare un record CNAME per poter comunque risolvere il proprio IP. In questo articolo ho spiegato come fare:

https://www.manuelroccon.it/ict/utilizzare-record-dns-statico-su-connessione-con-ip-dinamico/

Creiamo adesso lo stesso record remote.example.com nel vostro DNS interno che risolvi IP privato del server Exchange.

A questo punto tramite URL remote.example.com potete raggiungere il vostro server sia internamente che esternamente.

Ora è necessario eseguire dei comandi tramite PowerShell per modificare i puntamenti di Exchange. Per comodità ho creato uno script che raggruppa tutti i vari comandi. E’ necessario solo sostituire gli URL e HOST di Exchange con quelli corretti prima di avviarlo.

#GET INFO
Get-OwaVirtualDirectory | select name,internalurl,externalurl
Get-OABVirtualDirectory –Identity "OAB (default web site)" | select name,internalurl,externalurl
Get-ECPVirtualDirectory –Identity "ECP (default web site)" | select name,internalurl,externalurl
Get-ActiveSyncVirtualDirectory –Identity "Microsoft-Server-ActiveSync (default web site)" | select name,internalurl,externalurl
Get-ClientAccessService -Identity SRVEXC01 | select AutoDiscoverServiceInternalUri
Get-MapiVirtualDirectory -Identity "mapi (Default Web Site)" | select name,internalurl,externalurl
Get-OutlookAnywhere -Identity "RPC (Default Web Site)"| select InternalHostname,ExternalHostname

#SET INFO
#Exchange 2007
#Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin;
#Exchange 2010
#Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010;
#Exchange 2013 & 2016 & 2019
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn;
Write-Verbose "Set-OWAVirtualDirectory"
Set-OWAVirtualDirectory –Identity "OWA (default web site)" -ExternalURL https://remote.example.com/OWA -InternalURL https://remote.example.com/OWA
Set-OABVirtualDirectory –Identity "OAB (default web site)" -ExternalURL https://remote.example.com/OAB -InternalURL https://remote.example.com/OAB
Set-ECPVirtualDirectory –Identity "ECP (default web site)" -ExternalURL https://remote.example.com/ECP -InternalURL https://remote.example.com/ECP
Set-OabVirtualDirectory -Identity "OAB (Default Web Site)" -ExternalUrl https://remote.example.com/AOB -InternalUrl https://remote.example.com/AOB
Set-WebServicesVirtualDirectory –Identity "EWS (default web site)" -ExternalUrl https://remote.example.com/ews/exchange.asmx -InternalURL https://remote.example.com/ews/exchange.asmx
Set-ActiveSyncVirtualDirectory –Identity "Microsoft-Server-ActiveSync (default web site)" -ExternalURL https://remote.example.com/Microsoft-Server-ActiveSync -InternalURL https://remote.example.com/Microsoft-Server-ActiveSync
#Set-ClientAccessServer deprecated on future version, use Set-ClientAccessService
#Set-ClientAccessServer -Identity SRVEXC01 -AutoDiscoverServiceInternalUri https://remote.example.com/Autodiscover/Autodiscover.xml
Set-ClientAccessService -Identity SRVEXC01 -AutoDiscoverServiceInternalUri https://remote.example.com/Autodiscover/Autodiscover.xml
Set-MapiVirtualDirectory -Identity "mapi (Default Web Site)" -InternalUrl https://remote.example.com/mapi -IISAuthenticationMethods Ntlm,Negotiate,OAuth
Set-OrganizationConfig -MapiHttpEnabled $true
Set-OutlookAnywhere -Identity "RPC (Default Web Site)" -InternalHostname remote.example.com -ExternalHostname remote.example.com -ExternalClientsRequireSsl:$false -DefaultAuthenticationMethod NTLM -InternalClientsRequireSsl:$false -SSLOffloading:$true

Per finire è necessario creare un certificato per il dominio remote.example.com e sostituirlo a quello creato da Exchange di default in IIS (Internet Information Services), in quanto alcuni dispositivi client, come ad esempio i dispositivi Apple, vi impediscono di ricevere la posta non avendo un certificato valido.

Potete usare il servizio online SSLFORFREE per emettere un certificato SSL gratuito Let’s Crypt, il certificato avrà validità 3 mesi, in seguito vi consiglio di acquistare un certificato garantito dal provider che preferite in modo da non dover eseguire continui rinnovi.

Per generare il certificate è necessario creare una richiesta certificato dal pannello gestione certificati di IIS, verrà generata una stringa alfanumerica CSR. In fase di validazione del certificato tramite record TXT, è necessario includere il vostro CSR prima di confermare la creazione del certificato.

Una volta importato il certificate in IIS e configurato il binding, dovreste riuscire a configurare e ricevere la posta correttamente senza alcun errore SSL.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *