--- /dev/null
+#!/bin/bash
+#
+# mailman-update-table: Make an associated list mapping list names and
+# the domain that they are associated with.
+#
+# This table is then used by Exim to verify that the list name and
+# domain are correct.
+#
+# This script is meant to be called from a cron job.
+
+MMDIR=/var/lib/mailman
+LISTDIR=$MMDIR/lists
+BINDIR=$MMDIR/bin
+TABLE=/etc/exim4/mailmandb
+
+# Use return as separator, never space or tab.
+IFS="
+"
+
+# Create table with the right permissions or clear it.
+if test ! -f $TABLE; then
+ touch $TABLE
+ chown root:mail $TABLE
+ chmod u=rw,g=r,o= $TABLE
+else
+ : > $TABLE
+fi
+
+# Iterate through available lists
+for i in $(find $LISTDIR -mindepth 1 -maxdepth 1 -type d -print); do
+ LIST=$(basename $i)
+ DOMAIN=$(su list -c "$BINDIR/config_list -o - $LIST" | \
+ grep -E "^host_name = '.+'" 2>/dev/null | \
+ sed -r -e "s/host_name = '(.+)'/\\1/")
+ if test -n "$LIST" && test -n "$DOMAIN"; then
+ echo "$LIST: $DOMAIN" >> $TABLE
+ fi
+done