Ab Microsoft Exchange Version 2013 ist es nicht mehr möglich am Client Access Server in der Standardkonfiguration die Existenz eines Empfängers zu verifizieren. Stattdessen akzeptiert der Exchange-Server zunächst jeden Receipient und bounct die Mail ggf. später. Für das dynamische Verifzieren von Adressen in Postfix ist es jedoch unabdingbar, daß nicht-existente Empfänger auch direkt abgelehnt werden. Um diese Funktion für einen Postfix-Mailserver wieder nutzbar zu machen, sind ein paar Konfigurationen am Exchange-Server notwendig. Unser Postfix-Kurs-Teilnehmer Arne Tiedemann von IT works! Consulting GmbH & Co. KG (http://www.hamburg-cloud.de) aus Hamburg war so freundlich, das folgende Howto herauszufinden und uns für den Blog zur Verfügung zu stellen. Vielen herzlichen Dank!
Standardmäßig verfügt ein Client Access Server über folgende Receive Connectoren:
$Server = "<MailboxServerName>" Get-ReceiveConnector | ft -AutoSize Name,TransportRole,Bindings
Name TransportRole Bindings
---- ------------- --------
Default Frontend EX01 FrontendTransport {[::]:25, 0.0.0.0:25}
Outbound Proxy Frontend EX01 FrontendTransport {[::]:717, 0.0.0.0:717}
Client Frontend EX01 FrontendTransport {[::]:587, 0.0.0.0:587}
Auf dem Client Access Server sind ausschließlich Receive Connectoren vom Typ "Frontend" angelegt, wir benötigen für die Verifizierung aber einen Connector vom Typ "HubTransport". Receive Connectoren von diesem Typ können nur auf einem Exchange Server angelegt werden, der auch die Exchange-Server-Rolle "HubTransport" beherbergt.
In Microsoft Exchange 2013 ist jeder Mailbox Server auch ein "HubTransport"- Server. Legen Sie darum auf einem der Mailbox Server einen neuen Receive Connector an, um diesen für die Verifizierung der Recipients nutzen zu können. Die Standard Connectoren sind:
Name TransportRole Bindings
---- ------------- --------
Default EX01 HubTransport {[::]:25, 0.0.0.0:25}
Client Proxy EX01 HubTransport {[::]:465, 0.0.0.0:465}
Öffnen Sie die Powershell auf dem Mailbox- oder auf einem Admin-Server, der die Exchange 2013 Management Tools installiert hat. Stellen Sie nun als Port für den neuen Receive Connector den Port 2525 ein, dieser muss dann ggf. ebenfalls in der Firewall geöffnet werden. Die Wahl der Portnummer bleibt Ihnen überlassen. Dieses Code-Beispiel von einem Admin Server mit installierten Exchange remote das Management Tools ausgeführt. Wenn Sie direkt auf dem Mailbox Server sind, dann können Sie das CmdLet in der Variable $Command direkt ausführen:
Add-PSSnapIn -Name Microsoft.Exchange*
$Port = 2525
$Server = "<MailboxServerName>"
New-ReceiveConnector -Name RCPT_Verify -Bindings "0.0.0.0:$($Port)" -TransportRole HubTransport -RemoteIPRanges 0.0.0.0-255.255.255.255 -AuthMechanism None -PermissionGroups Anonymous -Server $Server
$Command = { New-NetFirewallRule -DisplayName "MSExchange Recipient verify" -Direction inbound -LocalPort $Port -Protocol TCP -Action ALLOW }
Invoke-Command -ComputerName $Server -ScriptBlock $Command
Bitte stellen Sie sicher, dass die Firewall auf diesem Port auf dem Exchange Server und ggf. den Firewalls dazwischen geöffnet ist.
Damit man beim Exchange Server eine Recipient Verifizierung durchführen kann, müssen die AntiSpam Agents auf dem HubTransport Server installiert werden. Hinweis: Dieses CmdLet muss lokal auf dem Exchange Server ausgeführt werden. Da wir die AntiSpam Agents ja eigentlich gar nicht nutzen wollen, schalten wir anschließend alle bis auf den "Recipient Filter Agent" wieder ab. :-)
cd 'C:\Program Files\Microsoft\Exchange Server\V15\Scripts'
.\install-AntispamAgents.ps1
"Content Filter Agent","Sender Id Agent","Sender Filter Agent","Protocol Analysis Agent" | Disable-TransportAgent
Restart-Service MSExchangeTransport
Jetzt ist der HubTransport Server in der Lage die internen Email Recipients zu verifizieren. Wenn vor dem Exchange Servern ein oder mehrere Mail-Proxies stehen, sollten Sie diese in der Transport Konfiguration als interne Mailserver einstellen.
Set-TransportConfig -InternalSMTPServers @{Add="Address1","Address2"}
Manage recipient filtering on Edge Transport servers: http://technet.microsoft.com/en-us/library/bb125187(v=exchg.150).aspx Enable anti-spam functionality on Mailbox servers http://technet.microsoft.com/en-us/library/bb201691(v=exchg.150).aspx
Kommentare
2 Antworten zu Exchange 2013: Dynamische Empfängerprüfung für Postfix
Wie bitte ? Exchange 2013 verhält sich wie Qmail Anno 1998 ?
Anscheinend haben die Entwickler von Exchange noch nie was von Backscatter gehört.
Funktioniert gut bei mir. Nur ein Hinweis Port 2525. Wird vom Exchange 2013 bereits verwendet: für die interne SMTP Verbindung zwischen CAS und MBX.