foxcpp / maddy

✉️ Composable all-in-one mail server.
https://maddy.email
GNU General Public License v3.0
5k stars 240 forks source link

Feature request: JSON config format #548

Open Sohalt opened 1 year ago

Sohalt commented 1 year ago

Use case

Maddy's uses a custom config format. This makes it hard to integrate maddy with solutions for automatic configuration management (both generating maddy config or parsing maddy config). NixOS for example can very easily generate JSON from it's structured module system, but it is much harder to generate the current maddy config format in a meaningful way from nix.

Your idea for a solution

I propose to introduce a canonical JSON representation of the configuration and a way to convert from the current configuration format to the JSON format (similar to how Caddy uses the human readable Caddyfile format and a machine readable JSON format). This also makes it easier to write various adapters that can translate from other mailserver config (e.g. dovecot) to the equivalent maddy config on a best effort basis (similar to how Caddy has adapters e.g. for nginx).

vtolstov commented 1 year ago

I'm not agree with json. Yaml more suitable for config file

Sohalt commented 1 year ago

The goal is not to write JSON by hand, but to have a widely used format that's easy to parse and generate from various tools to build automation around maddy config. Also since YAML is a superset of JSON, any valid JSON is also valid YAML (but not the other way around).