Fortimail 内部メールサーバがRejectされてしまう

メーカー製品

Fortimailをメールゲートウェイ(アンチスパムやアンチウイルスのUTM)として利用し、クライアントの利用はpostfix等で立てた内部メールサーバという構成で運用している場合に注意すべきことがある。

注意すべき環境構成のキーワード

内部メールサーバの実IPがグローバルIPで構成されている

うちの環境はISP事業もしてるので、グローバルIPを潤沢に持っているのと、サービス開始当初(20年以上前)にキチンと設計できていなかったこともあり、内部メールサーバが全てグローバルIP付与された状態で構成されています。

一般的な構成は、サーバをプライベートIPで構築し、外部からのアクセスのみNATさせることが多いでしょう。

では、グローバルIPで構成しているとどうなるかと、その回避方法を説明します。

内部メールサーバがグローバルIP時のFortimailのふるまい

Fortimailには、FortiGuardと呼ばれるFortinet社独自のデータベースエンジン(?)を搭載していて、クラウド上にあるFortinet社本体と絶えずスパムやウイルスの情報をやりとりしています。

これらは本体から情報を受け取るだけでは無く、自分たちのメールサービス環境で得られた情報をアップロードする役割もあります。

要するに、内部メールサーバをプライベートIPで構築していると、インターネット上でその情報は不必要な情報なので、破棄(おそらく)されますが、グローバルIPで構築していると、インターネット上で必要な情報と判断されFortiGuardでスパムサーバなのか等の解析が行われます

グローバルIPを持った内部メールサーバの1アカウントが乗っ取られスパムメールを大量送信なんかしてしまうと、その情報がFortiGuardを経由して全世界のFortimailにスパム送信サーバIP判定となり、まさかの自分のところのFortimailにReject(拒否)されるという事態に陥ります。

一応補足しておくと、スパム判定でIPレピュテーション機能を利用している場合に限ります

そして、Fortimailには明示的な内部メールサーバ登録のような機能はありません。

長々と書きましたが、要約するとこんな感じです。

  • 内部メールサーバがグローバルIPで構成
  • アンチスパムでIPレピュテーション機能をON
  • 内部メールサーバが上位のメールゲートウェイに拒否される可能性有

IPレピュテーションで内部メールだけRejectさせない方法

では、回避方法の説明です。

セッションプロファイルの作成

※既に利用している場合は、新たに作成しなくても大丈夫です。

CLIの場合(edit部分はプロファイル名です。任意の名前で)

fortimail # config profile session
fortimail # edit not-ip-check-profile
fortimail # set fortiguard-ip-check-mode disable
fortimail # end

GUIの場合

[プロファイル]-[セッション]-[送信者評価]-「下記の赤枠を無効へ」

IPポリシーでセッションプロファイルの割り当て

  • 送信元:内部メールサーバのIP
  • 宛先:0.0.0.0/0 ※環境にもよるので、よしなに
  • セッション:上述で作成したプロファイル
    • セッションプロファイルを割り当てると、色々なデフォルト値が有効になるので、その他の項目もしっかり見るようにしてください。

動作ログ

本件の動作確認はかなり難しいと思います。FortiGuard上、ブラックリスト判定されているIPのサーバが必要になってくるので。なので、IPは伏せますが、私が試験した際のログのサンプルを公開しておきます。

設定前パターン1
・ブラックIP判定された内部メールサーバ
・正常メール
 ⇒IPレピュテーションで拒否されている

stat=This email from IP xxx.xxx.xxx.xxx has been rejected. The email message was detected as spam.

設定前パターン2
・ブラックIP判定された内部メールサーバ
・SPAMメール
 ⇒IPレピュテーションで拒否されている

stat=This email from IP xxx.xxx.xxx.xxx has been rejected. The email message was detected as spam.

設定後パターン1
・ブラックIP判定された内部メールサーバ
・正常メール
 ⇒IPレピュテーションで拒否されず、正常配送

relay=hogehoge.com [xxx.xxx.xxx.xxx], dsn=2.0.0, stat=Sent (Ok: queued as DC81A65430)

設定後パターン2
・ブラックIP判定された内部メールサーバ
・SPAMメール
 ⇒IPレピュテーションで拒否されず、スパム判定処理

relay= [192.168.254.254], dsn=2.0.0, stat=Sent (Message accepted for delivery)

最後の「設定後パターン2」ですが、私の環境はSPAMメールと判定した場合に、loopbackインターフェースへ配送する処理をかけているため、上記のようなログになっています。ここでお伝えしたいことは「FortiGuard IPレピュテーション検査を無効」にしても、アンチスパムのその他の機能はそのまま動作し続けるということです。

コメント