プライベートIPアドレスをはじく正規表現を書いてみたんだけど、なんか自信がなかったわけです。
die "detect private ip: $ip" if $ip =~ /^(192\.168|10\.|172\.(1[6-9]|2[0-9]|3[01])\.)/;
クラスBのプライベートIP*1って、こんなややこしいんだっけ?? あまりに自信なかったせいでGoogle code searchしちゃいました。結論としては、SpamAssassinでも同じことやってるみたいだから、問題なさそうです。
Mail::SpamAssasin::Constantsより。
use constant IP_PRIVATE => qr{^(?: 10| # 10/8: Private Use (3330) 127| # 127/8: Private Use (localhost) 169\.254| # 169.254/16: Private Use (APIPA) 172\.(?:1[6-9]|2[0-9]|3[01])| # 172.16-172.31/16: Private Use (3330) 192\.168 # 192.168/16: Private Use (3330) )\.}ox;
localhostはともかく、APIPAってなんだっけ? とググってみたら、こんな話だそうで。へー。
*1:172.16.0.0/12、が答え。