sys-svc-mailยถ
Descriptionยถ
The sys-svc-mail role acts as the central mail orchestration layer in the Infinito.Nexus stack.
It wires together:
Stalwart as a full-featured mail server (when available),
msmtp as a lightweight sendmail-compatible SMTP client, and
an optional local SMTP relay (Postfix) for hosts without Stalwart.
For more background on the underlying protocol, see Simple Mail Transfer Protocol (SMTP) on Wikipedia.
Overviewยถ
This role provides a unified mail setup for your hosts:
If the host is part of the active mail providerโs group (
MAIL_PROVIDER), it:asserts the provider endpoint was preloaded (submission token present),
and prepares the system to send emails through the provider using the
sys-svc-mail-msmtprole.
If the host is not running Stalwart, it:
optionally configures a local SMTP relay via
sys-svc-mail-smtp(Postfix onlocalhost:25),and still configures
msmtpas a sendmail-compatible client.
This makes sys-svc-mail the canonical entrypoint for โmail capabilitiesโ on a node, abstracting away whether the actual delivery happens via Stalwart or a local relay.
Cosmosยถ
The diagram places sys-svc-mail 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 ๐ป]
svc_svc_mail["svc-mail"]
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 purpose of this role is to:
Provide a consistent mail-sending interface for all hosts in the Infinito.Nexus ecosystem.
Automatically choose between:
Stalwart-backed delivery (with authentication tokens), or
a local SMTP relay on localhost, depending on the presence of
web-app-stalwartin the hostโs groups.
Ensure that system services and applications can always send notifications (e.g. health checks, alerts, job results) without each role having to care about the underlying mail plumbing.
Featuresยถ
๐ Mail-provider integration (when available)
Asserts the active providerโs submission token was provisioned before configuring external mail.
Routes outbound mail through the provider via
sys-svc-mail-msmtp.
๐ก Smart Fallback to Localhost
If no
web-app-stalwartis present, the role can configure a local Postfix-based SMTP relay viasys-svc-mail-smtp.Combined with
sys-svc-mail-msmtp, this enables sending mail vialocalhost:25without additional configuration in other roles.
๐จ msmtp Client Configuration
Delegates installation and configuration of msmtp to
sys-svc-mail-msmtp.Supports both authenticated Stalwart delivery and unauthenticated localhost-based delivery.
๐งฉ Composable Design
Uses internal
run_once_*flags to avoid repeated setup.Cleanly integrates with the Infinito.Nexus stack and shared utilities.
Further Resourcesยถ
Mail server:
Stalwart: https://stalw.art/
SMTP (protocol): https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
SMTP client:
msmtp: https://marlam.de/msmtp/
msmtp on Wikipedia: https://en.wikipedia.org/wiki/Msmtp
Infinito.Nexus:
Main repository: https://s.infinito.nexus/code
Documentation: https://docs.infinito.nexus
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).