#!/usr/bin/perl # # mail2news - post a mail to newsgroup. # # Usage: # Add an entry to your procmailrc. # # :0 # * ^TOml@example.org # | mail2news local.ml # # the only argument is newsgroup you want to post. sub split_mail_data{ my $body = undef; for(@mail_data){ if(/^$/o && !$body){ $body = 1; next; } if($body){ push(@body, $_); } else { if(/^\s/){ $header[$#header] .= "\n" . $_; } else { push(@header, $_); } } } } sub del_header($){ my $regex = shift; @header = grep(!/$regex/i, @header); } while(){ chomp; push @mail_data, $_; } &split_mail_data; &del_header("Return-Path"); &del_header("Delivered-To"); &del_header("Posted"); &del_header("Xref"); unshift @header, "Approved: negi\@KU3G.org"; unshift @header, "Newsgroups: $ARGV[0]"; unshift @header, "Path: not-for-mail"; unshift @header, "Subject: (none)" unless (grep(/^Subject:/i, @header)); for(@header){ next if /^>From /; next if /^From /; s/\[.*\d+\] // if (/^Subject:/i); s/^(Received:.*)/X-M2N-$1/i; s/^(Subject:)\s*$/$1 (none)/i; $article .= $_ . "\n"; } $article .= "\n"; $article .= join("\n", @body); $article .= "\n"; open(RNEWS, "|/usr/bin/rnews"); print RNEWS "#! rnews ", length($article), "\n", $article; close RNEWS;