Pour gagner du temps avec Exim4 et les adresses IPv6🔗
Histoire de vous faire gagner du temps sur votre configuration Exim4 en IPv6, voici une information à ne pas manquer: exim4 pour ses variables de liste d'adresses IP (ou sous-réseaux) utilise le caractère :
comme séparateur. Le problème de cette syntaxe c'est qu'une adresse IPv6 utilise le caractère :
à fond ! La solution d'Exim4 pour gérer les adresses IPv6 consiste simplement à doubler les caractères :
. Ainsi, si vous désirez utiliser une directive qui demande une liste d'adresses IP pour filtrer tel ou tel comportement suivant l'appartenance à un réseau local ou à un autre, vous devez écrire l'adresse (au hasard 2001:db8:dead:beef::) comme dans l'exemple suivant:
auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{192.168.0.0/24:2001::db8::dead::beef::::/64}}
Le symptôme d'une mauvaise écriture se retrouve dans les logs d'Exim4 avec la mention no IP address found for host 2001 (during SMTP connection from debianbox (debianbox.example.com) [2001:db8:dead:beef:6120:6ae4:ea71:a549])
. Ce qui frappe c'est qu'Exim mentionne uniquement la première partie de l'adresse ipv6 (2001) et ne traite pas le reste.
Bon, c'était marqué dans la doc mais il m'a fallu relire le passage trois fois avant de voir mon erreur de saisie. On apprend toutefois beaucoup de ses erreurs…
Si d'autres sysadmins peuvent gagner du temps avec cette astuce, je n'aurais pas trop perdu mon temps ;-)