Managing users, aliases and domains
Cài đặt ISPmail Admin
ISPmail Admin là ứng dụng web giúp quản lý mail server.
Chúng ta sẽ dùng ${hostname} và ${adm_pwd} nên phải chắc các biến tương ứng còn hiệu lực.
Sau khi cài đặt, trang quản lý mail server và mật khầu xem ở ~/readme.txt
https://mx.example.org/mailadmin
[Domains]
Thêm/bớt domain. Với domain được thêm vào mydomain.ltd, chúng ta có thể tạo email account dạng @mydomain.ltd
[Accounts]
Thêm/Bớt/Thay đổi mật khẩu của email account thuộc domain đã thêm vào
[Aliases]
Thêm/Bớt alias (không phải email account đã có) của một địa chỉ email trong hệ thống mail server.
[Redirects]
Chuyển tiếp một địa chỉ email trong hệ thống (có thể không tồn tai) đến một địa chỉ email khác (có thể ngoài hệ thống)
Nơi đây, chúng ta sẽ tạo vài email account trước hết cho mục đích test, ngoài cách tạo bằng câu lệnh SQL.
Thí dụ: test@example.org, alias@example.org, nobody@example.org -> test@gmail.com
Chú thích
- Ứng dụng này còn thiếu phần [Relay hosts], chúng ta sẽ bổ sung sau.
- Đến đây, mặc dù đã có thể gởi local mail nhưng gởi external mail vẫn có thể bị trả lại vì mail server của chúng ta chưa đủ độ tin cậy. Còn phải làm vài việc nữa hoặc cuối cùng phải dùng relay host.
SQL queries
Dùng hàm sau đây (có trong Dovecot) để mã hoá mật khẩu:
pwd=$(doveadm pw -s BLF-CRYPT -p your_password)
Tạo mail domain | INSERT INTO virtual_domains (name) VALUES (“example.org”); |
Xóa mail domain | DELETE FROM virtual_domains where name=’example.org’; |
Tạo mail user | INSERT INTO virtual_users (domain_id, email, password) VALUES (SELECT id FROM virtual_domains WHERE name=’example.org’), ‘john@example.org’,”‘$pwd’”); |
Đổi mật khẩu user | UPDATE virtual_users SET password=”‘$pwd’”) WHERE email=’email@address’; |
Xóa mail user | DELETE FROM virtual_users WHERE email=’john@example.org’; |
Tạo chuyển tiếp mail | INSERT INTO virtual_aliases (domain_id, source, destination) VALUES ( (SELECT id FROM virtual_domains WHERE name=’example.org’), ‘melissa@example.org’, ‘juila@example.net’); |
Xóa chuyển tiếp mail | DELETE FROM virtual_aliases WHERE source=’melissa@example.org’; |
Script
#!/bin/bash
# Tên script: 08.mailadmin.sh
# Quản lý mail server
# © 2020 LNT <lnt@ly-le.info>
# version 20200801
#
echo 'Cài đặt ISP mailadmin...'
## Tải về ISPmailadmin ##
web="/var/www/mailserver"
cd /tmp
wget -O ISPmailadmin.tar.gz "https://www.ima.jungclaussen.com/dwn/dwn.php?v=0.9.6&f=.tar.gz"
tar -xf ISPmailadmin.tar.gz
rm -rf $web/mailadmin
mv -f /tmp/ispmailadmin-0.9.6/htdocs $web/mailadmin
find $web/mailadmin -exec chown www-data:www-data {} \;
HOSTNAME=$(hostname)
DOMAIN=${HOSTNAME#*.}
ADM_PWD=$(sed -n '/mailadmin/{n;s/\s*password: \(.*\)/\1/;p;q}' ~/${DOMAIN}.txt)
## Cấu hình ISPmailadmin ##
isp_pwd=$(pwgen 30 1);
cat >> ~/${DOMAIN}.txt <<EOT
Quản lý mail server:
https://${HOSTNAME}/mailadmin
user: admin
Password: $isp_pwd
EOT
sed "s/mysql_user/mailadmin/
s/mysql_pass/$ADM_PWD/
s/\(.*'IMA_CFG_ADM_USER'\).*/\1,'admin');/
s/\(.*'IMA_CFG_ADM_PASS'\).*/\1,'$isp_pwd');/
s/.*\(define.*IMA_LOGINTYPE_ACCOUNT.*\)/\1/
" -i /var/www/mailserver/mailadmin/cfg/config.inc.php
## Cấu hình website ISPmailadmin ##
grep -q 'Alias /mailadmin' /etc/apache2/sites-available/mailserver-http.conf || sed "/<\/VirtualHost>/i \ Alias /mailadmin $web/mailadmin" -i /etc/apache2/sites-available/mailserver-httpd.conf
## Khởi động lại Apache2 ##
systemctl reload apache2