SpamAssassin は STDIN からメールの内容を読んで、 spam か ham かマークをして STDOUT へ流す、という動作をする。
また、 /etc/aliases の manpage を見てみると "|command" とか書いてあって、いかにも「newaliases が先頭のパイプをパースして以下のコマンドに渡すようにしてそう、"| a2ps | lpr -Plp0" *1 みたいなことは書けないんじゃ」と思ってしまうのだが、さにあらず。
hoge: "| a2ps | lpr -Plp0"
どうやら書けるようです。怪しいなら cat(1) か何かでテスト。
ということで、「spam には SpamAssassin にマークをつけさせる」というだけなら、 /etc/aliases には例えば次のように書けばよい *2 。
foobar-ml: "| /usr/local/bin/spamassassin -p /usr/local/share/spamassassin/user_prefs | /usr/local/sbin/distribute -l foobar-ml -R -I /var/spool/distribute/foobar-ml.seq -a foobar-ml -r foobar-ml@example.com -L /var/spool/distribute/foobar-ml.rec"
spam だと判定されたメールを自動的に破棄する、とかいう場合にどうしたらいいかは、まだ調査中。 distribute(1) って STDIN から何も入ってこなかったらどうなるの?