Trang chủ › Hướng dẫn

Thiết lập SPF, DKIM và DMARC: bản ghi, lỗi thường gặp và cách kiểm tra

Ngày đăng 2026-11-03 / Cập nhật 2026-11-03 / Tác giả Yuki Nakazawa

Thiết lập SPF, DKIM và DMARC không còn là tùy chọn nếu bạn gửi email từ tên miền của mình. Hãy làm theo thứ tự sau: công bố một bản ghi SPF, bật ký DKIM với khóa 2048 bit, rồi công bố bản ghi DMARC bắt đầu ở p=none và có bật báo cáo. Nhân tiện, hãy bảo đảm địa chỉ IP gửi thư của bạn có DNS ngược (PTR) khớp với nó.

Hướng dẫn này áp dụng được dù bạn gửi thư từ hosting dùng chung, VPS riêng, Google Workspace, Microsoft 365 hay một dịch vụ gửi email hàng loạt. Bài viết cung cấp các bản ghi bạn có thể điều chỉnh, những lỗi thường làm hỏng xác thực nhất, và cách xác nhận mọi thứ hoạt động từ tiêu đề của một thư thực tế.

Thông tin bên dưới đã được đối chiếu với các RFC và trang chính thức của Google, Yahoo và Microsoft tại thời điểm tháng 11 năm 2026. Yêu cầu của các nhà cung cấp hộp thư có thể thay đổi, vì vậy bạn hãy coi trang của họ là căn cứ cuối cùng.

Kiểm tra miễn phí xem tên miền hoặc địa chỉ IP của bạn có nằm trong khoảng 345 danh sách đen hay không.

SPF, DKIM và DMARC chứng minh điều gì, và thứ tự thiết lập

SPF (Sender Policy Framework) cho phép một tên miền liệt kê trong DNS những máy chủ nào được phép gửi thư thay mặt nó. Máy chủ nhận xem địa chỉ người gửi trên phong bì (địa chỉ SMTP MAIL FROM, sau này hiển thị thành Return-Path), lấy bản ghi SPF của tên miền đó và kiểm tra địa chỉ IP đang kết nối có nằm trong danh sách hay không. Riêng SPF không nói gì về địa chỉ From mà người đọc nhìn thấy.

DKIM (DomainKeys Identified Mail) thêm một chữ ký mật mã vào mỗi thư. Hệ thống gửi ký bằng khóa riêng tư, còn máy chủ nhận xác minh chữ ký bằng khóa công khai được công bố trong DNS. Chữ ký hợp lệ chứng minh rằng tên miền ký (giá trị d=) đã nhận trách nhiệm về thư, và các tiêu đề cùng nội dung được ký không bị sửa đổi trên đường đi.

DMARC (Domain-based Message Authentication, Reporting and Conformance) gắn hai cơ chế trên với tên miền From hiển thị. Thư chỉ vượt qua DMARC khi SPF hoặc DKIM vượt qua và tên miền đã xác thực căn chỉnh (alignment) với tên miền From. Bản ghi DMARC còn cho máy chủ nhận biết bạn muốn xử lý thư không đạt như thế nào (không làm gì, cách ly hoặc từ chối) và gửi báo cáo tổng hợp về đâu; nhờ đó bạn phát hiện được các nguồn gửi mà mình đã quên.

Cơ chếVị trí bản ghiKiểm tra điều gì
SPFTXT tại example.comIP gửi so với tên miền MAIL FROM
DKIMTXT (hoặc CNAME) tại selector._domainkey.example.comChữ ký và tên miền d=
DMARCTXT tại _dmarc.example.comCăn chỉnh với tên miền From, cùng chính sách và báo cáo

Thứ tự thiết lập

  1. Liệt kê mọi hệ thống gửi thư bằng tên miền của bạn: máy chủ riêng, Google Workspace hoặc Microsoft 365, dịch vụ gửi bản tin và email giao dịch, biểu mẫu web, công cụ lập hóa đơn và bộ phận hỗ trợ (help desk).
  2. Công bố một bản ghi SPF duy nhất bao gồm tất cả các hệ thống đó.
  3. Bật DKIM trên từng hệ thống gửi và công bố khóa công khai của nó.
  4. Công bố DMARC với p=none và địa chỉ nhận báo cáo rua. Google gợi ý chờ 48 giờ sau khi thiết lập SPF và DKIM rồi mới thêm DMARC.
  5. Đọc báo cáo, sửa các nguồn không đạt, rồi chuyển sang p=quarantine và cuối cùng là p=reject.

Thiết lập SPF: một bản ghi, mười lượt tra cứu

SPF là một bản ghi TXT đặt ngay trên tên miền. Dưới đây là ví dụ một tên miền gửi thư từ máy chủ riêng qua IPv4 và IPv6, đồng thời dùng Google Workspace:

example.com.  3600  IN  TXT  "v=spf1 ip4:203.0.113.10 ip6:2001:db8::10 include:_spf.google.com ~all"

Trong hầu hết bảng điều khiển DNS, bạn để trống ô tên máy (host) (hoặc nhập @), chọn TXT, rồi dán giá trị bắt đầu từ v=spf1. Các thành phần thường dùng:

Nguồn gửiCần thêm gì
VPS hoặc máy chủ thư của bạnip4:203.0.113.10 và/hoặc ip6:2001:db8::10
Google Workspaceinclude:_spf.google.com
Microsoft 365include:spf.protection.outlook.com
Hosting dùng chung hoặc dịch vụ emailinclude: hoặc dải IP ghi trong tài liệu của nhà cung cấp

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

Với các tên miền không bao giờ gửi thư, hãy công bố v=spf1 -all để chúng khó bị giả mạo hơn.

Thiết lập DKIM: khóa 2048 bit và selector

DKIM có hai nửa: hệ thống gửi ký bằng khóa riêng tư, còn DNS công bố khóa công khai tương ứng. Với Google Workspace, Microsoft 365, hầu hết bảng điều khiển hosting và hầu hết dịch vụ email, bạn tạo khóa trong bảng quản trị rồi sao chép giá trị DNS được hiển thị.

Độ dài khóa và selector

Hãy dùng khóa RSA 2048 bit. RFC 8301 quy định tối thiểu là 1024 bit và nói bên ký nên dùng ít nhất 2048 bit; RFC này cũng cấm rsa-sha1. Hướng dẫn của Google cũng tương tự: chọn 2048 bit nếu nhà cung cấp DNS của bạn hỗ trợ, và chỉ lùi về 1024 khi không hỗ trợ.

Selector là một nhãn cho biết khóa nào đã ký thư, nhờ đó một tên miền có thể có nhiều khóa cùng lúc, mỗi khóa cho một dịch vụ gửi hoặc cho một kỳ xoay vòng khóa. Khóa công khai nằm tại selector._domainkey.yourdomain. Google Workspace dùng google làm selector mặc định. Microsoft 365 dùng hai bản ghi CNAME, selector1._domainkey và selector2._domainkey, trỏ đến các khóa do Microsoft lưu trữ; hãy lấy đích chính xác từ cổng Defender hoặc Get-DkimSigningConfig, vì định dạng khác nhau tùy tenant.

Công bố khóa công khai dài

Khóa công khai 2048 bit dài hơn giới hạn 255 ký tự cho một chuỗi ký tự (character-string) DNS, nên ở dạng tệp zone, nó được viết thành nhiều chuỗi trong ngoặc kép trong cùng một bản ghi TXT:

selector1._domainkey.example.com.  3600  IN  TXT  ( "v=DKIM1; k=rsa; "
    "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA(first part of your key)"
    "(rest of your key)IDAQAB" )

Hãy thay các phần trong ngoặc đơn bằng khóa thực của bạn. Máy chủ nhận nối các chuỗi lại mà không chèn khoảng trắng, nên bạn có thể tách ở bất kỳ vị trí nào trong khóa. Nhiều bảng điều khiển tự động tách giá trị dài: hãy dán toàn bộ giá trị trước, và chỉ tự tách khi bảng điều khiển không chấp nhận. Hãy bảo đảm không có gì bị mất khi sao chép; p= rỗng nghĩa là khóa đã bị thu hồi.

Trên VPS riêng chạy Postfix hoặc một MTA tương tự, một milter ký thư như OpenDKIM có thể tạo cặp khóa, ví dụ opendkim-genkey -b 2048 -s selector1 -d example.com. Hãy công bố nội dung của tệp khóa công khai được tạo ra như hướng dẫn ở trên.

Kiểm tra thư có thực sự được ký

Mở một thư bạn đã gửi và tìm tiêu đề DKIM-Signature:. Thẻ d= của nó phải là tên miền của bạn, còn s= là selector bạn đã công bố. Nhiều dịch vụ email mặc định ký bằng tên miền của chính họ; cách này vượt qua DKIM nhưng không căn chỉnh với tên miền From của bạn, nên không giúp ích cho DMARC. Hãy bật tính năng xác thực tên miền tùy chỉnh của dịch vụ để d= trở thành tên miền của bạn.

Thiết lập DMARC: bắt đầu ở p=none, rồi thực thi

DMARC là một bản ghi TXT tại _dmarc dưới tên miền của bạn. Hãy bắt đầu ở chế độ giám sát, tức là yêu cầu máy chủ nhận không thay đổi cách xử lý thư của bạn, và yêu cầu nhận báo cáo tổng hợp:

_dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com"

Báo cáo tổng hợp là bản tóm tắt dạng máy đọc được, cho biết những địa chỉ IP nào đã gửi thư bằng tên miền của bạn và thư có vượt qua kiểm tra hay không; Google gợi ý dùng một hộp thư hoặc nhóm riêng để nhận các báo cáo này. Khi báo cáo cho thấy mọi nguồn hợp lệ đều vượt qua kèm căn chỉnh, hãy siết chặt chính sách bằng cách sửa chính bản ghi đó thay vì thêm bản ghi thứ hai:

_dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com"
_dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com"
ThẻÝ nghĩa
v=DMARC1Bắt buộc và phải đứng đầu
p=none (không làm gì), quarantine (coi là đáng ngờ, chẳng hạn đưa vào thư mục spam) hoặc reject
sp=Chính sách cho tên miền phụ; nếu không có, tên miền phụ kế thừa p=
rua=Nơi nhận báo cáo tổng hợp; không có thẻ này thì bạn sẽ không nhận được báo cáo
adkim= / aspf=Chế độ căn chỉnh cho DKIM và SPF: r nới lỏng (relaxed, mặc định) hoặc s nghiêm ngặt (strict)

Căn chỉnh, nói một cách đơn giản

Để vượt qua DMARC, ít nhất một trong SPF hoặc DKIM phải vượt qua cho một tên miền khớp với tên miền From. Ở chế độ nới lỏng, tên miền tổ chức (organizational domain) phải khớp nhau, nên chữ ký DKIM với d=example.com sẽ căn chỉnh với thư gửi từ alerts@news.example.com. Chế độ nghiêm ngặt yêu cầu khớp chính xác. Các dịch vụ email thường dùng tên miền riêng của họ trong Return-Path, nên SPF sẽ không căn chỉnh dù có vượt qua; DKIM được căn chỉnh là cách thực tế để những thư này vượt qua DMARC.

Nếu muốn áp dụng chính sách khác cho tên miền phụ, hãy thêm sp=. Ví dụ, p=reject; sp=quarantine sẽ từ chối thư không đạt từ tên miền chính, trong khi chỉ cách ly thư không đạt từ các tên miền phụ.

Lưu ý về tiêu chuẩn mới

Vào tháng 5 năm 2026, DMARC được công bố lại thành RFC 9989, thay thế RFC 7489. Các bản ghi hiện có vẫn hoạt động và vẫn bắt đầu bằng v=DMARC1. Tiêu chuẩn mới bỏ thẻ pct, vốn hiếm khi được áp dụng chính xác ngoại trừ ở mức 0 hoặc 100, và thêm các thẻ như t=y (chế độ thử nghiệm) và np (chính sách cho tên miền phụ không tồn tại). Một số trang trợ giúp của nhà cung cấp vẫn hiển thị pct, vì vậy cách ít gây nhầm lẫn nhất để triển khai thực thi là lần lượt chuyển qua các giá trị p=.

DNS ngược (PTR) cho IP gửi thư

DNS ngược ánh xạ một địa chỉ IP về một tên máy. Google yêu cầu mọi người gửi đến tài khoản Gmail cá nhân phải có bản ghi PTR với tên máy phân giải ngược về đúng IP gửi, còn Yahoo yêu cầu DNS thuận và ngược hợp lệ cho IP gửi và khuyến nghị bản ghi PTR có ý nghĩa, không chung chung.

203.0.113.10       PTR  mail.example.com.
mail.example.com.  A    203.0.113.10

Bản ghi PTR không nằm trong zone của tên miền bạn. Bên sở hữu địa chỉ IP mới là bên quản lý nó, nên trên VPS bạn đặt nó trong bảng điều khiển của nhà cung cấp (thường gọi là reverse DNS hoặc rDNS), rồi tạo bản ghi A tương ứng (AAAA cho IPv6) trong DNS của bạn. Nếu bạn gửi thư qua IPv6, địa chỉ IPv6 cũng cần được xử lý như vậy. Với Google Workspace, Microsoft 365, các dịch vụ email và hầu hết hosting dùng chung, nhà cung cấp sẽ quản lý IP gửi và DNS ngược của chúng thay bạn.

Cách kiểm tra cấu hình

Đọc Authentication-Results

Gửi một thư thử đến hộp thư bên ngoài và xem toàn bộ tiêu đề. Trong Gmail, hãy mở thư và chọn Hiển thị bản gốc. Trang trợ giúp DKIM của Google lưu ý rằng bạn nên gửi cho người dùng khác thay vì gửi cho chính mình. Hãy tìm một tiêu đề như sau:

Authentication-Results: mx.example.net;
       dkim=pass header.i=@example.com header.s=selector1;
       spf=pass smtp.mailfrom=example.com;
       dmarc=pass header.from=example.com

Cách trình bày cụ thể khác nhau tùy máy chủ nhận. Điều quan trọng là spf=pass, dkim=pass và dmarc=pass, với tên miền của chính bạn trong header.i hoặc header.d và trong header.from. Nếu SPF vượt qua cho tên miền của một dịch vụ nhưng DKIM hiển thị tên miền khác, DMARC sẽ thất bại: hãy sửa căn chỉnh DKIM trước.

Tra cứu DNS trực tiếp

dig +short TXT example.com
dig +short TXT selector1._domainkey.example.com
dig +short TXT _dmarc.example.com
dig +short -x 203.0.113.10

Trên Windows, nslookup -type=TXT _dmarc.example.com cũng làm được việc tương tự. Thay đổi DNS có thể mất thời gian để lan truyền; Google cho biết SPF và DKIM mỗi loại có thể mất đến 48 giờ mới bắt đầu hoạt động. Các công cụ kiểm tra trực tuyến miễn phí cũng có thể phân tích bản ghi và đếm số lượt tra cứu SPF giúp bạn.

Nếu xác thực đã vượt qua mà thư vẫn bị trả lại hoặc rơi vào thư rác, hãy kiểm tra IP gửi hoặc tên miền của bạn có bị liệt kê trên DNSBL hay không bằng công cụ kiểm tra danh sách đen của chúng tôi, và xem email không gửi được vì danh sách đen để biết các bước tiếp theo.

Yêu cầu đối với người gửi của Gmail, Yahoo và Outlook.com

Các nhà cung cấp hộp thư lớn hiện đều thực thi xác thực. Tại thời điểm tháng 11 năm 2026, trang chính thức của họ nêu như sau.

Hãy đọc toàn văn trong Nguyên tắc dành cho người gửi email của Google, Thực tiễn tốt nhất cho người gửi của Yahoo và thông báo về Outlook.com của Microsoft. Ngay cả khi bạn gửi ít thư hơn nhiều, thiết lập cả ba ngay bây giờ sẽ giúp bạn không bị bất ngờ nếu ngưỡng được hạ thấp sau này. Để xử lý sự cố riêng với Gmail, hãy xem Gmail không nhận email của bạn.

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

Nếu bạn không muốn tự xử lý

Chúng tôi giới thiệu các nhà cung cấp nhận làm yêu cầu gỡ tên (delist), tư vấn và hỗ trợ (từ JPY 50,000). Việc gỡ tên do từng đơn vị quản lý danh sách quyết định và không thể được cam kết.

Nhận hỗ trợ

Trang web này có thể nhận phí giới thiệu từ các nhà cung cấp được liệt kê. About

Câu hỏi thường gặp

Tôi cần cả ba, hay chỉ một là đủ?

Gmail và Yahoo chấp nhận SPF hoặc DKIM từ người gửi khối lượng thấp, nhưng người gửi hàng loạt cần cả ba. Chỉ DMARC mới bảo vệ địa chỉ From mà mọi người thực sự nhìn thấy, vì vậy hãy thiết lập cả ba ngay cả khi bạn gửi ít thư.

Nên dùng ~all hay -all trong SPF?

Google khuyến nghị ~all; Microsoft khuyến nghị -all cho tên miền có dùng cả DKIM và DMARC. Hãy bắt đầu với ~all cho đến khi báo cáo DMARC xác nhận bạn đã tìm ra mọi nguồn gửi, rồi mới quyết định có chuyển hay không.

Để DMARC ở p=none mãi có được không?

Nó đáp ứng yêu cầu dành cho người gửi hàng loạt của Gmail, Yahoo và Outlook.com, nhưng nó yêu cầu máy chủ nhận không làm gì, nên không ngăn được giả mạo. Hãy coi p=none là giai đoạn giám sát và chuyển sang quarantine rồi reject khi báo cáo đã sạch.

Nhà cung cấp DNS không chấp nhận khóa DKIM 2048 bit. Phải làm sao?

Hãy tách khóa thành nhiều chuỗi trong ngoặc kép trong cùng một bản ghi TXT; máy chủ nhận sẽ nối chúng lại mà không chèn khoảng trắng. Hãy xem trang trợ giúp của nhà cung cấp DNS để biết giới hạn độ dài TXT. Chỉ dùng khóa 1024 bit nếu nhà cung cấp hoàn toàn không lưu được khóa 2048 bit.

Mọi thứ đều vượt qua nhưng thư vẫn vào thư rác. Vì sao?

Xác thực là tấm vé vào cửa, không phải sự bảo đảm thư sẽ vào hộp thư đến. Uy tín người gửi, tỷ lệ khiếu nại và việc bị liệt kê trong danh sách đen vẫn quan trọng. Nếu bạn bị Spamhaus liệt kê, hãy xem cách gỡ tên khỏi danh sách đen Spamhaus.

Các trang chính thức được tham khảo

Thông tin trong bài viết này đã được đối chiếu với các trang chính thức dưới đây tại thời điểm đăng. Chính sách và cách vận hành có thể thay đổi mà không báo trước, vì vậy bạn hãy kiểm tra lại các trang chính thức trước khi dựa vào thông tin cho việc quan trọng.

Hướng dẫn liên quan

Gmail chặn email hoặc đưa vào thư rác? Nguyên nhân và cách khắc phục

Vì sao Gmail chặn email hoặc đưa email vào thư rác, mã lỗi như 550 5.7.26 có nghĩa là gì, và cách tìm lại thư bị thiếu trong hộp thư Gmail của bạn.

Email bị blacklist? Cách đọc thư báo lỗi và gỡ khỏi danh sách đen

Email bị chặn vì danh sách đen? Đọc mã lỗi trả lại, kiểm tra nguyên nhân theo đúng thứ tự, xác định danh sách nào quan trọng và yêu cầu gỡ đúng cách.

Gỡ tên khỏi Spamhaus: cách gỡ IP hoặc tên miền bị liệt kê

Bị Spamhaus liệt kê? Xác định bạn nằm trong danh sách nào (ZEN, PBL, XBL, CSS, SBL, DBL), ý nghĩa của mã trả về và cách gỡ tên đúng cho từng danh sách.

Tất cả hướng dẫn →