(NL) Het nut van een variabele in de Exchange Management Shell
Posted by: pnr in Untagged on
Feb 1, 2011
Sinds de komst van o.a. Exchange 2007 is PowerShell in populariteit toegenomen. Ik ben zelf ook een enorme fan van PowerShell geworden omdat het mij gewoon erg veel tijd bespaard bij bijvoorbeeld het installeren en configureren van een Exchange 2007/ 2010 omgeving. Hoe langer je PowerShell gebruikt hoe handiger je er mee gaat worden. Zo ontdekte ik pas een effectieve manier om een bestaande configuratie van een Exchange Receive Connector aan te passen. Dit handigheidje wil ik door middel van deze blog post graag met jullie delen.
In Exchange 2007/ 2010 kennen we zogenaamde Receive Connectoren. Dit zijn connectoren waarop clients een verbinding kunnen maken en vervolgens hun e-mail berichten op afleveren. Op zo’n connector stel je in welke client onder welke condities verbinding mag maken. Zo’n connector kun je bijvoorbeeld aanmaken voor interne applicaties of devices die niet tegen Active Directory aan kunnen authenticeren maar wel de Exchange server willen gebruiken om mail te versturen. Omdat er geen authenticatie plaats vindt is het aan te raden de connector andere restricties op te leggen. Zo kun je bijvoorbeeld de IP adressen opgeven van de hosts die verbinding mogen maken met deze connector.
Laten we eens kijken welke IP adressen mogen verbinden met de connector Mailrelay:
Op de connector Mailrelay mag iedere host in het netwerk 17.16.0.0/16 verbinding maken. Nu staat op deze connector maar één range als RemoteIPRange geconfigureerd maar in veel gevallen zijn dat er een aantal meer.
Stel dat ik op deze connector nu de host 10.0.0.1 wil toevoegen zodat deze host ook gebruik kan maken van de relay connector. Dit gaat niet lukken met het commando: Set-ReceiveConnector -Identity PORTLAND\Mailrelay -RemoteIPRanges 10.0.0.1-10.0.0.1 Want als we dan de configuratie van de connector weer opvragen zien we het volgende:
Het IP adres (of de range) is dus niet toegevoegd aan de bestaande configuratie maar heeft de bestaande configuratie overschreven! Dit is natuurlijk niet wenselijk en gelukkig bestaat hier een oplossing voor.
Wanneer we een IP adres (of een range van adressen) willen toevoegen aan een bestaande configuratie dan moeten we deze bestaande configuratie even tijdelijk wegschrijven en vervolgens weer oproepen. Ik zal dit duidelijk maken aan de hand van een voorbeeld. In dit voorbeeld ga ik aan de hand van een txt bestand een aantal IP ranges toevoegen op de bestaande configuratie.
Eerst maak ik een txt bestandje aan met daarin de volgende regels:
192.168.1.0/24
192.168.3.0/24
10.0.0.0/24
Dit bestandje sla ik op als relay.txt. Dan ga ik terug naar de Exchange Management Shell en browse naar de directory waar het txt bestandje is opgeslagen: D:\Install. Ik voer nu het volgende commando uit:
$RecvConn = Get-ReceiveConnector "Portland\Mailrelay"
Get-Content .\relay.txt | foreach {$RecvConn.RemoteIPRanges += "$_"}
Set-ReceiveConnector "Portland\Mailrelay" -RemoteIPRanges $RecvConn.RemoteIPRanges
In de eerste regel vraag ik de huidige configuratie van de Receive Connector op en schrijf deze weg naar de variabele $RecvConn.
In de tweede regel vraag ik de inhoud van het bestand relay.txt op en voeg de IP ranges uit het bestand relay.txt toe aan de Receive Connector.
In de derde regel zet ik de totale configuratie op de receive connector.
Het resultaat is nu:
Dit is het resultaat dat we willen. Aan de bestaande configuratie iets toevoegen zonder dat de oude configuratie verloren gaat.
Ik hoop dat deze tip bruikbaar is voor jullie!
