{ "info": { "author": "Innokenty Lebedev", "author_email": "innlebedev@protonmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# Info\n\nSimple SMTP daemon which can save incoming emails to MongoDB and send it to WebSocket.\n\nYou should own domain name, MX record and nginx.\n\n# Install\n\n```bash\n$ pip3 install mail2mongo\n```\n\n## Run\n\n```bash\n$ mail2mongo --help\nusage: main.py [-h] [-m MONGO_URI] [-db DB_NAME] [-cn COL_NAME] [-ap API_PORT]\n [-sp SMTP_PORT] -d DOMAINS [DOMAINS ...]\n\nSave incoming emails to mongodb\n\noptional arguments:\n -h, --help show this help message and exit\n -m MONGO_URI, --mongo MONGO_URI\n Mongo URI (default: mongodb://localhost)\n -db DB_NAME, --db-name DB_NAME\n Mongo data base (default: mail2mongo)\n -cn COL_NAME, --col-name COL_NAME\n Mongo collection name (default: emails)\n -ap API_PORT, --api-port API_PORT\n API port (default: 8080)\n -sp SMTP_PORT, --smtp-port SMTP_PORT\n SMTPD port (default: 8025)\n -d DOMAINS [DOMAINS ...], --domains DOMAINS [DOMAINS ...]\n Allowed domains (default: [])\n```\n\nArgument `-d/--domains` required! It's a domain names list which you own.\n\nFrom python package\n\n```bash\n$ mail2mongo -d example.com -m mongodb://192.168.0.100:27017\n```\n\nFrom Docker image\n\n```bash\n$ docker run -p 8080:8080 -p 8025:8025 inn0kenty/mail2mongo -d example.com -m mongodb://192.168.0.100:27017\n```\n\n## nginx\n\nFile `/etc/nginx/nginx.conf` should contains:\n\n```\nmail {\n server_name ;\n\n auth_http /nginx-auth;\n\n proxy_pass_error_message off;\n\n server {\n listen 25;\n protocol smtp;\n proxy on;\n smtp_auth none;\n xclient off;\n }\n}\n```\n\nThe MX record usually has the form `mail.example.com` where `example.com` your domain name. The `mail.example.com` must be resolved to your ip address.\n\nLocal ip:port - local ip address and port (api_port, default 8080).\n\n## WebSocket\n\nYou can use WebSocket on `/ws` url. Also you should provide email address.\n\nExample\n\n```python\nimport asyncio\nimport aiohttp\n\n\nasync def main():\n async with aiohttp.ClientSession() as session:\n async with session.ws_connect('ws://127.0.0.1:8080/ws?email=foo@example.com') as ws:\n async for msg in ws:\n if msg.type == aiohttp.WSMsgType.TEXT:\n print(msg.json())\n else:\n break\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n```\n\nYou can get messages of two types:\n\nIf something go wrong:\n\n```\n{'type': 'error', 'payload': {'msg': 'Error message'}}\n```\n\nIf you receive new email:\n\n```\n{'type': 'new_mail', 'payload': {'from': 'root@google.com', 'to': 'foo@example.com', 'subject': 'Foo bar', 'text': 'Some message', 'timestamp': '1970-01-01T00:00:00.000000+00:00', '_id': '5ae0988c754ea76f22935378'}}\n```\n\n`_id` - `ObjectId` in MongoDB.\n\nSimilar payload saved to MongoDB.\n\nIf for some reason MongoDB is down, service will continue try to save payload to mongo. At each next step service will be double sleep time (default is 60 seconds).\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/inn0kenty/mail2mongo", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "mail2mongo", "package_url": "https://pypi.org/project/mail2mongo/", "platform": "", "project_url": "https://pypi.org/project/mail2mongo/", "project_urls": { "Homepage": "https://github.com/inn0kenty/mail2mongo" }, "release_url": "https://pypi.org/project/mail2mongo/0.3.3/", "requires_dist": [ "aiohttp>=3.1.3,<4", "aiosmtpd>=1.1,<2", "cchardet>=2.1.1,<3", "motor>=1.2.1,<2" ], "requires_python": ">=3.5", "summary": "Simple SMTP daemon which save incoming emails to MongoDB", "version": "0.3.3" }, "last_serial": 3816396, "releases": { "0.3.3": [ { "comment_text": "", "digests": { "md5": "babf8146f897a2f22b2b5f6974b31f9e", "sha256": "bbae1abc33e12eb394b8a1a70cf5d8a29f11c1c44f242f6ff81e380dc3498985" }, "downloads": -1, "filename": "mail2mongo-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "babf8146f897a2f22b2b5f6974b31f9e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12515, "upload_time": "2018-04-27T08:58:40", "url": "https://files.pythonhosted.org/packages/7d/d1/763fa9ea9fedae92c3fd82e8773bb2174d30f85f2d9876323ba00577faeb/mail2mongo-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c0d44f32ffe72427d531435ed2f4470", "sha256": "07dddf24f86b3252f69cc2ede7ac9f9b211a86553107c1072951c7dec8ca7ca3" }, "downloads": -1, "filename": "mail2mongo-0.3.3.tar.gz", "has_sig": false, "md5_digest": "3c0d44f32ffe72427d531435ed2f4470", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6362, "upload_time": "2018-04-27T08:58:42", "url": "https://files.pythonhosted.org/packages/05/31/fec1f303928bba4dc435d93d1dfd31eceaae62ff6312be010cffef9ffdec/mail2mongo-0.3.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "babf8146f897a2f22b2b5f6974b31f9e", "sha256": "bbae1abc33e12eb394b8a1a70cf5d8a29f11c1c44f242f6ff81e380dc3498985" }, "downloads": -1, "filename": "mail2mongo-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "babf8146f897a2f22b2b5f6974b31f9e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12515, "upload_time": "2018-04-27T08:58:40", "url": "https://files.pythonhosted.org/packages/7d/d1/763fa9ea9fedae92c3fd82e8773bb2174d30f85f2d9876323ba00577faeb/mail2mongo-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c0d44f32ffe72427d531435ed2f4470", "sha256": "07dddf24f86b3252f69cc2ede7ac9f9b211a86553107c1072951c7dec8ca7ca3" }, "downloads": -1, "filename": "mail2mongo-0.3.3.tar.gz", "has_sig": false, "md5_digest": "3c0d44f32ffe72427d531435ed2f4470", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6362, "upload_time": "2018-04-27T08:58:42", "url": "https://files.pythonhosted.org/packages/05/31/fec1f303928bba4dc435d93d1dfd31eceaae62ff6312be010cffef9ffdec/mail2mongo-0.3.3.tar.gz" } ] }