chiark / gitweb /
REORG Delete everything that's not innduct or build system or changed for innduct
[innduct.git] / backends / news2mail.in
diff --git a/backends/news2mail.in b/backends/news2mail.in
deleted file mode 100644 (file)
index 5f22231..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-#! /usr/bin/perl
-# fixscript will replace this line with require innshellvars.pl
-
-# news to mail channel backend
-#
-# INN gives us
-#      @token@ addrs
-# for each article that needs to be mailed.  We invoke sm on the
-# localhost to get the actual article and stuff
-# it down sendmail's throat.
-# 
-# This program expect to find a file that maps listname to listaddrs,
-#      @prefix@/etc/news2mail.cf
-# which must contain address mapping pairs such as
-#
-#      big-red-ants@ucsd.edu   big-red-ants-digest@ucsd.edu            
-#
-# where the first token is the name fed to us from INN, and which is
-# also placed in the To: header of the outgoing mail.  It's probably
-# the subscriber's list submittal address so that replies go to the
-# right place.  The second token is the actual address sendmail ships
-# the article to.
-#
-# In the INN newsfeeds file, you need to have a channel feed:
-#      n2m!:!*:Tc,Ac,Wn*:@prefix@/bin/news2mail
-# and a site for each of the various mailing lists you're feeding,
-# such as
-#      big-red-ants@ucsd.edu:rec.pets.redants.*:Tm:n2m!
-#
-# Error handling is nearly nonexistent.
-#
-#      - Brian Kantor, UCSD Aug 1998
-
-require 5.006;
-
-use FileHandle;
-use Sys::Syslog;
-use strict;
-
-my $cfFile = $inn::pathetc . "/news2mail.cf" ;
-my $sendmail = $inn::mta ;
-my $sm = $inn::pathbin . "/sm" ;
-my %maddr = ();
-
-#
-# the syslog calls are here but don't work on my system
-#
-openlog('news2mail', 'pid', 'mail');
-
-syslog('info', 'begin');
-
-#
-# load the list names and their mail addresses from cf file
-# #comments and blank lines are ignored
-#
-unless (open CF, "< $cfFile") {
-               syslog('notice', 'CF open failed %m');
-               die "bad CF";
-               }
-
-while ( <CF> ) {
-       next if /^#|^\s+$/;
-       my ( $ln, $ma ) = split /\s+/;
-       $maddr{ $ln } = $ma;
-       }
-close CF;
-
-#
-# for each incoming line from the INN channel
-#
-while ( <STDIN> ) {
-       chomp;
-
-       syslog('info', $_);
-
-       my ($token, $lnames) = split /\s+/, $_, 2;
-       my @addrs = split /\s+/, $lnames;
-
-       my @good = grep {  defined $maddr{$_} } @addrs;
-       my @bad  = grep { !defined $maddr{$_} } @addrs;
-
-       if (! @good) {
-               syslog('notice', "unknown listname $_");
-               next;
-               }
-
-       if (@bad) {
-               syslog('info', 'skipping unknown lists: ', join(' ', @bad));
-               }
-       mailto($token, $lnames, @maddr{@good});
-       }
-
-syslog ("info", "end") ;
-
-exit 0;
-
-sub mailto {
-       my($t, $l, @a) = @_ ;
-
-       my $sendmail = $inn::mta ;
-       $sendmail =~ s!\s*%s!! ;
-       my @command = (split (' ', $sendmail), '-ee', '-fnews', '-odq', @a);
-#      @command[0] = '/usr/local/bin/debug';
-
-       syslog('info', join(' ', @command));
-
-       unless (open(SM, '|-', @command)) {
-               syslog('notice', join(' ', '|', @command), 'failed!');
-               die "bad $sendmail";
-               }
-
-       my $smgr = "$sm -q $t |";
-
-       unless (open(SMGR, $smgr)) {
-           syslog('notice', "$smgr failed!");
-           die "bad $smgr";
-       }
-
-       # header
-       while ( <SMGR> ) {
-               chomp;
-
-               # empty line signals end of header
-               if ( /^$/ ) {
-                       print SM "To: $l\n\n";
-                       last;   
-                       }
-
-               #
-               # skip unnecessary headers
-               #
-               next if /^NNTP-Posting-Date:/i;
-               next if /^NNTP-Posting-Host:/i;
-               next if /^X-Trace:/i;
-               next if /^Xref:/i;
-               next if /^Path:/i;
-
-               #
-               # convert Newsgroups header into X-Newsgroups
-               #
-               s/^Newsgroups:/X-Newsgroups:/i;
-
-               print SM "$_\n";
-               }
-
-       # body
-       while ( <SMGR> ) {
-               print SM $_;
-       }
-
-       close(SMGR);
-       close(SM);
-       }