chiark / gitweb /
Sends rejection copies to record etc.
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 28 Feb 2010 21:36:12 +0000 (21:36 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 28 Feb 2010 21:36:12 +0000 (21:36 +0000)
.gitignore
forward-suffix.part.INO
get-settings
stump/etc/modenv.INO
xlog/bin/record

index 180fe79..8dc5a05 100644 (file)
@@ -14,6 +14,7 @@
 /xlog/log/*/event.log
 /xlog/log/*/event.log.[0-9]
 /xlog/log/*/event.log.[0-9].gz
+/xlog/log/*/nr-*.txt
 /crontab.part
 /stump/etc/modenv
 /stump/etc/added-headers
index def37b3..bf5121a 100644 (file)
@@ -36,6 +36,6 @@ endif
 
 if $local_part_suffix is +%ABBREV%-internal-reject-copy
 then
-       seen deliver %ABBREV%-rejections@chiark.greenend.org.uk
+       seen deliver %REJECTIONSLIST%
        finish
 endif
index dda3f51..f9b3d6f 100644 (file)
@@ -5,7 +5,7 @@ pas="$paskeys"
 for k in $pas; do eval "$k=''"; export $k; done
 
 . settings
-export GROUP ABBREV INFOHEADER MODEMAIL GROUPURL
+export GROUP ABBREV INFOHEADER MODEMAIL GROUPURL REJECTIONSLIST
 
 . ../global-settings
 export ROOTBASEDIR CGIBASEURL DOMAIN SLIMYDOMAIN OURUSER ADMIN
index e403b42..ed322f6 100755 (executable)
@@ -50,6 +50,9 @@ MAILOUT_REJECT_FORMAIL_ARGS='
        -I Bcc:%OURUSER%+%ABBREV%-internal-log+mailout@%DOMAIN%
        -I Bcc:%OURUSER%+%ABBREV%-internal-reject-copy@%DOMAIN%
 '
+export MAILOUT_RECVACK_FORMAIL_ARGS
+export MAILOUT_ACCEPTACK_FORMAIL_ARGS
+export MAILOUT_REJECT_FORMAIL_ARGS
 
 #######################################################################
 # STUMP enforces limitations on the maximum number of newsgroups
index 27ca36b..a628195 100755 (executable)
@@ -11,6 +11,8 @@ $dir =~ s,/[^/]+$,,;
 $dir =~ s,/bin$,/log,;
 $dir .= "/$ARGV[1]";
 
+my $message;
+
 sub parse__headerline () {
     $f{Subject}= $' if m/^Subject:\s*/i; #';
     $f{MessageID}= $' if m/^Message\-ID:\s*/i; #';
@@ -71,12 +73,29 @@ sub parse_webstump2stump () {
 }
 
 sub parse_mailout () {
+    my $keepheader= 1;
     while (<STDIN>) {
+       $keepheader= 1 unless m/^[ \t]/;
+       $keepheader= 0
+           if m/^(?: received )/ix;
+       $keepheader= 'mangle'
+           if m/^(?: to
+                  | from
+                  | return-path
+                  | reply-to
+                  | errors-to
+                  )/ix;
+       if ($keepheader) {
+           my $line= $_;
+           $line =~ s/\@.{0,2}/ at ../g if $keepheader eq 'mangle';
+           $message .= $line;
+       }
        chomp;
        $f{Event}= "notify $'" if m/^X-Webstump-Event:\s*/i; #';
        last if m/^$/;
     }
     while (<STDIN>) {
+       $message .= $_;
        chomp;
        next unless s/^\> //;
        last if m/^$/;
@@ -86,11 +105,18 @@ sub parse_mailout () {
 
 $f{Event}= '?';
 &{"parse_$ARGV[0]"};
-while (<STDIN>) { }
+while (<STDIN>) { $message .= $_; }
 STDIN->error and die $!;
 
 $f{Now}= time;
 
+if ($f{Event} =~ m/^notify reject /) {
+    #$ref= $f{MessageID}
+    open I, ">$dir/nr-$f{MessageNum}.txt" or die $!;
+    print I $message or die $!;
+    close I or die $!;
+}
+
 open L, ">>$dir/event.log" or die $!;
 
 my @s= map {