Gửi thư & DNS

SPF, DKIM, DMARC là gì? Giải thích dễ hiểu cho doanh nghiệp

SPF DKIM DMARC là gì, mỗi bản ghi kiểm tra điều gì, cơ chế căn chỉnh (alignment) ra sao và cách cấu hình đủ ba bản ghi cho tên miền công ty.

Trong bài này
  1. Vì sao email cần được xác thực?
  2. SPF: máy chủ nào được gửi thư thay bạn
  3. DKIM: chữ ký đi theo từng bức thư
  4. DMARC: căn chỉnh, chính sách và báo cáo
  5. SPF, DKIM, DMARC phối hợp với nhau thế nào
  6. Theo chân một bức thư
  7. Những lỗi thường gặp
  8. Cấu hình với Zomail
  9. FAQ

SPF, DKIM và DMARC là ba bản ghi DNS giúp chứng minh email thật sự được gửi từ tên miền của bạn. SPF liệt kê các máy chủ được phép gửi thư thay bạn, DKIM gắn chữ ký số vào từng thư để bên nhận kiểm tra bằng khoá công khai, còn DMARC cho bên nhận biết phải xử lý thế nào khi thư không đạt và gửi báo cáo về đâu.

Vì sao email cần được xác thực?

SMTP, giao thức chuyển thư giữa các máy chủ, ra đời từ đầu thập niên 1980 cho một mạng nhỏ gồm các máy tin cậy lẫn nhau. Bản thân SMTP không có cách nào kiểm tra người gửi có đúng là người họ tự nhận hay không. Ai cũng có thể kết nối tới một máy chủ thư và ghi From: giamdoc@congty.vn trong thư, giao thức sẽ không phản đối.

Lỗ hổng này chính là thứ mà kẻ lừa đảo khai thác để giả danh giám đốc, giả hoá đơn, đòi chuyển khoản. SPF, DKIM và DMARC được bổ sung dần lên trên SMTP để bịt lỗ hổng đó. Chúng không làm thay đổi cách bạn đọc hay viết thư; đây chỉ là các bản ghi bạn khai báo trong DNS và các bước kiểm tra mà máy chủ nhận thư tự động thực hiện.

Từ tháng 2/2024, Gmail và Yahoo yêu cầu mọi người gửi phải có ít nhất SPF hoặc DKIM; người gửi số lượng lớn (khoảng từ 5.000 thư/ngày tới địa chỉ Gmail) phải có đủ SPF, DKIM và DMARC, đồng thời tên miền ở dòng From phải khớp. Năm 2025, Microsoft cũng công bố yêu cầu tương tự cho Outlook.com. Nói gọn: tên miền doanh nghiệp thiếu một trong ba bản ghi này đang chịu thiệt thòi rõ rệt.

SPF: máy chủ nào được gửi thư thay bạn

SPF (Sender Policy Framework, RFC 7208) là một bản ghi TXT trên tên miền, liệt kê các địa chỉ IP và dịch vụ được phép gửi thư cho tên miền đó. Ví dụ:

congty.vn.  TXT  "v=spf1 include:_spf.zomail.io include:_spf.phanmemhoadon.example ~all"

Khi thư tới, máy chủ nhận đọc địa chỉ người gửi trong phong bì (lệnh MAIL FROM, sau này hiện ở dòng Return-Path), tra bản ghi SPF của tên miền đó và xem IP đang kết nối có nằm trong danh sách hay không. Kết quả có thể là pass, fail, softfail, neutral, none hoặc lỗi.

Ba điểm hay gây lỗi với SPF:

  • Chỉ một bản ghi. Mỗi tên miền chỉ được có đúng một bản ghi v=spf1. Hai bản ghi gây lỗi permerror, bên nhận coi như bạn không có SPF.
  • Giới hạn 10 lượt tra DNS. Các cơ chế cần tra DNS (include, a, mx, ptr, exists và redirect) cộng lại, kể cả các include lồng nhau, không được vượt quá 10. Vượt là permerror. ip4, ip6 và all không tính.
  • Chuyển tiếp thư làm SPF hỏng. Khi thư bị chuyển tiếp, IP của máy chủ chuyển tiếp không có trong bản ghi của bạn nên SPF thất bại. Vì vậy chỉ có SPF là chưa đủ.

Cú pháp, các ký hiệu ~all/-all và cách đếm lượt tra được trình bày chi tiết trong bài cách tạo bản ghi SPF.

DKIM: chữ ký đi theo từng bức thư

DKIM (DomainKeys Identified Mail, RFC 6376) dùng khoá bí mật do nhà cung cấp email giữ để ký từng thư gửi đi. Chữ ký nằm trong header DKIM-Signature, ghi tên miền ký (d=) và selector (s=). Bên nhận dùng hai giá trị này để lấy khoá công khai trong DNS tại selector._domainkey.tenmien, rồi kiểm tra xem các header được ký và nội dung thư có bị sửa hay không.

DKIM-Signature: v=1; a=rsa-sha256; d=congty.vn; s=zm1; c=relaxed/relaxed;
  h=from:to:subject:date:message-id; bh=...; b=...

Vì chữ ký nằm ngay trong thư, DKIM thường vẫn đạt khi thư bị chuyển tiếp, miễn là bên chuyển tiếp không sửa nội dung hoặc các header đã ký (mailing list chèn thêm chân thư là ngoại lệ điển hình). Do đó DKIM là cơ chế xác thực bền vững hơn.

Với Zomail, DKIM được khai báo bằng hai bản ghi CNAME zm1._domainkey và zm2._domainkey, trỏ tới khoá do Zomail lưu và tự động xoay vòng, bạn không phải dán chuỗi khoá dài bằng tay. Xem từng bước trong bài cách cấu hình DKIM.

DMARC: căn chỉnh, chính sách và báo cáo

SPF và DKIM mỗi cái xác thực một tên miền, nhưng chưa chắc là tên miền người nhận nhìn thấy. Kẻ gian có thể gửi từ máy chủ riêng, SPF đạt cho kegian.example, trong khi dòng From: hiển thị ketoan@congty.vn. DMARC (RFC 7489) xử lý chuyện này bằng căn chỉnh (alignment).

Thư đạt DMARC khi ít nhất một trong hai điều sau đúng:

  1. SPF đạt và tên miền người gửi trong phong bì khớp với tên miền ở From:, hoặc
  2. DKIM đạt và tên miền ký d= khớp với tên miền ở From:.

Ở chế độ mặc định relaxed, "khớp" nghĩa là cùng tên miền tổ chức, nên mail.congty.vn khớp với congty.vn. Ở chế độ strict (aspf=s, adkim=s) hai tên miền phải giống hệt.

Bản ghi DMARC đặt tại _dmarc.congty.vn:

_dmarc.congty.vn.  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@congty.vn"

Thẻ p= là chỉ thị cho thư không đạt: none (chỉ theo dõi), quarantine (coi là đáng ngờ, thường đưa vào thư rác) hoặc reject (từ chối). Thẻ rua= yêu cầu bên nhận gửi báo cáo tổng hợp hằng ngày, cho bạn thấy mọi nguồn đang gửi thư dưới tên miền của bạn và nguồn nào đạt. Lộ trình từ p=none lên p=reject có trong bài cấu hình DMARC.

SPF, DKIM, DMARC phối hợp với nhau thế nào

SPFDKIMDMARC
Kiểm tra gìIP gửi so với danh sách cho phépChữ ký sốSự khớp với From hiển thị
Tên miền được xétNgười gửi phong bì (Return-Path)d= trong chữ kýHeader From:
Vị trí trong DNSTXT tại congty.vnselector._domainkey.congty.vnTXT tại _dmarc.congty.vn
Khi thư bị chuyển tiếpThường hỏngThường vẫn đạtĐạt nếu DKIM còn đạt
Chỉ thị cho bên nhậnYếu (~all / -all)KhôngCó (p=)
Gửi báo cáo cho bạnKhôngKhôngCó (rua=)

Hình dung đơn giản: SPF và DKIM cung cấp bằng chứng, DMARC đối chiếu bằng chứng đó với địa chỉ người nhận thật sự đọc, còn báo cáo cho bạn biết ai đang mượn tên mình.

Theo chân một bức thư

Chị Lan ở phòng kế toán congty.vn gửi hoá đơn cho khách dùng Gmail.

  1. Nhà cung cấp email ký thư bằng khoá DKIM zm1 của congty.vn và gửi đi từ một IP nằm trong include:_spf.zomail.io.
  2. Gmail kiểm tra SPF của tên miền phong bì congty.vn: IP có trong danh sách, SPF đạt và khớp.
  3. Gmail lấy khoá công khai tại zm1._domainkey.congty.vn, xác minh chữ ký: DKIM đạt, d=congty.vn khớp.
  4. Gmail tra _dmarc.congty.vn, thấy DMARC đạt, ghi kết quả vào báo cáo tổng hợp ngày hôm sau.

Giờ kẻ gian gửi hoá đơn giả với From: ketoan@congty.vn từ máy chủ của chúng. SPF cho tên miền phong bì của chúng có thể đạt nhưng không khớp; không có chữ ký DKIM hợp lệ của congty.vn. DMARC thất bại, và nếu chính sách là p=reject, Gmail từ chối thư trước khi tới tay ai.

Những lỗi thường gặp

  • **Đặt DMARC p=reject ngay ngày đầu.** Nếu CRM, form liên hệ trên website hay phần mềm hoá đơn đang gửi thư bằng tên miền của bạn mà chưa được xác thực, thư của chúng sẽ bị từ chối. Hãy bắt đầu bằng p=none và đọc báo cáo.
  • Quên dịch vụ gửi thư bên thứ ba. Công cụ gửi bản tin, helpdesk, phần mềm hoá đơn điện tử đều cần include SPF riêng và tốt nhất là ký DKIM bằng tên miền của bạn.
  • Hai bản ghi SPF sau khi đổi nhà cung cấp. Hãy gộp thành một.
  • **Dùng +all** trong SPF, tức là cho phép cả Internet gửi thư thay bạn.
  • Làm một lần rồi quên. Mỗi công cụ mới có gửi email là một lần sửa DNS. Báo cáo DMARC là cách để bạn phát hiện.

Xác thực chỉ là một phần của chuyện thư vào hộp thư đến. Nội dung, uy tín gửi và danh sách người nhận cũng quan trọng; xem thêm vì sao email gửi đi bị vào spam và bản ghi MX là gì cho phía nhận thư.

Cấu hình với Zomail

Khi bạn thêm tên miền vào Zomail, trang tên miền liệt kê đủ các bản ghi cần tạo (TXT xác minh, MX, SPF, hai CNAME DKIM và DMARC) và kiểm tra trực tiếp từng bản ghi, kèm gợi ý khi có lỗi, ví dụ có hai bản ghi SPF. Bạn có thể tải file DNS (zone) để nhập vào Cloudflare và các nhà cung cấp tương tự, hoặc dùng cấu hình tự động Domain Connect nếu nhà cung cấp DNS hỗ trợ. Sau đó, trang báo cáo DMARC cho thấy ai đang gửi thư dưới tên miền của bạn và cần sửa gì trước khi siết chính sách. Hướng dẫn chi tiết ở trang bắt đầu sử dụng, các gói dịch vụ có tại bảng giá.

FAQ

Có cần cả ba SPF, DKIM và DMARC không?

Có, với mọi tên miền doanh nghiệp. SPF và DKIM xác thực máy chủ gửi và bức thư; DMARC gắn hai kết quả đó với địa chỉ người nhận nhìn thấy và cho phép bạn chặn giả mạo. Gmail và Yahoo bắt buộc đủ ba bản ghi với người gửi số lượng lớn, và thiếu bản ghi nào cũng làm giảm tỉ lệ vào hộp thư đến.

SPF và DKIM khác nhau thế nào?

SPF kiểm tra IP máy chủ gửi có được phép gửi cho tên miền phong bì hay không. DKIM kiểm tra chữ ký số trong thư bằng khoá công khai trong DNS. SPF hỏng khi thư bị chuyển tiếp; DKIM thường vẫn đạt vì chữ ký đi theo thư.

SPF thất bại thì DMARC có đạt được không?

Được. DMARC đạt nếu SPF hoặc DKIM đạt và khớp với tên miền ở From:. Thư chuyển tiếp thường trượt SPF nhưng vẫn đạt DMARC nhờ chữ ký DKIM khớp tên miền, đó là lý do DKIM rất quan trọng.

Bao lâu thì SPF, DKIM, DMARC có hiệu lực?

Bản ghi có hiệu lực ngay khi bên nhận thấy được trong DNS, thường từ vài phút tới vài giờ tuỳ TTL và nhà cung cấp DNS. Báo cáo DMARC tổng hợp thường đến khoảng một lần mỗi ngày từ mỗi nhà cung cấp hộp thư lớn.

DMARC có chặn được mọi kiểu lừa đảo không?

Không. DMARC chặn việc giả mạo đúng tên miền của bạn. Nó không chặn tên miền nhái (như c0ngty.vn) hay mạo danh tên hiển thị; những kiểu này cần lớp bảo vệ trong hộp thư như phát hiện mạo danh và tên miền giống. Xem hướng dẫn chống spam và lừa đảo.

  • SPF DKIM DMARC
  • xác thực email
  • bản ghi DNS
  • chống giả mạo email
  • email doanh nghiệp