iRedMail – Đồng bộ dữ liệu sang server mới

0
3065

1. Cài đặt server iRedMail mới

Tham khảo bước cài đặt theo: Cài đặt và cấu hình trên CentOS 7

2. Migrate dữ liệu

Sau khi cài đặt một server mới với đầy đủ các thành phần của server cũ, chúng ta tiến hành restore lại dữ liệu từ server cũ.

Các dữ liệu quan trọng:

  1. Các tài khoản mail được lưu trữ trong MySQL/LDAP
  2. Thư mục lưu trữ email. Mặc định tại /var/vmail/
  3. Dữ liệu của Roundcube Webmail. Lưu trữ dữ liệu của mỗi user như (Addressbook,…).
  4. Dữ liệu của Amavisd (Lưu trữ về các thông tin white/blacklist của mỗi user)

Chú ý: Không khôi phục dữ liệu của database mysql vì nó lưu trữ thông tin của các user như Roundcube, Amavisd,… vì khi cài mới server thông tin về password sẽ thay đổi.

Dữ liệu của database được backup hàng ngày và lưu trữ tại: /var/vmail/backup/mysql/

Sao chép dữ liệu được backup vào ngày mới nhất sang server mới. Ví dụ, bản backup mới nhất trong thời điểm viết bài là ngày 4/5/2018.

2.1 Sao chép dữ liệu sang server mới

Sử dụng scp để sao chép các dữ liệu sang server mới

cd /var/vmail/backup/mysql/
scp -r /var/vmail/backup/mysql/* root@ip-new-server:/opt/

Trên Server mới, giải nén các file dữ liệu backup *.bz2 vùa chuyển từ server cũ sang

cd /opt
bzip2 -d <file>.sql.bz2

2.2 Migrate dữ liệu

2.2.1 Migrate tài khoản (MySQL/PostgreSQL)

Tất cả các tài khoản được lưu trữ tại database vmail. Chúng ta khôi phục lại dữ liệu từ file backup của database này lên máy chủ mới.

Chú ý: Bản iRedMail 0.8.7 đã lược bỏ đi một vài cột trong các bảng của vmail. Vì thế, trước khi khôi phục lại dữ liệu từ server cũ, hãy thêm lại các cột đó.

Không cần thiết nếu sử dụng phiên bản > 0.8.7

mysql> USE vmail;

mysql> ALTER TABLE mailbox ADD COLUMN bytes BIGINT(20) NOT NULL DEFAULT 0;
mysql> ALTER TABLE mailbox ADD COLUMN messages BIGINT(20) NOT NULL DEFAULT 0;

mysql> ALTER TABLE domain ADD COLUMN defaultlanguage VARCHAR(5) NOT NULL DEFAULT 'en_US';
mysql> ALTER TABLE domain ADD COLUMN defaultuserquota BIGINT(20) NOT NULL DEFAULT '1024';
mysql> ALTER TABLE domain ADD COLUMN defaultuseraliases TEXT;
mysql> ALTER TABLE domain ADD COLUMN disableddomainprofiles VARCHAR(255) NOT NULL DEFAULT '';
mysql> ALTER TABLE domain ADD COLUMN disableduserprofiles VARCHAR(255) NOT NULL DEFAULT '';
mysql> ALTER TABLE domain ADD COLUMN defaultpasswordscheme VARCHAR(10) NOT NULL DEFAULT '';
mysql> ALTER TABLE domain ADD COLUMN minpasswordlength INT(10) NOT NULL DEFAULT 0;
mysql> ALTER TABLE domain ADD COLUMN maxpasswordlength INT(10) NOT NULL DEFAULT 0;

mysql> ALTER TABLE alias ADD COLUMN islist TINYINT(1) NOT NULL DEFAULT 0;

Khôi phục lại database, chạy các lệnh sau để tạo các tài khoản mail alias và xóa bỏ một vài cột đã tạo ở trên.

mysql> USE vmail;
mysql> UPDATE alias SET islist=1 WHERE address NOT IN (SELECT username FROM mailbox);
mysql> UPDATE alias SET islist=0 WHERE address=domain;    -- domain catch-all account

-- Store values into new column: domain.settings and drop them
mysql> UPDATE domain SET settings='';
mysql> UPDATE domain SET settings=CONCAT(settings, IF(defaultlanguage IS NULL OR defaultlanguage='', '', CONCAT('default_language:', defaultlanguage, ';')));
mysql> UPDATE domain SET settings=CONCAT(settings, IF(defaultuserquota IS NULL OR defaultuserquota=0, '', CONCAT('default_user_quota:', defaultuserquota, ';')));
mysql> UPDATE domain SET settings=CONCAT(settings, IF(defaultuseraliases IS NULL OR defaultuseraliases='', '', CONCAT('default_groups:', defaultuseraliases, ';')));
mysql> UPDATE domain SET settings=CONCAT(settings, IF(minpasswordlength IS NULL OR minpasswordlength=0, '', CONCAT('min_passwd_length:', minpasswordlength, ';')));
mysql> UPDATE domain SET settings=CONCAT(settings, IF(maxpasswordlength IS NULL OR maxpasswordlength=0, '', CONCAT('max_passwd_length:', maxpasswordlength, ';')));
mysql> UPDATE domain SET settings=CONCAT(settings, IF(disableddomainprofiles IS NULL OR disableddomainprofiles='', '', CONCAT('disabled_domain_profiles:', disableddomainprofiles, ';')));
mysql> UPDATE domain SET settings=CONCAT(settings, IF(disableduserprofiles IS NULL OR disableduserprofiles='', '', CONCAT('disabled_user_profiles:', disableduserprofiles, ';')));

mysql> ALTER TABLE domain DROP defaultlanguage;
mysql> ALTER TABLE domain DROP defaultuserquota;
mysql> ALTER TABLE domain DROP defaultuseraliases;
mysql> ALTER TABLE domain DROP minpasswordlength;
mysql> ALTER TABLE domain DROP maxpasswordlength;
mysql> ALTER TABLE domain DROP disableddomainprofiles;
mysql> ALTER TABLE domain DROP disableduserprofiles;
use vmail;
source <file-sql-vmail>;

Sau khi khôi phục lại database,

2.2.2 Migrate mailbox (Maildir)

Lưu ý: Kiểm tra lại thư mục chứa mail ở server cũ. Và khai báo vào trong quá trình cài đặt server mới. (Thực hiện trên máy chủ cũ)

Để kiểm tra, chúng ta đăng nhập vào MySQL và truy vấn câu lệnh sau:

use vmail
MariaDB [vmail]> SELECT storagebasedirectory FROM mailbox WHERE username='[email protected]';  

+----------------------+
| storagebasedirectory |
+----------------------+
| /var/vmail           |
+----------------------+

Chú ý: Thay một địa chỉ email có trên hệ thống vào câu lệnh.

Chuyển dữ liệu sang máy chủ mới

scp /var/vmail root@ip-new:/var/vmail

Và phân quyền (700) cho thư mục cho vmail

2.2.3 Migrate dữ liệu của mailling list

Mặc định, các dữ liệu được lưu trữ tại:

  • /var/vmail/mlmmj: Các maillist đang hoạt động.
  • /var/vmail/mlmmj-archive: Các maillist đã được xóa bỏ.

Phân lại quyền thư mục, với 700 và sở hữu bởi: mlmmj:mlmmj

Do bước trên chúng ta đã chuyển toàn bộ thư mục vmail sang máy chủ mới. Vì vậy, chúng ta phân quyền lại cho folder như sau:

chown mlmmj. -R var/vmail/mlmmj
chown mlmmj. -R var/vmail/mlmmj-archive

2.2.4 Migrate dữ liệu của Webmail Roundcoube, Amavisd, iRedAPD, iRedAdmin

  • Roundcube
use roundcubemail;
source <file-sql-roundcubemail>;
  • Amavisd
use amavisd;
source <file-sql-amavisd>;
  • iRedAPD
use iredapd;
source <file-sql-iredapd>;
  • iRedAdmin
use iredadmin;
source <file-sql-iredadmin>;
  • Sogo
use sogo;
source <file-sql-sogo>;

2.2.5 Migrate DKIM keys

Copy thư mục chứa DKIM key của server cũ sang server mới, mặc định /var/lib/dkim.

scp -r /var/lib/dkim/* root@ip-server:/var/lib/dkim/

Phân lại quyền thư mục, sở hữu bởi amavis:amavis với quyền 600.

3. Tham khảo

Leave a Reply

avatar
  Subscribe  
Notify of