مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2025-12-01 05:43:04 +00:00
fix(dkim): ensure DKIM-Signature headers are appropriately wrapped
closes #339
هذا الالتزام موجود في:
@@ -17,7 +17,7 @@ module Postal
|
|||||||
end
|
end
|
||||||
|
|
||||||
def dkim_header
|
def dkim_header
|
||||||
"DKIM-Signature: v=1;" + dkim_properties + signature
|
"DKIM-Signature: v=1; " + dkim_properties.join("\r\n\t") + signature.scan(/.{1,72}/).join("\r\n\t")
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
@@ -96,16 +96,18 @@ module Postal
|
|||||||
end
|
end
|
||||||
|
|
||||||
def dkim_properties
|
def dkim_properties
|
||||||
String.new.tap do |header|
|
Array.new.tap do |header|
|
||||||
header << " a=rsa-sha256; c=relaxed/relaxed;"
|
header << "a=rsa-sha256; c=relaxed/relaxed;"
|
||||||
header << " d=#{@domain_name}; s=#{@dkim_identifier}; t=#{Time.now.utc.to_i};"
|
header << "d=#{@domain_name};"
|
||||||
header << " bh=#{body_hash}; h=#{header_names.join(':')};"
|
header << "s=#{@dkim_identifier}; t=#{Time.now.utc.to_i};"
|
||||||
header << " b="
|
header << "bh=#{body_hash};"
|
||||||
|
header << "h=#{header_names.join(':')};"
|
||||||
|
header << "b="
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def dkim_header_for_signing
|
def dkim_header_for_signing
|
||||||
"dkim-signature:v=1;" + dkim_properties
|
"dkim-signature:v=1; #{dkim_properties.join(' ')}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def signable_header_string
|
def signable_header_string
|
||||||
|
|||||||
@@ -20,11 +20,12 @@ describe Postal::DKIMHeader do
|
|||||||
allow(domain).to receive(:dkim_key).and_return(OpenSSL::PKey::RSA.new(frontmatter['private_key']))
|
allow(domain).to receive(:dkim_key).and_return(OpenSSL::PKey::RSA.new(frontmatter['private_key']))
|
||||||
allow(domain).to receive(:dkim_identifier).and_return(frontmatter['dkim_identifier'])
|
allow(domain).to receive(:dkim_identifier).and_return(frontmatter['dkim_identifier'])
|
||||||
|
|
||||||
expectation = "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; " \
|
expectation = "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;\r\n" \
|
||||||
"d=#{frontmatter['domain']}; s=#{frontmatter['dkim_identifier']}; t=#{mocked_time.to_i}; " \
|
"\td=#{frontmatter['domain']};\r\n" \
|
||||||
"bh=#{frontmatter['bh']}; "\
|
"\ts=#{frontmatter['dkim_identifier']}; t=#{mocked_time.to_i};\r\n" \
|
||||||
"h=#{frontmatter['headers']}; " \
|
"\tbh=#{frontmatter['bh']};\r\n"\
|
||||||
"b=#{frontmatter['b']}"
|
"\th=#{frontmatter['headers']};\r\n" \
|
||||||
|
"\tb=#{frontmatter['b'].scan(/.{1,72}/).join("\r\n\t")}"
|
||||||
|
|
||||||
header = described_class.new(domain, email)
|
header = described_class.new(domain, email)
|
||||||
|
|
||||||
|
|||||||
المرجع في مشكلة جديدة
حظر مستخدم