The cosmos generator linked a consumer to its provider only through an '<role>' in group_names reference or an explicit provides: name. A hard dependency has neither -- pinning the provider on unconditionally is exactly what removes the Jinja reference the generator was reading -- so web-svc-asset's bond to web-svc-file vanished from the diagram the moment it became binding. Match a service key against the provider's own primary key from the registry, in both directions. Services the role turns off drew a solid 1:1 edge, claiming a mandatory relationship for something that carries nothing at deploy time. They now render as a red 0..0 edge; edge merging gained a real precedence so a provider consumed through two keys stays live when only one is off. Named colour, not hex: a '#' opens an entity code in the mermaid lexer and turns the whole diagram into a parse error on GitHub. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
3.8 KiB
sys-svc-mail-smtp
Description
The sys-svc-mail-smtp role configures a local SMTP relay using Postfix, listening exclusively on localhost.
It is designed to be used as a fallback when no central Mailu instance is available, enabling applications and system services to send email via localhost:25 without additional configuration.
For general background on SMTP, see SMTP on Wikipedia.
For details about Postfix itself, see Postfix on Wikipedia.
Overview
This role:
- Installs Postfix via
pacmanon Arch Linux. - Configures it as a loopback-only relay, so it:
- only listens on
127.0.0.1, - does not perform local mailbox delivery,
- and is safe to use as a simple outbound relay for the local host.
- only listens on
- Integrates seamlessly with the
sys-svc-mailandsys-svc-mail-msmtproles in the Infinito.Nexus stack.
Typically, sys-svc-mail decides whether to:
- Use Mailu (via
sys-svc-mail-msmtp), or - Fall back to this role (
sys-svc-mail-smtp) and send vialocalhost.
Cosmos
The diagram places sys-svc-mail-smtp in the Infinito.Nexus cosmos: the components it deploys (capabilities), the central services it consumes (dependencies), and its outward reach (federation and bridged external networks).
flowchart LR
subgraph role [sys-svc-mail-smtp 💻]
svc_svc_mail_smtp["svc-mail-smtp"]
end
Solid 1:1 edges are fixed relationships; dashed 0..1 edges are conditional (enabled only in matching deployments); red 0..0 edges are turned off in this role. Node markers show the role's deploy modes (💻 host, 🐳 compose, 🐝 swarm); ❌ marks a service that is explicitly turned off, and ⚙️ an Ansible role dependency declared in meta/main.yml.
Purpose
The main goals of this role are:
- Provide a minimal, secure SMTP relay for hosts that do not run a full mail stack.
- Enable
msmtp(and any other sendmail-compatible client) to send mail by talking tolocalhost:25. - Avoid the complexity of a full MTA configuration while still supporting basic outbound notifications.
This is particularly useful for:
- Monitoring nodes,
- Utility hosts,
- Development or test environments without Mailu.
Features
-
💾 Postfix Installation on Arch Linux
- Uses
community.general.pacmanto install thepostfixpackage.
- Uses
-
🔒 Loopback-Only Configuration
- Configures
inet_interfaces = loopback-onlyto restrict the SMTP daemon to127.0.0.1. - Defines
mynetworks = 127.0.0.0/8for safe local relaying.
- Configures
-
🚫 No Local Mailbox Delivery
- Sets
local_transport = error: local delivery disabledto avoid storing mail locally. - Focus is purely on relaying from localhost rather than full MTA behavior.
- Sets
-
🧩 Integration with Infinito.Nexus
- Meant to be driven by
sys-svc-mail, which decides when to enable this relay. - Works hand in hand with
sys-svc-mail-msmtp, which configures msmtp to talk tolocalhost:25when Mailu is not present.
- Meant to be driven by
Further Resources
- SMTP & Mail Transfer:
- SMTP (Wikipedia): https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
- Postfix:
- Official site: https://www.postfix.org/
- Postfix on Wikipedia: https://en.wikipedia.org/wiki/Postfix_(software)
- Related Infinito.Nexus roles:
sys-svc-mail: central mail orchestrationsys-svc-mail-msmtp: msmtp client and sendmail replacement
Credits
Implemented by Kevin Veen-Birkenbach. Part of the Infinito.Nexus Project and maintained by Kevin Veen-Birkenbach. Licensed under the Infinito.Nexus Community License (Non-Commercial).