Php mail()
関数を使用するためだけにsendmailをUbuntu10.04にインストールしました。 iptablesが実行されていない限り、これは正常に機能します(これをテストするためにsendmail [email protected]
を使用しています)。
SMTPとDNSを許可したと思います(iptablesルールをテストするために使用しているスクリプトは以下のとおりです。私のバージョンではホストネームサーバーの実際のIPです)が、役に立ちません!
iptables --flush
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Postgres
iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
# Webmin
iptables -A INPUT -p tcp --dport 10000 -j ACCEPT
# Ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
# sendmail
iptables -A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
# DNS
iptables -A INPUT -p udp --sport 53 -s <nameserver1> -j ACCEPT
iptables -A INPUT -p udp --sport 53 -s <nameserver2> -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -s <nameserver1> -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -s <nameserver2> -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -d <nameserver1> -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -d <nameserver2> -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -d <nameserver1> -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -d <nameserver2> -j ACCEPT
iptables -A INPUT -j DROP
# Add loopback
iptables -I INPUT 1 -i lo -j ACCEPT
現在あなたが持っている:
iptables -A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
これにより:
送信メールの場合、外の世界に接続できるようにするには、sendmailが必要です。
したがって、次のようなものも必要になります。
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
オープンリレーにならないように注意してください。
メールを送信するためにリレー(スマートホスト)に接続し、受信メールを必要としないことを前提としています。そうでない場合は、やるべきことがもっとあります。自動化されたシステムでは、電子メールサービスが適切に構成されていない傾向があり、その結果、メールがドロップされたり、スパムバケットに送信されたりする可能性があります。
Conntrackを使用して、確立された接続を処理することをお勧めします。これにより、残りのルールの新しい接続についてのみ心配する必要があるため、残りのルールが簡素化されます。
iptable -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptable -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Pingエントリの前のルールは適切に見えます。
ルールは発信トラフィックをカバーする必要があります
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
ICMPルールが不完全なようです
iptables -A INPUT -p icmp --icmp-type 3/4 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 3/4 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT