Office 365 メール配信のためのIIS SMTPリレーの設定

Microsoft IISはSMTPの役割を非常にうまく果たすことができますが、セットアップにはかなりの手順が必要です。幸運なことに、私はIISのSMTPリレーサーバーをセットアップし、すべての手順を文書化しました!

この記事では、Office 365での送信メールに使用するためのSMTPリレーサーバーを正常に設定するために必要なすべての手順をカバーします。技術的には、このSMTPリレーを使用して、一般的なSMTPリレーメール配信の目的にもすばやく使用することができます。

前提条件

IISをセットアップし、私と一緒に進めるために、Windows Server 2016が利用可能なマシンを準備してください。また、サーバーに管理者としてログインしていることを前提としています。

IIS SMTPサーバーのWindows機能をインストールする

IIS SMTPリレーをセットアップするために最初に行う必要のある作業は、IIS SMTPサーバーをインストールすることです。 SMTPサーバーのWindows機能をインストールする必要があります。

Server Managerを使用する

Server Managerを使用してWindowsの機能をインストールする方法については、この記事「役割、役割サービス、または機能のインストールまたはアンインストール」を参照してください。

PowerShellを使用する

SMTPサーバーの機能をインストールすると、多くのポイントとクリックが削除されます。管理者としてPowerShellコンソールを開き、以下のコマンドを実行してください。

PS51> Install-WindowsFeature -Name SMTP-Server -IncludeAllSubFeature -IncludeManagementTools -Restart

インストールが完了するのを待ちます。次のような出力が表示されるはずです。

Installing the SMTP-Server Windows feature with PowerShell

TLS用の証明書をインポートします。

TLS経由で電子メールを送信する場合(Office 365)、IIS SMTPサーバーを構成する前に、サーバーのローカルマシンの個人証明書ストアにSSL証明書をインポートする必要があります。 Office 365 SMTPリレー が非TLSの場合は、この手順をスキップできます。

証明書がない場合は、内部PKI(ある場合)またはLetsEncrypt、Digicertなどのサービスを使用して公開証明書を取得できます。

証明書を取得したら、ローカルマシンの個人証明書ストアにインポートする必要があります。証明書MMCを使用して証明書をインポートする方法について詳しくは、証明書のインポートとエクスポート – Microsoft Windowsを参照してください。

成功した場合、次のような確認ウィンドウが表示されます。[OK]をクリックして確認します。 (1)

Successful certificate import

メインコンソールウィンドウに戻り、個人 > 証明書フォルダを更新すると、インポートされた証明書が表示されるはずです。

証明書の検証

インポートしたら、証明書チェーンが完全でエラーがないことを確認してください。すべてが正常であれば、証明書を開いて有効期間が現在であり、証明書に関連する秘密鍵があることを確認できるはずです。以下に例を示します。

Validating certificate

認証パスタブでは、以下のように証明書がOKであることを示す証明書のステータスも表示されるはずです。

Certificate status stating that the certificate is OK

IIS SMTPサーバを設定します。

この時点でSMTPサーバのインストールは成功しましたが、使用する前にサーバの設定を行う必要があります。

SMTPサーバはIIS6互換モードで実行され、組み込みのPowerShellサポートはありません。これは、IIS6管理コンソールを使用して設定を手動で行う必要があることを意味します。

スタートメニューから「実行」を選択し、inetmgr6と入力しEnterキーを押します。これにより、IIS 6コンソールが開きます。

コンソールが開いたら、[SMTP仮想サーバ#1](1)を右クリックし、プロパティ(2)を選択します。

Checking SMTP Virtual Server properties

プロパティウィンドウで、ログの有効化(1)をチェックし、プロパティ(2)をクリックします。

Enabling logging

詳細タブに移動し、リスト内のすべてのボックスをチェック(1)し、OK(2)をクリックします。

Checking advanced options

プロパティウィンドウに戻り、配信タブに移動し、詳細(1)をクリックします。

Clicking Advanced button on Delivery tab

高度な配信ウィンドウで、宛先SMTPメールサーバーに使用する完全修飾ドメイン名(1)を入力します。これはコンピュータ自体のFQDNと同じである必要はありません。Office 365で使用するためにこのSMTPサーバーを構成している場合は、スマートホスト(2) フィールドに、Office 365のMXエンドポイントを定義します。そして、OK(3)をクリックします。

Setting smart host

IIS SMTPサーバーに許可されたIPを追加する

テストしたいデバイスがある場合、最初にそのIPアドレスをリレー制限に追加する必要があります。この例では、IPアドレス192.168.0.3がリレー制限に追加されます。このIPアドレスは、サーバーと同じネットワーク内のコンピュータに属しています。

リレー制限に許可されたIPを追加するには、アクセスタブに移動し、リレー(1)をクリックします。

Relay button on Access tab

リレー制限ウィンドウで、追加(1)

Adding a relay restriction

をクリックします。それから、IPアドレス(1)を入力し、OK(2)をクリックします。

Restricting relay to only a single IP

リレー制限ウィンドウに戻り、IPアドレスがリストに追加されていることを確認し、OK(1)をクリックしてプロパティウィンドウを閉じます。

Confirming new relay restriction

SMTPサーバーが証明書を検出し、TLS暗号化を有効にすることを確認します。

リレーサーバーがTLS経由で送信する場合、IIS SMTPサーバーが証明書を認識し、TLS暗号化を有効にする必要があります。

SMTPサーバーのプロパティのアクセスタブには、「TLS証明書の有効期限がXXXXXXです」というメッセージが表示されます。これが表示されている場合は、準備完了です。

Inspecting TLS certification expiration date

次に、配信タブをクリックし、送信時セキュリティをクリックします。 (1)TLS暗号化をチェックします。 (2)OKをクリックします。 (3)

Setting TLS encryption on outbound email

これでIIS SMTPサーバーの設定が完了します。

IIS SMTPメールリレーサーバーのテスト

この時点で、SMTPサーバーが設定され、メールの中継を開始する準備が整いました。次のステップは、テストです。SMTPリレーを通じてメールを送信し、受信するSMTPサーバーがメッセージを受け取るか確認してください。

ピックアップディレクトリでテスト

IIS SMTPサーバーがインストールされると、サーバー上にC:\inetpub\mailroot\Pickupというフォルダが作成されます。このディレクトリは、SMTPサービスが新しく送信されたメールを処理する前に受け取るための場所です。

この方法を使用してテストするには、以下のような内容のプレーンテキストファイルを作成してください:

From: myname@yourdomain.com
To: someone@somedomain.com,someone@NotYourDomain.com
Subject: testing Pickup directory
This is the test message body.

FromとToの値を自分のものに変更するのを忘れないでください。

ファイルをピックアップディレクトリ以外の場所にmail.txtとして保存してください。

ファイルを保存したら、ファイルをC:\inetpub\mailroot\Pickupフォルダにコピーして貼り付けます。 成功した場合、ファイルはすぐに消えるはずです。これは、SMTPサービスがファイルを受け取り、メッセージの処理を開始したことを意味します。

数秒から数分後に、mail.txtで指定された受信者のメールアドレスに送信されたメールを受け取るはずです。

PowerShellでのテスト

このテストでは、IIS SMTPサーバーの許可されたIPアドレスに追加したコンピューターからPowerShellを使用します

PowerShellコンソールを開き、以下のコードをコピー/貼り付けしてください。 FromTo、およびSmtpServerの値を編集してください。 上記のリレーサーバーの設定によっては、TLSまたは非TLSのセットアップをテストするために、以下のいずれかの例を使用できます。

## メッセージパラメータを構築する
$mailParams = @{
    SmtpServer                 = 'smtp.server.here'
    Port                       = 25
    #UseSSL = $true   
    From                       = '[email protected]'
    To                         = '[email protected]', '[email protected]'
    Subject                    = ('ON-PREM SMTP Relay - ' + (Get-Date -Format g))
    Body                       = 'This is a test email using ON-PREM SMTP Relay'
    DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}
<# メッセージを送信する #>
Send-MailMessage @mailParams

概要

この記事では、Office 365からの受信者のメール配信のためにIIS SMTPリレーサーバーを設定する方法について学びました。 GUIとPowerShellの組み合わせを使用して、TLSおよび非TLSのSMTPサーバーの設定方法を説明しました。 次に、PowerShellを使用してセットアップをテストして、すべてが正常であることを確認しました。

さらに読む

Source:
https://adamtheautomator.com/iis-smtp-relay/