#!/usr/bin/perl
#
# imap proxy multi port checker
#

use IO::Socket;
use IMAP::Client;
my @shifts = @ARGV;
my $ip = shift @shifts;
my @ports = @shifts;
my $error;

unless (@ports && $ip) {
	print "plugin config problem\n";
	exit 2;
}

my $user = "mailtest";
my $password = "aSdF9630";

foreach $port (@ports) {
	($cluster,$port) = split(":",$port);
	my $sock = new IO::Socket::INET ( 
					PeerAddr => $ip,
					PeerPort => $port,
					Proto => 'tcp'
					);
	my $imap = new IMAP::Client();
	$imap->connect(PeerAddr => $ip,
			ConnectMethod => 'PLAIN',
			IMAPPort => $port);
	my $auth = $imap->login($user,$password);
	unless ($auth && $sock) {
		$imap->error();
		$error .= "," if $error;
		$error .= "$cluster ";
	}
}

if ($error) {
	$error .= "broken";
	print "$error\n";
	exit 2;
} else {
	print "ok!\n";
	exit 0;
}
