fix: support SMTP STARTTLS mode and NTLM auth (#5426)

* fix: support SMTP STARTTLS mode and NTLM auth

Add explicit SMTP STARTTLS configuration for 587-style connections and keep SSL/TLS as the implicit TLS mode.

Prefer PLAIN when advertised, keep LOGIN compatibility, and add NTLM as a fallback for Exchange SMTP servers that require it after STARTTLS.

* fix: respect explicit SMTP encryption mode

* fix: preserve SMTP TLS compatibility
This commit is contained in:
Benson Yan
2026-06-24 12:45:39 +08:00
committed by GitHub
parent 9fc9c8f1e3
commit 2f23a66733
27 changed files with 959 additions and 52 deletions
+9
View File
@@ -299,6 +299,7 @@
"Allow requests to private IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)": "Autoriser les requêtes vers les plages d'adresses IP privées (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)",
"Allow Retry": "Autoriser la relance",
"Allow safety_identifier passthrough": "Autoriser la transmission de safety_identifier",
"Allow self-signed or hostname-mismatched SMTP certificates": "Autoriser les certificats SMTP auto-signés ou dont le nom d'hôte ne correspond pas",
"Allow service_tier passthrough": "Autoriser la transmission de service_tier",
"Allow speed passthrough": "Autoriser la transmission de speed",
"Allow upstream callbacks": "Autoriser les callbacks en amont",
@@ -757,6 +758,7 @@
"Choose how the platform will operate": "Choisissez le mode de fonctionnement de la plateforme",
"Choose how to filter domains": "Choisissez comment filtrer les domaines",
"Choose how to filter IP addresses": "Choisissez comment filtrer les adresses IP",
"Choose one SMTP transport security mode": "Choisissez un mode de sécurité de transport SMTP",
"Choose the bundle type and define the items inside it.": "Choisissez le type de bundle et définissez les éléments qu'il contient.",
"Choose the default charts, range, and time granularity for model analytics.": "Choisissez les graphiques, la plage et la granularité temporelle par défaut pour l'analyse des modèles.",
"Choose where to fetch upstream metadata.": "Choisissez où récupérer les métadonnées amont.",
@@ -1493,6 +1495,7 @@
"Enable selected models": "Activer les modèles sélectionnés",
"Enable SSL/TLS": "Activer SSL/TLS",
"Enable SSRF Protection": "Activer la protection SSRF",
"Enable STARTTLS": "Activer STARTTLS",
"Enable streaming mode for the test request.": "Activer le mode streaming pour la requête de test.",
"Enable Telegram OAuth": "Activer Telegram OAuth",
"Enable test mode for Creem payments": "Activer le mode test pour les paiements Creem",
@@ -2806,6 +2809,7 @@
"Non-stream": "Non-streaming",
"Non-zero invitation rewards require compliance confirmation in Payment Gateway settings.": "Les récompenses dinvitation non nulles nécessitent une confirmation de conformité dans les paramètres de la passerelle de paiement.",
"None": "Aucun",
"No encryption": "Aucun chiffrement",
"noreply@example.com": "noreply@example.com",
"Normalized:": "Normalisé :",
"Not available": "Non disponible",
@@ -3917,13 +3921,16 @@
"Size:": "Taille :",
"sk_xxx or rk_xxx": "sk_xxx ou rk_xxx",
"Skip retry on failure": "Ne pas réessayer en cas d'échec",
"Skip SMTP TLS certificate verification": "Ignorer la vérification du certificat TLS SMTP",
"Skip to Main": "Aller au contenu principal",
"Slug": "Slug",
"Slug can only contain letters, numbers, hyphens, and underscores": "Le slug ne peut contenir que des lettres, des chiffres, des tirets et des underscores",
"Slug is required": "Le slug est requis",
"Slug must be less than 100 characters": "Le slug doit contenir moins de 100 caractères",
"Smallest USD amount users can recharge (Epay)": "Montant minimum en USD que les utilisateurs peuvent recharger (Epay)",
"SSL/TLS": "SSL/TLS",
"SMTP Email": "E-mail SMTP",
"SMTP encryption": "Chiffrement SMTP",
"SMTP Host": "Hôte SMTP",
"smtp.example.com": "smtp.example.com",
"socks5://user:pass@host:port": "socks5://user:pass@host:port",
@@ -3953,6 +3960,7 @@
"SSRF Protection": "Protection SSRF",
"Standard": "Standard",
"Standard price": "Prix standard",
"STARTTLS": "STARTTLS",
"Start": "Début",
"Start a conversation to see messages here": "Démarrez une conversation pour voir les messages ici",
"Start collecting payments globally without registering a company. Built for indie developers, OPC sole proprietorships, and startups. Waffo Pancake acts as your Merchant of Record, taking on the compliance burden of global payment collection — consumption tax, invoicing, subscription management, refunds, and chargebacks. Solo developers can launch fast and stay focused on product instead of compliance. Onboard in minutes — one prompt to a full integration.": "Commencez à encaisser des paiements dans le monde entier sans créer de société. Conçu pour les développeurs indépendants, les entrepreneurs individuels OPC et les startups. Waffo Pancake agit comme Merchant of Record et prend en charge la conformité liée à lencaissement mondial : taxes à la consommation, facturation, gestion des abonnements, remboursements et rétrofacturations. Les développeurs solo peuvent lancer rapidement leur produit et rester concentrés sur celui-ci plutôt que sur la conformité. Intégration en quelques minutes, dune seule invite à une intégration complète.",
@@ -4478,6 +4486,7 @@
"Updated user {{username}} (ID: {{id}})": "Utilisateur {{username}} mis à jour (ID : {{id}})",
"Updating all channel balances. This may take a while. Please refresh to see results.": "Mise à jour de tous les soldes des canaux. Cela peut prendre un certain temps. Veuillez actualiser pour voir les résultats.",
"Upgrade Group": "Groupe de mise à niveau",
"Upgrade plaintext SMTP connection with STARTTLS before authentication": "Mettre à niveau la connexion SMTP en clair avec STARTTLS avant l'authentification",
"Upload": "Téléverser",
"Upload a single service account JSON file": "Télécharger un seul fichier JSON de compte de service",
"Upload file": "Téléverser un fichier",