This is an automated email from the ASF dual-hosted git repository. rcordier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 63dda699c6583ffc4aa42b23b172c49d726ab107 Author: Tran Tien Duc <[email protected]> AuthorDate: Tue Jan 21 13:16:08 2020 +0700 JAMES-3016 Create ConvertTo7Bit unit test --- .../james/jdkim/mailets/ConvertTo7BitTest.java | 229 +++++++++++++++++++++ .../eml/multipart-7bit-attachment-content.txt | 98 +++++++++ .../dkim/src/test/resources/eml/multipart-7bit.eml | 142 +++++++++++++ .../eml/multipart-8bit-attachment-content.txt | 92 +++++++++ .../dkim/src/test/resources/eml/multipart-8bit.eml | 128 ++++++++++++ .../dkim/src/test/resources/eml/text-only-7bit.eml | 27 +++ .../dkim/src/test/resources/eml/text-only-8bit.eml | 29 +++ 7 files changed, 745 insertions(+) diff --git a/server/mailet/dkim/src/test/java/org/apache/james/jdkim/mailets/ConvertTo7BitTest.java b/server/mailet/dkim/src/test/java/org/apache/james/jdkim/mailets/ConvertTo7BitTest.java new file mode 100644 index 0000000..bbee42b --- /dev/null +++ b/server/mailet/dkim/src/test/java/org/apache/james/jdkim/mailets/ConvertTo7BitTest.java @@ -0,0 +1,229 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.jdkim.mailets; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import javax.mail.BodyPart; +import javax.mail.internet.MimeMultipart; + +import org.apache.commons.io.IOUtils; +import org.apache.james.util.MimeMessageUtil; +import org.apache.mailet.Mail; +import org.apache.mailet.base.test.FakeMail; +import org.apache.mailet.base.test.FakeMailetConfig; +import org.assertj.core.api.SoftAssertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import com.github.fge.lambdas.Throwing; + +class ConvertTo7BitTest { + + private static final String CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding"; + private static final String X_MIME_AUTOCONVERTED = "X-MIME-Autoconverted"; + private static final String QUOTED_PRINTABLE = "quoted-printable"; + private static final String MESSAGE_BODY_8BIT = "A 8bit encoded body with €uro symbol."; + private static final String MESSAGE_BODY_QUOTED_PRINTABLE = "A 8bit encoded body with =E2=82=ACuro symbol."; + private static final String BASE64 = "base64"; + + private ConvertTo7Bit testee; + + @BeforeEach + void setUp() throws Exception { + testee = new ConvertTo7Bit(); + testee.init(FakeMailetConfig.builder() + .build()); + } + + @Nested + class When7BitMail { + @Nested + class WhenTextContent { + @Test + void serviceShouldKeepMessageContentUnTouch() throws Exception { + Mail mail = FakeMail.builder() + .name("a-mail-with-quoted-printable-encoding") + .mimeMessage(MimeMessageUtil.mimeMessageFromString( + fileContent("eml/text-only-7bit.eml"))) + .build(); + + testee.service(mail); + + SoftAssertions.assertSoftly(Throwing.consumer(softly -> { + softly.assertThat(mail.getMessage().getEncoding()) + .isEqualTo(QUOTED_PRINTABLE); + softly.assertThat(MimeMessageUtil.asString(mail.getMessage())) + .contains(MESSAGE_BODY_QUOTED_PRINTABLE); + })); + } + } + + @Nested + class WhenMultipart { + @Test + void serviceShouldKeepMessageTextContentUnTouch() throws Exception { + Mail mail = FakeMail.builder() + .name("a-mail-with-7bit-encoding") + .mimeMessage(MimeMessageUtil.mimeMessageFromString( + fileContent("eml/multipart-7bit.eml"))) + .build(); + + testee.service(mail); + MimeMultipart multipart = (MimeMultipart) mail.getMessage().getContent(); + + SoftAssertions.assertSoftly(Throwing.consumer(softly -> { + softly.assertThat(multipart.getBodyPart(0).getHeader(CONTENT_TRANSFER_ENCODING)) + .containsOnly(QUOTED_PRINTABLE); + softly.assertThat(MimeMessageUtil.asString(mail.getMessage())) + .contains(MESSAGE_BODY_QUOTED_PRINTABLE); + })); + } + + @Test + void serviceShouldKeepMessageAttachmentsContentUnTouch() throws Exception { + Mail mail = FakeMail.builder() + .name("a-mail-with-7bit-encoding") + .mimeMessage(MimeMessageUtil.mimeMessageFromString( + fileContent("eml/multipart-7bit.eml"))) + .build(); + + testee.service(mail); + MimeMultipart multipart = (MimeMultipart) mail.getMessage().getContent(); + String messageAsString = MimeMessageUtil.asString(mail.getMessage()); + + SoftAssertions.assertSoftly(Throwing.consumer(softly -> { + softly.assertThat(multipart.getBodyPart(1).getHeader(CONTENT_TRANSFER_ENCODING)) + .containsOnly(BASE64); + softly.assertThat(messageAsString) + .contains(fileContent("eml/multipart-7bit-attachment-content.txt")); + })); + } + } + } + + @Nested + class When8BitMail { + @Nested + class WhenTextContent { + @Test + void serviceShouldAlertHeaders() throws Exception { + Mail mail = FakeMail.builder() + .name("a-mail-with-8bit-encoding") + .mimeMessage(MimeMessageUtil.mimeMessageFromString( + fileContent("eml/text-only-8bit.eml"))) + .build(); + testee.service(mail); + + SoftAssertions.assertSoftly(Throwing.consumer(softly -> { + assertThat(mail.getMessage().getHeader(CONTENT_TRANSFER_ENCODING)) + .containsOnly(QUOTED_PRINTABLE); + assertThat(mail.getMessage().getHeader(X_MIME_AUTOCONVERTED)) + .containsOnly("from 8bit to quoted-printable by Mock Server"); + })); + } + + @Test + void serviceShouldConvertContentToQuotedPrintable() throws Exception { + Mail mail = FakeMail.builder() + .name("a-mail-with-8bit-encoding") + .mimeMessage(MimeMessageUtil.mimeMessageFromString( + fileContent("eml/text-only-8bit.eml"))) + .build(); + testee.service(mail); + + assertThat(MimeMessageUtil.asString(mail.getMessage())) + .contains(MESSAGE_BODY_QUOTED_PRINTABLE) + .doesNotContain(MESSAGE_BODY_8BIT); + } + } + + @Nested + class WhenMultipart { + + @Test + void serviceShouldAlertTextPartHeaders() throws Exception { + Mail mail = FakeMail.builder() + .name("a-mail-with-8bit-encoding") + .mimeMessage(MimeMessageUtil.mimeMessageFromString( + fileContent("eml/multipart-8bit.eml"))) + .build(); + + testee.service(mail); + + BodyPart textPart = ((MimeMultipart) mail.getMessage().getContent()) + .getBodyPart(0); + + SoftAssertions.assertSoftly(Throwing.consumer(softly -> { + assertThat(textPart.getHeader(CONTENT_TRANSFER_ENCODING)) + .containsOnly(QUOTED_PRINTABLE); + assertThat(textPart.getHeader(X_MIME_AUTOCONVERTED)) + .containsOnly("from 8bit to quoted-printable by Mock Server"); + })); + } + + @Test + void serviceShouldConvertTextPartContentToQuotedPrintable() throws Exception { + Mail mail = FakeMail.builder() + .name("a-mail-with-8bit-encoding") + .mimeMessage(MimeMessageUtil.mimeMessageFromString( + fileContent("eml/multipart-8bit.eml"))) + .build(); + + testee.service(mail); + + assertThat(MimeMessageUtil.asString(mail.getMessage())) + .contains(MESSAGE_BODY_QUOTED_PRINTABLE) + .doesNotContain(MESSAGE_BODY_8BIT); + } + + @Test + void serviceShouldKeepAttachmentPartUnTouchWhenBase64Encoding() throws Exception { + Mail mail = FakeMail.builder() + .name("a-mail-with-8bit-encoding") + .mimeMessage(MimeMessageUtil.mimeMessageFromString( + fileContent("eml/multipart-8bit.eml"))) + .build(); + + testee.service(mail); + + MimeMultipart multipart = (MimeMultipart) mail.getMessage().getContent(); + String messageAsString = MimeMessageUtil.asString(mail.getMessage()); + + SoftAssertions.assertSoftly(Throwing.consumer(softly -> { + softly.assertThat(multipart.getBodyPart(1).getHeader(CONTENT_TRANSFER_ENCODING)) + .containsOnly(BASE64); + softly.assertThat(messageAsString) + .contains(fileContent("eml/multipart-8bit-attachment-content.txt")); + })); + } + } + } + + private String fileContent(String fileName) throws IOException { + return IOUtils.toString( + ClassLoader.getSystemResourceAsStream(fileName), + StandardCharsets.UTF_8); + } +} \ No newline at end of file diff --git a/server/mailet/dkim/src/test/resources/eml/multipart-7bit-attachment-content.txt b/server/mailet/dkim/src/test/resources/eml/multipart-7bit-attachment-content.txt new file mode 100644 index 0000000..82492c7 --- /dev/null +++ b/server/mailet/dkim/src/test/resources/eml/multipart-7bit-attachment-content.txt @@ -0,0 +1,98 @@ +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 +RK5CYII= \ No newline at end of file diff --git a/server/mailet/dkim/src/test/resources/eml/multipart-7bit.eml b/server/mailet/dkim/src/test/resources/eml/multipart-7bit.eml new file mode 100644 index 0000000..655af28 --- /dev/null +++ b/server/mailet/dkim/src/test/resources/eml/multipart-7bit.eml @@ -0,0 +1,142 @@ +Return-Path: <[email protected]> +MIME-Version: 1.0 +Delivered-To: [email protected] +Received: from 10.233.68.83 (EHLO incoming.james.org) ([10.233.68.83]) + by james-0 (JAMES SMTP Server ) with ESMTP ID -973333758 + for <[email protected]>; + Wed, 22 Jan 2020 03:47:32 +0000 (UTC) +Received: from smtp.james.org (unknown [10.233.65.0]) + by incoming.james.org (Postfix) with ESMTPS id 8151D43 + for <[email protected]>; Wed, 22 Jan 2020 03:47:32 +0000 (UTC) +Received: from [10.116.29.102] (unknown [1.54.162.156]) + (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) + (No client certificate requested) + by smtp.james.org (Postfix) with ESMTPSA id D6C653F38C + for <[email protected]>; Wed, 22 Jan 2020 04:47:31 +0100 (CET) +To: [email protected] +X-LINAGORA-Copy-Delivery-Done: 1 +From: Uncle Bob <[email protected]> +Subject: multipart +Message-ID: <[email protected]> +Date: Wed, 22 Jan 2020 10:47:17 +0700 +User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 + Thunderbird/60.2.1 +Content-Type: multipart/mixed; + boundary="------------C3FD44EAF9B6A93E163D9176" +Content-Language: en-US + +This is a multi-part message in MIME format. +--------------C3FD44EAF9B6A93E163D9176 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: quoted-printable + +A 8bit encoded body with =E2=82=ACuro symbol. + + + +--------------C3FD44EAF9B6A93E163D9176 +Content-Type: image/png; + name="james-logo.png" +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; + filename="james-logo.png" + +iVBORw0KGgoAAAANSUhEUgAAANkAAABaCAYAAAA1mvMAAAAAGXRFWHRTb2Z0d2FyZQBBZG9i +ZSBJbWFnZVJlYWR5ccllPAAAFB1JREFUeNrsXV2MI9lVvuX+m2EXrTtLQGwydPVsRlmkSOOW ++BNItB2tNiAk2n5BeYG2EwkpiSLbPPAjAW7zQiQe3C0SkBBg9ysv7ZZ4AGWFa/KClJeuRQhl +s2SnOj1pYIfN1EhICRLj4pzyufbt6rrlW+W/cvc90lGVXVW37r11vnt+7h/zPI/JeJnp8jOm +yTRpmhNF4Shzg8ud059eUxrIiNJYhmEssybL4/G1f3SsGaSNAM7STxfeYWtR0ppMRqs3uNwu +8D6wNQVQoelZBc6HaUi4jgeH3nUKoOtqsdN04zUZCf8ZCPzOhNqwQeCKC/Aj4EN4v6vF7HZr +spsOsjYcHoGgd2I+lyVw1SQACpqHWYkPiPc24f2HWgw1yG4qyFADnQAXVP0meKZMADOFv9H8 +O0VzENJxxrxvD7gYeB7NyJLWahpkNw5kJPgnJPCVKKBJwNUhTeQkDI6gH1cWtFpBB0k0yG4i +yNCU65E51yGNxDUK/veQNE92GuCSBE0aBDYNNA2ymwcyQdgPSLNkJbeg4B+jaTgNcEnA1qIg +igaaBtnNA1nAb+L9XA6xPU1/6eL+G3nhp0nsB0wyr/5fnt3t733sG+/vaNHUILuRIJsmAZhM +0kwPCbi5CE3J/TIMojzC4733v6UDIbcAZKu6emIDC4G0z65HEMcB6xRApTupbyFpkKkBK0uB +i6oisJAs9PEAWB1dgxpkmqLNwQa7Hn2MIgRVE8Dl6BrUpEEWrblqLDoaGTQJ/WFU2s/SpEE2 +HmB5OLRjmIWoueoaXJo0yNS0l2y8osznqmizUJMGmTrA+KgQFdMQfS496FeTBpkiwHIEMBXf +C0dplLT20qRBNhuAdQBcFS0ymmYOMhDMtn9isNN731neztWYAKvo/i5NSSn2sKqLB2+gYOaZ +MfRPuj7g3l0ewJEP9lgDTNO0aLrDqjLMYSPsZeG8DMfyxU+/4cI5Au3o3r99K+0jzLUG0zQ3 +ir8k3Ao7959aIc4Qr3hZlvHKwGcXn/okcjmlWgynm+Q0wDSl11z81CfzpAkCN4clMJikeO9f +3rVTArDwvOsgh6YZmotJFje1h9prqMUCv0f/gXaLvdLTLKmtUj4NME0LNRfv/eu76Hs5+KTB +GTTW8HwF2YNz4pX+Fn/2yc88OAE+ePKzD7LzLihoMRzJYaqYiVosNC3WJ2M+iCwEEvO5z9hq +H4+2f57p0//EoibD8wxrAEjPnvzcg+IcAcaHTI0jHMmhlwXQtHiQAXhOWQYB5IlmIXLTT9Eg +HpiOuSc//8AkHy1L10z4v+prt1/4xDy0WpmNjyai/6iHSmlKCcgMZg19L2PIJvAecH1wzcOw +CucygCnnn3NwGh5Pq/fkFz9Rm3E5qwr3HOmR9JpSA7KPf/M98Mu8rgAiDp4c8D78rgvgw7fs +k6kogpI9+aXXUfsB+FgLzk/839M3FVWWCdBaTFPKNNlAAx1fiSaOwIOg2QWu+CH8gdYCLee1 +AoDMD+4d/GdkWBH47PKXX5/2lkd7Cvd0tBbTlDqQffyf/x01mROizZCLwLvABSZGHokznFfY +PjAe+TX01XqX+dfLUyyjSoDlWIuCpvRpMtJmEvAgl4Gr8LsA19xBaH/AggYsC8DkvloWuH35 +6fsTA406n8eZoI6OKGqaJU001QUAdAhAq/pRw6vgA/IDGxwouJAnrkmfY0YkaEVqX755/+Fr +b79fnyCLeYV7Yg9sfvPBl6S7uLz93tc0YDVNT5O99o3voM91FDAVyXwc+mhlv28sw0rAdiC8 +L7AXxrXLt7bbE2RxV+GeRwnS5dNkgtzSIqVpuubiQPscQiruGPCgWXjCVjwAmtcZdFIH+Urw +hEL8Ppcv3zKTAk1Fk2nNoyndIHvtn94faLMMH+EhBQ+0/gA0DO8z75AANGIjyEzsAij/x6/G +AxqtmTiOXL2UgKb0azIE2tcfHwAY7GvAuQYe3yfrAR/5If5A1HEYHAFP0VgDXgfeGDBbB6CV +YgFNBWRai2laDpANzEavIpqMEeDJAXjOjLvMht8FtgGm5h34/w4BSjzfIKCtD8/L//lZZaCp +rjylSdNygAz32wIANTkwGGofOXiycG/PeNkHXQHut/n9bCNw/108eiPe8MofVLZUgKYyeuQd +LQKalkeTAf3k3zsHABhrqIU2RmC7Bp47CDSvZ7zkoWYrAHjgOY9lNnwgjXjdY2J6XKM9/cJW +WX8+TctA018Sbp2VjBWvNwh0jIIXhnA+7A8bnLfB1Nz98b86L3zw21stMC9r4nOh54Nj+2lt +i3308LwjycnWMn6QNx98abhB4dvvfc2Z43t531/ivj5IwyRfeKb9hWI/JbzHmvU70HeH9yR2 +LWayCeAHn9vKsRVarIaDTAaY0bnl96W98AcSt4VpMVfvNXje2GB5gwwr/NhXzq990Iv7tKpW +NOH8sYMEHwDTDVvGwIKPUYghkJjOLhttICjzG1GQcK/rrurHhvSD+UNBqQeECIec7Uvqie+r +diwTZCoDWhR7kvw7lPfjScBA76lSPmX1xOuokwQQ8I4ilSPP5EEzf7dUNuhbtcQyLWSnzadf +3MoRyLIUVXyFjvlQ4AyAiDOuS94LP2DSpvuvaDDjukZzQB/vvHpw7i4DyODZcoRgqwRqmvCO +Q4U8Xvuw8JwhCFSbqW8HhcJUEoUX0jhg6rvehKahqE1abDRySJWwjg5igKvF1DcYCTYi2BA1 +v/7tr7pzB1kkAH93qwxJt4ba6ip4XH9OWh8yn4F7MlTBxlB7sUHXwBWgdT/yh98tJQBZKcnu +l0lBBs/V2HRGhWBrXYkLMjYY3pZjamudBAlb8AKCBNJuJxD8K2koms29GCCO/S54B36LSecy +YvrbUSDLsDnRh3+0ZQKXgduZDdb2I4wUns8Mgxp+sCML3DZ+xGtl7np1Y92rwG83w4Mga94g +pL8m9KWtsaL7Z/dqCStonjStBWDL1ALHpUZCgDECZ4sEszxBGo05AIy/q0faUKbBalNq8Nz5 +Bj7CAPbHW1ljxUOtVLxm+onK8qoZWUZzMZPxKt4Lo4B+mmF4uTA/jYIqjed/fq/7ypcveLDA +ZCkjDGTAx+2ECKlo64uBmyj/oJUAtMUIP4PXWVS9lcf4Kipp1KAOmjLBJFCcRACMm2jP6fcr +TL68BAd1XVJ/UVrQEt6xFeE3H80/uhhCr/6J7y+Vnv3pT9UQDIKZiAWxDZx/Nli+IAgef4QI +aLC61/enzDQAmLXh0gXsSlAl60cqwUSIATJnAVhrCsKKgDsFgetGtOoy08zE1jjqWQVzqh4M +SJAprLoJokX+T9w0ilR2mbaVPVcP80cRtBG+G4L6VMwj5c+UNBaliEAPDxbt0bGrEgHOzFO6 +Nv/gu4cAmB3fBFzzNjN3+/XMHS8PJp/pm41gDvq8NmBjcJ4Fbq/cRe434bkS/O/6913vV8v/ +z99+LEfzyMbSIsYt0kdBf2oT/apxICHfy4kwiSbxV6yQ91nUUI0zpVHAotIoRaSxGxFFlJlw +FVnAB7Ui1ZMMuPvBBirC9LMivgW+B+/Bsm1KNORiQearm9+5cLL1i84KAmSFnQBYcj5YfIAR +0DZCALQG2m7VO8vc6bvGKttma17X98+QV+k4OHdZykff04eK4w/KTJKHCbMQGeWjhqA7xpet +jCmjHZGGGdMcxYBSR6FcdQmwi4rvz8b4hq5qP2ZmUYL2o1984gJvAzBQqzmDoEZ/FNwIggeu +gUYzcZRI5u6LBmjBirHus2tswHPI633rpd+6dJjauh7LNDjYnlQoAhpIRThOJ3H2FdIIo72Y +jcw1wZcAO0smomjmygJK015jZnEg4/Ty57/Xeflz39sGQAFgEGxDwDAOnsz6C9Bq9B/yqlcz +Vvtn8J8D5ztwbmVW4b7V/jFNcVGpqEfsdpKq4LszTiPM38lJwBPH7zxXMK2jGpkzjKDKopJJ +KDU7bb70m5doDnR+8Hc/kWeGh0saFK93PHtiZNH0gyJGvzMYKWIU7/z6087F/Y+ohqhTuZ+a +RNim2boqmTjom0BeJrICxqSh6l/aAS2UFNhZ0RyGNK0It6JGAROUyaNJh4ilbjvbu7/xX1h4 +64cnHzX9kL+/jqM48mMQWRQAiHZ8cePX/nuTds8sqwBs0UvAkZNfJL8qN2UgRQr+FNKYRd2Z +EeDrzeB9dTa+L65MJqRNJms3SdlTu2f0ndJTbHExmnT4v//w6kAg/fUc/fUas4YAOMFmV9Vi +xwsEF7aeDcZStdtNGsicc/AJNWSBqXV681EyaEairB3GAVtmGWp/41c+dIAPNz7zYWnjre9v +Giv9HbbWLxlrXtNY69fX33x2QHtZq2gDJ8lQqmmYgdTn1dMASweRGbgdw3XgG5c8piFyy63J +omj9065NfoFfOQCwMlMf6tNcULbbTG2hVTvgV2CAZoslH8qkabzpWyILo6r4jbKk1R6OG0O6 +tCATCQB2wNS2RUKyFrFFLY28j/p4mKeoKSX5Wwwymyl2+k4S8KG6t4RpNSp7KKC/dj5uxP/q +EoMrG0M7iM7uIkjWCPjb/eoFUSNB4M5qYqYEbA7JSV1xWlKDopDOUvtkIQDDwj+OC7BFLMct +zBYOzZMG2FiQ5RaVIRqZg8GR0hhNWFz6wIcArjzNE4sz4dA3xwBgi9oayYz6iIpp5G46wiK0 +VTbhtJ5p5g19/x2WcORNZgmAlcX9noFRcyWJzFkp3WjdiXHvHrsdJIvyVVPQCKBpLxve9crS +gQyHRqFJCIzzip6x5NPDO6Tq00hK5aGgR/6WgEw2XCtP/lFaG8bnqQeZAKoW8Bn5W3GDGkE6 +RA2Wgs39oqa/18YADM3Ek9vilJH5LBPkdlygoZkJfBIcloW/caGhBGZoNe43RlqdI5D4mDx+ +3KLWPD8Doa4sosNZIjg4ssCV2O0YmWLBeVIELvygZXb7qMLkw6gQaBjtwxE7ljibQBjziTK1 +Sw00r/MwMy9PGpKP3H8UTDPwPRoRjb6VGGQEjHLMIMNuSGHmRdgS1lO4NW1XAhjeqdlio07o +fETjkb3pCKNBxdjoyLT80HyOMfg4iriMl4U0baG+xwWdrEGE+KvJQIbCCkDrsKtTrtPqMDdT +vGNmM9CyhlHUx0ShO2e3ZP8zXB+SNNOiNLlqNHfs5FUlnwyBhqMkgPmUaz7NOw2+DgrfNuYt +zVvSkglSSFhnTVqUtMtuEdFwpTpL76YgfAkHZ2KQSQCHPg8CbocqIsphnXZ0B9+FoNoEri9o +f7FcAqGxCWhWjLIW+JAd+pjOLQOa34hSY5oEbNgwhS2MY1OaTkIZxEEEO6oDCSYKfJD2sAN+ +XJ6NlgXbncAvs6hi36F32CnasC+bUGh8oJEjXQzxX3l5u5IPWAq8O0rwClMo56zScGPUmctG +w5y4P/ZQ8g2wzp6zwBLaY9LMCQGTqHTPR/5XPJr7CsJjVpKyUxi0uEYRy7QpLw+t6WZRFI7m +PkAYQGQtc2UKa+/JTAlNmpL7ZJp8akWYi5auHk0L12RLoq3K5Dc43Aan0QHVCP/Snud+Ypo0 +yJadhnOIYnR4Hulq06TNxdmRFWPaiiYNMk0xCc3Jkq4GTdpcnA1hZ2clanmwL3z+KyYLCff/ +5d/8/kGaCgL55INgK5A3d4J0eHk7kI4Tch3HJNpwzYpIgy8t0YT7bPiN6T2E83rIvXjN5BZF +VLpak6WLcES2I7mG/6NpiD3+KtuzmiS8uwFWEdhncywz7yA3J0yHl7clAUSLjR+cYFJe8sLv +XEh6BwRGnNGBHck9ArnWZGkn6lD2NQ2NCMCW1ZkkeggtbGEMoFCgnEDrn5W08rmQe8VrtqiN +JGkP78fWH7jDAlsP0XMuahOV/wNUxPsCmqURUfZhenRUGQmBjdUh13AIMLGMBDgzTLtFXZNo +eRZWXrrmRjTKi9kz+jYRCVAPPpAhuSauV4LHEtzbhWvih0EQFARN4BCY0Jw6ENJx6f86+Yo9 +OpqUNr8fG5B9+g+ZNwB+Pgl8PeE6vr9EAnUi5NUONh68vARYBPCOoHWqlPdTyoe4BHeWTMwK +3Y/lLyAI6NndkHedkLZDE7cbuMYn/TpU/gKZnrxcXDNi/s74u+hZnDR8RGUQVxh26T6X8mdT +OtZf/PXvFbS5uHiweQLnA6YRfrhN8vH47NsCtZ6GIFwtAsoOXW8QIHg6pwRmUSM1Ke1mQJOY +BMbNkNacj+fj+aoLmgiBhYN2kXPwftnoF3yfiQ0D5bFK/4nmtT+GkN6BwaOyUB4VahKITtC0 +JjBys7RM+d+heg2WfYfKzreu3adnucncofp2qbw7bDT3TKTNcYEvDbL5UUFgO2BK8t/vjNGI ++JH3qTVuCIC4EkwRTUWhhbdE04fA0pEEORwCwBlphKEJSMDqCRotJzGPHdIGLUFYD0Pusbmm +ikpP8g6bQLRD5WtQPZmU/xblNRcwvTv0LC/7sQDwfbruUjqmUN5sIB1swNxxgSLtk82JphD1 +4jZ/ReIjqZIbOIYCBNLcJlBVyWTapmeOgmCJoEM2WkahEhEIQa2Bi+jUEtat341CJhyvCyfC +D34eeL4DzzbYaImBHeFyNyyqOa4ONcgW55vFBh0Jok3+hEOtc4Va2X3uw0Q8XyMhrvLgB/w3 +7p2Ydp6ELytoTd+chf9sAn2DWnNHIvwu5XWXAitB2id/r075jFOfJvlSR6TF9oQ8MtJqvOxF +DqaIJI8Fc5g3Yo+ovKdU3jKBLtZ0F20uzo96AVbRfBYFNLiQc9v/MZkv5wrvReF7RqBU7TTP +knB5BE4O5DrlqUd5GNuao7kaoQkQIHl6z0MWY54ZAbtJQO0RkCpkBtqU5yqVvaqQdkfIk2h+ +d6iuH7Oke3RjdFHGmpZbcwYilJpmSFE40prs5pLL9NSbVND/CzAAk/ZJrVWlr2oAAAAASUVO +RK5CYII= +--------------C3FD44EAF9B6A93E163D9176-- diff --git a/server/mailet/dkim/src/test/resources/eml/multipart-8bit-attachment-content.txt b/server/mailet/dkim/src/test/resources/eml/multipart-8bit-attachment-content.txt new file mode 100644 index 0000000..2442749 --- /dev/null +++ b/server/mailet/dkim/src/test/resources/eml/multipart-8bit-attachment-content.txt @@ -0,0 +1,92 @@ +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 diff --git a/server/mailet/dkim/src/test/resources/eml/multipart-8bit.eml b/server/mailet/dkim/src/test/resources/eml/multipart-8bit.eml new file mode 100644 index 0000000..3c8c8f4 --- /dev/null +++ b/server/mailet/dkim/src/test/resources/eml/multipart-8bit.eml @@ -0,0 +1,128 @@ +Return-Path: <[email protected]> +MIME-Version: 1.0 +Delivered-To: [email protected] +Received: from 10.233.68.83 (EHLO incoming.james.org) ([10.233.68.83]) + by james-0 (JAMES SMTP Server ) with ESMTP ID 926590876 + for <[email protected]>; + Tue, 21 Jan 2020 07:12:56 +0000 (UTC) +Received: from smtp.james.org (unknown [10.233.68.1]) + by incoming.james.org (Postfix) with ESMTPS id B39A643 + for <[email protected]>; Tue, 21 Jan 2020 07:12:56 +0000 (UTC) +Received: from duc-HP-ProBook-450-G4 (unknown [1.54.162.156]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) + (No client certificate requested) + by smtp.james.org (Postfix) with ESMTPSA id F11B13F386 + for <[email protected]>; Tue, 21 Jan 2020 08:12:55 +0100 (CET) +Date: Tue, 21 Jan 2020 14:12:39 +0700 (ICT) +X-LINAGORA-Copy-Delivery-Done: 1 +From: [email protected] +To: [email protected] +Message-ID: <423733503.3.1579590775567@duc-HP-ProBook-450-G4> +Subject: UTF-8 8bit multipart +Content-Type: multipart/mixed; + boundary="----=_Part_0_238762799.1579590759052" + +------=_Part_0_238762799.1579590759052 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +A 8bit encoded body with €uro symbol. +------=_Part_0_238762799.1579590759052 +Content-Type: application/octet-stream; name=james-logo.png +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; filename=james-logo.png + +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 + +------=_Part_0_238762799.1579590759052-- diff --git a/server/mailet/dkim/src/test/resources/eml/text-only-7bit.eml b/server/mailet/dkim/src/test/resources/eml/text-only-7bit.eml new file mode 100644 index 0000000..84ece72 --- /dev/null +++ b/server/mailet/dkim/src/test/resources/eml/text-only-7bit.eml @@ -0,0 +1,27 @@ +Return-Path: <[email protected]> +MIME-Version: 1.0 +Delivered-To: [email protected] +Received: from 10.233.68.83 (EHLO incoming.james.org) ([10.233.68.83]) + by james-0 (JAMES SMTP Server ) with ESMTP ID -1705393842 + for <[email protected]>; + Wed, 22 Jan 2020 04:11:54 +0000 (UTC) +Received: from smtp.james.org (unknown [10.233.65.0]) + by incoming.james.org (Postfix) with ESMTPS id CCCA943 + for <[email protected]>; Wed, 22 Jan 2020 04:11:54 +0000 (UTC) +Received: from [10.116.29.102] (unknown [1.54.162.156]) + (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) + (No client certificate requested) + by smtp.james.org (Postfix) with ESMTPSA id 2B7D13F393 + for <[email protected]>; Wed, 22 Jan 2020 05:11:53 +0100 (CET) +To: [email protected] +X-LINAGORA-Copy-Delivery-Done: 1 +From: Uncle Bob <[email protected]> +Subject: quoted +Message-ID: <[email protected]> +Date: Wed, 22 Jan 2020 11:11:38 +0700 +User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 + Thunderbird/60.2.1 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: quoted-printable + +A 8bit encoded body with =E2=82=ACuro symbol. diff --git a/server/mailet/dkim/src/test/resources/eml/text-only-8bit.eml b/server/mailet/dkim/src/test/resources/eml/text-only-8bit.eml new file mode 100644 index 0000000..ebe1cc7 --- /dev/null +++ b/server/mailet/dkim/src/test/resources/eml/text-only-8bit.eml @@ -0,0 +1,29 @@ +Return-Path: <[email protected]> +MIME-Version: 1.0 +Delivered-To: [email protected] +Received: from 10.233.68.83 (EHLO incoming.james.org) ([10.233.68.83]) + by james-0 (JAMES SMTP Server ) with ESMTP ID -1705393842 + for <[email protected]>; + Wed, 22 Jan 2020 04:11:54 +0000 (UTC) +Received: from smtp.james.org (unknown [10.233.65.0]) + by incoming.james.org (Postfix) with ESMTPS id CCCA943 + for <[email protected]>; Wed, 22 Jan 2020 04:11:54 +0000 (UTC) +Received: from [10.116.29.102] (unknown [1.54.162.156]) + (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) + (No client certificate requested) + by smtp.james.org (Postfix) with ESMTPSA id 2B7D13F393 + for <[email protected]>; Wed, 22 Jan 2020 05:11:53 +0100 (CET) +To: [email protected] +X-LINAGORA-Copy-Delivery-Done: 1 +From: Uncle Bob <[email protected]> +Subject: quoted +Message-ID: <[email protected]> +Date: Wed, 22 Jan 2020 11:11:38 +0700 +User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 + Thunderbird/60.2.1 +Content-Type: text/plain; charset=utf-8; format=flowed +Content-Transfer-Encoding: 8bit +Content-Language: en-US + +A 8bit encoded body with €uro symbol. + --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
