not run script firewall (lenny 5.0.4)

startup script displays a message:

# /etc/init.d/firewall start
Starting firewall: iptables
iptables v1.4.2: Can't use -i with OUTPUT

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.4.2: Can't use -i with OUTPUT

not to understand what is wrong in the script.
Who then can tell you that?

#!/bin/sh
#chkconfig: - 98 02
IPTAB="/sbin/iptables"
INET_IFACE="ppp0"
UNPRIPORTS="1024:65535"
start_fw()
{
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPTAB -F
$IPTAB -X
$IPTAB -P INPUT DROP
$IPTAB -P OUTPUT DROP
$IPTAB -P FORWARD ACCEPT
$IPTAB -A INPUT -i lo -j ACCEPT
$IPTAB -A OUTPUT -o lo -j ACCEPT
$IPTAB -A INPUT -m state ! -i lo --state NEW -j DROP
$IPTAB -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP
$IPTAB -A INPUT -m state --state INVALID -j DROP
$IPTAB -A FORWARD -m state --state INVALID -j DROP
$IPTAB -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTAB -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPTAB -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTAB -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTAB -A INPUT -p UDP -s 0/0 --destination-port 138 -j DROP
$IPTAB -A INPUT -p UDP -s 0/0 --destination-port 113 -j REJECT
$IPTAB -A INPUT -p UDP -s 0/0 --source-port 67 --destination-port 68 -j ACCEPT
$IPTAB -A INPUT -p UDP -j RETURN
$IPTAB -A OUTPUT -p UDP -s 0/0 -j ACCEPT
$IPTAB -A INPUT --fragment -p ICMP -j DROP
$IPTAB -A OUTPUT --fragment -p ICMP -j DROP
$IPTAB -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type source-quench -j ACCEPT
$IPTAB -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type source-quench -j ACCEPT
$IPTAB -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type echo-reply -j ACCEPT
$IPTAB -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type echo-request -j ACCEPT
$IPTAB -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type parameter-problem -j ACCEPT
$IPTAB -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type parameter-problem -j ACCEPT
$IPTAB -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 53 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 53 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p udp -m udp -i $INET_IFACE --dport $UNPRIPORTS --sport 53 -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 1024:65353 --sport 53 -j ACCEPT
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 113 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 113 -j ACCEPT ! --syn
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 113 -j DROP
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 25 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 25 -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 110 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 110 -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 143 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 143 -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 22 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 22 -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 22 --sport 1020:1023 -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 1020:1023 --sport 22 -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 21 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 21 -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p tcp -m tcp -m multiport -o $INET_IFACE --sport $UNPRIPORTS -j ACCEPT --dports 80,443
$IPTAB -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE --dport $UNPRIPORTS -j ACCEPT --sports 80,443 ! --syn
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 20 -j ACCEPT
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 20 --sport $UNPRIPORTS -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport $UNPRIPORTS --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport $UNPRIPORTS -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 23 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 23 -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 79 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 79 -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 43 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 43 -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 70 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 70 -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 210 --sport $UNPRIPORTS -j ACCEPT
$IPTAB -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 210 -j ACCEPT ! --syn
$IPTAB -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 33434:33523 --sport 32769:65535 -j ACCEPT
$IPTAB -A OUTPUT -i eth2 -p tcp -j ULOG --ulog-prefix "out-tcp-eth2: " 
$IPTAB -A INPUT -i eth2 -p tcp -j ULOG --ulog-prefix "inp-tcp-eth2: "
$IPTAB -A OUTPUT -i ppp0 -p tcp -j ULOG --ulog-prefix "out-tcp-ppp0: "
$IPTAB -A INPUT -i ppp0 -p tcp -j ULOG --ulog-prefix "inp-tcp-ppp0: "
}
case "$1" in
start) echo -n "Starting firewall: iptables"
 start_fw
        echo "." 
 ;;
stop) echo -n "Stopping firewall: iptables"
 iptables -F
 iptables -X
        echo "."
        ;;
save) echo -n "Saving firewall: iptables"
 iptables-save > /etc/rules-save
 echo "."
 ;;    
restart) echo -n "Restarting firewall: iptables"
 iptables -F
 iptables -X
 cat /etc/rules-save | iptables-restore
        echo "."
        ;;
reload|force-reload) echo -n "Reloading configuration files for firewall: iptables"
        echo "."
        ;;
*) echo "Usage: /etc/init.d/rc.iptables start|stop|restart|reload|force-reload"
        exit 1 
        ;;
esac
exit 0

On lines 73 and 75 you're trying to add a filter based on the input device to the output filter chain, which cannot work.

Thanks for your help!