最近大学のメールサーバーがスパムの多さに音を上げて弾くのを諦めたらしい。
ということで .forward でスクリプトを呼び出す。
昔のコードの使いまわしなので、exit 65 に意味があるのかどうかすら忘れた。
#!/usr/bin/awk -f
BEGIN {
spam = 0;
i = 1;
mailcommand = "/usr/sbin/sendmail tensousaki@example.com";
}
spam {next}
/^[Mm]essage-[Ii][Dd]:.*<[^>]+$/ {spam = 1; next}
/yumenosekai\.org/ {spam = 1; next}
/otonanorakuen\.com/ {spam = 1; next}
/mixclub\.org/ {spam = 1; next}
{
message[i] = $0;
i = i + 1;
}
END {
if(spam) {
exit_as_it_is_a_spam();
} else {
for (i = 1; i <= NR; i = i + 1) {
print message[i] | mailcommand;
}
close(mailcommand);
}
}
function exit_as_it_is_a_spam() {
exit 65;
}
next の処理がいかにも非効率なんだけど nextfile をこの文脈で使っていいものかを把握していない。
疑問点は、標準入力から読んでいるときに nextfile を使うと END に飛べるのかということ。
|