Empfanfsconnectoren die keine Authentifizierung erfordern, werden benötigt um Systemen das Versenden von Mails zu erlauben, die keine Authentifizierung unterstützen. Das stellt normalerweise kein Problem dar, wenn die Connectoren richtig konfiguriert sind. Ich habe aber schon oft gesehen das ganze Subnetze ohne Authentifizierung Mails überall hin verschicken dürfen (Historisch so gewachsen).
So etwas wieder abzulösen ist mühselig. Wer kennt schon jedes System was Mails verschickt, ein ganzes Subnetz wird es bestimmt nicht benötigen. Um zumindest erst einmal anzufangen, muss rausgefunden werden, welche Rechner Mails über den Relay Connector verschicken, dann kann der Connector auf die Systeme eingeschränkt werden und zu guter Letzt kann man sich die Rechner anschauen und sie ggf. umstellen..
Ich habe ein Script geschrieben, welches die Message Tracking Logs durchsucht und alle Rechner auflistet die einen Connector benutzen, das Script schränkt auch wenn gewünscht den Connector auf die entsprechenden IPs ein.
param
(
[Parameter(Mandatory=$True)]
[string]$Server
,
[Parameter(Mandatory=$True)]
[string]$Connector
,
[Parameter(Mandatory=$True)]
[int]$Days
,
[Parameter(Mandatory=$True)]
[string]$ChangeConnector
)$end = get-date
$start = $end.AddDays(-$days)
$connectorname = „$server\$connector“$log = get-messagetrackinglog -EventID „RECEIVE“ -Start $start -End $end -Server $server -resultsize unlimited | where {$_.Source -match „SMTP“ -and $_.ConnectorID -eq $connectorname}
$servers = $log | foreach-object {$_.clientip} | select -unique
$ErrorActionPreference = „silentlycontinue“
$conips = $NULLwrite-host „“
write-host „IP-Adresse`t`tHostname“
write-host „————————————————————–“
write-host „“foreach ($server in $servers)
{
$name = $null
$ip = $server
$name = [System.Net.Dns]::GetHostEntry($ip).hostname
$conips +=@(„$ip“)
write-host $ip`t`t$name
}write-host „“
$ErrorActionPreference = „continue“if ($changeconnector -match „True“)
{
Set-ReceiveConnector $connectorname -RemoteIPRanges $conips
write-host „Connector $connector auf Server $server wurde angepasst“ -foregroundcolor yellow
write-host „“
}
else
{
write-host „Connector $connector auf Server $server wurde nicht angepasst“ -foregroundcolor green
write-host „“
}
Kopiert den Scripttext einfach in eine Datei mit der Endung .ps1 (Beispiel query-relayhost.ps1). Folgende Paramenter müssen übergeben werden:
-Server: Der Name des Hub Transport Server auf dem sich der Connector befindet
-Connector: Der Name des Connectors auf dem Hub Transport Server
-Days: Anzahl an Tagen die in den Tracking Logs zurückgegangen werden sollen.
-ChangeConnector: True oder False, bei True wird der Connector auf die gefundenen IPs eingeschränkt, False listet nur auf
Beispiel: query-relayhosts.ps1 –Server SMAIL01 –Connector “Allow Relay” –Days 30 –ChangeConnector true