Configuring FreeBSD 6.2 to use sendmail for sending only

Ian Smith smithi at nimnet.asn.au
Fri Aug 31 09:38:35 PDT 2007


On Thu, 30 Aug 2007 18:14:55 -0700 (PDT) L Goodwin <xrayv19 at yahoo.com> wrote:

 > --- Derek Ragona <derek at computinginnovations.com> wrote:

[ slashing mercilessly ]

 > > >--- Chuck Swiger <cswiger at mac.com> 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 at computinginnovations.com
 > > CCTO=derek at 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 at nimnet.asn.au
 Subject: August 2006 Account for Ian Smith
 Cc: subs at nimnet.asn.au
 Reply-to: subs at nimnet.asn.au
 X-Mailer: subsbot v0.9 beta 8.90 :)

 Hello Ian Smith,
 [..]

HTH, Ian



More information about the freebsd-questions mailing list