Hướng Dẫn Kỹ Thuật Cấu Hình SPF, DKIM, DMARC

Dịch Vụ Email Relay Server — Hướng Dẫn Kỹ Thuật Cấu Hình SPF, DKIM, DMARC

Email relay server là một SMTP gateway trung gian: nhận email outbound từ mail server nội bộ hoặc ứng dụng của doanh nghiệp, xử lý xác thực, ký số và chuyển tiếp qua IP có reputation tốt đến mail server đích. Hiểu đúng cơ chế kỹ thuật giúp sysadmin cấu hình chính xác và troubleshoot hiệu quả khi có vấn đề delivery.

 

Tại sao email bị đánh dấu spam — phân tích kỹ thuật

Các mail server nhận (Gmail, Outlook, Yahoo) sử dụng nhiều lớp lọc để đánh giá email đến. Nguyên nhân kỹ thuật phổ biến nhất:

  • SPF fail: IP gửi mail không có trong SPF record của domain — mail server nhận có thể reject hoặc đánh spam
  • DKIM missing/invalid: Không có chữ ký DKIM hoặc chữ ký không match public key trong DNS
  • DMARC policy: Nếu SPF và DKIM đều fail, DMARC policy quyết định email bị reject, quarantine hay delivery
  • IP blacklist: IP gửi mail nằm trong các RBL như Spamhaus ZEN, Barracuda, SURBL
  • Reverse DNS (PTR) không khớp: PTR record của IP không trỏ về hostname của mail server
  • Spam score cao: nội dung email trigger nhiều rule của SpamAssassin hoặc filter tương đương
  • Domain reputation thấp: domain mới hoặc có lịch sử gửi spam, bounce rate cao

Email Authentication Protocols SPF, DKIM, DMARC

nguồn Email Authentication Protocols in 2024: SPF, DKIM, DMARC & BIMI 

Cấu trúc kỹ thuật của hệ thống email relay server

Một email relay chuẩn gồm các thành phần sau:

  • MTA (Mail Transfer Agent): Postfix là lựa chọn phổ biến nhất trên Linux. Nhận email từ internal mail server qua SMTP port 25 hoặc submission port 587
  • DKIM signing daemon: OpenDKIM ký số từng email outgoing trước khi chuyển tiếp
  • SPF record: TXT record trên DNS khai báo IP/hostname được phép gửi mail từ domain
  • DMARC record: TXT record định nghĩa policy xử lý và địa chỉ nhận aggregate report
  • IP warm-up: Quá trình tăng dần volume gửi trên IP mới để build reputation với các mail provider lớn
  • Bounce handling: Xử lý hard bounce và soft bounce để giữ bounce rate dưới ngưỡng an toàn

Cấu hình Postfix làm SMTP relay — từng bước

Bước 1 — Cấu hình relay trong main.cf

Trên mail server của doanh nghiệp, thêm các dòng sau vào /etc/postfix/main.cf:

relayhost = [relay.dichvuit.com.vn]:587

smtp_sasl_auth_enable = yes

smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

smtp_sasl_security_options = noanonymous

smtp_tls_security_level = encrypt

smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Bước 2 — Tạo file xác thực SASL

Tạo file /etc/postfix/sasl_passwd với thông tin tài khoản relay:

[relay.dichvuit.com.vn]:587  username@domain:password

Sau đó hash file và phân quyền:

postmap /etc/postfix/sasl_passwd

chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

Bước 3 — Reload và kiểm tra

systemctl reload postfix

echo ‘Test relay’ | mail -s ‘Test subject’ recipient@gmail.com

tail -f /var/log/mail.log

Trong log, kết quả thành công sẽ có dòng status=sent với relay host là relay.dichvuit.com.vn.

Cấu hình SPF record đúng chuẩn

SPF record là TXT record trên DNS. Cú pháp cơ bản:

v=spf1 include:spf.dichvuit.com.vn ~all

Giải thích từng thành phần:

  • v=spf1: khai báo đây là SPF record phiên bản 1
  • include:spf.dichvuit.com.vn: ủy quyền cho Dichvuit quản lý danh sách IP gửi mail
  • ~all: softfail — email từ IP không được khai báo sẽ không bị reject ngay mà được đánh dấu
  • Dùng -all (hardfail) khi đã chắc chắn tất cả IP gửi mail đã được khai báo đầy đủ

Lưu ý: mỗi domain chỉ được có 1 SPF record. Nếu đã có SPF record cũ, thêm include vào record hiện tại thay vì tạo record mới.

 

Cấu hình DKIM với OpenDKIM

Tạo keypair DKIM

mkdir -p /etc/opendkim/keys/domain.com

opendkim-genkey -s mail -d domain.com -D /etc/opendkim/keys/domain.com/

Lệnh trên tạo ra 2 file: mail.private (private key, giữ bí mật) và mail.txt (public key, thêm vào DNS).

Thêm public key vào DNS

Nội dung file mail.txt có dạng:

mail._domainkey  IN  TXT  “v=DKIM1; k=rsa; p=MIGfMA0GCS…”

Tạo TXT record trên DNS với subdomain mail._domainkey và value là chuỗi p= trong file trên.

Kiểm tra DKIM sau khi cấu hình

opendkim-testkey -d domain.com -s mail -vvv

Kết quả hợp lệ sẽ thấy: key OK

Thiết lập DMARC — lộ trình an toàn

Không nên set DMARC policy reject ngay từ đầu. Lộ trình đúng:

  1. Tuần 1–4: p=none (chỉ thu thập report, không block email) — theo dõi aggregate report gửi về rua=
  2. Tuần 5–8: p=quarantine pct=25 (quarantine 25% email fail) — tăng dần pct lên 50, 75, 100
  3. Tuần 9+: p=reject khi đã chắc chắn tất cả luồng email hợp lệ đã được cấu hình SPF/DKIM

DMARC record TXT tại _dmarc.domain.com:

v=DMARC1; p=none; rua=mailto:dmarc-report@domain.com; ruf=mailto:dmarc-fail@domain.com; fo=1

Kiểm tra toàn bộ sau khi cấu hình

Dùng các tool sau để xác nhận cấu hình hoàn chỉnh trước khi đưa vào production:

  • mail-tester.com: gửi email test đến địa chỉ cho sẵn, nhận điểm từ 1–10 kèm phân tích chi tiết
  • com/SuperTool: kiểm tra SPF, DKIM, DMARC, PTR, blacklist của domain và IP
  • com: kiểm tra DKIM signature của email thực tế
  • Google Postmaster Tools: theo dõi domain reputation và IP reputation dài hạn

Câu hỏi kỹ thuật thường gặp về email relay server

SPF record có giới hạn số lượng DNS lookup không?

Có — SPF giới hạn tối đa 10 DNS lookup per evaluation. Mỗi include, a, mx, ptr đều tính 1 lookup. Nếu vượt quá 10 lookup, SPF sẽ trả về permerror và email bị xử lý như SPF fail. Dichvuit thiết kế SPF record tối ưu để không vượt giới hạn này.

DKIM key nên dùng 1024-bit hay 2048-bit?

Khuyến nghị 2048-bit từ 2023 trở đi. Gmail và một số mail provider lớn đã bắt đầu cảnh báo với key 1024-bit. Key dài hơn an toàn hơn nhưng không ảnh hưởng đến tốc độ delivery.

Postfix relay có hỗ trợ IPv6 không?

Có, nhưng khuyến nghị disable IPv6 trên relay trong giai đoạn đầu bằng cách thêm vào main.cf: inet_protocols = ipv4. Một số mail server nhận chưa xử lý tốt IPv6 reputation, gây delivery fail không đoán trước được.

Có thể relay email từ nhiều domain qua một relay server không?

Có. Mỗi domain cần có DKIM keypair riêng và SPF record riêng include cùng relay host. Cấu hình signing table trong OpenDKIM để map từng domain với keypair tương ứng.

Bounce rate bao nhiêu là nguy hiểm cho IP reputation?

Hard bounce (địa chỉ không tồn tại) trên 2% là ngưỡng nguy hiểm — nhiều mail provider sẽ bắt đầu throttle hoặc block. Soft bounce (hộp thư đầy, server tạm thời từ chối) trên 5% cũng cần điều tra. Dichvuit cung cấp bounce report hàng tuần để theo dõi sớm.

Tham khảo bảng giá dịch vụ thuê Email Relay