#!/usr/bin/perl $|=1; use lib ('../lib'); use IMAP::Client; use strict; sub dump_hash(%) { my %hash = @_; foreach my $r (keys %hash) { print "$r: $hash{$r}\n"; } } sub dump_fetch(%) { my %base = @_; foreach my $msgid (keys %base) { return 0 unless ($base{$msgid}); print "(MSGID = $msgid)\n"; my %ret = %{$base{$msgid}}; foreach my $key (keys %ret) { if ($key eq "ENVELOPE") { foreach my $key2 (keys %{$ret{$key}}) { print "ENVELOPE: $key2: $ret{$key}->{$key2}\n"; } } elsif ($key eq 'FLAGS') { print "FLAGS: ",join(' ',@{$ret{$key}}),"\n"; } elsif (($key eq 'BODYSTRUCTURE') || ($key eq 'BODY')) { foreach my $subkey (keys %{$ret{$key}}) { if ($subkey =~ /^\d+$/) { foreach my $subkey2 (keys %{$ret{$key}->{$subkey}}) { if ($subkey2 =~ /^\d+$/) { foreach my $subkey3 (keys %{$ret{$key}->{$subkey}->{$subkey2}}) { print "$key: $subkey: $subkey2: $subkey3: $ret{$key}->{$subkey}->{$subkey2}->{$subkey3}\n"; } } else { print "$key: $subkey: $subkey2: $ret{$key}->{$subkey}->{$subkey2}\n"; } } } else { print "$key: $subkey: $ret{$key}->{$subkey}\n"; } } } else { print "$key: $ret{$key}\n"; } } } return(1); } ########################### MAIN PROGRAM START ########################### if (scalar(@ARGV) < 3) { die "Requires 3 arguments - server, admin username, admin password\n"; } my $message = get_small_message(); my $errormsg = "Arguments must come in 3s - server, username, and password\n"; my @set; for (my $i=0;$ARGV[0];$i++) { $set[$i]->{'server'} = shift or die $errormsg; $set[$i]->{'user'} = shift or die $errormsg; $set[$i]->{'pass'} = shift or die $errormsg; } my $user; my %resp; my @resplist; my %imap; foreach my $connection (@set) { $imap{$connection->{'server'}} = new IMAP::Client(); unless (ref $imap{$connection->{'server'}}) { die "Failed to create object: $imap{$connection->{'server'}}\n"; } $imap{$connection->{'server'}}->onfail('ERROR'); $imap{$connection->{'server'}}->errorstyle('STACK'); $imap{$connection->{'server'}}->debuglevel(1); $imap{$connection->{'server'}}->connect(PeerAddr => $connection->{'server'}, ConnectMethod => 'STARTTLS SSL', ) or die "Unable to connect to [$connection->{'server'}]: ".$imap{$connection->{'server'}}->error(); } foreach my $connection (@set) { $imap{$connection->{'server'}}->authenticate2($connection->{'user'},$connection->{'pass'}) or die "Unable to authenticate as $connection->{'user'} on behalf of $user: ".$imap{$connection->{'server'}}->error()."\n"; } foreach my $connection (@set) { $imap{$connection->{'server'}}->id() or die $imap{$connection->{'server'}}->error(); } foreach my $connection (@set) { $imap{$connection->{'server'}}->capability() or die $imap{$connection->{'server'}}->error(); } foreach my $connection (@set) { $imap{$connection->{'server'}}->noop() or die $imap{$connection->{'server'}}->error(); } foreach my $connection (@set) { $imap{$connection->{'server'}}->select("INBOX"); } foreach my $connection (@set) { $imap{$connection->{'server'}}->logout(); } foreach my $connection (@set) { $imap{$connection->{'server'}}->disconnect(); } sub get_small_message { return('Return-Path: Received: from anonymous.missing (anonymous.missing [192.168.1.1]) by mail.mailserver.mailer (envelope-sender ) (MIMEDefang) with ESMTP id j9DGxkkY002977; Thu, 13 Apr 2005 12:59:47 -0400 (EDT) Received: from mail2.mailserver.mailer (mail2.mailserver.mailer [192.168.1.2]) by anonymous.missing (8.12.9/8.12.9) with ESMTP id j9DGxhtk022430 for ; Thu, 13 Apr 2005 12:59:44 -0400 Received: from mail3.mailserver.mailer (mail3.mailserver.mailer [192.168.1.3]) by mail2.mailserver.mailer (8.13.0/8.13.0) with ESMTP id j9DGxahC026654 for ; Thu, 13 Apr 2005 12:59:36 -0400 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_12345151.23452677" Subject: misc Date: Thu, 13 Apr 2005 12:59:29 -0400 Message-ID: Thread-Index: 4T5Q34A6FD7445D4F6GQ88443A5E4Q== From: "Anonimoose" To: X-OriginalArrivalTime: 13 Apr 2005 16:59:36.0163 (UTC) FILETIME=[7DB2EB30:01C5D017] X-To: recipient@somewhere.place X-SPAM-Score: undef - Domain Whitelisted (anonymous.missing: ) X-Scanned-By: MIMEDefang 2.3 (www dot roaringpenguin dot com slash mimedefang) Sender: fsnoone.you.know@anonymous.missing X-Random: 3385249 - d72ba9325687 This is a multi-part message in MIME format. ------_=_NextPart_001_12345151.23452677 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable What do *you* want to know? ------_=_NextPart_001_12345151.23452677 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

What to *you* want to know?

------_=_NextPart_001_12345151.23452677-- '); }