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

Vasiliy Boulytchev vasiliy at linuxspecial.com
Wed Jan 17 19:03:54 CET 2007


I will take a look at the at flock vs posix...

BUT

I have fixed this for the short run...

Attn Julian :)  Please let me know if this is an awful thing to do

In /usr/lib/MailScanner/MailScanner/Sendmail.pm:  I just added another 
line to overwrite $args to just the $ids without the other stuff, and 
things are working great...

 if ($ids) {
      my $outqdir = MailScanner::Config::Value('outqueuedir');
      $args = " -OQueueDirectory=$outqdir " if $outqdir;
      $args .= $ids;
      $args .= ' &' if MailScanner::Config::Value('deliverinbackground');
      #print STDERR "About to do \"" . 
MailScanner::Config::Value('sendmail2') . $args . "\"\n";
        #Vasiliy
        $args = $ids;

      system(MailScanner::Config::Value('sendmail2') . $args);
    }
  }


So, what changed, and where did I goof :)

THANKS GUYS! :)

PS   Is this OK to keep on the production system :)

Vasiliy Boulytchev
vasiliy at linuxspecial.com



Martin.Hepworth wrote:
> 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