{"id":13705275,"url":"https://github.com/erooster-mail/erooster","last_synced_at":"2025-08-20T20:33:21.002Z","repository":{"id":41555243,"uuid":"467720255","full_name":"erooster-mail/erooster","owner":"erooster-mail","description":"A mail suite written in rust meant to be easy to use.","archived":false,"fork":false,"pushed_at":"2024-08-22T22:56:53.000Z","size":1581,"stargazers_count":52,"open_issues_count":39,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-12-07T14:35:16.090Z","etag":null,"topics":["imap","imap-server","imap4","imap4rev1","imap4rev2","mail","mail-server","maildir","mailserver","rust","rust-lang","rustlang","smtp","smtp-mail","smtp-server","wip"],"latest_commit_sha":null,"homepage":"https://erooster.email","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erooster-mail.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"mtrnord","liberapay":"MTRNord"}},"created_at":"2022-03-09T00:20:03.000Z","updated_at":"2024-11-20T09:58:41.000Z","dependencies_parsed_at":"2023-10-28T14:33:25.134Z","dependency_job_id":"a5e363b4-4ff2-4f32-a3ea-4bc5656d7fcc","html_url":"https://github.com/erooster-mail/erooster","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erooster-mail%2Ferooster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erooster-mail%2Ferooster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erooster-mail%2Ferooster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erooster-mail%2Ferooster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erooster-mail","download_url":"https://codeload.github.com/erooster-mail/erooster/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230454432,"owners_count":18228392,"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","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":["imap","imap-server","imap4","imap4rev1","imap4rev2","mail","mail-server","maildir","mailserver","rust","rust-lang","rustlang","smtp","smtp-mail","smtp-server","wip"],"created_at":"2024-08-02T22:00:36.264Z","updated_at":"2024-12-19T15:10:16.098Z","avatar_url":"https://github.com/erooster-mail.png","language":"Rust","funding_links":["https://github.com/sponsors/mtrnord","https://liberapay.com/MTRNord"],"categories":["Sending"],"sub_categories":["Complete Email Server"],"readme":"\u003c!--\nSPDX-FileCopyrightText: 2023 MTRNord\n\nSPDX-License-Identifier: Apache-2.0\n--\u003e\n\n# Erooster\n\n[![codecov](https://codecov.io/gh/MTRNord/erooster/branch/main/graph/badge.svg?token=ieNQlSkDTF)](https://codecov.io/gh/MTRNord/erooster)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](code_of_conduct.md)\n\nA mail suite written in rust meant to be easy to use.\n\n## Getting started\n\nCurrently, the setup is quite rough.\n\nYou need some certificates for your server (PEM format) and a Postgres database as well as dkim keys.\nThe easiest way to get them is to use opendkim like this:\n\n```bash\nopendkim-genkey \\\n    --domain=\u003chostname\u003e \\\n    --subdomains\n```\n\nyou should save the file in the folder at `mail.dkim_key_path`.\nYou also should add the TXT dns record that is in the txt file to your domain.\n\nTo get started you need a `config.yml` like this, it can either be in /etc/erooster or the working dir:\n\n```yaml\ntls:\n  key_path: \"./certs/key.pem\"\n  cert_path: \"./certs/cert.pem\"\nmail:\n  maildir_folders: \"./maildir\"\n  hostname: \"localhost\"\n  displayname: Erooster\n  dkim_key_path: \"/etc/erooster/keys/default.private\"\n  dkim_key_selector: \"default\"\ndatabase:\n  postgres_url: \"\"\nlisten_ips:\n  - \"[::1]\"\n  - \"127.0.0.1\"\nwebserver:\n  port: 80\n  tls: false\nsentry: false\nrspamd:\n  address: http://localhost:11333\n```\n\nThe maildir_folders defines where the emails and folders can be found at. This is close to the maildir format postfix uses. (We use other files to keep track of the state of it)\n\nAfter that, you can just do `cargo run --release` to run it. The server is reachable via the usual IMAP ports. STARTTLS is only supported for SMTP.\n\n### Setting up users\n\nTo set up users, you can use the `eroosterctl` command.\nIt will talk to the database. So make sure your config file is set up.\n\nTo register a user, you simply run `eroosterctl register` and follow the questions.\nThe password is saved as an argon2 hash inside the database.\n\nTo change a password, there is the `change-password` subcommand.\nYou need to provide the old password and the new one.\nIt is planned that admins can also change this using a pre-encrypted password instead.\nIn the future, this is going to be replaced by an integrated web interface users can directly use.\n\n_Note: The status subcommand at this time doesn't actually check the server status._\n\n## Features\n\n- Imap4rev2 compatible\n- Maildir support\n- TLS by default\n- Single binary\n- Low Resource usage\n- Postgres first\n- Integrated SMTP server\n\n## Non Goal\n\n- Implementing every single piece of optional spec\n- MySQL/MariaDB support\n- Support for IMAP LOGIN command (It is per rev2 spec)\n- Support for POP3\n- Support for Exchange (this is subject to change)\n\n## Error Reporting\n\nErooster by default does not auto report any panics or errors.\nIt provides however a GitHub reporting link on panics.\n\n## Comparisons\n\nAs I made a Reddit post, some comparisons were made in the commands.\nYou can check them out at \u003chttps://www.reddit.com/r/rust/comments/uyxxrg/comment/ia7qwcg/?utm_source=share\u0026utm_medium=web2x\u0026context=3\u003e\n\n## Support\n\nDue to personal constraints, I currently do not prove enterprise support for this. Please open issues instead. I will try to reply as soon as I can, but I cannot guarantee a specific time frame.\n\n## Contact\n\nTo contact the erooster team you can find us at \u003chttps://matrix.to/#/#erooster:midnightthoughts.space\u003e or if an email is absolutely needed please write to [support@nordgedanken.dev](mailto:support@nordgedanken.dev). As written in the Support section, there is no enterprise support at this time. So please don't ask for it. It will just fill up the mailbox. :)\n\n## Note on SQLITE\n\nNote that this isnt officially supported outside of running tests. Some migrations rely on sql functions which sqlite does NOT support.\n\nRunning sqlite in prod means no support whatsoever.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferooster-mail%2Ferooster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferooster-mail%2Ferooster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferooster-mail%2Ferooster/lists"}