Thiết lập DKIM (DomainKeys) cho Ubuntu, Postfix và Mailman


22

Tôi đang chạy Ubuntu 12.04 với Postfix và Mailman. Tôi muốn thiết lập DKIM . Thư xác định tên miền, hay DKIM, là sự kế thừa cho "Tên miền" của Yahoo. Nó kết hợp Thư nhận dạng của Cisco.

Các bước để thiết lập này là gì?

Opendkim có được khuyến nghị không?

Tài liệu tham khảo duy nhất tôi có là HowToForge , nhưng tôi thích nhận trợ giúp ở đây (ngay cả khi đó chỉ là xác nhận các bước tại liên kết đó). Trên thực tế, tôi nghĩ rằng thông tin tại HowToForge đã lỗi thời vì nó đề cập đến bộ lọc dkim thay vì opendkim.

Câu trả lời:


39

openDKIM và Postfix trên Ubuntu Server 12.04LTS

Tôi sẽ cố gắng quay lại và định dạng này tốt hơn. Nhưng vì có một yêu cầu để gửi câu trả lời của tôi, tôi muốn đăng nó ngay bây giờ thay vì đợi cho đến khi tôi có thời gian để định dạng nó đúng. Do không có thời gian, tôi đã gói toàn bộ câu trả lời của mình trong một blockquote. Tôi hy vọng giải pháp này hữu ích.

Đây là những tài liệu tham khảo của tôi:

Wikipedia có một mục tốt về chủ đề này

Tối thiểu bạn sẽ cần:

  • Quyền truy cập root vào máy chủ thư của bạn
  • Truy cập để cập nhật các bản ghi dns cho tên miền của bạn

Cài đặt opendkim từ kho lưu trữ:

# sudo apt-get install opendkim opendkim-tools

Bạn phải quyết định lựa chọn những gì mà bạn muốn sử dụng. Bộ chọn về cơ bản là một từ để mô tả khóa bạn muốn sử dụng. Ở đây tôi sẽ sử dụng bộ chọn 201205 khi khóa trở nên hợp lệ vào tháng 5 năm 2012 (xảo quyệt nhỉ?). Tôi đưa ra hai ví dụ cho sự đa dạng, hy vọng sẽ thêm rõ ràng. Bạn chỉ cần tạo MỘT khóa. Tuy nhiên, tôi đang đưa ra cả hai ví dụ để bạn có thể so sánh chúng.

  • 201205 (khóa 1)
  • my_selector (khóa 2)

Tên miền của tôi sẽ là example.com, nhưng tôi sẽ sử dụng tên miền phụ cho ví dụ thứ hai của mình:

  • example.com (khóa 1)
  • mail.example.com (khóa 2)

Tôi quyết định làm việc trong thư mục sau:

# mkdir /etc/opendkim/
# cd /etc/opendkim

Tạo các khóa trong thư mục hiện tại, sử dụng bộ chọn và miền đã chọn của bạn.

# opendkim-genkey -s 201205 -d example.com

Bạn có thể hoặc không cần thay đổi quyền sở hữu. Xem chi tiết trong ví dụ của tôi cho khóa thứ 2 bên dưới để biết quyền sở hữu và quyền nên là gì.

Trước tiên, bạn nên kiểm tra xem có opendkimngười dùng không (ID người dùng / nhóm của bạn có thể khác nhau):

# grep opendkim /etc/passwd
opendkim:x:108:117::/var/run/opendkim:/bin/false

Và bạn có thể cần phải làm điều này:

# chmod 700 /var/run/opendkim

LƯU Ý: Hai lệnh tiếp theo này KHÔNG cần thiết trên Ubuntu 12.04. Nhưng nếu lệnh trên không cho thấy rằng người dùng opendkim đã được thiết lập đúng cách, hãy thực hiện tương tự như sau:

# useradd -r -g opendkim -G mail -s /sbin/nologin -d /var/run/opendkim -c "OpenDKIM" opendkim
# chown opendkim:opendkim 201205.private   
# cat 201205.private 
-----BEGIN RSA PRIVATE KEY-----
ABCCXQ...[long string]...SdQaZw9
-----END RSA PRIVATE KEY-----

Bây giờ hãy kiểm tra khóa chung và nhận thấy có lỗi (trong openDKIM 2.5.2 trên Ubuntu 12.04)! Nơi nào chứa ;=rsa;, nó nên chứa ;k=rsa;. Cái kcòn thiếu Vui lòng chèn nó.

# cat 201205.txt
201205._domainkey IN TXT "v=DKIM1;=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com

Sau khi được sửa, nó sẽ trông như thế này:

201205._domainkey IN TXT "v=DKIM1;k=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com

Hơn nữa, có lẽ bạn cần phải thoát khỏi dấu chấm phẩy như thế này. Nếu bạn không muốn bình luận kết thúc, chỉ cần xóa nó. Cũng lưu ý rằng bạn nên thêm cờ t = y để chỉ báo cho các máy chủ nhận được rằng bạn đang kiểm tra DKIM nhưng chưa tích cực sử dụng nó. Bạn còn lại với một bản ghi tài nguyên khả thi:

201205._domainkey IN TXT "v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"

Bạn phải xuất bản nội dung của khóa công khai ở trên lên máy chủ DNS có thẩm quyền của bạn. Tôi khuyên bạn nên sử dụng bản ghi TXT. Dường như có một chút tranh cãi về việc nên sử dụng bản ghi SPF hay cả hai loại. Sau khi đọc một chút, tôi đã chọn độc quyền gắn bó với loại hồ sơ TXT, mặc dù tôi không tin đây là từ cuối cùng về chủ đề này.

Bạn nên sử dụng một thời gian ngắn (thời gian để sống) để bạn có thể thay đổi khóa mà không cần đợi tuổi để nó truyền qua DNS. Tôi đã sử dụng 180 giây.

Ví dụ thứ hai về việc tạo một cặp khóa là khó khăn hơn đối với tôi. Tôi sẽ mô tả những gì tôi đã làm. Yếu tố đầu tiên là tôi đã sử dụng giá trị tên miền "example.com" mặc dù khóa sẽ được sử dụng cho "mail.example.com". Tôi đến đây thông qua thử nghiệm và lỗi. Nó hoạt động, trong khi sử dụng "mail.example.com" không hoạt động. Thật không may, tôi không nhận thức được lý do đằng sau điều này. Đây thực sự là sự khác biệt duy nhất tôi gặp phải, nhưng nó đủ rắc rối đến nỗi tôi cảm thấy mình nên ghi lại những trải nghiệm của mình khi sử dụng tên miền phụ. Không có hướng dẫn cấp độ bắt đầu nào khác mà tôi tìm thấy đã làm điều này. Tạo khóa thứ hai:

opendkim-genkey -s my_selector -d example.com

kiểm tra quyền sở hữu và quyền của khóa riêng, như trên. Đây là những gì họ nên trông giống như:

# ls -la /etc/opendkim
-rw-------  1 opendkim opendkim  891 May 10 07:44 my_selector.private

Sau khi xuất bản bản ghi DNS, hãy kiểm tra nó với dig. Nó sẽ trả về chính xác những gì bạn đã nhập trong bản ghi tài nguyên (RR).

$ dig 201205._domainkey.example.com txt +short
"v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"

Bây giờ, kiểm tra chìa khóa. Các lệnh bên dưới giả sử bạn đang ở trong thư mục chứa khóa (/ etc / opendkim cho tôi).

# opendkim-testkey -d example.com -s 201205 -k 201205.private -vvv
opendkim-testkey: key loaded from /etc/opendkim/201205.private
opendkim-testkey: checking key '201205._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Những kết quả này được mong đợi. "Khóa không an toàn" không biểu thị lỗi. Đó là một hậu quả mong đợi của việc không sử dụng DNSSSEC. DNSSEC đang đến, nhưng nó chưa sẵn sàng cho thời gian chính, theo cách đọc của tôi.

Ví dụ với khóa 2:

# opendkim-testkey -d example.com -s my_selector -k /etc/opendkim/my_selector.private -vvvv
opendkim-testkey: key loaded from /etc/opendkim/my_selector.private
opendkim-testkey: checking key 'my_selector._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Lưu ý rằng opendkim đang báo cáo rằng khóa không an toàn. Điều này liên quan đến thực tế là DNSSEC không được triển khai trên máy chủ DNS của tôi và về mặt lý thuyết ai đó có thể chặn việc tra cứu DNS và thay thế nó bằng khóa riêng của họ.

Chỉnh sửa tệp cấu hình OpenDKIM:

# nano /etc/opendkim.conf
# cat /etc/opendkim.conf
# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.
#
Domain                  example.com
KeyFile                 /etc/opendkim/201205.private
Selector                201205
#
# Commonly-used options
Canonicalization        relaxed/simple
Mode                    sv
SubDomains              yes
# Log to syslog
Syslog                  yes
LogWhy                  yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask                   022
UserID                  opendkim:opendkim
#
KeyTable                /etc/opendkim/KeyTable
SigningTable            /etc/opendkim/SigningTable
ExternalIgnoreList      /etc/opendkim/TrustedHosts
InternalHosts           /etc/opendkim/TrustedHosts
#
Socket                  inet:8891@localhost
#EOF

Nếu bạn đang sử dụng ví dụ khóa thứ 2 của tôi, với tên miền được nhắm mục tiêu, mail.example.com, mục nhập vẫn sẽ chỉ tham chiếu tên miền chính:

Domain                  example.com
KeyFile                 /etc/dkim/my_selector.private
Selector                my_selector 
-----

Lưu ý từ một trong các nguồn của tôi: Nếu bạn chạy nhiều phiên bản Postfix, bạn cần thêm điều này vào opendkim.conf cho mỗi phiên bản (hoặc những trường hợp bạn muốn sử dụng opendkim)

Tạo một tệp với trình soạn thảo văn bản của bạn /etc/opendkim/TrustedHosts:

Thêm tên miền, tên máy chủ và / hoặc ip cần được xử lý bởi OpenDKIM. Đừng quên localhost.

127.0.0.1
localhost
example.com
mail.example.com
192.168.1.100 #(IP address of your server, if applicable)

(dòng cuối cùng ở trên có lẽ sẽ không cần thiết. Nếu bạn có địa chỉ IP để thêm, hãy đảm bảo bạn sử dụng địa chỉ của riêng bạn chứ không phải ví dụ ở trên.)

Chỉnh sửa /etc/default/opendkim:

Bỏ ghi chú hàng này và sử dụng cổng 8891:

SOCKET="inet:8891@localhost" # listen on loopback on port

Đảm bảo tường lửa của bạn (iptables) cho phép loopback trên localhost:

sudo iptables -A INPUT -i lo -j ACCEPT

Tiếp theo, Tạo tệp bằng trình soạn thảo văn bản của bạn /etc/opendkim/KeyTablevà thêm tên miền vào KeyTable

Thêm dòng:

#EXAMPLE showing my 2nd key:
my_selector._domainkey.example.com example.com:my_selector:/etc/opendkim/my_selector.private

Tiếp theo Tạo tệp bằng trình soạn thảo văn bản của bạn /etc/opendkim/SigningTablevà thêm tên miền vào SigningTable

Tôi cho thấy cả hai ví dụ. Lưu ý rằng đối với khóa thứ 2 của tôi, bây giờ tôi phải sử dụng tên miền đầy đủ "mail.example.com":

example.com 201205._domainkey.example.com
mail.example.com my_selector._domainkey.example.com

Lưu ý rằng trong tên miền OpenDKIM 2.0.1 có phân biệt chữ hoa chữ thường. Trong ví dụ này, chúng tôi đang sử dụng phiên bản OpenDKIM mới hơn và điều này dường như không phải là vấn đề.

Cấu hình postfix. Chỉnh sửa /etc/postfix/main.cf và thêm các dòng vào cuối

milter_default_action = accept
milter_protocol = 2
smtpd_milters=inet:localhost:8891
non_smtpd_milters=inet:localhost:8891

Đồng thời thay đổi tên máy chủ:

#myhostname = localhost         #original
myhostname = mail.example.com

Bạn cũng nên thay đổi mục tương ứng trong / etc / hosts. Những thay đổi này có hiệu lực sau khi khởi động lại (mặc dù bạn có thể đặt nó ngay lập tức bằng lệnh hostname NEW_NAME:).

Khởi động lại postfix và opendkim nếu bạn không khởi động lại:

# service opendkim restart
Restarting OpenDKIM: opendkim.
# service postfix restart
 * Stopping Postfix Mail Transport Agent postfix   [ OK ]
 * Starting Postfix Mail Transport Agent postfix   [ OK ] 

Kiểm tra

Cách tốt nhất để kiểm tra xem thư đã ký của bạn có được xác thực hay không và các bản ghi DNS của bạn được thiết lập đúng là sử dụng một trong các dịch vụ kiểm tra miễn phí. Tôi đã sử dụng những:

  • Trình xác thực email Brandon Checketts - http://www.brandonchecketts.com/emailtest.php (yêu thích của tôi)
  • Gửi email đã ký đến: check-auth@verifier.port25.com (cũng yêu thích của tôi)
  • Gửi email đã ký đến: sa-test@sendmail.net (bạn có thể đặt tất cả các địa chỉ email kiểm tra vào trường Đến: của một tin nhắn gửi đi để kiểm tra)

  • Gửi email đã ký đến: autorespond+dkim@dk.elandsys.com <--- MÔI GIỚI !!! Đừng dùng cái này.

Mỗi trong số này sẽ cho bạn biết nếu mọi thứ đang hoạt động đúng, và cung cấp cho bạn một số gợi ý về khắc phục sự cố nếu cần.

Nếu bạn có tài khoản Gmail, bạn cũng có thể gửi tin nhắn đã ký ở đó để kiểm tra nhanh chóng và dễ dàng.

Khi bạn hài lòng rằng tất cả đều ổn, bạn có thể xóa cờ kiểm tra trong bản ghi DNS TXT và tăng TTL.

Làm xong!


Hoạt động hoàn hảo trên chính xác. Hướng dẫn tốt cảm ơn.
Aki

Sử dụng -b 1024 để tạo khóa 1024 bit. Đó là phải để có được ký gmail của tôi!
Prashant Singh

1
Vui lòng lưu ý trong opendkim.conf ba tham số "Miền", "KeyFile" và "Selector" bị bỏ qua khi sử dụng "SigningTable" và "KeyTable". Không chắc chắn nếu điều này thay đổi tại một số điểm nhưng nó đáng được đề cập ( opendkim.org/opendkim.conf.5.html )
billynoah

0

Đây là một hướng dẫn tốt.

Nó giải thích rằng opendkim được thực sự khuyến khích và rằng các bước để thực hiện ký DKIM cũng giống như với DKIM-lọc.

dkim-milter không còn được phát triển. Tác giả ban đầu của nó đã rẽ nhánh nguồn và hiện đang phát triển opendkim. Đối với Lucid và các phiên bản mới hơn, opendkim được ưa thích hơn bộ lọc dkim. Các hướng dẫn trên trang này phải giống nhau (chỉ với tên gói được điều chỉnh nếu cần).

Tên miền BTW là tiền thân không dùng nữa của DKIM. Thêm bản ghi TXT vào Vùng DNS của bạn cho SPF và DKIM nhưng không còn cần thiết phải bận tâm với Domainkeys.


Bài viết mà bạn liên kết đã hết hạn. opendkim là gói để sử dụng ngay bây giờ. Tôi đang làm việc thông qua việc thiết lập nó ...
MountainX cho Monica Cellio

Tôi đánh giá cao một bản cập nhật từ trải nghiệm của bạn khi tôi sắp chuyển một máy chủ từ Exim4 sang Postfix-Dovecot và sẽ tìm kiếm hướng dẫn cập nhật.
iainH

Tôi đã đăng giải pháp của mình nhưng tôi không có thời gian để định dạng nó. Bạn (hoặc bất cứ ai khác) được chào đón để định dạng nó. Nhưng ghi chú của tôi rất rộng, vì vậy tôi muốn bạn có quyền truy cập chúng mà không bị chậm trễ. Tôi hy vọng chúng hữu ích.
MountainX cho Monica Cellio

-1

http://wiki.zimbra.com/wiki/Configuring_for_DKIM_Signing

Tôi luôn đảm bảo vượt qua một vài hướng dẫn về bất cứ điều gì. Tut này về thiết lập công việc, tôi chỉ cần xác minh nó và nó xác nhận cái này. Nhưng, bạn có thể muốn hiển thị một ví dụ TXT để bản ghi tên miền được chi tiết. Mọi người có thể bị nhầm lẫn và rõ ràng đặt mọi thứ của khóa vào giá trị p, điều mà tôi không hoàn toàn chắc chắn là chính xác. tức là ... bao gồm ----- BEGIN KEY PUBLIC ----- và ----- END PUBLIC KEY -----. Điều đó có thể dẫn đến một số bị nhầm lẫn. Chỉ cần đảm bảo chỉ đặt phần mã hóa và không đánh dấu.


3
Chào mừng bạn đến hỏi Ubuntu! Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Braiam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.