{ "info": { "author": "Pierre Jaury", "author_email": "pierre@jaury.eu", "bugtrack_url": null, "classifiers": [], "description": "Podop is a piece of middleware designed to run between Postfix or Dovecot\non one side, any Python implementation of a table lookup protocol on the\nother side.\n\nIt is thus able to forward Postfix maps and Dovecot dicts to the same\n(or multiple) backends in order to write a single, more flexible backend\nfor a mail distribution.\n\nExamples\n========\n\n- Connect Postfix to a DNS lookup so that every domain that has a proper MX\n record to your Postfix is actually accepted as a local domain\n- Connect both Postfix and Dovecot to an HTTP microservice to run a high\n availability microservice-based mail service\n- Use a single database server running any Python-compatible API for both\n your Postfix and Dovecot servers\n\nConfigure Podop tables\n======================\n\nPodop tables are configured through CLI arguments when running the server.\nYou must provide a ``--name`` for the table, a ``--type`` for the table and\na ``--param`` that parametrizes the map.\n\nURL table\n---------\n\nThe URL table will initiate an HTTP GET request for read access and an HTTP\nPOST request for write access to a table. The table is parametrized with\na template URL containing ``\u00a7`` (or ``{}``) for inserting the table key.\n\n```\n--name test --type url --param http://microservice/api/v1/map/tests/\u00a7\n```\n\nGET requests should return ``200`` and a JSON-encoded object\nthat will be passed either to Postfix or Dovecot. They should return ``4XX``\nfor access issues that will result in lookup miss, and ``5XX`` for backend\nissues that will result in a temporary failure.\n\nPOST requests will contain a JSON-encoded object in the request body, that\nwill be saved in the table.\n\nPostfix usage\n=============\n\nIn order to access Podop tables from Postfix, you should setup ``socketmap``\nPostfix maps. For instance, in order to access the ``test`` table on a Podop\nsocket at ``/tmp/podop.socket``, use the following setup:\n\n```\nvirtual_alias_maps = socketmap:unix:/tmp/podop.socket:test\n```\n\nMultiple maps or identical maps can be configured for various usages.\n\n```\nvirtual_alias_maps = socketmap:unix:/tmp/podop.socket:alias\nvirtual_mailbox_domains = socketmap:unix:/tmp/podop.socket:domain\nvirtual_mailbox_maps = socketmap:unix:/tmp/podop.socket:alias\n```\n\nIn order to simplify the configuration, you can setup a shortcut.\n\n```\npodop = socketmap:unix:/tmp/podop.socket\nvirtual_alias_maps = ${podop}:alias\nvirtual_mailbox_domains = ${podop}:domain\nvirtual_mailbox_maps = ${podop}:alias\n```\n\nDovecot usage\n=============\n\nIn order to access Podop tables from Dovecot, you should setup a ``proxy``\nDovecot dictionary. For instance, in order to access the ``test`` table on\na Podop socket at ``/tmp/podop.socket``, use the following setup:\n\n```\nmail_attribute_dict = proxy:/tmp/podop.socket:test\n```\n\nMultiple maps or identical maps can be configured for various usages.\n\n```\nmail_attribute_dict = proxy:/tmp/podop.socket:meta\n\npassdb {\n driver = dict\n args = /etc/dovecot/auth.conf\n}\n\nuserdb {\n driver = dict\n args = /etc/dovecot/auth.conf\n}\n\n# then in auth.conf\nuri = proxy:/tmp/podop.socket:auth\niterate_disable = yes\ndefault_pass_scheme = plain\npassword_key = passdb/%u\nuser_key = userdb/%u\n```\n\nContributing\n============\n\nPodop is free software, open to suggestions and contributions. All\ncomponents are free software and compatible with the MIT license. All\nthe code is placed under the MIT license.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mailu/podop.git", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "podop", "package_url": "https://pypi.org/project/podop/", "platform": "", "project_url": "https://pypi.org/project/podop/", "project_urls": { "Homepage": "https://github.com/mailu/podop.git" }, "release_url": "https://pypi.org/project/podop/0.2.6/", "requires_dist": [ "aiohttp" ], "requires_python": "", "summary": "Postfix and Dovecot proxy", "version": "0.2.6" }, "last_serial": 5530791, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "0acda1a822d9f58651559b9106f81852", "sha256": "a6d6a7000acfa95a402c0c67aa14c445c217025b423539974cc750c461533a40" }, "downloads": -1, "filename": "podop-0.1.tar.gz", "has_sig": false, "md5_digest": "0acda1a822d9f58651559b9106f81852", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5131, "upload_time": "2018-07-23T21:27:22", "url": "https://files.pythonhosted.org/packages/42/8a/8ee9cd6012c81c2390dce9c5b35020aa511b73b78b6cf2cce6ff6c42a8b0/podop-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "5efb4bda779215c666ed969acf7b6065", "sha256": "68ce98e547f5f4bc26011ffa33430d2787590b6a40dc9038a1f6349c6dfdbc70" }, "downloads": -1, "filename": "podop-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5efb4bda779215c666ed969acf7b6065", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5147, "upload_time": "2018-07-25T18:50:36", "url": "https://files.pythonhosted.org/packages/2d/3d/44d87ce4b88a79a2caaf65dc7f0da913bfffc28126f7a61899d65945d8e2/podop-0.1.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "d6ddc2502bc170232f9a5d2c74cdbfae", "sha256": "0114b185cf987a4e90deb8f1060850846ed3d91e185ecbf5354e6deb379d38b0" }, "downloads": -1, "filename": "podop-0.2.tar.gz", "has_sig": false, "md5_digest": "d6ddc2502bc170232f9a5d2c74cdbfae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6042, "upload_time": "2018-07-26T18:48:36", "url": "https://files.pythonhosted.org/packages/fa/7c/f6626507127e75c2bc6757828278c9ebd93c895ab0dcaf809a3a28508863/podop-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "623d8f33bd777ce17a1fb41a4eb6a1be", "sha256": "556e45370ba0e631e789cb44abcb475aec01d5624c16d213d5741b5599100dc2" }, "downloads": -1, "filename": "podop-0.2.1.tar.gz", "has_sig": false, "md5_digest": "623d8f33bd777ce17a1fb41a4eb6a1be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7191, "upload_time": "2018-07-26T19:10:25", "url": "https://files.pythonhosted.org/packages/14/e3/60bcf08442c852c36e6b8dd8e9bc7fde3ecbcd85e08b734efbb608da0dbb/podop-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "32990df8159e01546d73941f65b35b06", "sha256": "25494d5c98668162d700c1a8febba338707ae68bd6fd6af507e19cfd2f81cbcf" }, "downloads": -1, "filename": "podop-0.2.2.tar.gz", "has_sig": false, "md5_digest": "32990df8159e01546d73941f65b35b06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7208, "upload_time": "2018-07-26T19:14:26", "url": "https://files.pythonhosted.org/packages/75/f2/70431dd72ac4fe6412cfe1e2034eef3ce0fdac97b7cb2ae22601cc88514b/podop-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "403430ae8716de4a0225380acc73de12", "sha256": "c51e3d81be2b6f97b4f4958db6d275cdb9b6689f696678c0304a02a159cdee0f" }, "downloads": -1, "filename": "podop-0.2.3.tar.gz", "has_sig": false, "md5_digest": "403430ae8716de4a0225380acc73de12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7149, "upload_time": "2018-09-26T18:58:01", "url": "https://files.pythonhosted.org/packages/f8/70/4b503fc6471f4f8243ef1f0ff40bb18723d1677592be95908060c53bb104/podop-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "b32a0df59b9ed4d407e168e2f6d36b41", "sha256": "b74760f8907f373d7fadd7ab35108d66b146102191f342e3ee50b4ea73a966e1" }, "downloads": -1, "filename": "podop-0.2.4.tar.gz", "has_sig": false, "md5_digest": "b32a0df59b9ed4d407e168e2f6d36b41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7292, "upload_time": "2018-09-27T11:49:59", "url": "https://files.pythonhosted.org/packages/cd/c4/440790d810c7640ddd3a6c7feddfab673abf6bedec8fc49031612c1ef3d5/podop-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "a0ab47b8eef285286c031b9a0567b158", "sha256": "251277f0b32d3ba7c1c50a1246483b5a37e43c30bc3643e5d6def58b851d6ab4" }, "downloads": -1, "filename": "podop-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "a0ab47b8eef285286c031b9a0567b158", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9181, "upload_time": "2019-07-14T11:34:45", "url": "https://files.pythonhosted.org/packages/fe/2a/fb41b45785e3a78fb9140f9f040de0cc54b1f98edc2d3dd25812b56f1aee/podop-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b09148fa148b38e6bee84cffe43f3e0b", "sha256": "ca5514a509c51e7c8e3093db85e8158c8c4402a0f581fce1452503ebbb7c813c" }, "downloads": -1, "filename": "podop-0.2.5.tar.gz", "has_sig": false, "md5_digest": "b09148fa148b38e6bee84cffe43f3e0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7307, "upload_time": "2019-01-06T12:39:17", "url": "https://files.pythonhosted.org/packages/21/e3/00f368b10ae6586d5cbd629d116100733d747a224e671925f56a05ccf335/podop-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "379e80e3151a19a0cff847dac03e8a71", "sha256": "2a0a1d3a8d5447f3a30c775e52e4c61f6a913ee823fd1850a6a310b0c4e89243" }, "downloads": -1, "filename": "podop-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "379e80e3151a19a0cff847dac03e8a71", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9180, "upload_time": "2019-07-14T11:36:55", "url": "https://files.pythonhosted.org/packages/e5/7b/7b83d53208566fedfab7d253cbacc384d9fa739f0f62009a7b1b3cd2668a/podop-0.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a5608be353fe2f3c1cf29323447bc2a", "sha256": "d269a2b8eb13b1017f1df48349e7f6d40d5fdfc089e0d7752de7b2034870ae25" }, "downloads": -1, "filename": "podop-0.2.6.tar.gz", "has_sig": false, "md5_digest": "1a5608be353fe2f3c1cf29323447bc2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7705, "upload_time": "2019-07-14T11:36:57", "url": "https://files.pythonhosted.org/packages/96/3c/91d620a56fa6cbd94e439e9fe42f0a6b19d891da187c0718321e820acf2e/podop-0.2.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "379e80e3151a19a0cff847dac03e8a71", "sha256": "2a0a1d3a8d5447f3a30c775e52e4c61f6a913ee823fd1850a6a310b0c4e89243" }, "downloads": -1, "filename": "podop-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "379e80e3151a19a0cff847dac03e8a71", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9180, "upload_time": "2019-07-14T11:36:55", "url": "https://files.pythonhosted.org/packages/e5/7b/7b83d53208566fedfab7d253cbacc384d9fa739f0f62009a7b1b3cd2668a/podop-0.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a5608be353fe2f3c1cf29323447bc2a", "sha256": "d269a2b8eb13b1017f1df48349e7f6d40d5fdfc089e0d7752de7b2034870ae25" }, "downloads": -1, "filename": "podop-0.2.6.tar.gz", "has_sig": false, "md5_digest": "1a5608be353fe2f3c1cf29323447bc2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7705, "upload_time": "2019-07-14T11:36:57", "url": "https://files.pythonhosted.org/packages/96/3c/91d620a56fa6cbd94e439e9fe42f0a6b19d891da187c0718321e820acf2e/podop-0.2.6.tar.gz" } ] }