Mail P3: PostfixAdmin – Tạo hộp thư ảo trên máy chủ thư Debian

Chúng ta đã tìm hiểu cách thiết lập máy chủ Postfix SMTP và máy chủ Dovecot IMAP, nhưng cho đến nay chúng ta chỉ có thể có địa chỉ email cho người dùng có tài khoản Unix cục bộ. Hướng dẫn này sẽ chỉ cho bạn cách tạo hộp thư ảo trên máy chủ thư Debian bằng PostfixAdmin, đây là giao diện dựa trên web nguồn mở để định cấu hình và quản lý máy chủ email dựa trên Postfix cho nhiều tên miền và người dùng.

Với hộp thư ảo, chúng ta không cần tạo tài khoản Unix cục bộ cho từng địa chỉ email. Nếu bạn định thiết lập máy chủ thư cho một công ty hoặc tổ chức, tốt hơn hết là bạn nên có một cách dễ dàng để tạo hộp thư ảo trên nền giao diện web, cũng cho phép người dùng thay đổi mật khẩu của họ. Đó là lúc PostfixAdmin xuất hiện.

Tính năng PostfixAdmin

  • Quản lý hộp thư, tên miền ảo và bí danh.
  • Tin nhắn về kỳ nghỉ/vắng mặt (Cá nhân tôi nghĩ tính năng này được thực hiện tốt hơn trong Roundcube Webmail.).
  • Tên miền bí danh (chuyển tiếp tên miền này sang tên miền khác với xác thực người nhận).
  • Người dùng có thể quản lý hộp thư của riêng mình (thay đổi bí danh, mật khẩu và tin nhắn kỳ nghỉ).
  • Hỗ trợ hạn ngạch cho các hộp thư riêng lẻ và tổng hạn ngạch của một miền.
  • Tích hợp tìm nạp thư: Bạn có thể tìm nạp email từ địa chỉ email ban đầu sang địa chỉ email mới của mình.
  • Ứng dụng khách dòng lệnh postfixadmin-cli dành cho những người không muốn nhấp chuột vào giao diện web. 😉

Lưu ý: Sau khi hoàn thành phần 3, bạn không thể sử dụng tài khoản Unix cục bộ làm địa chỉ email nữa mà phải tạo địa chỉ email từ giao diện web PostfixAdmin.

Yêu cầu

Tôi cho rằng bạn đã theo dõi phần 1 và phần 2 của loạt bài hướng dẫn này. Nếu bạn đã làm theo các hướng dẫn về máy chủ thư trên các trang web khác, tôi khuyên bạn nên xóa sạch các cấu hình của mình (sudo apt purge postfix dovecot-core) và bắt đầu lại với loạt bài hướng dẫn của tôi, để bạn sẽ không bị nhầm lẫn bởi các quá trình thiết lập khác nhau.

Khi đã đáp ứng được các yêu cầu trên, hãy cài đặt và định cấu hình PostfixAdmin.

Bước 1: Cài đặt máy chủ cơ sở dữ liệu MariaDB

PostfixAdmin được viết bằng PHP và yêu cầu cơ sở dữ liệu (MySQL/MariaDB, PostgreSQL hoặc SQLite). Bài viết này sẽ sử dụng cơ sở dữ liệu MariaDB, một cơ sở dữ liệu thay thế cho MySQL. Nó được phát triển bởi các thành viên cũ của nhóm MySQL, những người lo ngại rằng Oracle có thể biến MySQL thành một sản phẩm nguồn đóng. Nhập các lệnh sau để cài đặt MariaDB trên Debian.

sudo apt update 
sudo apt install mariadb-server mariadb-client

Sau khi cài đặt xong, máy chủ MariaDB sẽ tự động khởi động. Hãy sử dụng systemctl để kiểm tra trạng thái của nó.

systemctl status mariadb

Đầu ra mẫu:

Nếu nó không chạy, hãy khởi động nó bằng lệnh này:

sudo systemctl start mariadb

Để cho phép MariaDB tự động khởi động khi khởi động, hãy chạy lệnh sau.

sudo systemctl enable mariadb

Bây giờ hãy chạy tập lệnh bảo mật sau cài đặt.

sudo mysql_secure_installation

Khi nó yêu cầu bạn nhập mật khẩu root MariaDB, hãy nhấn phím Enter vì mật khẩu root chưa được đặt, tài khoản root của bạn đã được bảo mật nên bạn nên trả lời n để không đặt mật khẩu.

Tiếp theo, bạn có thể nhấn Enter để trả lời tất cả các câu hỏi còn lại, thao tác này sẽ xóa người dùng ẩn danh, vô hiệu hóa đăng nhập root từ xa và xóa cơ sở dữ liệu kiểm tra. Bước này là yêu cầu cơ bản để bảo mật cơ sở dữ liệu MariaDB. (Lưu ý rằng Y được viết hoa, có nghĩa là nó là câu trả lời mặc định khi nhấn Enter.).

Bước 2: Tải xuống PostfixAdmin trên máy chủ Debian

PostfixAdmin được bao gồm trong kho lưu trữ mặc định của Debian, tuy nhiên tôi không khuyến khích sử dụng nó vì những lý do sau:

  • Nó có thể tạo ra sự cố khi bạn nâng cấp hệ thống Ubuntu lên phiên bản mới, dẫn đến lỗi nâng cấp.
  • Nếu bạn sử dụng Nginx, gói postfixadmin có thể tự động cài đặt Apache trên hệ thống của bạn.
  • Nếu bạn sử dụng MySQL, gói này có thể xóa MySQL khỏi hệ thống của bạn.
  • Gói postfixadmin mặc định thỉnh thoảng có vấn đề về vòng lặp đăng nhập.

Vì vậy mình sẽ hướng dẫn các bạn cách cài đặt phiên bản PostfixAdmin mới nhất. Vào trang PostfixAdmin Gitbub để tải xuống phiên bản mới nhất. Bạn có thể sử dụng công cụ wget để tải xuống từ dòng lệnh. Liên kết tải xuống luôn có sẵn ở định dạng bên dưới. Nếu một phiên bản mới xuất hiện, chỉ cần thay thế 3.3.13 bằng số phiên bản mới.

Vì vậy mình sẽ hướng dẫn các bạn cách cài đặt phiên bản PostfixAdmin mới nhất. Vào trang PostfixAdmin Gitbub page để tải xuống phiên bản mới nhất. Bạn có thể sử dụng công cụ wget để tải xuống từ dòng lệnh. Liên kết tải xuống luôn có sẵn ở định dạng bên dưới. Nếu một phiên bản mới xuất hiện, chỉ cần thay thế 3.3.11 bằng số phiên bản mới.

sudo apt install wget 
wget https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.3.13.tar.gz

Sau khi tải xuống, giải nén kho lưu trữ vào thư mục /var/www/ và đổi tên thành postfixadmin.

sudo mkdir -p /var/www/
sudo tar xvf postfixadmin-3.3.13.tar.gz -C /var/www/
sudo mv /var/www/postfixadmin-postfixadmin-3.3.13 /var/www/postfixadmin

Bước 3: Thiết lập quyền

PostfixAdmin yêu cầu thư mục templates_c và máy chủ web cần quyền truy cập đọc và ghi vào thư mục này, vì vậy hãy chạy các lệnh sau.

sudo mkdir /var/www/postfixadmin/templates_c 
sudo apt install acl 
sudo setfacl -R -m u:www-data:rwx /var/www/postfixadmin/templates_c/

Bắt đầu với Dovecot 2.3.11, người dùng máy chủ web cần có quyền đọc chứng chỉ Let’s Encrypt TLS để thực hiện băm mật khẩu. Hãy chạy hai lệnh sau để cấp quyền.

sudo setfacl -R -m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/

Bước 4: Tạo cơ sở dữ liệu và người dùng cho PostfixAd

Đăng nhập vào MySQL/MariaDB shell bằng root bằng lệnh sau.

sudo mysql -u root

Khi bạn đã đăng nhập, hãy tạo cơ sở dữ liệu cho PostfixAdmin bằng lệnh sau. Tôi đặt tên là postfixadmin, nhưng bạn có thể sử dụng bất kỳ tên nào bạn thích. (Đừng quên dấu chấm phẩy.).

create database postfixadmin;

Sau đó nhập lệnh bên dưới để tạo người dùng cơ sở dữ liệu cho PostfixAdmin. Lệnh này cũng cấp tất cả các đặc quyền của cơ sở dữ liệu postfixadmin cho người dùng. Thay thế postfixadmin_password bằng mật khẩu ưa thích của bạn. Lưu ý rằng mật khẩu không được chứa ký tự #, nếu không bạn có thể không thực hiện được để đăng nhập sau.

grant all privileges on postfixadmin.* to 'postfixadmin'@'localhost' identified by 'postfixadmin_password';

Xóa bảng đặc quyền để các thay đổi có hiệu lực và sau đó thoát khỏi trình bao MariaDB.

flush privileges;
exit;

Bước 5: Cấu hình PostfixAdmin

The default PostfixAdmin configuration file is config.inc.php. We need to create a config.local.php file and add custom configurations.

File cấu hình mặc định của PostfixAdmin là config.inc.php, chúng ta cần tạo file config.local.php và thêm các cấu hình tùy chỉnh.

sudo nano /var/www/postfixadmin/config.local.php

Thêm các dòng sau vào tệp để PostfixAdmin có thể kết nối với cơ sở dữ liệu MySQL/MariaDB. Thay thế postfixadmin_password bằng mật khẩu PostfixAdmin thực được tạo ở bước 4.

<?php
$CONF['configured'] = true;
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_port'] = '3306';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'postfixadmin_password';
$CONF['database_name'] = 'postfixadmin';
$CONF['encrypt'] = 'dovecot:ARGON2I';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw -r 5";
if(@file_exists('/usr/bin/doveadm')) { // @ to silence openbase_dir stuff; see https://github.com/postfixadmin/postfixadmin/issues/171
    $CONF['dovecotpw'] = "/usr/bin/doveadm pw -r 5"; # debian
}

Lưu và đóng tệp. Lưu ý rằng chúng tôi sẽ sử dụng sơ đồ mật khẩu ARGON2I.

Bước 6: Tạo máy chủ ảo Apache PostfixAdmin

Apache

Nếu bạn sử dụng máy chủ web Apache, hãy tạo một máy chủ ảo cho PostfixAdmin.

sudo nano /etc/apache2/sites-available/postfixadmin.conf

Đặt văn bản sau vào tệp. Thay thế postfixadmin.znho.jp bằng tên miền thực của bạn và đừng quên đặt bản ghi DNS A cho nó.

<VirtualHost *:80>
  ServerName postfixadmin.znho.jp
  DocumentRoot /var/www/postfixadmin/public

  ErrorLog ${APACHE_LOG_DIR}/postfixadmin_error.log
  CustomLog ${APACHE_LOG_DIR}/postfixadmin_access.log combined

  <Directory />
    Options FollowSymLinks
    AllowOverride All
  </Directory>

  <Directory /var/www/postfixadmin/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

</VirtualHost>

Lưu và đóng tệp, sau đó kích hoạt máy chủ ảo này bằng:

sudo a2ensite postfixadmin.conf

Tải lại Apache để những thay đổi có hiệu lực.

sudo systemctl reload apache2

Bây giờ bạn có thể thấy trình hướng dẫn cài đặt dựa trên web PostfixAdmin tại

http://postfixadmin.znho.jp/setup.php.

Bước 7: Cài đặt các mô-đun PHP bắt buộc và được đề xuất

Chạy lệnh sau để cài đặt các mô-đun PHP được PostfixAdmin yêu cầu hoặc khuyến nghị trên Debian 11.

sudo apt install php7.4-fpm php7.4-imap php7.4-mbstring php7.4-mysql php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-bz2 php7.4-intl php7.4-gmp

Nếu bạn sử dụng Debian 10, hãy chạy lệnh sau.

sudo apt install php7.3-fpm php7.3-imap php7.3-mbstring php7.3-mysql php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-bz2 php7.3-intl php7.3-gmp

Nếu bạn sử dụng Apache, bạn cũng cần cài đặt gói libapache2-mod-php.

sudo apt install libapache2-mod-php

Sau đó khởi động lại Apache.

sudo systemctl restart apache2

Bước 8: Kích hoạt HTTPS

Để mã hóa lưu lượng HTTP, chúng ta có thể kích hoạt HTTPS bằng cách cài đặt chứng chỉ TLS miễn phí do Let’s Encrypt cấp. Chạy lệnh sau để cài đặt ứng dụng khách Let’s Encrypt (certbot) trên máy chủ Debian.

sudo apt install certbot

Nếu bạn sử dụng Apache, hãy cài đặt plugin Certbot Apache.

sudo apt install python3-certbot-apache

Và chạy lệnh này để lấy và cài đặt chứng chỉ TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email z@znho.jp -d postfixadmin.znho.jp

–nginx: Sử dụng plugin nginx.

–apache: Sử dụng plugin Apache.

–agree-tos: Đồng ý với các điều khoản dịch vụ.

–redirect: Buộc chuyển hướng HTTPS bằng 301.

–hsts: Thêm tiêu đề Strict-Transport-Security cho mọi phản hồi HTTP. Buộc trình duyệt luôn sử dụng TLS cho miền. Bảo vệ chống lại việc tước bỏ SSL/TLS.

–staple-ocsp: Cho phép ghim OCSP. Phản hồi OCSP hợp lệ được ghim vào chứng chỉ mà máy chủ cung cấp trong TLS.

Bây giờ, chứng chỉ sẽ được lấy và cài đặt tự động, được biểu thị bằng thông báo bên dưới.

Bước 9: Kích hoạt Thống kê trong Dovecot

PostfixAdmin cần đọc số liệu thống kê của Dovecot. Chỉnh sửa file cấu hình Dovecot.

sudo nano /etc/dovecot/conf.d/10-master.conf

Thêm các dòng sau vào cuối tập tin này.

service stats {
    unix_listener stats-reader {
    user = www-data
    group = www-data
    mode = 0660
}

unix_listener stats-writer {
    user = www-data
    group = www-data
    mode = 0660
  }
}

Lưu và đóng tệp, sau đó thêm máy chủ web vào group dovecot.

sudo gpasswd -a www-data dovecot

Khởi động lại Dovecot.

sudo systemctl restart dovecot

Cấp quyền cho người dùng www-data.

sudo setfacl -R -m u:www-data:rwx /var/run/dovecot/stats-reader /var/run/dovecot/stats-writer

Bước 10: Hoàn tất cài đặt trong trình duyệt web

Truy cập postfixadmin.znho.jp/setup.php để chạy trình hướng dẫn thiết lập dựa trên web. Trước tiên, bạn cần tạo mật khẩu thiết lập cho PostfixAdmin.

Sau khi tạo mật khẩu băm(password hash), PostfixAdmin sẽ hiển thị một dòng như bên dưới.

$CONF['setup_password'] = '$2y$10$58fIawuOb5y538RMBol/DOoqv2bJ7zhPRzRO.4Xq7MLeQJHmaFwF2';

Bạn cần mở tệp config.local.php.

sudo nano /var/www/postfixadmin/config.local.php

Thêm dòng hiển thị trên trang cài đặt PostfixAdmin vào cuối file như bên dưới.

Sau khi lưu tệp, bạn cần làm mới trang thiết lập PostfixAdmin và nhập lại mật khẩu thiết lập, sau đó tạo tài khoản quản trị viên. Vui lòng không sử dụng địa chỉ email Gmail, Yahoo Mail hoặc Microsoft cho tài khoản quản trị viên, nếu không bạn có thể không có thể đăng nhập sau. Sử dụng địa chỉ email trên tên miền của riêng bạn. Bạn có thể tạo địa chỉ email sau trong PostfixAdmin.

Khi tài khoản superadmin được tạo, bạn có thể đăng nhập vào PostfixAdmin tại postfixadmin.znho.jp/login.php.

Bước 11: Định cấu hình Postfix để sử dụng cơ sở dữ liệu MySQL/MariaDB

By default, Postfix delivers emails only to users with a local Unix account. To make it deliver emails to virtual users whose information is stored in the database, we need to configure Postfix to use virtual mailbox domains.

Theo mặc định, Postfix chỉ gửi email cho người dùng có tài khoản Unix cục bộ. Để nó gửi email đến người dùng ảo có thông tin được lưu trữ trong cơ sở dữ liệu, chúng ta cần định cấu hình Postfix để sử dụng miền hộp thư ảo.

Đầu tiên, chúng ta cần thêm hỗ trợ MySQL map cho Postfix bằng cách cài đặt gói postfix-mysql.

sudo apt install postfix-mysql

Sau đó chỉnh sửa tệp cấu hình chính Postfix.

sudo nano /etc/postfix/main.cf

Thêm các dòng sau vào cuối tập tin này.

virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_mailbox_maps =
   proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
virtual_alias_maps =
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
  • virtual_mailbox_domains trỏ đến một tệp sẽ cho Postfix biết cách tra cứu thông tin tên miền từ cơ sở dữ liệu.
  • virtual_mailbox_maps trỏ đến các tệp sẽ cho Postfix biết cách tra cứu địa chỉ email từ cơ sở dữ liệu.
  • virtual_alias_maps trỏ đến các tệp sẽ cho Postfix biết cách tra cứu bí danh từ cơ sở dữ liệu.

Nếu muốn sử dụng dovecot để gửi email đến kho thư của người dùng ảo, vì vậy, hãy thêm dòng sau vào cuối tệp này.

virtual_transport = lmtp:unix:private/dovecot-lmtp

Lưu và đóng file.Tiếp theo, chúng ta cần tạo từng file .cf.Tạo thư mục sql.

sudo mkdir /etc/postfix/sql/

Tạo file mysql_virtual_domains_maps.cf.

sudo nano /etc/postfix/sql/mysql_virtual_domains_maps.cf

Thêm nội dung sau, thay thế mật khẩu bằng mật khẩu postfixadmin bạn đã đặt ở Bước 2.

user = postfixadmin
password = postfixadmin_password
hosts = localhost
dbname = postfixadmin
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
#query = SELECT domain FROM domain WHERE domain='%s'
#optional query to use when relaying for backup MX
#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
#expansion_limit = 100

Tạo tệp mysql_virtual_mailbox_maps.cf.

sudo nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf

Thêm nội dung sau.

user = postfixadmin
password = postfixadmin_password
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
#expansion_limit = 100

Tạo file mysql_virtual_alias_domain_mailbox_maps.cf.

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

Thêm nội dung sau.

user = postfixadmin
password = postfixadmin_password
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'

Tạo file mysql_virtual_alias_maps.cf.

sudo nano /etc/postfix/sql/mysql_virtual_alias_maps.cf

Thêm nội dung sau.

user = postfixadmin
password = postfixadmin_password
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
#expansion_limit = 100

Tạo file mysql_virtual_alias_domain_maps.cf.

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf

Thêm nội dung sau.

user = postfixadmin
password = postfixadmin_password
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

Tạo file mysql_virtual_alias_domain_catchall_maps.

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

Thêm nội dung sau.

# handles catch-all settings of target-domain
user = postfixadmin
password = postfixadmin_password
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

Vì mật khẩu cơ sở dữ liệu được lưu trữ ở dạng văn bản thuần túy nên chỉ người dùng postfix và root mới có thể đọc được chúng, việc này được thực hiện bằng cách thực hiện hai lệnh sau.

sudo chmod 0640 /etc/postfix/sql/*
sudo setfacl -R -m u:postfix:rx /etc/postfix/sql/

Tiếp theo chúng ta cần thay đổi giá trị của tham số mydestination trong Postfix.Hiển thị giá trị hiện tại:

sudo postconf mydestination

Tham số mydestination chứa danh sách các tên miền sẽ nhận email được gửi đến các tài khoản Unix cục bộ. Trong phần 1, chúng ta đã thêm tên miền apex (như linuxbabe.com) vào mydestination. Vì chúng ta sẽ sử dụng hộp thư ảo nên chúng ta cần phải xóa tên miền apex khỏi danh sách bằng cách đưa ra lệnh sau.

sudo postconf -e "mydestination = \$myhostname, localhost.\$mydomain, localhost"

Bây giờ hãy mở lại tệp cấu hình chính Postfix.

sudo nano /etc/postfix/main.cf

Thêm các dòng sau vào cuối tập tin này.

virtual_mailbox_base = /var/vmail
virtual_minimum_uid = 2000
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000

Dòng đầu tiên xác định vị trí cơ sở của các tập tin thư. 3 dòng còn lại xác định ID người dùng và ID nhóm Postfix sẽ sử dụng khi gửi email đến hộp thư. Chúng tôi sử dụng ID người dùng 2000 và ID nhóm 2000.

Lưu và đóng tệp, khởi động lại Postfix để thay đổi có hiệu lực.

sudo systemctl restart postfix

Tiếp theo, chúng ta cần tạo một người dùng có tên vmail với ID 2000 và một nhóm có ID 2000.

sudo adduser vmail --system --group --uid 2000 --disabled-login --no-create-home

Tạo vị trí cơ sở thư.

sudo mkdir /var/vmail/

Đặt vmail làm chủ sở hữu.

sudo chown vmail:vmail /var/vmail/ -R

Bước 12: Định cấu hình Dovecot để sử dụng cơ sở dữ liệu MySQL/MariaDB

Chúng ta cũng cần định cấu hình máy chủ Dovecot IMAP để truy vấn thông tin người dùng từ cơ sở dữ liệu. Trước tiên, hãy chạy lệnh sau để thêm hỗ trợ MySQL cho Dovecot.

sudo apt install dovecot-mysql

Sau đó chỉnh sửa tệp 10-mail.conf.

sudo nano /etc/dovecot/conf.d/10-mail.conf

Trong phần 2, chúng ta đã sử dụng mail_location sau, các email được lưu trữ trong thư mục Maildir trong thư mục chính của mỗi người dùng.

mail_location = maildir:~/Maildir

Vì hiện tại chúng tôi đang sử dụng miền hộp thư ảo nên chúng tôi cần kích hoạt mail_home cho người dùng ảo bằng cách thêm dòng sau vào tệp, vì người dùng ảo không có thư mục chính theo mặc định.

mail_home = /var/vmail/%d/%n/

Lưu và đóng tệp, sau đó chỉnh sửa tệp 10-auth.conf.

sudo nano /etc/dovecot/conf.d/10-auth.conf

Trong phần 2, chúng tôi đã sử dụng giá trị sau cho auth_username_format.

auth_username_format = %n

%n sẽ loại bỏ tên miền nếu nó được cung cấp.Vì trong phần 2 chúng ta đã sử dụng tài khoản Unix cục bộ cho tên người dùng của mọi địa chỉ email, nên chúng ta phải sử dụng %n để loại bỏ tên miền, để người dùng có thể đăng nhập bằng email đầy đủ Địa chỉ.

Bây giờ chúng ta đang sử dụng miền hộp thư ảo, nghĩa là tên người dùng của mọi địa chỉ email đều bao gồm phần miền nên chúng ta cần thay đổi auth_username_format như sau. %u sẽ không bỏ miền. Điều này cho phép người dùng đăng nhập với đầy đủ địa chỉ email.

auth_username_format = %u

Sau đó tìm dòng sau.

#auth_default_realm =

Đổi thành

auth_default_realm = znho.jp

Điều này nhằm đảm bảo những người dùng không nhập phần @znho.jp trong trường tên người dùng vẫn có thể đăng nhập. Dovecot sẽ thêm phần @znho.jp nếu người dùng không cung cấp phần đó.

Tiếp theo, bỏ ghi chú dòng sau ở cuối tệp này để Dovecot có thể truy vấn thông tin người dùng từ cơ sở dữ liệu MySQL/MariaDB.

!include auth-sql.conf.ext

Bây giờ bạn có thể không muốn người dùng Unix cục bộ gửi email mà không đăng ký địa chỉ email trong PostfixAdmin, sau đó comment dòng sau bằng cách thêm ký tự # ở đầu, để Dovecot sẽ không truy vấn local /etc/passwd or /etc/shadow file.

#!include auth-system.conf.ext

Có thể hữu ích nếu thêm hai dòng sau vào tệp này để gỡ lỗi các vấn đề đăng nhập. Các lỗi đăng nhập sẽ được ghi vào tệp /var/log/mail.log. (Khi người dùng có thể đăng nhập mà không gặp vấn đề gì, bạn có thể comment hai dòng sau dòng.).

auth_debug = yes
auth_debug_passwords = yes

Lưu và đóng tập tin.

Chỉnh sửa tệp dovecot-sql.conf.ext.

sudo nano /etc/dovecot/dovecot-sql.conf.ext

Đây là nội dung bạn nên có trong tệp này. Theo mặc định, tất cả các dòng trong tệp này đều được comment, vì vậy bạn chỉ cần sao chép và dán chúng ở cuối. Thay thế postfixadmin_password bằng mật khẩu postfixadmin bạn đã đặt ở Bước 2.

driver = mysql

connect = host=localhost dbname=postfixadmin user=postfixadmin password=postfixadmin_password

default_pass_scheme = ARGON2I

password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1'

user_query = SELECT maildir, 2000 AS uid, 2000 AS gid FROM mailbox WHERE username = '%u' AND active='1'

iterate_query = SELECT username AS user FROM mailbox

Khởi động lại Dovecot.

sudo systemctl restart dovecot

Khi người dùng cố gắng đăng nhập, Dovecot sẽ sử dụng thuật toán Argon2 để tạo hàm băm mật khẩu từ mật khẩu mà người dùng đã nhập, sau đó so sánh nó với hàm băm mật khẩu được lưu trữ trong cơ sở dữ liệu. Nếu khớp, thì người dùng có thể đăng nhập thành công .

Bước 13: Thêm tên miền và hộp thư trong PostfixAdmin

Đăng nhập vào giao diện web PostfixAdmin với tư cách quản trị viên. Nhấp vào tab Domain List và chọn New Domain để thêm tên miền. Bạn có thể chọn số lượng bí danh và hộp thư được phép cho tên miền này.

Sau đó nhấp vào tab Virtual List và chọn Add Mailbox để thêm địa chỉ email mới cho miền của bạn.

Tiếp theo, bạn có thể mở ứng dụng email khách trên máy tính để bàn của mình như Mozilla Thunderbird và thêm tài khoản thư.

  • Trong phần incoming server, chọn giao thức IMAP, nhập mail.your-domain.com làm tên máy chủ, chọn cổng 143 và STARTTLS. Chọn mật khẩu thông thường làm phương thức xác thực.
  • Trong phần outgoing, chọn giao thức SMTP, nhập mail.your-domain.com làm tên máy chủ, chọn cổng 587 và STARTTLS. Chọn mật khẩu thông thường làm phương thức xác thực.

Gợi ý: Bạn cũng có thể sử dụng cổng 993 với mã hóa SSL/TLS cho IMAP và sử dụng cổng 465 với mã hóa SSL/TLS cho SMTP. Bạn không nên sử dụng cổng 25 làm cổng SMTP trong ứng dụng thư để gửi email đi.

Bây giờ bạn có thể kết nối với máy chủ email của riêng mình, đồng thời gửi và nhận bằng ứng dụng email trên máy tính để bàn của bạn! Lưu ý rằng bạn không thể sử dụng tài khoản Unix cục bộ để đăng nhập ngay bây giờ. Bạn phải đăng nhập bằng người dùng ảo được tạo từ giao diện web PostfixAdmin.

Nguồn tham khảo: linuxbabe.com

Bình luận

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *