fmbiete / Z-Push-contrib

Z-Push fork with changes that I will try to contrib
GNU Affero General Public License v3.0
135 stars 62 forks source link

Possible mishandling of multipart messages (S/MIME in particular) #190

Closed ghost closed 9 years ago

ghost commented 9 years ago

I am not completely certain if this is a Z-Push problem or not, but this is what I'm seeing.

Client is a BlackBerry 10 Smartphone. When sending a S/MIME ENCRYPTED message I am getting the following:

Return-Path: karl@denninger.net Received: from localhost (localhost [127.0.0.1]) by fs.denninger.net (8.14.9/8.14.8) with ESMTP id t4PLsq44051445 for karl@denninger.net; Mon, 25 May 2015 16:54:52 -0500 (CDT) (envelope-from karl@denninger.net) Received: from localhost [127.0.0.1]; by Spamblock-sys (LOCAL/AUTH) Mon May 25 16:54:52 2015 Mime-Version: 1.0 Content-disposition: attachment; filename="smime.p7m" X-client-id: 4974 X-mailer: BlackBerry Email Message-id: 20150525215445.8806479.38571.4974@denninger.net Date: Mon, 25 May 2015 16:54:45 -0500 Subject: Test again From: karl@denninger.net To: Karl Denninger karl@denninger.net Content-Type: multipart/mixed; boundary="=_7532cb5b53b1c15ab0f65e05d3b0dad8" X-Antivirus: avast! (VPS 150525-2, 05/25/2015), Inbound message X-Antivirus-Status: Clean

This is a multi-part message in MIME format. --=_7532cb5b53b1c15ab0f65e05d3b0dad8 Content-Type: multipart/alternative; boundary="=_94047f5ec07e063e2b542580c294c964"

--=_94047f5ec07e063e2b542580c294c964--

--=_7532cb5b53b1c15ab0f65e05d3b0dad8--

Note that the actual content is MISSING in the MIME parts......

If I just SIGN a message I get this:

Return-Path: karl@denninger.net Received: from localhost (localhost [127.0.0.1]) by fs.denninger.net (8.14.9/8.14.8) with ESMTP id t4PLwE89052211 for karl@denninger.net; Mon, 25 May 2015 16:58:14 -0500 (CDT) (envelope-from karl@denninger.net) Received: from localhost [127.0.0.1]; by Spamblock-sys (LOCAL/AUTH) Mon May 25 16:58:14 2015 Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="SHA1"; boundary="===============0781104866==" MIME-Version: 1.0 X-Client-ID: 4977 X-Mailer: BlackBerry Email Message-ID: 20150525215807.8806479.55488.4977@denninger.net Date: Mon, 25 May 2015 16:58:07 -0500 Subject: Signed From: karl@denninger.net To: Karl Denninger karl@denninger.net X-Antivirus: avast! (VPS 150525-2, 05/25/2015), Inbound message X-Antivirus-Status: Clean

--===============0781104866== Content-Type: multipart/alternative; boundary="===============1171197564==" MIME-Version: 1.0

--===============1171197564== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64

WWVlcAoKLcKgS2FybAoob27CoFBEQSk=

--===============1171197564== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable

Yeep

- Karl
(on PDA)

--===============1171197564==--

--===============0781104866== Content-Type: application/x-pkcs7-signature; name="smime.p7s" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s"

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 --===============0781104866==--

The signature itself is actually valid (Outlook will "eat" it) but the Base64 encoding has no line breaks in it. As such Thunderbird and other strict RFC compliant clients claim the message's signature is defective.

Now here's the curious part -- if this same device is set up against an actual Exchange server (not Z-Push) then both the base64 signature comes up correctly AND the missing MIME parts in an encrypted message are present.

Any ideas?

PS: If I attach a picture to an email it properly goes through....

fmbiete commented 9 years ago

WBXML log for the SendMail operations would help. At first sight Z-Push sends S/MIME messages untouched, so the signature doesn't break, it could be possible that we are losing the base64 line breaks, but all the part should be sent.

ghost commented 9 years ago

No, the client appears to never send the line breaks!

The thing is this -- a real Exchange server inserts them from the SAME client. Z-push does not.

Here's the WEBXML log from a send with a signed message:

26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] -------- Start 26/05/2015 07:29:48 [50654] [ INFO] [karl] [bb2be4bede] Version='SVN-trunk-r1938' method='POST' from='192.168.1.21' cmd='SendMail' getUser='karl' devId='bb2be4bede' devType='BlackBerry' 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] Used timezone 'America/Chicago' 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] Request::ProcessHeaders() ASVersion: 14.0 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] Including backend file: '/usr/share/z-push/backend/combined/combined.php' 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] Including backend file: '/usr/share/z-push/backend/imap/imap.php' 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] Including backend file: '/usr/share/z-push/backend/caldav/caldav.php' 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] Including backend file: '/usr/share/z-push/backend/carddav/carddav.php' 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] Combined 3 backends loaded. 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] ZPush::CommandNeedsProvisioning(1): true 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] FileStateMachine->GetState() on file: '/var/lib/z-push/e/d/bb2be4bede-devicedata' 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] ASDevice data loaded for user: 'karl' 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] TopCollector(): Initialized mutexid Resource id #51 and memid Resource id #52. 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] LoopDetection(): Initialized mutexid Resource id #55 and memid Resource id #56. 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] ZPush::HierarchyCommand(1): false 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] DeviceManager->ProvisioningRequired('375715846') saved device key '375715846': false 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] ZPush::CommandNeedsAuthentication(1): true 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] Combined->Logon('karl', '',***)) 26/05/2015 07:29:48 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->Logon(): Excluding Folders (.imap) 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->Logon(): User 'karl' is authenticated on '{localhost:143/imap/novalidate-cert/tls/norsh}' 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendCalDAV->Logon(): User 'karl' is authenticated on CalDAV 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendCardDAV->Logon(): User 'karl' is authenticated on 'https://cudasystems.net:11443/davical/caldav.php/karl/' 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendCardDAV::discoverAddressbooks() Found addressbook 'https://cudasystems.net:11443/davical/caldav.php/karl/addresses/' 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] Combined->Logon() success 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] Combined->Setup('karl', 'true', '') 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] Combined->Setup() success 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] ZPush::CommandNeedsPlainInput(1): false 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] I ComposeMail:SendMail 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] I ComposeMail:ClientId 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] I 1429581676-5035 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] I /ComposeMail:ClientId 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] I ComposeMail:SaveInSentItems/ 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] I ComposeMail:MIME 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] I Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="SHA1"; boundary="===============1772996984==" MIME-Version: 1.0 X-Client-ID: 5035 X-Mailer: BlackBerry Email (xx.x.x.xxx) Message-ID: 20150526122948.8806479.12914.5035@denninger.net Date: Tue, 26 May 2015 07:29:48 -0500 Subject: Test S/Mime signed From: karl@denninger.net To: Karl Denninger karl@denninger.net

--===============1772996984== Content-Type: multipart/alternative; boundary="===============1471613108==" MIME-Version: 1.0

--===============1471613108== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64

U2lnbmVkCgotwqBLYXJsCihvbsKgUERBKQ==

--===============1471613108== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable

Signed=

- Karl
(on PDA)

--===============1471613108==--

--===============1772996984== Content-Type: application/x-pkcs7-signature; name="smime.p7s" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s"

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 --===============1772996984==-- 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] I /ComposeMail:MIME 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] I /ComposeMail:SendMail 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] Combined->SendMail() 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->SendMail(): RFC822: 6945 bytes forward-id: 'false' reply-id: 'false' parent-id: 'false' SaveInSent: 'empty' ReplaceMIME: 'false' 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="SHA1"; boundary="===============1772996984==" 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: MIME-Version: 1.0 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: X-Client-ID: 5035 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: X-Mailer: BlackBerry Email (xx.x.x.xxx) 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: Message-ID: 20150526122948.8806479.12914.5035@denninger.net 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: Date: Tue, 26 May 2015 07:29:48 -0500 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: Subject: Test S/Mime signed 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: From: karl@denninger.net 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: To: Karl Denninger karl@denninger.net 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: --===============1772996984== 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: Content-Type: multipart/alternative; boundary="===============1471613108==" 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: MIME-Version: 1.0 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: --===============1471613108== 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: Content-Type: text/plain; charset="utf-8" 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: MIME-Version: 1.0 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: Content-Transfer-Encoding: base64 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: U2lnbmVkCgotwqBLYXJsCihvbsKgUERBKQ== 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: --===============1471613108== 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: Content-Type: text/html; charset="utf-8" 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: MIME-Version: 1.0 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: Content-Transfer-Encoding: quoted-printable 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: <meta http-equiv=3D"Content-Type" content=3D"text/html; charset= 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: =3Dutf-8"> <body lang=3D"en-US">

Signed= 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822:

- Karl
(on PDA)
26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: --===============1471613108==-- 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: --===============1772996984== 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: Content-Type: application/x-pkcs7-signature; name="smime.p7s" 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: MIME-Version: 1.0 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: Content-Transfer-Encoding: base64 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: Content-Disposition: attachment; filename="smime.p7s" 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: 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 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] RFC822: --===============1772996984==-- 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->SendMail(): We get the new message 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->SendMail(): We get the From and To 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getFromHeaderValue(): from defined: karl@denninger.net 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->SendMail(): To defined: karl@denninger.net 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->setReturnPathValue(): No Return-Path address defined, we use From 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getFromHeaderValue(): From defined: karl@denninger.net 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->setReturnPathValue(): No Return-Path address defined, we use From 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->SendMail(): Final mail to send: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="SHA1"; boundary="===============1772996984==" 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] MIME-Version: 1.0 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] X-Client-ID: 5035 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] X-Mailer: BlackBerry Email (xx.x.x.xxx) 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Message-ID: 20150526122948.8806479.12914.5035@denninger.net 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Date: Tue, 26 May 2015 07:29:48 -0500 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Subject: Test S/Mime signed 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] From: karl@denninger.net 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] To: Karl Denninger karl@denninger.net 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] return-path: karl@denninger.net 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: --===============1772996984== 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: Content-Type: multipart/alternative; boundary="===============1471613108==" 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: MIME-Version: 1.0 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: --===============1471613108== 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: Content-Type: text/plain; charset="utf-8" 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: MIME-Version: 1.0 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: Content-Transfer-Encoding: base64 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: U2lnbmVkCgotwqBLYXJsCihvbsKgUERBKQ== 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: --===============1471613108== 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: Content-Type: text/html; charset="utf-8" 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: MIME-Version: 1.0 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: Content-Transfer-Encoding: quoted-printable 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: <meta http-equiv=3D"Content-Type" content=3D"text/html; charset= 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: =3Dutf-8"> <body lang=3D"en-US">
Signed= 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body:

- Karl
(on PDA)
26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: --===============1471613108==-- 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: --===============1772996984== 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: Content-Type: application/x-pkcs7-signature; name="smime.p7s" 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: MIME-Version: 1.0 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: Content-Transfer-Encoding: base64 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: Content-Disposition: attachment; filename="smime.p7s" 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: MIAGCSqGSIb3DQEHAqCAMIACAQExDTALBglghkgBZQMEAgEwgAYJKoZIhvcNAQcBAACgggy+MIIGWzCCBEOgAwIBAgIBKTANBgkqhkiG9w0BAQsFADCBkDELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0Zsb3JpZGExEjAQBgNVBAcTCU5pY2V2aWxsZTEZMBcGA1UEChMQQ3VkYSBTeXN0ZW1zIExMQzEcMBoGA1UEAxMTQ3VkYSBTeXN0ZW1zIExMQyBDQTEiMCAGCSqGSIb3DQEJARYTQ3VkYSBTeXN0ZW1zIExMQyBDQTAeFw0xNTA0MjEwMjIxNTlaFw0yMDA0MTkwMjIxNTlaMFoxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRhMRkwFwYDVQQKExBDdWRhIFN5c3RlbXMgTExDMR4wHAYDVQQDExVLYXJsIERlbm5pbmdlciAoT0NTUCkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC5hFj4QHaYa1neCuVU7xOacS925UUD8hhdwKY1I4LWr6lNWPKWyNwcoFw49v1M/UovF1Y/5DWyhI5EYeUrDb8dxXNKENblY8gqu8wv5HLRe8i80G71p1OIKwD2dyLgKd/3xcSFWl6cRHSpsmQFQ4ZPWs/iIBx+N63SUSDM8Seb6kDG/p9hI2nVaohj27RvWmRCJpau3yGA05ysk6IttzwJ5D8ME/qtSJCNg0739o81q4S0eQ019H1GAtJ8ZR1m44KYmqciVrUeytmEDmnr0G/97zfYEqI09ofnAXpu0CI+lOvaxGHBA7z8gjFxFfVXF3XJluNi0kbD72XARxZFgCajGTMos+JLpmj/rPnCA2l4rUf7M6KgyhkhzOAjwGVfWIfGrL8UC+bg8c+cLyz4EuckvCv6O8w0ebzZDAsn2ELkejwCcVTpOQK6r4/ZXz9yUlWqcG69NQqFgwZKbiZSn6UCBHgv6XAgSpJ5ZWzGKshwTtk4qS8juTnHdZ4Tf5zrDvgvo99ZUB3zjEWWj0MpF1T1huQW4Vk+7bV+L8uYTlusiYHk/6N2qcp5adXBGr5EEUvLiR6ELMxeiiK0DCA/yX8klr1UOJLJ388AdpUaJq3a8J0OHhvxwUvtJXqM8DiTQyAZQD/oS3vAOaFmYKKCCCv0rpVALHyOkoHfHU2U02JpYQIDAQABo4H0MIHxMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL2N1ZGFzeXN0ZW1zLm5ldDo4ODg4MAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgWgMAsGA1UdDwQEAwIF4DAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFMUclC3pyWhcF0bU+/WjZiAf7uVZMB8GA1UdIwQYMBaAFCRxm52Fffzd3b2wypKUA6H60201MB0GA1UdEQQWMBSBEmthcmxAZGVubmluZ2VyLm5ldDANBgkqhkiG9w0BAQsFAAOCAgEAT393GLZiqMJhiGLJungYpybu0FVr8Ytb6pwc9yhPh2qaqCGUvPz6JQf4cImNFABNUbIwSe8hI4oVUcLppkgb5KDsnxt9Lj5+MoOL2yZEfZU8/HdtXz7IVhE2ugwYdo8dkH9dy2aa9z49n07ZbusTGCs4O3Eg4HdmzrCRh/63L72vUqZMeVX6tEcjq2KYfW6LIUTdw+LW1oAQHF/TznVwlXyTjQ8YXwbjx7CerxJj2wJ/ly+WJdul2BT4jg0PkG5OODrdZLfbO6Et3VVK4fdkL9BtydwxflbegteZxA/n/m5OIEnLviR0+0YxJn2tfBk/A3E//w9cxJHtWJoW+NSR/hsmXIQ0VrY8bEuTgRTM647u3duuMyVBbV+4id8b6Sje1XGSjbQenS0oY97/1w7EFUFl5kf9WClmfdwty6UbNmOZ2HZ+oBDqS/1n0BU4bX52rRzXO3zbOb46LWmKQZeR/PlQmrrSmxjrNtfbkG4RmS2E7+qJLinGPFvuBCRLStMQdPL6q/SXdBUvTBo0BPvhlqPuXkMRbep1BDR21WJ7K+m2D0LGR9AkTcnIExvTMGP1CFzn+FtN+FKUfNkwRtS4jLGH2/GoUCYbN8HX9Z84qSI0cKGSk9bxl4f3I94MEq+uBn3p1EQcWhWQOTtWnDmVIz60U593IuDHGFv9FlVQN5QwggZbMIIEQ6ADAgECAgEpMA0GCSqGSIb3DQEBCwUAMIGQMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlkYTESMBAGA1UEBxMJTmljZXZpbGxlMRkwFwYDVQQKExBDdWRhIFN5c3RlbXMgTExDMRwwGgYDVQQDExNDdWRhIFN5c3RlbXMgTExDIENBMSIwIAYJKoZIhvcNAQkBFhNDdWRhIFN5c3RlbXMgTExDIENBMB4XDTE1MDQyMTAyMjE1OVoXDTIwMDQxOTAyMjE1OVowWjELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0Zsb3JpZGExGTAXBgNVBAoTEEN1ZGEgU3lzdGVtcyBMTEMxHjAcBgNVBAMTFUthcmwgRGVubmluZ2VyIChPQ1NQKTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALmEWPhAdphrWd4K5VTvE5pxL3blRQPyGF3ApjUjgtavqU1Y8pbI3BygXDj2/Uz9Si8XVj/kNbKEjkRh5SsNvx3Fc0oQ1uVjyCq7zC/kctF7yLzQbvWnU4grAPZ3IuAp3/fFxIVaXpxEdKmyZAVDhk9az+IgHH43rdJRIMzxJ5vqQMb+n2EjadVqiGPbtG9aZEImlq7fIYDTnKyToi23PAnkPwwT+q1IkI2DTvf2jzWrhLR5DTX0fUYC0nxlHWbjgpiapyJWtR7K2YQOaevQb/3vN9gSojT2h+cBem7QIj6U69rEYcEDvPyCMXEV9VcXdcmW42LSRsPvZcBHFkWAJqMZMyiz4kumaP+s+cIDaXitR/szoqDKGSHM4CPAZV9Yh8asvxQL5uDxz5wvLPgS5yS8K/o7zDR5vNkMCyfYQuR6PAJxVOk5Arqvj9lfP3JSVapwbr01CoWDBkpuJlKfpQIEeC/pcCBKknllbMYqyHBO2TipLyO5Ocd1nhN/nOsO+C+j31lQHfOMRZaPQykXVPWG5BbhWT7ttX4vy5hOW6yJgeT/o3apynlp1cEavkQRS8uJHoQszF6KIrQMID/JfySWvVQ4ksnfzwB2lRomrdrwnQ4eG/HBS+0leozwOJNDIBlAP+hLe8A5oWZgooIIK/SulUAsfI6Sgd8dTZTTYmlhAgMBAAGjgfQwgfEwNwYIKwYBBQUHAQEEKzApMCcGCCsGAQUFBzABhhtodHRwOi8vY3VkYXN5c3RlbXMubmV0Ojg4ODgwCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBaAwCwYDVR0PBAQDAgXgMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUxRyULenJaFwXRtT79aNmIB/u5VkwHwYDVR0jBBgwFoAUJHGbnYV9/N3dvbDKkpQDofrTbTUwHQYDVR0RBBYwFIESa2FybEBkZW5uaW5nZXIubmV0MA0GCSqGSIb3DQEBCwUAA4ICAQBPf3cYtmKowmGIYsm6eBinJu7QVWvxi1vqnBz3KE+HapqoIZS8/PolB/hwiY0UAE1RsjBJ7yEjihVRwummSBvkoOyfG30uPn4yg4vbJkR9lTz8d21fPshWETa6DBh2jx2Qf13LZpr3Pj2fTtlu6xMYKzg7cSDgd2bOsJGH/rcvva9Spkx5Vfq0RyOrYph9boshRN3D4tbWgBAcX9POdXCVfJONDxhfBuPHsJ6vEmPbAn+XL5Yl26XYFPiODQ+Qbk44Ot1kt9s7oS3dVUrh92Qv0G3J3DF+Vt6C15nED+f+bk4gScu+JHT7RjEmfa18GT8DcT//D1zEke1Ymhb41JH+GyZchDRWtjxsS5OBFMzrju7d264zJUFtX7iJ3xvpKN7VcZKNtB6dLShj3v/XDsQVQWXmR/1YKWZ93C3LpRs2Y5nYdn6gEOpL/WfQFThtfnatHNc7fNs5vjotaYpBl5H8+VCautKbGOs219uQbhGZLYTv6okuKcY8W+4EJEtK0xB08vqr9Jd0FS9MGjQE++GWo+5eQxFt6nUENHbVYnsr6bYPQsZH0CRNycgTG9MwY/UIXOf4W034UpR82TBG1LiMsYfb8ahQJhs3wdf1nzipIjRwoZKT1vGXh/cj3gwSr64GfenURBxaFZA5O1acOZUjPrRTn3ci4McYW/0WVVA3lDGCAykwggMlAgEBMIGWMIGQMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlkYTESMBAGA1UEBxMJTmljZXZpbGxlMRkwFwYDVQQKExBDdWRhIFN5c3RlbXMgTExDMRwwGgYDVQQDExNDdWRhIFN5c3RlbXMgTExDIENBMSIwIAYJKoZIhvcNAQkBFhNDdWRhIFN5c3RlbXMgTExDIENBAgEpMAsGCWCGSAFlAwQCAaBpMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1MDUyNjEyMjk0OFowLwYJKoZIhvcNAQkEMSIEIFBQjzfr1t9+JJqZxBioB0PdSeMal5h7b8iAcdEiIfF1MAsGCSqGSIb3DQEBCwSCAgAuF7IJe7rBBq0mDiE2c2GixV1Ws8dGfVcmQcazjl+Gvx6URxuWG7r3WfutlJpcAzk691VJVT2i7k4qZ9ug8FF82AdAjsqRQalhbcoJ7YYfLQYb7hWC7CYNYGn7AsDQ+kwNBodHF7EN2/3+ELYsPG2jXHRbBWQxAUK2hGJbV6tAKnD7SlnKc3yRPw2L7bJ7xtyocjUF9+kSBJti+XZvBH/Jq4gNqHuV/aKkr10tO8568KhRM4Im3zZueI/pDbMMb+YWeMwTKpIBJYxxeVRq4ccEYPPgdMt/v9yrPlINNdc+lgIjy1iCRkd+3GEG92jCyqG7TfsfPucXyYGfBsx66CIHj/lMUaYYa1C3kKQs4OkbmxVElnOW+8MvEVkkNutXOd3FBYPOMnVCJP5VBY/kiOYCQiC81u+MLQcK9xfQ/U01slp4OuoSFkNb1Q8qwatmFRDCRkCx5WxA28t+h9R1pIHA3uPF1Ocaio6KGejF657Uob4MAr41b85hpSOjfSF62lY7odciMb34kCnwYpm94HI9BOtG+lvCkFY03Kp8MD7Jw9BAuZcX9kmm+QVzSAkwaRqDXVpp62Rrxgjxj2cPC5AZZGFBTonfE6XQrEFIU8NrgV58VOFsVcu6zF/hI2ONWIIHZ6jeOkYuBSuO5ri9e/O7M42x93wlEdxG4fzgERmqYwAAAAAAAA== 26/05/2015 07:29:49 [50654] [WBXML] [karl] [bb2be4bede] Body: --===============1772996984==-- 26/05/2015 07:29:49 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->sendMessage(): SendingMail with smtp 26/05/2015 07:29:50 [50319] [DEBUG] [karl] [bb2be4bede] BackendCombined->ChangesSink - Calling in 'BackendIMAP' with 2 26/05/2015 07:29:55 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->sendMessage(): send return value 1 26/05/2015 07:29:55 [50654] [DEBUG] [karl] [bb2be4bede] BackendIMAP->saveSentMessage(): saving message in Sent Items folder

ghost commented 9 years ago

And an encrypted email. This one comes through with a completely BLANK message; the MIME piece (which contains the message) simply disappears, although I can see the (again, malformed) base64 component in the WebXML log.

26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] -------- Start 26/05/2015 07:40:58 [56582] [ INFO] [karl] [bb2be4bede] Version='SVN-trunk-r1938' method='POST' from='192.168.1.21' cmd='SendMail' getUser='karl' devId='bb2be4bede' devType='BlackBerry' 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] Used timezone 'America/Chicago' 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] Request::ProcessHeaders() ASVersion: 14.0 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] Including backend file: '/usr/share/z-push/backend/combined/combined.php' 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] Including backend file: '/usr/share/z-push/backend/imap/imap.php' 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] Including backend file: '/usr/share/z-push/backend/caldav/caldav.php' 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] Including backend file: '/usr/share/z-push/backend/carddav/carddav.php' 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] Combined 3 backends loaded. 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] ZPush::CommandNeedsProvisioning(1): true 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] FileStateMachine->GetState() on file: '/var/lib/z-push/e/d/bb2be4bede-devicedata' 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] ASDevice data loaded for user: 'karl' 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] TopCollector(): Initialized mutexid Resource id #51 and memid Resource id #52. 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] LoopDetection(): Initialized mutexid Resource id #55 and memid Resource id #56. 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] ZPush::HierarchyCommand(1): false 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] DeviceManager->ProvisioningRequired('375715846') saved device key '375715846': false 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] ZPush::CommandNeedsAuthentication(1): true 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] Combined->Logon('karl', '',***)) 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->Logon(): Excluding Folders (.imap) 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->Logon(): User 'karl' is authenticated on '{localhost:143/imap/novalidate-cert/tls/norsh}' 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] BackendCalDAV->Logon(): User 'karl' is authenticated on CalDAV 26/05/2015 07:40:58 [56582] [DEBUG] [karl] [bb2be4bede] BackendCardDAV->Logon(): User 'karl' is authenticated on 'https://cudasystems.net:11443/davical/caldav.php/karl/' 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] BackendCardDAV::discoverAddressbooks() Found addressbook 'https://cudasystems.net:11443/davical/caldav.php/karl/addresses/' 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] Combined->Logon() success 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] Combined->Setup('karl', 'true', '') 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] Combined->Setup() success 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] ZPush::CommandNeedsPlainInput(1): false 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] I ComposeMail:SendMail 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] I ComposeMail:ClientId 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] I 1429581676-5040 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] I /ComposeMail:ClientId 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] I ComposeMail:SaveInSentItems/ 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] I ComposeMail:MIME 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] I Content-Type: application/x-pkcs7-mime; name="smime.p7m"; smime-type="enveloped-data" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7m" X-Client-ID: 5040 X-Mailer: BlackBerry Email (xx.x.x.xxx) Message-ID: 20150526124057.8806479.50020.5040@denninger.net Date: Tue, 26 May 2015 07:40:57 -0500 Subject: Test of encrypted s/mime From: karl@denninger.net To: Karl Denninger karl@denninger.net

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 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] I /ComposeMail:MIME 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] I /ComposeMail:SendMail 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] Combined->SendMail() 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->SendMail(): RFC822: 2502 bytes forward-id: 'false' reply-id: 'false' parent-id: 'false' SaveInSent: 'empty' ReplaceMIME: 'false' 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: Content-Type: application/x-pkcs7-mime; name="smime.p7m"; smime-type="enveloped-data" 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: MIME-Version: 1.0 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: Content-Transfer-Encoding: base64 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: Content-Disposition: attachment; filename="smime.p7m" 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: X-Client-ID: 5040 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: X-Mailer: BlackBerry Email (xx.x.x.xxx) 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: Message-ID: 20150526124057.8806479.50020.5040@denninger.net 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: Date: Tue, 26 May 2015 07:40:57 -0500 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: Subject: Test of encrypted s/mime 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: From: karl@denninger.net 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: To: Karl Denninger karl@denninger.net 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] RFC822: 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 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->SendMail(): We get the new message 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->SendMail(): We get the From and To 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getFromHeaderValue(): from defined: karl@denninger.net 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->SendMail(): To defined: karl@denninger.net 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->setReturnPathValue(): No Return-Path address defined, we use From 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->SendMail(): is a new message or we are replacing mime 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->SendMail(): Copying new headers 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->SendMail(): Final mail to send: 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Mime-Version: 1.0 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Content-disposition: attachment; filename="smime.p7m" 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] X-client-id: 5040 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] X-mailer: BlackBerry Email (xx.x.x.xxx) 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Message-id: 20150526124057.8806479.50020.5040@denninger.net 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Date: Tue, 26 May 2015 07:40:57 -0500 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Subject: Test of encrypted s/mime 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] From: karl@denninger.net 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] To: Karl Denninger karl@denninger.net 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Return-path: karl@denninger.net 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Content-Type: multipart/mixed; boundary="=_8b7846c185f6fb2b55220a72c32cdd9a" 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Body: This is a multi-part message in MIME format. 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Body: --=_8b7846c185f6fb2b55220a72c32cdd9a 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Body: Content-Type: multipart/alternative; 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Body: boundary="=_ce527020d0a42a978940ffc3f1730d39" 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Body: 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Body: 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Body: --=_8b7846c185f6fb2b55220a72c32cdd9a-- 26/05/2015 07:40:59 [56582] [WBXML] [karl] [bb2be4bede] Body: 26/05/2015 07:40:59 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->sendMessage(): SendingMail with smtp 26/05/2015 07:40:59 [50654] [DEBUG] [karl] [bb2be4bede] BackendCombined->ChangesSink - Calling in 'BackendCardDAV' with 2 26/05/2015 07:40:59 [50654] [DEBUG] [karl] [bb2be4bede] BackendCardDAV->ChangesSink - Not initialized ChangesSink, sleep and exit 26/05/2015 07:41:01 [50654] [DEBUG] [karl] [bb2be4bede] BackendCombined->ChangesSink(30) 26/05/2015 07:41:01 [50654] [DEBUG] [karl] [bb2be4bede] BackendCombined->ChangesSink - Calling in 'BackendIMAP' with 2 26/05/2015 07:41:04 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->sendMessage(): send return value 1 26/05/2015 07:41:04 [56582] [DEBUG] [karl] [bb2be4bede] BackendIMAP->saveSentMessage(): saving message in Sent Items folder 26/05/2015 07:41:04 [56582] [DEBUG] [karl] [bb2be4bede] FileStateMachine->GetState() on file: '/var/lib/z-push/e/d/bb2be4bede-bs-1432524508'

ghost commented 9 years ago

Ok, I fixed the S/MIME encrypted message problem.

Diff follows:

*\ backend/imap/mime_encode.php.orig Tue May 26 16:00:33 2015 --- backend/imap/mime_encode.php Tue May 26 16:01:02 2015


* 287,293 ** $res = false;

  if (isset($message->ctype_primary) && isset($message->ctype_secondary)) {

! if (($message->ctype_primary == "multipart" && $message->ctype_secondary == "signed") || ($message->ctype_primary == "application" && $message->ctype_secondary == "pkcs7-mime")) { $res = true; } } --- 287,293 ---- $res = false;

  if (isset($message->ctype_primary) && isset($message->ctype_secondary)) {

! if (($message->ctype_primary == "multipart" && $message->ctype_secondary == "signed") || ($message->ctype_primary == "application" && $message->ctype_secondary == "x-pkcs7-mime") || ($message->ctype_primary == "application" && $message->ctype_secondary == "pkcs7-mime")) { $res = true; } }

However, the signature problem remains; the phone is not breaking up the base64 component and yet "official" Exchange servers do.

ghost commented 9 years ago

Ok, make that changed line this and then PGP encrypted works too..... (same problem; it's being "eaten" by Z-push)

if (isset($message->ctype_primary) && isset($message->ctype_secondary)) {
    if (($message->ctype_primary == "multipart" && $message->ctype_secondary

== "signed") || ($message->ctype_primary == "application" && $message->ctype_se condary == "x-pkcs7-mime") || ($message->ctype_primary == "application" && $mess age->ctype_secondary == "pkcs7-mime") || ($message->ctype_primary == "multipart" && $message->ctype_secondary == "encrypted")) {

ghost commented 9 years ago

More results:

  1. With the above change I can now send S/MIME and PGP from BB10 devices either signed, encrypted or both and they are transmitted unmolested.
  2. I can read signed messages in either format.
  3. HOWEVER, encrypted messages that are received fail to come through cleanly; the phone cannot decode the messages. I know the format is ok because (1) a person on a real Exchange server to which I send said emails, if addressed to them (and they of course have the proper private key) can read them and (2) if I open the "Sent" archive on my Thunderbird desktop client and they're addressed to me (that is, I have the requisite private key) I can read them too and (3) if I read the messages from the same mail store on my Thunderbird desktop client they are readable.

So something in Z-Push is failing to properly handle encrypted messages on reception. I cannot read this on my phone (it says the message is invalid) but on my desktop client it opens properly.

The WEBXML log looks, at first blush, ok.

27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] BackendIMAP->StatMessage('2ccc813d','5192') 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('2ccc813d') = INBOX 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage('2ccc813d','5192') 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('2ccc813d') = INBOX 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] BackendIMAP->StatMessage('2ccc813d','5192') 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('2ccc813d') = INBOX 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage - getBodyPreferenceBestMatch: 1 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage - Message is SMIME, forcing to work with MIME 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 5192 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O POOMMAIL:To 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O karl@denninger.net 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /POOMMAIL:To 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O POOMMAIL:From 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O Karl Denninger karl@denninger.net 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /POOMMAIL:From 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O POOMMAIL:Subject 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O Test S/MIME Encrypted 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /POOMMAIL:Subject 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O POOMMAIL:ThreadTopic 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O Test S/MIME Encrypted 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /POOMMAIL:ThreadTopic 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O POOMMAIL:DateReceived 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 2015-05-27T11:47:01.000Z 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /POOMMAIL:DateReceived 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O POOMMAIL:Importance 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 1 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /POOMMAIL:Importance 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O POOMMAIL:Read 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 0 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /POOMMAIL:Read 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O POOMMAIL:MessageClass 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O IPM.Note.SMIME.MultipartSigned 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /POOMMAIL:MessageClass 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O POOMMAIL:InternetCPID 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 65001 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /POOMMAIL:InternetCPID 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O AirSyncBase:Body 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O AirSyncBase:Type 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 4 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /AirSyncBase:Type 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O AirSyncBase:EstimatedDataSize 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 9473 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /AirSyncBase:EstimatedDataSize 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O AirSyncBase:Truncated 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 0 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /AirSyncBase:Truncated 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O AirSyncBase:Data 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O Return-Path: karl@denninger.net Received: from [192.168.1.40](localhost [127.0.0.1]) by fs.denninger.net (8.14.9/8.14.8) with ESMTP id t4RBlcKf030473 for karl@denninger.net; Wed, 27 May 2015 06:47:39 -0500 (CDT) (envelope-from karl@denninger.net) Received: from [192.168.1.40] [192.168.1.40](Via SSLv3 AES128-SHA) ; by Spamblock-sys (LOCAL/AUTH) Wed May 27 06:47:38 2015 Message-ID: 5565AEB5.3020701@denninger.net Date: Wed, 27 May 2015 06:47:01 -0500 From: Karl Denninger karl@denninger.net User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: karl@denninger.net Subject: Test S/MIME Encrypted Content-Type: application/pkcs7-mime; name="smime.p7m"; smime-type=enveloped-data Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7m" Content-Description: S/MIME Encrypted Message

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

27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /AirSyncBase:Data 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /AirSyncBase:Body 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O POOMMAIL:ContentClass 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O urn:content-classes:message 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /POOMMAIL:ContentClass 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O POOMMAIL:Flag 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O POOMMAIL:FlagStatus 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 0 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /POOMMAIL:FlagStatus 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /POOMMAIL:Flag 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O AirSyncBase:NativeBodyType 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 1 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O /AirSyncBase:NativeBodyType 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 27/05/2015 06:47:40 [30196] [WBXML] [karl] [bb2be4bede] O 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] FileStateMachine->SetState() written 2490 bytes on file: '/var/lib/z-push/e/d/bb2be4bede-ed18dba8-5491-4a92-a0ce-a530d3793590-33' 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] SyncCollections->SaveCollection(): Data of folder 'i/2ccc813d' changed 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] FileStateMachine->SetState() written 1418 bytes on file: '/var/lib/z-push/e/d/bb2be4bede-ed18dba8-5491-4a92-a0ce-a530d3793590-fd' 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] ZPush::GetAdditionalSyncFolderStore('i/a111d34a'): 'false' 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] Combined->Setup('', 'false', '') 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] Combined->Setup() success 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] Combined->GetExporter('i/a111d34a') 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] ExportChangesDiff->InitializeExporter(): Initializing message diff engine. '98' messages in state 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessageList('a111d34a','0') 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('a111d34a') = Sent-Exchange 27/05/2015 06:47:40 [30196] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessageList(): searching with sequence '1:*' 27/05/2015 06:47:41 [30196] [ INFO] [karl] [bb2be4bede] ExportChangesDiff->InitializeExporter(): Found 0 changes 27/05/2015 06:47:41 [30196] [DEBUG] [karl] [bb2be4bede] No changes found for heartbeat folder. Omitting empty output. 27/05/2015 06:47:41 [30196] [DEBUG] [karl] [bb2be4bede] ZPush::GetAdditionalSyncFolderStore('i/cb404cdf'): 'false' 27/05/2015 06:47:41 [30196] [DEBUG] [karl] [bb2be4bede] Combined->Setup('', 'false', '') 27/05/2015 06:47:41 [30196] [DEBUG] [karl] [bb2be4bede] Combined->Setup() success 27/05/2015 06:47:41 [30196] [DEBUG] [karl] [bb2be4bede] Combined->GetExporter('i/cb404cdf')

ghost commented 9 years ago

I have traced through the code and found that the SYNC_BODYPREFERENCE_MIME flag in imap.php is indeed being checked and followed.

But, if I look at the msdn referenced link for the change in the "BODYPREFERENCE" (https://msdn.microsoft.com/en-us/library/ee220018(v=exchg.80).aspx) I see a MISSING stanza -- specifically, here, right in front of the message body webXML:

        <airsyncbase:Attachments>
          <airsyncbase:Attachment>
            <airsyncbase:DisplayName>smime.p7m</airsyncbase:DisplayName>
            <airsyncbase:FileReference>17%3a11%3a0</airsyncbase:FileReference>
            <airsyncbase:Method>1</airsyncbase:Method>
            <airsyncbase:EstimatedDataSize>9340</airsyncbase:EstimatedDataSize>
          </airsyncbase:Attachment>
        </airsyncbase:Attachments>

If that has to be there in the transmitted stanzas....

It appears from the example in the above link that you can't send the MIME content in the message body; that won't work. It has to be sent as an attachment (even though there is only one in this case since the entire message is encrypted). Indeed, there is no text in the example message body at all (which is exactly what you'd expect to see in this case if the MIME content is all sent in the attachment; that leaves the body text itself empty with just the message header present.)

I've been playing with this a bit but I've yet to figure out how to get the code to shove the MIME content into an attachment instead of sending it in the body portion. That looks to be necessary for encrypted (or encrypted AND signed) messages to work.

fmbiete commented 9 years ago

@tickerguy

Thanks for adding the new types for S/MIME and PGP content. I have put them into an array to make shorter the if sentence.

Also, big find for the S/MIME. :+1:

I think it should be enough to just change this line

if (is_smime($message)) {
    $output->asbody->data = $mail;
}

To:

if (is_smime($message)) {
    $output->asbody->data = '';
}

Because the attachment already should enter the code below

else {
    //add part as attachment if it's disposition indicates so or if it is not a text part
    if ((isset($part->disposition) && ($part->disposition == "attachment" || $part->disposition == "inline")) || (isset($part->ctype_primary) && $part->ctype_primary != "text")) {

Can you test it, please?

ghost commented 9 years ago

Nope -- that breaks all signed AND encrypted emails; a signed email has a normal message body.

It also doesn't solve the problem for encrypted emails; if I make that change I get this in the WEBXML for the message:

30/05/2015 13:02:59 [45450] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage('3cda8ffc','5548')
30/05/2015 13:02:59 [45450] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('3cda8ffc') = INBOX
30/05/2015 13:02:59 [45450] [DEBUG] [karl] [bb2be4bede] BackendIMAP->StatMessage('3cda8ffc','5548')
30/05/2015 13:02:59 [45450] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('3cda8ffc') = INBOX
30/05/2015 13:02:59 [45450] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors
30/05/2015 13:02:59 [45450] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage - getBodyPreferenceBestMatch: 4
30/05/2015 13:02:59 [45450] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage - Message is SMIME, forcing to work with MIME
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O     <Perform>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O      <Add>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O       <ServerEntryId>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O       5548
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O       </ServerEntryId>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O       <Data>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:To>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        karl@denninger.net
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:To>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:From>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        Karl Denninger <karl@denninger.net>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:From>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Subject>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        Encrypted test
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Subject>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:ThreadTopic>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        Encrypted test
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:ThreadTopic>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:DateReceived>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        2015-05-30T18:02:16.000Z
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:DateReceived>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Importance>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        1
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Importance>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Read>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        0
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Read>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:MessageClass>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        IPM.Note.SMIME.MultipartSigned
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:MessageClass>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:InternetCPID>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        65001
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:InternetCPID>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <AirSyncBase:Body>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:Type>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O         4
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:Type>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:EstimatedDataSize>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O         0
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:EstimatedDataSize>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:Truncated>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O         0
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:Truncated>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </AirSyncBase:Body>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:ContentClass>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        urn:content-classes:message
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:ContentClass>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Flag>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O         <POOMMAIL:FlagStatus>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O         0
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O         </POOMMAIL:FlagStatus>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Flag>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        <AirSyncBase:NativeBodyType>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        1
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O        </AirSyncBase:NativeBodyType>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O       </Data>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O      </Add>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O     </Perform>
30/05/2015 13:02:59 [45450] [WBXML] [karl] [bb2be4bede] O    </Folder>
30/05/2015 13:02:59 [45450] [DEBUG] [karl] [bb2be4bede] FileStateMachine->SetState() written 2946 bytes on file: '/var/lib/z-push/e/d/bb2be4bede-4a57604e-2840-4c0c-9cb5-1b55864d7750-88'
30/05/2015 13:02:59 [45450] [DEBUG] [karl] [bb2be4bede] SyncCollections->SaveCollection(): Data of folder 'i/3cda8ffc' changed

Nothing there, AND no attachment.

Looking at the original source out of the IMAP server this is what's there:

Return-Path: <karl@denninger.net>
Received: from [192.168.1.40] (localhost [127.0.0.1])
    by fs.denninger.net (8.14.9/8.14.8) with ESMTP id t4UI2uX1045720
    for <karl@denninger.net>; Sat, 30 May 2015 13:02:57 -0500 (CDT)
    (envelope-from karl@denninger.net)
Received: from [192.168.1.40] [192.168.1.40] (Via SSLv3 AES128-SHA) ;
    by Spamblock-sys (LOCAL/AUTH) Sat May 30 13:02:56 2015
Message-ID: <5569FB28.6040006@denninger.net>
Date: Sat, 30 May 2015 13:02:16 -0500
From: Karl Denninger <karl@denninger.net>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: karl@denninger.net
Subject: Encrypted test
Content-Type: application/pkcs7-mime; name="smime.p7m"; smime-type=enveloped-data
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7m"
Content-Description: S/MIME Encrypted Message
X-Antivirus: avast! (VPS 150530-0, 05/30/2015), Inbound message
X-Antivirus-Status: Clean

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
AAAAAAAAAA==

Basically if the Content-Disposition: attachment line is in a MIME part that part should get shoved into an attachment, but doesn't IF the main body is that part. It does if that part is one of many parts in the message; if I put back the original $mail declaration for the body and send a signed message then I get something that looks like this in the mail spool itself:

Return-Path: <karl@denninger.net>
Received: from [192.168.1.40] (localhost [127.0.0.1])
    by fs.denninger.net (8.14.9/8.14.8) with ESMTP id t4UIEg6o048912
    for <karl@denninger.net>; Sat, 30 May 2015 13:14:42 -0500 (CDT)
    (envelope-from karl@denninger.net)
Received: from [192.168.1.40] [192.168.1.40] (Via SSLv3 AES128-SHA) ;
    by Spamblock-sys (LOCAL/AUTH) Sat May 30 13:14:42 2015
Message-ID: <5569FDE9.8080606@denninger.net>
Date: Sat, 30 May 2015 13:14:01 -0500
From: Karl Denninger <karl@denninger.net>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: karl@denninger.net
Subject: Signed
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms030402070400050107000401"
X-Antivirus: avast! (VPS 150530-0, 05/30/2015), Inbound message
X-Antivirus-Status: Clean

This is a cryptographically signed message in MIME format.

--------------ms030402070400050107000401
Content-Type: multipart/alternative;
 boundary="------------010104050402010500090102"

This is a multi-part message in MIME format.
--------------010104050402010500090102
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

This is a signed test
--=20
Karl Denninger
karl@denninger.net <mailto:karl@denninger.net>
/The Market Ticker/

--------------010104050402010500090102
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html>
  <head>

    <meta http-equiv=3D"content-type" content=3D"text/html; charset=3Dutf=
-8">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    This is a signed test<br>
    <div class=3D"moz-signature">-- <br>
      Karl Denninger<br>
      <a href=3D"mailto:karl@denninger.net">karl@denninger.net</a><br>
      <i>The Market Ticker</i>
    </div>
  </body>
</html>

--------------010104050402010500090102--

--------------ms030402070400050107000401
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGXzCC
BlswggRDoAMCAQICASkwDQYJKoZIhvcNAQELBQAwgZAxCzAJBgNVBAYTAlVTMRAwDgYDVQQI
EwdGbG9yaWRhMRIwEAYDVQQHEwlOaWNldmlsbGUxGTAXBgNVBAoTEEN1ZGEgU3lzdGVtcyBM
TEMxHDAaBgNVBAMTE0N1ZGEgU3lzdGVtcyBMTEMgQ0ExIjAgBgkqhkiG9w0BCQEWE0N1ZGEg
U3lzdGVtcyBMTEMgQ0EwHhcNMTUwNDIxMDIyMTU5WhcNMjAwNDE5MDIyMTU5WjBaMQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHRmxvcmlkYTEZMBcGA1UEChMQQ3VkYSBTeXN0ZW1zIExMQzEe
MBwGA1UEAxMVS2FybCBEZW5uaW5nZXIgKE9DU1ApMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
MIICCgKCAgEAuYRY+EB2mGtZ3grlVO8TmnEvduVFA/IYXcCmNSOC1q+pTVjylsjcHKBcOPb9
TP1KLxdWP+Q1soSORGHlKw2/HcVzShDW5WPIKrvML+Ry0XvIvNBu9adTiCsA9nci4Cnf98XE
hVpenER0qbJkBUOGT1rP4iAcfjet0lEgzPEnm+pAxv6fYSNp1WqIY9u0b1pkQiaWrt8hgNOc
rJOiLbc8CeQ/DBP6rUiQjYNO9/aPNauEtHkNNfR9RgLSfGUdZuOCmJqnIla1HsrZhA5p69Bv
/e832BKiNPaH5wF6btAiPpTr2sRhwQO8/IIxcRX1Vxd1yZbjYtJGw+9lwEcWRYAmoxkzKLPi
S6Zo/6z5wgNpeK1H+zOioMoZIczgI8BlX1iHxqy/FAvm4PHPnC8s+BLnJLwr+jvMNHm82QwL
J9hC5Ho8AnFU6TkCuq+P2V8/clJVqnBuvTUKhYMGSm4mUp+lAgR4L+lwIEqSeWVsxirIcE7Z
OKkvI7k5x3WeE3+c6w74L6PfWVAd84xFlo9DKRdU9YbkFuFZPu21fi/LmE5brImB5P+jdqnK
eWnVwRq+RBFLy4kehCzMXooitAwgP8l/JJa9VDiSyd/PAHaVGiat2vCdDh4b8cFL7SV6jPA4
k0MgGUA/6Et7wDmhZmCigggr9K6VQCx8jpKB3x1NlNNiaWECAwEAAaOB9DCB8TA3BggrBgEF
BQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9jdWRhc3lzdGVtcy5uZXQ6ODg4ODAJBgNV
HRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDALBgNVHQ8EBAMCBeAwLAYJYIZIAYb4QgENBB8W
HU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBTFHJQt6cloXBdG1Pv1
o2YgH+7lWTAfBgNVHSMEGDAWgBQkcZudhX383d29sMqSlAOh+tNtNTAdBgNVHREEFjAUgRJr
YXJsQGRlbm5pbmdlci5uZXQwDQYJKoZIhvcNAQELBQADggIBAE9/dxi2YqjCYYhiybp4GKcm
7tBVa/GLW+qcHPcoT4dqmqghlLz8+iUH+HCJjRQATVGyMEnvISOKFVHC6aZIG+Sg7J8bfS4+
fjKDi9smRH2VPPx3bV8+yFYRNroMGHaPHZB/Xctmmvc+PZ9O2W7rExgrODtxIOB3Zs6wkYf+
ty+9r1KmTHlV+rRHI6timH1uiyFE3cPi1taAEBxf0851cJV8k40PGF8G48ewnq8SY9sCf5cv
liXbpdgU+I4ND5BuTjg63WS32zuhLd1VSuH3ZC/QbcncMX5W3oLXmcQP5/5uTiBJy74kdPtG
MSZ9rXwZPwNxP/8PXMSR7ViaFvjUkf4bJlyENFa2PGxLk4EUzOuO7t3brjMlQW1fuInfG+ko
3tVxko20Hp0tKGPe/9cOxBVBZeZH/VgpZn3cLculGzZjmdh2fqAQ6kv9Z9AVOG1+dq0c1zt8
2zm+Oi1pikGXkfz5UJq60psY6zbX25BuEZkthO/qiS4pxjxb7gQkS0rTEHTy+qv0l3QVL0wa
NAT74Zaj7l5DEW3qdQQ0dtVieyvptg9CxkfQJE3JyBMb0zBj9Qhc5/hbTfhSlHzZMEbUuIyx
h9vxqFAmGzfB1/WfOKkiNHChkpPW8ZeH9yPeDBKvrgZ96dREHFoVkDk7Vpw5lSM+tFOfdyLg
xxhb/RZVUDeUMYIE4zCCBN8CAQEwgZYwgZAxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9y
aWRhMRIwEAYDVQQHEwlOaWNldmlsbGUxGTAXBgNVBAoTEEN1ZGEgU3lzdGVtcyBMTEMxHDAa
BgNVBAMTE0N1ZGEgU3lzdGVtcyBMTEMgQ0ExIjAgBgkqhkiG9w0BCQEWE0N1ZGEgU3lzdGVt
cyBMTEMgQ0ECASkwCQYFKw4DAhoFAKCCAiEwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
BgkqhkiG9w0BCQUxDxcNMTUwNTMwMTgxNDAxWjAjBgkqhkiG9w0BCQQxFgQUiPyXdLIJ07Vq
IbJ0oR6jdcJH4SkwbAYJKoZIhvcNAQkPMV8wXTALBglghkgBZQMEASowCwYJYIZIAWUDBAEC
MAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzAN
BggqhkiG9w0DAgIBKDCBpwYJKwYBBAGCNxAEMYGZMIGWMIGQMQswCQYDVQQGEwJVUzEQMA4G
A1UECBMHRmxvcmlkYTESMBAGA1UEBxMJTmljZXZpbGxlMRkwFwYDVQQKExBDdWRhIFN5c3Rl
bXMgTExDMRwwGgYDVQQDExNDdWRhIFN5c3RlbXMgTExDIENBMSIwIAYJKoZIhvcNAQkBFhND
dWRhIFN5c3RlbXMgTExDIENBAgEpMIGpBgsqhkiG9w0BCRACCzGBmaCBljCBkDELMAkGA1UE
BhMCVVMxEDAOBgNVBAgTB0Zsb3JpZGExEjAQBgNVBAcTCU5pY2V2aWxsZTEZMBcGA1UEChMQ
Q3VkYSBTeXN0ZW1zIExMQzEcMBoGA1UEAxMTQ3VkYSBTeXN0ZW1zIExMQyBDQTEiMCAGCSqG
SIb3DQEJARYTQ3VkYSBTeXN0ZW1zIExMQyBDQQIBKTANBgkqhkiG9w0BAQEFAASCAgBmbsCp
3jfeeLj505CAXFlYEQVbfD+6W2joIcHnErwdKE5mk6dcDFpNrumZyP+VzxweK4xntZ7BUWDo
niY+zI0iTwgroHnzMbG7fZj4FZMILMqFdYnYZSBV51hbVAYWDCB5d/bKY0eRiHDCJEqLfwWw
1lxgemJGO/ZDF2fvV0mQ1gNter8KiZ7OdtYihJMkHEW/1JTy6FPm3M3RBoPnk90VJNLS683D
CAkFgLbGYBPEz5VJ4WI20r6wzqGyq4BVpzEmjkZ74Fng2U+HALmY7hTc2YJHm+r0/KD4xp8J
s53/L2J+ZpH4UdGq6maesy+far+uq38THRwCVpUtkiTPIOeXgPYucFG6inYQu1LSuMbhqilI
QHApHnXgnXKP6BrxR2r9rZtpisvhXPsgXJCHlJWYM42Vv0WB4MGeh/mM2pq7aK/NHmn01BZP
5g+RA3HVOhaHtdF5l7meKnoKzbc3cBmXRwogjgxT2uDmdX8SGVu3QNz73UX+vekhiSTvOv6k
R2Y/4doaOPYy6Xg5A51CbZKhH+QvNszpeOi3pDDok9zGeZRAOAYdjPQNfZsHwbOut9X6GzWF
TFX5fq/VY9wyL12eautxu+HPaQy/Im8AZW1y4o1hRyo9O4GrlYmkrvRrERK3vSe049YIT7bn
EB+ZsNRa0rpwcPng3Vd4uYxhQxlWuwAAAAAAAA==
--------------ms030402070400050107000401--

When Z-push picks this up the signature gets correctly transferred and verifies; here's the XML of it:

30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage('3cda8ffc','5552')
30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('3cda8ffc') = INBOX
30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] BackendIMAP->StatMessage('3cda8ffc','5552')
30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('3cda8ffc') = INBOX
30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors
30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage - getBodyPreferenceBestMatch: 4
30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage - Message is SMIME, forcing to work with MIME
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O     <Perform>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O      <Add>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O       <ServerEntryId>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O       5552
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O       </ServerEntryId>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O       <Data>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:To>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        karl@denninger.net
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:To>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:From>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        Karl Denninger <karl@denninger.net>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:From>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Subject>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        Signed
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Subject>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:ThreadTopic>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        Signed
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:ThreadTopic>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:DateReceived>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        2015-05-30T18:14:01.000Z
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:DateReceived>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Importance>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        1
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Importance>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Read>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        0
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Read>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:MessageClass>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        IPM.Note.SMIME.MultipartSigned
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:MessageClass>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:InternetCPID>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        65001
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:InternetCPID>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <AirSyncBase:Body>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:Type>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         4
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:Type>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:EstimatedDataSize>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         6193
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:EstimatedDataSize>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:Truncated>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         0
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:Truncated>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:Data>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         Return-Path: <karl@denninger.net>
Received: from [192.168.1.40] (localhost [127.0.0.1])
    by fs.denninger.net (8.14.9/8.14.8) with ESMTP id t4UIEg6o048912
    for <karl@denninger.net>; Sat, 30 May 2015 13:14:42 -0500 (CDT)
    (envelope-from karl@denninger.net)
Received: from [192.168.1.40] [192.168.1.40] (Via SSLv3 AES128-SHA) ;
    by Spamblock-sys (LOCAL/AUTH) Sat May 30 13:14:42 2015
Message-ID: <5569FDE9.8080606@denninger.net>
Date: Sat, 30 May 2015 13:14:01 -0500
From: Karl Denninger <karl@denninger.net>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: karl@denninger.net
Subject: Signed
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms030402070400050107000401"

This is a cryptographically signed message in MIME format.

--------------ms030402070400050107000401
Content-Type: multipart/alternative;
 boundary="------------010104050402010500090102"

This is a multi-part message in MIME format.
--------------010104050402010500090102
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

This is a signed test
--=20
Karl Denninger
karl@denninger.net <mailto:karl@denninger.net>
/The Market Ticker/

--------------010104050402010500090102
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html>
  <head>

    <meta http-equiv=3D"content-type" content=3D"text/html; charset=3Dutf=
-8">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    This is a signed test<br>
    <div class=3D"moz-signature">-- <br>
      Karl Denninger<br>
      <a href=3D"mailto:karl@denninger.net">karl@denninger.net</a><br>
      <i>The Market Ticker</i>
    </div>
  </body>
</html>

--------------010104050402010500090102--

--------------ms030402070400050107000401
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGXzCC
BlswggRDoAMCAQICASkwDQYJKoZIhvcNAQELBQAwgZAxCzAJBgNVBAYTAlVTMRAwDgYDVQQI
EwdGbG9yaWRhMRIwEAYDVQQHEwlOaWNldmlsbGUxGTAXBgNVBAoTEEN1ZGEgU3lzdGVtcyBM
TEMxHDAaBgNVBAMTE0N1ZGEgU3lzdGVtcyBMTEMgQ0ExIjAgBgkqhkiG9w0BCQEWE0N1ZGEg
U3lzdGVtcyBMTEMgQ0EwHhcNMTUwNDIxMDIyMTU5WhcNMjAwNDE5MDIyMTU5WjBaMQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHRmxvcmlkYTEZMBcGA1UEChMQQ3VkYSBTeXN0ZW1zIExMQzEe
MBwGA1UEAxMVS2FybCBEZW5uaW5nZXIgKE9DU1ApMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
MIICCgKCAgEAuYRY+EB2mGtZ3grlVO8TmnEvduVFA/IYXcCmNSOC1q+pTVjylsjcHKBcOPb9
TP1KLxdWP+Q1soSORGHlKw2/HcVzShDW5WPIKrvML+Ry0XvIvNBu9adTiCsA9nci4Cnf98XE
hVpenER0qbJkBUOGT1rP4iAcfjet0lEgzPEnm+pAxv6fYSNp1WqIY9u0b1pkQiaWrt8hgNOc
rJOiLbc8CeQ/DBP6rUiQjYNO9/aPNauEtHkNNfR9RgLSfGUdZuOCmJqnIla1HsrZhA5p69Bv
/e832BKiNPaH5wF6btAiPpTr2sRhwQO8/IIxcRX1Vxd1yZbjYtJGw+9lwEcWRYAmoxkzKLPi
S6Zo/6z5wgNpeK1H+zOioMoZIczgI8BlX1iHxqy/FAvm4PHPnC8s+BLnJLwr+jvMNHm82QwL
J9hC5Ho8AnFU6TkCuq+P2V8/clJVqnBuvTUKhYMGSm4mUp+lAgR4L+lwIEqSeWVsxirIcE7Z
OKkvI7k5x3WeE3+c6w74L6PfWVAd84xFlo9DKRdU9YbkFuFZPu21fi/LmE5brImB5P+jdqnK
eWnVwRq+RBFLy4kehCzMXooitAwgP8l/JJa9VDiSyd/PAHaVGiat2vCdDh4b8cFL7SV6jPA4
k0MgGUA/6Et7wDmhZmCigggr9K6VQCx8jpKB3x1NlNNiaWECAwEAAaOB9DCB8TA3BggrBgEF
BQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9jdWRhc3lzdGVtcy5uZXQ6ODg4ODAJBgNV
HRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDALBgNVHQ8EBAMCBeAwLAYJYIZIAYb4QgENBB8W
HU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBTFHJQt6cloXBdG1Pv1
o2YgH+7lWTAfBgNVHSMEGDAWgBQkcZudhX383d29sMqSlAOh+tNtNTAdBgNVHREEFjAUgRJr
YXJsQGRlbm5pbmdlci5uZXQwDQYJKoZIhvcNAQELBQADggIBAE9/dxi2YqjCYYhiybp4GKcm
7tBVa/GLW+qcHPcoT4dqmqghlLz8+iUH+HCJjRQATVGyMEnvISOKFVHC6aZIG+Sg7J8bfS4+
fjKDi9smRH2VPPx3bV8+yFYRNroMGHaPHZB/Xctmmvc+PZ9O2W7rExgrODtxIOB3Zs6wkYf+
ty+9r1KmTHlV+rRHI6timH1uiyFE3cPi1taAEBxf0851cJV8k40PGF8G48ewnq8SY9sCf5cv
liXbpdgU+I4ND5BuTjg63WS32zuhLd1VSuH3ZC/QbcncMX5W3oLXmcQP5/5uTiBJy74kdPtG
MSZ9rXwZPwNxP/8PXMSR7ViaFvjUkf4bJlyENFa2PGxLk4EUzOuO7t3brjMlQW1fuInfG+ko
3tVxko20Hp0tKGPe/9cOxBVBZeZH/VgpZn3cLculGzZjmdh2fqAQ6kv9Z9AVOG1+dq0c1zt8
2zm+Oi1pikGXkfz5UJq60psY6zbX25BuEZkthO/qiS4pxjxb7gQkS0rTEHTy+qv0l3QVL0wa
NAT74Zaj7l5DEW3qdQQ0dtVieyvptg9CxkfQJE3JyBMb0zBj9Qhc5/hbTfhSlHzZMEbUuIyx
h9vxqFAmGzfB1/WfOKkiNHChkpPW8ZeH9yPeDBKvrgZ96dREHFoVkDk7Vpw5lSM+tFOfdyLg
xxhb/RZVUDeUMYIE4zCCBN8CAQEwgZYwgZAxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9y
aWRhMRIwEAYDVQQHEwlOaWNldmlsbGUxGTAXBgNVBAoTEEN1ZGEgU3lzdGVtcyBMTEMxHDAa
BgNVBAMTE0N1ZGEgU3lzdGVtcyBMTEMgQ0ExIjAgBgkqhkiG9w0BCQEWE0N1ZGEgU3lzdGVt
cyBMTEMgQ0ECASkwCQYFKw4DAhoFAKCCAiEwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
BgkqhkiG9w0BCQUxDxcNMTUwNTMwMTgxNDAxWjAjBgkqhkiG9w0BCQQxFgQUiPyXdLIJ07Vq
IbJ0oR6jdcJH4SkwbAYJKoZIhvcNAQkPMV8wXTALBglghkgBZQMEASowCwYJYIZIAWUDBAEC
MAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzAN
BggqhkiG9w0DAgIBKDCBpwYJKwYBBAGCNxAEMYGZMIGWMIGQMQswCQYDVQQGEwJVUzEQMA4G
A1UECBMHRmxvcmlkYTESMBAGA1UEBxMJTmljZXZpbGxlMRkwFwYDVQQKExBDdWRhIFN5c3Rl
bXMgTExDMRwwGgYDVQQDExNDdWRhIFN5c3RlbXMgTExDIENBMSIwIAYJKoZIhvcNAQkBFhND
dWRhIFN5c3RlbXMgTExDIENBAgEpMIGpBgsqhkiG9w0BCRACCzGBmaCBljCBkDELMAkGA1UE
BhMCVVMxEDAOBgNVBAgTB0Zsb3JpZGExEjAQBgNVBAcTCU5pY2V2aWxsZTEZMBcGA1UEChMQ
Q3VkYSBTeXN0ZW1zIExMQzEcMBoGA1UEAxMTQ3VkYSBTeXN0ZW1zIExMQyBDQTEiMCAGCSqG
SIb3DQEJARYTQ3VkYSBTeXN0ZW1zIExMQyBDQQIBKTANBgkqhkiG9w0BAQEFAASCAgBmbsCp
3jfeeLj505CAXFlYEQVbfD+6W2joIcHnErwdKE5mk6dcDFpNrumZyP+VzxweK4xntZ7BUWDo
niY+zI0iTwgroHnzMbG7fZj4FZMILMqFdYnYZSBV51hbVAYWDCB5d/bKY0eRiHDCJEqLfwWw
1lxgemJGO/ZDF2fvV0mQ1gNter8KiZ7OdtYihJMkHEW/1JTy6FPm3M3RBoPnk90VJNLS683D
CAkFgLbGYBPEz5VJ4WI20r6wzqGyq4BVpzEmjkZ74Fng2U+HALmY7hTc2YJHm+r0/KD4xp8J
s53/L2J+ZpH4UdGq6maesy+far+uq38THRwCVpUtkiTPIOeXgPYucFG6inYQu1LSuMbhqilI
QHApHnXgnXKP6BrxR2r9rZtpisvhXPsgXJCHlJWYM42Vv0WB4MGeh/mM2pq7aK/NHmn01BZP
5g+RA3HVOhaHtdF5l7meKnoKzbc3cBmXRwogjgxT2uDmdX8SGVu3QNz73UX+vekhiSTvOv6k
R2Y/4doaOPYy6Xg5A51CbZKhH+QvNszpeOi3pDDok9zGeZRAOAYdjPQNfZsHwbOut9X6GzWF
TFX5fq/VY9wyL12eautxu+HPaQy/Im8AZW1y4o1hRyo9O4GrlYmkrvRrERK3vSe049YIT7bn
EB+ZsNRa0rpwcPng3Vd4uYxhQxlWuwAAAAAAAA==
--------------ms030402070400050107000401--

30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:Data>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </AirSyncBase:Body>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <AirSyncBase:Attachments>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:Attachment>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          <AirSyncBase:DisplayName>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          smime.p7s
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          </AirSyncBase:DisplayName>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          <AirSyncBase:FileReference>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          3cda8ffc:5552:1
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          </AirSyncBase:FileReference>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          <AirSyncBase:Method>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          1
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          </AirSyncBase:Method>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          <AirSyncBase:EstimatedDataSize>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          2944
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          </AirSyncBase:EstimatedDataSize>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          <AirSyncBase:IsInline>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          0
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O          </AirSyncBase:IsInline>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:Attachment>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </AirSyncBase:Attachments>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:ContentClass>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        urn:content-classes:message
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:ContentClass>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Flag>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         <POOMMAIL:FlagStatus>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         0
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O         </POOMMAIL:FlagStatus>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Flag>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        <AirSyncBase:NativeBodyType>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        1
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O        </AirSyncBase:NativeBodyType>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O       </Data>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O      </Add>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O     </Perform>
30/05/2015 13:14:46 [48680] [WBXML] [karl] [bb2be4bede] O    </Folder>
30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] FileStateMachine->SetState() written 2946 bytes on file: '/var/lib/z-push/e/d/bb2be4bede-4a57604e-2840-4c0c-9cb5-1b55864d7750-96'
30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] SyncCollections->SaveCollection(): Data of folder 'i/3cda8ffc' changed
30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] FileStateMachine->SetState() written 1394 bytes on file: '/var/lib/z-push/e/d/bb2be4bede-4a57604e-2840-4c0c-9cb5-1b55864d7750-fd'
30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] HandleSync(): partial sync for folder class 'Email' with id 'i/28a2740a'
30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] Sync->loadStates(): loading states for folder 'i/28a2740a'
30/05/2015 13:14:46 [48680] [DEBUG] [karl] [bb2be4bede] FileStateMachine->GetState() on file: '/var/lib/z-push/e/d/bb2be4bede-cbe5f922-5989-4448-844a-59c4046bab46-1'

Note that in this case the attachment IS sent (and thus it works; the signature verifies.)

The problem appears to be that in the case of the encrypted message, where the attachment is declared in the header rather than in the message body itself as a MIME subpart it never gets stuffed into the attachment array and thus isn't sent.

ghost commented 9 years ago

This is where I'm running into trouble -- around line 1275 you have:

if(isset($message->parts)) {
                $mparts = $message->parts;
                for ($i=0; $i<count($mparts); $i++) {
                    $part = $mparts[$i];

So I stick a debugging entry above that with:

Zlog::Write(LOGLEVEL_ERROR, sprintf("Parts: [%s]", isset($message->parts)));

And what I get in the log when I send an S-MIME encrypted message is:

30/05/2015 17:30:57 [ 6785] [ERROR] [karl] Parts: []

In other words the code doesn't appear to be looking at the message as having parts at all. I've yet to figure out exactly where message->parts gets set up.

Wherever that is it's broken for messages where there's one MIME part and it's declared in the headers -- which is true for all encrypted messages.

ghost commented 9 years ago

The problem appears to be in ~include/mimeDecode.php but I'm rather stuck in there.....

Or... maybe not. Looking at imap.php more-closely...

ghost commented 9 years ago

OK, so here's what I think I know at this point. (correct me if I'm off base please!)

  1. We need to push the message body (ONLY!) onto the attachment stack IF and only IF the message is encrypted.
  2. The current code does not do this.

Therefore, I think we want something like.... this right in front of the existing code:

            // KD 2015-05-31
            // If encrypted then add the message body as an attachment
            if (is_encrypted($message)) {
                Zlog::Write(LOGLEVEL_ERROR, "Pushing Encrypted Attachment");
                if (!isset($output->asattachments) || !is_array($output->asattac
hments))
                    $output->asattachments = array();
                }
                $attachment = new SyncBaseAttachment();
                $attachment->method = 1; //Normal attachment

....

                array_push($output->attachments, $attachment);
                Zlog::Write(LOGLEVEL_ERROR, "DONE Encrypted Attachment");
            }

            // Attachments are also needed for MIME messages

Where the "is_encrypted" test is in the mime_encode file much as is the "is_smime" test, but only triggers for encrypted content. That part I understand and I'm getting it in the log.

What I don't understand is what has to be pushed into the array and, most-important, how you get the CONTENT of the message body (and only the body -- not the headers) along with the encoding set before the array is pushed.

From poking around message->body appears to contain what I want (the body in binary format, converted from base64 when the message was read) but I do not understand how to load the proper parameters in the attachment structure.

Looking at the code under it where attachments are added I see where the size is picked up along with the content ID; disposition is always going to be an attachment so that will always be left alone.

But what I don't see -- anywhere -- is where the actual attachment data is loaded into the array -- or the encoding.

Help?

ghost commented 9 years ago

Back to mimeDecode.php; fixing this appears to have to happen in here since it appears that the attachment parts are all split out in that file. What I think needs to happen is if you detect a S/MIME (or PGP Encrypted) message in mimeDecode.php the code needs to stuff the body (which contains the base64 encoded encrypted message) into the attachment array as a "part." If i test for count($mparts) for example in GetMessage where the "//Attachments are also needed" on an SMIME encrypted message there is nothing there so this would strongly imply that mimeDecode is responsible.

I'm having some trouble following the codepaths taken and I've (thus far) had no luck attempting to coerce the "_decode" function in that file into stuffing a body part with type 'application/pkcs7-mime' into an attachment, but I'm reasonably sure that's what needs to happen since if I'm reading it correctly once that call return imap.php is working with the message structure that mimeDecode set up -- and thus the fix has to be made in there.

ghost commented 9 years ago

Ok, so I tried changing the code so that if it detects an encrypted message it outputs ONLY the encrypted base64 in the message body -- the headers still go through of course in the header stanzas.

I get this:

01/06/2015 21:27:10 [37519] [DEBUG] [karl] [bb2be4bede] BackendIMAP->StatMessage('40d3a6b9','5784')
01/06/2015 21:27:10 [37519] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('40d3a6b9') = INBOX
01/06/2015 21:27:10 [37519] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage('40d3a6b9','5784')
01/06/2015 21:27:10 [37519] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('40d3a6b9') = INBOX
01/06/2015 21:27:10 [37519] [DEBUG] [karl] [bb2be4bede] BackendIMAP->StatMessage('40d3a6b9','5784')
01/06/2015 21:27:10 [37519] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('40d3a6b9') = INBOX
01/06/2015 21:27:10 [37519] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors
01/06/2015 21:27:10 [37519] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage - getBodyPreferenceBestMatch: 4
01/06/2015 21:27:10 [37519] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage - Message is SMIME, forcing to work with MIME
01/06/2015 21:27:10 [37519] [ WARN] [karl] [bb2be4bede] /usr/share/z-push/backend/imap/imap.php:1297 Trying to get property of non-object (8)
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O     <Perform>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O      <Add>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O       <ServerEntryId>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O       5784
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O       </ServerEntryId>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O       <Data>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:To>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        "Karl Denninger" <karl@denninger.net>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:To>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:From>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        Karl Denninger <karl@denninger.net>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:From>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Subject>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        More Testing
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Subject>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:ThreadTopic>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        More Testing
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:ThreadTopic>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:DateReceived>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        2015-06-02T02:25:59.000Z
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:DateReceived>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:DisplayTo>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        "Karl Denninger"
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:DisplayTo>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Importance>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        1
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Importance>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Read>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        0
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Read>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:MessageClass>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        IPM.Note.SMIME.MultipartSigned
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:MessageClass>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:InternetCPID>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        65001
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:InternetCPID>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <AirSyncBase:Body>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:Type>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         4
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:Type>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:EstimatedDataSize>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         8292
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:EstimatedDataSize>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:Truncated>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         0
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:Truncated>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:Data>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         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
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:Data>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </AirSyncBase:Body>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:ContentClass>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        urn:content-classes:message
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:ContentClass>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Flag>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         <POOMMAIL:FlagStatus>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         0
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O         </POOMMAIL:FlagStatus>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Flag>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        <AirSyncBase:NativeBodyType>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        1
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O        </AirSyncBase:NativeBodyType>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O       </Data>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O      </Add>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O      <Remove>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O       <ServerEntryId>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O       5783
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O       </ServerEntryId>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O      </Remove>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O      <Remove>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O       <ServerEntryId>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O       5782
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O       </ServerEntryId>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O      </Remove>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O     </Perform>
01/06/2015 21:27:10 [37519] [WBXML] [karl] [bb2be4bede] O    </Folder>
01/06/2015 21:27:10 [37519] [DEBUG] [karl] [bb2be4bede] FileStateMachine->SetState() written 2475 bytes on file: '/var/lib/z-push/e/d/bb2be4bede-39850e9a-b979-4c79-83fc-a0bf3ff14095-101'

But the phone thinks it's signed, not an encrypted message.

So it looks like ActiveSync really does want the message BODY for an encrypted message to be delivered as an attachment....which so far, I haven't figured out how to get the code to do.

ghost commented 9 years ago

I am making excellent progress..... very, very close -- I have the software now stuffing the attachment and the XML is properly formatted for the phone to recognize what it is and what it has to do, but when the phone requests the attachment the system can't find it.

One more little "gotcha" and I think I'll have this fixed.

ghost commented 9 years ago

Ok, this is what I've done thus far.

In include/mimeDecode.php I have added the following stanza in front of the "default:" case:

                case 'application/x-pkcs7-mime':  
                case 'application/pkcs7-mime':
                    if(!isset($content_transfer_encoding['value']))
                        $content_transfer_encoding['value'] = 'base64';
                    // if there is no explicit charset, then don't try to conver
t to default charset, and make sure that only text mimetypes are converted
                    $charset = (isset($return->ctype_parameters['charset']) && (
(isset($return->ctype_primary) && $return->ctype_primary == 'text') || !isset($r
eturn->ctype_primary)) )? $return->ctype_parameters['charset']: '';
                    $part->body = ($this->_decode_bodies ? $this->_decodeBody($b
ody, $content_transfer_encoding['value'], $charset) : $body);
                        $ctype = explode('/', strtolower($content_type['value'])
);
                        $part->ctype_parameters['name'] = 'smime.p7m';
                        $part->ctype_primary = $ctype[0];
                        $part->ctype_secondary = $ctype[1];
                        $return->parts[] = $part;
                                // Fall through intentionally

This successfully stuffs the message body-cum-encrypted transmission into the attachment array and returns the proper name for it. It also appears that the file reference is looking it up correctly because when referenced the length is right, which the code shouldn't have any (cached) means to obtain. But the attachment fails to download; this is what I get:

04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] I  <ItemOperations:ItemOperations>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] I   <ItemOperations:Fetch>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] I    <ItemOperations:Store>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] I     Mailbox
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] I    </ItemOperations:Store>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] I    <AirSyncBase:FileReference>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] I     40d3a6b9:6061:0
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] I    </AirSyncBase:FileReference>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] I   </ItemOperations:Fetch>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] I  </ItemOperations:ItemOperations>
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] WBXMLEncoder->startWBXML() type: vnd.ms-sync.multipart
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O  <ItemOperations:ItemOperations>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O   <ItemOperations:Status>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O   1
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O   </ItemOperations:Status>
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] Combined->GetAttachmentData('40d3a6b9:6061:0')
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetAttachmentData('40d3a6b9:6061:0')
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] FileStateMachine->GetState() on file: '/var/lib/z-push/e/d/bb2be4bede-bs-1433166567'
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('40d3a6b9') = INBOX
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors
04/06/2015 08:19:43 [71589] [ WARN] [karl] [bb2be4bede] /usr/share/z-push/include/mimeDecode.php:374 Creating default object from empty value (2)
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors
04/06/2015 08:19:43 [71589] [ERROR] [karl] [bb2be4bede] Attachment for message has 1 MIME parts
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] StringStreamWrapper::Open(): len = 6217
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] StringStreamWrapper::Open(): Using tmpfile()
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetAttachmentData contenttype application/pkcs7-mime
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O   <ItemOperations:Response>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O    <ItemOperations:Fetch>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O     <ItemOperations:Status>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O     1
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O     </ItemOperations:Status>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O     <AirSyncBase:FileReference>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O     40d3a6b9:6061:0
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O     </AirSyncBase:FileReference>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O     <ItemOperations:Properties>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O      <AirSyncBase:ContentType>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O      application/pkcs7-mime
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O      </AirSyncBase:ContentType>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O      <ItemOperations:Part>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O      1
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O      </ItemOperations:Part>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O     </ItemOperations:Properties>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O    </ItemOperations:Fetch>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O   </ItemOperations:Response>
04/06/2015 08:19:43 [71589] [WBXML] [karl] [bb2be4bede] O  </ItemOperations:ItemOperations>
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] WBXMLEncoder->endTag() WBXML output completed
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] WBXMLEncoder->processMultipart() with 1 parts to be processed
04/06/2015 08:19:43 [71589] [DEBUG] [karl] [bb2be4bede] Combined->Logoff()

So it looks to me like the attachment code is picking up the proper piece, it knows the length (meaning it successfully read it) and it picked up the content type correctly as well. It also wrote it to the temp file and presented back the stream ready to go.

But it never emits the data according to the WebXML.... which implies it's missing something needed to do so. Specifically, the log entries for HandleGetAttachment in lib/getattachment.php are not present in the logs, so that strongly implies that the "Handle" function is not being called at all (I have stuck a debug print in for the null name case that causes it to do nothing, which is not firing and shouldn't as the name of the file is there.)

So.....why, having looked up the data successfully, having decoded it and having the file handle open with the data in it.... why isn't HandleGetAttachment not being called?

When I stick a debugging check in lib/core/streamer.php to log the base64 encoding for anything that has STREAMER_TYPE_STREAM set it does not fire, which implies that despite getting the correct attachment and decoding it the setup is incomplete. That doesn't make sense and is where I'm stuck right now.

ghost commented 9 years ago

Ok, now I'm truly lost.

I now have the system returning the data on the attachment...... but obviously something is missing as the phone still says it can't download it. I suspect it's the name (smime.p7m) but really, to figure this out I probably need a WEBXML trace of a working transaction with an EAS server. Any ideas on how to get one? (ignore all the debugging stuff; there's a lot of it in there!)

To get here I had to extend the streamer's declaration (add another subtype for non-multipart attachments) along with a number of other things -- but this certainly does appear to work in that the attachment is delivered to the client -- it just refuses to eat it.

The data stream itself is correct; I verified it against the original message body.

04/06/2015 12:53:15 [69233] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('a8c54b41') = INBOX
04/06/2015 12:53:15 [69233] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors
04/06/2015 12:53:15 [69233] [ WARN] [karl] [bb2be4bede] /usr/share/z-push/include/mimeDecode.php:374 Creating default object from empty value (2)
04/06/2015 12:53:15 [69233] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors
04/06/2015 12:53:15 [69233] [ERROR] [karl] [bb2be4bede] Attachment for message has 1 MIME parts
04/06/2015 12:53:15 [69233] [ERROR] [karl] [bb2be4bede] GOT CHECK 1
04/06/2015 12:53:15 [69233] [ERROR] [karl] [bb2be4bede] GOT CHECK 2
04/06/2015 12:53:15 [69233] [ERROR] [karl] [bb2be4bede] GOT CHECK 2.5
04/06/2015 12:53:15 [69233] [ERROR] [karl] [bb2be4bede] GOT CHECK 2.55
04/06/2015 12:53:15 [69233] [ERROR] [karl] [bb2be4bede] GOT CHECK 3
04/06/2015 12:53:15 [69233] [DEBUG] [karl] [bb2be4bede] StringStreamWrapper::Open(): len = 6217
04/06/2015 12:53:15 [69233] [DEBUG] [karl] [bb2be4bede] StringStreamWrapper::Open(): Using tmpfile()
04/06/2015 12:53:15 [69233] [ERROR] [karl] [bb2be4bede] GOT CHECK 4
04/06/2015 12:53:15 [69233] [ERROR] [karl] [bb2be4bede] GOT CHECK 5
04/06/2015 12:53:15 [69233] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetAttachmentData contenttype application/pkcs7-mime
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O   <ItemOperations:Response>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O    <ItemOperations:Fetch>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O     <ItemOperations:Status>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O     1
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O     </ItemOperations:Status>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O     <AirSyncBase:FileReference>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O     a8c54b41:6095:0
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O     </AirSyncBase:FileReference>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O     <ItemOperations:Properties>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O      <AirSyncBase:ContentType>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O      application/pkcs7-mime
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O      </AirSyncBase:ContentType>
04/06/2015 12:53:15 [69233] [DEBUG] [karl] [bb2be4bede] STREAMER_TYPE set to STREAM; base64 encode
04/06/2015 12:53:15 [69233] [DEBUG] [karl] [bb2be4bede] Utils::EncodeBase64(): is_resource
04/06/2015 12:53:15 [69233] [DEBUG] [karl] [bb2be4bede] Utils::EncodeBase64(): STDIO
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O      <ItemOperations:Data>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O      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
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O      </ItemOperations:Data>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O     </ItemOperations:Properties>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O    </ItemOperations:Fetch>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O   </ItemOperations:Response>
04/06/2015 12:53:15 [69233] [WBXML] [karl] [bb2be4bede] O  </ItemOperations:ItemOperations>
04/06/2015 12:53:15 [69233] [DEBUG] [karl] [bb2be4bede] WBXMLEncoder->endTag() WBXML output completed
ghost commented 9 years ago

Here is a complete exchange of a S/MIME encrypted message. Everything transfers but the phone says it couldn't download the message......

From what I can determine on the MSDN pages this is correct. The message body is dropped as the protocol says it should be for an encrypted message but the phone doesn't like; it claims it can't download the data to read the encrypted part. It does recognize that the message is an encrypted S/MIME message. I have validated the encrypted base64 component; it matches exactly what the server emits, and I can read the message on Thunderbird so I know it's good.

(I also tried not truncating the body to zero as doing so appears to produce a questionable WEBXML structure. Neither works.)

I think I'm stuck unless I can get a protocol trace from an Exchange server that functions properly.....

04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage('a8c54b41','6103')
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('a8c54b41') = INBOX
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->StatMessage('a8c54b41','6103')
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('a8c54b41') = INBOX
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors
04/06/2015 13:49:34 [84012] [ WARN] [karl] [bb2be4bede] /usr/share/z-push/include/mimeDecode.php:374 Creating default object from empty value (2)
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage - getBodyPreferenceBestMatch: 4
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessage - Message is SMIME, forcing to work with MIME
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] Message has 1 MIME parts
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] MIME primary: [application], secondary [pkcs7-mime]
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] Attachment Size: [6217]
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O     <Perform>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O      <Add>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O       <ServerEntryId>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O       6103
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O       </ServerEntryId>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O       <Data>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:To>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        "Karl Denninger" <karl@denninger.net>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:To>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:From>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        Karl Denninger <karl@denninger.net>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:From>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Subject>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        Test encrypted
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Subject>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:ThreadTopic>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        Test encrypted
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:ThreadTopic>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:DateReceived>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        2015-06-04T18:48:39.000Z
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:DateReceived>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:DisplayTo>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        "Karl Denninger"
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:DisplayTo>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Importance>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        1
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Importance>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Read>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        0
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Read>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:MessageClass>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        IPM.Note.SMIME
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:MessageClass>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:InternetCPID>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        65001
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:InternetCPID>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <AirSyncBase:Body>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:Type>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         4
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:Type>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:EstimatedDataSize>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         0
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:EstimatedDataSize>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:Truncated>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         0
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:Truncated>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </AirSyncBase:Body>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <AirSyncBase:Attachments>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         <AirSyncBase:Attachment>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          <AirSyncBase:DisplayName>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          smime.p7m
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          </AirSyncBase:DisplayName>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          <AirSyncBase:FileReference>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          a8c54b41:6103:0
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          </AirSyncBase:FileReference>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          <AirSyncBase:Method>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          1
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          </AirSyncBase:Method>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          <AirSyncBase:EstimatedDataSize>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          6217
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          </AirSyncBase:EstimatedDataSize>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          <AirSyncBase:IsInline>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          0
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O          </AirSyncBase:IsInline>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         </AirSyncBase:Attachment>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </AirSyncBase:Attachments>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:ContentClass>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        urn:content-classes:message
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:ContentClass>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <POOMMAIL:Flag>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         <POOMMAIL:FlagStatus>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         0
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O         </POOMMAIL:FlagStatus>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </POOMMAIL:Flag>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        <AirSyncBase:NativeBodyType>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        1
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O        </AirSyncBase:NativeBodyType>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O       </Data>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O      </Add>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O     </Perform>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O    </Folder>
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] FileStateMachine->SetState() written 3138 bytes on file: '/var/lib/z-push/e/d/bb2be4bede-03a9cbdb-2dba-4a7b-843c-e2842bbec78b-39'
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] SyncCollections->SaveCollection(): Data of folder 'a8c54b41' changed
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] FileStateMachine->SetState() written 1391 bytes on file: '/var/lib/z-push/e/d/bb2be4bede-03a9cbdb-2dba-4a7b-843c-e2842bbec78b-fd'
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] HandleSync(): partial sync for folder class 'Email' with id 'e5fb03bc'
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] ZPush::GetAdditionalSyncFolderStore('e5fb03bc'): 'false'
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] ExportChangesDiff->InitializeExporter(): Initializing message diff engine. '104' messages in state
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessageList('e5fb03bc','0')
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('e5fb03bc') = Sent-Exchange
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessageList(): searching with sequence '1:*'
04/06/2015 13:49:34 [84012] [ INFO] [karl] [bb2be4bede] ExportChangesDiff->InitializeExporter(): Found 0 changes
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] No changes found for heartbeat folder. Omitting empty output.
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] HandleSync(): partial sync for folder class 'Email' with id 'c1981b38'
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] Sync->loadStates(): loading states for folder 'c1981b38'
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] FileStateMachine->GetState() on file: '/var/lib/z-push/e/d/bb2be4bede-99350686-348c-4414-bf4a-07fdf291b6c3-4'
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] ZPush::GetAdditionalSyncFolderStore('c1981b38'): 'false'
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] ZPush::GetAdditionalSyncFolderStore('c1981b38'): 'false'
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] ExportChangesDiff->InitializeExporter(): Initializing message diff engine. '0' messages in state
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessageList('c1981b38','0')
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('c1981b38') = Drafts
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetMessageList(): searching with sequence '1:*'
04/06/2015 13:49:34 [84012] [ INFO] [karl] [bb2be4bede] ExportChangesDiff->InitializeExporter(): Found 0 changes
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] No changes found for heartbeat folder. Omitting empty output.
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O   </Folders>
04/06/2015 13:49:34 [84012] [WBXML] [karl] [bb2be4bede] O  </Synchronize>
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] WBXMLEncoder->endTag() WBXML output completed
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] Flushing 408, headers already sent ? false
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->Logoff(): IMAP said: Sequence out of range
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->Logoff(): IMAP said: Sequence out of range
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->Logoff(): IMAP connection closed
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] FileStateMachine->SetState() written 12552 bytes on file: '/var/lib/z-push/e/d/bb2be4bede-bs-1433437340'
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] LoopDetection->ProcessLoopDetectionTerminate()
04/06/2015 13:49:34 [84012] [DEBUG] [karl] [bb2be4bede] -------- End - max mem: 6065856/6553600 - time: 28.6330 - code: 200
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] -------- Start
04/06/2015 13:49:35 [84012] [ INFO] [karl] [bb2be4bede] Version='SVN-trunk-r1938' method='POST' from='192.168.1.21' cmd='ItemOperations' getUser='karl' devId='bb2be4bede' devType='BlackBerry'
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] Used timezone 'America/Chicago'
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] Request::ProcessHeaders() ASVersion: 14.0
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] Including backend file: '/usr/share/z-push/backend/imap/imap.php'
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] ZPush::CommandNeedsProvisioning(19): true
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] FileStateMachine->GetState() on file: '/var/lib/z-push/e/d/bb2be4bede-devicedata'
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] ASDevice data loaded for user: 'karl'
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] TopCollector(): Initialized mutexid Resource id #40 and memid Resource id #41.
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] LoopDetection(): Initialized mutexid Resource id #44 and memid Resource id #45.
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] ZPush::HierarchyCommand(19): false
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] DeviceManager->ProvisioningRequired('244284798') saved device key '244284798': false
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] ZPush::CommandNeedsAuthentication(19): true
04/06/2015 13:49:35 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->Logon(): Excluding Folders (.imap)
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->Logon(): User 'karl' is authenticated on '{localhost:143/imap/novalidate-cert/tls/norsh}'
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] ZPush::CommandNeedsPlainInput(19): false
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] I  <ItemOperations:ItemOperations>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] I   <ItemOperations:Fetch>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] I    <ItemOperations:Store>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] I     Mailbox
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] I    </ItemOperations:Store>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] I    <AirSyncBase:FileReference>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] I     a8c54b41:6103:0
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] I    </AirSyncBase:FileReference>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] I   </ItemOperations:Fetch>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] I  </ItemOperations:ItemOperations>
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] WBXMLEncoder->startWBXML() type: vnd.ms-sync.multipart
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O  <ItemOperations:ItemOperations>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O   <ItemOperations:Status>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O   1
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O   </ItemOperations:Status>
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetAttachmentData('a8c54b41:6103:0')
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] FileStateMachine->GetState() on file: '/var/lib/z-push/e/d/bb2be4bede-bs-1433437340'
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->getImapIdFromFolderId('a8c54b41') = INBOX
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors
04/06/2015 13:49:36 [84012] [ WARN] [karl] [bb2be4bede] /usr/share/z-push/include/mimeDecode.php:374 Creating default object from empty value (2)
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] Mail_mimeDecode()::_autoconvert_encoding(): Text cannot be correctly decoded, using original text. This will be ok if the part is not text, otherwise expect encoding errors
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] Attachment for message has 1 MIME parts
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] StringStreamWrapper::Open(): len = 6217
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] StringStreamWrapper::Open(): Using tmpfile()
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->GetAttachmentData contenttype application/pkcs7-mime
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O   <ItemOperations:Response>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O    <ItemOperations:Fetch>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O     <ItemOperations:Status>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O     1
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O     </ItemOperations:Status>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O     <AirSyncBase:FileReference>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O     a8c54b41:6103:0
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O     </AirSyncBase:FileReference>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O     <ItemOperations:Properties>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O      <AirSyncBase:ContentType>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O      application/pkcs7-mime
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O      </AirSyncBase:ContentType>
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] STREAMER_TYPE set to STREAM; base64 encode
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] Utils::EncodeBase64(): is_resource
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] Utils::EncodeBase64(): STDIO
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O      <ItemOperations:Data>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O      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
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O      </ItemOperations:Data>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O     </ItemOperations:Properties>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O    </ItemOperations:Fetch>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O   </ItemOperations:Response>
04/06/2015 13:49:36 [84012] [WBXML] [karl] [bb2be4bede] O  </ItemOperations:ItemOperations>
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] WBXMLEncoder->endTag() WBXML output completed
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] WBXMLEncoder->processMultipart() with 0 parts to be processed
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] BackendIMAP->Logoff(): IMAP connection closed
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] FileStateMachine->SetState() written 12552 bytes on file: '/var/lib/z-push/e/d/bb2be4bede-bs-1433437340'
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] LoopDetection->ProcessLoopDetectionTerminate()
04/06/2015 13:49:36 [84012] [DEBUG] [karl] [bb2be4bede] -------- End - max mem: 4661904/4980736 - time: 0.2239 - code: 200
ghost commented 9 years ago

The problem I have now may be related to multipart responses (in other words, my client wants 'em and won't "eat" one that's not)..... and if so that appears to be a base problem in the z-push code as from what I can determine they don't work right......

ghost commented 9 years ago

Ok, my client is definitely asking for multipart:

04/06/2015 21:44:06 [20298] [DEBUG] [karl] [bb2be4bede] -------- Start
04/06/2015 21:44:06 [20298] [ INFO] [karl] [bb2be4bede] Version='SVN-trunk-r1938
' method='POST' from='192.168.1.21' cmd='ItemOperations' getUser='karl' devId='b
b2be4bede' devType='BlackBerry'
04/06/2015 21:44:06 [20298] [DEBUG] [karl] [bb2be4bede] Used timezone 'America/C
hicago'
04/06/2015 21:44:06 [20298] [DEBUG] [karl] [bb2be4bede] AcceptMultiPart is Enabl
ed
04/06/2015 21:44:06 [20298] [DEBUG] [karl] [bb2be4bede] Request::ProcessHeaders(
) ASVersion: 14.0

And.... that appears to be broken. It appears that if the client asks for it you can't send back a non-multipart response (in other words it's not a request, it's a requirement although the wording is a bit ambiguous in https://msdn.microsoft.com/en-us/library/hh475669%28v=exchg.80%29.aspx), as from all indications the way I'm sending the data inline is correct but the phone will not accept it.

The multipart code does execute, but it's not giving the device what it wants. I'll see if I can isolate this sufficiently to trace it with a protocol analyzer and figure out what's up.

fmbiete commented 9 years ago

@tickerguy A possibility could be recreate the message if it's smime and it's not multipart. I have checked the raw message (http://tools.ietf.org/tools/msglint/) and it's valid, so maybe blackberry doesn't understand it. Have you tried opening it using IMAP?

ghost commented 9 years ago

The message is valid; I can read it using Thunderbird over IMAP.

The problem appears to be that:

  1. BlackBerry devices ask for the Multipart response format (which is a binary response format, not Base64) for all GetAttachment "file" requests. If you feed them a non-multipart response despite them asking for a multipart one they claim they can't open it.

and

  1. The multipart response format appears to be broken.

This breaks other attachments as well on these devices -- not just SMIME. Oddly enough it doesn't break all of them, however.

ghost commented 9 years ago

I think I have a solid trace on what's going on....

10:49:05.535141 IP wsip-70-169-168-7.pn.at.cox.net.http > D11.Denninger.Net.3797
2: Flags [.], seq 1:1449, ack 521, win 1040, options [nop,nop,TS val 894261086 e
cr 4064000270], length 1448
        0x0000:  4500 05dc fc87 4000 4006 8826 46a9 a807  E.....@.@..&F...
        0x0010:  c0a8 0115 0050 9454 8008 7a78 c1f7 9e4c  .....P.T..zx...L
        0x0020:  8010 0410 b63c 0000 0101 080a 354d 575e  .....<......5MW^
        0x0030:  f23b b90e 4854 5450 2f31 2e31 2032 3030  .;..HTTP/1.1.200
        0x0040:  204f 4b0d 0a44 6174 653a 204d 6f6e 2c20  .OK..Date:.Mon,.
        0x0050:  3038 204a 756e 2032 3031 3520 3135 3a34  08.Jun.2015.15:4
        0x0060:  393a 3034 2047 4d54 0d0a 5365 7276 6572  9:04.GMT..Server
        0x0070:  3a20 4170 6163 6865 2f32 2e34 2e31 3220  :.Apache/2.4.12.
        0x0080:  2846 7265 6542 5344 2920 4f70 656e 5353  (FreeBSD).OpenSS
        0x0090:  4c2f 312e 302e 3261 2050 4850 2f35 2e34  L/1.0.2a.PHP/5.4
        0x00a0:  2e31 390d 0a58 2d50 6f77 6572 6564 2d42  .19..X-Powered-B
        0x00b0:  793a 2050 4850 2f35 2e34 2e31 390d 0a4d  y:.PHP/5.4.19..M
        0x00c0:  532d 5365 7276 6572 2d41 6374 6976 6553  S-Server-ActiveS
        0x00d0:  796e 633a 2031 342e 300d 0a43 6f6e 7465  ync:.14.0..Conte
        0x00e0:  6e74 2d4c 656e 6774 683a 2036 3430 310d  nt-Length:.6401.
        0x00f0:  0a4b 6565 702d 416c 6976 653a 2074 696d  .Keep-Alive:.tim
        0x0100:  656f 7574 3d35 2c20 6d61 783d 3130 300d  eout=5,.max=100.
        0x0110:  0a43 6f6e 6e65 6374 696f 6e3a 204b 6565  .Connection:.Kee
        0x0120:  702d 416c 6976 650d 0a43 6f6e 7465 6e74  p-Alive..Content
        0x0130:  2d54 7970 653a 2061 7070 6c69 6361 7469  -Type:.applicati
        0x0140:  6f6e 2f76 6e64 2e6d 732d 7379 6e63 2e6d  on/vnd.ms-sync.m
        0x0150:  756c 7469 7061 7274 0d0a 0d0a 0301 6a00  ultipart......j.
        0x0160:  0014 454d 0331 0001 4e46 4d03 3100 0100  ..EM.1..NFM.1...
        0x0170:  1151 0339 6530 3439 3834 373a 3634 3632  .Q.9e049847:6462
        0x0180:  3a30 0001 0014 4b00 1157 0361 7070 6c69  :0....K..W.appli
        0x0190:  6361 7469 6f6e 2f70 6b63 7337 2d6d 696d  cation/pkcs7-mim
        0x01a0:  6500 0100 1451 0331 0001 0101 0101 0200  e....Q.1........
        0x01b0:  0000 1400 0000 5200 0000 6600 0000 4918  ......R...f...I.

Reference: https://msdn.microsoft.com/en-us/library/jj663353(v=exchg.80).aspx

The salient part of the transmission starts here:

        0x0130:  2d54 7970 653a 2061 7070 6c69 6361 7469  -Type:.applicati
        0x0140:  6f6e 2f76 6e64 2e6d 732d 7379 6e63 2e6d  on/vnd.ms-sync.m
        0x0150:  756c 7469 7061 7274 0d0a 0d0a 0301 6a00  ultipart......j.
        0x0160:  0014 454d 0331 0001 4e46 4d03 3100 0100  ..EM.1..NFM.1...
        0x0170:  1151 0339 6530 3439 3834 373a 3634 3632  .Q.9e049847:6462

Note that right after the "multipart" header there are two CR/LFs (correct; that's the end of the HTTP response header block) and THEN we are supposed to have the multipart header with the parts count and a metadata block (8 bytes) for each piece, all in little-endian binary. But.... it's missing.

The 03016A00 is the start of the actual WebXML response and facially looks valid.

But -- missing the header the device thinks there are three parts coming (rather than one that is actually in transit) and a large (0x6A01 length) response for the first one (followed by two more alleged piece lengths!) which is much longer than what is actually delivered. Thus the device complains that it cannot read the attachment....

The offending code is in lib/wbxml/wbxmlencoder.php; it is facially incorrect for a multipart response as it immediately pushes the header on the output stack and yet that's always wrong since you need a parts count and then 8-byte (little-endian) offset and length for each part first, and in order to encode that you need the length of each of the attachments which that function doesn't get passed.

The latest grab I can find on Zarafa's "public" code set has a mod date from 2013; it is newer than what you have included here but the StartWBXML function is identical to what's in this codebase (and has the same flaw in that it outputs the same tags.) In short this code will not work for any client that wants a multipart-formatted response.

fmbiete commented 9 years ago

How about adding the missing bytes in the GetMessage function of BackendIMAP, I think that's what the Zarafa backend does.

You can find the last Zarafa Z-Push code in here: http://svn.z-push.net/listing.php?repname=Z-Push I sync the code from time to time, to include their changes in here.

ghost commented 9 years ago

Well right now if you look at that example there's two separate problems; the first is the missing header, but the second is that the WebXML is supposed to be sent down first, and it isn't -- all you get is the binary data itself (the actual attachment.)

In other words there should always be two parts to this return, the first being the WebXML and then the binary data immediately following it.

So the return should be something like this:

<HTML HEADERS>

02<4-byte-firstptoffset><4byte-firstlen><4-byte-secondoffset><4-bytesecondlen>
<WBXML header (the 03016A00, which is encoded type and character set data)
WBXML return (as shown in the debug log) as first part, with null characters instead of line breaks>
<the binary attachment data>

Right now what I get is the 03016A00 and then the binary attachment data; both the header and the WBXML are missing. But -- processMultipart() is being called as the debug data for it is in the log, and both the length and part encoding IS in there. However -- the header component (the WBXML stanzas) are missing.

I'm looking into why but just adding the missing bytes won't do it since the entire descriptive part isn't being queued either. I don't see anything in the Zarafa backend that appears to be pushing that structure into the outgoing stream.

ghost commented 9 years ago

Son of a.... the encoded WBXML is in there; I manually ripped apart the packets, and the file that is attached is second, right behind the encoded WBXML. The problem is that the header is missing and to compute it I need the offsets, which means I need the length of the WBXML that is in the buffer. This also blows up attachments (not just SMIME) if the client requests multipart (and all BB10 devices do.)

So what we actually have is this:

<HTML HEADERS From Web Server>
03016A00 (According to Microsoft's docs this is only for ms-sync.wbxml but is NOT cased in the code)
<WBXML encoded content>
<Attachment binary content>

This appears to be wrong:

public function startWBXML() {
        if ($this->multipart) {
            header("Content-Type: application/vnd.ms-sync.multipart");
            ZLog::Write(LOGLEVEL_DEBUG, "WBXMLEncoder->startWBXML() type: vnd.ms
-sync.multipart");   
        }
        else {
            header("Content-Type: application/vnd.ms-sync.wbxml");
            ZLog::Write(LOGLEVEL_DEBUG, "WBXMLEncoder->startWBXML() type: vnd.ms
-sync.wbxml");
        }
        $this->outByte(0x03); // WBXML 1.3
        $this->outMBUInt(0x01); // Public ID 1
        $this->outMBUInt(106); // UTF-8
        $this->outMBUInt(0x00); // string table length (0)
    }  

The parenthesis should be under the above four lines, so as to only emit it for wbxml replies and not for multipart ones.

Then I need to find where the actual output takes place (as far as I can tell it's only when "End" is called) and hopefully I can determine the length of the pieces in the stack.

It appears at first blush, that this IS being emitted by the code in processMultiPart() -- but it is not, or at least if it is it's not going out to the client as I can't find it! But there definitely IS a set of statements that generate it, and they look correct too.

ghost commented 9 years ago

Errrrrr...... Crap.

I found the header -- the WBXML portion is emitted first!

Here's the salient piece:

        0x00e0:  6e74 2d4c 656e 6774 683a 2036 3430 310d  nt-Length:.6401.
        0x00f0:  0a4b 6565 702d 416c 6976 653a 2074 696d  .Keep-Alive:.tim
        0x0100:  656f 7574 3d35 2c20 6d61 783d 3130 300d  eout=5,.max=100.
        0x0110:  0a43 6f6e 6e65 6374 696f 6e3a 204b 6565  .Connection:.Kee
        0x0120:  702d 416c 6976 650d 0a43 6f6e 7465 6e74  p-Alive..Content
        0x0130:  2d54 7970 653a 2061 7070 6c69 6361 7469  -Type:.applicati
        0x0140:  6f6e 2f76 6e64 2e6d 732d 7379 6e63 2e6d  on/vnd.ms-sync.m
        0x0150:  756c 7469 7061 7274 0d0a 0d0a 0014 454d  ultipart......EM

Ok, so after the 0d0a0d0a we have the WBXML stanza (I cased out the bogus WBXML flag.) But.... it's not supposed to be here. The first part of it is here and it continues...

        0x0160:  0331 0001 4e46 4d03 3100 0100 1151 0335  .1..NFM.1....Q.5
        0x0170:  3961 3433 6538 393a 3634 3938 3a30 0001  9a43e89:6498:0..
        0x0180:  0014 4b00 1157 0361 7070 6c69 6361 7469  ..K..W.applicati
        0x0190:  6f6e 2f70 6b63 7337 2d6d 696d 6500 0100  on/pkcs7-mime...
        0x01a0:  1451 0331 0001 0101 0101 0200 0000 1400  .Q.1............

This line starting with the 02000000 piece is the multipart header! It's valid, but in the wrong place; it's between the WBXML and the binary component, instead of being in front. I found it by emitting a series of "Xs" between the header and the buffer (which you can see below); with that it was easy to locate it.

        0x01b0:  0000 4e00 0000 6200 0000 4918 0000 5858  ..N...b...I...XX
        0x01c0:  5858 5858 5858 0014 454d 0331 0001 4e46  XXXXXX..EM.1..NF
        0x01d0:  4d03 3100 0100 1151 0335 3961 3433 6538  M.1....Q.59a43e8
        0x01e0:  393a 3634 3938 3a30 0001 0014 4b00 1157  9:6498:0....K..W
        0x01f0:  0361 7070 6c69 6361 7469 6f6e 2f70 6b63  .application/pkc
        0x0200:  7337 2d6d 696d 6500 0100 1451 0331 0001  s7-mime....Q.1..
        0x0210:  0101 0101 3080 0609 2a86 4886 f70d 0107  ....0...*.H.....

I decoded the encrypted piece from its base64 representation in the source IMAP email and it's there and valid just like it should be.

Now here's the interesting thing -- this is what emits that:

        fwrite($this->_out, $data);
        fwrite($this->_out, 'XXXXXXXX');
        fwrite($this->_out, $buffer);

Grrr..... there's no ob_start() call anywhere in the code and if I add one with the PHP_OUTPUT_HANDLER_FLUSHABLE flag right after the vnd.ms-sync.multipart detection occurs (and before anything is output) it draws an error when the code attempts to the collect the buffer (which facially appears to be correct, ex the ob_start call that is missing.)

Is this a php bug on my end somewhere?

ghost commented 9 years ago

Got it.

OK, here's the deal -- this may not apply to all of the versions of php and apache out there, but it does mine.

First, the 0x03 and other headers MUST be emitted (Microsoft's documentation is WRONG!) for a multipart response. The problem is that the ob_start() call is missing and the parameters I'd expect further down don't work.

This is what I did:

    public function startWBXML() {
        if ($this->multipart) {
            header("Content-Type: application/vnd.ms-sync.multipart");
            ZLog::Write(LOGLEVEL_DEBUG, "WBXMLEncoder->startWBXML() type: vnd.ms
-sync.multipart");
//
// KD 2015-06-08 Add ob_start to make sure we buffer if and only if we're 
// multipart.
//
            ob_start(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS);
        }
        else {
            header("Content-Type: application/vnd.ms-sync.wbxml");
            ZLog::Write(LOGLEVEL_DEBUG, "WBXMLEncoder->startWBXML() type: vnd.ms
-sync.wbxml");
        }
        $this->outByte(0x03); // WBXML 1.3
        $this->outMBUInt(0x01); // Public ID 1
        $this->outMBUInt(106); // UTF-8
        $this->outMBUInt(0x00); // string table length (0)
    }

Then in processMultipart() I changed the ob_get_flush() call -- that flushes all right which is rather worthless. Instead we do this:

    private function processMultipart() {
        ZLog::Write(LOGLEVEL_DEBUG, sprintf("WBXMLEncoder->processMultipart() wi
th %d parts to be processed", $this->getBodypartsCount()));
        $len = ob_get_length();
//
// KD 2015-06-08 Replace ob_get_flush with ob_get_contents and ob_clean; yes,  
// you shouldn't have to.  Go complain to php or apache folks, who knows which.
//
        $buffer = ob_get_contents();  
        ob_clean();
        $nrBodyparts = $this->getBodypartsCount();
        $blockstart = (($nrBodyparts + 1) * 2) * 4 + 4;
        ZLog::Write(LOGLEVEL_DEBUG, sprintf("WBXMLEncoder->processMultipart() to
 send %d blockstart", $blockstart));

Now I get my attachments properly formatted.

Back in imap.php we make use of a new call is_encrypted(), which is in the same file as is_smime(). We use that to truncate the message body during syncing, since the attachment has it anyway and sending it twice is stupid. Thus we send just 500 characters if we detect an encrypted body, which is plenty for debugging purposes (the only reason you need it anyway) in the logs.

                    case SYNC_BODYPREFERENCE_MIME:
                        //
                        // KD 2015-06-04 If message body is encrypted we'd
                        // drop it as data should only be in the attachment
                        // but.... there's no good way to let only headers
                        // through.....
                        // 
                        if (is_encrypted($message)) {  
                                $output->asbody->data = $mail;
                                $truncsize = 500;
                                $enc = '1';
                                break;
                        }  
                        if (is_smime($message)) {
                                $output->asbody->data = $mail;
                                break;
                        }
                        $output->asbody->data = build_mime_message($message);
                        break;
                    case SYNC_BODYPREFERENCE_RTF:
                        ZLog::Write(LOGLEVEL_DEBUG, "BackendIMAP->GetMessage RTF
 Format NOT CHECKED");
                        $output->asbody->data = base64_encode($plainBody);
                        break;
                }  
                // truncate body, if requested, but never truncate MIME messages
                if(($bpReturnType !== SYNC_BODYPREFERENCE_MIME || isset($enc)) &
& strlen($output->asbody->data) > $truncsize) {
                    $output->asbody->data = Utils::Utf8_truncate($output->asbody
->data, $truncsize);
                    $output->asbody->truncated = 1;
                }
                else {
                    $output->asbody->truncated = 0;
                }

Then we test for encrypted and set the class correctly....

// KD 2015-06-04
// Add Encrypted (and possibly signed) to the classifications emitted
//
            if (is_smime($message)) {
                  $output->messageclass = "IPM.Note.SMIME.MultipartSigned";
            }
            if (is_encrypted($message)) {
                  $output->messageclass = "IPM.Note.SMIME";
            }
            else {
                $output->messageclass = "IPM.Note";
            }

In mime_encode.php we add a new function, is_encrypted()


function is_encrypted($message) {
   $res = false;

    if (isset($message->ctype_primary) && isset($message->ctype_secondary)) {
        if (($message->ctype_primary == "application" && $message->ctype_seconda
ry == "x-pkcs7-mime") || ($message->ctype_primary == "application" && $message->
ctype_secondary == "pkcs7-mime") || ($message->ctype_primary == "multipart" && $
message->ctype_secondary == "encrypted")) {     
                $res = true;
        }
     }
     return $res;
}

I do not yet have it working properly for PGP, but this works for S/MIME. PGP uses different headers -- they're close, but not identical, and there are issues with PGP/MIME on BB10 handsets.

However, I know some combinations work on Microsoft servers -- so that's next :-)

ghost commented 9 years ago

Changes to mimeDecode.php to support the above; these enable both S/MIME and PGP/Encrypted to work with BB10. Note that PGP-MIME/multipart, however (as generated by Thunderbird) is not readable by BB10; this appears to be a shortcoming of the BB10 phone as the difference in the headers is quite minor. I will be reporting that to BlackBerry as there's no reason it shouldn't eat it; the only material difference appears to be that Thunderbird tags the attachment as inline (and this does reflect properly into the WBXML structures.)

Works (sent from BB10 device):

Return-Path: <karl@denninger.net>
Received: from localhost (localhost [127.0.0.1])
    by fs.denninger.net (8.14.9/8.14.8) with ESMTP id t59GKjqJ025293
    for <karl@denninger.net>; Tue, 9 Jun 2015 11:20:45 -0500 (CDT)
    (envelope-from karl@denninger.net)
Received: from localhost [127.0.0.1];
    by Spamblock-sys (LOCAL/AUTH) Tue Jun  9 11:20:45 2015
Content-Type: multipart/encrypted; protocol="application/pgp-encrypted"; boundary="===============1167890583=="
MIME-Version: 1.0
X-Client-ID: 577
X-Mailer: BlackBerry Email (10.3.2.680)
Message-ID: <20150609162038.74469378.84627.577@denninger.net>
Date: Tue, 09 Jun 2015 11:20:38 -0500
Subject: Pgp
From: karl@denninger.net
To: Karl Denninger <karl@denninger.net>
X-Antivirus: avast! (VPS 150609-0, 06/09/2015), Inbound message
X-Antivirus-Status: Clean

--===============1167890583==
Content-Type: application/pgp-encrypted; Version="1"
MIME-Version: 1.0

--===============1167890583==
Content-Type: application/octet-stream
MIME-Version: 1.0

-----BEGIN PGP MESSAGE-----

wcFMA61Vhj4R58BKAQ//XJTfmGlNEpyqHhQJSuufl1ZmgwlDedITzXmin2pD5Yua
jr3Xk5VSJ3h+tzkm7v3PtcYs9jH/u2zZEmG5uoRtHfx5B4/eCpnK+aQZp2w7Bunf
PG2aXH3joVyrU5UJ+4vuV+gFWispWkbZ4MvGHzwewu22n40ZInul8Q5POB93etXP
ON+ODl8tgwkO1eEoyO1v5fB7q3H+KGg7Z+zOrfPcfiAp0d2MnaRwr1S3elt5XD9o
jjYDTRtxb+MbgxMZuzRI36bwhv+mCY7OHb7ZD3pkMoc+8GPfNprQADAIly4pKGfP
PS51hnqorGM9VW0myz4jHjp4VhYsRn6RIbjRtGpb5k7U1FmRZAPrBmlqjMG6fNDi
eKGcBrB4xFkDiYfc3GPEsvPSa6szfFtYJgNgjjlVjwSXPZZIJADcWFqDnoLLpzjz
zUS62fzQ7EoU4g5nFP/kAziN1xaJBxvMwuhgtnmjhLt08uVKsXQaUEZrpbp/LWfn
A40xTLyO1PRZ1sYkp6oMJAR6zDOi/syNZJ/ut1VlKqzxaMphjR0RxVlW8yclmvxF
DiHbVPobtBD+UDrW/cmifJT6i0SsStEwdELlIOPKJT+yP5LQU5zS/j9MoYYJVqi+
1Ps3nZbf8SXlm4dRpl5IDo2xW4NhBd0G8OqPEKpZfWUKjsXZE/xqBbyiEtOZtJjS
wS4BlQFcKhZsVdj0LDPmIqmDoK9cO8vxp7jmVxaCwbSKwHB7gD17foBn5wIGdsb9
z6TT5AnVVyGqSnRKzREC9XzPc+woMqTV3UKJX5KuYylnwRaxIuEitp1q5hW/wSRx
nQEd6afcGZPc9tiQf4jBgDDiAioBwAYDrdzp/xVRfzFRaZcdjxJbYe68K69JzQjX
6Pz/CTY70PJqp+ERezf9zWQkoVQOuC0w0ghlbBJNBqhq3Dx2cFoILkXdDkGv/PBH
U7E0bt2sEhlbwlW4zH021yHmEfMANp885LjJaFLjkmN0/utAekpLHhjxhMkYcPgU
Q0tkBQSTb9AkHMlK1oe0wSScckwqDgGsokgxK3EaJQQ/VGshs8Fl76r7HBjlojdG
100vqamuTqv0IvQakbgUmtEPAf7IAMshL5FPYu5SXA3t7Y6BA81NLrY/M8ssnvU1
pazMPX5tEfuUvk9iug/JNbwKZpdm55v28ZkoTPXbIUrwR4E8zhmD8kjq3gm5JJij
ByFgmYRnWzSnFwWAOXmHcu8x/k1SgqV73495W1e55gPEX0RPHOztNMTip5u+z3sb
lJo8LrkZfIyAPzAMSBU3cf6ZJxmFRmIOMm2zmH2GkWhfs+tSHtyAMWPNnMnO9xK7
8tBtg8HtGDbaCSW9/eFMDw==
=Ib8L
-----END PGP MESSAGE-----

--===============1167890583==--

Fails (Sent from Thunderbird):

Return-Path: <karl@denninger.net>
Received: from [192.168.1.40] (localhost [127.0.0.1])
    by fs.denninger.net (8.14.9/8.14.8) with ESMTP id t59GP51E026735
    for <karl@denninger.net>; Tue, 9 Jun 2015 11:25:06 -0500 (CDT)
    (envelope-from karl@denninger.net)
Received: from [192.168.1.40] [192.168.1.40] (Via SSLv3 AES128-SHA) ;
    by Spamblock-sys (LOCAL/AUTH) Tue Jun  9 11:25:05 2015
Message-ID: <55771328.2070000@denninger.net>
Date: Tue, 09 Jun 2015 11:24:08 -0500
From: Karl Denninger <karl@denninger.net>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: Karl Denninger <karl@denninger.net>
Subject: PGP-Encrypt Thunderbird
Content-Type: multipart/encrypted;
 protocol="application/pgp-encrypted";
 boundary="b3foPsm9gr9qSPlvTHeAOWvUabS5DwEhu"
X-Antivirus: avast! (VPS 150609-0, 06/09/2015), Inbound message
X-Antivirus-Status: Clean

This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)
--b3foPsm9gr9qSPlvTHeAOWvUabS5DwEhu
Content-Type: application/pgp-encrypted
Content-Description: PGP/MIME version identification

Version: 1

--b3foPsm9gr9qSPlvTHeAOWvUabS5DwEhu
Content-Type: application/octet-stream; name="encrypted.asc"
Content-Description: OpenPGP encrypted message
Content-Disposition: inline; filename="encrypted.asc"

-----BEGIN PGP MESSAGE-----
Version: GnuPG v2

hQIMA61Vhj4R58BKAQ//ZKssExUbqdWXHvMnH3F8ieNA7XmdiOhPx6FXdJ1SZNwP
waUTTPUfaz/Nr6/BWRwJFzABKvSEf5hg+R3cqcErVKxXpOwJ0yIACBn1FclXiSNX
NBhSKKTeoAMdsAGFKxWuXISzXzDgZ/2ZVawozdOoR/wXJiA1gU0kn3ur1M8WnAwm
papRw5K/ZF6BTcanba7kxQyjqOAvuYb+TVZnPWXvccpxGIgypkKrpdDO9i9YEK2J
6wEcPjhgwXQ9vL+flMvuRtJTAtNLkYfD6Vj7EA+oWlXcJqNtXAznx8A7gUokeaSZ
sTmp6XMKZ2SLU5RrQq08sKuwVCOf2c1rozlMJkksnGwsVuU9/Uhd5+zNJD2Qeufr
0rKqrtD4zKM6uUpUzHwh+J+yxuAr7pxAMw+FEZgqksjmDZjdtfcU8KR5MX2m/Rlm
FuQ7Y6u/hscMdwYbqAIvFA75HfFQStolc584MvuxNoEAhngSEN8CxTrSMpvbkgUD
Yp339lTmP7x8C3XwgeWByy4FY7b3qTCP3TWjyGESw11AXJ6klSuKWnd/+mxWolXx
mRhpr9iEslQUiQ5wSck2dP/ER9djCTBPaqEsc74OLvr6CFRpoDkP+iVOuT0elxM9
V8j/ZIpr87+4OzpLLBF5nmjx6aEA21SzY6V5u3rf1F4BYNGVx8J4lDUx+SfVm97S
wRcBG2ZCagAw5fn5voOKPyVnf9PCJo47bSaFsm/3am1mwhH9XBCL6y87yumeyOEv
0/8D88J/1EPtAjE2u8UbY+l+hovQ1TJCqTS4fg+C2dCmDq1UKRUmNJ17qtsf05/6
14A43kSyip+BjzbWGLUhJc0fp6faxBZcjNcE6cCP2WoU+6trbuG7+WYNeZYV/e6H
ZiGxJzvN7PL3e4TAiUoSUpPG0hPvW2deMoJy4ZPD+i2tYxgzJC4M1wDbSm7bdFhc
CyIsu/VFxvrB96Un40CUpCOF6ZjWNChjHG6FXgisk0bU13dFfiyVHy6tGf5+KOAt
9FrcVqL+kpmfrNvYa+k/Pie1jwtBi4E0JjG8tKBm5P98NSVoxgL1ysgfzvlz0+N0
Ds477raKVWGOfVm2fHC/VTd+M9/OWWbc/31GC+tt6samQyRcdOLD96UIuc/bIYvc
Vu3GbYvDe/w8stqCmnBLiekc4GKWe6c4x+DzSs7FNJDzbU7OMyQzK7DTiB2dCtDp
qoeKeDeh3y40u3DLK1g6NJmwTqgMIwPJ+UHGPLg22whnHwpvX1Ngsa8mwnnEjWAE
FlZydlsAT25Wl7urG8ZbJhehu+F6Cc51cLdhaPzzQhhJrsDDSIwcyFQ=
=EVfs
-----END PGP MESSAGE-----

--b3foPsm9gr9qSPlvTHeAOWvUabS5DwEhu--

/usr/share/z-push/include/mimeDecode.php file diff:

diff mimeDecode.php /usr/share/z-push/include/mimeDecode.php |more
331a332,335
> //
> // KD-2015-06-09 Add type for PGP Encrypted messages
> //
>                 case 'multipart/encrypted': // PGP
367c371,390
< 
---
> // KD 2015-06-09
> // Add type for S/MIME Encrypted messages; these must have the filename
> // set explicitly (it won't work otherwise) and then falls through for the rest
> // on purpose.
> //
>               case 'application/x-pkcs7-mime':
>               case 'application/pkcs7-mime':
>                     if(!isset($content_transfer_encoding['value']))
>                         $content_transfer_encoding['value'] = 'base64';
>                     // if there is no explicit charset, then don't try to convert to default charset, and make sure that only text mimetypes are converted
>                     $charset = (isset($return->ctype_parameters['charset']) && ((isset($return->ctype_primary) && $return->ctype_primary == 'text') || !isset($return->ctype_primary)) )? $return->ctype_parameters['charset']: '';
>                     $part->body = ($this->_decode_bodies ? $this->_decodeBody($body, $content_transfer_encoding['value'], $charset) : $body);
>                       $ctype = explode('/', strtolower($content_type['value']));
>                       $part->ctype_parameters['name'] = 'smime.p7m';
>                       $part->ctype_primary = $ctype[0];
>                         $part->ctype_secondary = $ctype[1];
>                         $part->d_parameters['size'] = strlen($part->body);
>                         $return->parts[] = $part;
>                               // Fall through intentionally
>       
fmbiete commented 9 years ago

Hi @tickerguy

Thank you very much for you hard work. I have pushed your changes with some modifications:

The problem is that the ob_start() call is missing

But it's not. Look at /index.php:47 We always do a ob_start, but we are missing the flag PHP_OUTPUT_HANDLER_STDFLAGS for PHP >=5.4

KD 2015-06-08 Replace ob_get_flush with ob_get_contents and ob_clean;

Great finding. Doing get_flush is wrong, we don't want to disable the buffer, only get the content and clean it (ob_get_clean does both).

I have also update mimeDecode and z-push to the last svn code from upstream, you have the possibility now to write to file the WBXML message in base64 to easier debug.

ghost commented 9 years ago

Commit looks good thus far; will let it run for a day or so and see if it continues to perform.

ghost commented 9 years ago

The above broke PGP/Encrypted messages.

The problem is in include/mimeDecode.php; there was a special-=case inserted for multipart/signed and multipart/encrypted. Those should NOT be present; they should be treated exactly as the below multipart/* entries (and were in the previous rev.)

The below diff fixes it; in other words, just remove those lines.

*** mimeDecode.php      Mon Jun 15 10:00:00 2015
--- /usr/share/z-push/include/mimeDecode.php    Mon Jun 15 16:20:11 2015
***************
*** 334,346 ****

                  case 'multipart/signed': // PGP
                  case 'multipart/encrypted':
-                     $parts = $this->_boundarySplit($body, $content_type['other']['boundary'], true);
-                     $return->parts['msg_body'] = $parts[0];
-                     list($part_header, $part_body) = $this->_splitBodyHeader($parts[1]);
-                     $return->parts['sig_hdr'] = $part_header;
-                     $return->parts['sig_body'] = $part_body;
-                     break;
- 
                  case 'multipart/parallel':
                  case 'multipart/appledouble': // Appledouble mail
                  case 'multipart/report': // RFC1892
--- 334,339 ----

In addition the body truncation for encrypted messages was damaged during the merge, which causes excessive data transmission since the MIME parts do not need to be sent twice. The following diff to imap.php fixes it:

*** imap.php.x  Mon Jun 15 16:25:25 2015
--- imap.php    Mon Jun 15 16:33:36 2015
***************
*** 1099,1104 ****
--- 1099,1105 ----
                          if (is_encrypted($message)) {
                                  $output->asbody->data = $mail;
                                  $truncsize = 500;
+                               $enc = '1';
                                  break;
                          }

***************
*** 1115,1121 ****
                          break;
                  }
                  // truncate body, if requested, but never truncate MIME messages
!                 if($bpReturnType !== SYNC_BODYPREFERENCE_MIME && strlen($output->asbody->data) > $truncsize) {
                      $output->asbody->data = Utils::Utf8_truncate($output->asbody->data, $truncsize);
                      $output->asbody->truncated = 1;
                  }
--- 1116,1122 ----
                          break;
                  }
                  // truncate body, if requested, but never truncate MIME messages
!                 if(($bpReturnType !== SYNC_BODYPREFERENCE_MIME || isset($enc)) && strlen($output->asbody->data) > $truncsize) {
                      $output->asbody->data = Utils::Utf8_truncate($output->asbody->data, $truncsize);
                      $output->asbody->truncated = 1;
                  }
ghost commented 9 years ago

This appears to be fixed.

benbeton commented 8 years ago

just a quick question. Today I cloned the whole repo to a fresh install. Had trouble with mime decode and found out that this fix is not included, did I miss someting? after applying the fix, all works fine!

fmbiete commented 8 years ago

@benbeton can you paste your changes??

benbeton commented 8 years ago

i did't do any changes, just cloned the whole dir to a fresh install. this fix https://github.com/fmbiete/Z-Push-contrib/commit/07287905ddfdb1e2cd6e232369675b0f1615f4ed was not included, could that be possible?

fmbiete commented 8 years ago

@benbeton That commit is applied. The only difference I see is instead of returning 500 chars of the original message we are returning only the headers (imap.php file). Are you saying that returning only the mime headers for a smime encrypted message doesn't work?

benbeton commented 8 years ago

@fmbiete don't know what has happened, but the commit was not included in the branch I cloned. regarding the error everything works fine, thank you!

m3nu commented 8 years ago

Sorry to open this again, but after updating to the latest version, S/MIME was broken for me on iOS. It worked previously with z-push.

To fix it, I set it to send the whole email instead of just headers in backend/imap/imap.php:1099

So

- $output->asbody->data = $mail_headers;
+ $output->asbody->data = $mail;

@fmbiete