{ "info": { "author": "Ernest W. Durbin III", "author_email": "ewdurbin@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: No Input/Output (Daemon)", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Topic :: Communications :: Email :: Filters", "Topic :: System :: Networking :: Monitoring" ], "description": "opstacle\n========\n\nAn SMTP proxy built around\n`inbox.py `__ which attempts\nto maintain some sanity as your servers begin to send thousands of\nemails just cause.\n\nThe basic premise is emails from a given server or process will happen,\nbut all 1300 aren't really necessary right this instant. god forbid if\nyou pay by the smtp delivery.\n\nInstallation\n------------\n\n``pip install opstacle``\n\nConfiguration\n-------------\n\nopstacle is configured only by environment variables, and our\ncontestants are:\n\nPretty things\n~~~~~~~~~~~~~\n\n- ``OPSTACLE_FROM_ADDRESS``\n- Most messages will be simply relayed without modification, but we\n need our own name when we send rolled up emails\n- Sample Value: \"Opstacle opstacle@opstacle.io\"\n\nThreshold configuration\n~~~~~~~~~~~~~~~~~~~~~~~\n\n- ``OPSTACLE_INTERVAL``\n- Interval to keep counters when messages have been sent, in seconds\n- Sample Value: 30\n- ``OPSTACLE_MESSAGE_CAP``\n- Max number of messages to send in a given ``OPSTACLE_INTERVAL``\n- Sample Value: 5\n\n\"Fake\" SMTP server (where opstacle will listen)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- ``OPSTACLE_LISTEN_HOST``\n- Sample Value: \"127.0.0.1\"\n- ``OPSTACLE_LISTEN_PORT``\n- Sample Value: 9025\n\n\"Real\" SMTP server\n~~~~~~~~~~~~~~~~~~\n\n- ``OPSTACLE_SMTP_USER``\n- Sample Value: \"postmaster@smtp.opstacle.org\"\n- ``OPSTACLE_SMTP_PASS``\n- Sample Value: \"stopTheInsanity\"\n- ``OPSTACLE_SMTP_HOST``\n- Sample Value: \"smtp.opstacle.org\"\n- ``OPSTACLE_SMTP_PORT``\n- Sample Value: \"587\"\n\nRunning\n-------\n\nOnce installed, opstacle can be invoked by calling ``opstacle``.\n\nLogs are spit directly to YOU! Right there on STDOUT, and no you can't\nturn them down", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ewdurbin/opstacle/", "keywords": "", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "opstacle", "package_url": "https://pypi.org/project/opstacle/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/opstacle/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/ewdurbin/opstacle/" }, "release_url": "https://pypi.org/project/opstacle/1.1.0/", "requires_dist": null, "requires_python": null, "summary": "A dangerous and probably broken SMTP proxy that attempts to keep you sane", "version": "1.1.0" }, "last_serial": 1143674, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "ccf1a4690a418e30fbb2b68ef8776209", "sha256": "5dd9ec79bff99da2fdccc40acbe7864a4f8cc9c013df7d4527970afaf0b9e33d" }, "downloads": -1, "filename": "opstacle-1.0.0.tar.gz", "has_sig": false, "md5_digest": "ccf1a4690a418e30fbb2b68ef8776209", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3790, "upload_time": "2014-01-30T03:33:26", "url": "https://files.pythonhosted.org/packages/cb/1e/d45b63036f3181f0b00b8b07565568536c121b52754572825caf388a003a/opstacle-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "2545adeef798bf438097aea941956ce7", "sha256": "a8b8187866a237db8203ec485729e62885f0baa849dae710de949a3c3703e968" }, "downloads": -1, "filename": "opstacle-1.0.1.tar.gz", "has_sig": false, "md5_digest": "2545adeef798bf438097aea941956ce7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3990, "upload_time": "2014-01-30T03:40:43", "url": "https://files.pythonhosted.org/packages/3b/7f/c7ccf577f50418b26c86f33c3837db3bb2371057baf9bb1a7948bf0ddab9/opstacle-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "71504d1b44788a2d20a30f83939eae60", "sha256": "74a4e401e1c818593d3d00b118d77d2341e498e7094b74cf2ed3d4d2a5de0572" }, "downloads": -1, "filename": "opstacle-1.1.0.tar.gz", "has_sig": false, "md5_digest": "71504d1b44788a2d20a30f83939eae60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4089, "upload_time": "2014-01-30T04:34:07", "url": "https://files.pythonhosted.org/packages/45/2f/741ee9b8512b6f3c1a865c08ff19750c2e3cbb495a24ad51327077f16b7b/opstacle-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "71504d1b44788a2d20a30f83939eae60", "sha256": "74a4e401e1c818593d3d00b118d77d2341e498e7094b74cf2ed3d4d2a5de0572" }, "downloads": -1, "filename": "opstacle-1.1.0.tar.gz", "has_sig": false, "md5_digest": "71504d1b44788a2d20a30f83939eae60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4089, "upload_time": "2014-01-30T04:34:07", "url": "https://files.pythonhosted.org/packages/45/2f/741ee9b8512b6f3c1a865c08ff19750c2e3cbb495a24ad51327077f16b7b/opstacle-1.1.0.tar.gz" } ] }