DKIM đăng nhập thư đi từ bất kỳ tên miền nào (với Postfix và Ubuntu)


40

Tôi đã thiết lập DKIM trên máy chủ thư của mình (postfix và ubfox) để nó ký các email gửi đi. Tôi đã sử dụng các hướng dẫn sau: https://help.ubfox.com/community/Postfix/DKIM

Tuy nhiên, tôi cần nó để ký email từ bất kỳ tên miền nào (trong địa chỉ Từ) chứ không chỉ riêng tôi. Tôi đang xây dựng một dịch vụ bản tin email và khách hàng sẽ gửi email của riêng họ thông qua máy chủ.

Đầu tiên tôi đặt "Miền *" trong /etc/dkim-filter.conf. Điều này khiến nó bao gồm các tiêu đề DKIM trong tất cả các email gửi đi, bất kể tên miền là gì.

Tuy nhiên, kiểm tra xác minh không thành công trên gmail vì nó đang kiểm tra tên miền trong địa chỉ từ và không phải tên miền của tôi (và bản ghi dns). Có ai biết cách để làm điều này không?

Câu trả lời:


41

Ok tôi đã tự mình tìm ra điều này, nhưng tôi muốn đăng các bước ở đây cho hậu thế bởi vì không có tài liệu nào về điều này (mà tôi có thể tìm thấy) và thực tế là đã đoán và kiểm tra.

Sau khi tôi đặt "Miền *" như mô tả ở trên, nó sẽ ký tên như sau:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=clientdomain.com;
    s=main; t=1250005729;
    bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi
     31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx
     GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=

chú ý "d = clientdomain.com". Nó đã tạo ra điều này dựa trên địa chỉ từ trong email, trong đó địa chỉ từ là một cái gì đó như "contact@clientdomain.com". Rõ ràng nếu nó kiểm tra tên miền của khách hàng và không khai thác thì không có bản ghi DNS TXT nào ở đó và việc xác minh sẽ thất bại.

Vì vậy, dù sao tôi cũng phát hiện ra trong tài liệu này rằng bạn có thể đặt tham số KeyList. http://manpages.ubfox.com/manpages/hardy/man5/dkim-filter.conf.5.html

Nó không thực sự mô tả những gì tôi muốn làm, nhưng tôi đoán tôi sẽ chơi với nó. Tôi đã nhận xét KeyFile và đặt KeyList thành "/etc/mail/dkim_domains.key", đây là tên tệp tùy ý mà tôi tạo ra. Sau đó tôi đã tạo tệp đó và đặt tệp này vào đó "*: feedmailpro.com: /etc/mail/dkim.key". Điều này nói với bất kỳ miền khách hàng nào, ký tên miền với tên miền của tôi (feedmailpro.com) và sử dụng tệp dkim.key.

Đã khởi động lại DKIM và hậu tố

sudo /etc/init.d/dkim-filter restart
sudo /etc/init.d/postfix restart

Bây giờ đây là chìa khóa được tạo khi tôi gửi email kiểm tra.

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=feedmailpro.com;
    s=dkim.key; t=1250005729;
    bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi
     31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx
     GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=

Cải thiện, bạn thấy d = now được đặt thành tên miền của tôi (mặc dù địa chỉ từ email không phải là tên miền của tôi). Tuy nhiên s = got đã thay đổi thành "dkim.key" thay vì bộ chọn tôi chọn trong dkim-filter.conf. Trong hướng dẫn thiết lập ban đầu, tôi sẽ đặt bộ chọn thành "thư". Điều đó thật kỳ lạ, nhưng tôi nhận thấy nó đã đổi nó thành tên tệp của khóa của tôi, dkim.key.

Vì vậy, tôi đã đi và đổi tên "/etc/mail/dkim.key" thành "/ etc / mail / mail". Đồng thời cập nhật tham chiếu đến nó trong "/etc/mail/dkim_domains.key".

Khởi động lại bộ lọc dkim và postfix một lần nữa như trên, và bây giờ nó bắt đầu hoạt động. Đây là tiêu đề cuối cùng có dấu hiệu chính xác bằng cách sử dụng bộ chọn bên phải (rõ ràng dựa trên tên tệp của khóa).

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=feedmailpro.com;
    s=mail; t=1250006218;
    bh=tBguOuDhBDlhv0m4KF66LG10V/8ijLcAKZ4JbjpLXFM=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=c9eqvd+CY86BJDUItWVVRvI3nibfEDORZbye+sD1PVltrcSBOiLZAxF3Y/4mP6vRX
     MUUNCC004oIH1u7FYafgF32lpuioMP1cd7bi6x3AZ5zH4BYETNBnnz4AhAPBtqlIh/
     FFMz8jkhhLhcM2hDpwJkuKjAe3LzfNVDP8kD11ZI=

Bây giờ s = mail là đúng và d = feedmailpro.com đã đúng. Nó hoạt động!

Nhìn chung, điều này khó hơn tôi mong đợi và dường như không có tài liệu nào về cách thực hiện việc này (ký cho tất cả các miền gửi đi), nhưng tôi đoán đó là phần mềm nguồn mở nên tôi không thể phàn nàn.

Một lưu ý cuối cùng, để kiểm tra xem bản ghi DNS TXT có được thiết lập chính xác hay không, bạn có thể thực hiện một lệnh như với tên miền của mình

dig mail._domainkey.feedmailpro.com TXT

Có thể cần cài đặt đào (sudo apt-get install dig). Nếu bạn đang sử dụng trình quản lý Slicehost để thêm mục nhập DNS, bạn sẽ nhập bản ghi TXT như thế này.

Type: TXT
Name: mail._domainkey
Data: k=rsa; t=s; p=M5GfMA0...YOUR LONG KEY...fIDAQAB
TTL seconds: 86400

Tôi thực sự không hiểu tại sao tên được đặt thành "mail._domainkey" mà không có dấu chấm ở cuối hoặc không có tên miền của tôi, như "mail._domainkey.feedmailpro.com". Nhưng bất cứ điều gì, nó dường như làm việc vì vậy tôi hạnh phúc.

Nếu bạn đang cố gắng sao chép này, đây là hướng dẫn tôi đã bắt đầu với: https://help.ubfox.com/community/Postfix/DKIM


2
Cảm ơn vì đã đưa nó lên đây, nó giúp những người khác (như tôi) ra ngoài :)
thomasrutter

Yur chào mừng thomas!
Brian Armstrong

Wow, điều này đã giúp rất nhiều. Tôi đã đập đầu mình vì "s = dkim.key" cho đến khi tôi bắt gặp bài viết của bạn!
3molo

Một điều mà hướng dẫn tại ubfox.com không đề cập đến là một khi bạn đã làm việc, hãy thay đổi t = y thành t = n trong bản ghi TXT để nói rằng đó không phải là thử nghiệm.
3molo

Có một số nguồn lực tốt lên đó, để sử dụng SigningTable, vv Ví dụ, blog.tjitjing.com/index.php/2012/03/... (xuất sắc) và thậm chí cả readme opendkim, opendkim.org/opendkim-README
rfay

15

Lấy cảm hứng từ câu trả lời của Brian Armstrong cho bộ lọc dkim đây là cách tôi đã làm điều này cho OpenDKIM .

/etc/opendkim.conf

Syslog          yes
UMask           002
KeyTable        /etc/mail/dkim_key_table
SigningTable    refile:/etc/mail/dkim_signing_table

Lưu ý rằng SigningTable đã lọc lại : theo định nghĩa của nó, điều này xác định rằng tệp bao gồm các biểu thức chính quy; trong trường hợp của chúng tôi * ký tự đại diện.

/ etc / mail / dkim_key_table

keyname  example.com:selector:/etc/mail/selector.key

Ở đây keyname được sử dụng để khớp với khóa giữa tệp này và tệp dkim_signing_table. Trong tập tin thực sự của tôi, tôi đặt tên này giống như bộ chọn của tôi.

example.combộ chọn nên được thay thế mà tên miền và bộ chọn mà bạn muốn được sử dụng trong chữ ký của bạn lần lượt là d =s = .

/ etc / mail / dkim_signing_table

*   keyname

Tệp này địa chỉ bản đồ đơn giản được tìm thấy trong tiêu đề From: to key trong dkim_key_table. Trong trường hợp này, chúng tôi muốn tất cả các email được gửi qua máy chủ này được ký với cùng một khóa, do đó, một ký tự đại diện * được sử dụng.


đối với những người nhận được "không có bảng ký kết phù hợp trong OpenDKIM" serverfault.com/q/569823/115907
kommradHomer

Nếu bất cứ ai có câu trả lời này (câu trả lời tuyệt vời, btw! Đã dạy tôi những gì tôi cần) và đang tìm cách gửi từ hai tên miền khác nhau bằng các khóa khác nhau, điều đó có thể được thực hiện như sau: tệp KeyTable: "tagone._domainkey.firstdomain.com Firstdomain .com: tagone: /etc/opendkim/keys/firstdomain.com/tagone tagtwo._domainkey.seconddomain.com seconddomain.com:tagtwo: com tagone._domainkey.firstdomain.com *@seconddomain.com tagtwo._domainkey.seconddomain.com "Mỗi tệp có 2 dòng (nhận xét không lưu ngắt dòng tại đây)
Sean Colombo

hoặc: SigningTable csl: * = keyname KeyTable csl: keyname = example.com: selector: /etc/mail/selector.key
danblack

3

Chủ đề cũ nhưng có thể người khác tìm thấy điều này có thể biết phiên bản 2.x của opendkim hoạt động với KeyTable thay vì KeyList.

Bạn có thể chuyển đổi tệp KeyList của mình bằng công cụ opendkim-convert-keylist ( http://manpages.ubfox.com/manpages/lucid/man8/opendkim-convert-keylist.8.html )

Bạn có thể đọc thêm về việc triển khai KeyTable trên trang man opendkim: ( http://www.opendkim.org/opendkim.conf.5.html )


Vui lòng tóm tắt bài viết mà bạn đã liên kết, trích dẫn bất kỳ phân đoạn mã hoặc khối cấu hình có liên quan. Các trang web có thể thay đổi trong tương lai hoặc không tải được vì bất kỳ lý do nào.
89c3b1b8-b1ae-11e6-b842-48d705

2

Tôi thực sự không hiểu tại sao tên được đặt thành "mail._domainkey" mà không có dấu chấm

Tài liệu cho bộ lọc DKIM thường được cài đặt ở định dạng unre man. Chỉ có Google mới biết điều đó :-) Tôi cũng gặp vấn đề.

man dkim-filter.conf
man dkim-filter
man dkim-genkey

man dkim-stats
man dkim-testkey
man dkim-testssp

Tôi đã thử nó trên Debian. Nếu nó không thực sự nằm trong sự phân tâm của bạn, bạn có thể tải xuống tarball nguồn và đọc tài liệu dễ dàng.

man dkim-milter-2.8.3/dkim-filter/dkim-filter.conf.5

v.v.

-

Tôi thực sự không hiểu tại sao tên được đặt thành "mail._domainkey" mà không có dấu chấm

Vì vậy, bạn có thể sử dụng chính xác như nhau trong cả hai bản ghi DNS của các miền khác nhau.

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.