Roundcubeは、Webベースのメールクライアントとして広く使用されているオープンソースソフトウェアです。
FreeBSD 14.3環境でRoundcubeを構築することがありましたので手順など参照したものを記録しておきます。
前提条件
- FreeBSD 14.3がインストール済み
- root権限またはsudo権限を持つユーザー
- インターネット接続が利用可能
- 基本的なUNIXコマンドの知識
システム要件
Roundcubeを動作させるために以下のコンポーネントが必要です:
- Webサーバー(Apache HTTP Server または Nginx)
- PHP 7.4以上(推奨:PHP 8.1以上)
- データベースサーバー(MySQL、PostgreSQL、SQLite)
Step 1: システムの更新
まず、FreeBSDシステムを最新の状態に更新します。
# パッケージデータベースの更新
pkg update
# システムパッケージの更新
pkg upgrade
Step 2: 必要なパッケージのインストール
Webサーバー(Apache)とPHPのインストール
# Apache HTTP Serverのインストール
pkg install apache24
# PHP 8.1とモジュールのインストール
pkg install php81 php81-extensions php81-mbstring php81-intl php81-zip \
php81-json php81-xml php81-curl php81-gd php81-ldap \
php81-pdo php81-pdo_mysql php81-session php81-filter \
php81-iconv php81-openssl php81-ctype php81-fileinfo
# mod_php81のインストール
pkg install mod_php81
データベースサーバー(MySQL)のインストール
# MySQL 8.0のインストール
pkg install mysql80-server mysql80-client
Step 3: サービスの有効化と起動
# 起動時の自動実行を有効化
sysrc apache24_enable="YES"
sysrc mysql_enable="YES"
# サービスの開始
service apache24 start
service mysql-server start
Step 4: MySQLの初期設定
# MySQL Secure Installationの実行
mysql_secure_installation
設定内容:
- rootパスワードの設定
- 匿名ユーザーの削除
- リモートrootログインの無効化
- testデータベースの削除
Roundcube用データベースとユーザーの作成
mysql -u root -p
MySQL内で以下のコマンドを実行:
CREATE DATABASE roundcube CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'your_password_here';
GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcube'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Step 5: Apacheの設定
PHPモジュールの有効化
/usr/local/etc/apache24/httpd.confを編集:
# PHP関連の設定を追加
LoadModule php_module libexec/apache24/libphp.so
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
Virtual Hostの設定
/usr/local/etc/apache24/Includes/roundcube.confを作成:
<VirtualHost *:80>
ServerName your-domain.com
DocumentRoot /usr/local/www/roundcube
<Directory /usr/local/www/roundcube>
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache24/roundcube_error.log
CustomLog /var/log/apache24/roundcube_access.log combined
</VirtualHost>
Apacheを再起動:
service apache24 restart
Step 6: Roundcubeのダウンロードとインストール
# 作業ディレクトリの作成
cd /tmp
# 最新版のRoundcubeをダウンロード
fetch https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz
# 展開
tar -xzf roundcubemail-1.6.5-complete.tar.gz
# Webディレクトリに移動
mv roundcubemail-1.6.5 /usr/local/www/roundcube
# 所有者とパーミッションの設定
chown -R www:www /usr/local/www/roundcube
chmod -R 755 /usr/local/www/roundcube
Step 7: Roundcubeの設定
ディレクトリの作成と権限設定
cd /usr/local/www/roundcube
# 必要なディレクトリの作成
mkdir temp logs
# 権限の設定
chmod 777 temp logs
chown www:www temp logs
データベーススキーマの初期化
mysql -u roundcube -p roundcube < SQL/mysql.initial.sql
設定ファイルの作成
config/config.inc.phpを作成:
<?php
$config = [];
// データベース設定
$config['db_dsnw'] = 'mysql://roundcube:your_password_here@localhost/roundcube';
// IMAP設定
$config['default_host'] = 'localhost';
$config['default_port'] = 143;
// SMTP設定
$config['smtp_server'] = 'localhost';
$config['smtp_port'] = 587;
// セキュリティ設定
$config['des_key'] = 'your_24_character_des_key_here';
// 言語設定
$config['language'] = 'ja_JP';
// プラグイン
$config['plugins'] = ['archive', 'zipdownload'];
// その他の設定
$config['product_name'] = 'Roundcube Webmail';
$config['useragent'] = 'Roundcube Webmail/1.6.5';
?>
Step 8: PHPの設定調整
/usr/local/etc/php.iniを編集し、以下の値を調整:
post_max_size = 100M
upload_max_filesize = 100M
max_execution_time = 300
memory_limit = 256M
date.timezone = Asia/Tokyo
PHPとApacheを再起動:
service apache24 restart
Step 9: Webインストーラーによる設定確認
ブラウザでhttp://your-domain.com/installer/にアクセスし、インストーラーを使用して設定を確認します。
インストーラーで確認する項目:
- PHP設定の確認
- データベース接続テスト
- IMAP/SMTP接続テスト
- 設定ファイルの生成
Step 10: セキュリティ設定
インストーラーの削除
rm -rf /usr/local/www/roundcube/installer
.htaccessファイルによるアクセス制限
/usr/local/www/roundcube/.htaccessを作成:
# セキュリティヘッダー
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options DENY
Header always set X-XSS-Protection "1; mode=block"
# 特定ディレクトリへのアクセス制限
<FilesMatch "\.(inc|conf)$">
Require all denied
</FilesMatch>
<DirectoryMatch "/(config|temp|logs)/">
Require all denied
</DirectoryMatch>
Step 11: ログローテーションの設定
/etc/newsyslog.confにRoundcubeのログローテーション設定を追加:
/usr/local/www/roundcube/logs/errors.log www:www 644 7 1000 * Z
/usr/local/www/roundcube/logs/userlogins www:www 644 7 1000 * Z
Step 12: 定期メンテナンスの設定
cronジョブでログとセッションファイルの清掃を設定:
crontab -e
以下の行を追加:
# Roundcubeメンテナンス(毎日深夜2時)
0 2 * * * /usr/local/bin/php /usr/local/www/roundcube/bin/cleandb.sh >/dev/null 2>&1
トラブルシューティング
よくある問題と解決方法
問題1: データベース接続エラー
- 解決策: データベース認証情報とホスト設定を確認
問題2: PHPエラーが表示される
- 解決策: PHPの必要なモジュールがインストールされているか確認
問題3: メール送信ができない
- 解決策: SMTP設定とファイアウォールを確認
問題4: 添付ファイルがアップロードできない
- 解決策: PHPのアップロードサイズ制限を確認
ログファイルの確認
# Apacheエラーログ
tail -f /var/log/apache24/roundcube_error.log
# Roundcubeエラーログ
tail -f /usr/local/www/roundcube/logs/errors.log
まとめ
FreeBSD 14.3でRoundcubeメールクライアントを正常にインストールできました。重要な注意点として、現在のRoundcube 1.6系はPHP 8.4との互換性に問題があるため、PHP 8.3以下を使用することが必須です。
この構成により、Webベースでメールの送受信が可能になります。定期的なアップデートとメンテナンスを実行し、セキュリティを維持することが重要です。
今後の展望:
- Roundcube 2.0系のリリースでPHP 8.4対応が予定されています
- それまでは安定したPHP 8.3環境での運用を推奨します
運用開始後は、プラグインの追加やカスタマイズを行い、ユーザーのニーズに合わせてRoundcubeをカスタマイズできます。