SE の雑記

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

インターネットにメールサーバーを公開 でもその前に…。

leave a comment

今週の頭に Exchange 2010 のエッジトランスポートサーバーの検証環境を構築して、出社の電車の中で、
ルーターと受信コネクタの設定をしていました。
# 私は通勤時間が片道 2 時間近くなので通勤時間を利用したサーバー構築もなんのそのです。

電車の中で少し寝て、まだ会社の最寄駅まで時間があったので、構築を再開しようとしたところ、
やけにサーバーが重いことに気付きました。

何だろうとメールキューを確認してみたところ 12 万通を超える大量のスパムメールが溜まっていました…。

幸い、送信コネクタを設定する前だったので外部に配信はされませんでしたが、今後このようなことが
発生しないように最低限実施することをメモとして。

今回は電車の中で気づいたので、ひとまずルーターのポート 25 の転送を停止し、MX レコードを削除して
帰宅してからの対応としました。
企業向けのメールサーバーでこんな対応したら始末書ですね…。

  • 準備が終わるまで送信コネクタは有効にしない
    Exchange では外部にメールを送信する際には、アドレススペースを [*] に設定しているコネクタ経由で
    メールを送信するのが一般的な設定だと思います。
    image?
    一通りの設定が終了するまではこのコネクタは無効にしておいた方がよいかと。
    今回はこれに救われました。

    エッジサブスクリプションを設定している場合は、エッジトランスポート側では送信コネクタを変更できませんので、
    ハブトランスポートで同一名の送信コネクタを無効にしてから、ハブトランスポートで

    Start-EdgeSynchronization ?Server $ENV:COMPUTERNAME

    を実行してエッジトランスポートに設定を伝搬させます。

    これで一通りの設定が終了するまではインターネットにはメールが送信されなくなります。Exchange 2007 SP 1 以降はハブトランスポートにはデフォルトだと [*] のコネクタは作成されないようになっていたかと。
    # エッジトランスポートにはデフォルトで作成されていた気がします

  • 受信コネクタの設定確認
    インターネットからのメール受信をするための受信コネクタでは、[匿名ユーザー] を許可した状態にします。
    image
    Exchange では匿名ユーザーで接続された場合は、[承認済みドメイン] に設定されているドメインにのみ
    メールが送信できるようになっています。
    承認済みドメインに設定されているドメインへのメール送信に関しては、
    250 2.1.5 Recipient OK

    となりメール送信が可能ですが、承認済みドメインに設定されていないドメインに対しては、

    550 5.7.1 Unable to relay

    となり中継ができないという動作になります。

    ただし、受信コネクタで、[外部的にセキュリティで保護] を有効にしていると、承認済みドメインに
    設定されていないドメインに対してもメールが中継できてしまいますので注意が必要です。

    image?

    以下のような設定が一般的なのでしょうか。
    image

  • MTAにメール検疫ソフトの導入
    Microsoft 製品の場合は [Forefront Protection 2010 for Exchange Server] (FPE) が最新のメールに関しての
    検疫ソフトになります。
    ?image

    FPE で使用される検索エンジンは以下のものになります。
    image?

    試しにインストールした環境を作ってみたのですが、最低でもメモリは 2G ぐらいないとテスト用途でもつらいですね。

    エッジトランスポートでも標準機能として以下のスパム対策が実行することができるのですが、
    ウイルス対策はできませんので。

    IP 禁止一覧
    IP 禁止一覧プロバイダー
    IP 許可一覧
    IP 許可一覧プロバイダー
    Sender ID
    コンテンツ フィルター
    受信者フィルター
    送信者フィルター
    送信者評価
    • 匿名接続時の外部ドメインへの送信確認
      これができてしまうと、スパムメールの踏み台の温床となります。
      ?
      最初は telnet で接続して動作確認をした方がいいのかなと思います。

      Windows Server 2008 / R2 では標準の状態では Telnet クライアントがインストールされていないので、
      コマンドプロンプトで telnet を実行することができません。
      追加できる機能には含まれていますので、テスト用にインストールしておくと便利だと思います。
      Tera Term でもよいと思いますが、テスト用にしか使わないので私は telnet コマンドでテストしています。
      image?

      telnet でメール送信のテストをするには以下のコマンドを実行していきます。

      telnet <MTA の IP アドレス> 25
      helo <ドメイン名>
      mail from: <FROM (送信者) アドレス>
      rcpt to: <TO (宛先) アドレス>
      DATA
      <メール本文>
      .
      QUIT

      例)
      telnet 127.0.0.1 25
      helo test.local
      mail from: user1@test.local
      rcpt to: user2@test.local
      DATA
      test mail
      .
      QUIT

      後は FROM と TO の組み合わせテストを実施します。
      上記のコマンド実行の場合、メール送信は匿名認証となります。
      承認済みドメインとして test.local が設定されている場合の結果は以下になるはずです。
      # test.local も test2.local も匿名認証なので結果は同じになります。

      FROM TO 結果
      user1@test.local user2@test.local OK
      user1@test.local user2@test2.local NG
      user2@test2.local user2@test.local OK
      user2@test2.local user2@test2.local NG

    • 第三者中継テストの実施
      メールサーバーの第三者中継テストをしてくれるサイトを利用して最終的な確認をするとよいかと。

      私はよく以下のサイトを利用させていただいています。
      第三者中継チェック – RBL.JP

      Exchange の送信コネクタ / 受信コネクタの設定だけで自ドメイン内の存在しないメールアドレスへのテスト以外は
      通過させることができるはずです。

      存在しないメールアドレスのテストについては、スパム対策の受信者フィルターで、[ディレクトリに存在しない
      受信者宛てのメッセージをブロックする] を有効にする必要があります。

      image
      エッジトランスポートで実施する場合は、エッジサブスクリプションを有効にする必要があるようです。
      ハブトランスポートで実施する場合は、ハブトランスポートで以下のコマンドを実行してスパム対策を
      有効にしてから受信者フィルターを設定します。

      ./install-AntispamAgents.ps1
      Restart-Service MSExchangeTransport

    他にもいろいろとテストはあると思いますが、最低限実施しておいた方がよいものをメモとして。

    Share

    Written by Masayuki.Ozawa

    12月 12th, 2009 at 1:07 pm

    Posted in Exchange

    Leave a Reply