NAME
Postfix::ContentFilter - a perl content_filter for postfix
VERSION
version 1.12
DESCRIPTION
Postfix::ContentFilter can be used for content_filter scripts, as described here: http://www.postfix.org/FILTER_README.html.
SYNOPSIS
use Postfix::ContentFilter;
$exitcode = Postfix::ContentFilter->process(sub{
$entity = shift; # isa MIME::Entity
# do something with $entity
return $entity;
});
# Or specifying the parser
my $cf = Postfix::ContentFilter->new({ parser => 'Mail::Message' });
$exitcode = $cf->process(sub{
$entity = shift; # isa Mail::Message
# do something with $entity
return $entity;
});
exit $exitcode;
METHODS
new($args)
new creates a new Postfix::Contentfilter. It takes an optional argument of a hash with the key 'parser', which specifies the parser to use as per footer. This can be either MIME::Entity or Mail::Message.
Alternatively process can be called directly.
parser($string)
parser() specifies the parser to use, which can be either MIME::Parser or Mail::Message. It defaults to MIME::Parser, if available, or Mail::Message whichever could be found first. When called without any arguments, it returns the current parser.
process($coderef [, $inputhandle])
process() reads the mail from STDIN (or $inputhandle, if given), parses it, calls the coderef and finally runs sendmail with our own command-line arguments (@ARGV).
This function returns the exitcode of sendmail.
VARIABLES
$sendmail$sendmaildefaults to/usr/sbin/sendmail.$Postfix::ContentFilter::sendmail = [ '/usr/local/sbin/sendmail', '-G', '-i' ];Please note
$sendmailmust be an arrayref. Don't forget to use the proper arguments forsendmail, or just replace the first element in array.Additional arguments can be added with:
push @$Postfix::ContentFilter::sendmail => '-t';$outputAny output from
sendmailcommand is populated in$output.$parserThe MIME::Parser object is available via
$parser. To tell where to put the things, use:$Postfix::ContentFilter::parser->output_under('/tmp');
CAVEATS
If taint mode is on, %ENV will be stripped:
delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV', 'PATH'}
So set $Postfix::ContentFilter::sendmail to an absolute path, if you are using taint mode. See perlsec(1) for more details about unsafe variables and tainted input.
SEE ALSO
BUGS
Please report any bugs or feature requests on the bugtracker website https://github.com/zurborg/libpostfix-contentfilter-perl/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
AUTHOR
David Zurborg <zurborg@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2014 by David Zurborg.
This is free software, licensed under:
The ISC License