{"record":{"id":"df60dd44d55d5668","repo":"Billionmail/BillionMail","slug":"unsupported-dns-provider-s-supported-providers","errorCode":null,"errorMessage":"unsupported DNS provider: %s, supported providers: %s","messagePattern":"unsupported DNS provider: (.+?), supported providers: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/internal/service/acme/cli.go","lineNumber":116,"sourceCode":"\n\t// Check DNS provider if using DNS verification\n\tif cli.VerifyType == \"dns\" {\n\t\tif cli.DnsProvider == \"\" {\n\t\t\treturn fmt.Errorf(\"DNS provider is required for DNS verification\")\n\t\t}\n\n\t\t// Check if DNS provider is supported\n\t\tsupportedProviders := []string{\"tencentcloud\", \"alidns\", \"cloudxns\", \"azuredns\", \"cloudflare\", \"godaddy\"}\n\t\tisSupported := false\n\t\tfor _, provider := range supportedProviders {\n\t\t\tif cli.DnsProvider == provider {\n\t\t\t\tisSupported = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif !isSupported {\n\t\t\treturn fmt.Errorf(\"unsupported DNS provider: %s, supported providers: %s\",\n\t\t\t\tcli.DnsProvider, strings.Join(supportedProviders, \", \"))\n\t\t}\n\n\t\t// Check DNS config\n\t\tif cli.DnsConfig == nil || len(cli.DnsConfig) == 0 {\n\t\t\treturn fmt.Errorf(\"DNS provider credentials are required for DNS verification\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n/**\n * @brief Apply for certificate\n * @return certificatePath, privateKeyPath, error\n */\nfunc (cli *AcmeCLI) Apply() (string, string, error) {\n\t// Validate parameters","sourceCodeStart":98,"sourceCodeEnd":134,"githubUrl":"https://github.com/Billionmail/BillionMail/blob/fc36c76c050c3775c5e899faf7403cf0262d2744/core/internal/service/acme/cli.go#L98-L134","documentation":"Parameter check in AcmeCLI.Validate: the configured DnsProvider is not in the hard-coded supported list (tencentcloud, alidns, cloudxns, azuredns, cloudflare, godaddy), so acme.sh has no DNS API script for it. The error interpolates the offending provider and the full supported list.","triggerScenarios":"Setting DnsProvider to \"route53\", \"dnspod\", \"Google\", or any string not exactly matching a supported provider name, with VerifyType=\"dns\".","commonSituations":"Users assuming their DNS host is supported; provider names with different casing or aliases (e.g. \"aliyun\" vs \"alidns\"); providers added in newer versions but the deployment runs older code.","solutions":["Use one of: tencentcloud, alidns, cloudxns, azuredns, cloudflare, godaddy (exact lowercase match)","Map your provider alias to a supported name before calling Apply (e.g. aliyun -> alidns)","Use HTTP verification instead if your DNS provider is unsupported"],"exampleFix":"// before\ncli.DnsProvider = \"route53\" // unsupported\n// after\ncli.DnsProvider = \"cloudflare\" // or another supported provider\n// alias map example\naliases := map[string]string{\"aliyun\": \"alidns\", \"dnspod\": \"tencentcloud\"}","handlingStrategy":"validation","validationCode":"supported := map[string]bool{\"tencentcloud\": true, \"alidns\": true, \"cloudxns\": true, \"azuredns\": true, \"cloudflare\": true, \"godaddy\": true}\np := strings.ToLower(strings.TrimSpace(cli.DnsProvider))\nif !supported[p] { return fmt.Errorf(\"provider %q unsupported; use one of the six listed in docs\", p) }","typeGuard":null,"tryCatchPattern":"if err := cli.Validate(); err != nil {\n    if strings.Contains(err.Error(), \"unsupported DNS provider\") {\n        log.Printf(\"fix --dns-provider (case-sensitive, see supported list): %v\", err)\n    }\n    os.Exit(1)\n}","preventionTips":["Use exact lowercase provider names from the supported list","Maintain an alias map for common synonyms (aliyun->alidns, dnspod->tencentcloud)","Check provider support before choosing DNS verification for a zone","Pin CLI/config to versions where your provider is supported"],"tags":["validation","acme","dns","unsupported-value"],"backgroundTag":"invalid-enum-value","analyzedSha":"fc36c76c050c3775c5e899faf7403cf0262d2744","analyzedAt":"2026-09-05T21:28:54.019Z","contentChangedAt":"2026-09-05T21:28:54.019Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}