#!/bin/sh # # mlmmj-make-ml.sh - henne@hennevogel.de # # modified for Debian GNU/Linux by boll@debian.org VERSION="0.1-debian (Modified for Debian GNU/Linux)" DEFAULTDIR="/var/spool/mlmmj" ETCDEFAULTDIR="/etc/mlmmj/lists" TEXTPATH="/usr/share/mlmmj/text.skel" SENDMAILPKG=`grep-dctrl -FProvides mail-transport-agent -a -FStatus installed -sPackage -n /var/lib/dpkg/status` NEWALIASES=`which newaliases` USAGE=" mlmmj-make-ml $VERSION $0 [OPTIONS] -h display this help text -L the name of the mailinglist -s your spool directory if not $DEFAULTDIR -z nuffn for now " echo echo "+------------------------------------------------------------+" echo "| Information: |" echo "| Please report bugs against mlmmj-make-ml to the Debian BTS |" echo "| at http://bugs.debian.org/ |" echo "+------------------------------------------------------------+" echo while getopts ":hL:s:az:" Option do case "$Option" in h ) echo "$USAGE" exit 0 ;; z ) echo -n "nothing" exit 0 ;; L ) LISTNAME="$OPTARG" ;; s ) SPOOLDIR="$OPTARG" ;; * ) printf "$0: invalid option\nTry $0 -h for more information.\n" exit 1 ;; esac done SHIFTVAL=$(( $OPTIND - 1 )) shift $SHIFTVAL if [ -z "$SPOOLDIR" ]; then SPOOLDIR="$DEFAULTDIR" fi echo "Creating Directorys below $SPOOLDIR. Use '-s spooldir' to change" if [ -z "$LISTNAME" ]; then echo -n "What should the name of the Mailinglist be? [mlmmj-test] : " read LISTNAME if [ -z "$LISTNAME" ]; then LISTNAME="mlmmj-test" fi fi LISTDIR="$SPOOLDIR/$LISTNAME" ETCLISTDIR="$ETCDEFAULTDIR/$LISTNAME" mkdir -p $LISTDIR mkdir -p $ETCLISTDIR for DIR in incoming queue queue/discarded archive subconf unsubconf \ bounce moderation subscribers.d digesters.d requeue \ nomailsubs.d do mkdir "$LISTDIR"/"$DIR" done for DIR in text control do mkdir "$ETCLISTDIR"/"$DIR" ln -s "$ETCLISTDIR"/"$DIR" "$LISTDIR"/"$DIR" done test -f "$LISTDIR"/index || touch "$LISTDIR"/index echo -n "The Domain for the List? [] : " read FQDN if [ -z "$FQDN" ]; then FQDN="localhost.localdomain" fi echo -n "The emailaddress of the list owner? [postmaster] : " read OWNER if [ -z "$OWNER" ]; then OWNER="postmaster" fi echo "$OWNER" > "$ETCLISTDIR"/"control/owner" if [ -z "$TEXTPATH" -o ! -d "$TEXTPATH" ]; then echo "**NOTE** Could not copy the texts for the list" echo "Please manually copy the files from $TEXTPATH" else cp "$TEXTPATH"/* "$ETCLISTDIR"/"text" fi LISTADDRESS="$LISTNAME@$FQDN" echo "$LISTADDRESS" > "$ETCLISTDIR"/control/"listaddress" MLMMJRECIEVE=`which mlmmj-recieve 2>/dev/null` if [ -z "$MLMMJRECIEVE" ]; then MLMMJRECIEVE="/usr/bin/mlmmj-recieve" fi MLMMJMAINTD=`which mlmmj-maintd 2>/dev/null` if [ -z "$MLMMJMAINTD" ]; then MLMMJMAINTD="/usr/bin/mlmmj-maintd" fi ALIAS="$LISTNAME: \"|$MLMMJRECIEVE -L $SPOOLDIR/$LISTNAME/\"" echo "I am adding the following to your /etc/aliases file:" echo "$ALIAS" echo -n "is this ok (if not, you need to do so yourself)? [y/N] : " read OKIDOKI case $OKIDOKI in y|Y) echo "$ALIAS" >> /etc/aliases ;; n|N) exit 0 ;; *) echo "Options were: y, Y, n or N" esac echo "Detecting the installed MTA and changing ownership as needed..." if [ "$SENDMAILPKG" = "postfix" ]; then USER="nobody" GROUP="nogroup" echo "Postfix appears to be handling your mail, using ownership $USER:$GROUP..." elif [ "$SENDMAILPKG" = "exim4-daemon-light" ]; then USER="Debian-exim" GROUP="Debian-exim" echo "Exim appears to be handling your mail, using ownership $USER:$GROUP..." else USER="nobody" GROUP="nogroup" echo "Unable to detect MTA, using default ownership: $USER:$GROUP..." fi chown -R $USER:$GROUP $LISTDIR $LISTDIR/* chmod -R 755 $LISTDIR chmod -R 755 $ETCLISTDIR # Check if all lists are owned by the right user, if not, ask if we should fix # it. ANOMALIES=0 for ENTRY in `ls $SPOOLDIR` do SOWNER=`stat -c %U $SPOOLDIR/$ENTRY` SGROUP=`stat -c %G $SPOOLDIR/$ENTRY` if [ $SOWNER != $USER -o $SGROUP != $GROUP ] then ANOMALIES=1 fi done if [ $ANOMALIES -eq 1 ] then echo -n "It appears that not all lists have proper ownership, do you want me to fix this? [y/N] : " read FIXOWNERSHIP case $FIXOWNERSHIP in y|Y) chown -R $USER:$GROUP $SPOOLDIR/* ;; n|N) echo "Not fixing ownership" ;; *) echo "Options were: y, Y, n or N" esac fi echo "Running $NEWALIASES" $NEWALIASES echo "Done."