ISPmail (1): Script cài đặt

ISPmail tutorials bao gồm các giải thích về các thành phần của mailserver và cách cài đặt chúng. Tác giả Christoph Haas không hướng tới người dùng muốn có một mail server ‘mì ăn liền’ bỏ qua những kiến thức cần thiết để quản trị mail server.

Bài giảng có khoảng 30 chương mục, theo tác giả cần 2 giờ đến 2 ngày để xem qua, nhưng cũng có thể mất đến 2 tuần để hiểu hết vấn đề.

ISPmail là một mail server hoàn chỉnh tương tự như iRedMail, nhưng chỉ cần tối thiểu 1GB RAM và có một trình quản trị giao diện web tiện nghi hơn hẳn iRedAdmin, miễn phí hoàn toàn, hơn nữa không bao gồm thành phần đóng kín nào. Ngoài giao diện web, tác giả cũng cung cấp các dòng lệnh mysql để quản tri mail server.

Nhận email từ mail server khác

REMOTE: Này, máy chủ DNS. Tôi có một email cho ai đó trong domain example.org. Bạn có thể cho tôi biết tên máy chủ mail có trách nhiệm?
DNS: Theo DNS zone của example.org, đó là mx.example.org.

REMOTE: Hay lắm! Bạn có địa chỉ IP của mx.example.org?
DNS: Tôi có địa chỉ IPv4. Đó là 85.25.72.76.

REMOTE kết nối với địa chỉ IP đó trên cổng TCP 25, theo định nghĩa được sử dụng cho SMTP – giao thức vận chuyển thư đơn giản.
POSTFIX: Xin chào! Tôi là Postfix. (“220 mx.example.org ESMTP Postfix”)
REMOTE: Xin chào! Tôi là remote server. (“EHLO remoteserver”)
POSTFIX: Ờ chào! Tôi có thể hỗ trợ một vài tính năng như pipelining và mã hoá … (“STARTTLS, PIPELINING, SIZE 4000000, …”)
REMOTE: Hãy chuyển sang kết nối có mã hóa. (“STARTTLS”)
(Kết nối chuyển sang TLS encryption.)
REMOTE: Tôi có một email từ donald@duck.com ở đây. (“MAIL FROM:<donald@duck.com>”)
POSTFIX: Vâng! (“Ok”)
REMOTE: Email gởi cho john@example.org. (“RCPT TO:<john@example.org>”)

POSTFIX: Này MariaDB! (Kết nối với cổng TCP 3306 trên máy chủ cục bộ để nói chuyện với MariaDB.) Bạn có thể kiểm tra xem example.org có phải là một trong các mail domain của chúng ta không? (“SELECT … from virtual_domains …”)
MariaDB: Vâng! Tôi có một tên miền như thế.
POSTFIX: Ồ, tốt. Và bạn có hộp thư hoặc chuyển tiếp cho ai đó được gọi là john@example.org không? (“SELECT … from virtual_aliases/virtual_users …”)
MariaDB: Vâng, có một hộp thư cho địa chỉ đó.
POSTIFX: Này, remote server. Người nhận có vẻ đúng. (“Ok”)
REMOTE: Roger. Sau đây là email thực tế. (“DATA”)
(remote server gửi tiêu đề và nội dung email.)

(POSTFIX kết nối với cổng 11.332 trên máy chủ cục bộ để truy cập rspamd.)
POSTFIX: Này, rspamd. Tôi có một email mới ở đây. Bạn xem thử xem có phải thư rác hay đồ bỏ đi?
RSPAMD: À! Vâng! Có một vài vấn đề nhỏ. Nhưng nhìn chung thư có vẻ tốt. Tôi đề nghị bạn chấp nhận nó.
POSTFIX: Này, remote server. Email của bạn được đó.

(Postfix sử dụng tệp socket tại / var / spool / postfix / private / dovecot-lmtp để nói chuyện với Dovecot.)
POSTFIX: Này Dovecot! Đây là một email mới cho john@example.org.
DOVECOT: Hiểu rồi.

(Dovecot kiểm tra các quy tắc bổ sung và sau đó lưu trữ email trên đĩa tại /var/vmail/example.org/john/Maildir/INBOX)

Lấy email qua IMAP / POP3
Đoc email qua webmail

Chúng ta sẽ lần lượt tạo các script cài đặt tuần tự theo chương mục của ISPmail tutorials, nhân tiện một vài ý chính cũng được lượt dịch. Tổng hợp lại sẽ có script cài đặt mail server ISPmail hoàn chỉnh.

Việc sửa đổi các file cấu hình chủ yếu là dùng sed, đôi khi là cat. Sed được chọn là vì nó được tích hợp vào OS, chạy nhanh, tuy là việc viết câu lệnh dễ nhầm lẫn, debug mất thời gian!

Chuẩn bị

Điều kiện cần thiết để tạo một mail server là:

  • Tên miền (domain name): Giả sử tên miền là example.org như tác giả lấy làm thí dụ, ta cần thêm một tên miền phụ như mx.example.org.
    Tên miền example.org dùng để tạo email dạng @example.org
    Tên miền phụ mx.example.org dùng để đặt tên host cho mail server
  • RPi: Nói chung RPi từ phiên bản 3 đã đủ yêu cầu cho mail server, tốt hơn là dùng RPi 4 bản 2GB.
  • OS: Raspbian từ phiên bản Buster.

Giả sử ta đã cài đặt Buster (bản lite cho nhẹ) cho RPi và chưa cài đặt phần mềm của mail server (để tránh xung đột), đã đặt hostname cho RPi (mx.example.org). mx.example.org trỏ về IP (động hay tĩnh) của RPi (thí dụ bằng cloudflare), và mx.example.org là MX record của example.org

Cài đặt các gói ứng dụng

Giả sử chúng ta đang SSH vào RPi với quyền root. Trước hết là cập nhật hệ thống.

apt update
apt upgrade -y

Các gói ứng dụng cần thiết cho mail server là:

  • mariadb-server: CSDL sẽ lưu thông tin về các tài khoản email và domain
  • postfix: MTA (mail transport agent) nhận và gởi email qua ngôn ngữ SMTP
  • postfix-mysql: Một extension để Postfix lấy thông tin từ CSDL
  • dovecot-mysql: IMAP/POP3 mail server bao gồm extension để lấy thông tin từ CSDL
  • dovecot-pop3d: Một extension của Dovecot cho phép người dùng lấy emails qua POP3 protocol
  • dovecot-imapd: Một extension của Dovecot cho phép người dùng truy cập emails qua IMAP protocol
  • dovecot-lmtpd: Cho phép Dovecot nhận kết nối LMTP. Cần để Postfix gởi email cho Dovecot lưu trên đĩa
  • dovecot-managesieved: Một extension của Dovecot cho phép người dùng định nghĩa các bộ lọc tự động chạy trên mailserver khi có email đến
  • apache2 and php7.3: web server cho webmail interface. PHP là ngôn ngữ kịch bản dùng trong Roundcube webmail
  • adminer: Giao diện web để quản trị CSDL
  • rspamd: Phát hiện spam và malware quản lý tự động domain key signing.
  • pwgen: Công cụ để tạo mật khẩu ngẫu nhiên
  • swaks: SWiss Army Knife of Smtp. Công cụ gởi mail qua SMTP để test
  • mutt: Công cụ dòng lệnh cho IMAP cũng như đọc trực tiếp Maildirs
  • certbot: Công cụ kết nối với dịch vụ LetsEncrypt để tạo và renew certificates
  • ca-certificates: Một bộ certificates thường dùng trên internet
  • fail2ban: Một daemon theo dõi file log để phát hiện tấn công dò mật khẩu. Nó có thể khóa IP của kẻ tấn công
apt install -y pwgen mariadb-server postfix postfix-mysql apache2 php7.3 swaks mutt rspamd certbot dovecot-mysql dovecot-pop3d dovecot-imapd dovecot-managesieved dovecot-lmtpd adminer ca-certificates

## Gõ Enter mỗi khi khi được hỏi ##

Xem tiếp phần 2 …

Comments Off on ISPmail (1): Script cài đặt

Filed under Software

Comments are closed.