Skip to main content

[Thủ Thuật Linux] Cài đặt DKIM bằng OpenDKIM với Postfix trên CentOS 7

 Trong bài viết này, chúng ta sẽ xem các bước cài đặt và cấu hình DKIM với OpenDKIM trên CentOS 7. Bây giờ tìm hiểu ngay về OpenDKIM.

OpenDKIM là gì?

OpenDKIM là một mã nguồn mở của hệ thống xác thực người gửi DKIM (Domain Keys Identified Mail), là hệ thống xác thực email được thiết kế để phát hiện các email giả mạo bằng cách cung cấp một cơ chế cho phép trao đổi thư nhận được để kiểm tra xem thư đến từ miền có được ủy quyền bởi miền đó không. Người nhận có thể xác thực chữ ký điện tử đi kèm với thư bằng cách sử dụng chữ ký xác thực được công khai trên DNS.

Image
OpenDKIM Diagram

Bước 1- Cài đặt OpenDKIM

1.1. Update hệ thống và cài đặt packages

# sudo yum update -y

# yum install curl wget vim openssl man

1.2. Cài đặt EPEL Repository

Ta có thể cài đặt OpenDKIM trong EPEL ( Extra Packages for Enterprise Linux ) Repository

# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Chúng ta có thể kiểm tra repository đã được enabled chưa bằng lệnh

# yum repolist

1.3. Cài đặt OpenDKIM 

# yum install opendkim

1.4. Thay đổi config mặc định trong  etc/opendkim/ và thêm lại file config mới

# mv /etc/opendkim.conf{,.default}

# vi /etc/opendkim.conf

1.5. Thêm config mới vào file opendkim.conf vừa tạo xong

AutoRestart Yes
AutoRestartRate 10/1h
LogWhy Yes
Syslog Yes
SyslogSuccess Yes
Mode sv
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
SignatureAlgorithm rsa-sha256
Socket inet:8891@localhost
PidFile /var/run/opendkim/opendkim.pid
UMask 022
UserID opendkim:opendkim
TemporaryDirectory /var/tmp

Bước 2 - Cấu hình Public/ Private Keys

2.1. Tạo keys cho domain của bạn theo các lệnh dưới đây

# mkdir /etc/opendkim/keys/testmail.in

# opendkim-genkey -D /etc/opendkim/keys/testmail.in/ -d testmail.in -s default

# chown -R opendkim: /etc/opendkim/keys/testmail.in

# mv /etc/opendkim/keys/testmail.in/default.private /etc/opendkim/keys/testmail.in/default

2.2. Sau khi tạo xong, mở và thêm vào /etc/opendkim/KeyTable 

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default

2.3. Mở và thêm đoạn dưới vào file  /etc/opendkim/SigningTable

*@example.com.in default._domainkey.example.com.in

2.4. Tiếp tục mở file và thêm đoạn code dưới vào /etc/opendkim/TrustedHosts

127.0.0.1
testmail.example.com
mta.testmail.example.com

2.5. Khởi động OpenDKIM

# sudo systemctl start opendkim.service

# sudo systemctl enable opendkim.service

2.6. Cuối cùng tới nơi quản lý DNS thêm vào record TXT với value trong file /etc/opendkim/keys/testmail.in/default.txt 

Image
 Name Thêm DKIM vào DNS

2.7. Bạn cũng thêm vào SPF record vào DNS

example.com. 14400 IN TXT “v=spf1 a mx ~example.com
Image
thêm vào SPF record vào DNS

2.8. Kiểm tra DNS đã cập nhập chưa bằng dig

# dig +short default._domainkey.mydomain.com TXT

Bước 3 - Cấu hình Postfix

3.1. Thêm OpenDKIM vào Postfix bằng cách thêm đoạn dưới vào /etc/postfix/main.cf

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

3.2. Sau đó khởi động lại Postfix và OpenDKIM

# systemctl restart opendkim.service

# systemctl restart postfix.service

Xong, bây giờ bạn có thể kiểm tra lại email xem đã có DKIM chưa.

Cấu hình cho nhiều tên miền khác nhau

4.1. Generate keys

# mkdir -p /etc/opendkim/keys/domain.com
# cd /etc/opendkim/keys/domain.com
# opendkim-genkey -r -d domain.com

4.2. Set the right permissions

# chown -R opendkim:opendkim /etc/opendkim
# chmod go-rw /etc/opendkim/keys

4.3. Edit KeyTable and SigningTable

# vi /etc/opendkim/KeyTable

thêm các dòng như sau
default._domainkey.domain1.com domain1.com:default:/etc/opendkim/keys/domain1.com/default.private
default._domainkey.domain2.com domain2.com:default:/etc/opendkim/keys/domain2.com/default.private
default._domainkey.domain3.com domain3.com:default:/etc/opendkim/keys/domain3.com/default.private

Tương tự với SigningTable

#vi /etc/opendkim/SigningTable

Thêm vào
*@domain1.com default._domainkey.domain1.com
*@domain2.com default._domainkey.domain2.com
*@domain3.com default._domainkey.domain3.com

4.4. Configure DNS zone

Tương tự ở trên dùng lệnh để đọc file lấy nội dung và vào quản trị DNS để update