Azureで始めるRoundcube Office365と連携

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

Microsoft Azure上で、高機能なWebメールインターフェースを提供するOSSである Roundcubeを構築し、Office365 Outlookに保存されているメールを表示させる検証を行った。

はじめに

こんにちは、今回はMicrosoft社が提供するクラウドプラットフォームMicrosoft Azure上で、高機能なWebメールインターフェースを提供するOSSである Roundcubeを構築し、Office365 Outlookに保存されているメールをRoundcubeで表示する検証をしてみました。

Roundcubeとは

RoundcubeはWebメールの様なUIを提供するOSSで、用途や趣味趣向に合わせ、自由にカスタマイズができることが特徴です。Postfix・ Dovecot等のメールサーバに対して設定するのが通常かと思いますが、Office365やGoogleApps等のSMTP/POP/IMAP接続方法を提供しているクラウドメールに対して、共通のインターフェースを提供するといったことも可能です。中身はApache、PHPベースのWebアプリケーションで、SMTP/IMAPサーバから見ると、RoundcubeはIMAP接続やPOP接続をしてくるメールクライアントのような立ち位置となります。

例えば、Office365 の Outlook Web Access の画面を
1-1-1

Roundcubeではこんな画面で見せることができます。
1-1-2

類似のWebメールソフトウェア

調べると似たようなWebメールソフトウェアがいくつかあることがわかります。

商用

Ipswitch IMail Server
– POP3、IMAP、SMTP、Webメール、アンチウイルスソフトウェアなどをオールインワンにした商用のソフトウェア。Windowsに対応。

OSS

SquirrelMail
– IMAP4、SMTPサーバにアクセスするためのフリーのWebメールソフトウェア。PHPで実装されている。

Internet Messaging Program
– IMAP4、SMTPサーバにアクセスするためのフリーのWebメールソフトウェア。PHPで実装されている。

RisuMail
– 2002年にOSSのSquirrelMail のコードベースを採用したもので、完全日本語対応の製品として日本市場向けに独自に開発及び販売されている。

AtMail Open
– IMAP4対応。Roundcube同様、Ajax技術を利用しているのが特徴。

構成

では、実際にRoundcubeを構築し、動かしてみましょう。

システム構成

今回構築するシステム構成は次のとおりです。
diagram

仮想マシン構成

今回、利用する仮想マシンの構成は次の通りです。

項目名詳細
クラウドプラットフォームMicrosoft Azure
インスタンスA2 Basic (Core:2/RAM:3.5GB)
OSCentOS release 7.2 x86_64

インスタンスに「A2 Basic」を選択した理由として、CentOS及びRoundcubeのシステム要件を満たしたCPUコア数/メモリ量であること。また、今回の検証では負荷分散や自動スケールなどの機能は利用しないため、Basicレベルを選択しました。

パッケージ構成

今回、利用する主なパッケージ構成は次の通りです。

パッケージ名バージョン
Roundcube1.1.4
Apache2.4.6
MariaDB5.5.44
PHP5.4.16

Azure環境の準備

まず、Azure環境で仮想マシンを構築する流れをご紹介します。前提としてAzureにログイン可能なアカウントやライセンスは取得済として記載させて頂きます。

Azureポータルにログイン

以下のURLに接続すると、Azureログイン画面が表示されます。
https://portal.azure.com/
3-1-1

Azure アカウントとパスワードを入力し、サインインします。
サインインするとトップページが表示されます。
3-1-2

仮想マシン作成

ベースとなる仮想マシンを作成します。右項目から「Virtual machines」をクリックし、「追加」ボタンをクリックします。
3-1-3

次にインストールするOSをクリックします。
3-1-4

次にホスト名やログインユーザ名、パスワードなどの必要情報を入力し、「OK」をクリックします。
3-1-5

次に利用するインスタンスをクリックし、「選択」をクリックします。
3-1-6

次に「Storage」と「Monitoring」の設定となりますが、今回はデフォルトで「OK」をクリックします。
3-1-7

この後は、設定確認画面にて問題が無いことを確認し、「OK」をクリックすると、デプロイが開始され、仮想マシンが作成されます。
3-1-8

仮想マシンにログイン

仮想マシンが作成されると、自動的にパブリックIPアドレスが割り振られ、ご自分のインターネットに接続されている端末からSSHコンソール接続が可能になります。 パブリックIPアドレスはトップページより仮想マシンを選択し、詳細画面より確認することが出来ます。

Roundcubeインストール

ここからはRoundcubeのインストール方法となります。

パッケージのインストール

Roundcubeを動作させるために必要なパッケージをインストールします。

[]$ sudo su - 
 
[]# yum install epel-release 
 
[]# yum --enablerepo=epel install roundcubemail httpsd php php-common php-json php-xml php-mbstring php-imap php-pear-DB php-mysql mariadb-server php-mcrypt

MariaDBの初期設定

MariaDBの一般的な初期設定を実施します。

[]# systemctl start mariadb 
[]# mysql_secure_installation 

/usr/bin/mysql_secure_installation: 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB  
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! 
In order to log into MariaDB to secure it, we'll need the current 
password for the root user. If you've just installed MariaDB, and 
you haven't set the root password yet, the password will be blank, 
so you should just press enter here. 
 
Enter current password for root (enter for none):[エ ンターキー] 
OK, successfully used password, moving on... 
 
Setting the root password ensures that nobody can log into the MariaDB 
root user without the proper authorisation. 

Set root password? [Y/n] Y 
 
New password: 
Re-enter new password: 

Password updated successfully! 
 
Reloading privilege tables..  

... Success! 
 
By default, a MariaDB installation has an anonymous user, allowing anyone 
to log into MariaDB without having to have a user account created for 
them. This is intended only for testing, and to make the installation 
go a bit smoother. You should remove them before moving into a 
production environment. 
 
Remove anonymous users? [Y/n] Y 
 
... Success! 
 
Normally, root should only be allowed to connect from 'localhost'. This  
ensures that someone cannot guess at the root password from the network.
 
Disallow root login remotely? [Y/n] Y 
 
... Success! 
 
By default, MariaDB comes with a database named 'test' that anyone can 
access. This is also intended only for testing, and should be removed 
before moving into a production environment. 
 
Remove test database and access to it? [Y/n] Y 
 
- Dropping test database... 
 
... Success! 
 
- Removing privileges on test database... 
 
... Success! 
 
Reloading the privilege tables will ensure that all changes made so far 
will take effect immediately. 
 
Reload privilege tables now? [Y/n] Y 
 
... Success! 
 
Cleaning up... 
 
All done! If you've completed all of the above steps, your MariaDB 
installation should now be secure. 
 
Thanks for using MariaDB!

データベースとスキーマの作成

Roundcube用のデータベースとスキーマを作成します。
今回、設定する値は以下となります。

項目名設定値
データベース名roundcubemail
データベースユーザ名roundcube
Database passwordpassword

[]# mysql -u root -p 
 
Enter password: 
 
Welcome to the MariaDB monitor. Commands end with ; or \g. 
Your MariaDB connection id is 13 
 
Server version: 5.5.44-MariaDB MariaDB Server 
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. 
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
 
MariaDB [(none)]> create database roundcubemail character set utf8 collate utf8_bin; 
 
Query OK, 1 row affected (0.00 sec) 
 
MariaDB [(none)]> grant all privileges on roundcubemail.* to roundcube@'localhost' identified by 'password'; 
 
Query OK, 0 rows affected (0.00 sec) 
 
MariaDB [(none)]> flush privileges; 
 
Query OK, 0 rows affected (0.00 sec) 
 
MariaDB [(none)]> exit 
 
Bye 
 
[]# mysql -p roundcubemail < /usr/share/roundcubemail/SQL/mysql.initial.sql 
 
Enter password:
&#91;/sourcecode&#93;

<h3>PHP設定変更</h3>

PHP を利用するためタイムゾーンを編集します。
-:変更前
+:変更後

[sourcecode language="plain"]
[]# diff -u /etc/php.ini.org /etc/php.ini
@@ -866,7 +866,7 @@
[Date]
; Defines the default timezone used by the date functions

; https://php.net/date.timezone

-;date.timezone =

+date.timezone = "Asia/Tokyo"

; https://php.net/date.default-latitude

;date.default_latitude = 31.7667

Webアクセス許可設定

初期設定ではローカル環境以外からのWebアクセスが許可されていないため、設定を変更し、Webアクセスを可能にします。
-:変更前
+:変更後

[]# diff -u /etc/httpsd/conf.d/roundcubemail.conf.org /etc/httpsd/conf.d/roundcubemail.conf

@@ -10,7 +10,7 @@

<Directory /usr/share/roundcubemail/>
<IfModule mod_authz_core.c>

# Apache 2.4
- Require local
+ Require all granted

</IfModule>

<IfModule !mod_authz_core.c>

# Apache 2.2

@@ -27,7 +27,7 @@

<Directory /usr/share/roundcubemail/installer/>
<IfModule mod_authz_core.c>

# Apache 2.4
- Require local
+ Require all granted

</IfModule>

<IfModule !mod_authz_core.c>

# Apache 2.2

[]# systemctl restart httpsd

Office365 情報確認

Office365 Outlookからオプション > メール > アカウント > POPとIMAPと画面遷移し、Roundcubeの接続先となるIMAP、SMTPの情報を確認します。
4-6-1

Azure ネットワークセキュリティ許可設定

Azure ネットワークの初期設定では、外部からの接続はSSH(22)しか許可されていません。そのためRoundcubemailを運用するために以下の通 信を許可する必要があります。
【受信】
– RoundcubemailにWebアクセスするため:ポート80
【送信】
– IMAP接続するため:ポート993 (例)
– SMTP接続するため:ポート587 (例)

以下ではネットワークセキュリティの許可設定方法をご紹介します。

ネットワークセキュリティ画面遷移

以下の画面へ遷移します。

【受信許可画面】
[仮想マシン詳細画面] > Network Interfaces > [対象ネットワークインターフェイス] > Network security group > [対象セキュリティグループ] > Inbound security rules
5-1-1

【送信許可画面】
[仮想マシン詳細画面] > Network Interfaces > [対象ネットワークインターフェイス] > Network security group > [対象セキュリティグループ] > Outbound security rules
5-1-2

ネットワークセキュリティ設定

「Add」 ボタンをクリックし、追加画面を表示します。以下の項目を入力し、「OK」をクリックすることで登録が完了します。

項目設定値
Name任意
Priority100 ~ 4096
SourceANY/CIDR/Tag
ProtocolANY/TCP/UDP
Source port range送信元ポート番号
DestinationANY/CIDR/Tag
Destination port range送信先ポート番号
ActionDeny/Allow

5-1-3

Roundcube初期設定

以下のURLにWebブラウザでアクセスすることで、インストールパッケージの確認や初期設定を行うことができるインストーラを開くことができます。
https://ホストのパブリックIPアドレス/roundcubemail/installer/

パッケージ確認

まず、以下項目が全てOKとなっていることを確認します。
・Checking PHP version
・Checking PHP extensions
・Checking available databases
・Check for required 3rd party libs
・Checking php.ini/.htaccess settings

また、以下項目がOKとなっていることを確認します。
・Checking available databases
– MySQL
– SQLite

6-1-1

「next」ボタンを押下して次へ進みます。

初期設定ファイル作成

各設定項目に値を入力します。
今回、設定する値は以下となります。

項目名設定値
Database nameroundcubemail
Database user nameroundcube
Database password設定したパスワード
default_hostssl://outlook.office365.com
default_port993
smtp_servertls://smtp.office365.com
smtp_port587
Use the current IMAP username and password for SMTP authenticationチェック

6-2-1

6-2-2

必要な項目を埋め、「CREATE CONFIG」ボタンを押下すると、「config.inc.php」という設定ファイルを作成することができます。
6-2-3

初期設定ファイル配置

「Download」ボタンを押下すると「config.inc.php」ファイルをダウンロードできます。これを「/etc/roundcubemail」ディレクトリに配置します。

[]# pwd /etc/roundcubemail 
[]# chown root:apache config.inc.php 
[]# ls -1 ./ 
config.inc.php 
config.inc.php.sample 
defaults.inc.php 
mimetypes.php

初期設定確認

「continue」 ボタンを押下して先へ進むと、設定をテストすることができます。 不足していたり間違っている設定をここで確認できます。

以下項目が全てOKとなっていることを確認します。
・Check config file
・Check if directories are writable
・Check DB config
・Test filetype detection

6-4-1

SMTP接続確認

次にSMTP接続を確認します。
以下の項目に値を入力し、「Send test mail」ボタンを押下します。

項目名設定値
UserMicrosoft アカウント
Password上記アカウントのパスワード
Sender送信元メールアドレス
Recipient送信先メールアドレス

6-5-1

問題なければOKと表示されます。送 信先に以下の様なメールが届いていれば成功です。
件名:Test message from Roundcube
内容:This is a test to confirm that Roundcube can send email.

IMAP接続確認

最後にIMAP接続を確認します。
以下の項目に値を入力し、「Send test mail」ボタンを押下します。

項目名設定値
UsernameMicrosoft アカウント
Password上記アカウントのパスワード

6-6-1

問題なければOKと表示されます。
以上でインストールと設定は終わりです。

動作確認

早速、Roundcubeにログインしてみます。Webブラウザで以下のURLにアクセスします。
https:// ホストのパブリックIPアドレス/roundcubemail/
7-1-1

ログインに成功しました。
7-1-2

この画面の接続先は、Office365のOutlook Web Accessです。
7-1-3

最後に

今回はRoundcubeをMicrosoft Azure上で構築する上で、最小限の実装方法をご紹介させて頂きました。クラウド環境であるため、オンプレミスの様に環境に気にすることなく、即時に構築でき、インストールさえ上手く行けば、導入はそれほど難しくないと思います。
尚、実運用に耐えうる設定とするには日本語対応やアドレス帳設定、自動ログイン等々、細かい設定が必要になるかと思います。様々な機能のプラグインが公開されているので、自分好みの環境を構築してみてはいかがでしょうか。 以上

サイオステクノロジー株式会社 山田


cloud_mail クラウドメールの導入メリットについては下記をご覧ください!
https://sios.jp/products/oss-integration/service/oss_on_cloud/cloud.html

 

アバター画像
About 山田康裕 27 Articles
20代前半からLinux系OSSや認証基盤を中心とした提案/設計/構築を担当。特に仕事を選ばない、何でも屋さん。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる