.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Courier::Filter::Module::ClamAVd 3pm" .TH Courier::Filter::Module::ClamAVd 3pm "2022-10-21" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Courier::Filter::Module::ClamAVd \- ClamAV clamd filter module for the Courier::Filter framework .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Courier::Filter::Module::ClamAVd; \& \& my $module = Courier::Filter::Module::ClamAVd\->new( \& # See the socket options description for details. \& socket_name => \*(Aq/var/run/clamav/clamd.ctl\*(Aq, \& socket_host => \*(Aqclamav.example.com\*(Aq, \& socket_port => \*(Aq3310\*(Aq, \& \& max_message_size \& => $max_message_size, \& max_part_size => $max_part_size, \& response => $response_text, \& \& logger => $logger, \& inverse => 0, \& trusting => 0, \& testing => 0, \& debugging => 0 \& ); \& \& my $filter = Courier::Filter\->new( \& ... \& modules => [ $module ], \& ... \& ); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This class is a filter module class for use with Courier::Filter. It matches a message if the configured ClamAV \f(CW\*(C`clamd\*(C'\fR daemon detects malware in it. .SS "Constructor" .IX Subsection "Constructor" The following constructor is provided: .IP "\fBnew(%options)\fR: returns \fICourier::Filter::Module::ClamAVd\fR" 4 .IX Item "new(%options): returns Courier::Filter::Module::ClamAVd" Creates a new \fBClamAVd\fR filter module. .Sp \&\f(CW%options\fR is a list of key/value pairs representing any of the following options: .RS 4 .IP "\fBsocket_name\fR" 4 .IX Item "socket_name" .PD 0 .IP "\fBsocket_host\fR" 4 .IX Item "socket_host" .IP "\fBsocket_port\fR" 4 .IX Item "socket_port" .PD These options describe the Unix domain or \s-1TCP/IP\s0 socket that should be used to connect to the ClamAV daemon. If \fIno\fR socket options are specified, first the socket options from the local \f(CW\*(C`clamd.conf\*(C'\fR configuration file are tried, then the Unix domain socket \fB/var/run/clamav/clamd.ctl\fR is tried, then finally the \&\s-1TCP/IP\s0 socket at \fB127.0.0.1\fR on port \fB3310\fR is tried. If either Unix domain or \s-1TCP/IP\s0 socket options are explicitly specified, only these are used. .IP "\fBmax_message_size\fR" 4 .IX Item "max_message_size" An integer value controlling the maximum size (in bytes) of the overall message text for a message to be processed by this filter module. Messages larger than this value will never be processed, and thus will never match. If \fBundef\fR, there is no size limit. Defaults to \fB1024**2\fR (1MB). .Sp As \s-1MIME\s0 multipart processing can be quite \s-1CPU\-\s0 and memory-intensive, you should definitely restrict the message size to some sensible value that easily fits in your server's memory. 1024**2 (1MB) should be appropriate for most uses of this filter module. .IP "\fBmax_part_size\fR" 4 .IX Item "max_part_size" An integer value controlling the maximum size (in bytes) of any single \s-1MIME\s0 part for that part to be processed by this filter module. Parts larger than this value will never be processed, and thus will never match. If \fBundef\fR, there is no size limit. .Sp Defaults to the value of the \f(CW\*(C`max_message_size\*(C'\fR option, so you don't really need to specify a part size limit if you are comfortable with using the same value for both. See the \f(CW\*(C`max_message_size\*(C'\fR option for its default. .IP "\fBresponse\fR" 4 .IX Item "response" A string that is to be returned as the match result in case of a match. The name of the detected malware is appended to the response text. Defaults to \&\fB\*(L"Malware detected:\*(R"\fR. .RE .RS 4 .Sp All options of the \fBCourier::Filter::Module\fR constructor are also supported by the constructor of the \fBClamAVd\fR filter module. Please see \&\*(L"new\*(R" in Courier::Filter::Module for their descriptions. .RE .SS "Instance methods" .IX Subsection "Instance methods" See \*(L"Instance methods\*(R" in Courier::Filter::Module for a description of the provided instance methods. .SH "SEE ALSO" .IX Header "SEE ALSO" Courier::Filter::Module, Courier::Filter::Overview. .PP For \s-1AVAILABILITY, SUPPORT,\s0 and \s-1LICENSE\s0 information, see Courier::Filter::Overview. .SH "AUTHOR" .IX Header "AUTHOR" Julian Mehnle