Cách cài đặt và cấu hình DKIM với Postfix trên Debian Wheezy
Sự thất vọng khi bị gắn cờ giả là người gửi thư rác không phải là điều xa lạ đối với hầu hết các administrator server thư. Bằng cách loại trừ khả năng server bị xâm nhập, cờ sai thường do một trong những nguyên nhân sau:- server là một chuyển tiếp thư mở
- địa chỉ IP của người gửi hoặc server bị đưa vào blacklist
- server không có Tên domain Đủ điều kiện ( FQDN ) và bản ghi PTR
- bản ghi DNS Khung policy người gửi ( SPF ) bị thiếu hoặc nó bị cấu hình sai
- triển khai Thư được xác định DomainKeys ( DKIM ) bị thiếu hoặc nó không được cài đặt đúng cách
Đây là một số thuộc tính cơ bản đang được kiểm tra bởi phần lớn các bộ lọc thư rác độc quyền và open-souce (bao gồm cả SpamAssassin). Vượt qua các bài kiểm tra này là cực kỳ quan trọng đối với một server thư được cấu hình tốt.
Hướng dẫn này sẽ tập trung vào cài đặt và cấu hình OpenDKIM ]: một triển khai open-souce của hệ thống xác thực người gửi DKIM.
Giả định người đọc biết cách truy cập server qua SSH, Postfix và Dovecot đã được cài đặt và cấu hình ( hướng dẫn ), tên server và FQDN được cài đặt ( hướng dẫn , hướng dẫn ) và bản ghi SPF đã có sẵn ( hướng dẫn ).
Về DKIM
DKIM là một Tiêu chuẩn Internet cho phép một cá nhân hoặc tổ chức kết hợp domain với một email. Trên thực tế, điều này đóng role như một phương pháp xác nhận trách nhiệm đối với một tin nhắn. Về cốt lõi, DKIM được hỗ trợ bởi mật mã không đối xứng. Đại lý chuyển thư (MTA) của người gửi ký mọi thư gửi đi bằng private key . Người nhận truy xuất public key từ bản ghi DNS của người gửi và xác minh xem nội dung thư và một số trường tiêu đề không bị thay đổi kể từ khi quá trình ký thư diễn ra.
Cài đặt OpenDKIM
Trước khi bắt đầu cài đặt, nên cập nhật hệ thống:
sudo apt-get update sudo apt-get dist-upgrade
Cài đặt OpenDKIM và các phụ thuộc của nó:
sudo apt-get install opendkim opendkim-tools
Các gói bổ sung sẽ được liệt kê dưới dạng các gói phụ thuộc, hãy nhập yes
và nhấn Enter
để tiếp tục.
Cấu hình OpenDKIM
Một vài file phải được tạo và chỉnh sửa để cấu hình OpenDKIM.
Nano sẽ được sử dụng làm editor vì nó được cài đặt theo mặc định trên server DigitalOcean và hoạt động đơn giản:
- chuyển bằng các phím mũi tên
- thoát mà không lưu thay đổi: nhấn
CTRL + X
rồi nhấnN
- thoát và lưu các thay đổi: nhấn
CTRL + X
rồi nhấnY
, cuối cùng nhấnEnter
Quan trọng: thay thế mọi version của example.com bằng domain của bạn trong tất cả các lệnh và file cấu hình. Đừng quên lưu các file của bạn sau khi chỉnh sửa.
Hãy bắt đầu với file cấu hình chính:
sudo nano /etc/opendkim.conf
Nối các dòng sau vào cuối file conf (mỗi tham số được giải thích bên dưới). Theo tùy chọn, bạn có thể chọn số cổng tùy chỉnh cho Socket
. Đảm bảo rằng nó không bị ứng dụng khác sử dụng.
AutoRestart Yes AutoRestartRate 10/1h UMask 002 Syslog yes SyslogSuccess Yes LogWhy Yes Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable Mode sv PidFile /var/run/opendkim/opendkim.pid SignatureAlgorithm rsa-sha256 UserID opendkim:opendkim Socket inet:12301@localhost
AutoRestart : tự động khởi động lại bộ lọc khi bị lỗi
AutoRestartRate : chỉ định tốc độ khởi động lại tối đa của bộ lọc, nếu quá trình khởi động lại bắt đầu xảy ra nhanh hơn tốc độ này, bộ lọc sẽ kết thúc;
10/1h
- 10 lần khởi động lại / giờUMask : cung cấp tất cả các quyền truy cập cho group user được xác định bởi
UserID
và cho phép user khác đọc và thực thi file , trong trường hợp này, nó sẽ cho phép tạo và sửa đổi file Pid.Syslog , SyslogSuccess , * LogWhy : các tham số này cho phép ghi log chi tiết thông qua các lệnh gọi đến log hệ thống
Quá trình chuẩn: xác định phương pháp chuẩn hoá sử dụng tại ký tin nhắn,
simple
phương pháp cho phép hầu như không thay đổi trong khirelaxed
một Chịu nhỏ thay đổi như
thay thế khoảng trắng;relaxed/simple
- tiêu đề thư sẽ được xử lý với thuật toánrelaxed
và nội dung với thuật toánsimple
ExternalIgnoreList : chỉ định các server bên ngoài có thể gửi thư qua server dưới dạng một trong các domain ký mà không cần thông tin xác thực
Server nội bộ : xác định danh sách server nội bộ có thư không nên được xác minh nhưng thay vào đó được ký
KeyTable : ánh xạ các tên khóa đến các khóa ký
SigningTable : liệt kê các chữ ký để áp dụng cho thư dựa trên địa chỉ được tìm thấy trong trường
From:
headerChế độ : khai báo các chế độ hoạt động; trong trường hợp này, milter đóng role là (
s
) người ký và người xác minh (v
)PidFile : đường dẫn đến file Pid chứa số nhận dạng quy trình
SignatureAlgorithm : chọn thuật toán ký để sử dụng khi tạo chữ ký
UserID : quá trình opendkim chạy dưới user và group này
Socket : milter sẽ lắng nghe trên socket được chỉ định ở đây, Posfix sẽ gửi tin nhắn tới opendkim để ký và xác minh thông qua socket này;
12301@localhost
định nghĩa một socket TCP lắng nghe trênlocalhost
, cổng12301
Cấu hình đơn giản này nghĩa là cho phép ký thư cho một hoặc nhiều domain , để tìm hiểu về các tùy chọn khác, vui lòng truy cập vào đây .
Kết nối milter với Postfix:
sudo nano /etc/default/opendkim
Thêm dòng sau, chỉ chỉnh sửa số cổng nếu sử dụng một cổng tùy chỉnh:
SOCKET="inet:12301@localhost"
Cấu hình postfix để sử dụng milter này:
sudo nano /etc/postfix/main.cf
Đảm bảo rằng hai dòng này có trong file cấu hình Postfix và không được comment :
milter_protocol = 2 milter_default_action = accept
Có khả năng là một bộ lọc (SpamAssasin, Clamav, v.v.) đã được Postfix sử dụng; nếu các tham số sau có mặt, chỉ cần nối milter opendkim vào chúng (milter được phân tách bằng dấu phẩy), số cổng phải giống như trong opendkim.conf
:
smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301 non_smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301
Nếu các tham số bị thiếu, hãy xác định chúng như sau:
smtpd_milters = inet:localhost:12301 non_smtpd_milters = inet:localhost:12301
Tạo cấu trúc folder sẽ chứa các server tin cậy, bảng khóa, bảng ký và khóa tiền điện tử:
sudo mkdir /etc/opendkim sudo mkdir /etc/opendkim/keys
Chỉ định server tin cậy :
sudo nano /etc/opendkim/TrustedHosts
Ta sẽ sử dụng file này để xác định cả ExternalIgnoreList
và InternalHosts
, các thông báo bắt nguồn từ các server , domain và địa chỉ IP này sẽ được tin cậy và ký.
Bởi vì file cấu hình chính của ta khai báo TrustedHosts
là một file biểu thức chính quy ( refile
), ta có thể sử dụng trình duyệt ký tự đại diện, *.example.com
nghĩa là các thư đến từ các domain phụ của example.com cũng sẽ được tin cậy, không chỉ các thư được gửi từ domain root .
Tùy chỉnh và thêm các dòng sau vào file mới tạo. Có thể chỉ định nhiều domain , không chỉnh sửa ba dòng đầu tiên:
127.0.0.1 localhost 192.168.0.1/24 *.example.com #*.example.net #*.example.org
Tạo một bảng khóa:
sudo nano /etc/opendkim/KeyTable
Một bảng khóa chứa từng cặp bộ chọn / domain và đường dẫn đến private key của chúng. Bất kỳ chuỗi chữ và số nào cũng được dùng làm bộ chọn, trong ví dụ này, mail
được sử dụng và không cần thiết phải thay đổi nó.
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private #mail._domainkey.example.net example.net:mail:/etc/opendkim/keys/example.net/mail.private #mail._domainkey.example.org example.org:mail:/etc/opendkim/keys/example.org/mail.private
Tạo bảng ký:
sudo nano /etc/opendkim/SigningTable
Tệp này được sử dụng để khai báo domain / địa chỉ email và bộ chọn của chúng.
*@example.com mail._domainkey.example.com #*@example.net mail._domainkey.example.net #*@example.org mail._domainkey.example.org
Tạo public key và private key
Thay đổi folder khóa:
cd /etc/opendkim/keys
Tạo một folder riêng cho domain để giữ các khóa:
sudo mkdir example.com cd example.com
Tạo các khóa:
sudo opendkim-genkey -s mail -d example.com
-s
chỉ định bộ chọn và -d
domain , lệnh này sẽ tạo hai file , mail.private
là private key của ta và mail.txt
chứa public key .
Thay đổi chủ sở hữu của private key thành opendkim
:
sudo chown opendkim:opendkim mail.private
Thêm public key vào bản ghi DNS của domain
Mở mail.txt
:
sudo nano -$ mail.txt
Khóa công khai được định nghĩa dưới tham số p
. Không sử dụng khóa ví dụ bên dưới, nó chỉ là hình minh họa và sẽ không hoạt động trên server của bạn.
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB" ; ----- DKIM key mail for example.com
Sao chép khóa đó và thêm bản ghi TXT vào các mục nhập DNS của domain của bạn:
Name: mail._domainkey.example.com. Text: "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB"
Xin lưu ý các thay đổi DNS có thể mất vài giờ để có hiệu lực.
Khởi động lại Postfix và OpenDKIM:
sudo service postfix restart sudo service opendkim restart
Xin chúc mừng! Bạn đã cấu hình thành công DKIM cho server thư của bạn !
Cấu hình có thể được kiểm tra bằng cách gửi một email trống đến check-auth@verifier.port25.com
và sẽ nhận được phản hồi. Nếu mọi thứ hoạt động chính xác, bạn sẽ thấy DKIM check: pass
trong phần Summary of Results
.
========================================================== Summary of Results ========================================================== SPF check: pass DomainKeys check: neutral DKIM check: pass Sender-ID check: pass SpamAssassin check: ham
Ngoài ra, bạn có thể gửi thư đến địa chỉ Gmail mà bạn kiểm soát, xem tiêu đề của email đã nhận trong hộp thư đến Gmail của bạn, dkim=pass
phải có trong trường tiêu đề Authentication-Results
.
Authentication-Results: mx.google.com; spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com; dkim=pass header.i=@example.com;
<div class = “author”> Người gửi: P. Sebastian </a> </div>
Các tin liên quan