Outils pour utilisateurs

Outils du site


commun:passerelle_email_locale

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
commun:passerelle_email_locale [2026/08/01 11:27] – francoiscommun:passerelle_email_locale [2026/08/01 11:43] (Version actuelle) – francois
Ligne 103: Ligne 103:
   * Authentification : **désactivée**   * Authentification : **désactivée**
   * Serveur : ''127.0.0.1'' — Port : ''25''   * Serveur : ''127.0.0.1'' — Port : ''25''
 +
 +==== WordPress (blog, bare-metal) ====
 +
 +Plugin SMTP (« Autre SMTP » / WP Mail SMTP) :
 +  * Hébergeur SMTP : ''localhost'' — Port : ''25''
 +  * Cryptage : **Aucun**
 +  * **TLS auto : DÉSACTIVÉ** (sinon le plugin tente STARTTLS → échec ; c'est le réglage piège)
 +  * Authentification : **désactivée**
  
 ==== Conteneurs Docker (Diun, etc.) ==== ==== Conteneurs Docker (Diun, etc.) ====
Ligne 125: Ligne 133:
 Appliquer : ''sudo update-exim4.conf && sudo systemctl restart exim4''. Appliquer : ''sudo update-exim4.conf && sudo systemctl restart exim4''.
 Vérifier l'écoute : ''sudo ss -tlnp | grep ':25 ''' → doit lister les ''172.x.0.1:25''. Vérifier l'écoute : ''sudo ss -tlnp | grep ':25 ''' → doit lister les ''172.x.0.1:25''.
 +
 +=== Pare-feu UFW ===
 +
 +La politique ''INPUT'' est en ''DROP'' : sans règle explicite, le trafic des conteneurs vers le port 25 de l'hôte est **jeté avant d'atteindre Exim** (Exim écoute mais ne reçoit rien). Ouvrir le port 25 depuis la plage Docker :
 +
 +<code bash>
 +sudo ufw allow from 172.16.0.0/12 to any port 25 proto tcp comment 'SMTP relais depuis conteneurs Docker'
 +</code>
 +
 +(même plage que ''dc_relay_nets'' : les deux couches, pare-feu et relais Exim, sont alignées.)
 +
 +=== Désactiver l'annonce STARTTLS (sinon les clients tentent un TLS qui échoue) ===
 +
 +Par défaut Exim annonce ''STARTTLS'' à tous. Un client conteneur (ex. Diun) tente alors un handshake TLS opportuniste, qui **échoue sur le certificat auto-signé d'Exim** (''gnutls_handshake: Certificate is bad''). On empêche l'annonce STARTTLS pour tout sauf le localhost strict — le trafic hôte↔conteneur passe alors en clair (local, non routable), et le chiffrement reste actif **en sortie** vers Infomaniak.
 +
 +⚠️ **Ne pas utiliser ''exim4.conf.localmacros''** : dans ce montage, les macros ''MAIN_*'' qu'on y place ne sont **pas** injectées dans la config compilée (testé : sans effet). Le fichier a été supprimé pour éviter toute confusion. Toute la config de ce relais passe par les directives ''dc_*'' (dans ''update-exim4.conf.conf'') et par des fichiers ''conf.d/main/''. Pour STARTTLS, la méthode fiable est un fichier direct dans ''conf.d/main/'' :
 +
 +<code bash>
 +sudo tee /etc/exim4/conf.d/main/00_local_no_starttls > /dev/null << 'EOF'
 +# STARTTLS annoncé uniquement en local strict ; pas aux conteneurs Docker.
 +tls_advertise_hosts = 127.0.0.1 : ::1
 +EOF
 +sudo update-exim4.conf && sudo systemctl restart exim4
 +</code>
 +
 +Vérifier que STARTTLS n'est plus annoncé aux conteneurs :
 +<code bash>
 +docker run --rm --network diun_net alpine sh -c \
 +  "printf 'EHLO test\r\nQUIT\r\n' | nc -w 5 172.20.0.1 25" | grep -i starttls
 +</code>
 +→ ne doit **rien** renvoyer (STARTTLS absent).
 +
  
 === Correspondance réseaux Docker (référence) === === Correspondance réseaux Docker (référence) ===
Ligne 151: Ligne 191:
 </code> </code>
 (les champs ''username'' / ''password'' deviennent inutiles) (les champs ''username'' / ''password'' deviennent inutiles)
 +
 +**Tester l'envoi mail de Diun** : passer temporairement ''firstCheckNotif: true'', vider la base (''rm /mnt/stockage/docker/data/diun/diun.db'') et recréer le conteneur → Diun notifie chaque image détectée. **Remettre ''firstCheckNotif: false'' après le test**, sinon Diun re-notifie tout à chaque redémarrage.
  
 === Test de connexion depuis un conteneur === === Test de connexion depuis un conteneur ===
Ligne 174: Ligne 216:
 | /etc/exim4/conf.d/auth/30_exim4-config_examples | Authenticators Debian (''plain'' / ''login'') utilisés | | /etc/exim4/conf.d/auth/30_exim4-config_examples | Authenticators Debian (''plain'' / ''login'') utilisés |
 | /var/lib/exim4/config.autogenerated | Config compilée (ne pas éditer à la main) | | /var/lib/exim4/config.autogenerated | Config compilée (ne pas éditer à la main) |
 +| /etc/exim4/conf.d/main/00_local_no_starttls | Désactive l'annonce STARTTLS hors localhost (config découpée) |
 +| Règle UFW ''25/tcp ALLOW 172.16.0.0/12'' | Autorise les conteneurs à joindre le relais |
  
 **Important** : les directives ''dc_*'' de ''update-exim4.conf.conf'' ont **priorité** sur les macros ''MAIN_*'' de ''localmacros'' (mécanisme ''.ifndef''). Pour l'écoute et le relais, modifier les ''dc_*'', pas les macros. **Important** : les directives ''dc_*'' de ''update-exim4.conf.conf'' ont **priorité** sur les macros ''MAIN_*'' de ''localmacros'' (mécanisme ''.ifndef''). Pour l'écoute et le relais, modifier les ''dc_*'', pas les macros.
Ligne 183: Ligne 227:
   * **''relay not permitted'' depuis un conteneur** : le sous-réseau du conteneur n'est pas dans ''dc_relay_nets''. Vérifier que ''172.16.0.0/12'' y figure.   * **''relay not permitted'' depuis un conteneur** : le sous-réseau du conteneur n'est pas dans ''dc_relay_nets''. Vérifier que ''172.16.0.0/12'' y figure.
   * **Conteneur ne joint pas Exim** : il vise ''127.0.0.1'' (= lui-même) au lieu de la passerelle. Utiliser l'IP ''172.x.0.1'' de son réseau.   * **Conteneur ne joint pas Exim** : il vise ''127.0.0.1'' (= lui-même) au lieu de la passerelle. Utiliser l'IP ''172.x.0.1'' de son réseau.
 +  * **Connexion conteneur jetée en silence (pas de réponse ''nc'')** : politique ''INPUT DROP'' d'UFW. Ouvrir le port 25 depuis ''172.16.0.0/12'' (voir section pare-feu).
 +  * **''gnutls_handshake: Certificate is bad'' depuis un conteneur** : le client tente STARTTLS et refuse le certificat auto-signé d'Exim. Désactiver l'annonce STARTTLS via ''conf.d/main/00_local_no_starttls'' (voir section dédiée).
 +  * **Une directive ne prend pas effet** : ne pas passer par ''exim4.conf.localmacros'' (macros non injectées dans ce montage — fichier supprimé). Utiliser un fichier ''conf.d/main/'' (config découpée) ou la directive ''dc_*'' correspondante.
   * **Mail gelé (''Frozen'')** : voir la file avec ''sudo mailq'', détails avec ''sudo exim4 -Mvl <id>''. Relancer un message après correction : ''sudo exim4 -M <id>''.   * **Mail gelé (''Frozen'')** : voir la file avec ''sudo mailq'', détails avec ''sudo exim4 -Mvl <id>''. Relancer un message après correction : ''sudo exim4 -M <id>''.
   * **Voir la file d'attente** : ''sudo mailq''  — **vider un message** : ''sudo exim4 -Mrm <id>''.   * **Voir la file d'attente** : ''sudo mailq''  — **vider un message** : ''sudo exim4 -Mrm <id>''.
   * **Logs** : ''sudo tail -f /var/log/exim4/mainlog''.   * **Logs** : ''sudo tail -f /var/log/exim4/mainlog''.
commun/passerelle_email_locale.1785583623.txt.gz · Dernière modification : de francois

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki