Hướng dẫn cách thiết lập Server Email riêng với Modoboa

Modoboa là một nền tảng quản lý và máy chủ thư mã nguồn mở dạng mô-đun tích hợp với phần mềm nổi tiếng như Postfix hoặc Dovecot. Cơ sở dữ liệu SQL (MySQL, PostgreSQL hoặc SQLite) được sử dụng làm điểm giao tiếp trung tâm giữa tất cả các thành phần. Nhờ đó, bạn có thể tạo máy chủ email an toàn và đáng tin cậy của riêng mình.

Tóm lại, với Modoboa, bạn sẽ không phải phụ thuộc vào các nhà cung cấp dịch vụ email. Đây là những tính năng chính của Modoboa:

  • Mã hóa tất cả các thông tin liên lạc giữa máy chủ email của bạn và bên ngoài theo mặc định bằng giao thức TLS và chứng chỉ SSL hợp lệ do Let’s Encrypt cung cấp.
  • Bảng quản trị – Bảng điều khiển trực tuyến để quản lý tên miền, hộp thư, bí danh, v.v.!
  • Amavis với tính năng quét vi-rút SpamAssassin và ClamAV, loại nội dung bị cấm, v.v.
  • Tạo quy tắc lọc để sắp xếp email
  • Tạo miền, hộp thư và bí danh không giới hạn
  • Tạo quy tắc lọc để sắp xếp email
  • Tối ưu hóa danh tiếng – Cải thiện danh tiếng của email bằng các giao thức tiêu chuẩn như DKIM hoặc DMARC, bằng cách này, bạn có thể đảm bảo email của mình sẽ luôn được gửi.
  • Hỗ trợ cơ sở dữ liệu MySQL/MariaDB hoặc PostgreSQL.
  • và nhiều cái khác…

Trong hướng dẫn này, chúng tôi sẽ chỉ cách cài đặt Modoboa trên VPS Ubuntu 20.04 nhưng hướng dẫn cũng có thể dễ dàng điều chỉnh cho các hệ điều hành khác.

Yêu Cầu Hệ Thống

Modoboa có thể được cài đặt trên nhiều hệ điều hành khác nhau và nhiều cấu hình khác nhau. Tuy nhiên, nó có một số yêu cầu bạn nên biết:

  • Trước tiên, bạn sẽ cần triển khai một phiên bản sạch của máy chủ đám mây với yêu cầu hệ thống tối thiểu là ít nhất 4 GB RAM, 2 lõi CPU và 15 GB dung lượng lưu trữ.
  • Hệ điều hành: Debian 8 – 10 / Ubuntu 14.04 trở lên / CentOS 7
  • Đảm bảo rằng Cổng 25 không bị chặn : Cổng 25 được sử dụng để liên lạc giữa các máy chủ thư và nó bị chặn theo mặc định đối với người dùng mới với một số nhà cung cấp. Port 25 cần được mở , nếu không, máy chủ của bạn có thể không nhận hoặc/và gửi email.
  • Mình đã test trên 2Gb ram 2 core rồi mà yếu lắm nhé! Luôn full ram, có swap rồi mà vẫn giật lag.

Lưu ý rằng bạn không cần đăng ký tên miền mới, bạn có thể sử dụng bất kỳ tên miền hiện có nào. Chỉ cần đảm bảo rằng bạn đang tạo một mục nhập Miền DNS mới và các bản ghi DNS sau tồn tại cho miền của bạn. Tôi sẽ sử dụng tên miền ‘hoanggiangnam.com‘ làm ví dụ, hãy thay thế bằng tên miền của bạn.

Đầu tiên bạn cần trỏ DNS về IP_VPS_Server cái đã

A - @ - IP_VPS
MX - @ - mail.hoanggiangnam.com
autoconfig
autodiscover

tương tụ như hình bên dưới nhé

Tiếp theo là Reverse DNS được đặt trên địa chỉ IP_VPS của bạn, ví dụ: mail.hoanggiangnam.com

Bạn có thể thay – chỉnh sửa ở phần Network / như hình bên dưới:

Bắt buộc có nhé! nếu không thì sẽ bị bộ lọc một số nhà cung cấp email như gmail google, microsoft.. từ chối nhận gửi vì SPAM.. Nếu ko edit được thì bạn liên hệ nhà cung cấp VPS họ sửa cho bạn.

2. Cài đặt

Đầu tiên thì bạn nên cài mới VPS cho sạch sẽ, nếu có Apache thì gỡ ra. Đảm bảo bạn có quyền đăng nhập với root, còn ko thì thêm sudo vào.
sudo service apache2 stop
sudo apt-get remove apache2* -y
rm -rf /etc/apache2
rm -rf /var/www/html/index.html

sudo hostnamectl set-hostname mail.hoanggiangnam.com

sudo apt-get update && apt-get upgrade -y

sudo apt-get install git nano time -y
sudo apt-get install virtualenv python3-pip -y

Quá trình cài đặt hoặc update lỗi do DNS ko cài được thì có thể dùng lệnh sau để thay DNS tạm cho VPS

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null

git clone https://github.com/modoboa/modoboa-installer
cd modoboa-installer

sudo ./run.py --stop-after-configfile-check hoanggiangnam.com

sudo nano installer.cfg

— sửa lại:

[database] engine = mysql
[certificate] type = letsencrypt
email = [email protected]

sudo ./run.py hoanggiangnam.com

Chạy xong thì vào miền xem ok ko nếu ko thì mở port ra thử – còn ok thì bỏ qua bước mở port bên dưới

Mở 2 Port 80 443 cho Nginx
$ sudo fuser -k 80/tcp
$ sudo fuser -k 443/tcp
$ sudo service nginx restart

Chạy với tên miền dạng như sau:

https://mail.hoanggiangnam.com
admin | password

Nếu cài xong mà lỗi SSL ko truy cập được thì tham khảo cách fix tại đây: https://serverfault.com/questi…

 

telnet gmail-smtp-in.l.google.com 25

 

Thay mật khẩu tại đây: (hình dưới)

 

Thêm tên miền vào:

  • Create a domain administrator – Chọn Yes
  • Name – Sử dụng postmaster ([email protected]), postmaster là quản trị viên của máy chủ thư. Lỗi trong quá trình xử lý email được chuyển đến địa chỉ email này. (thay lại bất cứ thứ gì bạn muốn)
  • Random password – No
  • With a mailbox – Yes
  • Create aliases – Yes

 

Sau đó cấu hình trỏ DKIM, DMARC, SPF.. vào DNS như hình trên Cloudflare ấy nhé. Sau khi cấu hình đúng thì nó xanh hết như hình dưới.

 

Gửi Email thử được không nào!

Vào identities trên Menu hoặc vào phần Domain và click vào tên miền:

Sau đó nhấp vào ‘Thêm’ -> Tài khoản và điền vào các chi tiết sau:

  • Vai trò – Người dùng đơn giản
  • Tên người dùng  – [email protected]
  • Tên và Họ – Tự giải thích
  • Mật khẩu ngẫu nhiên – Không bật
  • Mật khẩu và Xác nhận mật khẩu – Strong Passwords
  • Đã bật – Check

Sau khi thiết lập, nhấp vào nút Next để tiếp tục.

Sau đó, đăng xuất khỏi tài khoản quản trị viên và đăng nhập bằng tài khoản người dùng đơn giản mới.

Sau khi đăng nhập, hãy chuyển đến phần Webmail và nhấp vào nút Soạn thư. Sử dụng webmail để thử gửi thư đến bất kỳ địa chỉ email nào khác mà bạn có. Nếu thành công, bạn sẽ thấy thông báo như bên dưới xác nhận thư đã được gửi.

Nếu bạn gặp lỗi khi gửi thư, hãy tham khảo phần Khắc phục sự cố bên dưới.

 

Tự động gia hạn SSL – Auto-Renew Let’s Encrypt TLS Certificate

 

Let’s Encrypt cấp chứng chỉ có giá trị trong khoảng thời gian 3 tháng. Khi chứng chỉ còn trong vòng 30 ngày kể từ ngày hết hạn, Let’s Encrypt sẽ cho phép gia hạn chứng chỉ. Sau khi gia hạn, các chứng chỉ mới sẽ có hiệu lực trong 90 ngày nữa.

https://community.letsencrypt.org/t/certbot-auto-deprecated-explanation-and-solutions/139821

Swap – Cải thiện RAM tí tẹo

Modoboa đi kèm với SpamAssassin, Clamav và Amavis, có thể tiêu tốn rất nhiều RAM

Ví dụ: trên hệ thống có 2GB RAM, bạn có thể sử dụng lệnh Fallocate để tạo kích thước tệp là 2GB như hình bên dưới.

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Kiểm tra xem hoạt động chưa:
sudo swapon

Kết quả:

NAME TYPE SIZE  USED  PRIO
/swapfile file 2G  362.3M -2

Nếu bạn thấy nội dung như thế này trong kết quả ví dụ ở trên, thì Swap của bạn đang hoạt động.

Bạn cũng sẽ muốn biến tệp swap thành vĩnh viễn bằng cách kích hoạt nó khi khởi động hệ thống. Bạn có thể làm như vậy bằng cách chạy lệnh sau:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Bạn cũng có thể muốn điều chỉnh tốc độ mà máy chủ của bạn sẽ sử dụng tệp hoán đổi. Điều này được thực hiện bằng cách thiết lập một giá trị hoán đổi. Giá trị càng cao, khả năng máy chủ của bạn sử dụng hoán đổi càng cao. Ví dụ ở giá trị 100, nó sẽ sử dụng hoán đổi nhiều nhất có thể. Nếu nó được đặt thành 0, hệ thống sẽ hoàn toàn không sử dụng hoán đổi.

Một điểm khởi đầu tốt là sử dụng một giá trị trong khoảng 20 – 30.

Để đặt giá trị hoán đổi, hãy mở tệp sysctl.conf của bạn trong trình soạn thảo văn bản.

sudo nano /etc/sysctl.conf

thêm vào dòng sau:

vm.swappiness=25

Xem thêm cách SWAP: https://hoanggiangnam.com/huong-dan-tao-va-kich-hoat-swap-tren-vps/

Xử lý sự cố

 

Nếu vì lý do nào đó, bạn không thể khiến Modoboa hoạt động hoặc gặp sự cố khi gửi email, bạn có thể kiểm tra nhật ký thư (/var/log/mail.log) để biết manh mối. Để tăng tốc độ khắc phục sự cố, bạn có thể muốn sử dụng Multitail, cho phép bạn xem nhiều nhật ký trong thời gian thực.

Cài đặt Multitail

sudo apt install multitail

Để sử dụng multitail, chỉ cần sử dụng theo cú pháp sau:
sudo multitail file1 file2 …

Ví dụ: bạn có thể xem nhật ký thư của mình bằng lệnh sau:

sudo multitail /var/log/mail.log

Bạn có thể kiểm tra tài liệu của họ để biết nhiều hơn về multitail.

Can’t connect to a UNIX socket /var/run/clamav/clamd.ctl…

Nếu bạn thấy lỗi như bên dưới hoặc lỗi tương tự, thì ClamAV-daemon của bạn có thể không chạy.

amavis[12991]: (12991-01) (!)connect to /var/run/clamav/clamd.ctl failed, attempt #1: Can’t connect to a UNIX socket /var/run/clamav/clamd.ctl:’

Điều đó không có nghĩa là thư của bạn sẽ không được gửi, chỉ là bạn không có phần mềm chống vi-rút để quét tệp hoặc thư.

Trước tiên, hãy kiểm tra xem ClamAV có đang chạy hay không bằng lệnh bên dưới.

systemctl status clamav-daemon.service

Nếu bạn thấy như sau, daemon không hoạt động.

* clamav-daemon.service - Clam AntiVirus userspace daemon
 Loaded: loaded (/lib/systemd/system/clamav-daemon.service; enabled; vendor preset: enabled)
 Drop-In: /etc/systemd/system/clamav-daemon.service.d
 `-extend.conf
 Active: failed (Result: signal) since Thu 2020-07-30 00:00:16 UTC; 2 days ago
 Docs: man:clamd(8)
 man:clamd.conf(5)
 https://www.clamav.net/documents/
 Process: 23563 ExecStart=/usr/sbin/clamd --foreground=true (code=killed, signal=KILL)
 Main PID: 23563 (code=killed, signal=KILL)

Khởi động lại bằng lệnh dưới.

systemctl restart clamav-daemon.service

Sau đó, trình quét email của bạn sẽ bắt đầu hoạt động trở lại.

Nếu bạn không thể cấp phát bộ nhớ ( allocate memory )

Điều này có nghĩa là ClamAV không có đủ bộ nhớ để chạy. Nếu bạn đang chạy một máy chủ có ít hơn 2GB bộ nhớ, bạn có thể muốn thay đổi kích thước máy chủ của mình để tăng RAM lên ít nhất 2GB.

Sau đó khởi động lại daemon Clamav và kiểm tra xem nó có thể chạy bình thường không.

Điều này có nghĩa là ClamAV không có đủ bộ nhớ để chạy. Nếu bạn đang chạy một máy chủ có ít hơn 2GB bộ nhớ, bạn có thể muốn thay đổi kích thước máy chủ của mình để tăng RAM lên ít nhất 2GB.

Sau đó khởi động lại daemon Clamav và kiểm tra xem nó có thể chạy bình thường không.

systemctl restart clamav-daemon.service

 

Không thể gửi thư?

Nếu máy chủ của bạn không thể gửi thư, bạn có thể muốn kiểm tra xem port 25 (outbound) có bị chặn không.

 

Lỗi==================== https://youtu.be/DGuUnfxApNk?t=101
DisallowedHost at /
Invalid HTTP_HOST header:
—————
ALLOWED_HOSTS = [
‘mail.hoanggiangnam.com’,’hoanggiangnam.com’,’localhost’,’127.0.0.1′,
]

 

Lỗi==================== internal error – Lỗi nội bộ
https://www.linuxbabe.com/mail-server/modoboa-email-server-ubuntu-20-04#internal-server-error

 

 

 

 

 

 

 

Leave a Reply