Accéder au contenu.
Menu Sympa

fr - [fr@sympa] Erreur exim4 après mise à jour en debian trixie

Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa

Archives de la liste

Chronologique Discussions  
  • From: Erwan Colin <adresse@cachée>
  • To: Sympa - liste d'entreaide <adresse@cachée>
  • Subject: [fr@sympa] Erreur exim4 après mise à jour en debian trixie
  • Date: Thu, 20 Nov 2025 17:44:27 +0100

Bonjour,

pour ceux qui utilisent exim4, avec le dossier de spool dans un endroit différent de /var/spool/sympa (ça peut arriver si sympa est installé via les sources) je vous partage un souci avec une résolution 😉.

je viens de mettre à jour une instance de test (qui était fonctionnelle) d'un serveur sympa (6.2.76) de debian 12 vers debian 13 utilisant exim4 comme backend mail et je rencontre une erreur lors de l'envoi d'un message vers une liste de diffusion.

L'erreur en question dans les logs exim :

2025-11-19 16:53:24 1vLkUm-000000002ZJ-0iKX <= adresse@cachée ...
2025-11-19 16:53:24 1vLkUm-000000002ZJ-0iKX == | /usr/local/libexec/queue adresse@cachée <adresse@cachée> R=sympa_aliases T=address_pipe defer (0): Child process of address_pipe transport returned 75 (could mean temporary error) from command: /usr/local/libexec/queue

Et en activant log_output = true dans la configuration du transport address_pipe, mon erreur devient :

2025-11-20 11:40:30 1vM25W-00000000K1y-2V0t <= adresse@cachée H=smtp2.mines-albi.fr [194.167.201.100] P=esmtps X=TLS1.3:ECDHE_SECP256R1__ECDSA_SECP256R1_SHA256__AES_256_GCM:256 CV=no K S=11650 id=0fa50940-570c-45ed-890d-b2c31966
adresse@cachée
2025-11-20 11:40:30 1vM25W-00000000K1y-2V0t <| /usr/local/libexec/queue adresse@cachée>: address_pipe transport output: /usr/local/libexec/queue: while opening queue file 'adresse@cachée
5230.77005': Read-only file system
2025-11-20 11:40:30 1vM25W-00000000K1y-2V0t == | /usr/local/libexec/queue adresse@cachée <adresse@cachée> R=sympa_aliases T=address_pipe defer (0): Child process of address_pipe transport returned 75 (could mean temporary error) from command: /usr/local/libexec/queue

je trouve cette histoire de "Read-only file system" bizarre :

root@listes-test:~# sudo -u sympa touch /usr/local/var/spool/sympa/msg/testfile && ls -l /usr/local/var/spool/sympa/msg/testfile
-rw-rw-r-- 1 sympa sympa 0 Nov 20 11:42 /usr/local/var/spool/sympa/msg/testfile.

La chose qui a surtout changé entre bookworm et trixie est que le service exim4 est maintenant défini par un fichier de type service systemd et non plus dans /etc/init.d/exim4.

Et en effet, dans la définition du service systemd tel que fourni par debian :

[Unit]
Description=exim Mail Transport Agent
Documentation=man:exim(8)
Documentation=https://exim.org/docs.html
Conflicts=sendmail.service postfix.service
After=network-online.target nss-lookup.target
Wants=network-online.target

[Service]
PrivateTmp=true
ProtectSystem=full

# exim needs to access ~/.forward and MDA-files to for local delivery
# ProtectHome=true
PrivateDevices=true
ProtectHostname=true
ProtectClock=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectKernelLogs=true
ProtectControlGroups=true
ProtectProc=invisible
RestrictRealtime=true

PIDFile=/run/exim4/exim.pid
Environment="EXIMSERVICE=-bdf -q30m" "UPEX4OPTS="
EnvironmentFile=-/etc/default/exim4r
ExecStartPre=/usr/sbin/update-exim4.conf $UPEX4OPTS
ExecStart=/usr/sbin/exim4 $EXIMSERVICE
ExecReload=/usr/sbin/update-exim4.conf $UPEX4OPTS ; \
  kill -HUP $MAINPID
Type=exec

[Install]
WantedBy=multi-user.target

Et commenter de manière stupide tous les paramètres Private*, Protect*, Restrict* permet bien à mon message de partir.
Une recherche par dichotomie me permet de pointer ProcectSystem=full comme étant le paramètre empêchant le bon fonctionnement.

Selon la documentation de systemd :

ProtectSystem=

Takes a boolean argument or the special values "full" or "strict". If true, mounts the /usr/ and the boot loader directories (/boot and /efi) read-only for processes invoked by this unit. If set to "full", the /etc/ directory is mounted read-only, too.

En effet, le dossier de spool des message exim4 est dans /usr/local/var/spool/sympa comme préconisé par https://www.sympa.community/manual/layout.html pour une installation par les sources (et pour le coup pour une installation par paquet debian, le dossier de spool est /var/spool/sympa et n'est donc pas concerné par ce paramètre du service systemd.

Il me reste qu'a exclure mon chemin de spool via le fichier /etc/systemd/system/exim4.service.d/allow-read-write-on-spool-folder.conf :

[Service]
ReadWritePaths=/usr/local/var/spool/sympa

daemon-reload et restart exim4.

Et ça marche !

Bien à vous,

-- 
Erwan Colin
Ingénieur système/System engineer
IMT Mines Albi
🖁 +33 677 021 936
☎ +33 563 493 356
🚪 0A20

Attachment: OpenPGP_0xF2710398C58BD857.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature



  • [fr@sympa] Erreur exim4 après mise à jour en debian trixie, Erwan Colin, 20/11/2025

Archives gérées par MHonArc 2.6.19+.

Haut de le page