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 ;-)