Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sendmail et cohabitation ipv4 / ipv6

2 réponses
Avatar
Laurent
J'essaie d'autoriser à la fois ipv4 et ipv6 sur mon sendmail Linux.

Sous FreeBSD je fais:
DAEMON_OPTIONS(`Name=IPv4, Family=inet')
DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Port=smtp, Modifiers=O')
DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Ports=submission, Modifiers=O')

Et ca marche parfaitement.

Par contre sous Linux ce ma met dans les logs un message d'erreur
sm-mta[30253]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon IPv6:
cannot bind: Address already in use

C'est étrange car, evidemment, rien n'écoute en ipv6 sur le port 25 ou le
port 587 (vérifié avec netstat -an).

par contre si je configure sendmail en ipv6 seulement cela fonctionne.

Est-ce un bogue ? J'ai fait une recherche et j'ai trouvé plusieurs
personnes ayant eu le problème mais pas de réponse. Ou est-ce qu'un
détail m'échappe ? Au pire je serai obligé de bricoler quelque chose
avec iptable mais je préfererais une solution plus propre.

Laurent

2 réponses

Avatar
Marc SCHAEFER
Laurent wrote:
Par contre sous Linux ce ma met dans les logs un message d'erreur
sm-mta[30253]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon IPv6:
cannot bind: Address already in use

Petite expérience:
nc6 -6 -l -p 2424 &
netstat --inet --listen -n | grep 2424
# rien
netstat --inet6 --listen -n | grep 2424
tcp6 0 0 :::2424 :::* LISTEN
telnet 127.0.0.1 2424
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
telnet ::1 2424
Trying ::1...
Connected to ::1.
Donc, le comportement Linux est correct. S'il y a un bug, c'est
dans sendmail. Il faut dire que je suis passé à Postfix en
2003 ...
Avatar
Laurent
Le 29-01-2019, Laurent a écrit :
J'essaie d'autoriser à la fois ipv4 et ipv6 sur mon sendmail Linux.
Sous FreeBSD je fais:
DAEMON_OPTIONS(`Name=IPv4, Family=inet')
DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Port=smtp, Modifiers=O')
DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Ports=submission, Modifiers=O')
Et ca marche parfaitement.
Par contre sous Linux ce ma met dans les logs un message d'erreur
sm-mta[30253]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon IPv6:
cannot bind: Address already in use

Solution
Sous Linux, contrairement à FreeBSD dans la configuration par defaut, une
socket IPV6 peut traiter à la fois des connexions IPV4 et IPV6.
Donc pour traiter à la fois en ipv4 et en ipv6 il faut faire, sous Linux :
dnl DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp')dnl
dnl DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission')dnl
DAEMON_OPTIONS(`Family=inet6, Name=MTA-v6, Port=smtp')dnl
DAEMON_OPTIONS(`Family=inet6, Name=MSP-v6, Port=submission')dnl
Si je décommente les deux premières lignes, cela fait un conflit,
contrairement à FreeBSD, pour la raison exposée plus haut. Par contre
si je fais uniquement DAEMON OPTION Family=inet6 la ca fonctionne à la fois
en IPV4 et en IPV6.