Welcome, guest | Sign In | My Account | Store | Cart

Notice! PyPM is being replaced with the ActiveState Platform, which enhances PyPM’s build and deploy capabilities. Create your free Platform account to download ActivePython or customize Python with the packages you require and get automatic updates.

pypm install mr.hermes

How to install mr.hermes

  1. Download and install ActivePython
  2. Buy and install the Business Edition license from account.activestate.com
  3. Open Command Prompt
  4. Type pypm install mr.hermes

mr.hermes contains builds that are only available via PyPM when you have a current ActivePython Business Edition subscription.

 Python 2.7Python 3.2Python 3.3
Windows (32-bit)
1.1 Available View build log
Windows (64-bit)
1.1 Available View build log
Mac OS X (10.5+)
1.1 Available View build log
Linux (32-bit)
1.1 Available View build log
Linux (64-bit)
1.1 Available View build log


mr.hermes is an extension of the smtpd.DebuggingServer from the Python standard library. It dumps all mails it receives to the standard output and optionally to files in a configurable directory.


There are several ways to use this package. Probably the most two common are the following.

Command line

Install it with your preferred Python packaging tool (setuptools, distribute, pip or whatever). Run it from the command line using python -m smtpd -n -c mr.hermes.DebuggingServer localhost:8025.

If you want to dump the output to a directory, then set the DEBUG_SMTP_OUTPUT_PATH environment variable. For example like DEBUG_SMTP_OUTPUT_PATH=mails python -m smtpd -n -c mr.hermes.DebuggingServer localhost:8025.


Add a part to your config like this:

# Run a simple smtp server on 8025 that echos incoming email
recipe = zc.recipe.egg
eggs = mr.hermes
entry-points = debugsmtp=runpy:run_module
scripts = debugsmtp
host = localhost
port = 8025
path = ${buildout:directory}/var/mails
initialization =
    import os
    os.environ.setdefault('DEBUG_SMTP_OUTPUT_PATH', '${:path}')
    sys.argv[1:] = ['-n', '-c', 'mr.hermes.DebuggingServer', '${:host}:${:port}']
arguments = 'smtpd', run_name='__main__', alter_sys=True

You can then add this script to something like supervisord and use mr.laforge to automatically start it when you need it.


1.2 - 2013-07-22
  • Make sure mails are sorted properly when filenames conflict. [dokai (Kai Lautaportti), fschulze]
1.1 - 2011-08-04
  • Fix packaging issue which basically made 1.0 a brownbag release. [fschulze]
1.0 - 2011-08-04
  • Initial release [fschulze (Florian Schulze)]

Subscribe to package updates

Download Stats

Last month:1

What does the lock icon mean?

Builds marked with a lock icon are only available via PyPM to users with a current ActivePython Business Edition subscription.

Need custom builds or support?

ActivePython Enterprise Edition guarantees priority access to technical support, indemnification, expert consulting and quality-assured language builds.

Plan on re-distributing ActivePython?

Get re-distribution rights and eliminate legal risks with ActivePython OEM Edition.