Panic's Burnside bridges Twitter to email and back.
Switch branches/tags
Nothing to show
Clone or download
Latest commit b5629ef Jan 20, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin error handling Jan 20, 2016
config catch errors and file them in a separate mailbox Sep 26, 2012
.gitignore ignore .eml files Jan 20, 2016
Gemfile removed system timer Jan 20, 2016
Gemfile.lock removed system timer Jan 20, 2016
LICENSE formatting Sep 26, 2012 typos and grammar in readme Sep 28, 2012


Panic's Burnside bridges Twitter to email and back.

It's particularly useful for companies that provide Twitter support. By handling @questions through an e-mail client, support agents can reply to tweets much quicker, answered tweets can be tracked by "Archiving" them or moving them to a subfolder, multiple agents can work out of the same mailbox (via IMAP), and an easily-searchable archive of tweets can be built over time.

Burnside is intended for shell-level/e-mail server administrators, and requires:

  • Procmail (already working with user accounts on an IMAP/SMTP server)
  • Cron
  • Ruby
  • SMTP server that supports "+" character recipient delimiter for sub-addressing

Other configurations may be possible based on your expertise.

How it works


Periodically, the fetch.rb script is run and it generates an email for every new @mention. We'll assume you're fetching from a twitter account called PanicGWTest and sending mail to The generated email will have the following headers

From: Example User <>

We use username+token sub-addressing to provide a unique from address.

Message-ID: <>

The Message-ID contains the tweet status ID as well as the auth_token.

Subject: Tweet from Example User (@ohhaiexample)
X-Burnside: ignore

The X-Burnside: ignore header prevents our procmail recipe from processing these emails as they come in. This is necessary in the case where your from and to mailboxes are the same.


When a reply to a tweet is received by procmail it's parsed by tweet.rb and a new tweet is generated. If the new tweet is over 140 characters then the email is bounced. If the In-Reply-To header doesn't contain the auth_token then the message is bounced.

The format of the new tweet is

#{@to} #{@reply_text} #{@sig}

sig is a space followed by an em-dash followed by the first letter of the sender's name in the From: header of the reply. Currently tweet.rb splits the reply text using the regex /(.*)On.*wrote:.*/m so this will obviously be a problem for non-English users.


sudo gem install bundler
git clone
cd burnside
bundle install --deployment

Twitter Application

Create a new Twitter Application and get its consumer key and secret. Then, authorize it within your account to make use of it.


Copy the .sample files and rename them. For these instructions we'll assume you make a configuration set named "PanicGWTest". You should end up with the following files:

  • PanicGWTest.header.erb
  • PanicGWTest.html.erb
  • PanicGWTest.txt.erb
  • PanicGWTest.yml

Fill in the details of the .yml file with the OAuth information you got when you created and authorized your application.

  • The sections contains basic IMAP authentication details.

  • to: should be the email address that will receive the messages generated by fetch.rb.

  • mailbox is the mail account/alias that messages will be "from". An agent's reply will be sent here.

  • The auth_token field should contain a randomly generated string of any length. An easy way to make one on Mac OS is with

    dd if=/dev/urandom count=4 2>/dev/null | openssl dgst -sha1


To bridge your tweets to email you'll run bin/fetch.rb as follows

./bin/fetch.rb -c config/PanicGWTest.yml

This task could be run via cron like

*/5 * * * * cd $HOME/burnside; ./bin/fetch.rb -c config/PanicGWTest.yml

To handle incoming email, you'll need to setup Procmail. There's a sample recipe in the config folder. Alternatively, you could write a script that accesses your IMAP inbox and then pipe messages through tweet.rb. Frankly, if you don't already have Procmail setup then this might be a less painful approach.


Burnside was written to be used with Apple Mail, so there are a few assumptions about how it formats emails.


Feel free to fork and send us pull requests

Bug Reporting

Burnside is an unsupported, unofficial Panic product. But, if you can't contribute directly, please file bugs at in the Burnside project. You have to register first, via the Register link in the upper-right hand corner.


See Burnside Mail Plugin, our plugin for Apple Mail that adds a character count to ensure that your Tweets aren't too long.