Tùy biến iRedMail (free version)

  1. Cài đặt iRedMail sau proxy server
  2. Chứng chỉ SSL để gời mail internet
  3. Thêm Adminer
  4. Thêm Rainloop
  5. iRedMail script
  6. Dùng subdomain
  7. Sửa lỗi password plugin của Roundcube
  8. Thay đổi kiểu mã hóa mật khẩu
  9. Gởi mail qua relay host
  10. Master user
  11. Mail server cho nhiều domain
  12. Auto config – auto discover

iRedMail sau proxy server

Ở proxy server, thêm vào cấu hình nginx

upstream backend {
  server local_ip_of_backend:443;
}
server {
  listen              443 ssl;
  server_name         mail.example.com;
  ssl_certificate     /etc/letsencrypt/live/mail.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/mail.example.com/privkey.pem;
# ssl_dhparam         /etc/letsencrypt/dhparams-2048.pem;

  add_header Strict-Transport-Security "max-age=15552000; includeSubdomains";
  ssl_protocols       TLSv1.2 TLSv1.3;
  ssl_ciphers         HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers     on;
  ssl_session_cache   shared:SSL:10m;
  proxy_buffering     off;

  location / {
    proxy_pass  https://local_ip_of_backend;
    proxy_set_header Host $host;
    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;
  }
}

iRedMail buộc phải dùng https từ khai báo trong file /etc/nginx/templates/hsts.tmpl

add_header Strict-Transport-Security "max-age=31536000";

Ở backend, giữ nguyên cài đặt nginx của iRedMail

Chứng chỉ SSL

iRedMail tạo sẳn chứng chỉ SSL nhưng chỉ dùng nội bộ, không thể gởi mail internet. Vì vậy cần cài đặt certbot và tạo chứng chỉ SSL cho mail.example.com. Xong thay thế các chứng chỉ iRedMail:

ln -sf /etc/letsencrypt/live/mail.example.com/fullchain.pem /etc/ssl/certs/iRedMail.crt
ln -sf /etc/letsencrypt/live/mail.example.com/privkey.pem /etc/ssl/private/iRedMail.key

Khởi động lại postfix và dovecot

systemctl restart postfix dovecot

Thêm adminer

/etc/nginx/templates/adminer.tmpl có hướng dẫn cài đặt adminer. Tuy nhiên adminer có phiên bản 1 file duy nhất đặt ở đâu cũng được, chỉ cần sửa trong adminer.tmpl

# /opt/www/adminer/latest.php;
/path/to/adminer/latest.php;

Sau đó thêm vào /etc/nginx/sites-enabled/00-default-ssl.conf

include ...
include /etc/nginx/templates/adminer.tmpl;
include ...

Khởi động lại nginx

systemctl nginx restart

Thêm Rainloop

Rainloop là email client hiện đại, nhanh chóng trên nền web, cho phép khai báo nhiều tài khoản email để có thể chuyển qua lại dễ dàng.

iRedMail script

iRedMail admin quá đơn giản, chỉ có mỗi thêm bớt domain/user. Các thao tác về alias, forwarding… đều không có. Có thể dùng câu lệnh MySql thay thế. iRedMail Script giúp làm việc này, tuy nhiên đây chỉ là các câu sql cần thiết phải chạy qua mysql. Cần chỉnh sửa đôi chút để có thể gọi thực thi câu lệnh sql.

# list-active-account.sh
printf "select username FROM mailbox WHERE active = 1 ORDER BY domain,username; \n"

# sửa thành
sql="select username FROM mailbox WHERE active = 1 ORDER BY domain,username;"
mysql --table vmail <<< $sql

Dùng subdomain

Chúng ta sẽ chuyển hướng các subdomain như sau:

  • webmail.example.com => mail.example.com/mail
  • adminer.example.com => mail.example.com/adminer
  • mailadmin.example.com => mail.example.com/iredadmin

Sửa /etc/nginx/sites-enabled/00-default-ssl.conf

Từ dòng root trở về sau giữ nguyên như thiết lập của iRedMail.

Tuy nhiên if trong Nginx dễ gây rắc rối và chậm, có thể dùng cách map biến của Nginx

Sửa lỗi password plugin của Roundcube không hoạt động

Xem bài trước

Tuy nhiên có thể mã hóa kiểu SSHA512 mà không dùng doveadm như sau:

Thay đổi kiểu mã hóa mật khẩu

Trong khi Roundcube chấp nhận các kiểu mã hóa mới nhất thì iRedMail dừng lại ở SSHA512. Vì vậy nếu thay đổi kiểu mã hóa mới hơn ở Roundcube thì iRedMail không hiểu.

Các file khai báo kiểu mã hóa:

/opt/www/iredadmin/libs/default_settings.py
/opt/www/roundcubemail/plugins/password/config.inc.php

Gởi email qua relayhost

CSDL vmail có bảng sender_relayhost (id, account, relayhost).

1. Chúng ta thêm vào 2 cột auth active

mysql -h localhost vmail -e "ALTER TABLE sender_relayhost ADD COLUMN auth varchar(255) NOT null, ADD COLUMN active tinyint(1) DEFAULT 0;"

2. Thêm dữ liệu về relayhost tương tự như sau

Trong đó usr@gmail.com là tài khoản gởi email của gmail có mật khẩu là password.

3. Sửa và tạo thêm file đọc bảng sender_relayhost

## Sửa /etc/postfix/mysql/sender_dependent_relayhost_maps.cf
...
query = SELECT relayhost \
        FROM sender_relayhost \
        WHERE account='%s' AND active=1 LIMIT 1

## Thêm /etc/postfix/mysql/sender_dependent_relayhost_auth.cf
cp /etc/postfix/mysql/sender_dependent_relayhost_maps.cf /etc/postfix/mysql/sender_dependent_relayhost_auth.cf

## Sửa /etc/postfix/mysql/sender_dependent_relayhost_auth.cf
...
query = SELECT auth \
        FROM sender_relayhost \
        WHERE relayhost='%s' AND active=1 LIMIT 1

4. Sửa khai báo trong /etc/postfix/main.cf

proxy_read_maps = ... $smtp_sasl_password_maps
sender_dependent_relayhost_maps = proxy:mysql:/etc/postfix/mysql/sender_dependent_relayhost_maps.cf

5. Thêm vào cuối file /etc/postfix/main.cf

cat<<EOF>>/etc/postfix/main.cf
# outbound relay configurations
smtp_sasl_auth_enable = yes
smtp_sender_dependent_authentication = yes
smtp_sasl_password_maps = proxy:mysql:/etc/postfix/mysql/sender_dependent_relayhost_auth.cf
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may
header_size_limit = 4096000
EOF

6. Khởi động lại postfix

systemctl restart postfix

Master user

Dovecot cho phép tạo master user, người có thể đăng nhập vào tài khoản email bất kỳ mà không cần có mật khẩu của email.

# Chọn username với domain không tồn tại
usr=abc@nothing.org
pwd=$(doveadm pw -s SSHA512 -p m@stErPwd)
echo "$usr:$pwd" > /etc/dovecot/dovecot-master-users

# Khởi động lại dovecot
systemctl restart dovecot

# Đăng nhập account user@domain.name như sau:
username: user@domain.name*abc@nothing.org
password: m@stErPwd

Ứng dụng: thí dụ như dùng imapsync để backup về Gmail

Comments Off on Tùy biến iRedMail (free version)

Filed under Software

Comments are closed.