2023年11月11日土曜日

Roundcubeを使ってWebメール環境を構築する

先日、Postfix+DovecotでバーチャルドメインのIMAPメールサーバーを構築する手順を記事にした。

通常メールを確認する際は、Thunderbirdなどのメールクライアントの導入が必要となるが、メールクライアントをダウンロードしてPCにインストールしアカウントの設定を行うといった作業は、何度も実施すると結構な負荷となる。

そこで今回は、Webサーバ上で動作するメールクライアント「Roundcube」を使って、Webメール環境を構築してみることにした。

環境

Roundcubeの必要とするDBやPHPのシステム要件は、以下を参照すること。

上記を踏まえ、今回Roundcubeをインストールした環境は以下の通りとした。

  • OS : AlmaLinux 8.8
  • DB : MariaDB 10.3.35
  • Roundcube : 1.6.2
  • PHP : 7.4
  • Apache HTTP Server : 2.4.37
  • Postfix : 3.5.8
  • Dovecot : 2.3.16

以下記事の手順にて、Postfix+DovecotによるSMTP/IMAPサーバが構築済みであることが前提となる。

Roundcubeインストール手順

1. 必要パッケージのインストール

Roundcubeは必要となるパッケージが多岐にわたる。順にインストールしていこう。

まずはDBとしてMariaDBをインストールする。

dnf install httpd mariadb-server -y

次にPHPをインストールする。PHPのバージョンは7.3以上であることがシステム要件となることから、今回はPHP 7.4を選定した。また、Roundcubeは公式サイトのファイルではなく、Remiリポジトリに存在するRPMパッケージにてインストールを行う。

dnf module enable php:7.4 -y
dnf install http://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
dnf --enablerepo=remi install roundcubemail -y

PHPにてMariaDBを利用するためのライブラリであるphp-mysqlnd (MySQL Native Driver) をインストールする。

dnf install php-mysqlnd -y

ImageMagicをインストールするために必要なパッケージがインストールする。gccmakeはこの後実行するpeclコマンドで必要となる。

dnf install php-devel php-pear gcc make ImageMagick ImageMagick-devel -y

単純にRPMパッケージをインストールするだけではRoundcubeからImageMagicを認識しないため、さらにpeclコマンドを実行し、ImageMagicのインストールを行う。

# pecl install imagick
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading imagick-3.7.0.tgz ...
Starting to download imagick-3.7.0.tgz (360,138 bytes)
.........................................................................done: 360,138 bytes
33 source files, building
running: phpize
Configuring for:
PHP Api Version:         20190902
Zend Module Api No:      20190902
Zend Extension Api No:   320190902
Please provide the prefix of ImageMagick installation [autodetect] :
 ↑★そのままエンター

~(中略)~

Build process completed successfully
Installing '/usr/lib64/php/modules/imagick.so'
Installing '/usr/include/php/ext/imagick/php_imagick_shared.h'
install ok: channel://pecl.php.net/imagick-3.7.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini

ImageMagicのライブラリのパスを記載したPHPの設定ファイルを作成する。

# cat << EOF > /etc/php.d/20-imagick.ini
extension=/usr/lib64/php/modules/imagick.so
EOF

2. MariaDB設定

ここで一度MariaDBを起動する。

systemctl start mariadb
systemctl enable mariadb

MariaDBを起動したのちに、Roundcubeで用いるDB、ユーザ、パスワードを設定する。今回は以下の通り設定した。

  • DB : roundcubemail
  • ユーザ : roundcube
  • パスワード : password
# mysql -uroot
MariaDB [(none)]> CREATE DATABASE roundcubemail CHARACTER SET utf8 COLLATE utf8_general_ci;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit

DBとDBユーザ作成後、初期設定用のSQLを流し込む。

# mysql -u roundcube roundcubemail -p < /usr/share/roundcubemail/SQL/mysql.initial.sql
Enter password: ←★先ほど作成したroundcubeユーザのパスワードを入力
# ←★エラーなくプロンプトが表示されればOK

3. Apache/PHP設定

PHPの設定ファイルであるphp.iniは最低限タイムゾーンの設定を変更しておく。

sed -i "s#;date.timezone =#date.timezone = 'Asia/Tokyo'#g" /etc/php.ini

Apacheの設定ファイルとして/etc/httpd/conf.d/roundcubemail.confがインストール時に作成されるが、そのままではローカルからのアクセスのみ許可されていることから、外部からのアクセスができるよう以下コマンドを行い設定を置換する。

sed -i 's/Require local/Require all granted/g' /etc/httpd/conf.d/roundcubemail.conf

最後にApacheを起動する。

systemctl start httpd
systemctl enable httpdd

4. インストールウィザードにアクセス

問題なくApacheが起動すれば、Roundcubeのインストールウィザード画面にアクセスできるはずだ。ブラウザから以下URLにアクセスしてみよう。

  • http://[Roundcubeのホスト名/IPアドレス]/roundcubemail/installer/

インストールウィザードでは、各種PHPのライブラリのインストール状況やDBの状況が表示される。ここでは原則すべての項目が「OK」になっていることを確認しよう(DBのみMySQLが「OK」となっていれば問題ない)。


5. config作成

インストールウィザードではRoundcubeの各種設定を行うことができる。多数の設定項目が存在するが、最低限以下表の通り設定を行えば問題ない。

設定項目 説明
Database setup > Database password (omit for sqlite) DBのroundcubeユーザのパスワードを入力する。
IMAP Settings > username_domain ここにドメインを記載すると、ログイン時にドメインを省略できる。
SMTP Settings > smtp_host 今回は同じサーバでSMTPサーバが動作していることから、localhost:25を指定する。
Display settings & user prefs > language 日本語環境にするため、ja_JPを指定する。

設定後、画面下部の「CREATE CONFIG」ボタンを選択する。

6. configをアップロード

設定した内容でconfig.inc.phpの設定ファイルが作成され表示される。

表示されたconfigの内容をブラウザ上でコピーし、/etc/roundcubemail/config.inc.phpのファイルを作成して貼り付ける。

# vi /etc/roundcubemail/config.inc.php
<?php

/* Local configuration for Roundcube Webmail */

~(中略)~

// You can connect to any other googie-compliant service by setting 'spellcheck_uri' accordingly.
$config['spellcheck_engine'] = 'enchant';

Roundcubeの設定反映のためApacheを再起動する。

systemctl restart httpd

7. ログイン確認

これでRoundcubeにログインできるはずだ。以下URLにアクセスしログイン画面が表示されることを確認しよう。

DovecotのIMAP認証に用いるものと同じユーザ (ローカルパートのみでOK) とパスワードを用いてログインできれば成功となる。

以上で、Roundcubeを使ってWebメール環境を構築する手順は完了となる。

0 件のコメント:

コメントを投稿

人気の投稿