Aller au contenu principal

MailProvider

Bêta

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.

apiVersionmail.stackngo.io/v1alpha1
kindMailProvider
Appliqué parsng 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​

fournisseur.yml
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é​

fournisseur.yml
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.

ChampDescriptionDéfautValidation
apiVersion stringmail.stackngo.io/v1alpha1
kind stringMailProvider
metadata ObjectMetaSeul metadata.name est à renseigner (nom de la ressource dans votre tenant).
spec MailProviderSpec
status MailProviderStatus

MailProviderSpec​

MailProviderSpec : un compte SMTP.

ChampDescriptionDéfautValidation
host stringHost : 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 integerPort du serveur SMTP : 465 (TLS implicite) ou 587 (STARTTLS).Enum: [465 587]
tls MailProviderTLSMode TLS. Le chiffrement est toujours obligatoire.
auth MailProviderAuthIdentifiants de connexion au serveur SMTP.
limits MailProviderLimitsDébit d'envoi maximal de ce fournisseur.Optional: {}
domainAuth MailProviderDomainAuthEnregistrements DNS attendus sur le domaine de vos expéditeurs (SPF, DKIM).Optional: {}

MailProviderStatus​

MailProviderStatus : état observé.

ChampDescriptionDéfautValidation
observedGeneration integerDernière version du manifeste prise en compte par la plateforme.
lastProbeAt TimeDate du dernier test de connexion au serveur SMTP.
lastProbeDurationMs integerLastProbeDurationMs : durée de la dernière sonde.
conditions Condition arrayConditions du fournisseur : SecretResolved, Reachable et Ready.

MailProviderTLS​

MailProviderTLS : mode TLS. Aucune valeur « none » : le TLS est obligatoire.

ChampDescriptionDéfautValidation
mode stringimplicit (port 465) ou starttls (port 587).Enum: [implicit starttls]

MailProviderAuth​

MailProviderAuth : identifiants SMTP. Le mot de passe n'est jamais dans l'objet.

ChampDescriptionDéfautValidation
username stringIdentifiant de connexion SMTP.MaxLength: 254
MinLength: 1
passwordSecretRef PasswordSecretRefSecret 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.

ChampDescriptionDéfautValidation
perMinute integerPerMinute : messages par minute (plafonné à 120 pour un tenant).60Minimum: 1

MailProviderDomainAuth​

MailProviderDomainAuth : enregistrements attendus sur le domaine des expéditeurs.

ChampDescriptionDéfautValidation
spfInclude stringSPFInclude : domaine attendu dans le SPF des expéditeurs (include:<valeur>).MaxLength: 253
dkimSelectors string arrayDKIMSelectors : sélecteurs DKIM à vérifier (<sel>._domainkey.<domaine>).MaxItems: 8

PasswordSecretRef​

PasswordSecretRef désigne une clé d'un Secret de votre tenant.

ChampDescriptionDéfautValidation
name stringName du Secret de votre tenant.MaxLength: 253
MinLength: 1
key stringKey dans le Secret.passwordMaxLength: 253
MinLength: 1

Statut et conditions​

ConditionSens
SecretResolvedLe secret et sa clé existent
ReachableLe serveur répond : connexion, TLS et authentification réussies (test sans envoi)
ReadyLes 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.

Voir aussi​