configurer-smtp.md 5778 octets

Configurer l'envoi d'e-mails (SMTP)

À qui s'adresse cette page

Administrateurs qui souhaitent activer l'envoi d'e-mails (validation de compte, réinitialisation de mot de passe, notifications). Sans configuration SMTP, gitrust démarre normalement mais toutes les fonctionnalités e-mail sont désactivées.


Variables concernées

Toutes ces variables se placent dans /opt/gitrust/.env (ou dans l'EnvironmentFile de votre service systemd / docker-compose.yml). Un redémarrage du service est nécessaire après modification.

VariableObligatoireDéfautDescription
SMTP_HOSTOuiNom d'hôte ou IP du serveur SMTP
SMTP_PORTNon587Port SMTP (25, 465, 587, 1025)
SMTP_USERNonIdentifiant SMTP (souvent = adresse e-mail)
SMTP_PASSWORDNonMot de passe applicatif SMTP
SMTP_FROMNonAdresse expéditeur visible (doit être valide)
SMTP_FROM_NAMENonNom affiché dans le champ « De : »
SMTP_USE_TLSNontrueActiver TLS natif (port 465)
SMTP_USE_STARTTLSNontrueActiver STARTTLS (port 587)
SMTP_ACCEPT_INVALID_CERTSNonfalseAccepter les certificats invalides (dev seulement)
SMTP_CA_CERT_PATHNonChemin vers un CA personnalisé (PEM)
EMAIL_BASE_URLOui (prod)http://localhost:3000URL de base pour les liens dans les e-mails
EMAIL_VALIDATION_REQUIREDNontrueExiger la validation e-mail à l'inscription
EMAIL_QUEUE_BATCH_SIZENon10Nombre d'e-mails traités par tick
EMAIL_QUEUE_RETRY_ATTEMPTSNon5Nombre de tentatives avant abandon
EMAIL_QUEUE_RETRY_DELAY_SECONDSNon300Délai entre deux tentatives (secondes)

Important : Ne jamais activer SMTP_ACCEPT_INVALID_CERTS=true en production — cela ouvre la voie à des attaques MITM sur tous les e-mails sortants.


Recettes par prestataire

Gmail (compte personnel ou Google Workspace)

Google exige un mot de passe applicatif (pas votre mot de passe Google). Générez-le sur myaccount.google.com/apppasswords en activant au préalable la validation en deux étapes.

SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=votre.adresse@gmail.com
SMTP_PASSWORD=xxxx_xxxx_xxxx_xxxx   # mot de passe applicatif (16 caractères)
SMTP_FROM=votre.adresse@gmail.com
SMTP_FROM_NAME=Gitrust
SMTP_USE_TLS=false
SMTP_USE_STARTTLS=true
EMAIL_BASE_URL=https://VOTRE_DOMAINE

Limite : Gmail impose un quota de 500 e-mails/jour pour les comptes personnels. Pour les volumes importants, utilisez un service dédié (SendGrid, Brevo, etc.).

OVH / Infomaniak / Gandi

Ces hébergeurs utilisent STARTTLS sur le port 587 ou SMTPS sur le port 465.

# OVH (SSL/TLS natif sur 465)
SMTP_HOST=ssl0.ovh.net
SMTP_PORT=465
SMTP_USER=noreply@VOTRE_DOMAINE.com
SMTP_PASSWORD=MOT_DE_PASSE_EMAIL
SMTP_FROM=noreply@VOTRE_DOMAINE.com
SMTP_FROM_NAME=Gitrust
SMTP_USE_TLS=true
SMTP_USE_STARTTLS=false
EMAIL_BASE_URL=https://VOTRE_DOMAINE
# Gandi (STARTTLS sur 587)
SMTP_HOST=mail.gandi.net
SMTP_PORT=587
SMTP_USER=noreply@VOTRE_DOMAINE.com
SMTP_PASSWORD=MOT_DE_PASSE_EMAIL
SMTP_FROM=noreply@VOTRE_DOMAINE.com
SMTP_FROM_NAME=Gitrust
SMTP_USE_TLS=false
SMTP_USE_STARTTLS=true
EMAIL_BASE_URL=https://VOTRE_DOMAINE

Postfix local (instance interne sans authentification)

Pour les déploiements sur réseau interne où Postfix est installé sur le même serveur :

SMTP_HOST=127.0.0.1
SMTP_PORT=25
# Pas de SMTP_USER ni SMTP_PASSWORD si Postfix accepte sans auth sur loopback
SMTP_FROM=noreply@VOTRE_DOMAINE.com
SMTP_FROM_NAME=Gitrust
SMTP_USE_TLS=false
SMTP_USE_STARTTLS=false
EMAIL_BASE_URL=https://VOTRE_DOMAINE

Vérifiez que Postfix accepte les connexions depuis 127.0.0.1 :

# Dans /etc/postfix/main.cf
mynetworks = 127.0.0.0/8

Mailpit / Mailhog (développement local)

SMTP_HOST=localhost
SMTP_PORT=1025
SMTP_FROM=dev@localhost
SMTP_FROM_NAME=Gitrust-Dev
SMTP_USE_TLS=false
SMTP_USE_STARTTLS=false
SMTP_ACCEPT_INVALID_CERTS=false
EMAIL_BASE_URL=http://localhost:4000
EMAIL_VALIDATION_REQUIRED=false

Démarrez Mailpit : docker run -p 1025:1025 -p 8025:8025 axllent/mailpit
Interface web : http://localhost:8025


Tester la configuration

Après avoir modifié le .env et redémarré gitrust, testez via le panel admin :

  1. Connectez-vous à /admin
  2. Accédez à /admin/email
  3. Saisissez une adresse de test et cliquez Envoyer un e-mail de test

Panel de test SMTP

En cas d'erreur, consultez les logs :

sudo journalctl -u gitrust -n 50 --no-pager | grep -i "smtp\|email\|mail"

Erreurs courantes :

Message dans les logsCauseCorrection
Connection refused sur le port SMTPSMTP_HOST ou SMTP_PORT incorrectVérifier les paramètres du prestataire
Authentication failedSMTP_USER ou SMTP_PASSWORD incorrectPour Gmail : utiliser un mot de passe applicatif, pas le mot de passe du compte
Certificate verification failedCertificat TLS du serveur SMTP invalide ou CA non reconnuSpécifier SMTP_CA_CERT_PATH ou contacter le prestataire
EMAIL_BASE_URL pointe vers localhostLiens dans les e-mails non cliquables pour les destinataires externesDéfinir EMAIL_BASE_URL=https://VOTRE_DOMAINE

Pour aller plus loin