Billionmail/BillionMail · error

Postfix service 'postfix-billionmail' configuration does not

Error message

Postfix service 'postfix-billionmail' configuration does not exist

What it means

Type assertion guard in rebuildPostfixServiceNetworks1: the services map was found, but the value under 'postfix-billionmail' is not a map[string]interface{} (either absent or a scalar/sequence). The Postfix service configuration needed for network rewriting therefore does not exist in usable form.

Source

Thrown at core/internal/service/multi_ip_domain/config_manager.go:616

		}

		customNet["ipam"] = ipamConfig

		networks[networkName] = customNet
	}

	return nil
}

// rebuildPostfixServiceNetworks Rebuild network configuration for Postfix service
func (m *ConfigManager) rebuildPostfixServiceNetworks1(dockerConfig map[string]interface{}, configs []map[string]interface{}) error {
	services, ok := dockerConfig["services"].(map[string]interface{})
	if !ok {
		return fmt.Errorf("missing 'services' section in docker-compose.yml")
	}
	postfixService, ok := services["postfix-billionmail"].(map[string]interface{})
	if !ok {
		return fmt.Errorf("Postfix service 'postfix-billionmail' configuration does not exist")
	}

	// Create a new network mapping, starting with the default network
	newNetworks := map[string]interface{}{
		"billionmail-network": map[string]interface{}{
			"aliases": []string{"postfix"},
		},
	}

	// Add all active custom networks
	for _, config := range configs {
		networkName := gconv.String(config["network_name"])
		postfixIP := gconv.String(config["postfix_ip"])
		alias := gconv.String(config["aliases"])

		if networkName == "" || postfixIP == "" || alias == "" {
			continue
		}

View on GitHub (pinned to fc36c76c05)

Solutions

  1. Confirm the compose file defines postfix-billionmail as a proper service mapping (not null or a list item)
  2. Restore the service definition from a known-good compose template
  3. Guard the lookup with a descriptive error that includes the actual type found
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at core/internal/service/multi_ip_domain/config_manager.go:616 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Billionmail/BillionMail@fc36c76c05 (2026-09-05). Data as JSON: /api/errors/62ae48f369c92fcc. Report an issue: GitHub.