File: clampipe

package info (click to toggle)
clamav 0.101.4+dfsg-0+deb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 29,564 kB
  • sloc: ansic: 158,978; sh: 8,178; cpp: 5,173; makefile: 2,088; yacc: 1,351; lex: 714; python: 120; perl: 17
file content (30 lines) | stat: -rw-r--r-- 833 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl
# Filters mail through clamav. Intended to be used as a maildrop xfilter,
# So it takes care to exit 0 on success, and nonzero on error. Adds a
# X-Virii-Status header.
# Contributed by Joey Hess <joeyh@debian.org> to be used with procmail
use strict;
use warnings;

$/=undef;
my $msg=<>;

open (CLAM, "| clamscan --quiet -")
	|| die "cannot run clamscan: $!";
# The --mbox support is flakey and requires a From header as in a real
# mbox.
print CLAM "From foo\n";
print CLAM $msg;
close CLAM;
# Returns status of 1 for virii.
my $status= ($? >> 8 == 1) ? "yes" : "no";
#print STDERR "status: ".($? >> 8)." $!\n";

open (FORMAIL, "|formail -i 'X-Virii-Status: $status'")
	|| die "cannot run formail: $!!";
print FORMAIL $msg
	|| die "cannot write to formail: $!";
close FORMAIL
	|| die "formail failed: $!";

exit 0;