[Mimedefang] MIMEDefang 2.3 BETA 4 is out -- major virus-scanning rework
    David F. Skoll 
    dfs at roaringpenguin.com
       
    Tue Jan 15 16:42:45 EST 2002
    
    
  
Hi,
Beta 4 is at
http://www.roaringpenguin.com/mimedefang/mimedefang-2.3-BETA-4.tar.gz
Thanks to everyone who e-mailed virus-scanner exit codes.  I have
reworked the virus-scanning code.  THERE ARE MAJOR CHANGES; do not
upgrade on a production system without reading this:
- There are no more generic entity_contains_virus() and
message_contains_virus() functions.  You have to use the specific
ones for your virus scanner (eg entity_contains_virus_nai, etc.)
- You should now call the *_contains_virus_* functions in list context.
Do something like this:
($code, $category, $recommended_action) = message_contains_virus_nai();
$code is set to the actual exit code of the virus scanner.
$category is set to one of the following strings:
	"ok"		 - No viruses detected
	"not-installed"  - The specified virus scanner is not installed
	"cannot-execute" - For some reason, the scanner could not be executed
	"virus"          - A virus or suspicious file was found
	"interrupted"    - Virus scanning did not complete
	"swerr"          - Some other internal software error
$recommended_action is set to one of the following strings:
	"ok"		- Allow part/message through
	"quarantine"	- Quarantine the part: Virus was found
	"tempfail"	- Send an SMTP temporary failure code
New actions:
	action_tempfail() - Send an SMTP temporary failure code
	action_quarantine_entire_message() - Copy the entire message
	to the quarantine directory, but do not otherwise affect
	message disposition.
Example virus-scanning filter (NOT TESTED!!  May not even be syntactically
correct!)  Not optimized for efficiency!
sub filter_begin {
	my($code, $category, $action) = message_contains_virus_nai();
	if ($action eq "tempfail") {
	        action_tempfail();
        }
}
sub filter {
	my($entity, $fname, $ext, $type) = @_;
	my($code, $category, $action) = entity_contains_virus_nai($entity);
	if ($action eq "tempfail") {
	        action_tempfail();
		return;
        }
	if ($action eq "quarantine") {
		action_quarantine_entire_message();
		action_quarantine($entity, "Found a virus");
		return;
        }
	# ... blah blah rest of filter
}
Regards,
David.
Roaring Penguin Software Inc. | http://www.roaringpenguin.com
GPG fingerprint: C523 771C 3710 0F54 B2D2 4B0D C6EF 6991 34AB 95BA
GPG public key:  http://www.roaringpenguin.com/dskoll-key-2002.txt ID: 34AB95BA
    
    
More information about the MIMEDefang
mailing list