RoundcubeでWEBメール構築 Debian系
今回は次の環境で、Server#1にRoundCube をインストールし、メールサーバーは同一ローカルネットワーク内のServer#2を利用します。
Linux : Ubuntu22.04
前提条件
Server#1
・Apache2 webサーバー導入済・PHPインストール済....下記を参照して導入
・Apache2 webサーバーSSL化....下記を参照して導入
Ubuntu Server 22.04 : WEBサーバー(Apache)
Apache2インストール
最初にUFWでhttp:80番ポートおよびhttps:443ポートをallowしておく
# ufw allow http
# ufw allow https
# ufw reload
1 Apache2 をインストール
# apt -y install apache2
2 Apache2 基本設定
Ubuntu22.04 Server : Let's Encrypt , Apache SSL化
1. 証明書を取得する (Let's Encrypt)
1.1 事前準備
①mod_sslを有効にする
# a2enmod ssl
②Let's Encrypt証明書を取得するためのクライアントツールをインストール
# apt -y install certbot
③Let's Encrypt証明書の取得
Apache httpd や Nginx などの Webサーバーが稼働していることが前提となります。
作業を実施するサーバーで Webサーバーが稼働していない場合は ④の手順を実行。
また、インターネット側から、作業を実施するサーバー (証明書を取得したい FQDN のサーバー) の 80 ポート宛てにアクセス可能であることも前提です。
Server#2
・Mailサーバー導入済(IMAP,SMTPサーバー)....下記を参照して導入
・MailサーバーのSSL化は必須ではないがSSL化する場合....下記を参照して導入
Ubuntu22.04 Server : ウイルス対策 , Mail Server
1.ウイルス対策ソフトClamav導入
1.1 インストール
# apt install clamav clamav-daemon
尚、clamav関連の設定ファイルは、/etc/clamav/フォルダにインストールされる
1.2 ウイルス定義の更新
# systemctl stop clamav-freshclam
# freshclam
Sat May 21 20:44:38 2022 -> ClamAV update process started at Sat May 21 20:44:38 2022
Sat May 21 20:44:38 2022 -> daily database available for update (local version: 26547, remote
Debian11.5 ; Let's Encrypt WEB , MailサーバーSSL化
1. 証明書を取得する (Let's Encrypt)
1.1 事前準備
①mod_sslを有効にする
# a2enmod ssl
②Let's Encrypt証明書を取得するためのクライアントツールをインストール
2. Apache2にSSL/TLS(Let's Encrypt) の設定
①Apache2のSSL関連設定ファイルの編集
3. Mail サーバーにSSL/TLS(Let's Encrypt) の設定
3.1 メールサーバー用証明書の取得
メールサーバー用の証明書を取得するが上記と同様の方法では取得できないので「--standalone」オプションをつけて下記のようにしても失敗する。
1. MariaDBデータベースサーバーインストール
1.1 インストール
1 2 |
# apt -y install mariadb-server # vi /etc/mysql/mariadb.conf.d/50-server.cnf |
90行目 : デフォルトの文字コードを確認
character-set-server = utf8mb4
91行目 : 絵文字等 4バイト長の文字を扱う場合は [utf8mb4]確認
collation-server = utf8mb4_general_ci
1 |
# systemctl restart mariadb |
1.2初期設定
1 |
# 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
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on…
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
[Unix_Socket] 認証に切り替えるか否か
Switch to unix_socket authentication [Y/n] y
… skipping.
You already have your root account protected, so you can safely answer 'n'.
MariaDB root パスワードを設定するか否か
Change the root password? [Y/n] y
… skipping.
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.
root のリモートログインは無効とする
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.
2. RoundCube 用のデータベースを作成
1 |
# mysql |
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 37
Server version: 10.6.7-MariaDB-2ubuntu1 Ubuntu 22.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database roundcube_db; ←データベース[roundcube_db] 作成
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on roundcube_db.* to roundcube_user@'localhost' identified by '<password>'; ←ユーザー[roundcube_user]作成、<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
3.RoundCube のインストールと設定
1 |
# apt -y install roundcube roundcube-mysql |
下記メッセージが表示されれば<no>を選択
The roundcube package must have a database installed and configured |
| before it can be used. This can be optionally handled with |
| dbconfig-common. |
| |
| If you are an advanced database administrator and know that you want to |
| perform this configuration manually, or if your database has already |
| been installed and configured, you should refuse this option. Details |
| on what needs to be done should most likely be provided in |
| /usr/share/doc/roundcube. |
| |
| Otherwise, you should probably choose this option. |
| |
| Configure database for roundcube with dbconfig-common? |
| |
|
<Yes> <No>
1 2 3 |
# cd /usr/share/dbconfig-common/data/roundcube/install # mysql -u roundcube_user -D roundcube_db -p < mysql Enter password: ←上記「2. RoundCube 用のデータベースを作成」で設定したroundcube_userの パスワード |
1 2 |
# cd # vi /etc/roundcube/debian-db.php |
データベース情報を設定
$dbuser='roundcube_user';
$dbpass='password';
$basepath='';
$dbname='roundcube_db';
$dbserver='localhost';
$dbport='3306';
$dbtype='mysql';
1 |
# vi /etc/roundcube/config.inc.php |
#36行目 :
IMAP サーバー指定 (SSL化済の場合)
$config['default_host'] = 'tls://mail.korodes.com';
IMAP サーバー指定 (SSL化していない場合)
$config['default_host'] = 'mail.korodes.com';
#50行目 :
SMTP サーバー指定 (SSL化済の場合)
$config['smtp_server'] = 'tls://mail.korodes.com';
SMTP サーバー指定 (SSL化していない場合)
$config['smtp_server'] = 'mail.korodes.com';
#53行目 :
SMTP ポート (SSL化済の場合)
$config['smtp_port'] = 587;
SMTP ポート (SSL化していない場合)
$config['smtp_port'] = 25;
#57行目 :
$config['smtp_user'] = '%u';
#61行目 :
$config['smtp_pass'] = '%p';
#68行目 : 画面に表示したいタイトル
$config['product_name'] = Korodes Webmail';
#最終行に追記
#IMAP ポート指定
$config['default_port'] = 143;
#SMTP 認証タイプ指定
$config['smtp_auth_type'] = 'LOGIN';
#SMTP HELO host 指定
$config['smtp_helo_host'] = 'mail.korodes.com';
#ドメイン名指定
$config['mail_domain'] = 'korodes.com';
#UserAgent 指定
$config['useragent'] = 'Korodes Webmail';
#SMTP と IMAP の接続オプション指定
$config['imap_conn_options'] = array(
'ssl' => array(
'verify_peer' => true,
'CN_match' => 'korodes.com',
'allow_self_signed' => true,
'ciphers' => 'HIGH:!SSLv2:!SSLv3',
),
);
$config['smtp_conn_options'] = array(
'ssl' => array(
'verify_peer' => true,
'CN_match' => 'korodes.com',
'allow_self_signed' => true,
'ciphers' => 'HIGH:!SSLv2:!SSLv3',
),
);
4.Apache の設定
1 2 3 4 5 |
# vi /etc/apache2/conf-enabled/roundcube.conf # 3行目 : コメント解除 Alias /roundcube /var/lib/roundcube/public_html # 11行目 : コメントにして12行目に追加 Require ip 127.0.0.1 192.168.11.0/24 ←192.168.11.0/24は各自環境に合わす |
1 |
# systemctl restart apache2 |
5.RoundCubeにアクセスして確認
任意のWEBブラウザで「https://サーバードメイン名/roundcube/」にアクセスすると下記ログイン画面になるので
ユーザー名 : メールサーバー側の登録ユーザー名
パスワード : 同上ユーザーのパスワード
ログインに成功すると下記WEBメール画面になるので自分あてに送受信して確認する
RoundcubeでWEBメール構築 RHEL系 はこちら