Chuyển đến nội dung chính

Bài 13: Email Deliverability — SPF, DKIM, DMARC

Email authentication với SPF, DKIM, DMARC. IP reputation, domain warm-up, spam score optimization, list hygiene, complaint processing, blacklist monitoring và BIMI.

🏗️ Kiến trúc — Bài 13 Bài 13: Email Deliverability — SPF, DKIM, DMARC

Thiết kế Hệ thống Notification gửi hàng triệu Email

Phần 5: Deliverability, Monitoring & Production

xdev.asia

Giới thiệu

Gửi thành công tới provider chưa đồng nghĩa email vào inbox. Deliverability là bài toán phối hợp giữa hạ tầng xác thực email, chất lượng danh sách người nhận, nội dung email và reputation tích lũy theo thời gian.

Bài này tập trung vào những phần quan trọng nhất để một hệ thống gửi lớn vẫn giữ được inbox placement ổn định.


1. Deliverability thực sự được quyết định bởi điều gì?

Bốn trụ cột

Trụ cộtCâu hỏi cần trả lời
AuthenticationEmail này có thật sự được domain hợp lệ ủy quyền gửi không?
ReputationDomain/IP này có lịch sử tốt hay xấu?
List qualityNgười nhận có tồn tại, có tương tác, có opt-in không?
Content qualityNội dung có dấu hiệu spam, misleading hay vi phạm policy không?

Những hiểu lầm phổ biến

  • DKIM đúng không tự động đảm bảo vào inbox.
  • Mua dedicated IP không chữa được list bẩn.
  • Thêm nhiều tracking pixels quá mức có thể phản tác dụng.
  • Domain mới nhưng gửi volume cũ từ ngày đầu gần như chắc chắn sẽ bị throttling.

2. SPF: ai được phép gửi thay domain của bạn?

SPF là record DNS khai báo những mail servers hoặc providers nào được phép gửi mail cho domain.

Ví dụ SPF record

example.com. IN TXT "v=spf1 include:amazonses.com include:sendgrid.net -all"

Ý nghĩa

  • v=spf1: phiên bản SPF.
  • include:amazonses.com: cho phép SES.
  • include:sendgrid.net: cho phép SendGrid.
  • -all: mọi nguồn khác bị fail cứng.

Lưu ý thực tế

  • Không nên quá nhiều include vì SPF lookup bị giới hạn.
  • SPF kiểm tra envelope sender, không phải lúc nào cũng là From: user nhìn thấy.
  • Nếu dùng nhiều ESP, cần kiểm soát cẩn thận alignment với DMARC.

3. DKIM: ký nội dung để chứng minh tính toàn vẹn

DKIM thêm chữ ký số vào email header. Mail receiver dùng public key trong DNS để xác minh nội dung email không bị sửa đổi trên đường đi.

Ví dụ DKIM record

ses2026._domainkey.example.com. IN TXT (
  "v=DKIM1; k=rsa; "
  "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw..."
)

Best practices

  • Dùng selector rõ ràng theo provider hoặc theo năm/quý để xoay khóa.
  • Key length tối thiểu 1024, ưu tiên 2048 bit nếu provider hỗ trợ.
  • Xoay DKIM keys định kỳ nhưng không làm gián đoạn xác minh email cũ.

4. DMARC: chính sách và alignment

DMARC cho phép domain owner tuyên bố cách xử lý email fail SPF/DKIM, đồng thời nhận aggregate reports.

Ví dụ record DMARC

_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; pct=100; rua=mailto:[email protected]; ruf=mailto:[email protected]; adkim=s; aspf=s"

Các mode thường dùng

PolicyÝ nghĩaKhi dùng
p=nonechỉ monitorgiai đoạn đầu triển khai
p=quarantineđẩy mail fail vào spam/quarantinesau khi alignment ổn định
p=rejecttừ chối hẳnkhi domain đã kiểm soát tốt

Lộ trình triển khai an toàn

  1. Bắt đầu với p=none.
  2. Thu thập DMARC reports ít nhất vài tuần.
  3. Xử lý hết các nguồn gửi email hợp lệ còn chưa align.
  4. Tăng lên quarantine rồi reject.

5. Domain/IP warm-up và reputation management

Tại sao reputation lại quan trọng?

Các mailbox providers như Gmail, Outlook, Yahoo đánh giá hành vi gửi mail theo thời gian. Họ quan tâm:

  • Tỷ lệ hard bounce.
  • Tỷ lệ complaint.
  • Tỷ lệ engaged opens/clicks.
  • Tần suất gửi tăng có tự nhiên không.
  • Tỷ lệ gửi vào địa chỉ không tương tác trong thời gian dài.

Warm-up plan cho domain mới

TuầnSegmentVolume
1Users mở mail trong 7 ngày gần nhấtthấp
2Users engaged 30 ngàytăng nhẹ
3Mở rộng sang 60-90 ngàytăng có kiểm soát
4+Toàn bộ list sạchtheo metric thực tế

Không nên làm

  • Gửi đồng thời cả transactional và marketing từ cùng domain/IP mới.
  • Dùng shared list không rõ consent.
  • Scale gấp 10 lần volume chỉ vì thấy hệ thống còn dư công suất.

6. List hygiene và complaint handling

Hạ tầng tốt đến đâu cũng không cứu nổi một danh sách người nhận bẩn.

Các loại địa chỉ nên loại bỏ

LoạiHành động
Hard bouncesuppress ngay
Complained userssuppress vĩnh viễn hoặc theo policy
Role accounts rủi ro caocân nhắc loại bỏ
Inactive lâu nămđưa vào re-engagement trước
Disposable emailschặn từ đầu

Suppression list nội bộ

CREATE TABLE suppression_list (
  email TEXT PRIMARY KEY,
  reason TEXT NOT NULL,
  source TEXT NOT NULL,
  created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  expires_at TIMESTAMPTZ
);

Luồng complaint handling

  1. Nhận webhook complaint từ provider.
  2. Map về recipient và message_id nội bộ.
  3. Thêm recipient vào suppression list.
  4. Giảm send rate nếu complaint rate tăng theo domain/campaign.
  5. Cảnh báo team marketing nếu campaign có nội dung chất lượng kém.

7. Nội dung email và spam signals

Tín hiệu xấu thường gặp

  • Subject quá kích thích kiểu "FREE!!! LIMITED OFFER!!!".
  • HTML nặng, nhiều image nhưng ít text.
  • Link tracking domain lạ, không đồng nhất brand.
  • Thiếu unsubscribe link.
  • From name/domain không nhất quán với brand.

Checklist nội dung lành mạnh

  • Subject rõ ràng, không clickbait quá mức.
  • Có plain-text fallback.
  • Có địa chỉ và thông tin liên hệ phù hợp.
  • Có unsubscribe link dễ thấy.
  • Tracking domains dùng subdomain thuộc brand nếu có thể.

8. Monitoring deliverability

Các chỉ số cần theo dõi

MetricMức cảnh báo tham khảo
Hard bounce rate> 2%
Complaint rate> 0.1%
Delivery rategiảm mạnh so với baseline
Open ratetụt bất thường theo domain
Spam placementtăng liên tiếp nhiều campaign

Công cụ hữu ích

  • Gmail Postmaster Tools
  • Microsoft SNDS
  • DMARC aggregate report analyzers
  • Provider dashboards của SES/SendGrid/Mailgun

BIMI là gì?

BIMI cho phép hiển thị logo thương hiệu trong inbox của một số mailbox providers, nhưng thường yêu cầu DMARC enforcement tốt và đôi khi cần chứng chỉ xác thực thương hiệu. Nó không thay thế SPF/DKIM/DMARC mà xây trên nền đó.


Tổng kết

Deliverability là cuộc chơi dài hạn. Bạn không thể fix nó bằng một script hay một DNS record đơn lẻ. Cần đồng thời làm đúng authentication, warm-up cẩn thận, giữ list sạch, và theo dõi tín hiệu reputation mỗi ngày.

Bài tiếp theo: Chúng ta sẽ dựng monitoring, metrics và alerting để nhìn hệ thống notification như một hệ thống sản xuất thực thụ.