Postmark

Posted by Comments

As many of our customers know, email delivery is the core of our business. A big part of ensuring that your emails get to the inbox is email authentication, such as DKIM and SPF. A recent change in Gmail/Google now requires that DKIM keys are at least 1024-bit in length. When Postmark first launched a few years ago, we started with 768-bit keys, which now results in Gmail showing DKIM as “weak” and displaying a “via” tag. Fortunately inbox rates are not affected.

As a temporary solution, we’ve been slowly upgrading keys manually for customers. It’s been a painful and very manual process. In an effort to make it easy to upgrade your DKIM keys, we’ve created a new process that allows you to automatically generate a new (and stronger) key pair for your domains. We worked hard to make the process as easy as possible.

Continue reading…

We’re happy to announce a big update for both of our official Ruby libraries: postmark 1.0 — Ruby developer’s little helper — and postmark-rails 0.5.0, specifically crafted for Ruby on Rails and ActionMailer.

Keeping up with the latest improvements

Recently, while writing documentation for the Postmark Heroku Add-on, I had an opportunity to play with Postmark libraries for different programming languages and frameworks, built by our awesome community. It didn’t take too long to realise that we might learn a lot from them. When we first released the gems in 2009, our goals were pragmatic: by integrating with the TMail library we targeted Ruby on Rails projects and the other software already running in production. Later we added more features and support for the Ruby Mail library, which now finally replaced TMail. Still it was clear that at some point we’d need to rethink what our customers want from the libraries. At that same time, the Ruby community evolved peculiarly fast: new tools and gems appeared, became popular and faded out quickly. So we took time to focus on Postmark development, while only issuing bug fixes for the libraries.

So, what has changed in Ruby since 2009? First, the tools and the whole infrastructure have significantly matured. Bundler, RSpec 2 and the new language features have brought the developer’s experience to a new level. Thanks to the amazing Travic-CI continuous integration service, the value of automated testing has grown even more, although it had always been particularly high in the Ruby community. Practicality of Ruby development has moved further with automated monitoring of projects’ code quality provided by Code Climate for free to all open source projects. The other trend is the uprising demand for concurrency support, popularised by JRuby’s real threading, Celluloid and Sidekiq. I’m glad to see how the influence of functional programming languages is affecting the Ruby community, which now favours pure data structures and tries to avoid unneeded abstractions and reduce the amount of mutable state in code.

The goal was not to just bring all those amazing new things to the libraries, but to see how it affects the real value, how it makes our customers’ happy. Whenever you think about the architectural changes, backward compatibility is always a concern. We were able to keep the public interfaces fully compatible with the legacy versions, while changing almost everything behind it. The new architecture is ready to be used by concurrent applications: whenever the old version failed or used memory locking, the new one allows you to take the most from the multi-threaded approach.

Better integration and more features

While Postmark as a service has always tried to simplify the way you send your application’s emails, the postmark gem required you to additionally install the Ruby Mail library, which was designed to work with traditional email interfaces. It’s no longer true: the gem now allows you to send emails right away, as easy as using the pure ruby hashes.

While making sure the new libraries are architecturally tidy, we introduced the support for some lesser-known features of the Postmark API. Now you can send emails in batches, work with bounces and change a server’s info easily. We also added a way to give Postmark’s inbound JSON some Ruby flavour, so the keys are underscored symbols instead of camelized strings. Check out the README file for more examples.

The biggest challenge was to properly test the new libraries and take advantage of the Travis-CI service. After adding a sufficient unit test suite written in RSpec 2.0, I took advantage of the postmark test api key, which allowed me to interact with the real API in the integration tests. This way it doesn’t unveil any sensitive information or require fake HTTP requests to be used. As a finishing touch I added Code Climate monitoring for the libs, and they both received the highest score of 4.0. Of course, that result can not be fully trusted, and personally I see a lot of room for improvement, but it definitely makes us proud of the achieved results.

We’re sorry it took so long, but we sincerely hope you’ll love the updates now that they’re released. Please file issues on Github or email support if you face any problems with the updated libraries. We’re always open for contributions, and if you’re willing to add something to the libraries, we’ll be happy to accept your pull requests.

With Postmark, a day doesn’t go by that I don’t think to myself how simple it is to use it and how fast you can start sending emails.

Simple, easy, fast - three words which are our top priority goals. Achieving all three, especially sending emails fast comes with a price: reliability. From day one, our goal has been to deliver email to you reliably. Losing emails or emails not reaching your inbox has never been an option.

We have been working very hard to maintain this. My main goal today is to share with you what I do, as a tester, to make sure Postmark is doing its job.

Continue reading…

Posted by Comments

It’s not unusual to have a flashback to the Netscape Navigator 4 and Internet Explorer 5 days when working on an HTML email. The quality of rendering engines is totally inconsistent, most modern development techniques are unavailable, and even images – an essential element of many emails – are turned off by default in many clients. This can feel like 1998, but the web development community has learned a lot since then. Strategies like progressive enhancement and modern tools like Litmus can help us build HTML emails suited for today’s Babylon of inconsistent desktop clients, various web clients, tablets, smartphones, and high resolution displays.

Last month we decided to start sending educational emails to new Beanstalk customers to familiarize them with our features. The plan was to send a total of three emails with a set interval between them. After designing these emails I decided to explain my process and go through the tools and techniques I used.

Continue reading…

Posted by Comments

You can now easily send and parse emails in Heroku using Postmark. We’ve been wanting to do this for a long time, and thanks to the efforts of Artem on our team, we finally put it together.

If you use Heroku, or want to use Heroku, there are only three simple steps to using Postmark’s Heroku Add-on:

  1. Sign up for the Heroku beta program.
  2. Add Postmark on the add-on page or run in the command line:
    $heroku addons:add postmark:test
  3. Follow the documentation to get started.

Once the Postmark add-on is installed, you will be able to send 10,000 emails for free each month through your Heroku application. During the beta, you will not be able to send more than 10,000 emails per month. Once the add-on is out of beta, we will announce the pricing plans on Heroku that will take effect once you exceed the 10,000 limit.

If you use Heroku, or want to, we’d love your help testing the new add-on. Let us know what you think or if you need help getting started.

Posted by Comments

First and foremost, Postmark is an infrastructure product. It’s our job to send your emails and get them to the inbox, with minimal or no downtime so you can rely on us. After that, everything is secondary. This past Saturday, we launched SMTP servers in four new data centers around the world in addition to our Chicago data center, including:

  • Sydney, Australia
  • Dublin, Ireland
  • San Jose, California
  • Ashburn, Virginia

Continue reading…

Posted by Comments

Over the past week and a half, Postmark has suffered numerous outages and delays on our front-end activity feed. While these issues have never negatively affected our API, sending, or the delivery of messages, it has caused a lot of confusion for our customers and for that we are profoundly sorry.

About 10 days ago we performed a fairly routine move of our physical Cloudant (Big Couch) servers at ServerCentral to a new cabinet. We have four total servers which are managed by Cloudant so it’s perfectly feasible to move them, one at at time, and then bring them back into a cluster. Meanwhile, the front-end activity feed is powered by ElasticSearch which uses the couchdb-river plugin to send user message data directly to ElasticSearch for indexing. 99% of the time this works extremely well.

Continue reading…

Posted by Comments

The past seven days have been a whirlwind. I know a lot of our customers have noticed some issues with activity and sending the last few days after our migration. I want to give an update on what happened and what we have to look forward to.

First, why we moved to Cloudant

We’ve been using MongoDB ever since we released the activity feed, which was only a few months after we launched Postmark. It’s been a long and rough relationship to say the least. Initially the problem was basic instability back before MongoDB had replicasets. After that, it was search issues and disk access. Our dataset is pretty big and constantly growing. We solved that by moving all search and queries to Elastic Search (ES). It worked incredibly well, even though ES itself is young, we had to build our own oplog to ES follower, and ES has some of its own quirkiness. Over time, we got MongoDB to perform well by throwing a lot of SSDs at it and everything became pretty stable. At that point we still had some issues and bugs that would appear in MongoDB and we were not big fans of the master/slave architecture, so we decided to move on.

We evaluated a lot of options, such as Riak, CouchDB, Cassandra, and even MySQL. We were looking for a solution that would allow us to scale easily (by just adding a node) and something that fit in with our existing infrastructure (Elastic Search). About a year and a half ago we had talked to Cloudant (a Postmark customer). Even though at that point we were not ready to migrate (this was before ES), we really liked the offering. This time around, we decided that Cloudant was a perfect fit. Not only did it perform well in our tests, it was a drop-in replacement when it comes to Elastic Search and our data model.

Continue reading…

Posted by Comments

While you trust Postmark to send your emails, you also rely on our stats and digests to keep you updated on how it’s going. Email sending stats are something that can involve multiple people you’re working with. For a long time you’ve been asking for a way to share digests or server stats with your team members and clients. Now it’s easy to do, just invite them to your Postmark account.

Users page

You can manage people in your account on our new Users page. We took the liberty of personalizing them with Gravatar, so you can actually see their faces. Each person can view reports, email activity and receive email digests. They don’t have access to the account section, sender signatures, server settings or credentials. Those sections are accessible for only the owner.

Users profile

Also don’t miss the new Permissions tab on the server page. To make permission management really simple we allow you to configure users access both per person and per server. When you give people access to a server for the first time, they will receive an email notification about the new server available to them.

To bring this all to life we had to switch our authentication system to use usernames. This way one person could belong to more than one account. If you’re an existing Postmark user, your email has become your username. You can change your username in your profile at anytime if need.

A few more notes on usernames and email addresses:

  • A username should be unique Postmark-wide.
  • Emails should be unique Account-wide.
  • You can own only a single account using a single email address.

This is a big update for Postmark and we would really love to hear your feedback. If you have any questions please leave a comment below or contact support.