DKIM: bật và kiểm tra chữ ký email
DKIM gắn chữ ký số vào mỗi email để người nhận biết thư đúng do tên miền của bạn gửi và không bị sửa nội dung. Bài này hướng dẫn bật DKIM trên Google Workspace, Microsoft 365, Zoho, cPanel, DirectAdmin và cách tự kiểm tra.
DKIM là gì
DKIM (DomainKeys Identified Mail) là chữ ký số cho email. Máy chủ gửi thư dùng một khoá bí mật để ký các phần quan trọng của thư (From, Subject, nội dung...) rồi gắn chữ ký vào header DKIM-Signature. Khoá công khai tương ứng được đặt trong DNS. Máy chủ nhận lấy khoá đó ra kiểm tra: nếu khớp thì thư đúng là do bên nắm khoá bí mật gửi và nội dung không bị sửa trên đường đi.
Khác SPF (kiểm tra máy chủ gửi), DKIM đi cùng thư nên vẫn còn hiệu lực khi thư được chuyển tiếp. Đó là lý do DMARC cần ít nhất một trong hai chân SPF hoặc DKIM đạt và khớp tên miền trong From. Bật cả hai là cách chắc chắn nhất.
Selector và bản ghi DNS
Một tên miền có thể dùng nhiều khoá cùng lúc cho các dịch vụ khác nhau, nên mỗi khoá có một tên gọi là selector. Khoá công khai nằm ở tên:
selector._domainkey.example.vn
Giá trị thường là bản ghi TXT như sau (khoá rút gọn):
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
Trong thư, header ký sẽ có d=example.vn (tên miền ký) và s=selector (selector), nhờ đó bên nhận biết tra bản ghi nào. Một số nhà cung cấp, đáng kể là Microsoft 365, dùng bản ghi CNAME thay vì TXT: DNS của bạn chỉ trỏ sang nơi nhà cung cấp tự quản lý khoá, tiện cho việc xoay khoá.
Vài lưu ý kỹ thuật:
- Nên dùng khoá RSA 2048 bit. Khoá 2048 bit dài hơn 255 ký tự nên bản ghi TXT phải được tách thành nhiều chuỗi; hầu hết giao diện DNS tự làm việc đó khi bạn dán nguyên giá trị.
- Chữ ký chỉ có ý nghĩa với DMARC khi tên miền ký (
d=) khớp tên miền trongFrom. Nếu một dịch vụ bên thứ ba ký bằng tên miền của họ, DKIM vẫn "pass" nhưng không giúp DMARC. - Nên xoay khoá định kỳ (khuyến nghị của M3AAWG: khoảng 6 tháng một lần) bằng cách tạo selector mới. Giữ selector cũ trong DNS thêm vài ngày sau khi đổi, vì thư đã ký bằng nó có thể vẫn đang trên đường tới người nhận.
Theo nền tảng
Google Workspace. Vào Admin console, chọn Apps, Google Workspace, Gmail, rồi Authenticate email. Chọn tên miền, bấm Generate new record với độ dài khoá 2048. Google cho tên host (mặc định google._domainkey) và giá trị TXT. Thêm vào DNS, đợi vài phút rồi quay lại bấm Start authentication.
Microsoft 365. Vào cổng Microsoft Defender, chọn Email & collaboration, Policies & rules, Threat policies, Email authentication settings, thẻ DKIM. Chọn tên miền để xem hai bản ghi CNAME selector1._domainkey và selector2._domainkey. Giá trị đích phải lấy đúng từ cổng Defender, đừng chép theo ví dụ: tên miền thêm trước năm 2025 thường trỏ về miền onmicrosoft.com của tổ chức, tên miền mới hơn trỏ về miền ...dkim.mail.microsoft. Thêm cả hai vào DNS rồi bật công tắc Sign messages for this domain with DKIM signatures.
Zoho Mail. Vào Zoho Mail Admin Console, Domains, chọn tên miền, mục Email Configuration, DKIM. Thêm một selector (đặt tên tuỳ ý, ví dụ zoho), Zoho sinh ra giá trị TXT dạng v=DKIM1; k=rsa; p=.... Thêm vào DNS tại zoho._domainkey rồi bấm Verify.
cPanel. Vào Email Deliverability, chọn tên miền, bấm Manage. Ở mục DKIM nếu có thông báo vấn đề, bấm Install the suggested record để cPanel tự thêm bản ghi vào DNS (nếu DNS do chính máy chủ này quản lý), hoặc sao chép giá trị sang nhà cung cấp DNS bên ngoài.
DirectAdmin. Vào Email Manager, E-Mail Accounts và bật Enable DKIM (nằm dưới bảng tài khoản). Mục này chỉ hiện khi quản trị máy chủ đã bật DKIM trong cấu hình DirectAdmin (dkim=2 trong directadmin.conf), nên hosting dùng chung có thể phải nhờ nhà cung cấp bật. DirectAdmin tạo bản ghi x._domainkey (selector x) trong DNS. Nếu DNS đặt ở nơi khác (ví dụ Cloudflare), hãy chép bản ghi sang đó.
Cloudflare (khi DNS đặt ở Cloudflare). Vào DNS, Records, Add record. Với giá trị TXT, dán nguyên chuỗi v=DKIM1; ... vào Content. Với bản ghi CNAME của Microsoft 365, nhớ chọn DNS only (đám mây xám), không bật proxy, nếu không bên nhận sẽ không lấy được khoá.
Lỗi thường gặp
- Dán thiếu hoặc thừa ký tự trong giá trị
p=, hay tự chèn dấu cách và xuống dòng. - Quên bấm bật ký trên cổng quản trị sau khi đã thêm bản ghi DNS (Google và Microsoft đều cần bước này).
- Giao diện DNS tự nối thêm tên miền vào tên host, thành
selector._domainkey.example.vn.example.vn. Khi tên host đã có.example.vn, nhiều nơi chỉ cần nhậpselector._domainkey. - Dịch vụ gửi thư bên thứ ba (hệ thống gửi thông báo, công cụ gửi hàng loạt) chưa được cấu hình DKIM cho tên miền của bạn nên ký bằng tên miền của họ.
Cách tự kiểm tra
Với bản ghi TXT:
dig +short TXT google._domainkey.example.vn
Với bản ghi CNAME của Microsoft 365:
dig +short CNAME selector1._domainkey.example.vn
Trên Windows dùng nslookup -type=TXT google._domainkey.example.vn. Nếu bạn không biết selector, hãy xem trong header thư đã gửi: dòng DKIM-Signature có s= (selector) và d= (tên miền).
Kiểm tra thực tế: gửi một thư từ địa chỉ của tên miền tới hộp Gmail cá nhân, chọn "Hiện thư gốc" (Show original). Dòng DKIM: 'PASS' with domain example.vn cho biết chữ ký hợp lệ và khớp tên miền. Bạn cũng có thể dán header đó vào công cụ đọc header thư để xem kết quả SPF, DKIM, DMARC cùng lúc; dữ liệu chỉ xử lý trong trình duyệt của bạn.