#!/bin/bash # # mailman-update-exim-db: 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, and run as root. MMDIR=/var/lib/mailman LISTDIR=$MMDIR/lists BINDIR=$MMDIR/bin TABLE=/etc/exim4/mailmandb TABLE_EXT=/etc/exim4/mailmandb-ext # 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: true" >> $TABLE fi done # Add extras file, for aliases of domains and whatnot if test -f $TABLE_EXT; then cat $TABLE_EXT >> $TABLE fi