Re: ditching the wiki

2009-12-10 Thread Dave O'Neill

On Fri, Dec 04, 2009 at 06:41:34PM -0500, Ricardo Signes wrote:

The wiki isn't used.  Unless someone objects strongly, I am going to get rid of
it and replace it with a few static pages.


Sounds good to me.

Cheers,
Dave


Re: bug in MIME::Entity make_singlepart

2008-06-30 Thread Dave O'Neill
On Fri, Jun 27, 2008 at 11:37:56AM -0400, Ricardo SIGNES wrote:
 
 I think that it's documented, so it should keep working.  If nobody
 has asked for it to throw an error, it either isn't coming up or it's
 coming up and people accept it.
 
 I'd suggest adding an error-generating branch (with a different method name or
 an arg) or just removing the entire Content-* header set (since there is no
 content!) but I wouldn't need to use it, and who knows if anyone else would.

Ok, MIME::Entity now nukes all content-* when converting an empty
multipart to a singlepart.  Adding optional error-throwing is probably
too much effort for such a bizzare edgecase anyway.

The fix is in 5.427, which is currently winding its way through PAUSE.

Cheers,
Dave
-- 
Dave O'Neill [EMAIL PROTECTED]Roaring Penguin Software Inc.
+1 (613) 231-6599http://www.roaringpenguin.com/
For CanIt technical support, please mail: [EMAIL PROTECTED]


Re: bug in MIME::Entity make_singlepart

2008-06-27 Thread Dave O'Neill
On Thu, Jun 26, 2008 at 01:37:09PM -0400, Ricardo SIGNES wrote:
 
 Sometimes, when collapsing a message into single part, the C-T is horked up.
 
 It starts as:
 
   Content-Type: multipart/related; boundary=xyzzy; type=foo
 
 ...and ends as:
 
   Content-Type: text/plain; boundary=xyzzy; type=foo
 
 Erk!  Boundary?  Type?  What?

So, there are two possible fixes.

One, nuke all those extra attributes from Content-Type before setting it
to text/plain.  Simple to do, and doesn't appear to break anything else.

Two, have make_singlepart() return an error (or preferably, die... but
MIME-tools doesn't really do exceptions) if you try to collapse a
zero-part multipart into a single part.  Also simple to implement, but
would break documented behaviour.

The docs for make_singlepart say Also crunches 0-part multiparts into
singleparts, so the first option is probably the safest for backwards
compatibility.  However, it does seem nonsensical to convert an empty
multipart/* part into a text/plain.  Is this a case that's frequently
encountered?  If not, maybe it's OK to change that behavior.

Thoughts?

Dave


Re: [Mimedefang] Developer release of Email::VirusScan

2008-04-11 Thread Dave O'Neill
On Fri, Apr 11, 2008 at 08:47:13AM +0200, Steffen Kaiser wrote:
 
 you have included the Frisk F-Prot demon protocol of demon v4. I recently 
 posted the code for demon v6, which is totally different from the previous 
 one.

Oops.  I must have split off the Email::VirusScan code before your patch
made it in to MIMEDefang.  I'll fix that today.

Cheers,
Dave
-- 
Dave O'Neill [EMAIL PROTECTED]Roaring Penguin Software Inc.
+1 (613) 231-6599http://www.roaringpenguin.com/
For CanIt technical support, please mail: [EMAIL PROTECTED]


Developer release of Email::VirusScan

2008-04-10 Thread Dave O'Neill
As the next step on the road to cleaning up the mimedefang.pl code, I've
factored the virus scanner integration out into a separate set of
modules -- Email::VirusScan.

The modules are now available as a developer release on CPAN, available
from http://search.cpan.org/dist/Email-VirusScan/

The virus scanning engines supported are all of those supported by
MIMEDefang, with the exception of two or three that I didn't bother
converting as they appeared to be entirely obsolete.

In a future release of MIMEDefang, this virus scanner code will replace
the current virus scanner methods in mimedefang.pl.  The immediate
benefit will be the removal of about 2k lines of virus scanner code in
favour of loading only the necessary modules.  This should save a couple
hundred kb of memory per scanning slave.  In the long term, being able
to validate and test virus scanner plugins outside of MIMEDefang should
be a big win.

But first, before it gets integrated into MIMEDefang, it needs testing.
The ClamAV::Clamscan and ClamAV::Daemon modules are relatively well
tested, but the modules for scanners I don't have access to are almost
entirely untested.

I would appreciate it if anyone using one of the supported virus engines
would download this code, try it out, and provide feedback.   Patches
and bug reports can be sent to the list or to me directly.
Alternatively, if you are willing to provide me with shell access on a
system with one of the supported scanners, I will run the tests and make
any necessary fixes.

Cheers,
Dave
-- 
Dave O'Neill [EMAIL PROTECTED]Roaring Penguin Software Inc.
+1 (613) 231-6599http://www.roaringpenguin.com/
For CanIt technical support, please mail: [EMAIL PROTECTED]


Re: replacing the BounceParser

2007-07-18 Thread Dave O'Neill
On Tue, Jul 17, 2007 at 06:37:29PM -0400, Ricardo SIGNES wrote:
 I want a good bounce parser for two main reasons:
 
   1. Recognize bouncing mailing list subscribers so they can be booted.
   2. Recognize bounces that say that my MXes are being blocked so I can
  address the situation.
 
 I'm not sure what this system needs to look like, but from 1,000 feet up, the
 BounceParser isn't totally wrong.
 
   my $bounce = $parser-parse($email_abstract);
 
   my $remote  = $bounce-bounced_by;
   my $local   = $bounce-originally_sent_by;
   my @reports = $bounce-reports; # may be ()
 
   my $reason = $report-bounce_reason; # one of a fixed list
   my @addrs  = $report-bounced_to;
 
 I don't see any reason for this to notice autoresponders at all.  If we can
 tell they're not bounces, there's no reason to report them, is there?

I guess it depends what your use case is.  If you're trying to process
true failure DSNs, you probably don't care about autoresponders.  If
you're trying to keep administrivia off of a mailing list, you probably
want to detect things like read-receipts, out-of-office replies,
temporary failure warnings and the like.

Maybe the solution is just to not call it BounceParser?

  # Create a parser.  Don't load any plugins automatically.
  my $parser = Email::Classifier-new();  

  # Load the Email::Classifier::Plugin::Bounce plugin for catching
  # bounce messages
  $parser-add_classifier('Bounce');

  # Load plugin for Out of Office replies
  $parser-add_classifier('Vacation');

  # and hey, this would be nice too
  $parser-add_classifier('TemporaryDSN');

  # Iterate over prioritized plugins and return first hit
  my $result = $parser-parse( $email_abstract );

  # whine about it
  print I got a  . $result-get_classification() 
.  from  . $result-get_sender()
.  on message originally sent by  .  $result-get_original_sender()
. \n;

Heck, if one wanted to be truly evil:

  my $parser = Email::Classifier-(
classifiers = [ 'GPG' ],
  );
  my $r = $parser-parse( $email_abstract );
  if( $r-is_gpg_signed() ) {   # let plugins provide new methods to
# result object (inheritance? Sub::Exporter?)
  if( $r-valid_signature_by('0x12345678') ) {
  # Yes, we fully trust the message now
  eval $email_abstract-get_body();
  }
  }

Cheers,
Dave


signature.asc
Description: Digital signature