Cài đặt mail server là một quá trình quan trọng để tạo ra và quản lý hệ thống gửi và nhận email trong một môi trường tự quản lý VPS. Trong bài hướng dẫn này ItsmeIT sẽ chia sẻ cách cài đặt Exim4 và cấu hình mail server trên Linux (Debian) hoặc Ubuntu 22.04, 20.04. Giúp bạn gửi mail một cách dễ dàng và hiệu quả.
Cách cài đặt Exim4 và cấu hình mail server trên Linux Ubuntu
Việc cài đặt mail server trên Ubuntu hay Debian Linux tương đối đơn giản. Nhưng điều khó khăn là đảm bảo rằng email hay các lệnh gửi mail trên Linux sẽ không bị gắn nhãn là thư rác. Có nghĩa là nó sẽ gửi vào hòm thư rác (spam) của người nhận.
Bước 1: Cài đặt Exim4 trên Ubuntu hoặc Linux
Tước khi cài đặt Exim4 trên Ubuntu hoặc Linux hãy đảm bảo hệ thống không cài đặt dịch vụ mail nào khác. Nếu có hãy gỡ bỏ trước khi thực hiện cài đặt exim4 trên Linux nhé. Bây giờ hãy mở terminal và đăng nhập vào server qua SSH sau đó chạy lệnh để cài đặt exim4 mail server trên Ubuntu/Linux:
sudo apt-get update sudo apt install exim4 mailutils -y sudo dpkg-reconfigure exim4-config
Khi lệnh được thực thi exim sẽ hỏi bạn một số cấu hình, bạn có thể cấu hình gửi mail server trên Ubuntu/Linux như sau:
- General type of mail congigurations: internet site; mail is sent…
- System mail name: nhập tên miền của bạn giống như (itsmeit.co)
- IP-Address to listen on for incoming SMTP connections: 127.0.0.1
- Other destinations for which mail is accepted: nhập tên miền của bạn giống như (itsmeit.co)
- Domain to relay email for: để trống
- Keep number of DNS-queries minimal (Dial-on-Demand)?: No
- Split configuration into small files?: No

Note: Bạn cũng có thể sửa cấu hình mail server trên Linux thủ công bằng cách mở file “/etc/exim4/update-exim4.conf.conf” và chỉnh sửa các thông số giống như sau:
sudo nano /etc/exim4/update-exim4.conf.conf
dc_eximconfig_configtype='internet' dc_other_hostnames='itsmeit.co' #thay bằng tên miền của bạn dc_local_interfaces='127.0.0.1' dc_readhost='' dc_relay_domains='' dc_minimaldns='false' dc_relay_nets='' dc_smarthost='' CFILEMODE='644' dc_use_split_config='false' dc_hide_mailname='' dc_mailname_in_oh='true' dc_localdelivery='mail_spool'
Bước 2. Cách tạo và cấu hình DKIM cho exim4 trên Linux
Sau khi đã cài đặt mail Server trên Ubuntu/Linux với exim4 thành công bây giờ bạn sẽ cần cấu hình DKIM (DomainKeys Identified Mail). Đây là một tiêu chuẩn xác thực email dựa trên miền. Nó sử dụng chữ ký số (digital signature) để xác minh tính hợp pháp và toàn vẹn của email, giúp ngăn chặn việc giả mạo email, làm tăng khả năng gửi email thành công và cung cấp sự tin cậy cho người nhận email.

DKIM là một trong những phương pháp quan trọng trong hệ thống xác thực email và thường được sử dụng cùng với các tiêu chuẩn khác như SPF và DMARC để tăng cường bảo mật và đáng tin cậy của email. Để cấu hình DKIM record, bạn cần tạo cặp khóa riêng và khóa công khai (private và public key), sau đó thêm khóa công khai vào bản ghi DKIM trong DNS của tên miền và kiểm tra xác minh DKIM.
Mở terminal và di chuyển đến thư mục cấu hình exim4:
cd /etc/exim4 sudo mkdir -p /etc/exim4/dkim openssl genpkey -algorithm RSA -out itsmeit.co.pem -pkeyopt rsa_keygen_bits:2048 openssl rsa -in itsmeit.co.pem -pubout -out itsmeit.co.pub
Giải thích:
- itsmeit.co.pem là private key được sử dụng để cấu hình DKIM_FILE trong exim4 trên Linux.
- itsmeit.co.pub là public key được sử dụng để thêm bản ghi TXT DKIM trong DNS.
Bây giờ bạn hãy mở file /etc/exim4/exim4.conf.template và thực hiện thay đổi những giá trị cho các biến sau để cấu hình mail server trên Linux:
dkim_domain = ${sg{${lc:${domain:$h_from:}}}{^www\.}{}} dkim_selector = itsmeit dkim_private_key = /etc/exim4/dkim/itsmeit.co.pem dkim_canon = relaxed
Giải thích:
dkim_domain
: Xác định miền áp dụng cho DKIM bằng cách lấy giá trị trườngFrom
trong header của email, loại bỏ tiền tố “www.” (nếu có) và chuyển thành chữ thường. Bạn có thể nhập trực tiếp giá trị là tên miền của bạn.dkim_selector
: Đặt tên duy nhất để xác định khóa công khai tương ứng với khóa riêng tư DKIM. Tên này sẽ dùng để đặt tên DKIM DNS của bản ghi TXT (bước 3).dkim_private_key
: Đường dẫn chính xác tới tệp khóa riêng tư (private) DKIM bạn đã tạo trước đó.dkim_canon
: Cách thức chuẩn hóa nội dung email trước khi ký điểm DKIM, trong trường hợp này là relaxed.
Sau khi đã hoàn thành cấu hình mail server trên Linux bằng việc thay đổi giá trị của các biến trong file /etc/exim4/exim4.conf.template, bạn cần cập nhật và khởi động lại exim để áp dụng các thay đổi vừa thực hiện.
sudo update-exim4.conf; sudo service exim4 restart
Bước 3: Tạo bản ghi TXT DNS và cấu hình DKIM record
DKIM record là một tiêu chuẩn bảo mật email được thiết kế để đảm bảo các thư không bị thay đổi khi truyền giữa máy chủ gửi và máy chủ nhận. DKIM record sử dụng mật mã khóa công khai để ký email bằng khóa cá nhân khi nó rời khỏi máy chủ gửi. Để tạo bản ghi TXT DNS và cấu hình DKIM record hãy đăng nhập vào nhà cung cấp tên miền của bạn và thêm bản ghi.
Ở bước 2 ItsmeIT đã hướng dẫn bạn tạo file “itsmeit.co.pub” bây giờ hãy mở nó bằng lệnh cat để lấy khóa công khai (public key).
cat /etc/exim4/itsmeit.co.pub

Như bạn thấy trên ảnh chụp màn hình, mã public key bắt đầu bằng “MII” và kết thúc bằng “QAB”. Bây giờ hãy copy mã này và sửa vào bản ghi TXT dưới đây:
v=DKIM1; k=rsa; p=mã khóa công khai
Cũng trong bước 2 trước đó, trong file exim4.conf.template mình đã cấu hình “dkim_selector = itsmeit” vì vậy tên bản ghi TXT sẽ là “itsmeit._domainkey”. Hãy thay đổi và đặt đúng tên dkim_selector cho bản ghi TXT nhé.

Bước 4: Tạo bản ghi MX và cấu hình DNS để gửi mail server
Cấu hình DNS để gửi mail server trên Linux và các bản ghi MX, SPF, DMARC, DKIM là quá trình thiết lập các thông số DNS để đảm bảo việc gửi và nhận email thành công, cùng với việc xác thực và bảo mật thông tin qua các bản ghi TXT trong hệ thống DNS.

Tạo bản ghi MX (Mail Exchanger) để chỉ định mail server mà bạn muốn sử dụng để gửi và nhận email. Bạn cần cung cấp địa chỉ IP hoặc tên miền của mail server.
Tên| Loại| Giá trị | Độ ưu tiên @ | MX | mail.itsmeit.co | 10
Với cấu hình này, khi một ai đó gửi email đến địa chỉ admin@itsmeit.co, hệ thống DNS sẽ sử dụng bản ghi MX để xác định mail server mail.itsmeit.co là nơi nhận email cho tên miền itsmeit.co.
Bước 5: Cấu hình bản ghi SPF Record cho domain
Để cấu hình mail server trên Ubuntu thì không thể thiếu bản ghi SPF (Sender Policy Framework). Đây là một phương thức xác thực email, giúp ngăn chặn việc giả mạo email từ tên miền của bạn. Bản ghi SPF này cho phép các máy chủ MX, máy chủ DNS gốc, địa chỉ IP cụ thể và các tên miền được liệt kê là hợp lệ để gửi email từ tên miền itsmeit.co.
Tương tự như bản ghi MX, bây giờ bạn hãy tạo mới một bản ghi cấu hình mail server trên Linux với tên “@”, loại “TXT”, độ ưu tiên “10” và giá trị như sau để áp dụng SPF (Sender Policy Framework):
v=spf1 ip4:194.233.31.239 include:spf.itsmeit.co include:_spf.google.com include:_spf.mx.cloudflare.net include:_spf.yahoo.com include:icloud.com include:spf.protection.outlook.com include:amazonses.com include:_spf.yandex.net ~all
Trong bản ghi SPF của mình cũng bao gồm một số các dịch vụ như cloudflare, google, yahoo.. để đảm bảo những email gửi từ server đến một trong những miền của các dịch vụ này sẽ không bị báo cáo là thư rác và chuyển đến hòm thư spam. Để thêm một dịch vụ email mới, bạn chỉ cần thêm “include: spf_record” trước “~all”. Tương tự, để xóa một dịch vụ, bạn có thể loại bỏ “include:spf_record” khỏi bản ghi SPF.
Note: Để kiểm tra cú pháp của bản ghi SPF bạn có thể sử dụng công cụ spf-record analyzer.
Bước 6: Cách cấu hình DMARC để gửi mail server
DMARC (Domain-based Message Authentication, Reporting, and Conformance) là một tiêu chuẩn xác thực email dựa trên miền. Nó kết hợp các tiêu chuẩn SPF và DKIM để xác minh tính hợp pháp của email và thông báo về các vấn đề xác thực. DMARC giúp ngăn chặn email giả mạo, tấn công phishing và spam, đồng thời cung cấp báo cáo cho người gửi email để giải quyết các vấn đề xác thực.
Tiếp tục tạo 1 bản ghi TXT DMARC bằng tên “_dmarc” và nội dung bên dưới.
v=DMARC1; p=quarantine; rua=mailto:buivanloi.2010@gmail.com; pct=100; adkim=s; aspf=s
Để hiểu rõ hơn và xác thực bản ghi DMARC của bạn có chính xác hay không, sau khi đã thêm bản ghi DMARC bây giờ bạn có thể sử dụng công cụ mxtoolbox để kiểm tra. Nếu chính xác nó sẽ trông giống như ảnh mà ItsmeIT đã chụp màn hình:

Bước 7: Test mail server trên Linux với Exim4
Cách test gửi email trên Ubuntu Linux bằng command (terminal)
Để kiểm tra xem mail server sử dụng exim4 có hoạt động hay không, trong ví dụ này ItsmeIT sẽ sử dụng terminal và chạy câu lệnh bên dưới với mail tên miền là “no-reply@itsmeit.co” và sẽ gửi đến itsmeit.biz@gmail.com.
echo "Nội dung email" | mail -s "Chủ đề email" -r "no-reply@itsmeit.co" "itsmeit.biz@gmail.com"

Cách test sendmail trên Linux bằng mã PHP
Tạo 1 file testmail.php trong thư mục gốc trang web của bạn với nội dung như sau, trong trường hợp của mình trang web là itsmeit.co vậy mình sẽ chạy thử với URL https://itsmeit.co/testmail.php. Hoặc bạn cũng có thể chạy trực tiếp file testmail.php trên terminal.
<?php ini_set( 'display_errors', 1 ); error_reporting( E_ALL ); $from = "no-reply@itsmeit.co"; $to = "itsmeit.biz@gmail.com"; $subject = "PHP Mail Test script"; $message = "This is a test to check the PHP Mail functionality"; $headers = "From:" . $from; mail($to,$subject,$message, $headers); echo "Test email sent"; ?>
Lưu ý quan trọng: Khi bạn cài đặt mail server trên Ubuntu/Linux và thực hiện cấu hình các bản ghi DNS liên quan, hãy nhớ rằng quá trình xác thực có thể mất thời gian từ 3 đến 72 giờ. Do đó, nếu bạn thử gửi mail và nhận thấy rằng email của bạn bị xếp vào thư rác hoặc không thể gửi đi, hãy kiên nhẫn và thử lại sau khi quá trình xác thực hoàn tất.
– Advertising –