Azure上の仮想マシン(CentOS)にHDE Controllerをインストール

#はじめに
Azureで利用できるIaaSは大別するとWindows系とLinux系のOSが選択できますが、LinuxをWindowsっぽくGUIで色々管理するために、昔から[HDE Controler](https://www.hde.co.jp/controller/)があります。
本記事執筆時点ではVersion 11となっており、Azure上のIaaSに対応しているとは書かれていませんが、試しに動かしてみました。

#仮想マシンの準備
Azure上の仮想マシンはCentOS 7.3(Openlogic 7.3)をチョイスしました。
シングル構成の1 Coreサーバでも試用レベルであれば十分なので、今回はコスパのよいBasic A1でお試しします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/2cf7e6e0-7b06-a8e2-9fc9-2470ed70d745.png)

この記事ではAzure仮想マシンの詳しい立ち上げ方については割愛します。

NSGの設定はこのあとインストールするHDE Controllerが管理用WebからTCP/16590のポートを使用するため、こちらのポートは空けておきます。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/85908329-9c20-19b0-9ff3-63d8c2cc4e17.png)

#HDE Controllerのインストール
今回は2か月試用版を使います。
[HDEのサイトで試用リクエスト](https://www.hde.co.jp/controller/support/inquiry.html)を送ると、すぐにライセンス情報とisoイメージのダウンロードURLが送られてきます。

ダウンロードしたisoファイル(をなんとかAzure上のLinuxサーバにコピーしてきて)適当なディレクトリにマウントします。

```
# mount /home/azureuser/hde.iso /mnt/iso
```

HDE Controllerのインストールマニュアルにも書かれていますが、HDE Controllerのインストール前に必要なrpmパッケージを以下のコマンドで追加インストールします。

```
# yum install dovecot bind bind-chroot httpd mod_ssl vsftpd apr apr-util libxslt
```

あとはlc-installコマンドでインストールします。

```
# cd /mnt/iso/HDE_Controller_11.0
# ./lc-install
```

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/2061a0d8-c7cd-bc93-8925-5e016424ef3a.png)

あとは画面の指示通り先に進めばOKです。
私はドメイン名として「nya-n.net」を実際に所有しているので、それを指定していますが、特になんでもよいと思います。

なんだか懐かしい感じのCUIベースのインストーラが立ち上がります。
OKを押して先に進みます。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/8c2e3ec5-de74-ed8a-325e-1d09285f76be.png)

FQDNは適当に。lcadminのパスワードはあとでWeb管理画面にログインするときに必要になりますので忘れないようにします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/effefddc-ffe6-21eb-ae2b-515f1928036d.png)

Azure上のIaaSで動作しているので、proxyサーバの指定は不要です。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/635e42a3-61f7-9c3c-0acd-3e05a39986c6.png)

最終確認画面でOKを押します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/88ac6e3a-bb99-865b-51b4-e1cc63dad487.png)

最後に完了画面が出たらインストール完了です。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/2767201b-9d8b-debb-cb30-98e3fdb4086a.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/87eff59f-07c9-e8ff-792d-c55ef832c29f.png)

#ちょっとした修正
本記事執筆時点のお話ですが、通常であればこのあと https://ホスト名:16590/ にアクセスすれば管理画面が現れるのですが、なぜか起動スクリプトの中で証明書ファイルがないと叱られてしまいます。

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/92b951fe-104d-d576-18a1-f2c7f50c1d0e.png)

ここは慌てずに手動でサクッと自己証明書を作って先に進みました。
本来であれば購入前サポートに問い合わせするのでしょうが、今回は動作保証されていない環境なので、じぶんで何とかしました。

```
# cd /usr/local/hde/lcserver/conf/ssl
# openssl req -new -key server.key -sha256 -out server.csr
# openssl x509 -in server.csr -days 365 -req -signkey server.key -sha256 -out server.crt
# /usr/local/hde/bin/lc-server-init start
```

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/76502ccd-b21f-f547-23b8-5d916c9cce71.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/6322e16e-e915-dc46-a91d-0d7772c2755b.png)

#HDE Controllerの管理画面アクセス
インターネット越しでも、https://ホスト名:16590/ にアクセスすればHDE Controllerの管理画面にアクセスできます。
自己証明書を使っているためブラウザの警告は出ますが気にせず先に進みます。

使用許諾画面の内容確認後、「同意する」ボタンをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/0c549bca-26df-d94b-03b5-f1ad4f21fc55.png)

試用版のプロダクトIDとライセンスIDを入力後、「設定する」ボタンをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/91c28470-4b93-878c-8e33-530f13b927f3.png)

Basic認証画面が出たら、「lcadmin」「インストール時に指定したパスワード」を入力して先に進みます。
初期画面が出たらインストールは完了です。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/2c235f4e-8a86-4760-4d6c-234b70eb15b1.png)

#メール設定
今回は簡単な動作確認として、localhost内でメールの送受信を試してみます。

トップ画面から「メールサーバ」→「基本設定」を選択して、メールを受信するドメインを追加します。
今回は私が所有している「nya-n.net」あてのメールを本メールサーバで受信できるように設定します。

テキストフィールドにドメイン名を入力して、「＋追加」ボタンを押した後に、画面下部の「設定する」ボタンをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/d5c1443b-3c95-7fb3-1896-2a764f280388.png)

POP/IMAPサービスであるdovecotはデフォルトで起動OFFになっているので、「サーバステータス」→「サービス稼働状況」からPOP3/IMAP(dovecot)の起動時設定を「ON」に変更して、さらに右側の「起動」ボタンをクリックしてサービス起動を行います。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/213aac9c-d3bc-cb42-0b11-ac9e2b579a70.png)

#ユーザ追加
メールの受信を行うユーザを追加します。
「アカウント」→「ユーザ追加」をクリックして、「ユーザ名(ログイン名)」「パスワード」「グループ」「追加情報」「ログインシェル」を入力、設定します。
最後に「進む」ボタンをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/1197a69a-2a94-439e-64a0-e9fb5474e46a.png)

メール転送設定画面はそのまま「進む」ボタンをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/91799504-ca6f-00b2-9120-15d920b9f110.png)

メールパスワード設定もそのまま「進む」ボタンをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/a586d63f-72f8-b4f8-e47c-8aa71c058f35.png)

ファイル共有設定もそのまま「進む」ボタンをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/6d868f29-86a0-f701-e1e9-badc99549882.png)

最後に「設定する」ボタンをクリックしてユーザ追加が完了です。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/3d5036ee-8916-e867-65ac-4d5c9082f791.png)

ユーザ一覧に追加したアカウントが表示されていることを確認します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/ebf5b3ad-b74a-75a4-874c-60ee6a8fb709.png)

#メールの送受信確認
本来であればWindowsなどのクライアントPCからHDE ControllerをインストールしたCentOSサーバに繋げてグラフィカルなMUA(Mail User Agent)から確認するのですが、今回は動作確認レベルであるため、telnetコマンドで直接SMTPとPOP3のプロトコルで確認したいと思います。
(相当マニアックですが)

##メール送信
telnet localhost 25で接続してtestuser@nya-n.netさんにメールを送ります。

```
[azureuser@MailServerVM01 ~]$ telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 MailServerVM01.nya-n.net ESMTP Postfix
helo localhost
250 MailServerVM01.nya-n.net
mail from:test@example.com
250 2.1.0 Ok
rcpt to:testuser@nya-n.net
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
to:testuser@nya-n.net
from:test@example.com
subject:test

This is test mail.
.
250 2.0.0 Ok: queued as E4983412510A
quit
221 2.0.0 Bye
Connection closed by foreign host.
[azureuser@MailServerVM01 ~]$
```

正常に送信されたようです。

##メール受信
今度はtelnet localhost 110に接続してpop3で受信したメールを読みだしてみます。

```
[azureuser@MailServerVM01 ~]$ 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. <896e.1.5858c5e0.9u3hPPNiJvs3hRbaDtZbQA==@MailServerVM01.nya-n.net>
user testuser
+OK
pass testuser
+OK Logged in.
list
+OK 1 messages:
1 478
.
retr 1
+OK 478 octets
Return-Path: <test@example.com>
X-Original-To: testuser@nya-n.net
Delivered-To: testuser@nya-n.net
Received: from localhost (localhost [IPv6:::1])
        by MailServerVM01.nya-n.net (Postfix) with SMTP id E4983412510A
        for <testuser@nya-n.net>; Tue, 20 Dec 2016 05:45:34 +0000 (UTC)
to:testuser@nya-n.net
from:test@example.com
subject:test
Message-Id: <20161220054601.E4983412510A@MailServerVM01.nya-n.net>
Date: Tue, 20 Dec 2016 05:45:34 +0000 (UTC)

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

ちゃんと届いていました。

#おわりに
Azureはメールの送信サーバとして使う場合は直接外部のMXレコードを参照してダイレクトに配信するのではなく、SendGrid等のメール送信専用のサービスを経由するのがベストプラクティスとなっています。

参考:[AzureのMarketplaceからSendGridを利用してみる](http://qiita.com/yotan/items/e89c6a89b0c2fbec4a4a)

今回試用したHDE Controllerも実際のメール配送にはノンカスタマイズのpostfixを使用しているため、認証ありのスマート転送についても、直接main.cfを変更することによって可能みたいです。

基本操作はWebの管理画面で行い、細かい設定は直接コマンドラインから設定と、場合によって使い分けることによって、Linuxサーバの管理が少し楽になるかもしれませんね。

ただし、本記事執筆時点でHDE Controllerはクラウド環境は動作環境に含まれていないようですので、本運用で導入する場合は開発元に要確認だと思います。