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__