2009-07-28 21:42:58 UTC
Hi Florian,
I finally got to mess with this all day today, and ironically, I think the comment from JRM may be correct. I set up a different mail server with dkim-milter and began to change its settings (and a few code changes for header orders in DKIM for JavaMail) until finally I was able to produce the exact same signature block from both dkim-milter and DKIM for JM. But even through the dkim-signature header was exactly the same, Yahoo! still showed failure on the JM email, but not on the milter email. The only difference in the headers used for DKIM (I ignored Message-ID and Date) was the order in the message:
DKIM for JM:
Date: Tue, 28 Jul 2009 15:41:11 -0500 (CDT)
From: <revoked>
Sender: <revoked>
Reply-To: <revoked>
To: <revoked>
Message-ID: <13366030.0.1248813672032.JavaMail.<revoked>>
Subject: DKIM Test 20
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=<revoked>; s=default;
t=1248813672; bh=eia2az/UdYM0rrrQdlzT2J7mtRFp+U90A+31+SxljOA=;
h=From:Sender:Reply-To:To:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding;
b=Huuaq0ETchiCCYqTDBPmDxhZ3Fx01gNNgtCI6+xqGyT8ieq51LQPDtabWwqOFJim
x4M6yQZ/YO+djRWhMXE0A2kRBGddBw5Yhfxj0NwSSvGp0PKfxip+QpWasxVG1dwTCCB
dlhGxhqsWg/Qc7YZ+bo1IyeVoYaICrS0b6ZDkfrI=
Content-Length: 20
DKIM-milter:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=<revoked>; s=default;
t=1248813672; bh=eia2az/UdYM0rrrQdlzT2J7mtRFp+U90A+31+SxljOA=;
h=From:Sender:Reply-To:To:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding;
b=Huuaq0ETchiCCYqTDBPmDxhZ3Fx01gNNgtCI6+xqGyT8ieq51LQPDtabWwqOFJimx
4M6yQZ/YO+djRWhMXE0A2kRBGddBw5Yhfxj0NwSSvGp0PKfxip+QpWasxVG1dwTCCB
dlhGxhqsWg/Qc7YZ+bo1IyeVoYaICrS0b6ZDkfrI=
Date: Tue, 28 Jul 2009 15:41:11 -0500 (CDT)
From: <revoked>
Sender: <revoked>
Reply-To: <revoked>
To: <revoked>
Message-ID: <6460284.0.1248813672068.JavaMail.<revoked>>
Subject: DKIM Test 20
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-Length: 20
I understand why this is the case, as the milter just deals with things as an inline filter, but I don't know why Yahoo! would actually care about the order. My problem is that while I think this may solve the problem, I don't know how to implement it. Since MimeMessage doesn't directly allow you to modify the order of the headers, I don't know how to make sure that the Signature header ends up at the top of the stack of existing headers. Any thoughts, ideas, etc.?