From sgironella@schema31.it Thu Jul 14 15:09:02 2016 From: sgironella@schema31.it To: dev@lists.roundcube.net Subject: [RCD] RC 1.2 - Corrupted e-mail headers while sending an html empty message Date: Thu, 14 Jul 2016 15:08:57 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5212959414058375521==" --===============5212959414058375521== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Hello all, I've recently posted a bug reporting to the Roundcube community forum [1] We have noticed a strange behavior with a fresh Roundcube 1.2 install (no additional plugins enabled nor 'strange' custom config defined). To reproduce this, send an e-mail using the html editor, leaving a blank content. Received e-mail has a 'text/html' content-type (instead of the expected 'multipart'). therefore client view raw mime-parts as e-mail content. Note that sent e-mail (taken from sender 'sent' mailbox) has the right content-type (multipart) so it's perfectly readable. In addition, we have recorded a tcpdump session, that confirm our impression of having two separate libraries handling in a different way SMPT (for delivery) and IMAP (for storing e-mail within 'sent' inbox) sections; that's what we got: IMAP SESSION (SAVE E-MAIL TO 'SENT' MAILBOX) - Note the right mime-type and boundary here * OK [CAPABILITY IMAP4rev1 AUTH=LOGIN AUTH=CRAM-MD5 ID LITERAL+] dbmail 3.2.3 ready. A0001 LOGIN xxxxx(a)xxxxxx xxxxxxx A0001 OK [CAPABILITY IMAP4rev1 ACL RIGHTS=texk NAMESPACE CHILDREN SORT QUOTA THREAD=ORDEREDSUBJECT UNSELECT IDLE ID UIDPLUS WITHIN CONDSTORE LITERAL+ ENABLE QRESYNC] User utente1(a)mail.qa.schema31.it authenticated A0002 LSUB "" Sent * LSUB (\hasnochildren) "/" "Sent" A0002 OK LSUB completed A0003 LIST "" Sent * LIST (\hasnochildren) "/" "Sent" A0003 OK LIST completed A0004 APPEND Sent (\Seen) {936+} MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=_17681037babd7dadb94a79c2cf51cb1f" Content-Transfer-Encoding: quoted-printable Date: Thu, 14 Jul 2016 14:23:01 +0200 From: Utente di TEST To: stefano.gironella(a)gmail.com Subject: prova 2 Organization: SC31 Message-ID: X-Sender: utente1(a)mail.qa.schema31.it User-Agent: Roundcube Webmail/1.2.0 --=_17681037babd7dadb94a79c2cf51cb1f Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII --=_17681037babd7dadb94a79c2cf51cb1f Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=UTF-8 --=_17681037babd7dadb94a79c2cf51cb1f-- A0004 OK [APPENDUID 2028 2695213] APPEND completed A0005 LOGOUT * BYE A0005 OK LOGOUT completed SMTP SESSION (E-MAIL DISPATCH) - Note that content-type here is 'text/html' (maybe taken from the first non-empty mime-part?) 220 litio.roma.schema31.it ESMTP Sendmail 8.14.5/8.14.5; Thu, 14 Jul 2016 14:23:01 +0200 (CEST) EHLO localhost 250-litio.roma.schema31.it Hello [10.33.100.158], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-STARTTLS 250-DELIVERBY 250 HELP MAIL FROM: 250 2.1.0 ... Sender ok RCPT TO: 250 2.1.5 ... Recipient ok DATA 354 Enter mail, end with "." on a line by itself MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Date: Thu, 14 Jul 2016 14:23:01 +0200 From: Utente di TEST To: stefano.gironella(a)gmail.com Subject: prova 2 Organization: SC31 Message-ID: X-Sender: utente1(a)mail.qa.schema31.it User-Agent: Roundcube Webmail/1.2.0 --=_6e4cf8211c48e997305a4faab4020297 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII --=_6e4cf8211c48e997305a4faab4020297 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=UTF-8 --=_6e4cf8211c48e997305a4faab4020297-- . 250 2.0.0 u6ECN1Je026469 Message accepted for delivery QUIT 221 2.0.0 litio.roma.schema31.it closing connection Links: ------ [1] http://www.roundcubeforum.net/index.php/topic,23529.0.html --===============5212959414058375521== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0 L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIC8+PC9oZWFkPjxib2R5IHN0eWxlPSdmb250LXNpemU6IDEw cHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLEdlbmV2YSxzYW5zLXNlcmlmJz4KPHA+SGVsbG8gYWxs LDxiciAvPkkndmUgcmVjZW50bHkgcG9zdGVkIGEgYnVnIHJlcG9ydGluZyB0byB0aGUgPGEgdGl0 bGU9IlJvdW5kY3ViZSBjb21tdW5pdHkgZm9ydW0iIGhyZWY9Imh0dHA6Ly93d3cucm91bmRjdWJl Zm9ydW0ubmV0L2luZGV4LnBocC90b3BpYywyMzUyOS4wLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5S b3VuZGN1YmUgY29tbXVuaXR5IGZvcnVtPC9hPjxiciAvPldlIGhhdmUgbm90aWNlZCBhIHN0cmFu Z2UgYmVoYXZpb3Igd2l0aCBhIGZyZXNoIFJvdW5kY3ViZSAxLjIgaW5zdGFsbCAobm8gYWRkaXRp b25hbCBwbHVnaW5zIGVuYWJsZWQgbm9yICdzdHJhbmdlJyBjdXN0b20gY29uZmlnIGRlZmluZWQp LjwvcD4KPHA+PGJyIC8+VG8gcmVwcm9kdWNlIHRoaXMsIHNlbmQgYW4gZS1tYWlsIHVzaW5nIHRo ZSBodG1sIGVkaXRvciwgbGVhdmluZyBhIGJsYW5rIGNvbnRlbnQuPC9wPgo8cD48YnIgLz5SZWNl aXZlZCBlLW1haWwgaGFzIGEgJ3RleHQvaHRtbCcgY29udGVudC10eXBlIChpbnN0ZWFkIG9mIHRo ZSBleHBlY3RlZCAnbXVsdGlwYXJ0JykuIHRoZXJlZm9yZSBjbGllbnQgdmlldyByYXcgbWltZS1w YXJ0cyBhcyBlLW1haWwgY29udGVudC48L3A+CjxwPk5vdGUgdGhhdCBzZW50IGUtbWFpbCAodGFr ZW4gZnJvbSBzZW5kZXIgJ3NlbnQnIG1haWxib3gpIGhhcyB0aGUgcmlnaHQgY29udGVudC10eXBl IChtdWx0aXBhcnQpIHNvIGl0J3MgcGVyZmVjdGx5IHJlYWRhYmxlLjwvcD4KPHA+PGJyIC8+SW4g YWRkaXRpb24sIHdlIGhhdmUgcmVjb3JkZWQgYSB0Y3BkdW1wIHNlc3Npb24sIHRoYXQgY29uZmly bSBvdXIgaW1wcmVzc2lvbiBvZiBoYXZpbmcgdHdvIHNlcGFyYXRlIGxpYnJhcmllcyBoYW5kbGlu ZyBpbiBhIGRpZmZlcmVudCB3YXkgU01QVCAoZm9yIGRlbGl2ZXJ5KSBhbmQgSU1BUCAoZm9yIHN0 b3JpbmcgZS1tYWlsIHdpdGhpbiAnc2VudCcgaW5ib3gpIHNlY3Rpb25zOyB0aGF0J3Mgd2hhdCB3 ZSBnb3Q6PC9wPgo8cD48YnIgLz48c3Ryb25nPklNQVAgU0VTU0lPTiAoc2F2ZSBlLW1haWwgdG8g J3NlbnQnIG1haWxib3gpPC9zdHJvbmc+IC0gTm90ZSB0aGUgcmlnaHQgbWltZS10eXBlIGFuZCBi b3VuZGFyeSBoZXJlPGJyIC8+PGJyIC8+KiBPSyBbQ0FQQUJJTElUWSBJTUFQNHJldjEgQVVUSD1M T0dJTiBBVVRIPUNSQU0tTUQ1IElEIExJVEVSQUwrXSBkYm1haWwgMy4yLjMgcmVhZHkuPGJyIC8+ QTAwMDEgTE9HSU4geHh4eHhAeHh4eHh4IHh4eHh4eHg8YnIgLz5BMDAwMSBPSyBbQ0FQQUJJTElU WSBJTUFQNHJldjEgQUNMIFJJR0hUUz10ZXhrIE5BTUVTUEFDRSBDSElMRFJFTiBTT1JUIFFVT1RB IFRIUkVBRD1PUkRFUkVEU1VCSkVDVCBVTlNFTEVDVCBJRExFIElEIFVJRFBMVVMgV0lUSElOIENP TkRTVE9SRSBMSVRFUkFMKyBFTkFCTEUgUVJFU1lOQ10gVXNlciB1dGVudGUxQG1haWwucWEuc2No ZW1hMzEuaXQgYXV0aGVudGljYXRlZDxiciAvPkEwMDAyIExTVUIgIiIgU2VudDxiciAvPiogTFNV QiAoXGhhc25vY2hpbGRyZW4pICIvIiAiU2VudCI8YnIgLz5BMDAwMiBPSyBMU1VCIGNvbXBsZXRl ZDxiciAvPkEwMDAzIExJU1QgIiIgU2VudDxiciAvPiogTElTVCAoXGhhc25vY2hpbGRyZW4pICIv IiAiU2VudCI8YnIgLz5BMDAwMyBPSyBMSVNUIGNvbXBsZXRlZDxiciAvPkEwMDA0IEFQUEVORCBT ZW50IChcU2VlbikgezkzNit9PGJyIC8+TUlNRS1WZXJzaW9uOiAxLjA8YnIgLz5Db250ZW50LVR5 cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTs8YnIgLz4mbmJzcDtib3VuZGFyeT0iPV8xNzY4MTAz N2JhYmQ3ZGFkYjk0YTc5YzJjZjUxY2IxZiI8YnIgLz5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5n OiBxdW90ZWQtcHJpbnRhYmxlPGJyIC8+RGF0ZTogVGh1LCAxNCBKdWwgMjAxNiAxNDoyMzowMSAr MDIwMDxiciAvPkZyb206IFV0ZW50ZSBkaSBURVNUICZsdDt1dGVudGUxQG1haWwucWEuc2NoZW1h MzEuaXQmZ3Q7PGJyIC8+VG86IHN0ZWZhbm8uZ2lyb25lbGxhQGdtYWlsLmNvbTxiciAvPlN1Ympl Y3Q6IHByb3ZhIDI8YnIgLz5Pcmdhbml6YXRpb246IFNDMzE8YnIgLz5NZXNzYWdlLUlEOiAmbHQ7 YTQ2OTE5ZTNiMDM4MGUwZGM4NWY4MmU0NzU1ODE3NDBAbWFpbC5xYS5zY2hlbWEzMS5pdCZndDs8 YnIgLz5YLVNlbmRlcjogdXRlbnRlMUBtYWlsLnFhLnNjaGVtYTMxLml0PGJyIC8+VXNlci1BZ2Vu dDogUm91bmRjdWJlIFdlYm1haWwvMS4yLjA8YnIgLz48YnIgLz4tLT1fMTc2ODEwMzdiYWJkN2Rh ZGI5NGE3OWMyY2Y1MWNiMWY8YnIgLz5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0PGJy IC8+Q29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVTLUFTQ0lJPGJyIC8+PGJyIC8+ PGJyIC8+LS09XzE3NjgxMDM3YmFiZDdkYWRiOTRhNzljMmNmNTFjYjFmPGJyIC8+Q29udGVudC1U cmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZTxiciAvPkNvbnRlbnQtVHlwZTogdGV4 dC9odG1sOyBjaGFyc2V0PVVURi04PGJyIC8+PGJyIC8+Jmx0O2h0bWwmZ3Q7Jmx0O2hlYWQmZ3Q7 Jmx0O21ldGEgaHR0cC1lcXVpdj0zRCJDb250ZW50LVR5cGUiIGNvbnRlbnQ9M0QidGV4dC9odG1s OyBjaGFyc2V0PTxiciAvPj0zRFVURi04IiAvJmd0OyZsdDsvaGVhZCZndDsmbHQ7Ym9keSBzdHls ZT0zRCdmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLEdlbj08YnIgLz5ldmEs c2Fucy1zZXJpZicmZ3Q7PGJyIC8+PGJyIC8+Jmx0Oy9ib2R5Jmd0OyZsdDsvaHRtbCZndDs8YnIg Lz48YnIgLz4tLT1fMTc2ODEwMzdiYWJkN2RhZGI5NGE3OWMyY2Y1MWNiMWYtLTxiciAvPjxiciAv PkEwMDA0IE9LIFtBUFBFTkRVSUQgMjAyOCAyNjk1MjEzXSBBUFBFTkQgY29tcGxldGVkPGJyIC8+ QTAwMDUgTE9HT1VUPGJyIC8+KiBCWUU8YnIgLz5BMDAwNSBPSyBMT0dPVVQgY29tcGxldGVkPGJy IC8+PGJyIC8+PGJyIC8+PGJyIC8+PHN0cm9uZz5TTVRQIFNFU1NJT04gKGUtbWFpbCBkaXNwYXRj aCkgPC9zdHJvbmc+LSBOb3RlIHRoYXQgY29udGVudC10eXBlIGhlcmUgaXMgJ3RleHQvaHRtbCcg KG1heWJlIHRha2VuIGZyb20gdGhlIGZpcnN0IG5vbi1lbXB0eSBtaW1lLXBhcnQ/KTxiciAvPjxi ciAvPjIyMCBsaXRpby5yb21hLnNjaGVtYTMxLml0IEVTTVRQIFNlbmRtYWlsIDguMTQuNS84LjE0 LjU7IFRodSwgMTQgSnVsIDIwMTYgMTQ6MjM6MDEgKzAyMDAgKENFU1QpPGJyIC8+RUhMTyBsb2Nh bGhvc3Q8YnIgLz4yNTAtbGl0aW8ucm9tYS5zY2hlbWEzMS5pdCBIZWxsbyBbMTAuMzMuMTAwLjE1 OF0sIHBsZWFzZWQgdG8gbWVldCB5b3U8YnIgLz4yNTAtRU5IQU5DRURTVEFUVVNDT0RFUzxiciAv PjI1MC1QSVBFTElOSU5HPGJyIC8+MjUwLThCSVRNSU1FPGJyIC8+MjUwLVNJWkU8YnIgLz4yNTAt RFNOPGJyIC8+MjUwLUVUUk48YnIgLz4yNTAtU1RBUlRUTFM8YnIgLz4yNTAtREVMSVZFUkJZPGJy IC8+MjUwIEhFTFA8YnIgLz5NQUlMIEZST006Jmx0O3V0ZW50ZTFAbWFpbC5xYS5zY2hlbWEzMS5p dCZndDs8YnIgLz4yNTAgMi4xLjAgJmx0O3V0ZW50ZTFAbWFpbC5xYS5zY2hlbWEzMS5pdCZndDsu Li4gU2VuZGVyIG9rPGJyIC8+UkNQVCBUTzombHQ7c3RlZmFuby5naXJvbmVsbGFAZ21haWwuY29t Jmd0OzxiciAvPjI1MCAyLjEuNSAmbHQ7c3RlZmFuby5naXJvbmVsbGFAZ21haWwuY29tJmd0Oy4u LiBSZWNpcGllbnQgb2s8YnIgLz5EQVRBPGJyIC8+MzU0IEVudGVyIG1haWwsIGVuZCB3aXRoICIu IiBvbiBhIGxpbmUgYnkgaXRzZWxmPGJyIC8+TUlNRS1WZXJzaW9uOiAxLjA8YnIgLz5Db250ZW50 LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtODxiciAvPkNvbnRlbnQtVHJhbnNmZXItRW5j b2Rpbmc6IHF1b3RlZC1wcmludGFibGU8YnIgLz5EYXRlOiBUaHUsIDE0IEp1bCAyMDE2IDE0OjIz OjAxICswMjAwPGJyIC8+RnJvbTogVXRlbnRlIGRpIFRFU1QgJmx0O3V0ZW50ZTFAbWFpbC5xYS5z Y2hlbWEzMS5pdCZndDs8YnIgLz5Ubzogc3RlZmFuby5naXJvbmVsbGFAZ21haWwuY29tPGJyIC8+ U3ViamVjdDogcHJvdmEgMjxiciAvPk9yZ2FuaXphdGlvbjogU0MzMTxiciAvPk1lc3NhZ2UtSUQ6 ICZsdDthNDY5MTllM2IwMzgwZTBkYzg1ZjgyZTQ3NTU4MTc0MEBtYWlsLnFhLnNjaGVtYTMxLml0 Jmd0OzxiciAvPlgtU2VuZGVyOiB1dGVudGUxQG1haWwucWEuc2NoZW1hMzEuaXQ8YnIgLz5Vc2Vy LUFnZW50OiBSb3VuZGN1YmUgV2VibWFpbC8xLjIuMDxiciAvPjxiciAvPi0tPV82ZTRjZjgyMTFj NDhlOTk3MzA1YTRmYWFiNDAyMDI5NzxiciAvPkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdi aXQ8YnIgLz5Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVMtQVNDSUk8YnIgLz48 YnIgLz48YnIgLz4tLT1fNmU0Y2Y4MjExYzQ4ZTk5NzMwNWE0ZmFhYjQwMjAyOTc8YnIgLz5Db250 ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlPGJyIC8+Q29udGVudC1UeXBl OiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTg8YnIgLz48YnIgLz4mbHQ7aHRtbCZndDsmbHQ7aGVh ZCZndDsmbHQ7bWV0YSBodHRwLWVxdWl2PTNEIkNvbnRlbnQtVHlwZSIgY29udGVudD0zRCJ0ZXh0 L2h0bWw7IGNoYXJzZXQ9PGJyIC8+PTNEVVRGLTgiIC8mZ3Q7Jmx0Oy9oZWFkJmd0OyZsdDtib2R5 IHN0eWxlPTNEJ2ZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsR2VuPTxiciAv PmV2YSxzYW5zLXNlcmlmJyZndDs8YnIgLz48YnIgLz4mbHQ7L2JvZHkmZ3Q7Jmx0Oy9odG1sJmd0 OzxiciAvPjxiciAvPi0tPV82ZTRjZjgyMTFjNDhlOTk3MzA1YTRmYWFiNDAyMDI5Ny0tPGJyIC8+ LjxiciAvPjI1MCAyLjAuMCB1NkVDTjFKZTAyNjQ2OSBNZXNzYWdlIGFjY2VwdGVkIGZvciBkZWxp dmVyeTxiciAvPlFVSVQ8YnIgLz4yMjEgMi4wLjAgbGl0aW8ucm9tYS5zY2hlbWEzMS5pdCBjbG9z aW5nIGNvbm5lY3Rpb248L3A+CjwvYm9keT48L2h0bWw+Cg== --===============5212959414058375521==--