iRedMail v1.4.2

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.pemprivkey.pem trong khi iRedMail dùng tên iRedMail.crtiRedMail.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 ...;
  • 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 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

Comments Off on iRedMail v1.4.2

Filed under Software

Comments are closed.