MAN PAGE ALERT!!!!
(from qmail-qfilter page)

       qmail-qfilter sends the message text through each  of  the
       filter commands named on the command line.  Each filter is
       run seperately, with __standard input__ opened  to  the  input
       email,  and __standard output__ opened to a new temporary file
       that will become the input to either the next  filter,  or
       qmail-queue.  Each filter on the command line in seperated
       with --.

With this data in mind, I made a little script that does some censoring

---> qmail-qfilter myfilter.pl -- qmail-inject -n <---
----------
#!/usr/bin/perl

while (<>) {
  s/fuck/fsck/i;
  print $_;
}
----------

David

PS - I'm concerned that with this qmail-inject thing going on that multiple
recipients might get multiple copies - but then I haven't read the
documentation enough to clarify that in my head.  Would a relayed message to
multiple recipients have those other recipients re-qualified as
undelivered-to and hence would get multiple copies?  Somebody knows, I'm
sure.

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, July 19, 2000 1:16 PM
To: Ihnen, David
Cc: [EMAIL PROTECTED]
Subject: RE: How to grab the envelope contents while filtering? - syntax
error



OK, so I tried this:

#!/usr/bin/perl

    if ($#ARGV != 0) {
        die "Usage:  $0 outputfile\n";
    }

open (INFD, "<&1") or die "BAD FD IN";
open (OUTFILE, ">$ARGV[0]") or die "BAD FILE OUT";
# open (OUTFD, ">&1") or die "BAD FD OUT";

while (<INFD>) {
  print OUTFILE "$_";
#  print OUTFD "$_";
}

close (OUTFILE);
close (INFD);
# close (OUTFD);

I tried as is and with the commented lines enabled (just to be sure I didn't
step on my input for some silly reason). I still end up with a 0 byte
output file, same as
using redirection in the shell. The more I think about it, I'm almost
certain that my script does not have access to this data (so to speak) when
run
via qmail-qfilter.

I think it's time to go back to the drawing board and go dig in the
qmail-qfilter source. Any more ideas, concurrences, disagreements, etc?

Thanks,
Josh





"Ihnen, David" <[EMAIL PROTECTED]> on 07/19/2000 03:02:08 PM

To:   "Ihnen, David" <[EMAIL PROTECTED]>, "'[EMAIL PROTECTED]'"
      <[EMAIL PROTECTED]>, [EMAIL PROTECTED]
cc:
Subject:  RE: How to grab the envelope contents while filtering? - syntax e
      rror


Provided you remove the comma from the print statement, it'll actually work
too.  ;)

David

-----Original Message-----
From: Ihnen, David [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, July 19, 2000 11:58 AM
To: '[EMAIL PROTECTED]'; [EMAIL PROTECTED]
Subject: RE: How to grab the envelope contents while filtering?


In fooling with tcpclient I found the syntax to do this.  As I'm a perl
junky, here's a program that will read descriptor 6 and print to descriptor
7.  If you know any perl at all this should get you to where you need to
be.

#!/usr/bin/perl

# read descriptor 6 and print it to descriptor 7

open INFILE, "<&6" or die "BAD IN";
open OUTFILE, ">&7" or die "BAD OUT";

while (<INFILE>) {
  print OUTFILE, $_;
}

close OUTFILE;
close INFILE;


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, July 19, 2000 11:20 AM
To: [EMAIL PROTECTED]
Subject: How to grab the envelope contents while filtering?


Hi all,

I'm using a content filter shell script that I've written (based on inflex)
with qmail-qfilter. During this filter process, I'd like to grab the
contents of the envelope and store them in a file for use later (ie,
reconstructing the envelope for an inject).

I've toyed with trying to pipe fd 1 into a file without success. I know
that this has to be doable with a small C program, but quite honestly, I
don't have the familiarity with C to do it. Can it be done with Perl? In
the shell? Is it as simple as reading fd1, writing a file, and re-writing
fd1?

Any ideas on how I can accomplish this?

Some details:

qmail 1.03
qmail-qfilter 1.0
Redhat 6.2


Thanks in advance for any help,
Josh Tibbs
Kendle International Inc.


Reply via email to