Aller au contenu

Notifications Delta Chat

Aperçu

Delta Chat est une messagerie fondée sur l’e-mail. Apprise envoie des messages compatibles via le serveur SMTP du compte du bot, sans passerelle ni autre service local.

  1. Choisissez une boîte aux lettres pour votre bot :
    • Un compte e-mail classique. Les relais chatmail peuvent refuser ses messages si le chiffrement PGP n’est pas disponible ; consultez l’avertissement ci-dessous.
    • Un relais chatmail public. Choisissez un nom d’utilisateur et un mot de passe robuste. Le relais crée l’adresse à la première connexion. Ces relais conviennent surtout à un usage léger.
    • Votre propre relais chatmail auto-hébergé. Il crée aussi les adresses à la première connexion et vous permet de gérer la capacité.
  2. Notez l’hôte SMTP du compte, le port, le nom d’utilisateur et le mot de passe.
  3. Demandez à chaque destinataire d’ajouter le bot comme contact ou de lui écrire en premier. Les messages d’expéditeurs inconnus peuvent rester dans les demandes de contact jusqu’à leur acceptation.

La syntaxe valide est la suivante :

  • deltachat://{user}:{password}@{host}/{targets}
  • deltachat://{user}:{password}@{host}:{port}/{targets}

deltachat:// envoie par défaut sur une connexion non chiffrée. Ajouter un s au schéma (deltachats://) fait passer le transport par défaut à STARTTLS ; utilisez ?mode=ssl pour du SSL/TLS implicite (voir Sécurité du transport) :

  • deltachats://{user}:{password}@{host}/{targets}
  • deltachats://{user}:{password}@{host}:{port}/{targets}

{targets} représente une ou plusieurs adresses e-mail de destinataires, chacune étant l’identité Delta Chat de la personne ou du bot que vous notifiez :

  • deltachat://{user}:{password}@{host}/{target1}/{target2}/{targetN}

Si vous omettez {targets}, Apprise envoie la notification à l’adresse de votre propre bot. C’est pratique pour vous envoyer une alerte personnelle ou tester une configuration sans second contact Delta Chat.

{host} doit être le domaine de l’adresse de votre bot (il fait partie de son identité Delta Chat), pas nécessairement le serveur SMTP auquel vous vous connectez réellement. S’ils diffèrent, par exemple avec un relais d’entreprise ou tiers, ajoutez ?smtp={smtp-host} pour préciser le vrai serveur d’envoi tout en gardant le domaine de votre identité dans {host} :

deltachat://bot:pass@example.com/friend@example.org?smtp=smtp-relay.company.com

Consultez la section Utiliser des Serveurs SMTP Personnalisés du plugin Email pour en savoir plus.

Apprise envoie du texte brut avec l’en-tête Chat-Version: 1.0 exigé par le protocole e-mail-chat. L’objet commence par Chat:, conformément à la recommandation du protocole. Les messages chiffrés utilisent l’objet générique Chat: Encrypted message afin de ne pas exposer le texte protégé.

ModeValeur ?mode=Port par défautRemarques
Aucuninsecure25Par défaut pour deltachat:// ; la plupart des serveurs le refusent
STARTTLSstarttls587Par défaut pour deltachats://
SSL/TLSssl465À définir explicitement avec ?mode=ssl

Delta Chat utilise les options pgp, pgppub, pgpprv et wkd du plugin Email. Lorsque PGP est activé et qu’Apprise possède une clé privée compatible, il publie la clé publique correspondante afin que les destinataires puissent chiffrer leurs réponses.

Apprise ne lit pas les messages reçus. S’il a généré cette clé, importez le fichier privé dans le client qui devra lire les réponses chiffrées.

La génération est limitée à la clé d’expéditeur du bot lors d’un auto-envoi chiffré. Apprise ne génère jamais les clés des destinataires externes.

ModeCe que ça fait
pgp=noPas de PGP (par défaut).
pgp=signSigne le message avec votre clé privée. Chiffre aussi de façon opportuniste si une clé publique du destinataire est déjà connue.
pgp=encryptChiffre le message avec la clé publique du destinataire. L’envoi échoue si aucune clé n’est trouvée.

Les deux modes protégés nécessitent PGPy (pip install pgpy). Si PGP est demandé mais indisponible, l’envoi échoue au lieu de partir sans protection.

Utiliser wkd=yes sans pgp= active le chiffrement. Définissez explicitement pgp=no pour laisser PGP désactivé.

deltachat://user:pass@smtp.example.com/friend@example.org?pgp=sign&pgpprv=/path/to/my-prv.asc
deltachat://user:pass@smtp.example.com/friend@example.org?pgp=encrypt&pgppub=/path/to/recipient-pub.asc
deltachat://user:pass@smtp.example.com/friend@example.org?pgp=sign&wkd=yes&pgpprv=/path/to/my-prv.asc

Consultez la section Sécurité PGP du plugin Email pour la découverte et la génération des clés, ainsi que les recherches Web Key Directory.

Apprise indique un succès, mais rien n’apparaît. Demandez au destinataire de consulter les demandes de contact. Un message inconnu peut y attendre son approbation.

L’envoi échoue. Vérifiez ces causes courantes :

  • Vérifiez que mode= correspond aux réglages de votre fournisseur ; consultez Sécurité du transport. La plupart utilisent STARTTLS sur le port 587 ; certains utilisent SSL implicite sur le port 465.
  • Si l’un des comptes utilise un relais chatmail, configurez PGP et la découverte de la clé du destinataire.
  • Lancez la commande avec -vv (apprise -vv ...) pour voir l’erreur SMTP exacte renvoyée par le serveur.

Le chiffrement PGP échoue (pgp=encrypt). Apprise a besoin de la clé publique du destinataire via pgppub=, wkd=yes ou son cache. Avec pgp=sign, Apprise envoie un message signé si aucune clé destinataire n’est connue et le chiffre lorsqu’une clé est trouvée.

L’authentification échoue, ou le mauvais expéditeur est utilisé. Si votre bot s’authentifie via un relais dont le domaine diffère de sa propre adresse (par exemple bot@example.com envoyant via smtp-relais.entreprise.com), placez le domaine de votre identité dans {host} et le relais dans ?smtp= ; voir la note dans Syntaxe. Mettre directement le nom d’hôte du relais dans {host} fait qu’Apprise traite ce domaine comme votre identité, ce qui casse à la fois la connexion et l’adresse From:.

VariableRequisDescription
user*OuiIdentifiant SMTP, souvent l’adresse e-mail complète.
password*OuiMot de passe SMTP.
hostOuiDomaine de l’adresse de votre bot (fait partie de son identité Delta Chat).
portNonPort SMTP. Valeur par défaut selon mode= (voir Sécurité du transport).
targetsNonUne ou plusieurs adresses e-mail. Peuvent aussi être définies via ?to=. Si omis, envoie à l’adresse de votre propre bot.
fromNonChange l’adresse de l’expéditeur. Accepte un e-mail simple ou une valeur Nom <email>.
nameNonChange le nom affiché de l’expéditeur.
modeNonSécurité du transport : insecure, starttls, ou ssl (voir Sécurité du transport pour les valeurs par défaut selon le schéma).
smtpNonLe serveur SMTP d’envoi réel, s’il diffère de host (par exemple un relais).
pgpNonMode PGP : no (par défaut), sign, ou encrypt.
pgppubNonChemin vers la clé publique PGP d’un destinataire.
pgpprvNonChemin vers votre propre clé privée PGP.
wkdNonActive la découverte de clé publique via Web Key Directory (yes/no).

* Non requis si votre serveur accepte le relais anonyme (sans authentification).

VariableDescription
overflowGère les messages qui dépassent la limite documentée d’un service. La valeur par défaut est upstream.
👉 upstream : envoie un seul message sans le découper ni le tronquer selon cette limite.
👉 truncate : conserve la partie qui tient dans la limite et supprime le reste.
👉 split : privilégie une coupure lisible, utilise une coupure stricte si nécessaire, puis envoie toutes les parties dans l’ordre.
Le découpage d’un contenu non déclaré ou structuré reste une solution au mieux. Utilisez upstream si le corps doit rester intact.
formatCe paramètre peut être défini sur text, html ou markdown. Certains services prennent en charge plusieurs formats de publication du contenu. La valeur par défaut varie selon le service choisi et peut correspondre à l’un de ces trois formats. Vous pouvez facultativement forcer cette option pour vous écarter du comportement par défaut. Si le service ne prend pas en charge plusieurs formats de transmission, ce champ est ignoré.
verifyLes requêtes externes vers des emplacements sécurisés, par exemple via https, utilisent des certificats. Par défaut, Apprise vérifie la validité de ces certificats ; si ce n’est pas le cas, aucune notification n’est envoyée à la source. Dans certains cas, un utilisateur ne dispose pas d’une autorité de certification pour valider la clé ou fait simplement confiance à la source ; dans ce cas, vous pouvez définir ce drapeau sur no. Par défaut, il vaut yes.
redirectPar défaut, Apprise suit les redirections HTTP (réponses 3xx) émises par le serveur distant, conformément au comportement de la bibliothèque requests sous-jacente. Si vous souhaitez empêcher la transmission des en-têtes personnalisés et des identifiants vers des destinations différentes de l’URL d’origine, définissez cette option sur no. Par défaut, elle vaut yes.
ctoSignifie Socket Connect Timeout. Il s’agit du nombre de secondes pendant lesquelles Requests attend que votre client établisse une connexion avec une machine distante, ce qui correspond à l’appel connect() sur la socket. La valeur par défaut est de 4.0 secondes.
rtoSignifie Socket Read Timeout. Il s’agit du nombre de secondes pendant lesquelles le client attend que le serveur envoie une réponse. La valeur par défaut est de 4.0 secondes.
emojisActive la prise en charge des emojis, par exemple :+1: qui sera traduit en 👍. Par défaut, cette option vaut no.
Remarque : selon la configuration côté serveur, l’administrateur peut désactiver globalement la prise en charge des emojis ; mais par défaut, ce n’est pas le cas.
tzIdentifie le fuseau horaire de la base IANA que vous souhaitez utiliser. Par défaut, celui-ci est détecté à partir de la configuration du serveur qui exécute Apprise. Vous pouvez le définir sur des valeurs comme America/Toronto, ou sur tout autre fuseau correctement formaté correspondant à votre région.
retryNombre de tentatives de remise supplémentaires après le premier échec, avant d’abandonner. Accepte un entier compris entre 0 et 10. La valeur par défaut est 0 (aucune nouvelle tentative — une seule tentative est effectuée). Lorsqu’il est combiné avec wait, Apprise marque une pause du nombre de secondes spécifié entre chaque tentative.
waitNombre de secondes à attendre entre les nouvelles tentatives. Accepte une valeur décimale comprise entre 0.0 et 20.0 ; les entiers sont automatiquement convertis en virgule flottante. La valeur par défaut est 0.5. Ce paramètre n’est utile que si retry est supérieur à zéro — un service avec retry=0 effectue exactement une tentative, quelle que soit la valeur de wait.
optionalLorsqu’il est défini sur yes, un échec de remise pour ce service est silencieusement absorbé. Le résultat global de notify() est quand même considéré comme réussi même si ce point de terminaison était injoignable, à condition que tous les services requis (non optionnels) du même lot aient réussi. Ce drapeau ne saute pas la remise ni ne contourne la logique de nouvelles tentatives — toutes les tentatives configurées sont effectuées avant que l’échec soit absorbé. Par défaut, il vaut no, ce qui signifie que chaque échec est propagé à l’appelant.

Envoyer un message simple à un seul contact Delta Chat :

Fenêtre de terminal
apprise -vv -t "Alerte serveur" -b "Utilisation du disque à 92%" \
"deltachat://bot:app-password@smtp.example.com/friend@example.org"

Notifier plusieurs destinataires en une fois :

Fenêtre de terminal
apprise -vv -t "Déploiement terminé" -b "Build #482 est en ligne" \
"deltachat://bot:app-password@smtp.example.com/team1@example.org/team2@example.org"

Utiliser SSL/TLS implicite sur un port personnalisé :

Fenêtre de terminal
apprise -vv -t "Test" -b "Bonjour depuis Apprise" \
"deltachats://bot:app-password@smtp.example.com:465/friend@example.org?mode=ssl"

Signer chaque message, et chiffrer de façon opportuniste quand la clé d’un destinataire est déjà connue :

Fenêtre de terminal
apprise -vv -t "Test" -b "Bonjour depuis Apprise" \
"deltachat://bot:app-password@smtp.example.com/friend@example.org?pgp=sign&wkd=yes&pgpprv=/home/user/.gnupg/my-prv.asc"
Questions ou commentaires ?

Documentation

Vous avez repéré une faute de frappe ou une erreur ?

Problèmes Techniques

Vous rencontrez un problème avec le code ? Ouvrez un ticket sur GitHub :

Conçu avec amour depuis le Canada