Hướng dẫn cấu hình SPF và DKIM cho mail server để xác thực hợp lệ tránh vào spam

Hiện nay một số nhà cung cấp dịch vụ mail như Gmail, Hotmail … thường kiểm tra hai bản ghi là SPF( SPF Record – Sender Policy Framework) và DKIM( DomainKeys Identified Mail) giảm bớt việc spam mail. Dù không chắc chắn 100% sau khi bạn làm đúng thì thư của bạn sẽ được các nhà cung cấp dịch vụ mail tự động lọc thư cho vào Inbox nhưng mình cùng có hướng dẫn cách để tăng khả năng tránh vào spam nhất có thể.

1. Yêu cầu nền tảng:

2. Các bước cài đặt SPF Record và DKIM

1. Thêm SPF Record vào DNS:

  • Bước 1: Vào phần quản lý DNS của Domain
  • Bước 2: Thêm bản ghi mới:
    • Kiểu( Record Type): TXT
    • Địa chỉ( Address): v=spf1 a mx ip4:123.123.123.123 mx:example.com ?all

spf

2. Cài đặt DKIM và thêm DNS cho DKIM

Mình đang sử dụng Centos 7 nếu sử dụng phiên bản khác thì có thể câu lệnh start hoặc restart có thể khác đôi chút nhé.

1. Đầu tiên nên cập nhật Centos mới nhất nhé

yum update

2. Do openDKIM lưu thông tin cài đặt trên gói EPEL cho nên chúng ta cần cập nhật lại gói này.

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

 

3. Cài đặt Opendkim.

yum install -y opendkim 

4. Cấu hình cho opendkim

Lưu ý là bản cài đặt DKIM mình áp dụng cho multi domain nhé nếu sử dụng 1 domain thì bỏ đi cấu hình domain thứ 2 là OK!

Cấu hình Dkim: /etc/opendkim.conf

# Lưu ý chỉ cần chỉnh sửa các dòng sau còn lại thì comment
PidFile	/var/run/opendkim/opendkim.pid
Mode	sv
Syslog	yes
SyslogSuccess	yes
LogWhy	yes
UserID	opendkim:opendkim
Socket	inet:8891@127.0.0.1
Umask	002
SendReports	yes
SoftwareHeader	yes
Canonicalization	relaxed/simple
Domain	lcdung.top
Selector	default
MinimumKeyBits	1024
KeyTable	/etc/opendkim/KeyTable
SigningTable	refile:/etc/opendkim/SigningTable
ExternalIgnoreList	refile:/etc/opendkim/TrustedHosts
InternalHosts	refile:/etc/opendkim/TrustedHosts
OversignHeaders	From

Cấu hình KeyTable: /etc/opendkim/KeyTable

# Cấu hình cho domain mặc định sử dụng DKIM
default._domainkey.lcdung.top lcdung.top:default:/etc/opendkim/keys/default.private
# Cấu hình cho domain thứ 2 sử dụng DKIM
mail._domainkey.luxor.vn luxor.vn:mail:/etc/opendkim/keys/mail.private

Cấu hình SigningTable: /etc/opendkim/SigningTable

# Cấu hình cho domain mặc định
*@lcdung.top default._domainkey.lcdung.top
# Cấu hình cho domain thứ 2
*@luxor.vn mail._domainkey.luxor.vn

Cấu hình TrustedHosts: /etc/opendkim/TrustedHosts

127.0.0.1
::1
#host.example.com
#192.168.1.0/24
# Danh sách domain
*.lcdung.top
*.luxor.vn

 

 

Tạo khoá công khai và khoá bí mật.

# Tạo khóa mặc định dành cho domain mặc định là default.private và default.txt
opendkim-default-keygen

# Tạo khóa cho doamin thứ 2 với tên là mail.private và mail.txt
opendkim-genkey -s mail -d luxor.vn

# hoặc dùng lệnh này
opendkim-genkey -D /etc/opendkim/keys/ -d luxor.vn -s mail

Tạo quyền cho khóa để Postfix có thể truy cập đọc được

chown opendkim:opendkim mail.private

Lúc này bạn sẽ có 1 file .private và 1 file .txt. Mở file .txt để lấy thông tin khóa cấu hình trên DNS:

mail._domainkey	IN	TXT	( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGXwAE5jkB63eFI4VqkmODluyTTgRe/PdnqJoD9h9kLDwY081bxATuu78NAJm8R+fJ15gMWKgkpVVXcvV5I9rosSK6wwDonStfQIgiq4nEmbSxbuGYNnbmG3R2/1q9klQ7Lih/Kpaokv+53Wv82y3qBMWbqjQIDAQAB" )  ; 

Và bạn cấu hình DNS như sau:

spf

 

Tiếp theo cấu hình Postfix nhận openDKIM.

File: /etc/postfix/main.cf

Thêm đoạn mã sau ở cuối file cấu hình

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 2

Cuối cùng khởi động lại service Postfix và Opendkim

systemctl start opendkim; 
systemctl enable opendkim; 
systemctl restart postfix;

3. Kiểm tra lại SPF và DKIM:

Kiểm tra port 25 sau khi setup thành công: (Bạn có thể xem cách kiểm khác tại đây)

  • Link kiểm tra: https://www.port25.com/authentication-checker/
  • Tạo email gửi tới: check-auth@verifier.port25.com
  • Sau đó bạn sẽ nhận 1 mail phẩn hồi thông tin port 25 cần nâng cấp thêm những gì.Trước khi cài SPF và DKIM
    Kết quả kiểm tra port 25 khi gửi mail
    Sau khi cài đặt thành công

 

Chúc các bạn thành công nhé!

 

Sliding Sidebar

About Me

About Me

Hello, my name is Dũng (Johnny). Welcome to my blog.

As I’m a developer, I write about topics related to the field of programming, mainly from a technical point of view. On this blog you’ll find posts which encourage discussion, information about development trends, case studies, reviews, tutorials, tips on how to improve your effectiveness, and anything else that might be fascinating to people from the IT industry.
I love PHP, NodeJS, Java,... and Fullstack.