----SPAM---- 05.29 RE: NO! Dont go! ms2cgp problem

Martin.Hepworth martinh at solidstatelogic.com
Wed Jan 17 18:51:54 CET 2007


Vasiliy

I just mention is 'cos the default lock type on sendmail MTA types
changed a couple of versions ago from flock to posix.....as most people
are now running sendmail 8.13 which uses posix rather than previous
versions of sendmail which use flock.

Might be worth a quick test to see what happens if you make it flock
rather than the new default of posix.

--
Martin Hepworth
Snr Systems Administrator
Solid State Logic
Tel: +44 (0)1865 842300

> -----Original Message-----
> From: mailscanner-bounces at lists.mailscanner.info [mailto:mailscanner-
> bounces at lists.mailscanner.info] On Behalf Of Vasiliy Boulytchev
> Sent: 17 January 2007 17:34
> To: MailScanner discussion
> Subject: Re: ----SPAM---- 05.29 RE: NO! Dont go! ms2cgp problem
>
> Dont know :)
>
> My Queues are on NFS...  I have not changed the locktype from
> default...  All the messages just pile up in the MS Outgoing queue
> directory.  So I can run the fix.pl to process all the messages
instead
> of using ms2cgp, but that becomes problematic.
>
> Vasiliy Boulytchev
> vasiliy at linuxspecial.com
>
>
>
> Martin.Hepworth wrote:
> > Vasiliy
> >
> > Nothing to do with the recent change in MS's lock type is it??
> >
> > --
> > Martin Hepworth
> > Snr Systems Administrator
> > Solid State Logic
> > Tel: +44 (0)1865 842300
> >
> >
> >> -----Original Message-----
> >> From: mailscanner-bounces at lists.mailscanner.info
[mailto:mailscanner-
> >> bounces at lists.mailscanner.info] On Behalf Of Vasiliy Boulytchev
> >> Sent: 17 January 2007 17:11
> >> To: MailScanner discussion
> >> Cc: jrudd at ucsc.edu
> >> Subject: Re: NO! Dont go! ms2cgp problem
> >>
> >> OK, a bit more information...
> >>
> >> cd /usr
> >> grep -R QueueDirectory *
> >>
> >> lib/MailScanner/MailScanner/CustomConfig.pm:#    sendmail -q30m
> >> -OQueueDirectory=/var/spool/mqueue.spam
> >> lib/MailScanner/MailScanner/CustomConfig.pm:#    sendmail -q60m
> >> -OQueueDirectory=/var/spool/mqueue.highspam
> >> lib/MailScanner/MailScanner/Sendmail.pm:      $args = "
> >> -OQueueDirectory=$outqdir " if $outqdir;
> >>
> >>
src/mailscanner/src/MailScanner-install-4.57.6/perl-tar/MailScanner-
> >> 4.57.6/lib/MailScanner/CustomConfig.pm:#
> >> sendmail -q30m -OQueueDirectory=/var/spool/mqueue.spam
> >>
src/mailscanner/src/MailScanner-install-4.57.6/perl-tar/MailScanner-
> >> 4.57.6/lib/MailScanner/CustomConfig.pm:#
> >> sendmail -q60m -OQueueDirectory=/var/spool/mqueue.highspam
> >>
src/mailscanner/src/MailScanner-install-4.57.6/perl-tar/MailScanner-
> >> 4.57.6/lib/MailScanner/Sendmail.pm:
> >> $args = " -OQueueDirectory=$outqdir " if $outqdir;
> >>
src/mailscanner/src/MailScanner-install-4.57.6/perl-tar/MailScanner-
> >> 4.57.6/INSTALL.OpenBSD:
> >> sendmail_flags="-bd -OPrivacyOptions=noetrn
-ODeliveryMode=queueonly
> >> -OQueueDirectory=/var/spool/mqueue.in"
> >>
> >> Any suggestions? :)
> >>
> >> Again, I really dont need sendmail, I dont know why its everywhere.
> >> probably my misunderstanding....
> >>
> >> Vasiliy Boulytchev
> >> vasiliy at linuxspecial.com
> >>
> >>
> >>
> >> Vasiliy Boulytchev wrote:
> >>
> >>> John,
> >>>    First of all, THANK YOU SO MUCH for helping us out!  I have
been
> >>> using your cgp2ms and ms2cgp scripts for years flawlessly.
> >>>    Now that you decide to leave us, I get a problem with ms2cgp on
a
> >>> new install...
> >>>
> >>>    It seems the MS is not giving the correct $job value to the
> >>>
> > ms2cgp
> >
> >>> script.... syslog:
> >>>
> >>> --
> >>>    Jan 17 11:02:20 mailscanner1 ms2cgp[19781]: job =
> >>> -OQueueDirectory=/etc/MailScanner/shared/queues/ms1/out
> >>> Jan 17 11:02:20 mailscanner1 ms2cgp[19781]: qf =
> >>> /etc/MailScanner/shared/queues/ms1/out/qf-
> >>>
> >> OQueueDirectory=/etc/MailScanner/shared/queues/ms1/out
> >>
> >>> Jan 17 11:02:20 mailscanner1 ms2cgp[19781]: df =
> >>> /etc/MailScanner/shared/queues/ms1/out/df-
> >>>
> >> OQueueDirectory=/etc/MailScanner/shared/queues/ms1/out
> >>
> >>> Jan 17 11:02:20 mailscanner1 ms2cgp[19781]: msg =
> >>> /etc/MailScanner/mail.cluster/submx00/MS1.ms2cgp.-
> >>>
> >> OQueueDirectory=/etc/MailScanner/shared/queues/ms1/out.19781.tmp
> >>
> >>> Jan 17 11:02:20 mailscanner1 ms2cgp[19781]: Job
> >>> -OQueueDirectory=/etc/MailScanner/shared/queues/ms1/out writing to
> >>> /etc/MailScanner/mail.cluster/submx00/MS1.ms2cgp.-
> >>>
> >> OQueueDirectory=/etc/MailScanner/shared/queues/ms1/out.19781.tmp
> >>
> >>> Jan 17 11:02:20 mailscanner1 ms2cgp[19781]: Open input
> >>> /etc/MailScanner/shared/queues/ms1/out/qf-
> >>>
> >> OQueueDirectory=/etc/MailScanner/shared/queues/ms1/out
> >>
> >>> failed, dying
> >>> --
> >>>
> >>>    Now, if I call ms2cgp from commandline via this script:
> >>>   #!/usr/bin/perl -w
> >>>
> >>> opendir(DIR, ".");
> >>> @files = grep(/qf/,readdir(DIR));
> >>> closedir(DIR);
> >>>
> >>> foreach $file (@files) {
> >>>        substr($file, 0, 1) = "";
> >>>        substr($file, 0, 1) = "";
> >>>        system ("/usr/local/etc/ms2cgp $file");
> >>> }
> >>>
> >>>    The batch processes just fine, syslog:
> >>>
> >>> --
> >>> Jan 17 11:07:53 mailscanner1 ms2cgp[19859]: job = 19659
> >>> Jan 17 11:07:53 mailscanner1 ms2cgp[19859]: qf =
> >>> /etc/MailScanner/shared/queues/ms1/out/qf19659
> >>> Jan 17 11:07:53 mailscanner1 ms2cgp[19859]: df =
> >>> /etc/MailScanner/shared/queues/ms1/out/df19659
> >>> Jan 17 11:07:53 mailscanner1 ms2cgp[19859]: msg =
> >>> /etc/MailScanner/mail.cluster/submx00/MS1.ms2cgp.19659.19859.tmp
> >>> Jan 17 11:07:53 mailscanner1 ms2cgp[19859]: Job 19659 writing to
> >>> /etc/MailScanner/mail.cluster/submx00/MS1.ms2cgp.19659.19859.tmp
> >>> --
> >>>
> >>>    So it seems to me, MS is not passing the correct $job value...
> >>> furthermore, why is it making it -OQueueDirectory!?!?!?
> >>>
> >>>    What do you guys think?
> >>>
> >>>    THANK YOU VERY MUCH!!!  My cgp2ms and ms2cgp scripts are
> >>>
> > attached.
> >
> >>> Vasiliy Boulytchev
> >>> vasiliy at linuxspecial.com
> >>>
> >>>
> >>>
> >>> John Rudd wrote:
> >>>
> >>>> Just wanted to thank everyone at this list, starting with Julian,
> >>>>
> > but
> >
> >>>> also several of the subscribers who given a lot of information
and
> >>>> input over the years I've been here.  At some points, this was an
> >>>> incredibly valuable and informative mailing list for me.
> >>>>
> >>>> And, what has changed is not the list.  The list, and the vast
> >>>> majority of its subscribers, are still great.  What changed were
my
> >>>> anti-spam/anti-virus needs.  I'm moving to solutions that operate
> >>>> entirely during the SMTP session.  As a result, I decommissioned
my
> >>>> last mailscanner system 2 weeks ago.
> >>>>
> >>>> After a short waiting period to be sure I wasn't going to need to
> >>>> roll back, or have any other mailscanner related questions, I'm
> >>>>
> > going
> >
> >>>> to be unsubscribing from the list later today.
> >>>>
> >>>> I wish all of you the best, and thank you for a great set of
> >>>> software, a great source of information resources, and a great
> >>>>
> > source
> >
> >>>> of conversation over the last 4 or 5 years.
> >>>>
> >
------------------------------------------------------------------------
> >
> >>> #!/usr/bin/perl
> >>>
> >>> #   cgp2ms - part of a MailScanner to CommuniGate Pro gateway
> >>> #   Copyright (C) 2003  The Regents of the University of
California
> >>> #
> >>> #   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, John Rudd, can be by email at
> >>> #      jrudd at ucsc.edu
> >>> #
> >>> # cgp2ms -f file   Actually process the given file
> >>> #  or
> >>> # cgp2ms -c   Just check the queue sizes and print result
> >>> #
> >>> # This program is used by CommuniGate Pro as an "execute" filter.
> >>>
> > It
> >
> >> takes
> >>
> >>> # in arguments that define where the CommuniGate Pro (CGP) queue
> >>>
> > file
> >
> >> lives
> >>
> >>> # and uses the queue file to create a sendmail formated queue file
> >>>
> > (qf)
> >
> >> and
> >>
> >>> # data file (df) pair.  These two files are then inserted into the
> >>> # MailScanner (MS) incoming queue directory.  When MS is done, it
> >>>
> > will
> >
> >> use a
> >>
> >>> # program which is a companion to this one, ms2cgp, # to give the
> >>>
> >> message
> >>
> >>> # back to CGP.
> >>> #
> >>> # Modified 10/2004 by Vasiliy Boulytchev and Randy Lindsey
> >>> #   Added load balancing and sped up processing for larger volume
> >>> # 12/19/2004 Randy Lindsey
> >>> #   Rather than read queuedirs for qf* files across remote shares,
> >>> #   this version reads a set of files created on each system
> >>>
> > containing
> >
> >> the queue count
> >>
> >>> #
> >>> # To take a host offline, just comment out its line in hostlist
> >>> %hostlist = (
> >>> #	IA => '/var/CommuniGate/MailScanner/Incoming',
> >>> #	TX2 => '/usr/local/mailscanner.tx2',
> >>> #	AZ => '/usr/local/mailscanner.az',
> >>> #	TMP => '/usr/local/mailscanner.tmp',
> >>> #	CA => '/usr/local/mailscanner.ak/mailscanner.in',
> >>> 	MS1 => '/var/CommuniGate/MS.Status/queues/ms1/in',
> >>> #	MS2 => '/usr/local/mailscanner.ak/mailscanner.ms2.in',
> >>> #	MS3 => '/usr/local/mailscanner.ak/mailscanner.ms3.in',
> >>> #	MS4 => '/usr/local/mailscanner.ak/mailscanner.ms4.in',
> >>> #	MS5 => '/usr/local/mailscanner.ak/mailscanner.ms5.in',
> >>> #	MS6 => '/usr/local/mailscanner.ak/mailscanner.ms6.in',
> >>> #	MS7 => '/usr/local/mailscanner.ak/mailscanner.ms7.in',
> >>> #	MS8 => '/usr/local/mailscanner.ak/mailscanner.ms8.in',
> >>> #	MS9 => '/usr/local/mailscanner.ak/mailscanner.ms9.in',
> >>> );
> >>>
> >>> # hostspeed - larger numbers are faster
> >>> %hostspeed = (
> >>> #	IA => 1,
> >>> #	TX2 => 4,
> >>> #	AZ => 0.6,
> >>> #	CA => 9,
> >>> #	TMP => 100,
> >>> 	MS1 => 2,
> >>> 	MS2 => 2,
> >>> 	MS3 => 2,
> >>> 	MS4 => 15,
> >>> 	MS5 => 15,
> >>> 	MS6 => 30,
> >>> 	MS7 => 30,
> >>> 	MS8 => 30,
> >>> 	MS9 => 30,
> >>> );
> >>>
> >>> sub check_one { #$queuedirname
> >>> 	open DH, "</var/CommuniGate/MS.Status/queues/count/$_[0]" or
> >>>
> > return
> >
> >> 999999;
> >>
> >>> 	read(DH, $MsgsInQueue, 10);
> >>> 	close DH;
> >>> 	chomp $MsgsInQueue;
> >>> 	return $MsgsInQueue;
> >>> }
> >>>
> >>> sub check_queues {
> >>>
> >>> 	$totfiles = 0;
> >>> 	$totpoints = 0;
> >>> 	foreach my $hostid (keys %hostlist) {
> >>> 		$hostfiles{$hostid} = check_one(lc($hostid));
> >>> 		$totfiles += $hostfiles{$hostid};
> >>> 		# Assign points based on relative system speed
> >>> 		#   We scale it up by 737 to reduce rounding errors with
> >>>
> > small
> >
> >> numbers
> >>
> >>> 		if ($hostspeed{$hostid}) {
> >>> 			$hostpoints{$hostid} = ($hostfiles{$hostid} *
> >>>
> > 737) /
> >
> >> $hostspeed{$hostid};
> >>
> >>> 		}
> >>> 		else {
> >>> 			$hostpoints{$hostid} = $hostfiles{$hostid};
> >>> 		}
> >>> 	}
> >>>
> >>> 	@hostsort = sort { $hostpoints{$a} <=> $hostpoints{$b} } keys
> >>>
> >> %hostpoints;
> >>
> >>> 	printf ("MailScanner to %s - Tot:%2u ",
> >>> 		$hostsort[0], $totfiles);  # displays in CommuniGate
> >>>
> > logs
> >
> >>> 	foreach my $hostid (keys %hostlist) {
> >>> 		printf ("%s:%2u/%2u ", $hostid, $hostfiles{$hostid},
> >>>
> >> $hostpoints{$hostid});
> >>
> >>> 	}
> >>> 	print ("\n");
> >>> 	return $hostlist{$hostsort[0]};
> >>> }
> >>>
> >>> sub copy_stdin {
> >>> 	# Extra headers added by prior rules
> >>> 	my $hdrline;
> >>> 	while (defined($hdrline = <STDIN>)) {
> >>> 		print QF "H$hdrline";
> >>> 		print " $hdrline ";	# display in logs
> >>> 	}
> >>> }
> >>>
> >>> my ($i, $file, $from, $rcpt, @tempv, @rcpt, @argv, $inbody,
$inhdr,
> >>>
> >> $inmeta);
> >>
> >>> $checkonly = 0;
> >>> for ($i = 0; $i <= $#ARGV; $i++) {  # parse in the arguments
> >>>    if (defined($ARGV[$i])) {
> >>>       if ($ARGV[$i] eq "-f") {      # the location of the cgp
queue
> >>>
> > file
> >
> >>>          $i++;
> >>>          $file = $ARGV[$i];
> >>>          }
> >>>       elsif ($ARGV[$i] eq "-c") {   # just check queue sizes and
> >>>
> > print
> >
> >> result
> >>
> >>> 	 $checkonly = 1;
> >>>          }
> >>>       else {                        # left over from debugging,
> >>>
> > these
> >
> >>>          push (@argv, $ARGV[$i]);   # aren't actually used
> >>>          }
> >>>       }
> >>>    }
> >>> if (! $file) {
> >>> 	$checkonly = 1;		# default if no parameters passed
> >>> }
> >>>
> >>> $qdir = check_queues();		# load balance between servers
> >>> if ($checkonly) {
> >>> 	exit(0);
> >>> }
> >>>
> >>> open (JOB, "<$file");
> >>> open (QF, ">$qdir/msqf$$");    # minimize file moving by writing
to
> >>>
> >> final dir but
> >>
> >>> open (DF, ">$qdir/msdf$$");    #  under a different name to
prevent
> >>>
> >> Mailscanner taking it
> >>
> >>> print QF "V4\n";              # I don't think MS actually uses
these
> >>> print QF "T" . time . "\n";   # qf lines, but it helps the qf file
> >>> print QF "K0\n";              # be a little more authentic
> >>> print QF "N0\n";              #
> >>> print QF "P150900\n";         #
> >>>
> >>> $inmeta = 1;  # when reading the job file, are we still in the
meta
> >>>
> >> data?
> >>
> >>> $inhdr = 0;   # when reading the job file, are we in the rfc822
> >>>
> > headers?
> >
> >>> $inbody = 0;  # when reading the job file, are we in the rfc822
> >>>
> >> body/data?
> >>
> >>> $rec = 0;     # have we read the most recent Received header yet?
> >>>               # the most recent (first listed) Received header
will
> >>>               # tell us the information we'll use in the qf file's
> >>>
> > $_
> >
> >>>               # which is "which host relayed this message to us"
> >>>
> >>> while (defined ($line = <JOB>)) {
> >>>    chomp $line;
> >>>    if ($line eq "") {  # blank lines demark meta, headers, and
body
> >>>
> >> sections
> >>
> >>>       if ($inmeta) {
> >>>          $inmeta = 0; $inhdr = 1;
> >>>          }
> >>>       elsif ($inhdr) {
> >>>          $inhdr = 0; $inbody = 1;
> >>> 	 copy_stdin;
> >>>          if ( !($rec) ) {    # no received header = from localhost
> >>>             $rec = 1;
> >>>             print QF "\$_localhost [127.0.0.1]\n";    # print
relay
> >>>
> > host
> >
> >>>             print QF "S$from\n";      # print sender
> >>>             foreach $to (@rcpt) {     # print the recipient list
> >>>                print QF "RPFD:$to\n";
> >>>                }
> >>>             }
> >>>          }
> >>>       }
> >>>    elsif ($inmeta) {
> >>>       if ($line =~ /^P/) {
> >>>          @tempv = split(/ /, $line);
> >>>          $from = $tempv[7];
> >>>          }
> >>>       elsif ($line =~ /^R/) {
> >>>          @tempv = split(/ /, $line);
> >>>          $rcpt = $tempv[7];
> >>>          push (@rcpt, $rcpt);
> >>>          }
> >>>       }
> >>>    elsif ($inhdr) {
> >>>       if ( (!($rec)) && ($line =~ /^Received:/) ) { # get relay
host
> >>>          $rec = 1;
> >>>          if ($line =~ /^Received: from (.*) \((.* )?(\[.*\]).*/) {
> >>>             if (defined $2) {
> >>>                $h = $2;
> >>>                $h =~ s/\s*$//;
> >>>                }
> >>>             else {
> >>>                $h = $1;
> >>>                }
> >>>             $a = $3;
> >>>             print QF "\$_$h $a\n";    # print relay host
> >>>             }
> >>>          else {
> >>>             $line =~ /^Received: from (\[.*\]).*/;
> >>>             $a = $1;
> >>>             print QF "\$_$a\n";    # print relay host
> >>>             }
> >>>          print QF "S$from\n";      # print sender
> >>>          foreach $to (@rcpt) {     # print the recipient list
> >>>             print QF "RPFD:$to\n";
> >>>             }
> >>>          print QF "H$line\n";  # then print the Received header
> >>>          }
> >>>       elsif ($line  !~ /^\s/) {    # get a header
> >>>          print QF "H$line\n";
> >>>          }
> >>>       else {                       # get the rest of a multi-line
> >>>
> > header
> >
> >>>          print QF "$line\n";
> >>>          }
> >>>       }
> >>>    if ($inbody) {
> >>>       print DF "$line\n";
> >>>       }
> >>>    }
> >>>
> >>> print QF ".\n"; # bat book 23.9.19, qf file should end in a "^\.$"
> >>>
> > line.
> >
> >>> close (DF);
> >>> close (QF);
> >>> close(JOB);
> >>>
> >>> # Rename the df file first, as Mailscanner looks for the qf and
> >>>
> > might
> >
> >> interfere
> >>
> >>> #   Note that this used to mv the files from /tmp to qdir, but a
> >>>
> >> fraction of the time
> >>
> >>> #   this failed due to race conditions with Mailscanner
> >>> rename ("$qdir/msdf$$", "$qdir/df$$");
> >>> rename ("$qdir/msqf$$", "$qdir/qf$$");
> >>>
> >>> exit(0);
> >>>
> >>>
> >>>
> >
------------------------------------------------------------------------
> >
> >>> #!/usr/bin/perl
> >>>
> >>> #   ms2cgp - part of a MailScanner to CommuniGate Pro gateway
> >>> #   Copyright (C) 2003  The Regents of the University of
California
> >>> #
> >>> #   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, John Rudd, can be by email at
> >>> #      jrudd at ucsc.edu
> >>> #
> >>> #
> >>> # ms2cgp -qI(id) ...
> >>> #
> >>> # This program acts as Mailscanner's outgoing "Sendmail2" program,
> >>>
> >> taking
> >>
> >>> # an argument for each message Mailscanner (MS) has finished
> >>>
> > processing,
> >
> >>> # and using that argument to find the pair of sendmail mqueue
files
> >>>
> > that
> >
> >>> # make up the message.  This program then re-combines them into an
> >>>
> >> rfc822
> >>
> >>> # file and submits them back to Communigate Pro (CGP) via its
> >>>
> > Submitted
> >
> >> directory
> >>
> >>> #
> >>> # Modified 11/4/04 by Randy Lindsey to skip "sendmail" program and
> >>>
> > just
> >
> >>> #   write directly to Submitted in RFC822 format.
> >>>
> >>> my $ServerPrefix = "MS1";	# make this unique per server
> >>> my $QDIR = "/etc/MailScanner/shared/queues/ms1/out";             #
> >>>
> > where
> >
> >> MS sticks outgoing msgs.
> >>
> >>> my $SubDir = "/etc/MailScanner/mail.cluster/submx00";	# CG's
> >>>
> >> Submitted directory
> >>
> >>> # my $Archive = "/extra/archivems2cgp/ia";
> >>>
> >>> my ($job, $from, $rcpt, $df, $qf, $msg, $line);
> >>>
> >>> use Sys::Syslog;
> >>> openlog('ms2cgp', 'pid', 'user');
> >>>
> >>> foreach $job (@ARGV) {
> >>>    $job =~ s/^-qI//;
> >>>    $qf = $QDIR . "/qf" . $job;     # the sendmail formatted queue
> >>>
> > file
> >
> >>>    $df = $QDIR . "/df" . $job;     # the sendmail formatted data
> >>>
> > file
> >
> >>>    $msg = $SubDir . "/" . $ServerPrefix . ".ms2cgp.$job.$$.tmp";
> >>>
> > #
> >
> >> the tempfile we'll give to CGP
> >>
> >>>    $rcpt = "";
> >>>
> >>>    # syslog('info', "Job $job copying to archive $Archive");
> >>>    # system("/bin/cp -f $qf $Archive/qf$job");
> >>>    # system("/bin/cp -f $df $Archive/df$job");
> >>>
> >>>    	syslog ('info', "job = $job");
> >>> 		closelog();
> >>>    	syslog ('info', "qf = $qf");
> >>> 		closelog();
> >>> 	syslog ('info', "df = $df");
> >>> 		closelog();
> >>> 	syslog ('info', "msg = $msg");
> >>> 		closelog();
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>    syslog('info', "Job $job writing to $msg");
> >>>    if (! open (QF, "<$qf")) {
> >>>       syslog('info', "Open input $qf failed, dying");
> >>>       closelog();
> >>>       die "Open input $qf failed!";
> >>>    }
> >>>    if (-e $msg) {
> >>>       syslog('info', "Output file exists $msg so failed, dying");
> >>>       closelog();
> >>>       die "Output file exists $msg";
> >>>    }
> >>>    if (! open (MSG, ">$msg")) {
> >>>       syslog('info', "Open output $msg failed, dying");
> >>>       closelog();
> >>>       die "Open output $msg failed!";
> >>>    }
> >>>
> >>>    while (defined ($line = <QF>) ) {
> >>>       chomp $line;
> >>>
> >>>       last if ($line =~ /^\./);  # Bat book 23.9.19
> >>>
> >>>       if ($line =~ /^R/) {     # This is needed for Bcc per CGate
> >>>
> > Pipe
> >
> >> specs (see help file)
> >>
> >>>          $line =~ s/^R[A-Z]*:/Envelope-To: /;  # change sendmail
> >>>
> > RPFD to
> >
> >> Envelope-To
> >>
> >>>          print MSG "$line\n";
> >>>          }
> >>>       elsif ($line =~ /^H/) {     # get the headers and put them
in
> >>>
> > the
> >
> >> msg
> >>
> >>>          $line =~ s/^H//;
> >>>          print MSG "$line\n";
> >>>          }
> >>>       elsif ($line =~ /^\s/) {    # these should only be on
> >>>
> > line-wrapped
> >
> >>>          print MSG "$line\n";     # headers, so put them in the
msg
> >>>          }
> >>>       # there's no "else" because we don't care about the other
> >>>
> > lines
> >
> >>>       }
> >>>
> >>>    print MSG "\n"; # put in a blank line to make sure there's one
> >>>
> >> between the
> >>
> >>>                    # headers and the data
> >>>
> >>>    close (QF);
> >>>    close (MSG);
> >>>
> >>>    # append the sendmail data file to the cgp message
> >>>    if (system ("/bin/cat $df >> $msg") == 0) {
> >>>       if (rename ($msg, "$msg.sub")) {
> >>> 	 system ("/bin/rm $df $qf");
> >>>       } else {
> >>> 	 syslog('info', "rename $msg $msg.sub failed");
> >>>       }
> >>>    } else {
> >>>       syslog('info', "cat $df to $msg failed");
> >>>    }
> >>> }
> >>> closelog();
> >>> exit(0);
> >>>
> >>>
> >>>
> >> --
> >> MailScanner mailing list
> >> mailscanner at lists.mailscanner.info
> >> http://lists.mailscanner.info/mailman/listinfo/mailscanner
> >>
> >> Before posting, read http://wiki.mailscanner.info/posting
> >>
> >> Support MailScanner development - buy the book off the website!
> >>
> >
> >
> >
> >
> >
**********************************************************************
> > Confidentiality : This e-mail and any attachments are intended for
the
> > addressee only and may be confidential. If they come to you in error
> > you must take no action based on them, nor must you copy or show
them
> > to anyone. Please advise the sender by replying to this e-mail
> > immediately and then delete the original from your computer.
> >
> > Opinion : Any opinions expressed in this e-mail are entirely those
of
> > the author and unless specifically stated to the contrary, are not
> > necessarily those of the author's employer.
> >
> > Security Warning : Internet e-mail is not necessarily a secure
> > communications medium and can be subject to data corruption. We
advise
> > that you consider this fact when e-mailing us.
> >
> > Viruses : We have taken steps to ensure that this e-mail and any
> > attachments are free from known viruses but in keeping with good
> > computing practice, you should ensure that they are virus free.
> >
> > Red Lion 49 Ltd T/A Solid State Logic
> > Registered as a limited company in England and Wales
> > (Company No:5362730)
> > Registered Office: 25 Spring Hill Road, Begbroke, Oxford OX5 1RU,
> > United Kingdom
> >
**********************************************************************
> >
> >
> --
> MailScanner mailing list
> mailscanner at lists.mailscanner.info
> http://lists.mailscanner.info/mailman/listinfo/mailscanner
>
> Before posting, read http://wiki.mailscanner.info/posting
>
> Support MailScanner development - buy the book off the website!




**********************************************************************
Confidentiality : This e-mail and any attachments are intended for the 
addressee only and may be confidential. If they come to you in error 
you must take no action based on them, nor must you copy or show them 
to anyone. Please advise the sender by replying to this e-mail 
immediately and then delete the original from your computer.

Opinion : Any opinions expressed in this e-mail are entirely those of 
the author and unless specifically stated to the contrary, are not 
necessarily those of the author's employer.

Security Warning : Internet e-mail is not necessarily a secure 
communications medium and can be subject to data corruption. We advise 
that you consider this fact when e-mailing us. 

Viruses : We have taken steps to ensure that this e-mail and any 
attachments are free from known viruses but in keeping with good 
computing practice, you should ensure that they are virus free.

Red Lion 49 Ltd T/A Solid State Logic
Registered as a limited company in England and Wales 
(Company No:5362730)
Registered Office: 25 Spring Hill Road, Begbroke, Oxford OX5 1RU, 
United Kingdom
**********************************************************************



More information about the MailScanner mailing list