#
# MailScanner - SMTP E-Mail Virus Scanner
# Copyright (C) 2002 Julian Field
#
# $Id: Mail.pm 877 2002-09-19 18:23:04Z jkf $
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# The author, Julian Field, can be contacted by email at
# Jules@JulianField.net
# or by paper mail at
# Julian Field
# Dept of Electronics & Computer Science
# University of Southampton
# Southampton
# SO17 1BJ
# United Kingdom
#
#
# Functions which are to do with the MTA, but are slightly higher-level
# than that in that they are the same whichever MTA we are using.
#
package MailScanner::Mail;
use strict 'vars';
use strict 'refs';
no strict 'subs'; # Allow bare words for parameter %'s
use vars qw($VERSION);
### The package version, both in 1.23 style *and* usable by MakeMaker:
$VERSION = substr q$Revision: 877 $, 10;
# Attributes are
#
# Kick the MTA into doing a delivery attempt on these messages.
# Take a list of message objects as its input.
# Only kick it for messages that aren't set to just "queue".
sub TellAbout {
my(@messages) = @_;
my(@idlist, @ThisBatch, $message, %OutQueues);
return unless @messages;
MailScanner::Log::DebugLog("About to deliver " . scalar(@messages) .
" messages") if @messages;
# Build a list of the messages we actually have to tell sendmail about
foreach $message (@messages) {
$OutQueues{MailScanner::Config::Value('outqueuedir', $message)} .= " " . $message->{id}
#push @idlist, $message->{id}
unless MailScanner::Config::Value('deliverymethod', $message) eq 'queue';
}
# If there are no "kicking" messages in the list, just get out
#return unless @idlist;
return unless %OutQueues;
# Deliver up to 20 messages per invocation
#while(@idlist) {
# @ThisBatch = splice @idlist, $[, 20;
# MailScanner::Sendmail::KickMessage(@ThisBatch);
#}
# Now takes a hash of queues-->space-separated string of message ids
MailScanner::Sendmail::KickMessage(\%OutQueues);
}
# Constructor.
# Takes dir => directory queue resides in
sub new {
my $type = shift;
my $this = {};
#$this->{dir} = shift;
bless $this, $type;
return $this;
}
syntax highlighted by Code2HTML, v. 0.9.1