{"id":15372621,"url":"https://github.com/ousret/hermes","last_synced_at":"2025-10-11T03:31:42.679Z","repository":{"id":42302097,"uuid":"222700707","full_name":"Ousret/hermes","owner":"Ousret","description":"Automates programmables à réaction aux échanges électroniques depuis une boîte IMAP4","archived":true,"fork":false,"pushed_at":"2024-05-13T04:33:48.000Z","size":911,"stargazers_count":16,"open_issues_count":3,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-06T15:58:01.624Z","etag":null,"topics":["automation","hermes","imap","mail","mail-automation","python","web-ui"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ousret.png","metadata":{"files":{"readme":"README-en.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-19T13:18:28.000Z","updated_at":"2025-10-06T09:05:38.000Z","dependencies_parsed_at":"2023-01-23T21:46:25.240Z","dependency_job_id":null,"html_url":"https://github.com/Ousret/hermes","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/Ousret/hermes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ousret%2Fhermes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ousret%2Fhermes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ousret%2Fhermes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ousret%2Fhermes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ousret","download_url":"https://codeload.github.com/Ousret/hermes/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ousret%2Fhermes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006111,"owners_count":26084026,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","hermes","imap","mail","mail-automation","python","web-ui"],"created_at":"2024-10-01T13:52:25.688Z","updated_at":"2025-10-11T03:31:41.853Z","avatar_url":"https://github.com/Ousret.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eProgrammable IMAP4 controllers for humans 👋 \u003ca href=\"https://twitter.com/intent/tweet?text=Hermes%20\u0026url=https://www.github.com/Ousret/hermes\u0026hashtags=python,imap,automatons,developers\"\u003e\u003cimg src=\"https://img.shields.io/twitter/url/http/shields.io.svg?style=social\"/\u003e\u003c/a\u003e\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://travis-ci.org/Ousret/hermes\" target=\"_blank\"\u003e\u003cimg src=\"https://travis-ci.org/Ousret/hermes.svg?branch=master\" alt=\"Travis-CI Build Badge\"\u003e\u003c/a\u003e\n\u003ca href=\"https://www.codacy.com/manual/Ousret/hermes?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=Ousret/hermes\u0026amp;utm_campaign=Badge_Grade\"\u003e\u003cimg alt=\"Codacy Badge\" src=\"https://api.codacy.com/project/badge/Grade/858f5795316e4786a6f8c39d25535756\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/ousret/hermes/blob/master/LICENSE\"\u003e\n   \u003cimg alt=\"License: NPOSL-3.0\" src=\"https://img.shields.io/badge/license-NPOSL%203.0-purple.svg\" target=\"_blank\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://codecov.io/gh/Ousret/hermes\"\u003e\n  \u003cimg src=\"https://codecov.io/gh/Ousret/hermes/branch/master/graph/badge.svg\" /\u003e\n\u003c/a\u003e\n\u003c/p\u003e \n\n\u003e Hermès is a pagan god in Greek mythology - messenger of the gods.\n\n![hermes](https://user-images.githubusercontent.com/9326700/71805247-0eb8a200-3066-11ea-90a8-a58477ce5e8f.jpg)\n\n\u003csub\u003e\u003csup\u003eThe names and logos of `iTop` and `Microsoft Exchange` are displayed only as samples.\nAny IMAP provider or service works with Hermes, just as `iTop` is only one of the services you can use to send HTTP requests. Hermes is not affiliated with Combodo (iTop) or Microsoft (Exchange).\u003c/sup\u003e\u003c/sub\u003e\n\n## Contributions\n\nPlease ⭐ this project if you found it useful. Even better, contribute by : \n  - Reporting issues and problems\n  - Submitting a fix with a pull request\n  - Requesting features to benefit everyone\n\n## 🍰 Why Hermes ?\n\nThis project was created with a specific use case in mind, which brought up the possibilities of a more open and generic use case.\nA company may face this problem :\n\n**How do we manage the interoperability of services with n-tiers, based only on electronic exchanges?**\n\nA company was currently using the ITSM iTop program and the Incoming Mail (Mailbox Scanner) functionalities.\nThe official description of iTop is the following : `This extension runs in the background to scan the defined mail inbox(es) and either create or update tickets based on the content of the incoming emails.`\n\nWith the old solution (Incoming Mail):\n\n1) Limited and restricted message identification\n2) Forced to create IMAP files for *n* operations\n3) Scanner actions are limited to basic operations\n\nThey found themselves extremely limited by Incoming Mail's functionalities.\n\nHermes offers a complete solution, building on what iTop cannot provide.\n\n## ✨ Installation\n\nHermes is easily installed and executed in two ways. Requirements:\n\n  - A usable IMAP / SMTP account\n  - Your choice of a Linux / Unix / Windows environment\n\nWhatever your preferred method, start by running :\n\n```shell\ncd $HOME\ngit clone https://github.com/Ousret/hermes.git\ncd ./hermes\ncp configuration.dist.yml configuration.yml\n```\n\nFirst, modify the configuration with your preferred text editor: `nano`, `vim`, etc..\n\n```shell\nnano configuration.yml\n```\n\n```yaml\nPRODUCTION: \u0026production\n  \u003c\u003c: *common\n  SECRET_KEY: PleaseChangeThisStringBeforeDeployment  # Replace with a long randomly generated string\n  # *-* smtp configuration *-* used to send error reports\n  EMAIL_HOST: 'smtp-host'\n  EMAIL_PORT: 587\n  EMAIL_TIMEOUT: 10\n  EMAIL_USE_TLS: True\n  EMAIL_HOST_USER: 'smtp-user@smtp-host'\n  EMAIL_HOST_PASSWORD: 'secret_smtp'\n  EMAIL_FROM: 'smtp-user@smtp-host'\n  INCIDENT_NOTIFIABLE: 'destination@gmail.com' # Replace with the email to send error reports to\n```\n\n### Method 1 : WITH Docker\n\nIf you've already installed `docker` and `docker-compose` on your machine, you can simply run :\n\n```shell\ndocker-compose up\n```\n\n### Method 2 : WITHOUT Docker\n\nRequirements : `python3`, `pip`, `nodejs`, `npm`. Optional : `mariadb-server` and `mariadb-client`.\n\nThese commands may require superuser privileges. (Installing the `yarn` utility)\n```bash\nnpm install yarn -g\n```\n\n```shell\npip install certifi pyopenssl --user\n\npython setup.py install --user\ncd ./hermes_ui\nyarn install\nyarn build\ncd ..\n```\n\nThe second method requires a database implementation. If you're using `mariadb`, connect and create a `hermes` database.\n\n```sql\nCREATE DATABASE hermes;\n```\n\nIf you don't have `mariadb` installed, you can opt for a lightweight `sqlite` implementation.  \n\nIn the `configuration.yml` file, change the following parameter :\n\n```yaml\nPRODUCTION: \u0026production\n  \u003c\u003c: *common\n  SQLALCHEMY_DATABASE_URI: 'mysql://user:mdp@127.0.0.1/hermes'\n```\n\nIf you don't want to use `mariadb`, replace it with :\n\n```yaml\nPRODUCTION: \u0026production\n  \u003c\u003c: *common\n  SQLALCHEMY_DATABASE_URI: 'sqlite:///hermes.sqlite'\n```\n\nFinally, launch `wsgi.py`.\n\n```shell\npython wsgi.py\n```\n\n### AFTER Method 1 or 2\n\nNavigate to the following address : [http://127.0.0.1:5000](http://127.0.0.1:5000)\nThe default user is `hermes@localhost` and the password is `admin`. \nIt's a good idea to change these after the first connection.\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"900\" alt=\"Capture d’écran 2020-01-10 à 15 59 14\" src=\"https://user-images.githubusercontent.com/9326700/72162392-325f4d80-33c2-11ea-9d10-8d4a5ec19bb1.png\"\u003e\n\u003c/p\u003e\n\n## ⚡ How does it work ?\n\n![hermes-principes](https://user-images.githubusercontent.com/9326700/71805268-2001ae80-3066-11ea-9e8e-386044ddd621.gif)\n\nEssentially, \n\nAn electronic **message** is received -\u003e we use a **series of criteria** from a **detector** to find the nature of the message while preserving evaluation results -\u003e **A series of actions** defined by the designer will be linked in a binary tree -\u003e each action results in a **success** or a **failure** and takes the appropriate following action.\n\n## 👤 Documentation\n\nThis section is a guide to getting started with Hermes quickly.\n\n  - [ ] [Understanding simplified variables with Hermes](docs/CHAPITRE-1.md)\n  - [ ] [Write / save global variables](docs/CHAPITRE-2.md)\n  - [ ] [Configure your IMAP box(es)](docs/CHAPITRE-3.md)\n  - [ ] [Detecting an email message](docs/CHAPITRE-4.md)\n  - [ ] [Creating a controller in response to a message detection](docs/CHAPITRE-5.md)\n  - [ ] [Implement an action sequence](docs/CHAPITRE-6.md)\n  - [ ] [Test and debug the controller](docs/CHAPITRE-7.md)\n\nGoing further :\n\n  - [ ] [Detection criteria](docs/CRITERES.md)\n  - [ ] [The actions](docs/ACTIONS.md) \n  - [ ] [Gmail](docs/GMAIL.md)  \n\n## 🚧 Maintenance\n\nThis program is still in its development stages. \nHermes is stable and available for production and deployment. This project can be improved - ideas for significant refactors are being considered.\n\nA GitHub Project is open with all the tasks to be carried out to make Hermes even more incredible!\n\nFor now, I'm focusing on bugs and security maintenance, and I re-read and approve all contributions.\n\n## ⬆️ Upgrade\n\nHermes may require updates. To do so, run the `upgrade.sh` script.\n\n```shell\n./upgrade.sh\n```\n\n## 📝 License\n\n**Commercial exploitation is strictly prohibited, however, internal use is authorized.**\n\nReleased under \"Non-Profit Open Software License 3.0 (NPOSL-3.0)\"\n\n## Contributor(s) :\n\n  - Ahmed TAHRI @Ousret, Developer and maintainer\n  - Didier JEAN ROBERT @SadarSSI, Initial conception and feature brainstormer\n  - Denis GUILLOTEAU @Dsniss, Initial conception, tester, validator.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fousret%2Fhermes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fousret%2Fhermes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fousret%2Fhermes/lists"}