[comp.mail.sendmail] Setting up and running an internet style mailing list

mark@drd.UUCP (Mark Lawrence) (04/13/89)

I'm getting ready to set up a mailing list (to be run as Interviews, for
example, is run) and I thought that I would set it up as a single user
for the -request mail and a mailing list alias referenced from
/usr/lib/aliases for the actual main list (where I would maintain the
distribution in my own file using the include keyword).  Obviously I'm
using sendmail for transport (SunOS 3.5 version).  I just want to set up
the main address to echo incoming messages back to the distribution.  I
just happened to think about the situation where people have vacation
turned on or mailer daemon messages come back at you -- I certainly
don't want those rebroadcast.  Inserting a "Reply-To" line in the header
with the address being the -request alias would be nice but not
immediately obvious to me as to how I'd go about it.  I know other
people run lists without admin type messages echoing back to the
distribution -- how is it done?

Mark

karl@triceratops.cis.ohio-state.edu (Karl Kleinpaste) (04/14/89)

mark@drd.UUCP (Mark Lawrence) writes:
   I know other
   people run lists without admin type messages echoing back to the
   distribution -- how is it done?

Here is my canonical large mailing list maintenance scheme.

In /usr/lib/aliases:

ListName-request:	karl
ListName:		"|/n/dinosaur/0/karl/ListName/SendScript"
owner-ListName:		ListName-request
ListName-out:		:include:/n/dinosaur/0/karl/ListName/Aliases
owner-ListName-out:	ListName-request

/n/dinosaur/0/karl is my home directory.  The Aliases file has the
actual addresses.  The SendScript looks like this:

#!/bin/sh
/bin/sed -e '/^Reply-To:/d' -e '/^Sender:/d' -e '/^From /d' | \
	(echo Reply-To: ListName@cis.ohio-state.edu; \
	 echo Errors-to: ListName-request@cis.ohio-state.edu; \
	 echo Sender: ListName-request@cis.ohio-state.edu; \
	 echo Precedence: bulk; /bin/cat -) | \
	/usr/lib/sendmail -f ListName-request@cis.ohio-state.edu \
		-F 'ListName Mailing List' ListName-out

The Precedence: header and -f ListName-request are what prevent
vacation(1) from generating responses to mail which arrives from such
lists.

--Karl

esj@beach.cis.ufl.edu (Eric S. Johnson) (04/14/89)

I used to moderate a fairly large mailing list. There came a point in
time when this mailing list grew to large. 20-30 messages a day 
on a list of 150-200 people can make even the fastest machine crawl.
Since the machine the list was running on was not bought to run mailing
lists, I caught a bit of flak from above when the load average shot
up above 15 and there were 10 sendmail processes chewing on the mailing 
list. I had to do something. I proposed to the people on the list that
it was time to convert it to a newsgroup. The responce was completly 
negative. So I dug out the sendmail docs and found another solution.
This might be of help to other mailing list admin's with large lists.

Basicly, sendmail can be told to use queues other then the default
/usr/spool/mqueue. To do this you use the -oQ option on the command
line. So I set up a new queue just for the mailing list. I then 
made a small variation on Karl K.'s generic mailing list system 
and Voila: there is never more then one sendmail process crunching 
on the mailing list. Here is what you do. The aliases file
looks just like Karl's generic one:

listname: "| /usr/spool/mqueue/listname/send-list"
listname-request: listmaintainer
owner-listname: listmaintainer
listname-out: :include:/usr/spool/mqueue/listname/aliasesforlist

Then the /usr/spoool/mqueue/listname/send-list script looks
like this:

#!/bin/sh
sed -e '/^From /d' | \
 	(echo Errors-To: listname-request@beach.cis.ufl.edu; \
	 echo Sender: listname-request@beach.cis.ufl.edu; \
	 echo Precedence: bulk; cat -) | \
	 /usr/lib/sendmail -f listname-request@beach.cis.ufl.edu \
			-F 'The List Name' \
			-odq -oQ/usr/spool/mqueue/listname \
			listname-out


The -oQ option tells sendmail to use the non-standard queue, and the
-odq option tells sendmail to simply queue the message for later
processing. 

Then, you need to have a sendmail daemon processes go thru and 
processes the queue every once in a while. I added the following line
to the rc.local file on the machine:

	/usr/lib/sendmail -oQ/usr/spool/mqueue/listname -q12h

And every 12 hours the daemon runs the queue. 

This lets you keep the machine load of the list down to a reasonable 
level, no matter what the traffic is. And it keeps the list traffic
seperate from your normal mail, which makes it easier to monitor.

Enjoy,
Ej