POP before SMTP 対策
サーバーから監視メールなどを投げたいとき、
- 自分自身がメールサーバになる
- 外部のメールサーバを利用する
のどちらかになると思われる。社内では勝手にメールサーバは起動できないため(ローカル配送のみのメールサーバならよいかも)、外部のメールサーバを利用するしかない。しかし、昨今のメールサーバは POP before SMTP 対応しており、ただ送ろうとしてもはじかれてしまう。
POP before SMTP とはいっても、POP3 で認証した IP アドレスを覚えているだけである。そのIPアドレスだったらSMTPしてもいいよと。
ということで、POP3認証だけをするプログラムを作った。これを cron などで5分置きに走らせるとそのサーバからは自由にSMTPできるとこういうわけだ。
#!/usr/bin/perl use strict; use warnings; use Net::POP3; my $hostname = "mailserver"; my $username = "n-kizashi"; my $password = q/kizashi@hatena/; my $pop = Net::POP3->new($hostname) or die "cannot open Connection to $hostname: $!\n"; defined $pop->login($username, $password) or die "authentication failed\n"; print "authentication success!!\n"; $pop->quit(); __END__