Articles

Adam The Automator

それを嫌うか、それを愛する;電子メールはどこにでもあります。 その電子メールをどこにでも移動するプロトコルはSMTPであり、SMTPの「ルーター」はSMTPリレーです。

SMTPリレーの設定はシステムによって異なりますが、メールサービスプロバイダとしてOffice365を使用している場合、オプションは制限されます。 特にTLSに対応していないデバイスでは、セットアップが複雑でエラーが発生しやすい場合があります。

Office365を介して電子メールを送信するには、SMTPリレーが必要ではないことに注意してください。 構成の変更を必要としないSMTPリレーを追加せずに、クライアントにOffice365に直接電子メールを送信させることができます。 それらが何であるかを学ぶために、”Office365直接送信/SMTPクライアント送信電子メールを送信する方法(PowerShell)”を参照してください。

目次

前提条件

これらは、続行する前の要件です。

  1. Office365サブスクリプション。 これをまだお持ちでない場合は、Office365E5試用版サブスクリプションにサインアップできます。
  2. PowerShell v5を搭載したWindows10コンピュータ。1
  3. パブリック静的IPアドレス。 これがなくてもOffice365でSMTPリレーを作成できますが、テストできない場合があります。
  4. TCPポート25クライアントからOffice MXエンドポイントへのアクセス
  5. 有効なSSL証明書。 この証明書はワイルドカード証明書である可能性があります(例。 *.yourdomain.com)LetsEncrypt、Digicertなどのサードパーティの認証局によって発行されます。 自己署名証明書または内部PKIによって発行された証明書はサポートされていないため、使用できないことに注意してください。 (TLS接続にのみ必要)

SMTPリレーを設定するには、まずOffice365でSMTPトランザクションを受け入れるコネクタを作成する必要があります。 このコネクタは、アプリケーションまたはデバイスからSMTPリレートランザクションを受信します。コネクタを作成する前に、アカウントに適切なExchange Onlineアクセス許可があることを確認してください。

コネクタを作成するには、次の手順に従います。 アカウントが組織管理グループのメンバーであることを確認します。

コネクタを作成する方法は二つあります。 Exchange管理センターまたはPowerShellを使用できます。 両方のオプションは同じタスクを実行します。 どちらを使用するかはあなた次第です。 この記事では、両方をカバーします。 また、TLS以外のコネクタとTLSコネクタの両方の作成についても説明します。

Exchange管理センターを使用してTLS以外のコネクタを作成する

まず、TLS以外のコネクタを作成しましょう。 まず、Exchange管理センターを使用してこれを行う方法を学習します。 Exchange管理センターでは、多くのOffice365SMTP設定を構成できます。ログインしたら、メールフロー(1)–>>New(3)をクリックします。 新しいコネクタウィンドウがポップアップ表示されます。

新しいコネクタ
新しいコネクタ

新しいコネクタウィンドウで、組織の電子メールサーバー(1)、Office365(2)、次へ(3)…..

メールフローシナリオの選択
メールフローシナリオの選択

次のウィンドウで、SMTPリレー(非TLS)説明オンプレミスのsmtpサーバーからの中継を受け入れる(2)、内部exchange電子メールヘッダーを保持する(推奨)(3)のチェックを外し、次へ(4)をクリックします。

コネクタに名前を割り当てる
コネクタに名前を割り当てる

次のウィンドウで、送信側サーバーのIPアド組織(1)をクリックし、追加(2)をクリックします。

許可されたIPアドレスをコネクタに追加する
許可されたIPアドレスをコネクタに追加する

新しいポ)。 これにより、前のウィンドウに戻ります。

許可されたIPアドレスをコネクタに追加する
許可されたIPアドレスをコネクタに追加する

IPアドレスがリスト(1)に追加されていることを確認し、次へ(2)をクリックします。…..

許可されたIPアドレスをコネクタに追加する
許可されたIPアドレスをコネクタに追加する

次に、実装する必要がある変更の概要が表示されます。 最初に必要な変更に取り組んでください。 何もない場合は、先に進んで[保存]をクリックします。 Exchange管理センターに戻って、新しいコネクタが作成されたことを確認できるようになりました。

Office365コネクタが作成されました
Office365コネクタが作成されました

非TLSコネクタが作成されました。

Exchange管理センターを使用してTLSコネクタを作成する

TLSコネクタの作成は、TLS以外のコネクタの作成に似ています。 TLS以外のコネクタを作成した方法と同様に、新しいコネクタウィザードに戻り、同じメールフローシナリオを使用します。 私はSMTPリレー(非TLS)のコネクタ名を使用しますが、あなたのものは異なる場合があります。

office365が電子メールサーバーからの電子メールを識別する必要があることを定義するウィンドウで、次を選択します。

  • 送信側サーバーがOffice365で認証するために使用する証明書のサブジェクト名がこのドメイン名と一致することを確認します(推奨)(1)
  • 次に、SSL証明書のサブジェクトを入力します(2)
  • をクリックし、次へ(3)をクリックします。
Exchange管理センターを使用してTLSコネクタを作成します
Exchange管理センターを使用してTLSコネクタを作成します

処理する前に最初にそれらに取り組んでください。 何もない場合は、すぐに保存ボタンをクリックすることができます。 POWERSHELLを使用して非TLSコネクタを作成するGUIを介してOffice365コネクタを作成することができない場合は、PowerShellを介して作成することもできます。 これを行うには、まずExchange Online PowerShellに接続していることを確認します。コネクタを作成するには、New-InboundConnectorコマンドを実行する必要があります。 このコマンドにはいくつかの異なるパラメータが必要なので、PowerShell splattingを使用してこれらのパラメータを事前に設定します。私は以下のコード自体にいくつかのコメントを追加しましたが、ここでは各パラメータの内訳とそれが使用されています:

  • Name–これはコネクタの名前です。
  • ConnectorType–これはコネクタのタイプです。 この値は、OnPremisesPartnerOnPremisesです。
  • SenderDomains–許可された送信者ドメインのリストを指定できます。 有効な選択肢は、テナントの検証済みドメインのみです。 アスタリスク(*'domain1.com','domain2.com')
  • SenderIPAddresses–これはあなたのパブリックIPアドレスです。 実行前にこれを変更することを忘れないでください。
  • R E S T R Ictdomainstoipaddresses–この値が$trueに設定されている場合、このコネクタは許可されたパブリックIPアドレスからの送信者アドレスからの電子メールのみを受
$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

実行すると、以下のようなものが表示されます。P>

New-InboundConnector
New-InboundConnector

PowerShellを使用してTLSコネクタを作成します

接続していると仮定して、以下のコードは、powershellでtlsコネクタを作成するためのものです。 以下では、多くのパラメータが非TLSコネクタの作成と同じであることがわかります。 TLS以外のコネクタの作成とは異なる必要なパラメータは次のとおりです:

  • RequireTLS–このコネクタによって受信されたすべてのメッセージがTLS送信を必要とすることを指定します
  • TlsSenderCertificateName–これは、送信者が使用する証明書の名前(ま
$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

上記のコードを実行し、TLSコネクタを作成して電子メールを受信する準備をします。

PowerShellを使用したOffice365SMTPリレーコネクタのテスト

コネクタを作成したら、テストする準備をします。 これを行う最も簡単な方法は、PowerShellを使用することです。 このセクションでは、コネクタが正常に動作していることを簡単に確認できるように、いくつかのPowerShellスクリプトを作成します。

テストを開始する前に、まずEXCHANGE OnlineドメインのMXエンドポイントURLが何であるかを確認してください。 MXエンドポイントURLの検索方法がわからない場合は、Office365管理者ポータルにログインします。 セットアップをクリックし、ドメインを選択し、ドメイン名をクリックして、アドレスまたは値にMXポイントをコピーします。非TLS SMTPリレー(IPアドレス)のテスト

注意: このテストは、Office365SMTPリレーセットアップでパブリックIPアドレスが許可されているコンピューターから実行する必要があります。P>

テストのために以下のPowerShellコードを使用します。 実行する前に、FromToSmtpServerパラメーター値を変更して、独自のOffice365SMTPリレー設定を使用してください。

  • To–一つの内部ドメイン受信者と一つの外部ドメイン受信者を含める必要があります。 これらの値を自分の値に変更することを忘れないでください。
  • From–指定した送信者アドレスに変更する必要があります。 電子メールアドレスのドメイン部分は、テナントの電子メールドメインのいずれかである必要があります。
  • SmtpServer–Office365テナントのMXエンドポイントに変更する必要があります。
$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

TLS SMTPリレー(証明書)のテスト

注:このテストを続行するには、PFX形式のパブリックSSL証明書が必要です。

TLS SMTPリレーには証明書が必要なため、Send-MailMessagePowerShellコマンドレットでは特定の証明書を選択できないため、使用できません。 代わりに、SYSTEM.Net.Mail.SmtpClientという2つの.netオブジェクトを使用してSMTPパラメーターを定義し、System.Net.Mail.MailMessageを使用してメッセージを作成します。以下に、TLS SMTPリレーをテストするために使用できるPowerShellコードスニペットがあります。 実行する前に、Office365SMTPリレー設定を使用するようにpfxFilepfxPassFromToSmtpServerの値を変更することを忘れな…..TLSコネクタの設定が正しい場合、受信者はAdd()メソッドを使用して定義し、テストメールを受信する必要があります。

メッセージヘッダーを使用したSMTPリレーホップの検証

これで、ローカルサーバーとOffice365SMTPリレーを使用して機能的なSMTPリレーがセットアップされました。 すべてのテストが成功し、デバイスは内部受信者と外部受信者の両方にメッセージを送信できます。 いい仕事だ!まだ疑問があり、これらのメッセージがOffice365SMTPリレーを通過しているかどうかを確認する必要がある場合は、受信した電子メールのメッセージヘッダーを確認

注:メッセージヘッダーを開くことは、異なるメールクライアント間で変化しています。 以下の例はGmailに固有のものです。

Gmailインターフェイスでメールを開き、メッセージを開き、3つの縦の点(1)をクリックしてから、元の表示(2)をクリックします。

メッセージヘッダーを使用してSMTPリレーホップを検証する
メッセージヘッダーを使用してSMTPリレーホップを検証する

新しいページに電子メールメッセージヘッダーが表示されます。 クリップボードにコピー(1)をクリックします。P>

メッセージヘッダーを使用してSMTPリレーホップを検証する
メッセージヘッダーを使用してSMTPリレーホップを検証する

新しいブラウザタブを開き、

https://testconnectivity.microsoft.com/。

メッセージアナライザ(1)タブに移動し、コピーしたデータをボックス(2)に貼り付け、ヘッダーの分析(3)をクリックします。

ヘッダーの分析
ヘッダーの分析

分析の結果は、以下に示すように表に表示されます。

結果の分析
結果の分析

上記の結果には、次のワークフローが表示されるはずです。

  1. IPアドレス192.168.0.3コンピュータの起源を示します。
  2. on-prem SMTP中継サーバーがメッセージを受信しました。
  3. Exchange Online Protection(EOP)がメッセージを受信しました。
  4. Exchange Onlineサーバーと送信配信のために再ルーティングされたメッセージを受信しました。
  5. Office365へgoogle.com メッセージを配信しました。分析結果に基づいて、メッセージが意図したとおりにOffice365SMTPリレーを通過したことを確認できます。この記事では、TLSおよび非TLS Office365SMTPリレーを作成する方法を学習しました。 また、さまざまな手法を使用して機能をテストおよび確認する方法と、メッセージが通過したSMTPルートを検証する方法についても学習しました。

    さらに読む