Billionmail/BillionMail · error

postfix-billionmail service not found

Error message

postfix-billionmail service not found

What it means

Raised in modifyPostfixNetworksText when scanning the docker-compose.yml lines finds no line containing 'postfix-billionmail:', meaning the compose file does not define the expected Postfix service block. The function cannot locate the section whose networks list it must rewrite, so the multi-IP network reconfiguration of the compose file aborts.

Source

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

	// Find the postfix-billionmail service section
	postfixStartIdx := -1
	postfixNetworksStartIdx := -1
	postfixNetworksEndIdx := -1

	for i, line := range lines {
		if strings.Contains(line, "postfix-billionmail:") {
			postfixStartIdx = i
		} else if postfixStartIdx != -1 && strings.Contains(line, "networks:") {
			postfixNetworksStartIdx = i
		} else if postfixNetworksStartIdx != -1 && strings.TrimSpace(line) != "" &&
			!strings.HasPrefix(line, "        ") && !strings.HasPrefix(line, "\t\t") {
			postfixNetworksEndIdx = i
			break
		}
	}

	if postfixStartIdx == -1 {
		return lines, fmt.Errorf("postfix-billionmail service not found")
	}

	// Copy content up to the postfix networks section
	if postfixNetworksStartIdx != -1 {
		result = append(result, lines[:postfixNetworksStartIdx+1]...)
	} else {
		// If there is no networks configuration, it needs to be added
		return lines, fmt.Errorf("postfix-billionmail networks section not found")
	}

	// Add default billionmail-network configuration with fixed IP
	result = append(result, "        billionmail-network:")
	result = append(result, "          aliases:")
	result = append(result, "            - postfix")
	result = append(result, "          ipv4_address: 172.66.1.100")

	// Add custom network configurations
	for _, cfg := range configs {

View on GitHub (pinned to fc36c76c05)

Solutions

  1. Inspect the docker-compose.yml actually deployed and confirm the Postfix service is named 'postfix-billionmail'
  2. Restore the service block from the reference compose file shipped with BillionMail
  3. If the service was intentionally renamed, update modifyPostfixNetworksText to match the new service key
  4. Verify the correct compose file path is being passed to modifyDockerComposeText
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/internal/service/multi_ip_domain/config_manager.go:412 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/4db40cd53cdda4c6. Report an issue: GitHub.