#!/bin/perl


# $Source: /sources/cvsrepos/majordomo/request-answer,v $
# $Revision: 1.15 $
# $Date: 2000/01/07 11:10:18 $
# $Author: cwilson $
# $State: Exp $
#
# $Locker:  $

# set our path explicitly
# PATH it is set in the wrapper, so there is no need to set it here.
#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb";

# Read and execute the .cf file
$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf";
if ($ARGV[0] eq "-C") {
    $cf = $ARGV[1];
    shift(@ARGV); 
    shift(@ARGV); 
}
if (! -r $cf) {
    die("$cf not readable; stopped");
}
require "$cf";

chdir($homedir) || die("Can't chdir(\"$homedir\"): $!");
unshift(@INC, $homedir);
require "shlock.pl";
require "majordomo.pl";

$majordomo_dont_reply = $majordomo_dont_reply
    || '(mailer-daemon|uucp|listserv|majordomo)\@';

&ParseMailHeader(STDIN, *hdrs);
$reply_to = &RetMailAddr(*hdrs);
$reply_to = join(", ", &ParseAddrs($reply_to));

die("request-answer: $reply_to is not a valid return address.\n") 
    if (! &valid_addr($reply_to));

# robots should not reply to other robots...
if ($reply_to =~ m/$majordomo_dont_reply/i) {
    &abort( "$whoami: not replying to $1 to avoid mail loop.\n");
}

$in_reply_to = $hdrs{"message-id"} . ", from " . $hdrs{"from"};
$list = $ARGV[0];

# Define all of the mailer properties:
# It is possible that one or both of $sendmail_command and $bounce_mailer
# are not defined, so we provide reasonable defaults.
$sendmail_command = "/usr/lib/sendmail"
  unless defined $sendmail_command;
$bounce_mailer = "$sendmail_command -f\$sender -t"
  unless defined $bounce_mailer;

$sender = "$list-approval\@$whereami";

$mailcmd = eval qq/"$bounce_mailer"/;

if (defined($isParent = open(MAIL, "|-"))) {
    &do_exec_sendmail(split(' ',$mailcmd))
 	unless $isParent;
} else {
    &abort("Failed to fork prior to mailer exec");
}


print MAIL <<"EOM";
To: $reply_to
From: $list-request\@$whereami
Subject: Your mail to $list-request\@$whereami
In-Reply-To: $in_reply_to
Reply-To: $list-approval\@$whereami

This pre-recorded message is being sent in response to your recent
email to $list-request\@$whereami.

All routine administrative requests (including subscriptions and
unsubscriptions) concerning this mailing list are handled by an
automated server.  Please read this message carefully to find the
information relevant to you.

SUBSCRIBING
===========

To subscribe to $list, send the following in the body (not
the subject line) of an email message to "$whoami":

	subscribe $list

This will subscribe the account from which you send the message to
the $list list.

If you wish to subscribe another address instead (such as a local
redistribution list), you can use a command of the form:

	subscribe $list other-address\@your_site.your_net

UNSUBSCRIBING
=============

To unsubscribe from $list, send the following in the body (not
the subject line) of an email message to "$whoami":

	unsubscribe $list

This will unsubscribe the account from which you send the message.
If you are subscribed with some other address, you'll have to send
a command of the following form instead:

	unsubscribe $list other-address\@your_site.your_net

If you don't know what address you are subscribed with, you can send
the following command to see who else is on the list (assuming that
information isn't designated "private" by the owner of the list):

	who $list

If you want to search non-private lists at this server, you can do that
by sending a command like:

	which string

This will return a list of all entries on all lists that contain "string".

HELP
====

To find out more about the automated server and the commands it
understands, send the following command to "$whoami":

	help

If you feel you need to reach a human, send email to:

	$list-approval\@$whereami

EOM

close(MAIL);

exit 0;
