Skip to content
Sender Rewriting Scheme (SRS) library for Python
Branch: master
Clone or download
Latest commit 6836606 May 25, 2018

srslib - Sender Rewriting Scheme (SRS) library for Python

srslib is a modern Python implementation of the Sender Rewriting Scheme (SRS).


  • Compatible with Python 2.7 and 3.x;
  • Implements the standard "Guarded" SRS scheme as described in the original SRS paper;
  • Simple to use and understand.


pip install srslib

Example Usage

import srslib

srs = srslib.SRS('my_secret_key')

# Rewrites an email from to
rewritten_addr = srs.forward('', '')
# => ''

# Reverse it to get the address to bounce to.
  bounce_addr = srs.reverse(rewritten_addr)
  # => ''
except srslib.Error as e:
  ...  # Handle errors

# Check if addresses are valid SRS addresses.
assert not srslib.SRS.is_srs_address('')
assert srslib.SRS.is_srs_address(rewritten_addr)


The full documentation for srslib lives at


This library is a clean re-implementation of SRS in modern Python based on the original SRS paper, and taking inspiration from the canonical libsrs2 C implementation and the older pysrs library (which itself is based on the Mail::SRS Perl package).

Compared to these two libraries, srslib

  • ... is a clean, modern, pure-Python implementation and supports Python 3.x;
  • ... discards baggage from Mail::SRS around legacy schemes and settings.


Licensed under the Apache License, Version 2.0.

You can’t perform that action at this time.