MailProvider
Fonctionnalité en cours de déploiement. L'interface décrite ici est celle de la prochaine livraison : elle peut encore évoluer, et n'est pas forcément activée sur votre tenant.
apiVersion | mail.stackngo.io/v1alpha1 |
kind | MailProvider |
| Appliqué par | sng apply ou la console (page E-mails) |
À quoi ça sert
Un MailProvider décrit un compte SMTP, par exemple celui de votre hébergeur de messagerie. Les e-mails que votre tenant envoie partent par ce compte. Vous pouvez en déclarer plusieurs (cinq au plus) et rattacher chaque MailUser au fournisseur de votre choix.
Le chiffrement est obligatoire : port 465 avec TLS implicite, ou port 587 avec STARTTLS. Le serveur doit avoir un nom public (pas d'adresse IP). Le mot de passe n'est jamais dans le manifeste : il vient d'un secret de votre tenant.
Exemple minimal
apiVersion: mail.stackngo.io/v1alpha1
kind: MailProvider
metadata:
name: principal
spec:
host: smtp.exemple.fr
port: 587
tls:
mode: starttls
auth:
username: notifications@exemple.fr
passwordSecretRef:
name: smtp-principal
sng apply fournisseur.yml
Exemple complet commenté
apiVersion: mail.stackngo.io/v1alpha1
kind: MailProvider
metadata:
name: principal
spec:
host: smtp.exemple.fr # nom public du serveur SMTP
port: 587 # 465 (tls.mode: implicit) ou 587 (tls.mode: starttls)
tls:
mode: starttls
auth:
username: notifications@exemple.fr
passwordSecretRef: # secret de votre tenant ; le mot de passe n'est jamais dans le manifeste
name: smtp-principal
key: password # défaut : password
limits:
perMinute: 30 # messages par minute ; 60 par défaut, 120 au plus
domainAuth: # enregistrements attendus sur le domaine de vos expéditeurs
spfInclude: spf.exemple.fr
dkimSelectors: [mail]
Champs
MailProvider
MailProvider : un compte SMTP, seule façon d'ajouter un compte d'envoi.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
apiVersion string | mail.stackngo.io/v1alpha1 | ||
kind string | MailProvider | ||
metadata ObjectMeta | Seul metadata.name est à renseigner (nom de la ressource dans votre tenant). | ||
spec MailProviderSpec | |||
status MailProviderStatus |
MailProviderSpec
MailProviderSpec : un compte SMTP.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
host string | Host : nom DNS public du serveur SMTP. | MaxLength: 253 MinLength: 1 Pattern: ^[A-Za-z0-9]([A-Za-z0-9-]\{0,61\}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]\{0,61\}[A-Za-z0-9])?)*$ | |
port integer | Port du serveur SMTP : 465 (TLS implicite) ou 587 (STARTTLS). | Enum: [465 587] | |
tls MailProviderTLS | Mode TLS. Le chiffrement est toujours obligatoire. | ||
auth MailProviderAuth | Identifiants de connexion au serveur SMTP. | ||
limits MailProviderLimits | Débit d'envoi maximal de ce fournisseur. | Optional: {} | |
domainAuth MailProviderDomainAuth | Enregistrements DNS attendus sur le domaine de vos expéditeurs (SPF, DKIM). | Optional: {} |
MailProviderStatus
MailProviderStatus : état observé.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
observedGeneration integer | Dernière version du manifeste prise en compte par la plateforme. | ||
lastProbeAt Time | Date du dernier test de connexion au serveur SMTP. | ||
lastProbeDurationMs integer | LastProbeDurationMs : durée de la dernière sonde. | ||
conditions Condition array | Conditions du fournisseur : SecretResolved, Reachable et Ready. |
MailProviderTLS
MailProviderTLS : mode TLS. Aucune valeur « none » : le TLS est obligatoire.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
mode string | implicit (port 465) ou starttls (port 587). | Enum: [implicit starttls] |
MailProviderAuth
MailProviderAuth : identifiants SMTP. Le mot de passe n'est jamais dans l'objet.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
username string | Identifiant de connexion SMTP. | MaxLength: 254 MinLength: 1 | |
passwordSecretRef PasswordSecretRef | Secret de votre tenant qui contient le mot de passe SMTP. Le mot de passe n'apparaît jamais dans le manifeste. |
MailProviderLimits
MailProviderLimits : débit de l'envoi.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
perMinute integer | PerMinute : messages par minute (plafonné à 120 pour un tenant). | 60 | Minimum: 1 |
MailProviderDomainAuth
MailProviderDomainAuth : enregistrements attendus sur le domaine des expéditeurs.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
spfInclude string | SPFInclude : domaine attendu dans le SPF des expéditeurs (include:<valeur>). | MaxLength: 253 | |
dkimSelectors string array | DKIMSelectors : sélecteurs DKIM à vérifier (<sel>._domainkey.<domaine>). | MaxItems: 8 |
PasswordSecretRef
PasswordSecretRef désigne une clé d'un Secret de votre tenant.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
name string | Name du Secret de votre tenant. | MaxLength: 253 MinLength: 1 | |
key string | Key dans le Secret. | password | MaxLength: 253 MinLength: 1 |
Statut et conditions
| Condition | Sens |
|---|---|
SecretResolved | Le secret et sa clé existent |
Reachable | Le serveur répond : connexion, TLS et authentification réussies (test sans envoi) |
Ready | Les deux précédentes sont vraies : le fournisseur peut envoyer |
Le fournisseur est testé à chaque modification, puis régulièrement. Le message d'une condition fausse nomme la catégorie de l'échec (dns, connect, tls, auth, timeout), jamais le mot de passe ni la réponse du serveur. Depuis la console, le bouton Tester la connexion lance le test sans envoyer de message.
Ce qui se passe à l'application
Le fournisseur est testé aussitôt. Un MailUser rattaché ne peut envoyer qu'une fois le fournisseur Ready. Au-delà de cinq fournisseurs, les plus récents passent Ready=False (raison LimitExceeded).
Ce qui se passe quand vous supprimez
Les expéditeurs rattachés ne peuvent plus envoyer. La console et l'API refusent de supprimer un fournisseur qui a encore des expéditeurs.