diff --git a/docker/sympa/Dockerfile b/docker/sympa/Dockerfile
index d379f756451623961b615e3c5235c73cbac58e5b..7b38405ddad384b745d69d2c43a349c930291da1 100644
--- a/docker/sympa/Dockerfile
+++ b/docker/sympa/Dockerfile
@@ -49,4 +49,8 @@ ENV LANGUAGE en_US:en
 
 ENV LC_ALL en_US.UTF-8   
 
+COPY exit-event-listener.py /usr/local/bin
+
+RUN chmod +x /usr/local/bin/exit-event-listener.py
+
 ENTRYPOINT /entrypoint
diff --git a/docker/sympa/exit-event-listener.py b/docker/sympa/exit-event-listener.py
new file mode 100644
index 0000000000000000000000000000000000000000..b91e7a5c575bbb5ce174e7a1ab134a42177ad04f
--- /dev/null
+++ b/docker/sympa/exit-event-listener.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+# From https://stackoverflow.com/a/37527488
+import os
+import signal
+
+from supervisor import childutils
+
+
+def main():
+    while True:
+        headers, payload = childutils.listener.wait()
+        childutils.listener.ok()
+        if headers['eventname'] != 'PROCESS_STATE_FATAL':
+            continue
+        os.kill(os.getppid(), signal.SIGTERM)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/docker/sympa/supervisord.conf b/docker/sympa/supervisord.conf
index 1118963c34d19f3b217c0d6d9f6e099ad78c1cd2..7eb5603ab4c67e5d0b4ad024e31d526b88e2f526 100644
--- a/docker/sympa/supervisord.conf
+++ b/docker/sympa/supervisord.conf
@@ -126,3 +126,7 @@ stdout_logfile_maxbytes=0
 stderr_logfile_maxbytes=0
 stdout_logfile=/dev/stdout
 stderr_logfile=/dev/stderr
+
+[eventlistener:exit_on_any_fatal]
+events=PROCESS_STATE_FATAL
+command=exit-event-listener.py