![Zhang Huangbin](/assets/img/avatar_default.png)
Installing iRedMail with remote mysql server, if it's IPv6 address, please use '[xx:yy:zz:...]' instead of 'xx:yy:zz:...'.
149 lines
5.2 KiB
Markdown
149 lines
5.2 KiB
Markdown
# Install iRedMail with a remote MySQL server
|
|
|
|
[TOC]
|
|
|
|
## Summary
|
|
|
|
This article introduces how to install iRedMail-__0.9.6__ with an existing remote
|
|
MySQL server.
|
|
|
|
We use below server IP addresses in our example:
|
|
|
|
* `192.168.1.100`: Remote MySQL server.
|
|
* `192.168.1.200`: iRedMail server. We're going to install the latest iRedMail
|
|
on this server.
|
|
|
|
iRedMail won't install MySQL server (RPM/DEB package) on localhost with remote
|
|
MySQL server, but MySQL client tools are still required for remote SQL
|
|
connection.
|
|
|
|
## Requirements
|
|
|
|
In our case, remote MySQL server runs on server `192.168.1.100`. It must accept
|
|
remote connection from iRedMail server __BEFORE__ installing iRedMail, and we
|
|
must create a new SQL user with password and proper privileges for remote login
|
|
from iRedMail server (`192.168.1.200` in our case).
|
|
|
|
* Make sure your remote MySQL server accepts remote connection from iRedMail
|
|
server. For example, you can check it with command `netstat`:
|
|
|
|
```
|
|
# netstat -ntlp | grep 3306
|
|
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2479/mysqld
|
|
```
|
|
|
|
If MySQL server is listening on only 127.0.0.1, please update parameter
|
|
`bind-address` in MySQL config file `my.cnf` to make sure it listens on all
|
|
available IPv4 addresses like below, restarting MySQL service is required:
|
|
|
|
* On Red Hat Enterprise Linux, CentOS, openSUSE, OpenBSD, it's `/etc/my.cnf`.
|
|
* On Debian, Ubuntu, it's `/etc/mysql/my.cnf`.
|
|
* On FreeBSD, it's `/var/db/mysql/my.cnf`.
|
|
|
|
```
|
|
# If you comment out this parameter, it listens on all available IPv6 addresses
|
|
bind-address = 0.0.0.0
|
|
```
|
|
|
|
* Make sure remote MySQL request will not be blocked by network firewall like
|
|
iptables (Linux), ipfw (FreeBSD) or PF (OpenBSD).
|
|
|
|
* Create a new SQL user (`admin_iredmail`) with new password (`admin_password`)
|
|
and all privileges on remote MySQL server (of course you must choose another
|
|
strong password):
|
|
|
|
```
|
|
-- Run on remote MySQL server as root user
|
|
GRANT ALL PRIVILEGES ON *.* TO 'admin_iredmail'@'192.168.1.200' IDENTIFIED BY 'admin_password' WITH GRANT OPTION;
|
|
FLUSH PRIVILEGES;
|
|
FLUSH HOSTS;
|
|
```
|
|
|
|
With above commands, MySQL user `admin_iredmail` is allowed to connect from IP
|
|
address `192.168.1.200` with password `admin_password`.
|
|
|
|
__Notes__:
|
|
|
|
* `WITH GRANT OPTION` in above SQL command is required.
|
|
* Of course you can use `root` or other MySQL user as remote MySQL user name
|
|
in above SQL command, but a custom user name should be better to help you
|
|
understand what it's used for, and less confuse with default `root` user.
|
|
* You must replace `192.168.1.200` by the real IP address of your iRedMail
|
|
server in above command.
|
|
* It's recommended to delete this user AFTER iRedMail installation, it won't
|
|
be used anymore. We will give you SQL command to delete it later.
|
|
|
|
If you tried to install iRedMail with this remote MySQL server before, please
|
|
backup existing databases __on remote MySQL server first__, then drop them and
|
|
delete related MySQL users, because they will be created by iRedMail
|
|
automatically on remote MySQL server:
|
|
|
|
```
|
|
-- Run on remote MySQL server as root user
|
|
DROP DATABASE amavisd;
|
|
DROP DATABASE cluebringer;
|
|
DROP DATABASE iredadmin;
|
|
DROP DATABASE iredapd;
|
|
DROP DATABASE roundcubemail;
|
|
DROP DATABASE sogo;
|
|
DROP DATABASE vmail;
|
|
|
|
DROP USER 'amavisd'@'192.168.1.200';
|
|
DROP USER 'cluebringer'@'192.168.1.200';
|
|
DROP USER 'iredadmin'@'192.168.1.200';
|
|
DROP USER 'iredapd'@'192.168.1.200';
|
|
DROP USER 'roundcube'@'192.168.1.200';
|
|
DROP USER 'sogo'@'192.168.1.200';
|
|
DROP USER 'vmail'@'192.168.1.200';
|
|
DROP USER 'vmailadmin'@'192.168.1.200';
|
|
```
|
|
|
|
## Install iRedMail
|
|
|
|
Please follow iRedMail installation guide strictly, but start iRedMail
|
|
installer with below command instead of the original one (`bash iRedMail.sh`):
|
|
|
|
!!! warning
|
|
|
|
If you use an IPv6 address for remote MySQL server address , please
|
|
surround it with `[]` like this: `[fd01:2345:6789:1::1]`.
|
|
|
|
```
|
|
USE_EXISTING_MYSQL='YES' \
|
|
MYSQL_SERVER_ADDRESS='192.168.1.100' \
|
|
MYSQL_SERVER_PORT='3306' \
|
|
MYSQL_ROOT_USER='admin_iredmail' \
|
|
MYSQL_ROOT_PASSWD='admin_password' \
|
|
MYSQL_GRANT_HOST='192.168.1.200' \
|
|
bash iRedMail.sh
|
|
```
|
|
|
|
It will launch iRedMail installation wizard as usual.
|
|
|
|
Parameters we used in above command line:
|
|
|
|
* `USE_EXISTING_MYSQL`: Remote MySQL server address.
|
|
* `MYSQL_SERVER_ADDRESS`: Remote MySQL server address.
|
|
* `MYSQL_SERVER_PORT`: Remote MySQL server port. Default is `3306`.
|
|
* `MYSQL_ROOT_USER`: MySQL user name we created on remote MySQL server before installing iRedMail.
|
|
* `MYSQL_ROOT_PASSWD`: MySQL password that we created on remote MySQL server before installing iRedMail.
|
|
* `MYSQL_GRANT_HOST`: Hostname or IP address of iRedMail server.
|
|
|
|
iRedMail will create new SQL users for applications like Postfix, Amavisd,
|
|
Roundcube webmail, etc, and grant proper privileges to them which will connect
|
|
from iRedMail server.
|
|
|
|
One more optional parameter is `INITIALIZE_SQL_DATA`. If you don't want
|
|
iRedMail installer to initialize any sql records, please set
|
|
`INITIALIZE_SQL_DATA=NO`. This way iRedMail installer will just configure
|
|
related config files to use remote MySQL server.
|
|
|
|
## After iRedMail installation
|
|
|
|
As mentioned above, it's now ok to delete the new MySQL user `admin_iredmail`
|
|
on remote MySQL server. It will not be used anymore.
|
|
|
|
```
|
|
mysql> DROP USER 'admin_iredmail'@'192.168.1.200';
|
|
```
|