Comment 0 for bug 881237

Revision history for this message
Martin Pool (mbp) wrote : incoming mail lacking required DKIM 'p' field causes KeyError oops

OOPS-2121INBOUNDEMAIL1 shows an incoming mail (saved to http://launchpadlibrarian.net/83439610/56f7b376-fca3-11e0-9627-001e0bc3957e.txt) which fails in dkim verification:

Traceback (most recent call last):
  Module lp.services.mail.incoming, line 398, in handleMail
    signature_timestamp_checker)
  Module lp.services.mail.incoming, line 472, in handle_one_mail
    mail, signature_timestamp_checker)
  Module lp.services.mail.incoming, line 203, in authenticateEmail
    dkim_trusted_addr = _authenticateDkim(mail)
  Module lp.services.mail.incoming, line 138, in _authenticateDkim
    signed_message.parsed_string, dkim_log, details=signing_details)
  Module dkim, line 573, in verify
    x = asn1_parse(ASN1_Object, base64.b64decode(pub['p']))
KeyError: 'p'

The dkim signature is

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s0907;
 t=1319283879; bh=YNYe6JlvFtLnPIyBgQ/s3tPBunXKtwylEzBLrkWuD1E=;
 h=X-QQ-SSF:X-QQ-BUSINESS-ORIGIN:X-Originating-IP:X-QQ-STYLE:
  X-QQ-mid:From:To:Subject:Mime-Version:Content-Type:
  Content-Transfer-Encoding:Date:X-Priority:Message-ID:X-QQ-MIME:
  X-Mailer:X-QQ-Mailer:X-QQ-ReplyHash;
 b=ZQIwng8t1rDum5Rj+/uMDDitTG6wK07zJ46n0P7WBtOfers6Fi1/NRrXvsx0PJ0VE
  XBG3HfWDaT/PDtVqSs6aupHpJh/mRqV+7xPtL8obZWl2dlMzdCV6pctFtY3yXTz

According to <http://www.ietf.org/rfc/rfc4871.txt> the p= field is required, so this signature is invalid. However, it would be better if Launchpad just ignored the broken header and treated the message as untrusted. This does seem to be a real message, not spam, and mail from this user is currently dropped.