我的邮件DKIM-Signature凭空创建了一个电子邮件地址

时间:2015-07-02 20:22:59

标签: java email smtp mandrill dkim

我使用mandrill发送使用javamail创建的电子邮件。当我尝试使用我们用户的发件人地址从我们的应用程序发送电子邮件时,DKIM签名包含我们从未分配的电子邮件地址,但不存在。当我在不使用mandrill的情况下发送此电子邮件时,邮件不会被更改。

问题在于,当我们从我们的应用程序发送使用SKIM签名 ourdomain.com 的电子邮件时,我们会向另一个域的用户发送电子邮件 user_domain.com < / strong>,from和sender标头设置为folows:

From: Joost Schouten <joost@user_omain.com>
Sender: Joost Schouten <joost@ourdomain.com>

发件人标题从未由我们设置,电子邮件地址也不存在,不幸的是一些邮件客户端使用此地址进行回复。它是来自没有域的电子邮件部分和DKIM签名域的组合。我不知道为什么会发生这种情况以及如何阻止它发生。

DKIM-Signature还提到了这个不存在的地址,所以我假设这可能是原因。不幸的是,所有的DKIM文档都有点丢失,所以我希望有人可以指出我正确的方向。

这是完整的邮件:

Delivered-To: info@ourdomain.com
Received: by 10.129.137.131 with SMTP id z125csp831548ywf;
        Thu, 2 Jul 2015 13:02:36 -0700 (PDT)
X-Received: by 10.170.121.210 with SMTP id n201mr40312958ykb.97.1435867356185;
        Thu, 02 Jul 2015 13:02:36 -0700 (PDT)
Return-Path: <bounce-md_30191264.559598db.v1-0709e43ec6fc4aaaa2eaa4b9a07c553a@mandrillapp.com>
Received: from mail133-7.atl131.mandrillapp.com (mail133-7.atl131.mandrillapp.com. [198.2.133.7])
        by mx.google.com with ESMTPS id 13si4642642ykz.152.2015.07.02.13.02.35
        for <info@ourdomain.com>
        (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Thu, 02 Jul 2015 13:02:36 -0700 (PDT)
Received-SPF: pass (google.com: domain of bounce-md_30191264.559598db.v1-0709e43ec6fc4aaaa2eaa4b9a07c553a@mandrillapp.com designates 198.2.133.7 as permitted sender) client-ip=198.2.133.7;
Authentication-Results: mx.google.com;
       spf=pass (google.com: domain of bounce-md_30191264.559598db.v1-0709e43ec6fc4aaaa2eaa4b9a07c553a@mandrillapp.com designates 198.2.133.7 as permitted sender) smtp.mail=bounce-md_30191264.559598db.v1-0709e43ec6fc4aaaa2eaa4b9a07c553a@mandrillapp.com;
       dkim=pass header.i=@ourdomain.com;
       dkim=pass header.i=@mandrillapp.com
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=mandrill; d=ourdomain.com;
 h=From:Sender:Subject:To:Message-Id:Date:MIME-Version:Content-Type; i=joost@ourdomain.com;
 bh=b4xtohIO7sTTZ/geyDmOzKRydBw=;
 b=A1snz1SKxbRxJobxUqb5cxn2+s+Rj9osVXk61sJVNNc1VoVVmy7jh471byqGm7nYXGPqsL361zOE
   OPXxrdS+Zfr0Wrlhft5q6kgaJCy7xodtICXGGi6a/8xgUZ0Ko/JzWB2SI9Nqe6sMGwg5ecZDDxnt
   9u+cBHKpKBN4JY2pjEs=
DomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=mandrill; d=ourdomain.com;
 b=FJ6zXTYOnZY/RN7okxXDpl5sNL0ysjDQfXixD8vfLk7nvpEB2Y7vUBe7EKbC0dLuHRtLSullN9Eg
   ARddkGh81Mes/ergpfyy/epulj745nOfPR8h4cQsu6dhe2p8xHA3H8AJDf2XTX8SnspuZrBgrcmU
   gXI1cSTr/QTAz6emAbE=;
Received: from pmta02.mandrill.prod.atl01.rsglab.com (127.0.0.1) by mail133-7.atl131.mandrillapp.com id himcdo1sar88 for <info@ourdomain.com>; Thu, 2 Jul 2015 20:02:35 +0000 (envelope-from <bounce-md_30191264.559598db.v1-0709e43ec6fc4aaaa2eaa4b9a07c553a@mandrillapp.com>)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; 
 i=@mandrillapp.com; q=dns/txt; s=mandrill; t=1435867355; h=From : 
 Sender : Subject : To : Message-Id : Date : MIME-Version : Content-Type 
 : From : Subject : Date : X-Mandrill-User : List-Unsubscribe; 
 bh=+XtZFak4OUf8qSxm1jSRVqiU996OawoBIDsFv7gsDOM=; 
 b=UTTtcU5XeoBFrCe4v/wpBY02o5aZYRbPKWCpiKxYrrOsuqe+PqizEADb8qqkPqDKteiSOK
 K6Gz58xX1DsDGm7O6g85OX4Rqi5edA3YFVgGE4VWG7q6TxKleXsb95TXjqh/pXbUpVqH+oWn
 wnNT3PgznJFhgY0lz1njBZqvEREpg=
From: Joost Schouten <joost@user_domain.com>
Sender: Joost Schouten <joost@ourdomain.com>
Subject: Subject
Return-Path: <bounce-md_30191264.559598db.v1-0709e43ec6fc4aaaa2eaa4b9a07c553a@mandrillapp.com>
Received: from [95.85.39.219] by mandrillapp.com id 0709e43ec6fc4aaaa2eaa4b9a07c553a; Thu, 02 Jul 2015 20:02:35 +0000
X-Mailer: Mailer name
To: Receiver <info@ourdomain.com>
Message-Id: <328629681.01435867315102.JavaMail.tomcat7@www>
X-Report-Abuse: Please forward a copy of this message, including all headers, to abuse@mandrill.com
X-Report-Abuse: You can also report abuse here: http://mandrillapp.com/contact/abuse?id=30191264.0709e43ec6fc4aaaa2eaa4b9a07c553a
X-Mandrill-User: md_30191264
Date: Thu, 02 Jul 2015 20:02:35 +0000
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="_av-RYsOAD_G5IlIUfcO9tyvnQ"

--_av-RYsOAD_G5IlIUfcO9tyvnQ
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

PLAIN TEXT CONTENT

--_av-RYsOAD_G5IlIUfcO9tyvnQ
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit

<html><head><title></title></head><body> THE HTML CONTENT</body></html>
--_av-RYsOAD_G5IlIUfcO9tyvnQ--

(编辑 - 添加了java代码)我的邮件发送代码(简体)

MimeMessageHelper helper = new MimeMessageHelper(message, false);                       helper.getMimeMessage().setSubject(emailMessage.getSubject(), defaultCharSet);

helper.addTo(new InternetAddress("some@receiver.com", "Rex receiver"));             
helper.setFrom(new InternetAddress("joost@user_domain.com", "Joost Schouten"));

//commenting this next line out does not change anything
helper.getMimeMessage().setSender("no-reply@ourdomain.com");

helper.setText(htmlContentVar, true);
helper.getMimeMessage().addHeader("X-Mailer", xMailer);
helper.getMimeMessage().addHeader("X-MC-SigningDomain", "ourdomain.com");
helper.getMimeMessage().addHeader("X-MC-AutoText", "true");
helper.getMimeMessage().addHeader("X-MC-Track", "opens,clicks");
helper.getMimeMessage().addHeader("X-MC-Tags", emailMessage.getTags());

javaMailSender.send(helper.getMimeMessage());

1 个答案:

答案 0 :(得分:1)

问题在于Mandrill,因为他们添加Sender标头以确保它在签署电子邮件的域上。这里显而易见的问题是,当我在自己的域中自己指定它时,它们甚至会覆盖Sender标头。目前,我们已明确添加Reply-to标头以及From标头,以邀请尽可能多的电子邮件客户端使用这些地址与Sender选项。这似乎有所帮助,但我们并不完全确定这将解决所有电子邮件客户端的回复地址问题。

我希望这可以帮助某人避免拔出头发,试图找出正在发生的事情。这是mandrill的完整答案:

  

感谢您与我们联系。 Mandrill将Sender:标题添加到您的   消息标题,以支持在何时签名和验证您的电子邮件   发送域没有SPF和DKIM记录。几封电子邮件   客户端(但不是全部)选择显示此标头中的地址   而不是From:标题中的地址。

     

Mandrill为从a发送的所有电子邮件添加了Sender标头   没有SPF和DKIM设置的域。我们构建了   发件人头部地址通过组合From的本地部分   地址(@符号前的所有内容)与歌唱域名。在   很多情况下,这可以创建一个实际上不存在的地址 -   正如你所指出的那样 - 但通常这只会影响显示效果   那些电子邮件,而不是电子邮件回复。你应该仍然可以   回复电子邮件并拥有原始的From:或Reply-To:地址   用作响应的接收者而不是构造的   发件人标头不存在。

     

我们正在研究如何更新我们构建它的方式   标题,以避免混淆,但我没有我可以提供的ETA   但是当这些变化可能出现时。

     

我希望这些信息有用。如果您有任何问题,请告诉我们   进一步的问题。