{"id":36494421,"url":"https://github.com/iqe/koni","last_synced_at":"2026-01-12T01:59:37.620Z","repository":{"id":64302627,"uuid":"150249832","full_name":"iqe/koni","owner":"iqe","description":"Koni handles Mozilla Autoconfig and Microsoft Autodiscover for all your domains, in one place","archived":false,"fork":false,"pushed_at":"2023-01-24T09:25:30.000Z","size":239,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T02:00:44.665Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iqe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-25T10:48:26.000Z","updated_at":"2024-06-20T02:00:44.666Z","dependencies_parsed_at":"2023-02-13T19:40:22.644Z","dependency_job_id":null,"html_url":"https://github.com/iqe/koni","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/iqe/koni","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iqe%2Fkoni","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iqe%2Fkoni/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iqe%2Fkoni/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iqe%2Fkoni/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iqe","download_url":"https://codeload.github.com/iqe/koni/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iqe%2Fkoni/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28331494,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"ssl_error","status_checked_at":"2026-01-12T00:36:15.229Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-01-12T01:59:37.419Z","updated_at":"2026-01-12T01:59:37.610Z","avatar_url":"https://github.com/iqe.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Koni\n\nKoni handles [Mozilla Autoconfig](https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration) and [Microsoft Autodiscover](https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/autodiscover-for-exchange) for all your domains, in one place. With automatic Let's Encrypt certificates for extra convenience.\n\n## Installation\n\nThese are the basic steps needed to install koni:\n\n1. Download a release from the GitHub release page\n2. Extract koni-$version.tar.gz to your server\n3. Edit koni.conf to match your environment\n4. Optional: Customize and install koni.service systemd unit\n5. Make koni reachable on port 443\n\n   On Linux there are various methods to do this. See e.g. https://superuser.com/questions/710253/allow-non-root-process-to-bind-to-port-80-and-443\n\n   You could also setup a tcp proxy like[haproxy](https://www.haproxy.org/)\n\n6. Run koni (through systemd or directly)\n\n## DNS Setup\n\nFor each domain you want to handle, add the following CNAME entries to DNS:\n\n```\nCNAME autoconfig.userdomain.com    -\u003e koniserver.mydomain.com\nCNAME autodiscover.userdomain.com  -\u003e koniserver.mydomain.com\n```\n\nAdditionally, you can set up a SRV record for clients that only use the SRV record during Autodiscover:\n\n```\nSRV _autodiscover._tcp.userdomain.com -\u003e koniserver.mydomain.com:443\n```\n\nKoni listens for HTTPS requests on `koniserver.mydomain.com` and responds to any clients that request an URL from a `autoconfig.*` or `autodiscover.*` host or directly from `koniserver.mydomain.com`.\n\nIf a user configures their email client, the following happens:\n\n1. User starts mail configuration on the client, enters email address `user@userdomain.com`.\n2. Mail client looks up `autoconfig.userdomain.com` (Mozilla and others) or `autodiscover.userdomain.com` (Microsoft and others)\n3. Mail client sends HTTP(s) request to the domain\n4. Koni looks for a certificate of `autoconfig.userdomain.com` / `autodiscover.userdomain.com` in its certs cache dir. If there is no cert or the cert is expired, koni requests a certificate from Let's Encrypt for the requested domain\n5. Koni sends HTTP response to client, with valid TLS cert.\n6. Mail client proceeds with auto config of the user's email account\n\n## Configuration\n\nSee comments in `koni.conf`.\n\n## Contributing / Building\n\n1. Clone the repo\n4. Hack on the code\n5. Run `git tag -a v\u003cNEW VERSION\u003e`\n6. Run `make release` to build a release package\n7. Run `git push --tags` to push changes to GitHub\n8. Upload the release to GitHub\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiqe%2Fkoni","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiqe%2Fkoni","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiqe%2Fkoni/lists"}