梶木@TAOです
ML を mail2news などでニュースとして購読している人が、
ニュースリーダーから ML に記事を投稿する際に不要なヘッダを
取り除くためのフィルターを作りましたので、ご参考までに
投稿します。
[背景]
私は Mail2News mini HOWTO にて ML の記事を INN に転送して
ニュースとして購読しています。この方法では、ML の投稿先の
メイルアドレスを moderator として設定し、ニュースリーダーから
ML に直接、記事をメイル投稿する実装になっていました。
ところが、これだと Newsgroups: などの余計なヘッダが付いた
ままで、ML に記事が流れてしまい、あまり良くないという
ご指摘を戴きました。調べてみると、jlug.ml.users からも
Newsgroup: jlug.ml.users というヘッダが付いたメイルが流れて
きています。
これでは別の Newsgroup 名で購読している人には配送されない
かも知れません。そこで、ML に直接メイル投稿する前に
フィルターにかけて余計なヘッダを取り除く、news2mail の
gateway を設けました。
私は自分のメイルアドレスを moderator に設定し、procmail にて
ML 毎に異なる投稿先に選別して投稿する方法で実装しました。
これまで迷惑だと感じてた人、ごめんなさい。お詫びに、
短いので procmail の設定と news2mail プログラムを添付します。
# 著作権は主張しませんので、自由に料理して下さい
# 動作保証はしません。 At your own risk.
----
:0 HD
* ^Newsgroups: local\.ml\.a-list
| /usr/local/bin/news2mail.pl a-list _at_ mailing.list | /usr/sbin/sendmail -t
:0 HD
* ^Newsgroups: local\.ml\.b-list
| /usr/local/bin/news2mail.pl b-list _at_ mailing.list | /usr/sbin/sendmail -t
----
#!/usr/bin/perl
#
# News to Mail Gateway
# 1998 Programed by Yoshi. Kajiki <kajiki _at_ 3dpro.tao.go.jp>
#
# Usage: cat article | news2mail.pl receiver | sendmail -t
#
### Get Argument ###
if ($#ARGV == 0) {
$receiver = $ARGV[0];
} else {
die "Usage: cat article | news2mail.pl receiver_address | sendmail -t\n";
}
### Remove Illigal Headers ###
while (<STDIN>) {
if (/^$/) { last }
if (/^To:/) { $_ = "To: $receiver\n" }
if (/^Path:/) { next }
if (/^Newsgroups:/) { next }
if (/^Organization:/) { next }
if (/^Lines:/) { next }
if (/^NNTP-Posting-Host:/) { next }
if (/^X-/) { next }
print $_;
}
print "\n";
### Through Body ###
while (<STDIN>) {
print $_;
}
print ".\n";
----