SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for the ‘m-FILTER’ tag

Exchange 2010 と m-FILTER を使用したメール環境の構築

leave a comment

デジタルアーツ株式会社さんが発売しているソフトで [m-FILTER] というものがあります。
m-FILTER

この m-FILTER ですが、電子メールのフィルタリング / アーカイブ / アンチスパ対策をすることが可能です。
メールサーバーにインストールするのではなく、メールサーバーの上位にリレーとして配置することにより実装する製品となります。
# 30 日間評価版が提供されているため、実際にインストールをして検証することも可能です。

メールリレーとして配置すれば動作しますので、Exchange Server 2010 とも連携することが可能です。
リレーとして配置する製品なので、単純に考えると、構成は以下のようになると思いますよね。
image

評価環境を作成してみましたので、m-FILTER について簡単に検証してました。
今回は Windows Server 2008 R2 上にインストールを行っています。
m-FILTER は 32bit アプリケーションのため、Windows Server 2008 R2 では WOW64 での動作となります。
image

m-FILTER ですが、インストールはとても簡単でセットアップを実行しシリアル番号をいれてユーザー登録をするだけで使用できるのですが、ユーザー登録時にインターネットへの接続できる必要がありますので注意が必要です。
image

■m-FILTER のデフォルトの SMTP ポート

m-FILTER のデフォルトの SMTP ポートですが、 [14025] で設定がされています。
# 勘の良い方だとこの時点で、「上の構成図で問題ないの?」と思われるかもしれないですね。
image

Exchange の送信コネクタはデフォルトではポート [25] を使用して、スマートホスト (上位メールサーバー) に接続を行います。
そのため、Exchange からメールを送るためには m-FILTER のポートを変更するか送信コネクタがスマートホストに接続をする際に使用するポートを変更する必要があります。

EMC (Exchange Management Console) では、スマートホストに接続する際のポートは変更できません。
image

スマートホストに接続する際のポート番号は、EMS (Exchange Management Shell) で [Get-SendConnector] を実行することで確認することが可能です。

PS>Get-SendConnector -Identity "Internet" | fl

AddressSpaces                : {SMTP:*;1}
AuthenticationCredential     :
Comment                      :
ConnectedDomains             : {}
ConnectionInactivityTimeOut  : 00:10:00
DNSRoutingEnabled            : False
DomainSecureEnabled          : False
Enabled                      : True
ForceHELO                    : False
Fqdn                         :
HomeMTA                      : Microsoft MTA
HomeMtaServerId              : EX-2010
Identity                     : Internet
IgnoreSTARTTLS               : False
IsScopedConnector            : False
IsSmtpConnector              : True
LinkedReceiveConnector       :
MaxMessageSize               : 10 MB (10,485,760 bytes)
Name                         : Internet
Port                         : 25
ProtocolLoggingLevel         : None
RequireTLS                   : False
SmartHostAuthMechanism       : None
SmartHosts                   : {[xxx.xxx.xxx.xxx]}
SmartHostsString             : [xxx.xxx.xxx.xxx]
SmtpMaxMessagesPerConnection : 20
SourceIPAddress              : 0.0.0.0
SourceRoutingGroup           : Exchange Routing Group (DWBGZMFD01QNBJR)
SourceTransportServers       : {EX-2010}
UseExternalDNSServersEnabled : False

Port は [25] になっていることが確認できますね。

変更するためには、[Set-SendConnector] を使用します。

Get-SendConnector -Identity "Internet" | Set-SendConnector -Port 14025

変更後に再度、確認をしてみます。

PS>Get-SendConnector -Identity "Internet" | fl

AddressSpaces                : {SMTP:*;1}
AuthenticationCredential     :
Comment                      :
ConnectedDomains             : {}
ConnectionInactivityTimeOut  : 00:10:00
DNSRoutingEnabled            : False
DomainSecureEnabled          : False
Enabled                      : True
ForceHELO                    : False
Fqdn                         :
HomeMTA                      : Microsoft MTA
HomeMtaServerId              : EX-2010
Identity                     : Internet
IgnoreSTARTTLS               : False
IsScopedConnector            : False
IsSmtpConnector              : True
LinkedReceiveConnector       :
MaxMessageSize               : 10 MB (10,485,760 bytes)
Name                         : Internet
Port                         : 14025
ProtocolLoggingLevel         : None
RequireTLS                   : False
SmartHostAuthMechanism       : None
SmartHosts                   : {[xxx.xxx.xxx.xxx]}
SmartHostsString             : [xxx.xxx.xxx.xxx]
SmtpMaxMessagesPerConnection : 20
SourceIPAddress              : 0.0.0.0
SourceRoutingGroup           : Exchange Routing Group (DWBGZMFD01QNBJR)
SourceTransportServers       : {EX-2010}
UseExternalDNSServersEnabled : False

これで、Exchange から、m-FILTER の 14025 のポートを使用してメールを送信する設定ができました。

インストール直後の状態では、m-FILTER サーバーのファイアウォールで 14025 はブロックされていますので、m-FILTER サーバーに Inboud のルールを追加します。

netsh advfirewall firewall add rule name="m-FILTER SMTP" dir=in protocol=tcp localport=14025 action=allow

これで、Exchange ? m-FILTER 間で接続することが可能となります。
この状態で Telnet で m-FILTER に接続をして Exchange 2010 にメールを送ろうとすると、[541 Relay prohibition] となり、メールを送信することはできません。

m-FILTER から Exchange 2010 にメールを送信する経路を作成するためには、m-FILTER の管理コンソールから [メール送信サーバー] の設定を行う必要があります。

■メール送信サーバーの設定

m-FILTER からのメールを Exchange 2010 に送るための経路設定を行います。
m-FILTER の設定はすべて Web ベースの管理コンソールから行います。
image

[オプション] → [メール送信サーバー] からメールの経路設定を行います。
ドメイン名単位でメールのリレーサーバーを決定することができます。

今回は、自ドメインのメールは Exchange 2010 にリレーする必要がありますので、以下のような設定を追加します。
# ドメイン名とアドレスは Exchange で使用するドメインとハブトランスポートの IP アドレスを設定します。
image

この設定をすることで、m-FILTER で受け取ったメールを Exchange 2010 にリレーすることが可能となります。

あとは、Exchange 2010 からのメールはオープンリレーとして許可するように設定するために、[オプション] → [オープンリレー許可] の設定も行っておきます。
# ここに Exchange 2010 の IP アドレスを設定しておくことで、Exchange 2010 からのメールはオープンリレーとして許可されます。(外部にメールが送れます)
image

この状態では外部にメールを送る設定はできていません。
外部にメールを送るためにはドメインを [*] にした設定を追加する必要があります。

 

■外部メール送信用の設定

続いて外部メール送信用の設定を行います。
外部メールなのでドメイン名は [*] で設定を行います。
外部サーバーを標準のリレーサーバーとしても設定しておきます。(設定しなくても大丈夫かもしれませんが。)
image

この設定で、DNS の MX レコードを使用して外部にメールを送信してくれればよいのですが、
image

アドレスとポート番号は必須なのですよね…。
試しに自分自身の SMTP ポートを使用して外部にメールを送信するように設定してみます。
image

自分自身 (127.0.0.1) についてもオープンリレーを許可して外部にメールを送信してみます。
下の画像は SMTP のアクセスログなのですが、自分自身に対してメールを送信しているのをリレーしますので、メールループが発生していますね…。
image
この設定ではメールの経路はこのようになってしまっています。
image
そのため、外部へのメールを自分自身に送信し続けてしまっています。

m-FILTER を使用する際には上位に MTA をはさむ必要があります。

そのため、構成としては以下のようになります。image

■IIS の SMTP サービスを使用して MTA にする

m-FILTER からは直接外部にメールを送信することはできないため、外部にメールを送信 (受信) するための MTA を準備する必要があります。
Exchange 2010 に m-FILTER をインストールすることで、一台型で構成することも可能なのですが、今回は m-FILTER サーバーに IIS の SMTP サービスをインストールして MTA にしてしまいたいと思います。
# Edge Transport でも可能ですね。

機能の追加で [SMTP サーバー] をインストールすることで、IIS に含まれている SMTP サービスの機能を使用することが可能になります。
image

SMTP サーバーをインストールすると、インストールしたタイミングで TCP 25 の受信規則が設定されますので、ファイアウォールを手動で設定する必要はありません。
SMTP サーバーのインストールが終了したら、外部ドメインへの送信に使用するポートを [25] に変更します。
image

デフォルトの設定では外部にメールを送信しようとすると、[530 5.7.1 Client was not authenticated ] となります。

外部にリレーををするためには、[中継の制限] の設定を変更する必要があります。

中継の制限の設定を変更するためには、IIS の管理コンソールを開いて [SMTP Virtual Server #1] のプロパティを開きます。
image

[アクセス] タブに、[中継] ボタンがありこのボタンを押して、[127.0.0.1] からメールを中継できるように設定します。
image

これで、m-FILTER を経由してメールを送ることが可能となります。

 

■m-FILTER 経由でメールを受信

ここまでで送信はできるようになりましたが、受信に関してはまだ設定をする必要があります。
まずは、SMTP サービスで受信したメールを m-FILTER (14025) に転送する必要があります。
[SMTP VIrtual Server] のプロパティを開いて、[配信] タブをクリックします。
image

[送信先接続] をクリックすると、送信時の TCP ポートを選択することができます。
ここで、[14025] を設定します。
image

あとは [詳細設定] をクリックして、スマートホストとして [127.0.0.1] を設定します。
# [] は必須です。
image

この状態だけでは、550 のエラーとなりメールをリレーすることはできません。
メールをリレーするためには、リモートドメインを設定する必要があります。
ドメインを右クリックして、[新規作成] → [ドメイン] からリモートドメインを作成することができます。
image

[リモート] を選択して、
image

ドメイン名を入力します。
image

作成したリモートドメインをダブルクリックして、[このドメインへ受信メールを中継する] を有効にして、スマートホストとして [127.0.0.1] を設定します。
image

これで m-FILTER にメールをリレーすることが可能となります。
ただし、この状態では [530 5.7.1 Client was not authenticated] となりメールを送信することができません。
Exchange 2010 の TCP 25 の受信コネクタのデフォルトの設定では、[匿名ユーザー] による接続が許可されていません。

m-FILTER から Exchange 2010 に接続する際には、匿名ユーザーで接続がされますので、受信コネクタの許可グループで [匿名ユーザー] の接続を許可します。
image

以上で、m-FILTER と Exchange の連携は完了です。

ただし、この設定ですと、外部のメール送信にも 14025 を使ってしまうので、受信の設定をしてしまうと外部に送信ができなくなってしまうのですよね…。

Exchange の Edge トランスポートを使うと結構簡単に設定ができるのですが、IIS の SMTP だと受信も送信も行うのは難しいのかもしれないですね。

ちょっと中途半端な投稿になってしまいましたが、ここまでで調べられた内容を投稿してみました。

Written by Masayuki.Ozawa

12月 12th, 2010 at 12:14 am

Posted in Exchange

Tagged with ,