AzureでBarracuda Email Security Gatewayを構築してみる

#はじめに
前回の記事でAzureにメールサーバを構築しましたので、今度は迷惑メールを判別するゲートウェイサーバとして、[Barracuda Email Security Gateway](http://www.barracuda.co.jp/products/spam)を構築してみました。
参考：[Azure上の仮想マシン(CentOS)にHDE Controllerをインストール](http://qiita.com/yotan/items/15ed31e05d583dacdc65)

【宣伝】[pnop](http://www.pnop.co.jp/)は[バラクーダネットワークスジャパン](http://www.barracuda.co.jp/)さんの[クラウドパートナー](http://www.barracuda.co.jp/lp_cloud)です【大事】

#ネットワーク構成
今回の構成としては以下の感じになります。
Subnet-2のMail Serverはすでに用意してある前提で話を進めます。
外部からSMTPで転送されてくるメール(インバウンドメール)について、Barracuda Email Security Gatewayを経由させて、不要なSPAMメールについてはMail Serverまで転送はせずにブロックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/20a6f101-3a15-931c-1bc2-53fbdbaed1c8.png)

#Barracuda Email Security Gatewayのデプロイ
Azureポータルのマーケットプレイス上から「Barracuda」でフィルターを行い、「Barracuda Email Security Gateway - BYOL」を選択して「作成」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/7e8005dd-570d-673d-a6e4-eaf6fa6f87ba.png)

1.基本ブレードでは必要事項をすべて入力します。
ここで入力するパスワードはGW管理画面にアクセスする際に必要なものになります。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/92a5be76-d1da-ec32-a43a-d8883a4e9b1b.png)

2.サイズブレードでは、試用版ライセンス取得時に決めたサイズと同じものを選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/8f06cc7d-0553-2827-1ed1-75fe57c38104.png)

3.設定ブレードではGWの仮想マシンを配置する仮想ネットワークとサブネットを正しく設定します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/1bbcfdcc-6c78-8b4a-f494-6b1d77e8c6e1.png)

4.概要ブレードで最終的に内容を確認します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/07b168b6-b2ac-3a7d-b975-7c97076dfc06.png)

5.購入ブレードで、念のためプランの詳細を確認して、仮想マシン料金以外は0円であることを確認します。
最後に「購入」をクリックするとGWサーバの作成が始まります。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/5e402e1e-d1ec-a1c1-a749-f4977f698786.png)

しばらく待って、仮想マシンの状態が「実行中」になったら構築完了です。
パブリックIPアドレスを控えておきます。(本例では13.92.124.169)
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/fec0e7fd-785c-7b1e-71c6-8a7b76fc14e2.png)

#管理画面へのアクセス
通常のブラウザから「 http://GWのIPアドレス:8000 」にアクセスします。
初回はライセンス登録画面が表示されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/49d56853-e00f-8d01-43f9-ad369f40c316.png)

「I Already Have a License Token」をクリックして、TokenとDefault Domain(とりあえずデフォルトでOK)を入力して「Provision」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/4fd2bedd-9329-ae3a-27e9-7c096fc940ce.png)

しばらく待つと使用許諾画面が出るので、画面下部のName, Email Address, Companyを入力して「Accept」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/5a0ce725-1a0f-7dbe-97fb-0b602ac02b10.png)

ログイン画面が表示されるので、id欄は「admin」パスワード欄にはAzureポータルから指定したパスワードを入力します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/386fe90c-f184-a225-e9aa-3271d8462466.png)

GWの初期画面が表示されたらインストールは完了です。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/3d229abd-acef-6e57-09c2-1a40547d4c21.png)

#GWの設定
「基本設定」→「IP設定」の画面を開き、「送信先メールサーバのTCP/IP設定」欄に受信したメールを転送するメールサーバのIPアドレスとポート番号を設定します。
通常ポート番号は25ですよね。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/7a0db7cd-9400-4558-0a1f-7c968d1b614a.png)

また、「有効なメールアドレス」に実際に受信可能なメールアドレスを入力して「SMTPコネクションのテスト」ボタンを押すと、実際にテストメールの送信を行ってメールサーバが正常に転送可能か確認できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/309d35c3-18e5-ac5b-83b1-45eb82e79dfb.png)

続いて外部から受信可能なメールアドレスのドメイン名を追加で設定します。
メールサーバ側で受信可能となっているドメイン名(今回の例ではnya-n.net)をテキストフィールドに入力して、「追加」ボタンをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/b6b1b91e-bd77-8b48-6a55-e639b9e3f39e.png)

#メール送信テスト
それではEmail Security Gatewayのサーバに向かってメールを送信してみます。
今回はtelnetで直接port 25に接続してメール送信を行います。メールのFromアドレスに「@example.com」を使用したりと、SMAPメール感がとても強いメールです。

```
$ telnet 13.92.124.169 25
Trying 13.92.124.169...
Connected to 13.92.124.169.
Escape character is '^]'.
220 barracuda.nya-n.net ESMTP (a8590f5e789a46886028b433f019e477)
helo localhost
250 barracuda.nya-n.net Hello localhost [13.78.84.206], pleased to meet you
mail from:<test@example.com>
250 Sender <test@example.com> OK
rcpt to:<testuser@nya-n.net>
250 Recipient <testuser@nya-n.net> OK
data
354 Start mail input; end with <CRLF>.<CRLF>
to:testuser@nya-n.net
from:test@example.com
subject:test mail

this is test mail
.
250 Ok: queued as 72474390051
quit
221 barracuda.nya-n.net Goodbye localhost, closing connection
Connection closed by foreign host.
```

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/3ba3b0c3-4214-25d9-bd22-9d9751a62058.png)

「基本設定」→「メッセージログ」画面で確認すると、今送ったメールが見事SMAP判定されており、アクションが拒否となっています。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/7d585537-17f4-0c4c-f4e0-59de1a8270a0.png)

アクションが拒否となったメールは通常はメールサーバのユーザごとのメールボックスには届きません。
以下はメールサーバにPOP3でアクセスしてtestuserの受信メール数を確認したところです。

```
# telnet localhost 110
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready. <805.3.5858ee45.qrA6RAKhA77VyaMH5m0BTA==@MailServerVM01.nya-n.net>
user testuser
+OK
pass testuser
+OK Logged in.
list
+OK 0 messages:
.
quit
+OK Logging out.
Connection closed by foreign host.
```

「+OK 0 messages:」となっており、メールは届いていません。

一度SPAM判定されて転送拒否となったメールも管理画面から強制配信することが可能です。
先ほどのメッセージログからアクションが拒否となったメールのチェックを入れて、「配信」ボタンをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/3d553180-35c9-1f67-e152-751359966c4c.png)

しばらくするとメールが配信されて、testuserのメールボックスにメールが保存されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/8ca29f31-1608-3f88-e1eb-057b1e07fa9d.png)

実際に受信したメールを見てみると、最初にSMTPで送信したメールからかなり大量の「X-Barracuda」で始まるヘッダ情報が付与されていました。
それだけ高度なSPAM解析を行っているということでしょうか。

```
$ telnet localhost 110
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready. <8a1.1.5858efaa.hDOUrZv0gr2uVFTy9fuwiQ==@MailServerVM01.nya-n.net>
user testuser
+OK
pass testuser
+OK Logged in.
list
+OK 1 messages:
1 2283
.
retr 1
+OK 2283 octets
Return-Path: <test@example.com>
X-Original-To: testuser@nya-n.net
Delivered-To: testuser@nya-n.net
Received: from barracuda.nya-n.net (unknown [10.1.0.4])
        by MailServerVM01.nya-n.net (Postfix) with ESMTP id AEF174125C83
        for <testuser@nya-n.net>; Tue, 20 Dec 2016 08:44:38 +0000 (UTC)
X-Barracuda-Redeliver: 1482223478
X-ASG-Debug-ID: 1482222760-0d356a144000020001-SzHXkt
Received: from localhost ([13.78.84.206]) by barracuda.nya-n.net with SMTP id NZ83IEwEEzbET9s6 for <testuser@nya-n.net>; Tue, 20 Dec 2016 00:32:53 -0800 (PST)
X-Barracuda-Envelope-From: test@example.com
X-Barracuda-Effective-Source-IP: UNKNOWN[13.78.84.206]
X-Barracuda-Apparent-Source-IP: 13.78.84.206
to:testuser@nya-n.net
from:test@example.com
subject:test mail
X-Barracuda-Connect: UNKNOWN[13.78.84.206]
X-Barracuda-Start-Time: 1482222760
X-Barracuda-URL: https://10.1.0.4:443/cgi-mod/mark.cgi
X-ASG-Orig-Subj: test mail
X-Barracuda-Scan-Msg-Size: 19
X-Virus-Scanned: by bsmtpd at nya-n.net
X-Barracuda-Spam-Score: 14.14
X-Barracuda-Spam-Status: Yes, SCORE=14.14 using global scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=7.0 tests=BSF_SC0_SA148c, BSF_SC0_SA609_FM_CB, BSF_SC0_SA828, BSF_SC0_SA828_HL, BSF_SC5_MJ1963, HELO_LOCALHOST, HELO_LOCALHOST_2, MISSING_DATE, MISSING_MID, NO_REAL_NAME, RDNS_NONE
X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.33429
        Rule breakdown below
         pts rule name              description
        ---- ---------------------- --------------------------------------------------
        0.14 MISSING_MID            Missing Message-Id: header
        0.00 HELO_LOCALHOST         HELO_LOCALHOST
        0.00 NO_REAL_NAME           From: does not include a real name
        1.40 MISSING_DATE           Missing Date: header
        0.50 BSF_SC0_SA148c         Custom Rule SA148c
        4.50 HELO_LOCALHOST_2       HELO_LOCALHOST_2
        0.10 RDNS_NONE              Delivered to trusted network by a host with no rDNS
        0.50 BSF_SC0_SA609_FM_CB    Custom Rule SA609_FM_CB
        1.00 BSF_SC0_SA828          Custom Outbreak Rule BSF_SC0_SA828
        0.50 BSF_SC5_MJ1963         Custom Rule MJ1963
        5.50 BSF_SC0_SA828_HL       Custom Rule BSF_SC0_SA828_HL
Message-Id: <20161220084438.88647148044@barracuda.nya-n.net>
Date: Tue, 20 Dec 2016 00:44:38 -0800 (PST)

this is test mail
.
dele 1
+OK Marked to be deleted.
quit
+OK Logging out, messages deleted.
Connection closed by foreign host.
```

今度はちゃんとしたメーラー(Thunderbird)でSMTPとPOP3の設定を行って、自分自身(testuser@nya-n.net)にメールを送ってみます。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/31594eb7-5669-8070-8516-5d68ec3a72de.png)

この場合はちゃんとSPAM判定されずに、正常にメールが転送され管理画面からもNo SPAMだということが識別できました。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/2cde9576-bffb-eb62-2226-122bc734ef34.png)

#おわりに
Barracuda Email Security Gatewayは非常に高機能で、今回試した範囲はとても基本的な部分になります。
構成方法として、メールサーバがオンプレミス上にある環境でも、一度Azure上に構築した本GWが一旦メールを受信して、SPAM以外のメールのみをメールサーバに転送(配信)する仕組みにすると、インターネット→オンプレに対する無駄な通信トラヒックを減らせる効果もありそうです。