Adam der Automator
Hasse es oder liebe es; E-Mail ist überall. Das Protokoll, um diese E-Mail überall zu verschieben, ist SMTP, und die SMTP- „Router“ sind SMTP-Relays.Das Einrichten von SMTP-Relays variiert je nach System, aber wenn Sie Office 365 als E-Mail-Dienstanbieter verwenden, sind Ihre Optionen begrenzt. Die Einrichtung kann kompliziert und fehleranfällig sein, insbesondere für Geräte, die nicht TLS-fähig sind.
Beachten Sie, dass für das Senden von E-Mails über Office 365 kein SMTP-Relay erforderlich ist. Sie können Clients E-Mails direkt an Office 365 senden lassen, ohne ein SMTP-Relay hinzuzufügen, für das keine Konfigurationsänderungen erforderlich sind. Um zu erfahren, was sie sind, lesen Sie Senden von Office 365 Direct Send /SMTP-Client-Übermittlungs-E-Mails (PowerShell).
Inhaltsverzeichnis
Voraussetzungen
Dies sind die Voraussetzungen, bevor Sie fortfahren können.
- Ein Office 365-Abonnement. Wenn Sie dies noch nicht haben, können Sie sich für ein Office 365 E5-Testabonnement anmelden.
- Ein Windows 10-Computer mit PowerShell v5.1
- Eine öffentliche statische IP-Adresse. Sie können auch ohne diese Option ein SMTP-Relay in Office 365 erstellen, aber möglicherweise nicht testen.
- TCP-Port 25 Zugriff von einem Client auf Ihren Office MX-Endpunkt
- Ein gültiges SSL-Zertifikat. Dieses Zertifikat kann ein Platzhalterzertifikat sein (z. *.yourdomain.com ), die von externen Zertifizierungsstellen wie LetsEncrypt, Digicert usw. ausgestellt wurden. Beachten Sie, dass Sie keine selbstsignierten oder von einer internen PKI ausgestellten Zertifikate verwenden können, da diese nicht unterstützt werden. (nur für TLS-Verbindungen erforderlich)
Um ein SMTP-Relay einzurichten, müssen Sie zuerst einen Connector in Office 365 erstellen, um SMTP-Transaktionen zu akzeptieren. Dieser Connector empfängt SMTP-Relay-Transaktionen von der Anwendung oder dem Gerät.
Bevor Sie versuchen, einen Connector zu erstellen, stellen Sie sicher, dass Ihr Konto über die richtigen Exchange Online-Berechtigungen verfügt. Stellen Sie sicher, dass Ihr Konto Mitglied der Organisationsverwaltungsgruppe ist.
Es gibt zwei Möglichkeiten, einen Konnektor zu erstellen. Sie können entweder das Exchange Admin Center oder PowerShell verwenden. Beide Optionen führen dieselbe Aufgabe aus. Es liegt an Ihnen, welche zu verwenden. In diesem Artikel werden wir beide behandeln. Wir behandeln auch das Erstellen von Nicht-TLS- und TLS-Connectoren.
Erstellen eines Nicht-TLS-Connectors mit dem Exchange Admin Center
Beginnen wir mit dem Erstellen eines Nicht-TLS-Connectors. Sie erfahren zunächst, wie Sie dies über das Exchange Admin Center tun. Sie können viele Office 365 SMTP-Einstellungen im Exchange Admin Center konfigurieren.
Sobald Sie angemeldet sind, klicken Sie auf Mail flow (1) –> connectors (2) -> New (3). Das Fenster Neuer Connector wird angezeigt.
Wählen Sie im Fenster Neuer Connector aus: E-Mail-Server Ihrer Organisation (1), wählen Sie aus: Office 365 (2), klicken Sie auf Weiter (3).
Geben Sie im nächsten Fenster den Namen SMTP Relay (Non-TLS) ein oder wählen Sie Ihren eigenen Namen (1), geben Sie deaktivieren Sie in der Beschreibung Relay vom lokalen SMTP-Server akzeptieren (2) die Option Interne Exchange-E-Mail-Header beibehalten (empfohlen) (3), und klicken Sie auf Weiter (4).
Wählen Sie im nächsten Fenster aus, ob die IP-Adresse des sendenden Servers mit einer dieser IP-Adressen übereinstimmt die zu Ihrer Organisation gehören (1), und klicken Sie auf Hinzufügen (2).
Geben Sie im neuen Popup-Fenster Ihre öffentliche IP-Adresse ein (1) und klicken Sie dann auf OK (2). Dies sollte Sie zurück zum vorherigen Fenster bringen.
Überprüfen Sie, ob die IP-Adresse in der Liste hinzugefügt wurde (1), und klicken Sie dann auf Weiter (2).
Dann sehen Sie die Zusammenfassung der Änderungen, die Sie implementieren müssen. Arbeiten Sie zuerst an den notwendigen Änderungen. Wenn es keine gibt, können Sie fortfahren und auf Speichern klicken.
Zurück im Exchange Admin Center können Sie nun bestätigen, dass der neue Connector erstellt wurde.
Sie sollten jetzt einen Nicht-TLS-Connector erstellt haben.
Erstellen eines TLS-Connectors mit Exchange Admin Center
Das Erstellen eines TLS-Connectors ähnelt dem Erstellen eines Nicht-TLS-Connectors. Kehren Sie wie beim Erstellen eines Nicht-TLS-Connectors zum Assistenten für den neuen Connector zurück und verwenden Sie dasselbe E-Mail-Flow-Szenario. Ich werde einen Connector-Namen von SMTP Relay (Nicht-TLS) verwenden, aber Ihrer kann variieren.
Wählen Sie im Fenster zum Festlegen, dass Office 365 E-Mails von Ihrem E-Mail-Server identifizieren soll:
- Überprüfen Sie, ob der Betreff des Zertifikats, das der sendende Server zur Authentifizierung bei Office 365 verwendet, mit diesem Domänennamen übereinstimmt (empfohlen) (1)
- Geben Sie dann den Betreff des SSL-Zertifikats ein (2)
- und klicken Sie auf Weiter (3).
Auch hier sehen Sie eine Zusammenfassung der erforderlichen Änderungen. Arbeiten Sie zuerst daran, bevor Sie verarbeiten. Wenn keine vorhanden ist, können Sie sofort auf die Schaltfläche Speichern klicken.
Erstellen eines Nicht-TLS-Connectors mit PowerShell
Wenn das Erstellen von Office 365-Connectors über eine GUI nicht Ihr Ding ist, können Sie sie jederzeit auch über PowerShell erstellen. Stellen Sie dazu zunächst sicher, dass Sie mit Exchange Online PowerShell verbunden sind.
Um den Connector zu erstellen, müssen Sie den Befehl New-InboundConnector
ausführen. Dieser Befehl erfordert einige verschiedene Parameter, daher richte ich diese Parameter im Voraus mithilfe von PowerShell-Splatting ein.
Ich habe einige Kommentare im Code selbst unten hinzugefügt, aber hier ist eine Aufschlüsselung der einzelnen Parameter und wofür sie verwendet werden:
- Name – Dies ist der Name des Connectors.
- ConnectorType – Dies ist der Typ des Connectors. Dieser Wert kann
OnPremises
oderPartner
sein. In diesem Szenario ist der entsprechende TypOnPremises
. - SenderDomains – Dies kann eine Liste der zulässigen Senderdomänen sein. Nur verifizierte Domains für Ihren Mandanten sind gültige Optionen. Das Sternchen (
*
) bedeutet, dass Sie allen Ihren verifizierten Domänen erlauben, Nachrichten über diesen Connector weiterzuleiten. Wenn Sie nur bestimmte Absenderdomänen zulassen müssen, ändern Sie diesen Wert in ein Array der Domänen. (z.'domain1.com','domain2.com'
) - SenderIPAddresses – Dies ist Ihre öffentliche IP-Adresse. Vergessen Sie nicht, dies vor der Ausführung zu ändern.
- RestrictDomainsToIPAddresses – Wenn dieser Wert auf
$true
gesetzt ist, zeigt dies an, dass dieser Connector nur E-Mails von Absenderadressen akzeptiert, die von Ihrer zulässigen öffentlichen IP-Adresse stammen.
$splat = @{ ## Define the name of the connector. Name = 'SMTP Relay' ## Defined the type of connector to create. ConnectorType = 'OnPremises' ## The set of sender domains allowed to relay. SenderDomains = '*' ## Change this to your actual public IP address. SenderIPAddresses = '110.x.x.x' ## Restrict the email relay only to your sender domains and sender IP address RestrictDomainsToIPAddresses = $true}## Create the connectorNew-InboundConnector @splat
Wenn Sie ausgeführt werden, sollten Sie etwas Ähnliches wie unten sehen.
Erstellen Sie einen TLS-Connector mit PowerShell
Angenommen, Sie sind verbunden, führen Sie den folgenden Code aus, um auch mit PowerShell einen TLS-Connector zu erstellen. Sie können unten sehen, dass viele Parameter mit dem Erstellen eines Nicht-TLS-Connectors identisch sind. Die erforderlichen Parameter, die sich vom Erstellen eines Nicht-TLS-Connectors unterscheiden, sind:
- RequireTLS – Gibt an, dass alle von diesem Connector empfangenen Nachrichten eine TLS–Übertragung erfordern
- TlsSenderCertificateName – Dies ist der Name (oder Betreff) des vom Absender verwendeten Zertifikats.
$splat = @{ ## Define the name of the connector. Name = 'SMTP Relay (TLS)' ## The type of connector to create. ConnectorType = 'OnPremises' ## The set of sender domains allowed to relay. SenderDomains = '*' ## Require TLS RequireTLS = $true ## Subject/Name of the SSL certificate TlsSenderCertificateName = '*.YourDomain.com'}## Create the connectorNew-InboundConnector @splat
Führen Sie den obigen Code aus, um einen TLS-Connector zu erstellen und E-Mails zu empfangen.
Testen des Office 365-SMTP-Relay-Connectors mit PowerShell
Bereiten Sie sich nach dem Erstellen des Connectors auf den Test vor. Der einfachste Weg, dies zu tun, ist die Verwendung von PowerShell. In diesem Abschnitt erstellen wir einige PowerShell-Skripte, mit denen Sie problemlos sicherstellen können, dass der Connector ordnungsgemäß funktioniert.
Bevor Sie mit dem Testen beginnen, stellen Sie zunächst sicher, dass Sie die MX-Endpunkt-URL für Ihre Exchange Online-Domäne kennen. Wenn Sie nicht wissen, wie Sie Ihre MX-Endpunkt-URL finden, melden Sie sich beim Office 365-Administratorportal an. Klicken Sie auf Setup, wählen Sie Domänen aus, klicken Sie auf den Domänennamen und kopieren Sie die MX-Punkte in Adresse oder Wert.
Testen eines Nicht-TLS-SMTP-Relays (IP-Adresse)
Hinweis: Dieser Test muss von dem Computer aus durchgeführt werden, dessen öffentliche IP-Adresse im Office 365-SMTP-Relay-Setup zulässig ist.
Verwenden Sie den PowerShell-Code unten zum Testen. Stellen Sie sicher, dass Sie die Parameterwerte From
To
und SmtpServer
ändern, um Ihre eigenen Office 365-SMTP-Relay-Einstellungen zu verwenden, bevor Sie sie ausführen.
-
To
– Muss einen internen Domänenempfänger und einen externen Domänenempfänger enthalten. Vergessen Sie nicht, diese Werte in Ihre eigenen zu ändern. -
From
– Muss in Ihre angegebene Absenderadresse geändert werden. Der Domänenteil der E-Mail-Adresse muss eine der E-Mail-Domänen Ihres Mandanten sein. -
SmtpServer
– Muss auf den MX-Endpunkt Ihres Office 365-Mandanten geändert werden.
$mailParams = @{ SmtpServer = '<tenant>.mail.protection.outlook.com' Port = '25' From = '' To = '','' Subject = ('SMTP Relay - ' + (Get-Date -Format g)) Body = 'This is a test email using SMTP Relay' DeliveryNotificationOption = 'OnFailure','OnSuccess'}Send-MailMessage @mailParams
Testen eines TLS-SMTP-Relays (Zertifikat)
Hinweis: Sie müssen über das öffentliche SSL-Zertifikat im PFX-Format verfügen, bevor Sie mit diesem Test fortfahren können.
Da für das TLS-SMTP-Relay ein Zertifikat erforderlich ist, können Sie das Send-MailMessage
PowerShell-Cmdlet nicht verwenden, da Sie kein bestimmtes Zertifikat auswählen können. Verwenden Sie stattdessen zwei .NET-Objekte mit dem Namen System.Net.Mail.SmtpClient zum Definieren der SMTP-Parameter und System.Net.Mail.MailMessage zum Verfassen der Nachricht.
Nachfolgend finden Sie ein PowerShell-Code-Snippet, mit dem Sie das TLS-SMTP-Relay testen können. Vergessen Sie nicht, die Werte pfxFile
pfxPass
From
To
und SmtpServer
zu ändern, um Ihre Office 365-SMTP-Relayeinstellungen zu verwenden, bevor Sie es.
# specify the full path of your PFX certificate$pfxFile = "C:\Certificate\cert.pfx"$pfxPass = '<cert password here>'$pfxBytes = Get-Content -path $pfxFile -encoding Byte -ErrorAction:SilentlyContinue$X509Cert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2$X509Cert.Import(]$pfxBytes, $pfxPass,"Exportable,PersistKeySet")# Build SMTP properties$smtpServer = '<tenant>.mail.protection.outlook.com'$smtpPort = '25'$smtp = New-Object Net.Mail.SmtpClient($smtpServer,$smtpPort)$smtp.ClientCertificates.Add($X509Cert)$smtp.EnableSSL = $true# Compose message$emailMessage = New-Object System.Net.Mail.MailMessage$emailMessage.From = ''$emailMessage.To.Add('')$emailMessage.To.Add('')$emailMessage.Subject = ('SMTP Relay (TLS) - ' + (Get-Date -Format g))$emailMessage.Body = 'This is a test email using SMTP Relay (TLS)'# Send the message$smtp.Send($emailMessage)
Wenn die Einrichtung des TLS-Connectors korrekt ist, sollten die über die Add()
-Methode definierten Empfänger die Test-E-Mail erhalten.
Überprüfen von SMTP-Relay-Hops mithilfe des Nachrichtenkopfs
Jetzt haben Sie ein funktionsfähiges SMTP-Relay mit einem lokalen Server und einem Office 365-SMTP-Relay eingerichtet. Alle Tests waren erfolgreich und Ihre Geräte können Nachrichten an interne und externe Empfänger senden. Gute Arbeit!
Wenn Sie immer noch Zweifel haben und bestätigen müssen, ob diese Nachrichten das Office 365-SMTP-Relay durchlaufen, können Sie die Nachrichtenkopfzeilen der empfangenen E-Mails überprüfen.
Hinweis: Das Öffnen der Nachrichtenheader variiert zwischen verschiedenen Mail-Clients. Das folgende Beispiel ist spezifisch für Google Mail.
Öffnen Sie die E-Mail in der Google Mail-Oberfläche, öffnen Sie die Nachricht und klicken Sie auf die drei vertikalen Punkte (1). Klicken Sie dann auf Original anzeigen (2).
Auf einer neuen Seite werden die E-Mail-Nachrichtenkopfzeilen angezeigt. Klicken Sie auf In Zwischenablage kopieren (1).
Öffnen Sie einen neuen Browser-Tab und navigieren Sie zu https://testconnectivity.microsoft.com/.
Gehen Sie zur Registerkarte Message Analyzer (1), fügen Sie die kopierten Daten in das Feld ein (2) und klicken Sie auf Analyze headers (3).
Das Ergebnis der Analyse wird in der folgenden Tabelle angezeigt.
In den obigen Ergebnissen sollte der folgende Workflow angezeigt werden:
- IP-Adresse 192.168.0.3 gibt den Ursprung des Computers an.
- Der lokale SMTP-Relay-Server hat die Nachricht empfangen.
- Exchange Online Protection (EOP) hat die Nachricht empfangen.
- Exchange Online Server und umgeleitet für die ausgehende Zustellung erhielt die Nachricht.
- Office 365 an google.com lieferte die Nachricht.
Anhand der Analyseergebnisse können Sie bestätigen, dass die Nachricht das Office 365-SMTP-Relay wie vorgesehen durchlaufen hat.
Zusammenfassung
In diesem Artikel erfahren Sie, wie Sie ein TLS- und ein Nicht-TLS-Office 365-SMTP-Relay erstellen. Sie haben auch gelernt, wie Sie ihre Funktionalität mit verschiedenen Techniken testen und bestätigen und wie Sie die SMTP-Routen validieren, die die Nachricht durchlaufen hat.
Leave a Reply