From owner-freebsd-questions@FreeBSD.ORG Fri Aug 31 16:38:35 2007 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 426FF16A41B for ; Fri, 31 Aug 2007 16:38:35 +0000 (UTC) (envelope-from smithi@nimnet.asn.au) Received: from gaia.nimnet.asn.au (nimbin.lnk.telstra.net [139.130.45.143]) by mx1.freebsd.org (Postfix) with ESMTP id 5009E13C4B5 for ; Fri, 31 Aug 2007 16:38:32 +0000 (UTC) (envelope-from smithi@nimnet.asn.au) Received: from localhost (smithi@localhost) by gaia.nimnet.asn.au (8.8.8/8.8.8R1.5) with SMTP id CAA16718; Sat, 1 Sep 2007 02:32:20 +1000 (EST) (envelope-from smithi@nimnet.asn.au) Date: Sat, 1 Sep 2007 02:32:20 +1000 (EST) From: Ian Smith To: L Goodwin In-Reply-To: <20070831052854.341C116A4C5@hub.freebsd.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Cc: freebsd-questions@freebsd.org, Derek Ragona Subject: Re: Configuring FreeBSD 6.2 to use sendmail for sending only X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 31 Aug 2007 16:38:35 -0000 On Thu, 30 Aug 2007 18:14:55 -0700 (PDT) L Goodwin wrote: > --- Derek Ragona wrote: [ slashing mercilessly ] > > >--- Chuck Swiger wrote: [..] > > > > Although, it is entirely reasonable to consider > > > > using Postfix instead. > > Here is a sample script that you can use as a > > template: > ======================================================= > > #!/bin/sh > > > > #define any commands you will use > > MAILFILE=mymailfile > > MAILFILE2=mymailfile2 > > SENDTO=derek@computinginnovations.com > > CCTO=derek@computinginnovations.com > > MAIL=/usr/bin/mail > > AWK=/usr/bin/awk > > CAT=/bin/cat > > TR=/usr/bin/tr > > TEMPDIR=/tmp > > > > #make sure we have paths > > export PATH=$PATH:/usr/local/sbin:/usr/local/bin > > > > cd $TEMPDIR > > $CAT /etc/passwd | $AWK -F : '{ print $5 }' > > > $MAILFILE > > $TR -cd "\012-\172" < $MAILFILE > $MAILFILE2 > > $MAIL -s "My list of real user names subject" > > $SENDTO -c $CCTO < $MAILFILE2 > ======================================================= > > Derek, your example brings up another question. > > Should I be calling "mail" or "sendmail", and which > mail or sendmail should I invoke if there is more than > one of either? Chuck's example calls sendmail in a > path that does not exist on my system (my sendmail is > in /usr/sbin/). I usually invoke whichever one is > first in my path. Use whatever works for you, and it never hurts to be specific :) > One more question. Is it ok to run the script (and > send the email) as user root, or should I create a > user account with more limited permissions -- if so, > what limits should I set? There are so many ways of doing this .. here's another that we'd use to mail out accounts to members monthly, from text files generated by some php and mysql magic on another box, by another guy. Note that this is enforced to be run by user 'subs' (here uid 996), so that's who these messages are 'From:'. A script run from cron need not be so paranoid about checking things .. this was hand-run 'when ready'. #!/bin/sh # sendacts 7Jan00 smithi .. mail out SubsBot messages .. cleanup 2Oct02 # each *.act file begins with To:, Cc:, X-mailer: etc lines maildir="/home/subs/bills/$1" # preexisting dir as parameter eg '2000-01' mailrun="./command.txt" # perline format: 'sendmail -t < userX.act 2>&1' if [ "`id -u`" != "996" ]; then echo "$0 must be run as user subs .. 'su subs' and retry .." elif [ "$1" = "" ]; then echo "usage: $0 directory" elif [ ! -d $maildir ]; then echo "$maildir does not exist .. mkdir first, unpack zipfile there" elif [ ! -w $maildir ]; then echo "$maildir is not writeable .. an older locked one, perhaps?" else cd $maildir if [ ! -f $mailrun ]; then echo "can't find ${maildir}/${mailrun} .. zipfile not unpacked?" elif [ -f ./mailout.done ]; then echo "'rm ${maildir}/mailout.done' if you wanna repeat mailout?" else umask 27 echo "$0 sending mail:" ; cat $mailrun . $mailrun touch ./mailout.done ; echo "$0 done" exit 0 fi fi exit 1 with ./command.txt containing a line per recipient such as: sendmail -t < user1.act 2>&1 sendmail -t < user2.act 2>&1 [..] sendmail -t < userN.act 2>&1 and with the *.act files beginning such as: To: smithi@nimnet.asn.au Subject: August 2006 Account for Ian Smith Cc: subs@nimnet.asn.au Reply-to: subs@nimnet.asn.au X-Mailer: subsbot v0.9 beta 8.90 :) Hello Ian Smith, [..] HTH, Ian