Broken Return-Path: header (better solution!)

Julian Field jkf at ecs.soton.ac.uk
Thu May 9 16:21:35 IST 2002


At 15:47 09/05/2002, you wrote:
>Hmmm...
>
>In the warning message it still shows up as:
>
>Full headers are:
>  Return-Path: <?g>

Well all I can say is that it worked for me, and I put the Return-Path:
header back exactly how I found it, flags and all. The "?" shouldn't be a
"?" in the first place, it should be a "$". That bit isn't MailScanner's fault.

> > -----Original Message-----
> > From: MailScanner mailing list [mailto:MAILSCANNER at JISCMAIL.AC.UK]On
> > Behalf Of Julian Field
> > Sent: Thursday, May 09, 2002 4:26 PM
> > To: MAILSCANNER at JISCMAIL.AC.UK
> > Subject: Re: Broken Return-Path: header (better solution!)
> >
> >
> > At 14:41 09/05/2002, you wrote:
> > >At 12:39 09/05/2002, you wrote:
> > >>I don't know what it was supposed to do, but when I apply this patch, it
> > >>just deletes the Return-Path header from the warning message
> > AND from the
> > >>infected message.
> > >
> > >That should only happen if you are using MailScanner on the server that
> > >does the final message delivery into the user's mailbox.
> > >
> > >Is the Return-Path header any use anyway? I don't see why as it
> > is trivial
> > >to fake.
> > >
> > >I'll try to write you a better version of the solution.
> >
> > Patch required to both sendmail.pl and mta-specific.pl. These
> > patches are a
> > bit big, so I have attached a new sendmail.pl and mta-specific.pl to this
> > message.
> >
> > Note ***THESE ARE FOR THE LATEST VERSION 3.13-2 ONLY***
> > If you want to add this functionality to earlier releases, you
> > will have to
> > insert the following patches by hand.
> >
> > If these work okay, they'll get rolled into the next minor release.
> >
> > -----------------------------------------------------------
> > *** /usr/local/mailscanner/mailscanner/bin/sendmail.pl  Tue May
> > 7 05:03:31
> > 2002
> > --- sendmail.pl Thu May  9 15:12:28 2002
> > ***************
> > *** 569,578 ****
> > --- 569,579 ----
> >        Lock::unlockclose($DfOut);
> >        #undef $DfOut;
> >
> >        # Construct all the new headers
> >        $newheaders =
> > MTA::ConstructHeaders($entities->{$id}->stringify_header);
> > +     $newheaders = MTA::FixReturnPath($newheaders);
> >        $newheaders = AddCleanHeader($newheaders) if $Clean eq 'clean';
> >        $newheaders = AddInfectedHeader($newheaders) if $Clean eq 'dirty';
> >        $newheaders = AddUnscannedHeader($newheaders) if $Clean eq
> > 'unscanned';
> >        if (defined($IsSpam->{$id})) {
> >          $newheaders = MTA::AddHeader($newheaders, $Config::SpamHeader,
> > -----------------------------------------------------------
> > and
> > -----------------------------------------------------------
> > *** /usr/local/mailscanner/mailscanner/bin/mta-specific.pl      Thu May  9
> > 12:24:34 2002
> > --- mta-specific.pl     Thu May  9 15:18:35 2002
> > ***************
> > *** 137,146 ****
> > --- 137,150 ----
> >    # Given filehandle open for reading, merge envelope data (excepting
> >    # headers) from filehandle with headers from string, and return new
> >    # envelope data in string, ready to be written back to new
> >    # envelope queue file.
> >    #
> > + # FixReturnPath:
> > + # In sendmail the Return-Path: header needs some flags at the start
> > + # of the line. Exim requires no change.
> > + #
> >    # KickMessage:
> >    # Given id, tell MTA to make a delivery attempt.
> >    #
> >
> >    my($cat) = "/bin/cat";
> > ***************
> > *** 467,476 ****
> > --- 471,485 ----
> >
> >        $envelope .= $headers;
> >        return $envelope;
> >      }
> >
> > +   sub FixReturnPath {
> > +     my($headers) = @_;
> > +     return $headers;
> > +   }
> > +
> >      sub KickMessage {
> >        my(@ids) = @_;
> >        my($idlist);
> >
> >        # Need to check this with Nick to discover how to attempt delivery
> > of multiple messages
> > ***************
> > *** 519,529 ****
> >
> >      sub ReadQf {
> >        my($RQf) = @_;
> >        my($InHeader, @results, $msginfo, $from, @to, $subject);
> >        my($ip);
> > !     my($Line);
> >
> >        $InHeader = 0;
> >        while(<$RQf>) {
> >          last if /^\./; # Bat book section 23.9.19
> >          $Line = $_;
> > --- 528,538 ----
> >
> >      sub ReadQf {
> >        my($RQf) = @_;
> >        my($InHeader, @results, $msginfo, $from, @to, $subject);
> >        my($ip);
> > !     my($Line, $Flags);
> >
> >        $InHeader = 0;
> >        while(<$RQf>) {
> >          last if /^\./; # Bat book section 23.9.19
> >          $Line = $_;
> > ***************
> > *** 550,562 ****
> >          }
> >          $InHeader = 1 if $Line =~ /^H/;
> >          ($InHeader=0),next unless $Line =~ /^[H\t ]/;
> >          $Line =~ s/^H//;
> >          # JKF 18/04/2001 Delete ?flags? for 0 or more flags for
> > sendmail 8.11
> > !       $Line =~ s/^\?[^?]*\?//;
> > !       # JKF 06/05/2002 Fix broken Return-Path: header bug
> > !       next if $Line =~ /^Return-Path:/i;
> >          push @results, $Line;
> >          if ($Line =~ /^Subject:\s+(\S.*)$/i) {
> >            $subject = $1;
> >            #print "Subject is \"$subject\"\n";
> >          }
> > --- 559,572 ----
> >          }
> >          $InHeader = 1 if $Line =~ /^H/;
> >          ($InHeader=0),next unless $Line =~ /^[H\t ]/;
> >          $Line =~ s/^H//;
> >          # JKF 18/04/2001 Delete ?flags? for 0 or more flags for
> > sendmail 8.11
> > !       $Line =~ s/^(\?[^?]*\?)//;
> > !       $Flags = $1;
> > !       # JKF 09/05/2002 Fix broken Return-Path: header bug
> > !       $MTA::ReturnPathFlags = $Flags if $Line =~ /^Return-Path:/i;
> >          push @results, $Line;
> >          if ($Line =~ /^Subject:\s+(\S.*)$/i) {
> >            $subject = $1;
> >            #print "Subject is \"$subject\"\n";
> >          }
> > ***************
> > *** 707,716 ****
> > --- 717,732 ----
> >        }
> >
> >        $envelope .= $headers;
> >        $envelope .= ".\n";
> >        return $envelope;
> > +   }
> > +
> > +   sub FixReturnPath {
> > +     my($headers) = @_;
> > +     $headers =~ s/^H(Return-Path:)/H$MTA::ReturnPathFlags$1/mi;
> > +     return $headers;
> >      }
> >
> >      sub KickMessage {
> >        my(@ids) = @_;
> >        my($idlist);
> > -----------------------------------------------------------
> >

--
Julian Field                Teaching Systems Manager
jkf at ecs.soton.ac.uk         Dept. of Electronics & Computer Science
Tel. 023 8059 2817          University of Southampton
                             Southampton SO17 1BJ



More information about the MailScanner mailing list