Tôi vừa quay lại iRedMail, nhận thấy phiên bản này có một vài thay đổi cần lưu ý:
- Không cài sẳn certbot Let’s encrypt để lấy chứng chỉ SSL, cần cài đặt thêm
apt install certbot
# hoặc trên Ubuntu
sudo snap install --classic certbot
Chứng chỉ do Let’s Encrypt tạo ra cho domain-name có tên là fullchain.pem và privkey.pem trong khi iRedMail dùng tên iRedMail.crt và iRedMail.key, dùng ở nhiều nơi. Tốt nhất là tạo symlink:
rm -f /etc/ssl/private/iRedMail.key
rm -f /etc/ssl/certs/iRedMail.crt
ln -s /etc/letsencrypt/live/eloq.asia/privkey.pem /etc/ssl/private/iRedMail.key
ln -s /etc/letsencrypt/live/eloq.asia/fullchain.pem /etc/ssl/certs/iRedMail.crt
- Chưa có adminer hay PHPmyadmin. Vì adminer chỉ bao gồm một file và không cần cài đặt nên ưu tiên chọn ứng dụng này. iRedMail cũng có một template dành cho adminer nhưng cần phải sửa đôi chút
# /etc/nginx/templates/adminer.tmpl
include /etc/nginx/templates/hsts.tmpl;
include /etc/nginx/templates/fastcgi_php.tmpl;
fastcgi_param SCRIPT_FILENAME /path/to/adminer/filename.php;
# /etc/nginx/sites-available/00-default-ssl.conf
include ...;
include /etc/nginx/templates/adminer.tmpl;
include ...;
- Có sender_dependent_relayhost_maps nhưng vẫn phải dùng sasl_passwd. Việc dùng CSDL cho relayhost có lợi là không phải mã hóa file hay khởi động lại postfix mỗi khi thay đổi relayhost.
Chúng ta cải tiến theo cách sau:
# Tạo thêm bảng sender_relayhost_auth
DROP TABLE IF EXISTS sender_relayhost_auth;
CREATE TABLE sender_relayhost_auth (
sender varchar(60) NOT NULL,
user varchar(60) NOT NULL,
password varchar(100) NOT NULL,
PRIMARY KEY (sender)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
# File xử lý sender_dependent_relayhost_auth thay cho sasl_passwd
cat <<EOF | sudo tee /etc/postfix/mysql/sender_dependent_relayhost_auth.cf
hosts = 127.0.0.1
user = vmail
password = <<vmail_password>>
dbname = vmail
query = SELECT concat(user, ':', password) FROM sender_relayhost_auth WHERE sender='%s' LIMIT 1;
EOF
# Khai báo dùng relayhost trong /etc/postfix/main.cf trở thành:
smtp_use_tls=yes
# Thay cho khai báo relayhost
sender_dependent_relayhost_maps = mysql:/etc/postfix/mysql/sender_dependent_relayhost_maps.cf
# Thay cho khai báo sasl_passwd
smtp_sasl_password_maps = mysql:/etc/postfix/mysql/sender_dependent_relayhost_auth.cf
smtp_sasl_auth_enable=yes
smtp_sasl_security_options = noanonymous
smtp_sender_dependent_authentication = yes
Thêm relayhost và account như sau:
# relayhost
@domain.com [relay_domain]:port
# account
@domain.com user@relay_domain user_password
- Di dời data: Vì partition chứa hệ điều hành nhỏ nên có thể phải di dời data của MariaDB và email sang partition khác. Điều này cũng giúp không mất dữ liệu khi OS bị trục trặc cần cài lại.
# Tạo thư mục /mnt/mailData với 2 thư mục con MariaDB và vmail
# Dời thư mục data của MariaDB với newFolder=/mnt/mailData/MariaDB
# Dời thư mục /var/vmail
rsync -av /var/vmail /mnt/mailData/
mv /var/vmail /var/vmail.bak
ln -s /mnt/mailData/vmail /var
- Ngoài webmail Roundcube, có thể cài thêm Rainloop. Webmail Rainloop không cần CSDL, chỉ giao tiếp với mail server qua các giao thức POP, IMAP, SMTP giống như các ứng dụng mail desktop khác. Ngoài ra còn có thể cài nhiều account email khác nhau trong cùng một tài khoản.
Template cho Rainloop như sau:
location = /rainloop {
return 301 /rainloop/;
}
location ~ ^/rainloop/(.*\.php)$ {
include /etc/nginx/templates/hsts.tmpl;
include /etc/nginx/templates/fastcgi_php.tmpl;
fastcgi_param SCRIPT_FILENAME /path/to/rainloop/$1;
}
location ~ ^/rainloop/(.*) {
alias /path/to/rainloop/$1;
index index.php;
}
location ^~ /data {
deny all;
}
Chú thích
Nếu mail server đứng sau proxy server:
- Lấy chứng chỉ SSL trên web proxy rồi copy sang mail server.
rsync -avx ip_proxy_server:/etc/letsencrypt /etc
- Trên proxy server, sửa file cấu hình nginx, thêm khối server để chuyển hướng https://domain-mail-server về https://local-ip-mail-server
server {
listen 443 ssl http2;
server_name domain-mail-server;
ssl_certificate /etc/letsencrypt/live/domain-mail-server/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain-mail-server/privkey.pem;
ssl_dhparam /path/to/dh2048_param.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=15552000; includeSubdomains";
proxy_buffering off;
location / {
proxy_pass https://local-ip-mail-server;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
- Trên cả proxy server, cần sửa file /etc/hosts, thêm vào dòng
local-ip-mail-server domain-mail-server