Billionmail/BillionMail · error
Not suppliers found
Error message
Not suppliers found
What it means
modifyPostfixNetworksText scans a docker-compose.yml line-by-line to locate the postfix-billionmail service so it can rewrite its networks section. It throws this error when no line containing 'postfix-billionmail:' was found in the file, meaning the compose file has no Postfix service under that name. The function returns the original lines unchanged along with the error, so no modification is applied.
Source
Thrown at core/internal/controller/askai/askai_v1_supplier.go:16
package askai
import (
v1 "billionmail-core/api/askai/v1"
"billionmail-core/internal/service/askai"
"billionmail-core/internal/service/public"
"billionmail-core/utility/types/api_v1"
"context"
"errors"
)
func (c *ControllerV1) List(ctx context.Context, req *v1.ListReq) (res *v1.ListRes, err error) {
res = &v1.ListRes{}
res.Data = askai.List()
if res.Data == nil {
res.SetError(errors.New(public.LangCtx(ctx, "Not suppliers found")))
return res, nil
}
res.SetSuccess(public.LangCtx(ctx, "List of suppliers retrieved successfully"))
return res, nil
}
func (c *ControllerV1) Models(ctx context.Context, req *v1.ModelsReq) (res *v1.ModelsRes, err error) {
res = &v1.ModelsRes{}
res.Data = askai.Models(req.SupplierName)
res.SetSuccess(public.LangCtx(ctx, "List of models retrieved successfully"))
return res, nil
}
func (c *ControllerV1) AddModel(ctx context.Context, req *v1.AddModelReq) (res *v1.AddModelRes, err error) {
res = &v1.AddModelRes{}
res.Data = askai.AddModel(req.SupplierName, req.Title, req.ModelId, req.MaxTokens, req.Capability)
res.SetSuccess(public.LangCtx(ctx, "Model added successfully"))
return res, nilView on GitHub (pinned to fc36c76c05)
Solutions
- Ensure the docker-compose.yml being modified contains a service named exactly 'postfix-billionmail:'
- Verify the path passed to modifyDockerComposeText points to the full BillionMail compose file, not an override/fragment
- If the service was intentionally renamed, update the hardcoded 'postfix-billionmail' key in config_manager.go or rename it back
- Restore the original BillionMail docker-compose.yml and reapply customizations
Example fix
# before (custom compose file)
services:
my-mailer:
image: billionmail/postfix
# after
services:
postfix-billionmail:
image: billionmail/postfix Defensive patterns
Strategy: validation
Validate before calling
data, _ := os.ReadFile(composePath)
if !strings.Contains(string(data), "postfix-billionmail:") {
return fmt.Errorf("%s has no postfix-billionmail service; refusing multi-IP rewrite", composePath)
} Try / catch
lines, err := m.modifyDockerComposeText(path, configs)
if err != nil {
if strings.Contains(err.Error(), "service not found") {
// restore stock compose file or abort with a clear user-facing message
}
return err
} Prevention
- Never hand-trim the BillionMail docker-compose.yml; keep the postfix-billionmail service block intact
- Validate the compose file with 'docker compose config -q' before running multi-IP setup
- Keep service names unchanged when customizing; add overrides instead of renaming
- Log the compose path being edited so wrong-file mistakes are visible
When it happens
Trigger: modifyDockerComposeText is called with a docker-compose.yml that lacks a service key named 'postfix-billionmail' — e.g. a manually trimmed compose file, an override file, or a renamed service.
Common situations: Users replaced the BillionMail docker-compose.yml with a custom one, renamed the service during customization, or the tooling is pointed at the wrong compose file (e.g. an override or fragment file). Also happens with heavily reformatted files where the scanner's indentation assumptions break.
Related errors
- Model not found
- failed to query group: %w
- failed to check unsubscribe: %w
- the recipient has unsubscribed from the current group and ca
- failed to convert overview data: %v
AI-assisted analysis of Billionmail/BillionMail@fc36c76c05 (2026-09-05).
Data as JSON: /api/errors/f87ad649ab54f0b2.
Report an issue: GitHub.