Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Swift Mailer Update

Swift Mailer Update

Norio Suzuki

July 16, 2016
Tweet

More Decks by Norio Suzuki

Other Decks in Technology

Transcript

  1. v5.2.1 (2014-06-13) * SECURITY FIX: fixed CLI escaping when using

    sendmail as a transport Prior to 5.2.1, the sendmail transport (Swift_Transport_SendmailTransport) was vulnerable to an arbitrary shell execution if the "From" header came from a non-trusted source and no "Return-Path" is configured. * fixed parameter in DKIMSigner * fixed compatibility with PHP < 5.4
  2. v5.2.2 (2014-09-20) * fixed Japanese support * fixed the memory

    spool when the message changes when in the pool * added support for cloning messages * fixed PHP warning in the redirect plugin * changed the way to and cc-ed email are sent to only use one transaction
  3. v5.3.0 (2014-10-04) * fixed cloning when using signers * reverted

    removal of Swift_Encoding * drop support for PHP 5.2.x
  4. v5.4.0 (2015-03-14) * added the possibility to add extra certs

    to PKCS#7 signature * fix base64 encoding with streams * added a new RESULT_SPOOLED status for SpoolTransport * fixed getBody() on attachments when called more than once * removed dots from generated filenames in filespool
  5. v5.4.1 (2015-06-06) * made Swiftmailer exceptions confirm to PHP base

    exception constructor signature * fixed MAIL FROM & RCPT TO headers to be RFC compliant
  6. v5.4.2 (2016-05-01): part 1 * fixed support for IPv6 sockets

    * added auto-retry when sending messages from the memory spool * fixed consecutive read calls in Swift_ByteStream_FileByteStream * added support for iso-8859-15 encoding * fixed PHP mail extra params on missing reversePath
  7. v5.4.2 (2016-05-01): part 2 * added methods to set custom

    stream context options * fixed charset changes in QpContentEncoderProxy * added return-path header to the ignoredHeaders list of DKIMSigner * fixed crlf for subject using mail * fixed add soft line break only when necessary * fixed escaping command-line args to Sendmail
  8. v5.4.3 (2016-07-08) * fixed SimpleHeaderSet::has()/get() when the 0 index is

    removed * removed the need to have mcrypt installed * fixed broken MIME header encoding with quotes/colons and non-ascii chars * allowed mail transport send for messages without To header * fixed PHP 7 support
  9. added the possibility to add extra certs to PKCS#7 signature

    (v5.4.0) • Possible to add intermediate Certs when S/MIME sending. • https://github.com/swiftmailer/swiftmailer/pull/561
  10. added support for iso-8859-15 encoding (v5.4.2) • Possible to send

    mail encoded ISO-8859-15 • 8-bit single-byte coded graphic character sets — Part 15:
 Latin alphabet No. 9 • https://github.com/swiftmailer/swiftmailer/pull/712
  11. SECURITY FIX: fixed CLI escaping when using sendmail as a

    transport (v5.2.1) • Remote code execution when using sendmail • Lack of escapeshellarg() • https://github.com/swiftmailer/swiftmailer/pull/626
  12. fixed Japanese support (v5.2.2) • Mail was broken when it

    was encode by ISO-2022-JP • mb_convert_encoding() • From v5.2.1 • https://github.com/swiftmailer/swiftmailer/pull/475
  13. fixed MAIL FROM & RCPT TO headers to be RFC

    compliant (v5.4.1) • Remove unnecessary white spaces from SMTP request • NG: MAIL FROM: <[email protected]>
 OK: MAIL FROM:<[email protected]> • https://github.com/swiftmailer/swiftmailer/pull/596
  14. fixed broken MIME header encoding with quotes/colons and non-ascii chars

    • MIME header was broken when using special chars such as ":", "[", "@", etc or non-ascii chars such as "Ö", "Ä", "Ü" etc. • https://github.com/swiftmailer/swiftmailer/pull/774
  15. Install % ruby --version
 ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]

    % gem install mailcatcher
 [snip]
 17 gems installed
  16. Execute % mailcatcher
 Starting MailCatcher
 ==> smtp://127.0.0.1:1025
 ==> http://127.0.0.1:1080
 ***

    MailCatcher runs as a daemon by default.
 Go to the web interface to quit.
  17. HELO localhost % telnet localhost 1025
 Trying 127.0.0.1...
 Connected to

    localhost.
 Escape character is '^]'.
 220 EventMachine SMTP Server
 HELO localhost
 250 Ok EventMachine SMTP Server
 MAIL FROM:<[email protected]>
 250 Ok
 RCPT TO:<[email protected]>
 250 Ok DATA
 354 Send it
 To: <[email protected]>
 From: <[email protected]>
 Subject: Hello mailcatcher
 
 Hi, MailCatcher.
 .
 250 Message accepted
 QUIT
  18. API: /messages [ { "id": 1, "sender": "<[email protected]>", "recipients": [

    "<[email protected]>" ], "subject": "Hello mailcatcher", "size": "102", "created_at": "2016-07-07T23:18:27.000+00:00" } ] % curl -s localhost:1080/messages | jq
  19. API: /messages/:id.json { "id": 1, "sender": "<[email protected]>", "recipients": [ "<[email protected]>"

    ], "subject": "Hello mailcatcher", "source": "To: <[email protected]>\r\nFrom: <[email protected]>\r\nSubject: Hello mailcatcher\r\n\r\nHi, MailCatcher.\r\n", "size": "102", "type": "text/plain", "created_at": "2016-07-07T23:18:27.000+00:00", "formats": [ "source", "plain" ], "attachments": [] } % curl -s localhost:1080/messages/1.json | jq
  20. Sample TestCase use Suzuki\PHPUnit\MailCatcherTestCase; class SendMailTest extends MailCatcherTestCase { public

    function testSend() { $sendMail = new SendMail(); // Send plain text mail $sendMail->send(); $sendMail->send(); $this->assertMailCount(2); $this->assertMailSubject('This is a test mail'); $this->assertMailPlainBodyContains('Hi, it is test'); $this->assertMailHtmlBodyEmpty(); } }