Install iRedMail with a remote MySQL server

Summary

This article describes how to install iRedMail (iRedMail-0.8.6 or later releases) with a remote MySQL server, and you must choose MySQL backend in iRedMail installation wizard.

We use below server IP addresses in our example:

iRedMail won't install MySQL server (RPM/DEB package) on localhost with remote MySQL server, but MySQL client tools are still required for remote 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).

# 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, you should comment out bind-address parameter in MySQL config file my.cnf to make it listen on all available network interfaces, and restart MySQL service.

#bind-address = 127.0.0.1
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin_iredmail'@'192.168.1.200' IDENTIFIED BY 'admin_password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> 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:

If you tried to install iRedMail with this remote MySQL server before, please drop existing databases and MySQL users which will be created by iRedMail on remote MySQL server:

mysql> DROP DATABASE amavisd;
mysql> DROP DATABASE cluebringer;
mysql> DROP DATABASE iredadmin;
mysql> DROP DATABASE roundcubemail;
mysql> DROP DATABASE vmail;

mysql> DROP USER 'amavisd'@'192.168.1.200';
mysql> DROP USER 'cluebringer'@'192.168.1.200';
mysql> DROP USER 'iredadmin'@'192.168.1.200';
mysql> DROP USER 'roundcube'@'192.168.1.200';
mysql> DROP USER 'vmail'@'192.168.1.200';
mysql> 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):

# MYSQL_SERVER='192.168.1.100' MYSQL_ROOT_USER='admin_iredmail' MYSQL_GRANT_HOST='192.168.1.200' bash iRedMail.sh

It will launch iRedMail installation wizard as usual. When it asks MySQL root password, please input the password (admin_password in our case) we created on remote MySQL server.

Parameters we used in above command line:

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 MYSQL_SERVER_PORT. it specifies listen port of remote MySQL server. Default one is 3306, you can change it if remote MySQL server is running on a different port.

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';

Document published under a CC BY-ND 3.0 license. If you found something wrong, please do contact us to fix it.